You are on page 1of 255

Training KUKA Roboter GmbH

Programacin de robots 2

KUKA System Software 8


Documentacin para la formacin

Programacin

de robots 2

Edicin: 24.02.2015

Versin: P2KSS8_robotprogramming_2_(R2)_V4
Programacin de robots 2

Copyright 2015
KUKA Roboter GmbH
Zugspitzstrae 140
D-86165 Augsburg
Alemania

La reproduccin de esta documentacin o parte de ella o su facilitacin a terceros solamente est


permitida con expresa autorizacin del KUKA Roboter GmbH.
Adems del volumen descrito en esta documentacin, pueden existir funciones en condiciones de
funcionamiento. El usuario no adquiere el derecho sobre estas funciones en la entrega de un aparato
nuevo, ni en casos de servicio.
Hemos controlado el contenido del presente escrito en cuanto a la concordancia con la descripcin
del hardware y el software. An as, no pueden excluirse totalmente todas las divergencias, de modo
tal, que no aceptamos responsabilidades respecto a la concordancia total. Pero el contenido de es-
tos escritos es controlado periodicamente, y en casos de divergencia, stas son enmendadas y pre-
sentadas correctamente en la edicin siguiente.
Reservados los derechos a modificaciones tcnicas que no tengan influencia en el funcionamiento.
Traduccin de la documentacin original
KIM-PS5-DOC

Publicacin: Pub COLLEGE P2KSS8 Roboterprogrammierung 2 (R2) (PDF-COL) es


Estructura de libro: P2KSS8 Roboterprogrammierung 2 (R2) V2.2
Versin: P2KSS8_robotprogramming_2_(R2)_V4

2 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


ndice

ndice
1 Programar con WorkVisual ........................................................................ 7
1.1 Resumen .................................................................................................................... 7
1.2 Gestionar el proyecto con WorkVisual ....................................................................... 7
1.2.1 Enlace de un PC con WorkVisual a una unidad de control .................................. 7
1.2.2 Vista general de la interfaz de usuario WorkVisual .............................................. 8
1.2.3 Cargar el proyecto existente en WorkVisual ......................................................... 10
1.2.4 Guardar proyecto WorkVisual en local ................................................................. 12
1.2.5 Modos de WorkVisual ........................................................................................... 12
1.2.6 Estructura del proyecto WorkVisual (pestaa Ficheros) ....................................... 13
1.2.7 Comparar proyectos con WorkVisual ................................................................... 14
1.2.8 Transmitir el proyecto a la unidad de control del robot (instalar) .......................... 18
1.2.9 Asignar el proyecto a la unidad de control del robot real ...................................... 28
1.2.10 Activar el proyecto en la unidad de control del robot ............................................ 32
1.3 Editar programas KRL con WorkVisual ..................................................................... 35
1.3.1 Manipulacin del fichero ....................................................................................... 35
1.3.2 Activar el catlogo Plantillas ................................................................................. 39
1.3.3 Manejo del editor KRL .......................................................................................... 41
1.4 Ejercicio: Editar un proyecto activo en WorkVisual .................................................... 54

2 Programacin estructurada ........................................................................ 57


2.1 Resumen .................................................................................................................... 57
2.2 Objetivo de la metodologa de programacin uniforme ............................................. 57
2.3 Elementos auxiliares para la creacin de programas de robot estructurados ........... 57
2.4 Cmo crear un plan de ejecucin del programa ........................................................ 62

3 Introduccin al nivel del experto ............................................................... 65


3.1 Resumen .................................................................................................................... 65
3.2 Utilizar el nivel experto ............................................................................................... 65
3.3 Ejercicio: Medicin Tool y Base ................................................................................. 68
3.4 Ejercicio: Navegador experto bucle sinfn .................................................................. 73

4 Variables y declaraciones ........................................................................... 75


4.1 Resumen .................................................................................................................... 75
4.2 Gestin de datos en KRL ........................................................................................... 75
4.3 Trabajar con tipos de datos simples .......................................................................... 78
4.3.1 Declaracin de variables ...................................................................................... 78
4.3.2 Inicializacin de variables con tipos de datos simples .......................................... 80
4.3.3 Manipulacin de valores de variables de tipos de datos simples con KRL .......... 82
4.4 Visualizar variables .................................................................................................... 86
4.5 Grupos / campos con KRL ......................................................................................... 87
4.6 Ejercicio: Campos con tipos de datos simples y bucle de conteo ............................. 91
4.7 Crear estructuras con KRL ........................................................................................ 93
4.8 Ejercicio: Crear estructuras con KRL ......................................................................... 96
4.9 El tipo de datos de enumeracin ENUM .................................................................... 98
4.10 Ejercicio: Crear un tipo de enumeracin con KRL ..................................................... 100

5 Subprogramas y funciones ........................................................................ 101


5.1 Resumen .................................................................................................................... 101

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 3 / 255


Programacin de robots 2

5.2 Trabajo con subprogramas locales ........................................................................... 101


5.3 Trabajo con subprogramas globales ......................................................................... 103
5.4 Transmitir parmetros a subprogramas .................................................................... 105
5.5 Ejercicio: Subprogramas con transferencia de parmetros ....................................... 109
5.6 Programacin de funciones ....................................................................................... 111
5.7 Trabajar con funciones estndar de KUKA ............................................................... 113

6 Programacin de un mensaje con KRL ..................................................... 115


6.1 Resumen ................................................................................................................... 115
6.2 Informacin general sobre los mensajes definidos por el usuario ............................. 115
6.3 Variables y estructuras para mensajes definidos por el usuario ............................... 116
6.4 Funciones para mensajes definifos por el usuario .................................................... 119
6.5 Trabajos con un mensaje de observacin ................................................................ 121
6.6 Ejercicio: Programar un mensaje de observacin ..................................................... 123
6.7 Trabajos con un mensaje de estado ......................................................................... 124
6.8 Ejercicio: Programar un mensaje de estado .............................................................. 126
6.9 Trabajos con un mensaje de acuse de recibo ........................................................... 127
6.10 Ejercicio: Programar mensajes de acuse de recibo .................................................. 129
6.11 Trabajos con un mensaje de espera ......................................................................... 130
6.12 Ejercicio: Programar mensajes de espera ................................................................. 132
6.13 Variables y estructuras adicionales para dilogos .................................................... 133
6.14 Funciones para dilogos ........................................................................................... 133
6.15 Trabajos con un dilogo ............................................................................................ 135
6.16 Ejercicio: Programar un dilogo ................................................................................ 139

7 Programacin de movimientos con KRL .................................................. 141


7.1 Vista general .............................................................................................................. 141
7.2 Programar movimientos individuales SPLINE mediante KRL ................................... 141
7.3 Movimiento de conjunto individual con SPTP ........................................................... 141
7.4 Movimiento de paso individual con SLIN y SCIRC .................................................... 143
7.5 Parmetros de movimiento ........................................................................................ 145
7.5.1 SCIRC: Comportamiento de orientacin ejemplo del punto auxiliar ................. 150
7.5.2 SCIRC: Comportamiento de orientacin ejemplo del punto de destino ............ 152
7.5.3 Restricciones en $CIRC_MODE .......................................................................... 153
7.6 Movimientos individuales SPLINE: Variables del sistema para WITH ...................... 154
7.7 Programar movimientos relativos y absolutos con KRL ............................................ 154
7.8 Calcular o manipular posiciones de robot ................................................................. 159
7.9 Modificar de forma adecuada bits de Status y Turn .................................................. 161
7.10 Ejercicio: Paletizado y despaletizado ........................................................................ 165
7.11 Programacin de bloques SPLINE ............................................................................ 169
7.11.1 Perfil de velocidad para movimientos SPLINE ..................................................... 170
7.11.2 Seleccin de paso en caso de movimientos Spline ............................................. 173
7.11.3 Cambios en bloques Spline .................................................................................. 174
7.11.4 Sustituir un movimiento CP aproximado por un movimiento Spline ..................... 177
7.11.5 Transicin SLIN-SPL-SLIN ................................................................................... 180
7.11.6 PROG programacin de bloques SPLINE con KRL ............................................. 180
7.11.7 Bloque SPLINE: Variables del sistema con WITH ............................................... 183

8 Trabajar con variables de sistema ............................................................. 185

4 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


ndice

8.1 Resumen .................................................................................................................... 185


8.2 Medicin del tiempo de ciclo mediante temporizador ................................................ 185
8.3 Ejercicio: Medicin del tiempo ciclo y optimizacin ................................................... 187

9 Programacin de interrupcin ................................................................... 189


9.1 Resumen .................................................................................................................... 189
9.2 Programacin de rutinas de interrupcin ................................................................... 189
9.3 Ejercicio: Trabajos con interrupciones ....................................................................... 195
9.4 Frenar el robot y cancelar el movimiento ................................................................... 197
9.5 Ejercicio: Cancelar movimientos con interrupciones ................................................. 201

10 Funciones de conmutacin con KRL ........................................................ 203


10.1 Resumen .................................................................................................................... 203
10.2 Programacin de funciones de conmutacin sencillas .............................................. 203
10.3 Programacin del trigger en KRL ............................................................................... 207
10.4 Programar una parada condicionada con KRL .......................................................... 210
10.5 Programar zona de desplazamiento constante con KRL ........................................... 213
10.6 Programar bloque de tiempo Spline .......................................................................... 215

11 Interpretador Submit ................................................................................... 219


11.1 Resumen .................................................................................................................... 219
11.2 Utilizacin del interpretador Submit ........................................................................... 219

12 Trabajos con seales analgicas .............................................................. 223


12.1 Resumen .................................................................................................................... 223
12.2 Programar entradas analgicas ................................................................................. 223
12.3 Programar salidas analgicas .................................................................................... 225
12.4 Ejercicio: Trabajos con E/S analgicas ...................................................................... 229

13 Anexo ............................................................................................................ 231


13.1 Programar los movimientos mediante KRL ............................................................... 231
13.2 Variables del sistema ................................................................................................. 239
13.2.1 $ACC .................................................................................................................... 239
13.2.2 $ACC_AXIS .......................................................................................................... 240
13.2.3 $ACC_EXTAX ...................................................................................................... 240
13.2.4 $APO .................................................................................................................... 240
13.2.5 $BASE .................................................................................................................. 242
13.2.6 $CIRC_TYPE ........................................................................................................ 242
13.2.7 Modo de ahorro energtico ($ECO_LEVEL) ........................................................ 242
13.2.8 $GEAR_JERK ...................................................................................................... 243
13.2.9 $IPO_MODE ......................................................................................................... 243
13.2.10 $JERK ................................................................................................................... 244
13.2.11 $LOAD .................................................................................................................. 244
13.2.12 $ORI_TYPE .......................................................................................................... 246
13.2.13 $ROTSYS ............................................................................................................. 246
13.2.14 $SPL_ORI_JOINT_AUTO .................................................................................... 246
13.2.15 $TOOL .................................................................................................................. 247
13.2.16 $VEL ..................................................................................................................... 247
13.2.17 $VEL_AXIS ........................................................................................................... 247
13.2.18 $VEL_EXTAX ....................................................................................................... 248

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 5 / 255


Programacin de robots 2

13.2.19 $CIRC_MODE ...................................................................................................... 248

ndice ............................................................................................................ 253

6 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


1 Programar con WorkVisual

1 Programar con WorkVisual

1.1 Resumen

Esta unidad incluye los siguientes contenidos:


Enlace de un PC con WorkVisual a una unidad de control
Vista general de las inerfaces de usuario de WorkVisual
Cargar los proyectos existentes en WorkVisual
Modos de WorkVisual
Estructura de proyectos de Workvisual (pestaa Ficheros)
Comparar proyectos con WorkVisual
Transmitir (instalar) el proyecto a la unidad de control del robot
Asignar el proyecto a una unidad de control del robot real
Activar el proyecto en la unidad de control del robot

1.2 Gestionar el proyecto con WorkVisual

Para aadir o modificar programas en un proyecto ya existente de la unidad


de control, es necesario seguir los siguientes pasos de trabajo:
Proceso del proyecto
1. Enlazar un PC con WorkVisual a la unidad de control a travs de la inter-
faz KUKA System Interface KSI.
(>>> 1.2.1 "Enlace de un PC con WorkVisual a una unidad de control" P-
gina 7)
2. Cargar los proyectos existentes en WorkVisual.
(>>> 1.2.3 "Cargar el proyecto existente en WorkVisual" Pgina 10)
3. Activar el modo Programacin y configuracin en WorkVisual.
(>>> 1.2.5 "Modos de WorkVisual" Pgina 12)
4. Cambiar a la vista Ficheros en la estructura del proyecto de WorkVisual.
(>>> 1.2.6 "Estructura del proyecto WorkVisual (pestaa Ficheros)" Pgi-
na 13)
5. Modificar el proyecto, p. ej. programas KRL
(>>> 1.3 "Editar programas KRL con WorkVisual" Pgina 35)
6. Dado el caso, comparar proyectos con WorkVisual.
(>>> 1.2.7 "Comparar proyectos con WorkVisual" Pgina 14)
7. Transmitir (instalar) el proyecto a la unidad de control del robot
(>>> 1.2.8 "Transmitir el proyecto a la unidad de control del robot (insta-
lar)" Pgina 18)
8. Asignar el proyecto a una unidad de control del robot real
(>>> 1.2.9 "Asignar el proyecto a la unidad de control del robot real" P-
gina 28)
9. Activar el proyecto en la unidad de control del robot
(>>> 1.2.10 "Activar el proyecto en la unidad de control del robot" Pgi-
na 32)

1.2.1 Enlace de un PC con WorkVisual a una unidad de control

Descripcin Para poder intercambiar proyectos con la unidad de control a travs del
ordenador de WorkVisual, se debe haber establecido una conexin de
red.

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 7 / 255


Programacin de robots 2

Hasta la versin de software KSS 8.2 estaba disponible para ello exclusi-
vamente la interfaz KLI - KUKA Line Interface, la cual deba configurarse por
separado. Esta interfaz tambin sigue estando disponible con la KSS 8.3.
A partir de la versin de software KSS 8.3 est disponible la nueva interfaz
KSI - KUKA Service Interface, que es mucho ms fcil de utilizar.
Tras actualizar desde la versin KSS 8.2 a la versin KSS 8.3, esta inter-
faz tambin se habilita para unidades de control "antiguas".

Conectar el PC
con WorkVisual
en la KSI

Fig. 1-1: Conexin a la KSI a travs del CSP

Pos. Descripcin
1 Ordenador porttil con WorkVisual
2 Cable de red
3 Armario de control KR C4
A Conexin KSI detrs de la tapa de CSP

1. El ajuste de red del PC con WorkVisual (1) est configurado en DHCP


(instalacin automtica de una direccin de red).
2. Llevar el cable de red (2) desde el PC con Workvisual (1) hacia la interfaz
KUKA Service Interface KSI (A) del armario de control (3).
3. Der La interfaz KUKA Service Interface KSI (A) est situada detrs de la tapa
del Control System Panel CSP.

El KR C4 asigna automticamente una direccin IP al PC conectado.

La interfaz KUKA Service Interface KSI no debe conec-


tarse nunca con una red IT ya existente. Esto provo-
ca conflictos de direcciones y funciones errneas.

1.2.2 Vista general de la interfaz de usuario WorkVisual

En la interfaz de usuario no estn visibles todos los elementos por defec-


to, sino que se pueden mostrar u ocultar segn sea necesario.
Aparte de las ventanas y editores mostrados, se dispone de otros. Pueden
activarse de diferentes maneras o a travs de las opciones de men Ven-
tanas y Editores.

8 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


1 Programar con WorkVisual

Fig. 1-2: Resumen de la superficie de operacin

Pos. Descripcin
1 Barra de mens
2 Barras de botones

3 Zona de los editores


Cuando se abre el editor, se visualiza aqu. Tal y como se muestra
en el ejemplo, pueden estar abiertos simultneamente varios edi-
tores. Aparecer uno encima del otro y se podrn seleccionar a
travs de las pestaas.
4 Botn de ayuda
5 Ventana Estructura del proyecto

6 Ventana Catlogos
En esta ventana se muestran todos los catlogos aadidos. Los
elementos de los catlogos se pueden aadir en la ventana Es-
tructura del proyecto sobre la pestaa Dispositivo o Geome-
tra.
7 Ventana Zonas de trabajo

8 Ventana Mensajes

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 9 / 255


Programacin de robots 2

Pos. Descripcin
9 Ventana Propiedades
Si se selecciona un objeto se mostrarn sus propiedades en esta
ventana. Las propiedades se pueden modificar. No es posible mo-
dificar las propiedades de los campos grises.
10 Icono Anlisis de proyecto de WorkVisual

1.2.3 Cargar el proyecto existente en WorkVisual

Descripcin En cada unidad de control del robot en la que exista una conexin de red se
puede seleccionar un proyecto y cargarlo en WorkVisual. Esto tambin es po-
sible aunque el proyecto no est en el PC.
El proyecto se guarda en el directorio ...\WorkVisual Projects\Downloaded
Projects.

Visualizacin de El proyecto activo se muestra en smartPad mediante el accionamiento del bo-


los proyectos tn de Proyecto.
activos en HMI

Fig. 1-3: Proyecto activo antes de la transferencia

Explorador de
proyecto

Fig. 1-4: Explorador de proyecto

En ltimos ficheros se muestran los ltimos utilizados


Ruta: Fichero > ltimos ficheros abiertos (acceso rpido a travs de una ven-
tana de seleccin independiente)
Con Crear proyecto se genera:
un proyecto nuevo y vaco
un proyecto nuevo a partir de un modelo
un proyecto nuevo basado en un proyecto ya existente
Ruta: Fichero > Nuevo

10 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


1 Programar con WorkVisual

Con Abrir proyecto se abren los proyectos ya existentes


Ruta: Fichero > Abrir proyecto
Con Buscar se puede cargar un proyecto de la unidad de control del robot
Ruta: Fichero > Buscar proyecto

Cargar el Procedimiento
proyecto 1. Seleccionar la secuencia de men Fichero > Buscar proyecto. Se abre
WorkVisual de la el Explorador de proyecto. A la izquierda est seleccionada la pestaa
unidad de control Buscar.
2. En la zona Celdas disponibles(3), desplegar el nodo de la celda desea-
da. Se muestran todas las unidades de control del robot de dicha celda.
3. Desplegar los nodos de la unidad de control del robot deseada. Se mues-
tran todos los proyectos.
4. Marcar el proyecto deseado y hacer clic en Abrir. El proyecto se abre en
WorkVisual.

Fig. 1-5: Buscar direccin IP

En ciertos casos puede ser que, a pesar de que haya conexin de red en la
ventana Buscar, no se muestre ninguna unidad de control. La ayuda presenta
el siguiente procedimiento:
1. Hacer clic en el botn Lupa (1) del explorador de WorkVisual.
2. Se abre la ventana Find IP Address (buscar direccin IP) (2).
3. Introducir la direccin IP deseada del armario de control.
4. Aceptar la direccin IP con OK (2).
5. A continuacin, la unidad de control se muestra en la ventana Celdas dis-
ponibles (3).

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 11 / 255


Programacin de robots 2

1.2.4 Guardar proyecto WorkVisual en local

Fig. 1-6: Guardar los proyectos cargados

1. Guardar proyecto en la ruta del men Fichero > Guardar como.


2. El nombre del archivo mostrado aparece ahora en la barra de ttulo de
WorkVisual con un "*"; esto quiere decir que el archivo no se ha guardado
en WorkVisual.
3. Definir la ubicacin del proyecto en el Explorador mostrado.
4. Especificar el nombre del archivo en la misma ventana de entrada.
5. En el botn Editar propiedades se recomienda describir el proyecto bre-
vemente y opcionalmente aadir una imagen al proyecto.
6. Con el botn Guardar el proyecto actual se almacenar ahora en la ruta
de archivo predefinido.

1.2.5 Modos de WorkVisual

Descripcin WorkVisual puede utilizarse en dos modos diferentes:


Programacin y configuracin
Zona para trabajos relacionados con el proyecto, como los trabajos
con el editor KRL, configuracin de hardware, del bus de campo y de
seguridad.
Administracin online
Zona para el diagnstico online, como el diagnstico de hardware y
Registro Trace.
stas pueden seleccionarse a travs de la opcin de men Vista o a tra-
vs de la ventana Zonas de trabajo.
a. Seleccionar la secuencia de men Ventana > Zonas de trabajo.
b. Hacer clic sobre el modo deseado en la ventana Zonas de trabajo. La
seleccin activa se representa en naranja.

Fig. 1-7: Ventana Campos de trabajo

12 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


1 Programar con WorkVisual

Para el curso de formacin para la programacin del robot 2, resulta


necesario contar con el modo Programacin y configuracin.

1.2.6 Estructura del proyecto WorkVisual (pestaa Ficheros)

Pestaa Pestaa Estructura del proyecto


Estructura del
proyecto

Fig. 1-8: Ejemplo: ficheros generados automticamente en gris

Dispositivos:
En la pestaa Dispositivos se muestra de manera clara la corresponden-
cia de los dispositivos. Aqu se puede asignar una unidad de control del
robot a cada dispositivo.
Geometra:
En la pestaa Geometra se preparan los datos de mquina para las ci-
nemticas externas, como los ejes adicionales.
Ficheros:
La pestaa Ficheros contiene los ficheros de programa y configuracin
del proyecto.
Visualizacin con colores de los nombres de los ficheros:
Ficheros generados automticamente (con la funcin Crear cdigo):
gris
Ficheros aadidos manualmente a WorkVisual: azul
Ficheros transmitidos por una unidad de control del robot a WorkVi-
sual: negro
Ruta del fichero para la programacin en KRL
Para la programacin en WorkVisual se crean o adaptan programas
*.SRC.
En el control real, estos programas se encuentran en la particin
C:\KRC\Roboter\Programme
En el navegador, esta ruta se representa por separado (al igual que los
Ficheros propios de Microsoft Windows.

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 13 / 255


Programacin de robots 2

En la pestaa Ficheros de la ventana Estructura del proyecto puede encon-


trarse la carpeta necesaria para la programacin:
Ruta: KRC\R1\PROGRAMME

No borrar o manipular ningn fichero *.XML desconocido. En ciertos


casos, el proyecto no puede activarse o bien produce errores.

1.2.7 Comparar proyectos con WorkVisual

Descripcin Es posible comparar un proyecto en WorkVisual con otro proyecto


Este puede ser un proyecto de una unidad de control del robot o un pro-
yecto almacenado localmente
Las diferencias aparecen de forma clara en una lista y puede mostrarse
informacin detallada
El usuario puede decidir individualmente para cada diferencia
si quiere dejar el estado como en el proyecto actual
o si quiere aceptar el estado del otro proyecto

Principio de Unir proyecto


comparacin de Ventana de seleccin Comparar proyecto
proyectos

Fig. 1-9: Seleccionar el proyecto para "Comparar"

Proyecto activo
Proyecto con el mismo nombre en el control (nicamente posible si se dis-
pone de conexin de red)
Proyecto base
Proyecto inicial
Proyecto local (del ordenador porttil)
Comparacin:
Las diferencias entre los proyectos se muestran en un resumen. Para cada
una de las diferencias puede seleccionarse el estado que debe asumirse.

14 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


1 Programar con WorkVisual

Fig. 1-10: Ejemplo: resumen de las diferencias

Pos. Descripcin
1 El nodo de la unidad de control del robot. Las diferentes reas del proyecto se visuali-
zan en subnodos. Abrir los nodos para mostrar las comparaciones.
Si hay disponibles varias unidades de control del robot estas se listan una debajo de
la otra.
En una lnea, colocar siempre el smbolo de confirmacin en el valor que se quiere
tomar. (Alternativa: emplear las casillas al pie de pgina).
Un smbolo de confirmacin activado como No disponible significa que el elemen-
to no se aceptar o que, en caso de estar ya disponible, se borrar del proyecto.
Si se coloca un smbolo de confirmacin en un nodo, se marcarn automticamen-
te tambin todos los elementos subordinados.
Si se quita un smbolo de confirmacin en un nodo, se quitarn automticamente
tambin en todos los elementos subordinados.
Los elementos subordinados tambin se pueden editar individualmente.
Una casilla con contenido significa que, de los elementos subordinados, al menos
uno est seleccionado.
2 Estado en el proyecto abierto en WorkVisual.
3 Estado en el proyecto de comparacin.
4 Filtros para mostrar u ocultar los diversos tipos de diferencias.
5 TRUE: En la vista general se muestran informaciones detalladas de las lneas marca-
das.
6 Flecha de retroceso: el indicador pasa a la diferencia anterior.
Flecha de avance: el indicador pasa a la diferencia siguiente.
Los nodos cerrados se abren automticamente.
7 Las casillas muestran el estado de la lnea marcada. En lugar de hacerse directamente
en la lnea, los smbolos de confirmacin tambin se pueden colocar aqu.

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 15 / 255


Programacin de robots 2

Pos. Descripcin
8 Confirma las modificaciones seleccionadas en el proyecto abierto.
9 Cierra la ventana Unir proyectos.

Descripcin de los colores:

Columna Descripcin
Estructura del pro- Cada elemento se muestra con el color que tiene en la columna desde
yecto la que se ha seleccionado.
WorkVisual Todos los elementos se muestran en negro.
Valor seleccionado Verde: elementos que no estn disponibles en el proyecto abierto,
pero s en el proyecto de comparacin.
Azul: elementos que estn disponibles en el proyecto abierto, pero
no en el proyecto de comparacin.
Rojo: el resto de elementos. Tambin se incluyen los elementos su-
periores, los cuales contienen otros elementos en diferentes colores.

Procedimiento 1. En WorkVisual, seleccionar la secuencia de men Extras > Comparar


para la compa- proyectos. Se abre la ventana Comparar proyectos.
racin de
proyectos

Fig. 1-11: Comparar proyectos

2. Seleccionar el proyecto con el que se debe comparar el proyecto WorkVi-


sual actual, p. ej., el proyecto con mismo nombre en la unidad de control
del robot real.

Fig. 1-12: Seleccionar el proyecto para "Comparar"

3. Hacer clic en Continuar. Se muestra una barra de progreso. Si el proyec-


to contiene varias unidades de control del robot, se muestra una barra
para cada una.

4. Cuando la barra de progreso se completa y adems se muestra el estado:


Preparado para la conexin: Hacer clic en Mostrar diferencias. Las di-
ferencias entre los proyectos se muestran en un resumen.
Si no se detectan diferencias se indicar en la ventana de mensajes. Se-
guir con el paso 8. Despus no sern necesarios ms pasos.

16 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


1 Programar con WorkVisual

5. Para cada una de las diferencias puede seleccionarse el estado que debe
adoptarse. Esto no tiene que hacerse para todas las diferencias de un pa-
so.
Si es adecuado, puede dejarse tambin la seleccin por defecto.
6. Pulsar Reunir para aceptar los cambios en WorkVisual.
7. Repetir los pasos 5 y 6 las veces que se desee. Esto permite la edicin
progresiva de las diferentes zonas.
Si no hay ms diferencias se mostrar el siguiente mensaje: No existen
ms diferencias.
8. cerrar la ventana Comparar proyectos.
9. Si se han modificado parmetros de los ejes adicionales en el proyecto de
la unidad de control del robot, estos debern ser actualizados en WorkVi-
sual:
Abrir la ventana Configuracin de los datos de mquina para este
eje adicional.
En el sector Datos de mquina generales especficos del eje pulsar
sobre el botn para la importacin de los datos de la mquina.
Se actualizan los datos.
10. Guardar el proyecto.
Ejemplo de comparacin de proyectos

Fig. 1-13: Ejemplo: Comparacin de proyectos, vista general

Decisin sobre qu estado del archivo(s) debe aceptarse.

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 17 / 255


Programacin de robots 2

Fig. 1-14: Ejemplo: Unir proyectos

Al activar los Details pueden mostrarse las diferencias de los archivos.

Fig. 1-15: Ejemplo: Detalles activados

1.2.8 Transmitir el proyecto a la unidad de control del robot (instalar)

Descripcin Las modificaciones realizadas en el proyecto deben enviarse desde Wor-


kVisual a la unidad de control.
Para KUKA, este proceso se denomina "Instalacin".
El cdigo se genera al transmitir un proyecto a la unidad de control del ro-
bot.
La conexin de red con la unidad de control del robot real es un requisito
para esta "Instalacin".

Si en la unidad de control del robot real existe un proyecto que ha


sido transmitido en un momento anterior y no se ha activado nunca,
este es sobreescrito por causa de la transmisin de otro proyecto.
Mediante la transmisin y activacin de un proyecto, se sobrescribe un pro-
yecto con mismo nombre existente en la unidad de control del robot (tras una
consulta de seguridad).

18 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


1 Programar con WorkVisual

Funciones Crear cdigo


Con este procedimiento se puede crear por separado el cdigo y compro-
bar por adelantado si est libre de errores.
Se accede a travs de:
Secuencia de men Extras > Crear cdigo.

o botn
El cdigo aparece en la ventana Estructura del proyecto en la pes-
taa Ficheros.
El cdigo generado automticamente se muestra en color gris claro.

Fig. 1-16: Ejemplo de creacin de cdigo: antes y despus

Se crea el cdigo. Cuando ha finalizado el proceso, en la ventana de


mensajes se muestran los siguientes mensajes: Se ha compilado el
proyecto <"{0}" V{1}>. Los resultados estn disponibles en el r-
bol de archivos.

Versiones de
WorkVisual hasta
3.0

Procedimiento
1. En la barra de mens hacer clic en el botn Instalar ... . Se abre la ven-
tana Transmisin del proyecto.

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 19 / 255


Programacin de robots 2

Fig. 1-17: Resumen indicando la configuracin incompleta

2. En caso de que se trate de un proyecto que nunca ha sido retransferido a


WorkVisual por parte de una unidad de control del robot, este no incluir
todava todos los archivos de configuracin (entre los archivos de configu-
racin se encuentran los ficheros de datos de la mquina, ficheros de la
configuracin de seguridad y muchos ms). Se muestra una indicacin
correspondiente.
Cuando esa indicacin no se muestre: Continuar en el paso 13.
Cuando esa indicacin se muestre: Continuar en el paso 3.
3. Hacer clic en Completar. Aparece la siguiente pregunta de seguridad:
Configurar el proyecto y restablecer el controlador activo. Desea
continuar?
4. Responder con S a la pregunta. Se abre la ventana Unir proyectos.

Fig. 1-18: Seleccionar el proyecto para "Comparar"

5. Seleccionar un proyecto cuyos datos de configuracin se quieran asumir,


p. ej., el proyecto activo en la unidad real de control del robot.
6. Hacer clic en Continuar. Se muestra una barra de progreso. Si el proyec-
to contiene varias unidades de control del robot, se muestra una barra
para cada una.

7. Si la barra de progreso est llena y adems se indica el estado y Prepa-


rado para la conexin: Hacer clic en Mostrar diferencias.
Las diferencias entre los proyectos se muestran en un resumen.

20 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


1 Programar con WorkVisual

8. Para cada una de las diferencias puede seleccionarse el estado que debe
adoptarse. Esto no tiene que hacerse para todas las diferencias de un pa-
so.
Si es adecuado, puede dejarse tambin la seleccin por defecto.
9. Pulsar Reunir para aceptar los cambios.
10. Repetir los pasos 8 y 9 las veces que se desee. Esto permite la edicin
consecutiva de las diferentes zonas.
Si no hay ms diferencias se mostrar el siguiente mensaje: No existen
ms diferencias.
11. Cerrar la ventana Comparar proyectos.

12. En la barra de mens hacer clic en el botn Instalar... . Se muestra de


nuevo el resumen sobre la asignacin de celdas. No aparecer ms la in-
dicacin relativa a una configuracin incompleta.

Fig. 1-19: Vista general

13. Hacer clic en Continuar. Se inicia la creacin del programa. Cuando el in-
dicador del progreso llegue al 100 % se habr creado el programa y se ha-
br transmitido el proyecto.
14. Hacer clic en Activar.

En los modos de servicio AUT y AUT EXT, el pro-


yecto se activa sin pregunta de seguridad si solo se
trata de modificaciones del programa.

Para la activacin de un proyecto se requiere el per-


fil de usuario Experto. Si en el proyecto que ha de
activarse tambin hay modificaciones en la seguridad, se requerir el perfil
de usuario Personal responsable de la puesta en servicio con seguridad
o Tcnico de mantenimiento de seguridad con un cdigo de activacin vli-
do.

15. Exclusivo para los modos de servicio T1 y T2: KUKA smartHMI muestra
la pregunta de seguridad Quiere permitir la activacin del proyecto []?. Ade-
ms se indica si con la activacin se ha sobrescrito un proyecto, y en caso
afirmativo, cul.
Si no se ha sobrescrito ningn proyecto relevante: Confirmar la pregunta
en el plazo de 30 minutos con S.

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 21 / 255


Programacin de robots 2

16. Se muestra una vista general de los cambios que se han realizado en la
unidad de control del robot en comparacin con el proyecto an activo.
Mediante la casilla Detalles se pueden mostrar detalles acerca de las mo-
dificaciones.
17. La vista general muestra la pregunta de seguridad Desea continuar?. Res-
ponder con S. El proyecto se activa en la unidad de control del robot. En
WorkVisual se visualiza una confirmacin.

Fig. 1-20: Confirmacin en WorkVisual

18. Cerrar la ventana Transmisin del proyecto con Finalizar.


19. En caso de que la consulta en la unidad de control del robot no se respon-
da en el transcurso de 30 minutos, el proyecto se transferir igualmente.
Sin embargo no estar activo en la unidad de control del robot. En este
caso, el proyecto puede activarse por separado.

Tras la activacin de un proyecto en la unidad de


control del robot se debe comprobar la configuracin
de seguridad! De lo contrario, es posible que el robot reciba datos errneos.
Pueden producirse daos materiales, lesiones e incluso la muerte.

Si la activacin de un proyecto falla aparece un men-


saje de error en WorkVisual. En tal caso deben to-
marse las siguientes medidas:
Activar nuevamente un proyecto. (El mismo u otro distinto).
O arrancar la unidad de control del robot con un arranque en fro.

Versiones de
WorkVisual
desde 3.1

Procedimiento

Iniciar trasfe-
En la barra de mens hacer clic en el botn Instalar ... .
rencia de
Se abre la ventana Transmisin del proyecto.
proyecto
Alternativamente, tambin se puede realizar la transferencia del proyecto
a travs de la ruta del men: Extras > Acceder a Instalar.

Asignar unidad 1. El controlador del proyecto WorkVisual (2) est listo para asignar el con-
de control trolador real (4) a la flecha azul (3). (>>> "Procedimiento" Pgina 31)

22 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


1 Programar con WorkVisual

Fig. 1-21: Asignar unidad de control

Pos. Descripcin
1 Transcurso de la transferencia del proyecto
2 Armario de control del proyecto WorkVisual
3 Asignacin del proyecto al armario de control real
4 Armario de control real en la red de la instalacin
5 Abrir la ventana para la bsqueda de armarios de control en
la red de la instalacin
6 Abrir la ventana para la comparacin de proyectos
7 Confirmacin de la asignacin de armario de control

2. Confirmar la asignacin con el botn Continuar (7)

Solucionar Si hay algn conflicto o discrepancia durante la transmisin del proyecto,


conflictos aparecer una ventana de eliminacin de errores que mostrar la resolu-
cin de conflictos.
Seleccionar y aplicar la solucin correcta de las propuestas.

Crear cdigo Despus de la asignacin del controlador WorkVisual generar los datos
*.xml necesarios de la configuracin grfica.

Fig. 1-22: Generacin de cdigos

Este paso de trabajo tambin puede llevarse a cabo por separado con an-
telacin. Ruta: Extras > Generar cdigo
Si hay errores durante la generacin de cdigo, la barra de progreso se
mostrar en rojo y se cancelar la generacin.

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 23 / 255


Programacin de robots 2

Transmitir El proyecto final ser transferido automticamente a la unidad de control


proyecto en el siguiente paso de trabajo.

Fig. 1-23: Transmitir proyecto

Los proyectos siempre se pueden transferir al controlador sin derechos de


usuario explcitos.
Se copiarn en el controlador de la gestin de proyectos.
Si hay una desconexin durante la transferencia, se interrumpir este
paso de trabajo.

Activar proyecto Despus de que el proyecto haya sido transferido, el proyecto se puede
activar directamente a travs de WorkVisual. Indica un fallo de activacin,
porque, por ejemplo, no estn presentes los derechos de usuario necesa-
rios en el controlador, mediante el icono (1) se activar de nuevo el pro-
yecto para el controlador.

Fig. 1-24: Activacin del proyecto fallida

Despus de una activacin de proyecto con xito aparecer una barra de


progreso de color verde. Con el botn Finalizar (1) se cerrar el asistente.

24 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


1 Programar con WorkVisual

Fig. 1-25: Trasferencia de proyecto completa

Si no se responde a la pregunta en la unidad de control del robot dentro


de 30 min, se transmite el proyecto de todas formas, aunque no estar ac-
tivo en la unidad de control del robot. Se puede activar el proyecto por se-
parado. (>>> Fig. 1-24 )

Confirmar la 1. En funcin de los cambios del proyecto, se necesitar el perfil de usuario


activacin del experto o responsable de seguridad.
proyecto en el 2. En el HMI del smartPAD aparecer el mensaje "Entrada de usuario
smartPAD esperada".

Fig. 1-26: Mensaje de instalacin

3. Se abre una ventana en el smartPad "Gestin de proyecto con la pregunta


"Desea activar el proyecto "1EG2-R04-8_2_First_Test"?" Confirmar la activa-
cin con "S".

Fig. 1-27: Permitir activacin

4. Se muestra otra ventana "Gestin de proyecto". Ah se muestran los cam-


bios propuestos.
Responder a la pregunta "Desea continuar?" con "S".

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 25 / 255


Programacin de robots 2

Fig. 1-28: Visualizacin de cambios

5. En el smartPAD aparece un mensaje que lleva a cabo una reconfigura-


cin.

Fig. 1-29: Se ejecuta reconfiguracin

Aplicar la suma 1. Si cambia la seguridad en WorkVisual, como por ejemplo los parmetros
de control de la interfaz de seguridad o de SafeOperation, aparecer el siguiente
modificada mensaje de error en la ventana de mensajes: "Suma de control de la con-
figuracin de seguridad incorrecta".

26 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


1 Programar con WorkVisual

Fig. 1-30: Error de suma de verificacin

2. Es necesario el perfil del usuario de responsable de seguridad.


3. Abrir la configuracin de seguridad.
Ruta: Tecla KUKA > Configuracin > Configuracin de seguridad
4. En la ventana "Asistente para la resolucin de problemas" seleccionar la op-
cin "Ya se ha activado un proyecto WorkVisual"

Fig. 1-31: Asistente solucionador de problemas

5. Aceptar la primera propuesta, en la que se pulsar el botn "Activar ahora".

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 27 / 255


Programacin de robots 2

6. En la ventana "Activar", responder a la pregunta "Seguro que quieres


cambiar las siguientes partes de la configuracin relacionadas con la seguridad?"
con "S". Se ejecuta la reconfiguracin.
7. Confirmar el mensaje en el smartPad "Los cambios se guardaron cor-
rectamente" con el botn "OK".
8. Confirmar el mensaje de confirmacin "Confirmacin: La suma de control de
la configuracin de seguridad no es correcta" con "Todo OK".

1.2.9 Asignar el proyecto a la unidad de control del robot real

Descripcin Un proyecto debe ser asignado antes de su transferencia de la siguiente ma-


nera:
Controlador de destino
El controlador de destino corresponde a la unidad de control real so-
bre la cual el proyecto se va a transferir.
Si un proyecto se carga desde una unidad de control, se procesa en
WorkVisual y debe ser transferido de nuevo, la asignacin se har de
forma automtica.
Celda
En las estructuras de instalacin ms complejas puede darse el caso
de que haya varios robots o unidades de control en una misma celda
grande.
Antes de transmitir un proyecto a una unidad de control, se le puede
asignar una celda a la misma.
Esta asignacin no tiene ningn efecto en la capacidad de funciona-
miento del proyecto.
Sirve a modo de resumen y podr visualizarse en red a travs de Wor-
kVisual.

Versiones de
WorkVisual hasta
3.0

Procedimiento 1. En la barra de mens hacer clic en el botn Instalar .... Se abre la ventana
Transmisin del proyecto.

Fig. 1-32: Vista general

28 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


1 Programar con WorkVisual

2. La vista general de la celda se abre con el botn Modificar disponible en


la lnea Celda.

Fig. 1-33: Asignar unidad de control del robot a la celda

3. En Celda de destino se visualizan las celdas disponibles. (Las celdas se


pueden renombrar haciendo clic con el botn derecho.)
Si la celda deseada no est disponible se puede crear una nueva:
Hacer clic en Nueva celda. Se abre la ventana Propiedades de las
celdas. Escribir un nombre y, en caso necesario, una descripcin.
Guardar con OK.
La nueva celda aparecer ahora en Celda de destino.
4. Marcar la celda deseada en Celda de destino. A esta celda se le debe
asignar ahora la unidad de control del robot real.
5. En Unidades de control disponibles marque la unidad de control del ro-
bot que desee.
Dependiendo de la topologa de la red es posible que la unidad de control
del robot no se visualice en Unidades de control disponibles. Si se co-
noce la direccin IP se puede visualizar la unidad de control del robot de
la siguiente manera:

Hacer clic en . Se abre una ventana. Introducir la direccin IP y


guardar con OK.
La unidad de control del robot se visualiza ahora en Unidades de
control disponibles.

6. Hacer clic en . La unidad de control del robot se visualiza ahora en


Controladores de destino.
7. Si el proyecto contiene varias unidades de control del robot, repetir los pa-
sos 4 y 5 para las siguientes unidades de control del robot.
8. La unidad de control del robot virtual debe estar ahora asignada a la uni-
dad de control del robot real: Hacer clic en Continuar.

A cada unidad de control del robot virtual se le debe asignar una uni-
dad de control del robot real.

9. En Unidades de control del proyecto marcar la unidad de control virtual.

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 29 / 255


Programacin de robots 2

10. En Unidades de control en la celda marcar la unidad de control del robot

real y hacer clic en . La unidad de control del robot real es asignada a


la virtual.

Fig. 1-34: Asignar la unidad de control del robot real a la virtual

11. Si el proyecto contiene varias unidades de control del robot, repetir los pa-
sos 8 y 9 para las siguientes unidades de control del robot.
12. Hacer clic en Continuar. Se muestra un resumen. (Aqu existe la posibi-
lidad de volver a cambiar la asignacin. Para ello, hacer clic sobre Modi-
ficar .)

Fig. 1-35: Vista general

13. El proyecto se puede transmitir ahora a la unidad de control del robot.

Otra posibilidad es transmitir el proyecto en otro momento. Para ello, pul-


sar Cancelar: la asignacin se guarda y la ventana Transmisin del pro-
yecto se cierra.

30 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


1 Programar con WorkVisual

Versiones de
WorkVisual
desde 3.1

Procedimiento 1. En la barra de mens hacer clic en el botn Instalar .... Se abre la ventana
Transmisin del proyecto WorkVisual. En el lado izquierdo se muestra
la unidad de control del robot virtual del proyecto. En el lado derecho se
muestra el controlador de destino. Ser de color gris si no se ha seleccio-
nado ninguna unidad de control.

Fig. 1-36: Asignar unidad de control del robot a la celda

2. En el lado izquierdo, activar la celda virtual utilizando la casilla. A esta cel-


da se le debe asignar ahora la unidad de control del robot real.
3. Hacer clic en el botn . Se abre una ventana. El filtro est ajustado au-
tomticamente de tal manera que solo se mostrarn unidades de control
del mismo tipo y la misma versin que la unidad de control virtual. Este
ajuste puede modificarse.

Fig. 1-37: Asignar la unidad de control del robot real a la virtual

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 31 / 255


Programacin de robots 2

4. Seleccionar la unidad de control del robot real deseada y hacer clic en OK.
La unidad de control del robot real es asignada a la virtual. Tras la asigna-
cin, la unidad de control del robot se muestra en color, as como con el
nombre y la direccin IP.

Fig. 1-38: Resumen

5. Si el proyecto contiene varias unidades de control del robot, repetir los pa-
sos 3 y 4 para las siguientes unidades de control del robot.
6. Hacer clic en Continuar. La asignacin se comprueba para determinar la
presencia de conflictos. En caso de que haya conflictos, se mostrar un
mensaje. Los conflictos deben subsanarse ya que, de lo contrario, no se
podr transmitir el proyecto. En caso de que no haya conflictos, se gene-
rar automticamente el cdigo.
7. El proyecto se puede transmitir ahora a la unidad de control del robot.
Otra posibilidad es transmitir el proyecto en otro momento. Para ello, pul-
sar Cancelar: la asignacin se guarda y la ventana Transmisin del pro-
yecto WorkVisual se cierra.

1.2.10 Activar el proyecto en la unidad de control del robot

Descripcin Un proyecto puede activarse directamente en la unidad de control del ro-


bot.
Un proyecto tambin puede activarse desde WorkVisual en la unidad de
control del robot
(no se explica aqu, para ello utilizar la documentacin en lnea de Work-
Visual)

Funcin de la Generalidades
gestin del La unidad de control del robot tiene la posibilidad de gestionar varios pro-
proyecto yectos en la unidad de control.
Todas las funciones solo estn disponibles en el grupo de usuario Exper-
to.
Puede accederse mediante:
En la interfaz de usuario, a travs de la tecla WorkVisual-Symbol y a
continuacin el botn Abrir

32 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


1 Programar con WorkVisual

Fig. 1-39: Visualizacin del proyecto en la interfaz de usuario

Manejo / servicio

Fig. 1-40: Ventana Gestin del proyecto

Pos. Descripcin
1 Se muestra el proyecto inicial.
2 Restaura el estado de suministro de la unidad de control del robot.
Est disponible desde el grupo de usuario Experto.
3 Se muestra el proyecto base.
4 Crea una copia del proyecto base.
Est disponible desde el grupo de usuario Experto.
5 Se muestra el proyecto activo.
6 Guarda el proyecto activo como proyecto base. El proyecto activo
permanece activo.
Est disponible desde el grupo de usuario Experto.
7 Crea una copia bloqueada del proyecto activo.
Est disponible desde el grupo de usuario Experto.
8 Lista de los proyectos. Aqu no se muestra el proyecto activo.

Adems de los proyectos regulares, la ventana Gestin del proyecto


contiene los siguientes proyectos especiales:

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 33 / 255


Programacin de robots 2

Proyecto Descripcin
Proyecto inicial El proyecto inicial est siempre disponible. No puede
ser modificado por el usuario. Contiene el estado de la
unidad de control del robot en el momento del suminis-
tro.
Proyecto base El usuario puede guardar el proyecto activo como pro-
yecto base. Esta funcionalidad se utiliza por regla
general para asegurar un proyecto protegido y en con-
diciones de funcionamiento.
El proyecto base no puede activarse pero s copiarse.
El proyecto base ya no puede ser modificado por el
usuario. Sin embargo, puede sobrescribirse grabando
un nuevo proyecto base (tras una pregunta de seguri-
dad).
Cuando se activa un proyecto que no contiene todos
los ficheros de configuracin, la informacin que falta
se toma del proyecto base. Esto puede ser el caso p.
ej. si se activa un proyecto de una versin de WorkVi-
sual anterior. Entre los ficheros de configuracin se
incluyen ficheros de datos de la mquina, ficheros de
la configuracin de seguridad y muchos otros.

Descripcin de los botones

Botn Descripcin
Activar Activa el proyecto marcado.
Si el proyecto marcado est bloqueado: Crea una
copia del proyecto marcado. (Un proyecto bloqueado
no puede activarse, solo una copia del mismo.) El
usuario puede decidir si la copia debe activarse ya o el
proyecto actual debe quedar activo.
Est disponible desde el grupo de usuario Experto.
Introducir Pin Los proyectos bloqueados no pueden ser modificados,
activados o borrados. Sin embargo, pueden copiarse o
desbloquearse. Por lo tanto, se puede bloquear un pro-
yecto para evitar p. ej. que se borre por error.
Solamente est disponible si est marcado un pro-
yecto desbloqueado. Est disponible desde el grupo
de usuario Experto.
Desbloquear Desbloquea el proyecto.
Slo est disponible si est marcado un proyecto blo-
queado. Est disponible desde el grupo de usuario
Experto.
Copiar Copia el proyecto marcado.
Est disponible desde el grupo de usuario Experto.
Borrar Borra el proyecto marcado.
Slo est disponible si est marcado un proyecto inac-
tivo y desbloqueado. Est disponible desde el grupo de
usuario Experto.

34 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


1 Programar con WorkVisual

Botn Descripcin
Editar Abre una ventana en la que pueden modificarse el
nombre y/o la descripcin del proyecto marcado.
Slo est disponible si est marcado un proyecto des-
bloqueado. Est disponible desde el grupo de usuario
Experto.
Actualizar Actualiza la lista de proyectos. De esta forma se mues-
tran, p. ej., los proyectos que se han transmitido a la
unidad de control del robot desde la apertura del indi-
cador.

Procedimiento
Restriccin: Cuando la activacin causa modificaciones en el sector
Parmetros de comunicacin de la configuracin de seguridad,
debe seleccionarse el grupo de usuarios Tcnico de mantenimiento
de seguridad o superior.
Si se ha seleccionado el modo de servicio AUT o AUT EXT: El proyecto slo
se puede activar si nicamente se modifican programas KRL. Si el proyecto
contiene ajustes que provocan otros cambios no se puede activar.

1. Seleccionar la secuencia de men Archivo > Gestin del proyecto. Se


abre la ventana Gestin del proyecto.

2. Marcar el proyecto deseado y activar pulsando el botn Activar.


3. KUKA smartHMI muestra la pregunta de seguridad Quiere permitir la acti-
vacin del proyecto []?. Adems se indica si con la activacin se ha so-
brescrito un proyecto, y en caso afirmativo, cul.
Si no se ha sobrescrito ningn proyecto relevante: Confirmar la pregunta
en un plazo de 30 min con S.
4. Se muestra una vista general de los cambios que se han realizado en la
unidad de control del robot en comparacin con el proyecto an activo.
Mediante la casilla Detalles se pueden mostrar detalles acerca de las mo-
dificaciones.
5. La vista general muestra la pregunta de seguridad Desea continuar?. Res-
ponder con S. El proyecto se activa en la unidad de control del robot.

Tras la activacin de un proyecto en la unidad de


control del robot se debe comprobar la configuracin
de seguridad! De lo contrario, es posible que el robot reciba datos errneos.
Pueden producirse daos materiales, lesiones e incluso la muerte.

1.3 Editar programas KRL con WorkVisual

Manipulacin del fichero

Manejo del editor KRL

1.3.1 Manipulacin del fichero

Descripcin Activar el catlogo Plantillas


Abrir el fichero (SRC/DAT/SUB) en el editor KRL
Procedimiento para aadir un fichero mediante plantillas KRL
Aadir ficheros externos

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 35 / 255


Programacin de robots 2

Activar el
catlogo
Plantillas

Fig. 1-41: Aadir catlogo

Antes de la utilizacin de las plantillas se debe cargar el catlogo corres-


pondiente.
Ruta: Fichero > Aadir catlogo
En la ventana Catlogos disponibles(1) se listan todos los catlogos ins-
talados en WorkVisual que no se han cargado y que estn activos.
En la ventana Catlogos de proyecto (2) se listan todos los catlogos
instalados y cargados en WorkVisual. Estos catlogos permiten la edicin.
Las teclas de flecha (2) puermiten activar y desactivar los catlogos.
Para la programacin en WorkVisual se necesitan los siguientes catlo-
gos:
Plantillas KRL
KRL Templates.afc
Modelos VW
VW Templates.afc

Abrir el fichero Procedimiento


(SRC/DAT/SUB) 1. En la estructura del proyecto, cambiar a la pestaa Ficheros (1)
en el editor KRL

Fig. 1-42: rbol de proyecto de WorkVisual

2. Desplegar los directorios hasta el directorio R1

36 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


1 Programar con WorkVisual

Fig. 1-43: Estructura de ficheros de rbol de proyecto de WorkVisual


(R1)

3. Seleccionar el fichero o
mediante doble clic

botn de la barra de smbolos

hacer clic con el botn derecho y seleccionar editor Krl en el


men contextual

Fig. 1-44: Men contextual de ratn de WorkVisual (editor KRL)

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 37 / 255


Programacin de robots 2

Procedimiento Procedimiento
para aadir un 1. Cambiar el rbol de proyecto del fichero
fichero mediante
2. Desplegar los directorios hasta el directorio R1
plantillas KRL
3. Seleccionar la carpeta en la que se va a crear el fichero nuevo

4. Hacer clic con el botn derecho y aadir en el men contextual

Fig. 1-45: Men contextual de WorkVisual (aadir)

5. Seleccionar plantilla

Fig. 1-46: Catlogos de plantillas KRL

a. En la ventana Catlogos, cambiar a la pestaa KRL Templates(1)


b. Seleccionar la plantilla (2) deseada, por ejemplo Mdulo.
c. En la ventana Propiedades (3) se visualiza la informacin detallada,
por ejemplo los ficheros que pueden crearse (en este caso .src y .dat).

38 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


1 Programar con WorkVisual

6. Asignar el nombre del programa

Aadir ficheros Procedimiento


externos 1. En la ventana Estructura del proyectoen la pestaa Ficheros abrir la es-
tructura de rbol de la unidad de control del robot.
2. Hacer clic con el botn derecho sobre el nodo en el que debe crearse el
programa y seleccionar Aadir ficheros externos en el men contextual.

Fig. 1-47: Men contextual de WorkVisual (aadir fichero externo)

3. Navegar hasta el directorio en el que se encuentre el fichero a importar.

Fig. 1-48: Aadir ficheros externos en WorkVisual

4. Marcar el fichero y confirmar con Abrir. El fichero se aadir a la estruc-


tura en rbol.
Se pueden importar los ficheros con extensin SRC, DAT, SUB y KRL.
El fichero se puede editar ahora con el editor KRL.

1.3.2 Activar el catlogo Plantillas

Descripcin Para poder llevar a cabo ciertas funciones en WorkVisual, como por ejemplo,
la configuracin o programacin, es necesario activar los catlogos corres-
pondientes.

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 39 / 255


Programacin de robots 2

Ejemplo
La estructura del proyecto debera ampliarse.
Hacer clic derecho en el icono de activacin del controlador y en el botn
"Aadir".

Fig. 1-49: Ampliar estructura del proyecto

Aparecer el mensaje "No se han encontrado elementos adecuados. Por


favor, aadir los correspondientes catlogos".

Fig. 1-50: Mensaje de error

Procedimiento

Activar el
catlogo
Plantillas

Fig. 1-51: Aadir catlogo

Antes de la utilizacin de las plantillas se debe cargar el catlogo corres-


pondiente.
Ruta: Fichero > Aadir catlogo

40 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


1 Programar con WorkVisual

En la ventana Catlogos disponibles(1) se listan todos los catlogos ins-


talados en WorkVisual que no se han cargado y que estn activos.
En la ventana Catlogos de proyecto (2) se listan todos los catlogos
instalados y cargados en WorkVisual. Estos catlogos permiten la edicin.
Las teclas de flecha (2) puermiten activar y desactivar los catlogos.
Para la programacin en WorkVisual se necesitan los siguientes catlo-
gos:
Plantillas KRL
KRL Templates.afc
Modelos VW
VW Templates.afc

1.3.3 Manejo del editor KRL

Descripcin del Conocer la interfaz de usuario del editor KRL


editor KRL Descripcin de colores del editor KRL
Visualizar las declaraciones de variables de un fichero
Buscar y sustituir en ficheros
Renombrar variables
Autocompletar
Fragmentos (snippets): entrada rpida para instrucciones KRL
Correccin Quickfix
Corregir o declarar automticamente la variable no declarada.
Borrar variables no utilizadas
Visualizar variables
Trabajar con Folds

Conocer la Descripcin
interfaz de El editor KRL permite la edicicin confortable de programas KUKA.
usuario del editor
No es posible comprobar o dejar que se ejecuten los programas.
KRL
Ruta: Editores > Editor KRL

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 41 / 255


Programacin de robots 2

Fig. 1-52: Interfaz de usuario del editor KRL

Pos. Descripcin
1 rea del programa
Aqu se introduce o se procesa el cdigo. El editor KRL ofrece nu-
merosas funcionalidades que ayudarn al programador.
2 Lista de subprogramas en este fichero
Para acceder a un subprograma deber seleccionarse de la lista:
el curso salta a la lnea DEF de dicho subprograma.
Si el fichero no incluye subprogramas, la lista est vaca.
3 Lista de las declaraciones de variables
Esta lista se refiere siempre al subprograma que est selecciona-
do actualmente en la lista de subprogramas. Para acceder a una
declaracin deber seleccionarse la variable en la lista: el cursor
salta a la lnea con la declaracin de dicha variable.
Si no hay presente ninguna declaracin de variable, la lista est
vaca.
4 Barra de anlisis
Las marcas indican errores o desigualdades en el cdigo.
Al pasar con el puntero del ratn sobre una marca se visualiza
una informacin de herramientas con la descripcin del error.
Al hacer clic en una marca, el cursor salta en el programa has-
ta el punto correspondiente. Para algunos errores/desigualda-
des se ofrece una correccin automtica.

5 El cuadrado tiene el color del error de mayor gravedad que existe


actualmente.
Si no existen errores/desigualdades, cuadrado tiene el color ver-
de.

42 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


1 Programar con WorkVisual

Funciones de Marcar
procesamiento Marcar una zona: hacer clic en el punto en el que deban empezar las mar-
generales cas y mantener pulsado el botn izquierdo del ratn. Arrastrar con el ratn
hasta que est marcada la zona deseada y seguidamente soltar de nuevo
el botn del ratn.

Si al marcar se mantiene pulsada adicionalmente la tecla ALT se po-


dr marcar una zona rectangular.

Marcar una lnea: hacer clic en un nmero de lnea.


Editar
Se puede acceder a las funciones de procesamiento convencionales a
travs del men contextual. Son:
Cortar, Insertar, Copiar, Borrar
Anular, Restablecer
Buscar ...
Adems, en el men contextual se encuentran disponibles las instruccio-
nes enumeradas a continuacin.

Todas las instrucciones no estn disponibles para cualquier formato


de fichero.
Las instrucciones referidas a una zona marcada tienen efecto en el
fichero completo si no se encuentra marcada ninguna zona.

Opcin de men Descripcin


Procesar > Convertir en mays- Convierte todas las minsculas en maysculas en la zona
culas marcada.
Procesar > Convertir en mins- Convierte todas las maysculas en minsculas en la zona
culas marcada.
Procesar > Primera letra mays- Convierte todas las letras iniciales en maysculas en la
cula zona marcada.
Procesar > Convertir los tabula- Sustituye las tabulaciones por espacios en el sector mar-
dores en espacios cado.
Indicacin: el nmero de espacios que corresponden a un
tabulador se puede configurar mediante el parmetro
Tamao de entrada.
Procesar > Convertir los espa- Sustituye los espacios por tabuladores en el sector mar-
cios en tabuladores cado.
Procesar > Acoplar Aade espacios iniciales (adicionales) en cada lnea de la
zona marcada.
Indicacin: el nmero de espacios que se pueden insertar
puede configurarse mediante el parmetro Tamao de
entrada.
Procesar > Borrar espacios ini- Elimina todos los espacios iniciales en las lneas de la zona
ciales marcada.
Folds > Abrir todos Abre todos los folds del fichero que se muestra actual-
mente.
Folds > Cerrar todos Cierra todos los folds del fichero que se muestra actual-
mente.
Formatear El sangrado, el ajuste de lnea etc. se adapta en todo el
fichero al estndar. El estndar vlido depende del formato
del fichero.
Insertar punto y coma Inserta punto y coma en la lnea.

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 43 / 255


Programacin de robots 2

Opcin de men Descripcin


Borrar punto y coma Borra el punto y coma en la lnea.
Renombrar (>>> "Renombrar variables" Pgina 46)
Ir a la declaracin (>>> "Visualizar variables" Pgina 52)
Insertar fragmento (snippet) (>>> "Fragmentos (snippets): entrada rpida para instruc-
ciones KRL" Pgina 48)

Descripcin de Descripcin de los colores


colores del editor El editor KRL reconoce las partes del cdigo introducido y las representa
KRL automticamente en diferentes colores.

Parte del cdigo Color


Palabras clave KRL azul medio
(a excepcin de ;FOLD y ;ENDFOLD)
;FOLD y ;ENDFOLD gris
Nmeros azul oscuro
Cadenas (texto entre comillas "") rojo
Comentarios verde
Caracteres especiales verde azulado
Otro cdigo negro

Ejemplo para la utilizacin de los colores

Fig. 1-53: Ejemplo de colores en el editor KRL

1 Palabras clave KRL: azul


2 Comentario: verde
3 FOLD: gris
4 Otro cdigo: negro

Visualizar las Descripcin


declaraciones de Todas las variables KRL declaradas en un fichero determinado pueden vi-
variables de un sualizarse de forma clara en una lista.
fichero En los ficheros SRC tambin se visualizan siempre las variables de los
ficheros DAT correspondientes y viceversa.
Procedimiento
1. Solamente si todava no se ha visualizado la ventana Lista de variables:
Visualizar esto a travs de la secuencia de men Ventana > Lista de va-
riables.

44 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


1 Programar con WorkVisual

2. Abrir el fichero en el editor KRL o en caso de que ya est abierto, hacer


clic en la pestaa del fichero.
3. La lista de variables muestra todas las variables declaradas en el mdulo
(fichero SRC y el fichero DAT correspondiente).
Haciendo clic sobre una columna es posible ordenar la lista segn esa co-
lumna.

Fig. 1-54: Ventana lista de variables

Botn Nombre / descripcin


Agrupa las variables segn las funciones locales del
nivel secundario
El botn est pulsado: La visualizacin est ordenada por
tipos de ficheros. (Dentro de este orden es posible ordenar
adems por columnas.)
El botn no est pulsado: La visualizacin no est ordenada
por tipos de ficheros.

4. Si es necesario, se puede marcar una variable en el editor KRL de esta


forma:
Hacer doble clic sobre la lnea del resultado de bsqueda.
O bien: Hacer clic con el botn derecho sobre la lnea y seleccionar Ir
a... en el men contextual.
O bien: Marcar la lnea y pulsar la tecla de entrada.
5. En la ventana Lista de variables est a disposicin una funcin de bs-
queda con la que se pueden buscar variables locales en el fichero actual:
Introducir el nombre de variables o una parte del nombre en el campo
de bsqueda. Se muestra inmediatamente el resultado de la bsque-
da.

Buscar y sustituir Descripcin


en ficheros En WorkVisual hay disponible una funcin de bsqueda que permite bus-
car un texto determinado en todos los ficheros de todo el proyecto.
En la ventana de bsqueda se puede seleccionar esa rea.
Tambin permite examinar ficheros concretos o una zona determinada de
un fichero.
Procedimiento
1. Para buscar en un fichero determinado, hay que abrirlo.
2. Para buscar en un rea determinada del fichero, hay que marcarla.
3. Abrir la ventana de bsqueda: CTRL+F

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 45 / 255


Programacin de robots 2

Fig. 1-55: Bsqueda en WorkVisual

4. O bien: Abrir la ventana para buscar y reemplazar: CTRL+H

Fig. 1-56: Buscar y reemplazar

5. Hacer los ajustes deseados y hacer clic en Buscar, en Reemplazar o en


Reemplazar todo.

Renombrar Descripcin
variables Un nombre de variable se puede modificar con una sola accin en todos
los lugares en los que aparezca.
Esto tambin es posible cuando la variable est declarada en un fichero
DAT y se utiliza en varios ficheros SRC.
Requisito
Los ficheros en los que aparece el nombre de variable no tienen errores
de sintaxis.

46 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


1 Programar con WorkVisual

En un fichero con errores sintcticos no acta el proceso de cambio auto-


mtico.
Procedimiento
1. Marcar la variable deseada en cualquier lugar.
2. Hacer clic con el botn derecho y seleccionar Renombrar en el men
contextual.
3. Se abre una ventana. Cambiar el nombre y confirmar con OK.

Fig. 1-57: Renombrar variable

Autocompletar Descripcin
En el editor KRL se encuentra disponible una funcionalidad de Autocom-
pletar.
Al introducir el cdigo se visualiza automticamente una lista que contiene
los siguientes elementos:
Palabras clave KRL
Nombres de variables conocidos
Nombres de funcin conocidos
Tipos de datos especficos de usuario conocidos (STRUC o ENUM)
Fragmentos (snippets) (>>> "Fragmentos (snippets): entrada rpida
para instrucciones KRL" Pgina 48)
Procedimiento
Introducir las primeras letras de la instruccin, variable, etc. deseada en
las correspondientes lneas del programa.
Se abre la opcin de Autocompletar:

Fig. 1-58: Autocompletar

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 47 / 255


Programacin de robots 2

En la parte superior de la lista se visualizan los elementos que correspon-


den a los caracteres ya introducidos.
Estos elementos se vuelven a priorizar de nuevo segn la frecuencia de
su uso, es decir, la seleccin se adapta constantemente al comportamien-
to del usuario.
En caso necesario, se puede marcar un elemento de la lista y aceptarse
en el texto de programa con la tecla de entrada.
Esto ahorra, p. ej., el hecho de tener que escribir continuamente los com-
plejos nombres de variables.

Navegacin en la lista de Completar:


Desplazarse
O bien: escribir las letras iniciales del elemento deseado. La marca
salta hacia ese punto.

Fragmentos Descripcin
(snippets): Para las instrucciones KRL habituales se dispone de una entrada rpida
entrada rpida en el editor KRL.
para instruc- Si, por ejemplo, se quiere programar un bucle FOR, no har falta introdu-
ciones KRL cir la sintaxis completa FOR = TO STEP .
En su lugar, se selecciona la instruccin en la lista de Completar.
Slo tienen que completarse manualmente las partes variables de la sin-
taxis.
Procedimiento
1. Si se comienza a escribir el cdigo, se visualizar la lista de Completar.
Aceptar en la lista de Completar la instruccin marcada con la tecla de en-
trada. O hacer doble clic en otra instruccin.

Fig. 1-59: Aceptar con la tecla de entrada o hacer doble clic

2. La sintaxis KRL se aadir automticamente. La primera posicin variable


est marcada de color azul. Introducir el valor deseado.

Fig. 1-60: La primera posicin variable est marcada de color azul

3. Con la tecla tabulador saltar hasta la siguiente posicin variable. Introducir


el valor deseado.
4. Repetir el paso 3 para todas las posiciones variables.
5. Pulsar la tecla de entrada para finalizar el procesamiento.

48 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


1 Programar con WorkVisual

Alternativas
1. La lista de fragmentos (snippet) tambin se puede activar por separado:
hacer clic con el botn derecho y seleccionar la entrada Insertar snippet
en el men contextual.
2. Adems, un fragmento (snippet) se puede introducir del siguiente modo:
teclear la abreviatura y pulsar la tecla TAB.
3. (Se puede determinar la abreviatura activando la lista con los fragmentos
(snippets). Marcar la instruccin. Se visualiza una informacin de herra-
mientas. La 2 lnea contiene las posibles abreviaturas.)

Correccin Descripcin
Quickfix Las partes subrayadas en el cdigo y las marcas en la barra de anlisis
hacen notar errores o desigualdades.
Procedimiento
Para algunos de estos errores/desigualdades se ofrece una correccin
automtica, el "Quickfix".
Se visualiza una lamparita Quickfix.

Fig. 1-61: Lamparita Quickfix

Mediante la tecla de flecha junto a la lamparita, el usuario puede visualizar


diferentes posibilidades de solucin y elegir una.

Corregir o Las variables no declaradas se visualizan del siguiente modo:


declarar autom- En el cdigo mediante el subrayado en color rojo
ticamente la
En la barra de anlisis mediante una raya de color rojo
variable no
Excepciones:
declarada.
Sin embargo, el color rojo tambin puede indicar otro error.
Si se trata de una variable no declarada, se visualiza la siguiente in-
formacin de herramientas al pasar con el puntero del ratn sobre el
subrayado/la raya:
La declaracin de las variables [nombre] no se ha encontrado.
Procedimiento:
1. Situar el cursor en el nombre subrayado o directamente delante de la pri-
mera letra o directamente despus de la ltima.

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 49 / 255


Programacin de robots 2

Fig. 1-62: Variable no declarada

O bien: hacer clic en la raya en la barra de anlisis.


Junto al nombre de variable se visualiza ahora una lamparita Quickfix.
2. Comprobar si los nombres de variables se han escrito por error de forma
incorrecta (de un modo diferente que en la declaracin).
En caso afirmativo: corregir. El subrayado/la raya desaparece. Ya no
es necesario ejecutar ms pasos.
En caso negativo: continuar con el paso siguiente.
3. Mover el puntero del ratn sobre la lamparita Quickfix. Junto a la lamparita
se visualiza una flecha.
Hacer clic sobre la flecha. Se visualizan las siguientes opciones:

Fig. 1-63: Declarar la variable

Declarar la variable localmente


Declarar la variable en la lista de datos
4. Hacer clic en la opcin deseada.
5. Solo con Declarar la variable en la lista de datos: se abre la lista de datos.
Abrir el fold BASISTECH EXT.

50 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


1 Programar con WorkVisual

6. Se aade automticamente un fragmento (snippet) para la declaracin de


variables. El tipo de datos supuesto se resalta en color azul. Despus de
la declaracin aparece el comentario: ; Esta variable es para ....

Fig. 1-64: Variables declaradas automticamente en la lista .dat

Mantener o modificar el tipo de datos segn sea necesario.


Con la tecla tabulador ir al comentario. Procesar el comentario si es
necesario.

Este comentario se visualiza en la informacin de herramientas de la


lista de Completar si la variable se marca aqu.

Borrar variables Descripcin


no utilizadas Las variables no utilizadas se visualizan del siguiente modo:
En el cdigo mediante el subrayado en color azul
En la barra de anlisis mediante una raya de color azul
Al pasar con el puntero del ratn sobre el subrayado o la raya se visualiza
una informacin de herramientas con una descripcin.
Procedimiento
1. Situar el cursor en el nombre subrayado o directamente delante de la pri-
mera letra o directamente despus de la ltima.
O bien: hacer clic en la raya en la barra de anlisis.
Junto al nombre de variable se visualiza ahora una lamparita Quickfix.
2. Mover el puntero del ratn sobre la lamparita Quickfix. Junto a la lamparita
se visualiza una flecha.

Fig. 1-65: Eliminar variables o borrar comentarios de las mismas

Hacer clic sobre la flecha. Se visualizan las siguientes opciones:


Borrar la declaracin
Insertar punto y coma en la declaracin
3. Hacer clic en la opcin deseada.

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 51 / 255


Programacin de robots 2

Visualizar Saltar a la declaracin de una variable


variables 1. Situar el cursor en el nombre de la variable, o directamente delante de la
primera letra o directamente detrs de la ltima.
2. Hacer clic con el botn derecho y seleccionar Ir a la declaracin en el
men contextual.

Fig. 1-66: Men: botn derecho del ratn

3. El cursor marca el nombre de la variable en la seccin de declaraciones.


En el ejemplo:
...
DECL INT counter
...

Visualizar todos los usos de una variable


1. Solamente si todava no se ha visualizado la ventana Encontrar aplica-
ciones:
Marcar la secuencia de men Ventana > Encontrar aplicaciones.
2. Situar el cursor en el nombre de la variable, o directamente delante de la
primera letra o directamente detrs de la ltima.
3. Hacer clic con el botn derecho del ratn y seleccionar Encontrar aplica-
ciones en el men contextual. Ver tambin: (>>> Fig. 1-66 )
En la ventana Encontrar aplicaciones aparece una pestaa con el nom-
bre Usos de [variable]. En ella aparecen detallados todos los usos (fichero
y ruta completa, nmero de lneas, etc.).

52 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


1 Programar con WorkVisual

Fig. 1-67: Utilizacin de filtros

4. En caso necesario: Hacer doble clic en una lnea de la lista. Se marca la


posicin correspondiente en el programa.
Se puede ejecutar, p. ej., Renombrar.

Trabajar con Descripcin


Folds El contenido del editor KRL se puede estructurar con folds al igual que un
programa KRL normal.
Los programas pueden configurarse a modo de resumen gracias a este
mtodo.
Abrir un fold
Hacer doble clic en la casilla del fold cerrado.
O bien: hacer clic en el signo ms.
Se abre el fold.

Fig. 1-68: Fold abierto

Cerrar un fold
Hacer clic en el signo menos.
El Fold se cierra.

Fig. 1-69: Fold cerrado

Abrir o cerrar todos los folds


Men contextual: Folds > Abrir todos o Cerrar todos

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 53 / 255


Programacin de robots 2

1.4 Ejercicio: Editar un proyecto activo en WorkVisual

Objetivo del Despus de completar correctamente este ejercicio, se dispondr de la com-


ejercicio petencia necesaria para efectuar las siguientes tareas:
Conectar en la interfaz KSI de la unidad de control un PC con WorkVisual
3.x instalado.
Cargar un proyecto activo en WorkVisual.
Crear un nuevo programa KRL en WorkVisual.
Transferir a la unidad de control el proyecto actualizado y ativarlo.

Requisitos Los siguientes requisitos son necesarios para completar este ejercicio correc-
tamente:
Se necesita un PC con WorkVisual 3.x instalado.
Conocimientos tericos sobre la gestin de proyectos en WorkVisual

Formulacin de Enlazar el PC, con WorkVisual 3.x instalado, con la interfaz KUKA Service
tarea Interface KSI situada en el armario de control.
Cargar el proyecto activo de la unidad de control en WorkVisual.
Crear un nuevo programa con la denominacin my1prog
Crear un comentario entre ambos conjuntos de movimientos PTP HOME.
Establecer la estructura de fichero especfica para el proyecto pulsando el

botn Code erzeugen .

Instalar el proyecto pulsando el botn Instalar proyecto situado en la


unidad de control.
Activar ese proyecto.
Comprobar si el nuevo programa instalado est disponible en la unidad de
control.
Lo que se debe saber tras el ejercicio:
1. Qu interfaces pueden utilizarse para enlazar un PC con WorkVisual en
la unidad de control?
.............................................................
.............................................................
2. Qu proyectos especiales estn disponibles en la unidad de control?
.............................................................
.............................................................
.............................................................
3. Cules son los modos de WorkVisual disponibles y cmo se utilizan?
.............................................................
.............................................................
4. Qu plantillas deben activarse para la programacin KRL?
.............................................................
.............................................................
5. Dnde pueden crearse nuevos programas KRL en los programas de Wor-
kVisual?
.............................................................
.............................................................

54 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


1 Programar con WorkVisual

6. Para qu se utilizan los fragmentos (snippets)?


............................................................
............................................................

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 55 / 255


Programacin de robots 2

56 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


2 Programacin estructurada

2 Programacin estructurada
2

2.1 Resumen

Esta unidad incluye los siguientes contenidos:


Metodologa de programacin uniforme
Elementos auxiliares para la creacin de programas de robot estructura-
dos
Plan de ejecucin del programa

2.2 Objetivo de la metodologa de programacin uniforme

Objetivo de la Una metodologa de programacin sirve para:


metodologa de hacer frente a problemas complejos de un modo ms sencillo mediante
programacin una estructura dividida de forma rigurosa
uniforme representar de forma comprensible el proceso en cuestin (sin tener co-
nocimientos de programacin ms avanzados)
aumentar la efectividad en el mantenimiento, la modificacin y la amplia-
cin de programas
La planificacin del programa con previsin tiene como consecuencia:
poder dividir tareas complejas en tareas parciales simples
reducir el tiempo total necesario para la programacin
permitir la posibilidad de sustitucin de componentes con el mismo rendi-
miento
poder desarrollar componentes de forma separada
Los 6 requisitos para un programa del robot:
1. Eficacia
2. Ausencia de errores
3. Inteligibilidad
4. Mantenimiento sencillo
5. Control visual completo
6. Rentabilidad

2.3 Elementos auxiliares para la creacin de programas de robot estructurados

Qu utilidad Los comentarios son complementos/observaciones dentro del lenguaje de


tiene un comen- programacin. Todos los lenguajes de programacin se componen de instruc-
tario? ciones para el ordenador (cdigo) e indicaciones para el procesador de textos
(comentarios). Si se contina el procesamiento (se compila, interpreta, etc.)
de un texto fuente, se ignorarn los comentarios del software de procesamien-
to y, por ello, no tienen ninguna influencia en el resultado.
En el controlador de KUKA se utilizan comentarios de lneas, es decir, los co-
mentarios terminan automticamente al final de la lnea.
Los comentarios por s solos no pueden hacer que un programa sea legible,
pero pueden aumentar considerablemente la legibilidad de un programa bien
estructurado. Mediante los comentarios, el programador tiene la posibilidad
de aadir observaciones y explicaciones en el programa sin que sean regis-
tradas como sintaxis por el controlador.
El programador es responsable de que el contenido de los comentarios coin-
cida con el estado actual de las indicaciones de programacin. En caso de

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 57 / 255


Programacin de robots 2

modificaciones del programa, tambin se deber comprobar los comentarios


y adaptarse si es necesario.
El contenido de un comentario y, de este modo, tambin su utilizacin se pue-
de seleccionar libremente por el autor y no est sometido a ninguna sintaxis
vinculante. Por regla general, los comentarios se realizan en lenguaje "huma-
no", bien en la lengua materna del autor o en un lenguaje coloquial.
Observaciones sobre el contenido o funcin de un programa
El contenido y la utilizacin se pueden seleccionar libremente
Se mejora la legibilidad de un programa
Contribucin a la estructuracin de un programa
La responsabilidad de la actualizacin corresponde al programador
KUKA utiliza comentarios de lneas
Los comentarios no son registrados como sintaxis por el controlador

Dnde y cundo Informaciones sobre el texto fuente completo:


se van a utilizar Al principio de un texto fuente, el autor puede realizar comentarios previos, in-
los comentarios? cluyendo sus propios datos, la licencia, la fecha de creacin, la direccin de
contacto en caso de preguntas, la lista de otros ficheros necesarios, etc.
DEF PICK_CUBE()
;Este programa recoge el cubo del depsito
;Autor: Max Mustermann
;Fecha de creacin: 09.08.2011
INI
...
END

Subdivisin del texto fuente:


Los ttulos y los apartados se pueden identificar como tales. Para ello, no solo
se utilizan con frecuencia medios lingsticos, sino tambin medios grficos
que se pueden aplicar a lo largo del texto.
DEF PALLETIZE()
;*****************************************************
;*Este programa paletiza 16 cubos sobre la mesa*
;*Autor: Max Mustermann------------------------------*
;*Fecha de creacin: 09.08.2011-----------------------*
;*****************************************************
INI
...
;------------Clculo de las posiciones----------------
...
;------------Paletizado de los 16 cubos---------------
...
;----------Despaletizado de los 16 cubos---------------
...
END

Explicacin de una lnea individual:


De este modo se puede explicar el procedimiento o el significado de una parte
del texto (p. ej. lnea del programa) para que otros autores o el propio autor
puedan entenderlo mejor posteriormente.
DEF PICK_CUBE()

INI

SPTP HOME Vel=100% DEFAULT

58 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


2 Programacin estructurada

SPTP Pre_Pos ; Desplazamiento a posicin previa para agarrar

SLIN Grip_Pos ; Cubo desplazado a posicin de agarre


...

END

Indicacin sobre los trabajos a realizar:


Los comentarios pueden identificar fragmentos de cdigos insuficientes o ser
un comodn para fragmentos de cdigos completamente ausentes.
DEF PICK_CUBE()

INI

;Aqu se debe insertar el clculo de las posiciones de palets

SPTP HOME Vel=100% DEFAULT

SPTP Pre_Pos ; Desplazamiento a posicin previa para agarrar

SLIN Grip_Pos ; Cubo desplazado a posicin de agarre

;Aqu falta el cierre de la garra

END

Insertar punto y coma:


Si se borra provisionalmente un componente del cdigo, aunque posiblemen-
te se vuelve a introducir de forma posterior, se insertar un punto y coma. En
cuanto est incluido en el comentario, el fragmento del cdigo ya no es un c-
digo desde el punto de vista del compilador, es decir, prcticamente ya no
est disponible.
DEF Palletize()

INI

PICK_CUBE()

;CUBE_TO_TABLE()

CUBE_TO_MAGAZINE()

END

Qu provoca la En FOLDS se pueden ocultar partes del programa


utilizacin de Los contenidos de FOLDS no son visibles para el usuario
Folds en un Los contenidos de FOLDS se procesan de forma totalmente normal en la
programa del ejecucin del programa
robot? Mediante la utilizacin de FOLDS se puede mejorar la legibilidad de un
programa

Qu ejemplos En el controlador de KUKA, el sistema ya utiliza Folds de manera estndar,


existen para la por ejemplo durante la visualizacin de formularios inline. Estos Folds facilitan
utilizacin de el control visual completo de los valores introducidos en el formulario en lnea
y ocultan las partes del programa que no son relevantes para el operario.
Folds?
Adems, para el usuario existe la posibilidad de crear Folds propios (a partir
de grupo de usuario experto). El programador puede utilizar estos Folds, p. ej.

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 59 / 255


Programacin de robots 2

para comunicarle al operario lo que est ocurriendo en un lugar determinado


del programa, pero manteniendo la sintaxis KRL real en segundo plano.
En general, los Folds se representan primero cerrados tras su creacin.
DEF Main()
...
INI ; KUKA FOLD cerrado

SET_EA ; FOLD creado por el utilizador cerrado

SPTP HOME Vel=100% DEFAULT ; KUKA FOLD cerrado

SPTP P1 CONT Vel=100% TOOL[2]:Gripper BASE[2]:Table


...
SPTP HOME Vel=100% Default

END

DEF Main()
...
INI ; KUKA FOLD cerrado

SET_EA ; FOLD creado por el utilizador abierto


$OUT[12]=TRUE
$OUT[102]=FALSE
PART=0
Position=0

SPTP HOME Vel=100% DEFAULT ; KUKA FOLD cerrado


...
SPTP P1 CONT Vel=100% TOOL[2]:Gripper BASE[2]:Table

SPTP HOME Vel=100% Default

END

DEF Main()
...
INI ; KUKA FOLD cerrado

SET_EA ; FOLD creado por el utilizador cerrado

; KUKA FOLD abierto


SPTP XHOME WITH $VEL_AXIS[1]= SVEL_JOINT( 100), $TOOL= STOOL2(
FHOME), $BASE= SBASE( FHOME.BASE_NO),
$IPO_MODE= SIPO_MODE( FHOME.IPO_FRAME), $LOAD= SLOAD( FHOME.TOOL_NO),
$ACC_AXIS[1]= SACC_JOINT( PDEFAULT),
$GEAR_JERK[1]= SGEAR_JERK( PDEFAULT)

...

SPTP P1 CONT Vel=100% TOOL[2]:Gripper BASE[2]:Table

SPTP HOME Vel=100% Default

END

Por qu se En la programacin los subprogramas se utilizan principalmente para permitir


trabaja con tecno- una utilizacin mltiple de partes de tareas iguales y, de este modo, conseguir
loga de subpro- la prevencin de repeticiones de cdigos. Esto tambin permite ahorrar en es-
pacio de almacenamiento, entre otros aspectos.
gramas?

60 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


2 Programacin estructurada

Otro motivo importante para la utilizacin de subprogramas es las estructura-


cin resultante del programa.
Un subprograma debe realizar una tarea parcial acotada a s misma y fcil-
mente descriptible.
Los subprogramas son actualmente ms cortos y con una presentacin clara
en beneficio de la facilidad de mantenimiento y la eliminacin de errores de
programacin. El tiempo y la administracin invertidos desde el punto de vista
interno del ordenador para la activacin de subprogramas, no tienen prctica-
mente ninguna importancia en los ordenadores modernos.
Posibilidad de utilizacin mltiple
Prevencin de repeticiones de cdigos
Ahorro de espacio de almacenamiento
Los componentes se pueden desarrollar separados unos de otros
Posibilidad de intercambio de componentes del mismo nivel de rendimien-
to en cualquier momento
Estructuracin del programa
Tarea completa dividida en tareas parciales
Mantenibilidad y eliminacin de errores de programacin mejoradas

Aplicacin de DEF MAIN()


subprogramas
INI

LOOP

GET_PEN()
PAINT_PATH()
PEN_BACK()
GET_PLATE()
GLUE_PLATE()
PLATE_BACK()

IF $IN[1]== TRUE THEN


EXIT
ENDIF

ENDLOOP

END

Qu provoca la Para aclarar la relacin entre los mdulos del programa, se recomienda inser-
insercin de tar secuencias de instrucciones encajadas en el texto de programacin y es-
lneas de instruc- cribir instrucciones con la misma profundidad de apilamiento, directamente
unas debajo de las otras.
ciones?
El efecto logrado es puramente visual, nicamente afecta al valor de un pro-
grama como medio de informacin de persona a persona.
DEF INSERT()
INT PART, COUNTER
INI
SPTP HOME Vel=100% DEFAULT
LOOP
FOR COUNTER = 1 TO 20
PART = PART+1
;Imposible aplicar sangra en formularios inline
SPTP P1 CONT Vel=100% TOOL[2]:Gripper BASE[2]:Table
PTP XP5 ; Movimiento con KRL
ENDFOR

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 61 / 255


Programacin de robots 2

...
ENDLOOP

Qu se consigue Para poder indicar correctamente la funcin de datos y seales en un progra-


mediante una ma del robot, se recomienda utilizar trminos de valor informativo durante la
identificacin asignacin de los nombres. Entre ellos, p. ej.:
adecuada de Nombre de texto largo para seales de entrada y de salida
nombres de Nombres de Tool y Base
datos? Declaraciones de seales para seales de entrada y de salida
Nombres de puntos

2.4 Cmo crear un plan de ejecucin del programa

Qu es un PEP? Un plan de ejecucin del programa (PEP) es un diagrama de flujo para un pro-
grama que tambin se denomina como plan de estructura del programa. Es
una representacin grfica para la transformacin de un algoritmo en un pro-
grama y describe la secuencia de operaciones para la solucin de una tarea.
Los smbolos para los planes de ejecucin del programa estn regulados en
la norma DIN 66001. Los planes de ejecucin del programa tambin se utili-
zan a menudo en programas de ordenador para la representacin de proce-
sos y tareas.
En comparacin con una descripcin basada en un cdigo, el algoritmo del
programa presenta una legibilidad considerablemente ms sencilla, ya que,
gracias a la representacin grfica, la estructura se puede reconocer mucho
mejor.
Los errores de estructura y programacin se evitan de forma ms sencilla con
la transformacin posterior en cdigo de programacin, ya que en caso de
aplicacin correcta de un PEP, es posible la transformacin directa en un c-
digo de programacin. Al mismo tiempo, con la creacin de un PEP se obtiene
una documentacin del programa que se va a crear.
Herramienta para la estructuracin del proceso de un programa
La ejecucin del programa es fcilmente legible
Los errores en la estructura se pueden reconocer de forma ms sencilla
Documentacin simultnea del programa

Smbolos PEP Comienzo o fin de un proceso o de un programa

Fig. 2-1

Combinacin de indicaciones y operaciones

Fig. 2-2

Ramificacin

62 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


2 Programacin estructurada

Fig. 2-3

Indicaciones generales en el cdigo de programa

Fig. 2-4

Llamada de subprograma

Fig. 2-5

Indicacin de entrada/salida

Fig. 2-6

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 63 / 255


Programacin de robots 2

Ejemplo PEP

Fig. 2-7

Cmo se crea un Partiendo de la presentacin de usuario, el problema se perfecciona progre-


PEP sivamente hasta que se puedan visualizar lo suficiente los componentes ela-
borados de este modo para poder adaptarlos en KRL.
Los proyectos que se creen en los siguientes pasos de desarrollo se diferen-
cian por el aumento en la precisin de detalles.
1. Subdivisin aproximada del proceso completo en aprox. 12 pginas
2. Divisin de la tarea completa en tareas parciales pequeas
3. Subdivisin aproximada de las tareas parciales
4. Perfeccionamiento de la subdivisin de las tareas parciales
5. Aplicacin en cdigo KRL

64 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


3 Introduccin al nivel del experto

3 Introduccin al nivel del experto


t

3.1 Resumen

Esta unidad incluye los siguientes contenidos:


Utilizar el nivel experto

3.2 Utilizar el nivel experto

Descripcin La unidad de control del robot ofrece diferentes grupos de usuarios con di-
ferentes funciones. Se pueden seleccionar los siguientes grupos de usua-
rios:
Operario
Grupo de usuario para el operario. Esto es el grupo de usuario por defec-
to.
Usuario
Grupo de usuario para el operario. (Los grupos de usuarios del operario y
del usuario estn declarados por defecto para el mismo grupo destinata-
rio.)
Experto
Grupo de usuario para el programador. Este grupo de usuario est prote-
gido por una contrasea.
Administrador
Mismas funciones que las del grupo de usuario Experto. A modo adicional
es posible integrar plug-ins en la unidad de control del robot. Este grupo
de usuario est protegido por una contrasea. La contrasea por defecto
kuka se debera cambiar.
Tcnico de mantenimiento de seguridad
Este usuario puede activar una configuracin de seguridad existente del
robot mediante un cdigo de activacin. Si no se utiliza ninguna opcin
Safe, p. ej. KUKA.SafeOperation o KUKA.SafeRangeMonitoring, el tcni-
co de mantenimiento de seguridad dispone de derechos complementa-
rios. En este caso, por ejemplo, est autorizado para configurar las
funciones de seguridad estndar. El grupo de usuario est protegido por
una contrasea. La contrasea por defecto kuka se debera cambiar.
Tcnico de mantenimiento de seguridad
Este grupo de usuario solo es relevante cuando se utiliza KUKA.SafeO-
peration o KUKA.SafeRangeMonitoring. El grupo de usuario est protegi-
do por una contrasea. La contrasea por defecto kuka se debera
cambiar.
Funciones avanzadas del grupo de usuario Experto:
Protegido por contrasea (predeterminada: kuka)
La programacin en el editor mediante KRL es posible
El grupo de usuario Experto se vuelve a abandonar automticamente
cuando se cambia al modo de servicio AUT o AUT EXT
cuando durante un tiempo determinado no se realiza ninguna opera-
cin en la interfaz de usuario (300 s)

Como experto, en el men Procesar se encuentran disponibles to-


das las funciones.

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 65 / 255


Programacin de robots 2

Funciones Crear programas mediante plantillas


Cell: El programa Cell disponible solo se puede sustituir o crearse de nue-
vo en caso de que se borre Cell.
Expert: Mdulo compuesto por ficheros SRC y DAT en los que solo est
disponible el encabezamiento y el final del programa.
Expert Submit: Fichero Submit (SUB) adicional compuesto de encabeza-
miento y final del programa.
Function: Creacin de funcin de fichero SRC, en el que solo se crea el
encabezamiento de la funcin con una variable BOOL. El final de la fun-
cin est disponible, pero debe programarse el retorno.
Mdulo: Mdulo compuesto de ficheros SRC y DAT, en los que est dis-
ponible el encabezamiento y el final del programa y la estructura base (INI
y 2x PTP HOME).
Submit: Fichero Submit (SUB) adicional compuesto de encabezamiento
y final del programa y estructura base (DECLARATION, INI, LOOP/EN-
DLOOP).

El filtro determina cmo se deben mostrar los programas en la lista de fiche-


ros. Se puede elegir entre los siguientes filtros:
Deseleccionar o cerra el programa.
Botn Editar > Filtro y, despus, seleccionar Detalle o Mdulo
Detalle
Los programas se visualizan como ficheros SRC y DAT (ajuste por defec-
to).
Mdulos
Los programas se muestran como mdulos.

Fig. 3-1: Men "Editar"

66 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


3 Introduccin al nivel del experto

Abrir/cerrar FOLD
Los FOLD siempre estn cerrados para el usuario y se pueden abrir como
experto.
El experto tambin puede programar FOLD propios.
La sintaxis para un FOLD es la siguiente:
;FOLD Nombre
Instrucciones
;ENDFOLD <Nombre>
Las filas ENDFOLD pueden asignarse ms fcilmente si se introduce aqu
el nombre del FOLD. Pueden encajarse los FOLD.
Mostrar/ocultar la lnea DEF
Por defecto, la lnea DEF est oculta. Solo se pueden efectuar declaracio-
nes en un programa una vez que la lnea DEF sea visible.
La lnea DEF se muestra y oculta independientemente para cada progra-
ma abierto y seleccionado. Si est activada una vista en detalle, la lnea
DEF est visible y no es necesario mostrarla expresamente.

Procedimiento Activar el nivel experto


para activar el 1. Seleccionar en el men principal la secuencia Configuracin > Grupo de
nivel experto y usuario.
subsanar errores 2. Registrarse como experto: Pulsar Iniciar sesin. Marcar el grupo de
usuario Experto y confirmar con Iniciar sesin.
3. Introducir la contrasea (predeterminada: kuka) y confirmar con Iniciar
sesin.
Subsanar el error en el programa
1. Seleccionar un mdulo defectuoso en el navegador

Fig. 3-2: Programa incorrecto

2. Seleccionar el men Lista de errores


3. Se abre la indicacin de errores (nombre del programa.ERR)
4. Seleccionar el error, se representa una descripcin detallada abajo en la
indicacin de errores
5. En la ventana de indicacin de errores, pulsar la tecla Visualizar y saltar
al programa defectuoso
6. Subsanar el error
7. Abandonar el editor y guardar

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 67 / 255


Programacin de robots 2

3.3 Ejercicio: Medicin Tool y Base

Objetivo del Despus de completar correctamente este ejercicio, se dispondr de la com-


ejercicio petencia necesaria para efectuar las siguientes tareas:
Medicin de la herramienta con el mtodo de 4 puntos XYZ y el mtodo
World 5D
Medicin de la herramienta mediante la entrada de valores numricos
Medicin Base segn el mtodo de 3 puntos

Requisitos Los siguientes requisitos son necesarios para completar este ejercicio correc-
tamente:
Conocimientos tericos sobre la medicin de una herramienta
Conocimientos tericos sobre la medicin de una base

Funcin: intro- Para la garra de formacin con entrada numrica, indicar:


duccin de los
datos de herra-
mienta de la garra

Fig. 3-3: College garra: Posicin del TCP

Garra de formacin KR 16

Fig. 3-4: Garra de formacin KR 16

68 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


3 Introduccin al nivel del experto

Masa:
M = 4,3 kg
Centro de masa:
X = 41 mm Y = 35 mm Z = 62 mm
Orientacin:
A = 0 B = 0 C = 0
Momentos de inercia:
JX = 0,03 kgm2 JY = 0,04 kgm2 JZ = 0,12 kgm2

Garra esquina derecha


X Y Z
122,64 mm 177,73 mm 172,49 mm
A B C
45 0 180

Garra de formacin celda modular

Fig. 3-5: Garra de formacin celda modular

Masa:
M = 4,4 kg
Centro de masa:
X = 7 mm Y = -24 mm Z = 80 mm
Orientacin:
A = 0 B = 0 C = 0
Momentos de inercia:
JX = 0,02 kgm2 JY = 0,05 kgm2 JZ = 0,11 kgm2

Garra esquina derecha


X Y Z
175,38 mm -123,97 mm 172,71 mm
A B C
-45 0 -180

Garra de formacin celda mvil

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 69 / 255


Programacin de robots 2

Fig. 3-6: Garra de formacin celda mvil

Masa:
M = 2 kg
Centro de masa:
X = 23 mm Y = 0 mm Z = 61 mm
Orientacin:
A = 0 B = 0 C = 0
Momentos de inercia:
JX = 0,002 kgm2 JY = 0,004 kgm2 JZ = 0,003 kgm2

Garra esquina derecha


X Y Z
12 mm 0 mm 77 mm
A B C
0 0 0

Formulacin de Medicin clavija


tarea Utilizar la clavija superior del depsito de clavijas y sujetarla manualmente
en la garra.
Medir la clavija con el mtodo 4 puntos XYZ y el mtodo ABC-World 5D.
Utilizar como nmero de herramienta el 2 y como denominacin "Clavi-
ja 1".
Utilizar para ello los datos de carga de herramienta para la clavija indica-
dos abajo.
Medicin "base azul"
La medicin de la BASE nmero 2 se realiza con la Clavija 1 y el mtodo
de 3 puntos. Como denominacin se utiliza "base azul".

Datos de carga de Garra de formacin KR 16


la herramienta
garra con clavija

70 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


3 Introduccin al nivel del experto

Fig. 3-7: Garra de formacin KR 16

Masa:
M = 4,9 kg
Centro de masa:
X = 53 mm Y = 49 mm Z = 65 mm
Orientacin:
A = 0 B = 0 C = 0
Momentos de inercia:
JX = 0,02 kgm2 JY = 0,03 kgm2 JZ = 0,15 kgm2

Garra de formacin de celda modular

Fig. 3-8: Garra de formacin celda modular

Masa:
M = 5 kg
Centro de masa:
X = 23 mm Y = 38 mm Z = 84 mm
Orientacin:
A = 0 B = 0 C = 0
Momentos de inercia:
JX = 0,02 kgm2 JY = 0,07 kgm2 JZ = 0,14 kgm2

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 71 / 255


Programacin de robots 2

Garra de formacin celda mvil

Fig. 3-9: Garra de formacin celda mvil

Masa:
M = 2,14 kg
Centro de masa:
X = 30 mm Y = 0 mm Z = 64 mm
Orientacin:
A = 0 B = 0 C = 0
Momentos de inercia:
JX = 0,002 kgm2 JY = 0,004 kgm2 JZ = 0,003 kgm2

Lo que se debe saber tras el ejercicio:


1. Qu ventajas ofrece la utilizacin de una base sobre la mesa?
.............................................................
.............................................................
2. Dnde se encuentra el punto de referencia para la medicin de una herra-
mienta?
.............................................................
.............................................................
3. Cuntos sistemas de base diferentes presenta el software de KUKA?
.............................................................
.............................................................
4. Cul es la diferencia entre los mtodos ABC-World 5D y 6D?
.............................................................
.............................................................
5. Dnde se encuentra una base sin medir (estado de suministro)?
.............................................................
.............................................................

72 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


3 Introduccin al nivel del experto

3.4 Ejercicio: Navegador experto bucle sinfn

Objetivo del Despus de completar correctamente este ejercicio, se dispondr de la com-


ejercicio petencia necesaria para efectuar las siguientes tareas:
Creacin de mdulos en el nivel experto
Combinacin de mdulos individuales en un programa principal
Utilizacin de un bucle sinfn

Requisitos Los siguientes requisitos son imprescindibles para superar el ejercicio con
xito:
Conocimientos tericos sobre el navegador en el nivel experto
Conocimientos tericos sobre la utilizacin de subprogramas globales
Conocimientos tericos sobre un bucle sinfn

Formulacin de 1. Crear un plan de ejecucin del programa (PEP) antes del inicio de la pro-
tarea gramacin.
2. Crear dos mdulos adecuados (cubo_dep/cubo_rec).
3. La llamada y el bucle sinfn deben tener lugar en el mdulo DEPSITO.
4. Comprobar el programa en los modos de servicio T1, T2 y Automtico. Se
deben tener en cuenta las prescripciones de seguridad enseadas.
Lo que se debe saber tras el ejercicio:
1. Cul es la diferencia al crear un programa entre la seleccin de MODUL
y EXPERT?
............................................................
............................................................
............................................................
............................................................
............................................................
2. Qu se entiende por el modo de ejecucin del programa Paso a paso?
............................................................
............................................................
3. Cul es la diferencia entre SELECCIONAR y ABRIR un programa?
............................................................
............................................................
............................................................
4. Cul es el aspecto de la sintaxis para un "pliegue"?
............................................................
............................................................
5. Qu consecuencias tiene la modificacin posterior de la posicin HOME?
............................................................
............................................................

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 73 / 255


Programacin de robots 2

74 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


4 Variables y declaraciones

4 Variables y declaraciones
4

4.1 Resumen
s

Esta unidad incluye los siguientes contenidos:


Gestin de datos en KRL
Tipos de datos simples con KRL
Visualizar variables
Grupos/campos con KRL
Estructuras con KRL
Tipo de datos de enumeracin ENUM

4.2 Gestin de datos en KRL

Generalidades
sobre variables

Fig. 4-1: Identificacin de variables

En la programacin de robots con KRL, una variable es en, sentido amplio


de la palabra, simplemente un recipiente para operandos ("valores") que
aparecen en el desarrollo de un proceso del robot.
Una variable dispone de una direccin determinada asignada en la memo-
ria de un ordenador.
Una variable se denomina mediante un nombre que no es una palabra
clave de KUKA.
Cada variable est unida a un tipo determinado de archivos.
La declaracin del tipo de datos es necesaria antes de la utilizacin.
En KRL se distingue entre variables locales y globales.

Convenciones En la eleccin del nombre de la variable se deben tener en cuenta las siguien-
sobre los tes reglas:
nombres Los nombres en KRL pueden tener una longitud mxima de 24 caracteres.
Los nombres en KRL pueden contener letras (A-Z), cifras (0-9) y los ca-
racteres especiales "_" y "$".
Los nombres en KRL no deben comenzar con cifras.
Los nombres en KRL no deben ser palabras clave.
La utilizacin de maysculas y minsculas es indiferente.
Consejos
Utilizar nombres de variables adecuados y autoexplicativos.
No utilizar nombres o abreviaturas crpticos.
Utilizar una longitud de nombre adecuada, no gastar cada vez 24 carac-
teres.

Doble decla- Una doble declaracin ocurre siempre que se usan los mismos nombres
racin de de variables (cadenas).
variables No se trata de una doble declaracin cuando se utiliza el mismo nombre
en archivos SRC o DAT distintos.

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 75 / 255


Programacin de robots 2

Las dobles declaraciones en el mismo archivo SRCy DAT no estn permi-


tidas y generan un mensaje de error.
Las dobles declaraciones en el archivo SRC o DAT y en el archivo $CON-
FIG.DAT estn permitidas:
Durante la ejecucin de la rutina de programacin en la que ha sido
declarada la variable, solo se modifica el valor local y no el valor en el
archivo $CONFIG.DAT.
Durante la ejecucin de la rutina de programacin "ajena" solo se re-
curre al valor procedente del archivo $CONFIG.DAT y se modifica.

Tipos de datos en Tipos de datos estndar predefinidos


KRL BOOL: resultados del tipo "S"/"NO"
REAL: nmero de coma flotante, resultados de operaciones, para po-
der evitar errores de redondeo
INT: nmero entero, tpica variable de recuento para bucles de re-
cuento o contadores de piezas
CHAR: solo un carcter
La cadena o el texto solo se puede realizar como campo CHAR

Carcter
Tipos de datos Nmero Nmero con Valores
individua
simples entero coma flotante lgicos
l
Palabra clave INT REAL BOOL CHAR
Rango de valo- -231 ... 1.1 10-38... TRUE / Juego de
res FALSE caracte-
(231-1) 3.4 10+38
res ASCII
Ejemplos -199 o 56 -0,0000123 o TRUE o "A" o "q"
3,1415 FALSE o "7"

Campos / Grupo
Voltage[10] = 12.75
Voltage[11] = 15.59

Guardar varias variables del mismo tipo de datos mediante el ndice


Durante la inicializacin o en caso de cambio del valor se debe indicar
el ndice
El tamao mximo del campo depende de las necesidades de alma-
cenamiento del tipo de datos
Tipo de datos de enumeracin
color = #red

Todos los valores del tipo de enumeracin se definen en la creacin


con nombre (en forma de texto)
El sistema tambin determina un orden
El nmero mximo de elementos depende del espacio de almacena-
miento
Tipo de datos combinado / estructura
Date = {day 14, month 12, year 1996}

Tipo de datos combinado de componentes de diferentes tipos de da-


tos
Los componentes pueden estar compuestos por tipos de datos sim-
ples, pero tambin por estructuras
Es posible el acceso a componentes individuales

76 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


4 Variables y declaraciones

Creacin de Declaracin de variables


variables La declaracin se debe realizar siempre antes de su uso.
A cada variable se le debe asignar un tipo de datos.
Se deben respetar las convenciones sobre nombres en la asignacin de
nombres.
La palabra clave para la declaracin es DECL.
Se puede suprimir la palabra clave DECL en los cuatro tipos de datos sim-
ples.
Las asignaciones de valores se realizan en avance.
La declaracin de variables se puede realizar en diferentes puntos. Esto
afecta a la vida til y la validez de las correspondientes variables.

Vida til y validez Vida til de las variables en KRL


de las variables Por vida til se entiende el periodo de tiempo en el que se reserva memo-
ria para la variable.
Las variables de duracin temporal vuelven a liberar su espacio de alma-
cenamiento al abandonar el programa o la funcin.
Las variables de una lista de datos mantienen su valor actual (el ms re-
ciente) de forma permanente en la memoria.
Validez de las variables en KRL
Las variables declaradas como locales solo estn disponibles y visibles en
el programa en el cual han sido declaradas.
Las variables globales estn registradas en una lista de datos central (glo-
bal).
Las variables globales se pueden registrar tambin en un lista de datos
local y aplicarles la palabra clave global al declararlas.

Declaracin de Variable en el fichero SRC


variables en Una variable creada en el archivo SRC se denomina variable de tiempo de
funcin del lugar ejecucin.
de almacena- Esta no siempre se puede visualizar.
miento Solo se encuentra disponible en la rutina de programacin en la que ha
sido declarada. Por tanto, la variable estar disponible durante la ejecu-
cin del programa. (Programa principal o subprograma local).
Deja libre de nuevo su espacio de memoria al alcanzar la ltima lnea del
programa (lnea END).
Variable en el archivo DAT local
Se puede visualizar siempre durante la ejecucin del programa del archivo
SRC correspondiente.
El valor de la variable se mantiene tras la finalizacin del programa.
Est disponible en todo el archivo SRC, es decir, tambin en los subprogra-
mas locales.
Tambin se puede crear como variable global.
Recibe el valor actual en el archivo DAT y comienza con el valor guardado
en una nueva llamada.
Si la variable se declara como global, tambin est disponible a nivel glo-
bal. Permite un acceso de lectura y de escritura en todas las rutinas de
programacin, si en el archivo DAT se define la palabra clave PUBLIC y
en la declaracin se usa adicionalmente la palabra clave GLOBAL.
Variable en el archivo de sistema $CONFIG.DAT
Est disponible en todos los programas (global).
Se puede visualizar siempre, incluso si ningn programa est activo.

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 77 / 255


Programacin de robots 2

Est disponible de forma global, es decir, en todas las rutinas de progra-


macin es posible un acceso de lectura y de escritura.
Guarda el valor actual en el archivo $CONFIG.DAT.

Datos de sistema Los datos de sistema KUKA estn presentes en todos los tipos de datos,
de KUKA p. ej., como
Tipo de datos de enumeracin, p. ej.: modo de servicio
Estructura, p. ej.: fecha/hora
Las informaciones de sistema se obtienen a travs de variables de siste-
ma de KUKA. Estas
leen la informacin actual del sistema
modifican las configuraciones actuales del sistema
estn predefinidas y comienzan con el carcter "$"
$DATE (fecha y hora actuales)
$POS_ACT (posicin actual del robot)
$MODE_OP(modo de servicio actual)
...

4.3 Trabajar con tipos de datos simples

A continuacin se explica la creacin, la inicializacin y la modificacin de va-


riables. En este caso solo se utilizan los tipos de datos simples.
Tipos de datos simples con KRL
Nmeros enteros (INT)
Nmeros con coma flotante (REAL)
Valores lgicos (BOOL)
Carcter individual (CHAR)

4.3.1 Declaracin de variables

Principio de la Ejemplo de estructura del programa en el fichero SRC


declaracin de En la seccin de declaracin se deben declarar variables
variables
La seccin de inicializacin comienza con la primera asignacin de valor,
aunque a menudo con la lnea "INI"
En la seccin de instrucciones se asignan o se modifican valores
DEF main( )
: Seccin de declaraciones
...
; Seccin de inicializacin
INI
...
; Seccin de instrucciones
PTP HOME Vel=100% DEFAULT
...
END

Modificar la vista estndar


La visualizacin de la lnea DEF solo es posible como experto
El proceso es necesario para acceder a la seccin de declaracin en los
mdulos delante de la lnea "INI".
Para poder ver la lnea DEF y END, tambin es importante para la trans-
ferencia de variables a subprogramas

78 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


4 Variables y declaraciones

Planificar la declaracin de variables


Establecer la vida til
Determinar la validez/disponibilidad
Determinar el tipo de datos
Asignacin de nombre y declaracin

Procedimiento en Crear la variable en el fichero SRC


la declaracin de 1. Grupo de usuario Experto
variables con un 2. Dejar mostrar la lnea DEF
tipo de datos
3. Abrir el fichero SRC en el editor
simple
4. Realizar la declaracin de las variables
DEF MY_PROG ( )
DECL INT counter
DECL REAL price
DECL BOOL error
DECL CHAR symbol
INI
...
END

5. Cerrar el programa y guardar


Crear la variable en el fichero DAT
1. Grupo de usuario Experto
2. Abrir el fichero DAT en el editor
3. Realizar la declaracin de las variables
DEFDAT MY_PROG
EXTERNAL DECLARATIONS
DECL INT counter
DECL REAL price
DECL BOOL error
DECL CHAR symbol
...
ENDDAT

4. Cerrar la lista de datos y guardar


Crear variables en el fichero $CONFIG.DAT
1. Grupo de usuario Experto
2. Abrir en la carpeta SYSTEM el fichero $CONFIG.DAT en el editor
DEFDAT $CONFIG
BASISTECH GLOBALS
AUTOEXT GLOBALS
USER GLOBALS
ENDDAT

3. Seleccionar el Fold "USER GLOBALS" y abrir con la tecla de funcin pro-


gramable "Abrir/Cerrar Fold"
4. Realizar la declaracin de las variables
DEFDAT $CONFIG
...
;==================================
; Userdefined Types
;==================================
;==================================
; Userdefined Externals
;==================================

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 79 / 255


Programacin de robots 2

;==================================
; Userdefined Variables
;==================================
DECL INT counter
DECL REAL price
DECL BOOL error
DECL CHAR symbol
...
ENDDAT

5. Cerrar la lista de datos y guardar


Crear la variable global en el fichero DAT
1. Grupo de usuario Experto
2. Abrir el fichero DAT en el editor
3. Ampliar lista de datos en el encabezamiento del programa con la palabra
clave PUBLIC
DEFDAT MY_PROG PUBLIC

4. Realizar la declaracin de las variables


DEFDAT MY_PROG PUBLIC
EXTERNAL DECLARATIONS
DECL GLOBAL INT counter
DECL GLOBAL REAL price
DECL GLOBAL BOOL error
DECL GLOBAL CHAR symbol
...
ENDDAT

5. Cerrar la lista de datos y guardar

4.3.2 Inicializacin de variables con tipos de datos simples

Descripcin de la Despus de la declaracin, la variable solo tiene reservado un espacio de


inicializacin con memoria. Su valor siempre es un valor no vlido.
KRL En el archivo SRC se realiza la declaracin y la inicializacin siempre en
dos lneas separadas.
En el archivo DAT se realiza la declaracin y la inicializacin siempre en
una lnea.
Un constante solo puede estar declarada en una lista de datos y debe ser
inicializada inmediatamente.
La seccin de inicializacin comienza con la primera asignacin de valor.

Principio de la Inicializacin de nmeros enteros


inicializacin Inicializacin como nmero decimal
value = 58

Inicializacin como nmero binario


value = 'B111010'

Clculo: 1*32+1*16+1*8+0*4+1*2+0*1 = 58

Binario 25 24 23 22 21 20
Dec 32 16 8 4 2 1

Inicializacin hexadecimal

80 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


4 Variables y declaraciones

value = 'H3A'

Clculo: 3*16 +10 = 58

Hex 0 1 2 3 4 5 6 7 8 9 A B C D E F
Dec 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Procedimiento en Declaracin e inicializacin en el fichero SRC


la inicializacin 1. Abrir el fichero SRC en el editor
con KRL
2. La declaracin se ha realizado
3. Realizar la inicializacin
DEF MY_PROG ( )
DECL INT counter
DECL REAL price
DECL BOOL error
DECL CHAR symbol
INI
counter = 10
price = 0.0
error = FALSE
symbol = "X"
...
END

4. Cerrar el programa y guardar


Declaracin e inicializacin en el fichero DAT
1. Abrir el fichero DAT en el editor
2. La declaracin se ha realizado
3. Realizar la inicializacin
DEFDAT MY_PROG
EXTERNAL DECLARATIONS
DECL INT counter = 10
DECL REAL price = 0.0
DECL BOOL error = FALSE
DECL CHAR symbol = "X"
...
ENDDAT

4. Cerrar la lista de datos y guardar


Declaracin en el fichero DAT e inicializacin en el fichero SRC
1. Abrir el fichero DAT en el editor
2. Realizar la declaracin
DEFDAT MY_PROG
EXTERNAL DECLARATIONS
DECL INT counter
DECL REAL price
DECL BOOL error
DECL CHAR symbol
...
ENDDAT

3. Cerrar la lista de datos y guardar


4. Abrir el fichero SRC en el editor
5. Realizar la inicializacin

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 81 / 255


Programacin de robots 2

DEF MY_PROG ( )
...
INI
counter = 10
price = 0.0
error = FALSE
symbol = "X"
...
END

6. Cerrar el programa y guardar

Declaracin e Descripcin
inicializacin de Las constantes se crean con la palabra clave CONST.
una constante
Las constantes solo se pueden crear en listas de datos.
creacin de constantes
1. Abrir el fichero DAT en el editor.
2. Realizar la declaracin y la inicializacin.
DEFDAT MY_PROG
EXTERNAL DECLARATIONS
DECL CONST INT max_size = 99
DECL CONST REAL PI = 3.1415
...
ENDDAT

3. Cerrar la lista de datos y guardar.

4.3.3 Manipulacin de valores de variables de tipos de datos simples con KRL

Listado de las Los valores de las variables se modifican de diferentes maneras en las rutinas
posibilidades de programacin (fichero SRC) en funcin de la tarea. A continuacin se co-
para la modifi- mentarn los mtodos ms comunes. La manipulacin mediante operaciones
de bit y funciones estndar es posible, pero aqu no se profundizar en ello.
cacin de valores
de variables con Manipulacin de datos por medio de
KRL Tipos de clculo bsicos
(+) Suma
(-) Resta
(*) Multiplicacin
(/) Divisin
Operaciones de comparacin
(==) idntico / igualdad
(<>) desigual
(>) mayor que
(<) menor que
(>=) mayor o igual que
(<=) menor o igual que
Operaciones lgicas
(NOT) Inversin
(AND) Y lgico
(OR) O lgico
(EXOR) O excluyente
Operaciones de bit
(B_NOT) Inversin por bits

82 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


4 Variables y declaraciones

(B_AND) Combinacin de Y por bits


(B_OR) Combinacin de O por bits
(B_EXOR) Combinacin de O excluyente por bits
Funciones estndar
Funcin absoluta
Funcin raz
Funcin de seno y coseno
Funcin de tangente
Funcin de arcocoseno
Funcin de arcotangente
Varias funciones para la manipulacin de cadenas

Relaciones en la Modificacin de valores con la utilizacin del tipo de datos REAL y INT
manipulacin de Redondear hacia arriba/hacia abajo
datos
; Declaracin
DECL INT A,B,C
DECL REAL R,S,T
; Inicializacin
A = 3 ; A=3
B = 5.5 ; B=6 (a partir de x.5 se redondea a la alza)
C = 2.25 ; C=2 (redondear a la baja)
R = 4 ; R=4.0
S = 6.5 ; S=6.5
T = C ; T=2.0 (se utiliza el valor redondeado a la baja)

Resultados de operaciones aritmticas (+;-;*)

Operandos INT REAL


INT INT REAL
REAL REAL REAL

; Declaracin
DECL INT D,E
DECL REAL U,V
; Inicializacin
D = 2
E = 5
U = 0.5
V = 10.6
; Seccin de instrucciones (manipulacin de datos)
D = D*E ; D = 2 * 5 = 10
E = E+V ; E= 5 + 10.6 = 15.6 -> Redondear a la alza E=16
U = U*V ; U= 0.5 * 10.6 = 5.3
V = E+V ; V= 16 + 10.6 = 26.6

Resultados de operaciones aritmticas (/)


Particularidades en las operaciones aritmticas con valores enteros:
En caso de resultados intermedios de operaciones enteras puras, se
eliminarn todas las posiciones decimales.
En la asignacin de valor a una variable entera, el resultado se redon-
dear de acuerdo con las reglas normales de clculo.
; Declaracin
DECL INT F

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 83 / 255


Programacin de robots 2

DECL REAL W
; Inicializacin
F = 10
W = 10.0
; Seccin de instrucciones (manipulacin de datos)
; INT / INT -> INT
F = F/2 ; F=5
F = 10/4 ; F=2 (10/4 = 2.5 -> Cortar posicin decimal)
; REAL / INT -> REAL
F = W/4 ; F=3 (10.0/4=2.5 -> Redondear a la alza)
W = W/4 ; W=2.5

Operaciones de comparacin
Con las operaciones de comparacin se pueden formar expresiones lgicas.
El resultado de una comparacin siempre es del tipo de datos BOOL.

Operador /
Descripcin Tipos de datos admisibles
KRL
== idntico/igual- INT, REAL, CHAR, BOOL
dad
<> desigual INT, REAL, CHAR, BOOL
> mayor que INT, REAL, CHAR
< menor que INT, REAL, CHAR
>= mayor o igual INT, REAL, CHAR
que
<= menor o igual INT, REAL, CHAR
que

; Declaracin
DECL BOOL G,H
; Inicializacin/seccin de instrucciones
G = 10>10.1 ; G=FALSE
H = 10/3 == 3 ; H=TRUE
G = G<>H ; G=TRUE

Operaciones lgicas
Con las operaciones lgicas se pueden formar expresiones lgicas. El resul-
tado de una operacin de este tipo siempre es del tipo de datos BOOL.

A EXOR
Operaciones NOT A A AND B A OR B
B
A=FALSE B=FALSE TRUE FALSE FALSE FALSE
A=FALSE B=TRUE TRUE FALSE TRUE TRUE
A=TRUE B=FALSE FALSE FALSE TRUE TRUE
A=TRUE B=TRUE FALSE TRUE TRUE FALSE

; Declaracin
DECL BOOL K,L,M
; Inicializacin/seccin de instrucciones
K = TRUE
L = NOT K ; L=FALSE

84 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


4 Variables y declaraciones

M = (K AND L) OR (K EXOR L) ; M=TRUE


L = NOT (NOT K) ; L=TRUE

Los operadores se ejecutan en el orden de su prioridad

Prioridad Operador
1 NOT (B_NOT)
2 Multiplicacin (*); divisin (/)
3 Suma (+), resta (-)
4 AND (B_AND)
5 EXOR (B_EXOR)
6 OR (B_OR)
7 cualquier comparacin (==; <>; ...)

; Declaracin
DECL BOOL X, Y
DECL INT Z
; Inicializacin/seccin de instrucciones
X = TRUE
Z = 4
Y = (4*Z+16 <> 32) AND X ; Y=FALSE

Procedimiento 1. Especificar el tipo de datos para la variable o variables


para la manipu- 2. Determinar la validez y la vida til de las variables
lacin de datos 3. Realizar la declaracin de variables
4. Inicializar la variable
5. Manipular la variable en las rutinas de programacin, es decir, siempre en
el fichero *.SRC
6. Guardar y cerrar el fichero *.SRC

Instruccin HALT HALT se usa, sobre todo, para realizar pruebas en la fase de programacin,
por ejemplo, para visualizar el contenido de una variable en tiempo de ejecu-
cin.
La instruccin HALT detiene el programa. La ltima instruccin de movi-
miento lanzada se ejecuta por completo.
El programa puede continuarse exclusivamente con la tecla de arranque.
A continuacin se ejecutar la siguiente instruccin despus de HALT.

En un programa de interrupcin el programa no se detiene hasta que


se haya ejecutado por completo el procesamiento.

Ejemplo:
DEF program()
DECL BOOL a,b
INI
...
SPTP XP1
a=$IN[1]
b=$IN[2]
HALT
IF ((a == TRUE) AND (b == FALSE)) THEN
..
ENDIF
...

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 85 / 255


Programacin de robots 2

4.4 Visualizar variables

Mostrar y 1. Seleccionar en el men principal Visualizacin > Variable > Individual.


modificar el valor Se abre la ventana Visualizacin de variable individual.
de una variable 2. Introducir el nombre de la variable en el campo Nombre.
3. Cuando un programa est seleccionado, el programa se incluye autom-
ticamente en el campo Mdulo.
Si debe mostrarse una variable de otro programa, introducir el programa
como sigue:
/R1/Nombre de programa
No indicar ninguna carpeta entre /R1/ y el nombre del programa. No indi-
car ninguna extensin de fichero al nombrar el programa.
4. Pulsar la tecla Enter.
En el campo Valor actual se visualiza el valor actual de la variable. Si no
se indica nada, entonces significa que todava no se ha asignado ningn
valor a la variable.
5. Introducir el valor que se desee en el campo Valor nuevo.
6. Pulsar la tecla Enter.
En el campo Valor actual aparece el nuevo valor.

Fig. 4-2: Ventana Visualizacin de variable individual

Pos. Descripcin
1 Nombre de la variable que debe modificarse.
2 Nuevo valor que se debe asignar a la variable.
3 Programa en el cual se busca la variable.
En las variables del sistema el campo Mdulo no es relevante.
4 Este campo tiene dos estados:

: el valor mostrado no se actualiza de forma automtica.

: el valor mostrado se actualiza de forma automtica.


Para alternar entre los diferentes estados:
Pulsar Actualizar.
Alternativa: Shift + Enter

Visualizacin de Procedimiento para visualizar marcas, contadores y temporizadores:


informaciones del Seleccionar en el men principal la secuencia Visualizacin > Variable.
sistema

86 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


4 Variables y declaraciones

Se pueden seleccionar diferentes variables del sistema:


Marcas cclicas
Marcas
Contador
Temporizador
Procedimiento para visualizar entradas y salidas:
Seleccionar en el men principal la secuencia Visualizacin > Entradas/
salidas > Entradas digitales o Salidas digitales.

4.5 Grupos / campos con KRL

Descripcin de Los campos, o tambin denominados grupos, ofrecen espacio de almacena-


campos con KRL miento para varias variables del mismo tipo de datos, que se diferencian me-
diante un ndice
El espacio de almacenamiento de los campos es finito, es decir, el tamao
mximo del campo depende de las necesidades de almacenamiento del
tipo de datos
Durante la declaracin se debern conocer el tamao de campo y el tipo
de datos
El ndice de inicio en KRL comienza siempre con 1
La inicializacin siempre se puede realizar individualmente
Una inicializacin en el fichero SRC tambin se puede realizar mediante
un bucle
Dimensiones del campo
Campo de 1 dimensiones
dimension[4]= TRUE

Campo de 2 dimensiones
dimension[2,1]= 3.25

Campo de 3 dimensiones
dimension[3,4,1]= 21

El campo de 4 dimensiones o superior no es compatible en KRL

Relaciones en la La vida til y la validez de las variables de campo es la misma que en la utili-
utilizacin de zacin de variables de tipo de datos simple
campos .
Declaracin de campo
Creacin en el fichero SRC
DEF MY_PROG ( )
DECL BOOL error[10]
DECL REAL value[50,2]
DECL INT parts[10,10,10]
INI
...
END

Creacin en la lista de datos (tambin $CONFIG.DAT)


DEFDAT MY_PROG
EXTERNAL DECLARATIONS
DECL BOOL error[10]
DECL REAL value[50,2]
DECL INT parts[10,10,10]

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 87 / 255


Programacin de robots 2

...
ENDDAT

Declarar el campo e inicializar en el fichero SRC


Cada campo por llamada de ndice individual

DECL BOOL error[10]


INI
error[1]=FALSE
error[2]=FALSE
error[3]=FALSE
error[3]=FALSE
error[4]=FALSE
error[5]=FALSE
error[6]=FALSE
error[7]=FALSE
error[8]=FALSE
error[9]=FALSE
error[10]=FALSE

Mediante bucles adecuados


DECL BOOL error[10]
DECL INT x
INI

FOR x = 1 TO 10
error[x]=FALSE
ENDFOR

Tras la finalizacin del bucle x tiene el valor 11

Inicializar el campo en la lista de datos


Cada campo por llamada de ndice individual e indicacin de espera pos-
terior en la lista de datos
DEFDAT MY_PROG
EXTERNAL DECLARATIONS
DECL BOOL error[10]
error[1]=FALSE
error[2]=FALSE
error[3]=FALSE
error[4]=FALSE
error[5]=FALSE
error[6]=FALSE
error[7]=FALSE
error[8]=FALSE
error[9]=FALSE
error[10]=FALSE

Declaracin no permitida e inicializacin en la lista de datos


DEFDAT MY_PROG
EXTERNAL DECLARATIONS
DECL BOOL error[10]
DECL INT size = 32
error[1]=FALSE
error[2]=FALSE
error[3]=FALSE
error[4]=FALSE

88 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


4 Variables y declaraciones

error[5]=FALSE
error[6]=FALSE
error[7]=FALSE
error[8]=FALSE
error[9]=FALSE
error[10]=FALSE

Genera diez mensajes de error "Paso de valor inicial no est en la


seccin inicial"

El campo completo podr visualizarse si se selecciona Indicacin >


Variable > nicos en el men principal y se introducen los nombres
de las variables entre corchetes y sin ndice (por ejemplo error[]) en
el campo Nombre

Declarar campos en la lista de datos e inicializar en el fichero SRC


Si un campo se crea de este modo en la lista de datos, los datos actuales
no se podrn consultar en la lista de datos; los valores actuales solo se
pueden comprobar a travs de la visualizacin de variables.
DEFDAT MY_PROG
EXTERNAL DECLARATIONS
DECL BOOL error[10]

DEF MY_PROG ( )
INI
error[1]=FALSE
error[2]=FALSE
error[3]=FALSE
...
error[10]=FALSE

o bien

DEF MY_PROG ( )
INI
FOR x = 1 TO 10
error[x]=FALSE
ENDFOR

Inicializacin mediante bucles


Campo de 1 dimensiones
DECL INT parts[15]
DECL INT x
FOR x = 1 TO 15
parts[x]= 4
ENDFOR

Campo de 2 dimensiones
DECL INT parts_table[10,5]
DECL INT x, y
FOR x = 1 TO 10
FOR y = 1 TO 5
parts_table[x, y]= 6
ENDFOR
ENDFOR

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 89 / 255


Programacin de robots 2

Campo de 3 dimensiones
DECL INT parts_palette[5,4,3]
DECL INT x, y, z
FOR x = 1 TO 5
FOR y = 1 TO 4
FOR z = 1 TO 3
parts_palette[x, y, z]= 12
ENDFOR
ENDFOR
ENDFOR

Procedimiento 1. Determinar el tipo de datos para el campo


para programar 2. Determinar la validez y la vida til del campo
los grupos 3. Ejecutar la declaracin del campo (SCR o DAT; en este caso SRC)
4. Inicializar los elementos del campo
5. Manipular el campo en las rutinas de programacin, es decir, siempre en
el fichero SRC
6. Cerrar el fichero SRC y guardar
DEF MY_PROG ( )
DECL REAL palette_size[10]
DECL INT counter
INI
; Inicializacin
FOR counter = 1 TO 10
palette_size[counter] = counter * 1.5
ENDFOR
...
; Cambiar el valor individualmente
palette_size[8] = 13
...
; Comparacin de valores
IF palette_size[3] > 4.2 THEN
...

90 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


4 Variables y declaraciones

4.6 Ejercicio: Campos con tipos de datos simples y bucle de conteo

Objetivo del Despus de completar correctamente este ejercicio, se dispondr de la com-


ejercicio petencia necesaria para efectuar las siguientes tareas:
Declarar, inicializar campos con tipos de datos simples
Procesar elementos de campo individuales
Trabajar con la indicacin de variables (configuracin/indicacin)

Requisitos Los siguientes requisitos son necesarios para completar este ejercicio correc-
tamente:
Conocimientos de tipos de datos simples
Conocimientos tericos sobre campos
Conocimientos tericos sobre el bucle FOR
Conocimientos tericos sobre la indicacin de variables

Formulacin de Ampliar de la siguiente manera los programas creados:


tarea Crear un campo de una dimensin con el tamao 12. El contenido de los
campos debe ser la letra "O" o "X".
Antes del inicio del proceso, todos los campos deben estar ocupados con
"O".
Tras el depsito del 1 cubo, el 1 cubo deber recibir la letra "X". Para el
depsito posterior se deber proceder del mismo modo.
Comprobar el ndice de campo actual y el contenido del campo.

Fig. 4-3

Determinar dnde se declaran las variables.


Ampliar el plan de ejecucin del programa existente con este campo.
Crear un grupo nuevo para la indicacin de las variables de campo nece-
sarias.
Comprobar el programa en los modos de servicio T1, T2 y Automtico. Se
deben tener en cuenta las prescripciones de seguridad enseadas.
Lo que se debe saber tras el ejercicio:
1. Dnde se dimensiona el tamao de un campo?

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 91 / 255


Programacin de robots 2

.............................................................
.............................................................
2. Qu diferencia la declaracin de un campo en el fichero SRC y en el fiche-
ro DAT?
.............................................................
.............................................................
3. Qu mensaje de error aparece si se sobrepasa el ndice de campo?
.............................................................
.............................................................
4. Declarar un campo de 3 dimensiones con el nombre de Precio del armario.
El precio del armario se calcula de los componentes longitud, anchura y pro-
fundidad. El surtido comprende 5 longitudes diferentes, 3 anchuras diferen-
tes y 2 profundidades diferentes?
.............................................................
.............................................................
5. Cmo puede visualizarse por completo el campo superior Precio del ar-
mario?
.............................................................
.............................................................

92 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


4 Variables y declaraciones

4.7 Crear estructuras con KRL

Variables con
varias informa-
ciones indivi-
duales

Fig. 4-4

Tipo de datos combinado: Estructura


Con los campos se pueden combinar variables del mismo tipo de datos.
En el mundo real, muchas veces tambin existen variables de tipos de da-
tos diferentes.
As, un coche tiene una potencia de motor o un nmero de kilmetros de
tipo Integer (entero). Para el precio se ofrece el tipo Real. Por el contrario,
la existencia de una instalacin de aire acondicionado es ms bien del tipo
de datos Bool.
Todo junto describe un coche.
Una estructura se puede definir por s misma con la palabra clave STRUC.
Una estructura es un conjunto de diferentes tipos de datos.
STRUC CAR_TYPE INT motor, REAL price, BOOL air_condition

Una estructura debe estar definida previamente para que se pueda seguir
utilizando posteriormente.

Utilizacin de una Disponibilidad/definicin de una estructura


estructura Las estructuras creadas localmente no son vlidas al alcanzar la lnea
END
Las estructuras que se utilicen en varios programas deben declararse en
el fichero $CONFIG.DAT
Las estructuras autodefinidas debern terminar con TYPE para una mejor
visibilidad
En una estructura se pueden utilizar los tipos de datos simples INT, REAL,
BOOL y CHAR.
STRUC CAR_TYPE INT motor, REAL price, BOOL air_condition

En una estructura se pueden integrar campos CHAR.


STRUC CAR_TYPE INT motor, REAL price, BOOL air_condition, CHAR
car_model[15]

En una estructura se pueden utilizar tambin estructuras conocidas, como


una posicin POS.
STRUC CAR_TYPE INT motor, REAL price, BOOL air_condition, POS car_pos

Despus de la definicin de la estructura se debe declarar una variable de


trabajo.
STRUC CAR_TYPE INT motor, REAL price, BOOL air_condition
DECL CAR_TYPE my_car

Inicializacin /modificacin de una estructura


La inicializacin se puede realizar mediante parntesis.
Durante la inicializacin mediante parntesis solo se pueden utilizar cons-
tantes (valores fijos).

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 93 / 255


Programacin de robots 2

El orden de la asignacin de valores no se debe tener en cuenta.


my_car = {motor 50, price 14999.95, air_condition TRUE}

my_car = {price 14999.95, motor 50, air_condition TRUE}

En una estructura no se deben indicar todos los elementos de la estructu-


ra.
Una estructura se inicializa con un elemento de la estructura.
Los valores no inicializados son, o se ajustan como, desconocidos.
my_car = {motor 75} ; valor desconocido para precio y aire
acondicionado

La inicializacin tambin se puede realizar mediante el separador de pun-


tos.
my_car.price = 9999.0

Un elemento de la estructura se puede modificar individualmente en cual-


quier momento mediante el separador de puntos. En este caso no se bo-
rran ni modifican el resto de elementos de la estructura.
my_car = {price 14999.95, motor 50, air_condition TRUE}
my_car.price = 12000.0 ; valor mantenido para motor y aire
acondicionado

No obstante:
my_car = {price 14999.95, motor 50, air_condition TRUE}
my_car = {price 12000.0} ; se borra el valor para motor y aire
acondicionado

KUKA trabaja mucho con las estructuras predefinidas que se encuentran


guardadas en el sistema. Se pueden encontrar ejemplos en las posiciones y
la programacin de mensajes.

Estructuras predefinidas de KUKA a partir del sector de las posiciones


AXIS: STRUC AXIS REAL A1, A2, A3, A4, A5, A6
E6AXIS: STRUC E6AXIS REAL A1, A2, A3, A4, A5, A6, E1, E2, E3, E4,
E5, E6
FRAME: STRUC FRAME REAL X, Y, Z, A, B, C
POS: STRUC POS REAL X, Y, Z, A, B, C INT S,T
E6POS: STRUC E6POS REAL X, Y, Z, A, B, C, E1, E2, E3, E4, E5, E6
INT S,T
Inicializacin de una estructura con una posicin
En la inicializacin mediante parntesis solo se pueden utilizar constantes
(valores fijos)
STRUC CAR_TYPE INT motor, REAL price, BOOL air_condition, POS car_pos
DECL CAR_TYPE my_car
my_car = {price 14999.95, motor 50, air_condition TRUE, car_pos {X
1000, Y 500, A 0}}

La inicializacin tambin se puede realizar mediante el separador de pun-


tos
my_car.price = 14999.95
my_car.motor = 50
my_car.air_condition = TRUE
my_car.car_pos = {X 1000, Y 500, A 0}

En la inicializacin mediante el separador de puntos tambin se puede in-


sertar variables

94 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


4 Variables y declaraciones

my_car.price = my_price*0.85
my_car.car_pos.X = x_value
my_car.car_pos.Y = 750+y_value

Creacin de una 1. Definicin de la estructura


estructura STRUC CAR_TYPE INT motor, REAL price, BOOL air_condition

2. Declaracin de las variables de trabajo


DECL CAR_TYPE my_car

3. Inicializacin de las variables de trabajo


my_car = {motor 50, price 14999.95, air_condition TRUE}

4. Modificacin de los valores y/o comparacin de valores de las variables


de trabajo
my_car.price = 5000.0

my_car.price = value_car

IF my_car.price >= 20000.0 THEN


...
ENDIF

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 95 / 255


Programacin de robots 2

4.8 Ejercicio: Crear estructuras con KRL

Objetivo del Despus de completar correctamente este ejercicio, se dispondr de la com-


ejercicio petencia necesaria para efectuar las siguientes tareas:
Creacin de estructuras propias (declaracin, inicializacin)
Trabajar con el separador de puntos

Requisitos Los siguientes requisitos son necesarios para completar este ejercicio correc-
tamente:
Conocimientos tericos sobre tipos de datos y estructuras simples

Formulacin de Crear un programa con el nombre de estructura.


tarea Generar una estructura con el nombre BOX_Tipo. En esta estructura se
deben poder incluir los siguientes valores caractersticos:
Longitud
Anchura
Altura
Estado de la pintura (s/no)
Nmero de botellas
Asignar a la variable CAJA la estructura BOX_Tipo e inicializar con los si-
guientes valores de inicio:
Longitud 25,2
Anchura 18,5
Altura 0,5
Contenido: 4 botellas
No pintada
En la primera operacin de procesamiento se incluyen 8 botellas ms. En
el 2 paso la CAJA an se pinta. Entre el paso uno y dos se debe planificar
un tiempo de espera de 3 segundos.
Solicitar que se muestre el contenido de la variable CAJA durante el pro-
ceso.
Determinar dnde se declaran las variables.
Ampliar el plan de ejecucin del programa existente con esta estructura.
Crear un grupo nuevo para la indicacin de las variables de campo nece-
sarias.
Comprobar el programa en los modos de servicio T1, T2 y Automtico. Se
deben tener en cuenta las prescripciones de seguridad enseadas.
Lo que se debe saber tras el ejercicio:
1. Qu es una estructura?
.............................................................
.............................................................
2. Qu estructuras predefinidas de KUKA existen?
.............................................................
.............................................................
3. Cul es la diferencia entre una estructura POS y una estructura E6POS?
.............................................................
.............................................................
4. Nombrar una estructura FRAME conocida.
.............................................................

96 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


4 Variables y declaraciones

............................................................
5. Para qu se necesita el separador de puntos?
............................................................
............................................................

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 97 / 255


Programacin de robots 2

4.9 El tipo de datos de enumeracin ENUM

Forma de texto
como valor de
variable

Fig. 4-5

El tipo de datos de enumeracin se compone de una cantidad limitada de


constantes, como verde, amarillo o azul
ENUM COLOR_TYPE green, blue, red, yellow

Las constantes son nombres libremente seleccionables


Las constantes se determinan por programadores
Un tipo de enumeracin debe estar definido previamente, y posteriormen-
te se puede seguir utilizando
Una variable de trabajo, como color de la caja, del tipo COLOR_TYPE solo
puede aceptar siempre un valor de una constante
La asignacin de valor de una constante se realiza siempre con el smbolo
#

Utilizacin de un Disponibilidad / utilizacin


tipo de datos de Solo se pueden utilizar constantes conocidas
enumeracin
Finalmente puede ampliarse un tipo de enumeracin (ms de 250 cons-
tantes y ms de 2000 caracteres)
Un tipo de enumeracin se puede utilizar individualmente
ENUM COLOR_TYPE green, blue, red, yellow

Un tipo de enumeracin se puede integrar en una estructura


ENUM COLOR_TYPE green, blue, red, yellow
STRUC CAR_TYPE INT motor, REAL price, COLOR_TYPE car_color

Los tipos de datos de enumeracin que se utilicen en varios programas


deben declararse en el fichero $CONFIG.DAT
Los tipos de enumeracin autodefinidos debern terminar con TYPE para
una mejor visibilidad

Creacin de un 1. Definicin de las variables de las variables de enumeracin y las constan-


tipo de datos de tes
enumeracin ENUM LAND_TYPE de, be, cn, fr, es, br, us, ch

2. Declaracin de las variables de trabajo


DECL LAND_TYPE my_land

3. Inicializacin de las variables de trabajo


my_land = #be

4. Comparacin de valores de las variables de trabajo

98 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


4 Variables y declaraciones

IF my_land == #es THEN


...
ENDIF

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 99 / 255


Programacin de robots 2

4.10 Ejercicio: Crear un tipo de enumeracin con KRL

Objetivo del Despus de completar correctamente este ejercicio, se dispondr de la com-


ejercicio petencia necesaria para efectuar las siguientes tareas:
Crear una variable ENUM propia (declaracin)
Trabajar con variables ENUM

Requisitos Los siguientes requisitos son necesarios para completar este ejercicio correc-
tamente:
Conocimientos tericos sobre tipos de datos y estructuras simples
Conocimientos tericos sobre variables ENUM sencillas

Formulacin de Ampliar la estructura del programa con lo siguiente:


tarea 1. Generar una variable ENUM cuyo contenido incluya los colores rojo, ama-
rillo, verde y azul.
2. Crear una variable de lmpara para asignarle el color azul.
3. En el segundo paso, asignar a la lmpara el color amarillo.
4. Ampliar la estructura BOX_Tipo con la unidad de color y asignar a la CAJA
en primer lugar el color rojo, despus el amarillo y finalmente el verde.
5. Solicitar que se muestre el contenido de la variable CAJA durante el pro-
ceso.
Lo que se debe saber tras el ejercicio:
1. Quin determina el nmero y el nombre de las constantes en el tipo de
enumeracin ENUM?
.............................................................
.............................................................
2. Cundo se utiliza el smbolo "#"?
.............................................................
.............................................................
3. Qu es incorrecto en la siguiente generacin?
ENUM Da_tipo lu, ma, mi, ju, vi, s, do
.............................................................
.............................................................

100 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


5 Subprogramas y funciones

5 Subprogramas y funciones

5.1 Resumen

s
Esta unidad incluye los siguientes contenidos:
Subprogramas locales
Subprogramas globales
Transferencia de parmetros a un subprograma
Programacin de funciones

5.2 Trabajo con subprogramas locales

Definicin de Los subprogramas locales se encuentran despus del programa principal


subprogramas y estn identificados con DEF nombre_subprograma( ) y END
locales DEF MY_PROG( )
; esto es el programa principal
...
END
_______________________________________
DEF LOCAL_PROG1( )
; Esto es el subprograma local 1
...
END
_______________________________________
DEF LOCAL_PROG2( )
; Esto es el subprograma local 2
...
END
_______________________________________
DEF LOCAL_PROG3( )
; Esto es el subprograma local 3
...
END

Un fichero SRC puede componerse de hasta 255 subprogramas locales


Los subprogramas locales se pueden llamar varias veces
Adems del nombre del programa es necesario el parntesis

Relaciones Tras la ejecucin de un subprograma local tiene lugar un retroceso a la


durante el trabajo siguientes instruccin despus de la llamada del subprograma
con subpro- DEF MY_PROG( )
gramas locales ; esto es el programa principal
...
LOCAL_PROG1( )
...
END
_______________________________________
DEF LOCAL_PROG1( )
...
LOCAL_PROG2( )
...
END
_______________________________________
DEF LOCAL_PROG2( )
...
END

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 101 / 255


Programacin de robots 2

Pueden estar encajados como mximo 20 subprogramas


Las coordenadas de puntos se guardan en la correspondiente lista DAT y
estn disponibles para el programa completo (*.src)
DEF MY_PROG( )
; esto es el programa principal
...
SPTP P1 Vel=100% PDAT1
...
END
_______________________________________
DEF LOCAL_PROG1( )
...
; Esta es la misma posicin que en el programa principal
SPTP P1 Vel=100% PDAT1
...
END

DEFDAT MY_PROG
...
DECL E6POS XP1={X 100, Y 200, Z 300 ... E6 0.0}
...
ENDDAT

Mediante RETURN se puede finalizar un subprograma y provoca un retro-


ceso en el mdulo del programa abierto, en el ejemplo hacia
LOCAL_PROG1().
DEF MY_PROG( )
; esto es el programa principal
...
LOCAL_PROG1( )
...
END
_______________________________________
DEF LOCAL_PROG1( )
...
IF $IN[12]==FALSE THEN
RETURN ; Retroceso al programa principal
ENDIF
...
END

Procedimiento 1. Grupo de usuario Experto


para la creacin 2. Abrir el fichero SRC en el editor
de subpro- 3. Dejar mostrar la lnea DEF
gramas locales DEF MY_PROG( )
...
END

4. Pasar con el cursor debajo de la lnea END


5. Asignar un nuevo encabezamiento del programa local con DEF, nombre
del programa y parntesis
DEF MY_PROG( )
...
END
DEF PICK_PART( )

6. Finalizar un subprograma nuevo con una instruccin END

102 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


5 Subprogramas y funciones

DEF MY_PROG( )
...
END
DEF PICK_PART( )
END

7. Tras pulsar Return se inserta una barra trasversal entre el programa prin-
cipal y el subprograma
DEF MY_PROG( )
...
END
_______________________________________
DEF PICK_PART( )
END

8. El programa principal y el subprograma se pueden seguir procesando


ahora
9. Cerrar el programa y guardar

5.3 Trabajo con subprogramas globales

Definicin de Los subprogramas globales disponen de ficheros SRC y DAT indepen-


subprogramas dientes
globales DEF GLOBAL1( )
...
END

DEF GLOBAL2( )
...
END

Los subprogramas globales se pueden llamar varias veces

Relaciones Tras la ejecucin de un subprograma local tiene lugar un retroceso a la


durante el trabajo siguientes instruccin despus de la llamada del subprograma
con subpro- DEF GLOBAL1( )
gramas locales ...
GLOBAL2( )
...
END

DEF GLOBAL2( )
...
GLOBAL3( )
...
END

DEF GLOBAL3( )
...
END

Pueden estar encajados como mximo 20 subprogramas

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 103 / 255


Programacin de robots 2

Las coordenadas de puntos se guardan en la lista DAT correspondiente y


solo estn disponibles para el programa correspondiente
DEF GLOBAL1( )
...
SPTP P1 Vel=100% PDAT1
END

DEFDAT GLOBAL1( )
DECL E6POS XP1={X 100, Z 200, Z 300 ... E6 0.0}
ENDDAT

Diferentes coordenadas para P1 en Global2 ( )


DEF GLOBAL2( )
...
SPTP P1 Vel=100% PDAT1
END

DEFDAT GLOBAL2( )
DECL E6POS XP1={X 800, Z 775, Z 999 ... E6 0.0}
ENDDAT

Mediante RETURN se puede finalizar un subprograma y provoca un retro-


ceso al mdulo del programa abierto; en el ejemplo, hacia GLOBAL2().
DEF GLOBAL1( )
...
GLOBAL2( )
...
END

DEF GLOBAL2( )
...
IF $IN[12]==FALSE THEN
RETURN ; Retroceso a GLOBAL1( )
ENDIF
...
END

Procedimiento 1. Grupo de usuario Experto


para la progra- 2. Crear un nuevo programa
macin con DEF MY_PROG( )
subprogramas ...
globales END

3. Crear el segundo programa de nuevo


DEF PICK_PART( )
...
END

4. Abrir el fichero SRC del programa MY_PROG en el editor


5. Programar la llamada del subprograma mediante el nombre del programa
y parntesis
DEF MY_PROG( )
...

104 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


5 Subprogramas y funciones

PICK_PART( )
...
END

6. Cerrar el programa y guardar

5.4 Transmitir parmetros a subprogramas

Descripcin de la Sintaxis
transferencia de DEF MY_PROG( )
parmetros ...
CALC (K, L)
...
END

DEF CALC(R:IN, S:OUT) ; Posibilidad de transmisin como IN/OUT-


Parmetro
...
END

La transferencia de parmetros se puede realizar tanto a subprogramas


locales como globales

Principio de la Transferencia de parmetros como parmetros IN (Call by value):


transferencia de el valor de la variable permanece invariable en el programa principal,
parmetros es decir, se contina trabajando con el valor anterior del programa
principal
el subprograma solo puede leer el valor de la variable, pero no puede
escribirlo
Transferencia de parmetros como parmetros OUT (Call by reference):
el valor de la variable se modifica en el programa principal, es decir,
se acepta la valencia del subprograma
el subprograma lee el valor, lo modifica y escribe el valor nuevo de
vuelta
Transferencia de parmetros a subprogramas locales
DEF MY_PROG( )
DECL REAL r,s
...
CALC_1(r)
...
CALC_2(s)
...
END
_______________________________________
DEF CALC_1(num1:IN)
; El valor "r" se transfiere a num1 exclusivamente para lectura
DECL REAL num1
...
END
_______________________________________
DEF CALC_2(num2:OUT)
; El valor "s" se transfiere, modificado y reescrito, a num2
DECL REAL num2
...
END

Transferencia de parmetros a subprogramas globales


DEF MY_PROG( )
DECL REAL r, s

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 105 / 255


Programacin de robots 2

...
CALC_1(r)
...
CALC_2(s)
...
END

DEF CALC_1(num1:IN)
; El valor "r" se transfiere a num1 exclusivamente para lectura
DECL REAL num1
...
END

DEF CALC_2(num2:OUT)
; El valor "s" se transfiere, modificado y reescrito, a num2
DECL REAL num2
...
END

La transferencia de valores a tipos de datos iguales siempre es posible


Transferencia de valores a otros tipos de datos:
DEF MY_PROG( )
DECL DATATYPE1 value
CALC(value)
END
_______________________________________
DEF CALC(num:IN)
DECL DATATYPE2 num
...
END

DATATYPE 1 DATATYPE 2 Observacin


BOOL INT, REAL, ERROR (... parmetro incompatible)
CHAR
INT REAL Valor INT se utiliza como valor REAL
INT CHAR Se utiliza el carcter de la tabla ASCII
CHAR INT Se utiliza el valor INT de la tabla ASCII
CHAR REAL Se utiliza el valor REAL de la tabla
ASCII
REAL INT Los valores REAL se redondean
REAL CHAR Los valores REAL se redondean, se uti-
liza el carcter de la tabla ASCII

Transferencia de varios parmetros


DEF MY_PROG( )
DECL REAL w
DECL INT a, b
...
CALC(w, b, a)
...
CALC(w, 30, a)
...
END
_______________________________________
DEF CALC(ww:OUT, bb:IN, aa:OUT)
;1.) w <-> ww, b -> bb, a <-> aa
;2.) w <-> ww, 30 -> bb, a <-> aa

106 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


5 Subprogramas y funciones

DECL REAL ww
DECL INT aa, bb
...
END

Tambin es posible no transmitir valores, en caso de que en el


subprograma tambin se calcule sin estos valores. Ejemplo: CALCU-
LA(s,, a)

Transferencia de parmetros con campos


Los campos solo se pueden transmitir completos a un campo nuevo
Los campos solo se pueden transmitir con el parmetro OUT (Call by
reference)
DEF MY_PROG( )
DECL CHAR name[10]
...
name[]="PETER"
calc(name[])
...
END
_______________________________________
DEF calc(my_name[]:OUT)
; Generar un campo en el subprograma siempre sin tamao de campo
; El tamao de campo se adapta al campo de salida
DECL CHAR my_name[]
...
END

Transferencia de campos completos: CAMPO_1D[] (1 dimensin),


CAMPO_2D[,] (2 dimensiones), CAMPO_3D[,,] (3 dimen-
siones)

Los elementos de campo individuales tambin se pueden transmitir


DEF MY_PROG( )
DECL CHAR name[10]
...
name[]="PETER"
CALC(name[1])
...
END
_______________________________________
DEF calc(symbol:IN)
; Se transfiere exclusivamente un carcter
DECL CHAR symbol
...
END

En la transferencia de elementos de campo individuales solo podr


existir una variable y ningn campo como destino. Aqu solo se trans-
mite la letra "P" al subprograma.

Procedimiento Consideraciones previas


para la transfe- 1. Determinar los parmetros que son necesarios en el subprograma
rencia de 2. Determinar el tipo de transferencia de parmetros (parmetros IN u OUT)
parmetros
3. Determinar los tipos de datos iniciales y de destino (lo ideal es el mismo
tipo de datos)
4. Determinar el orden de la transferencia de parmetros

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 107 / 255


Programacin de robots 2

A tener en cuenta: El primer parmetro enviado se escribe sobre el


primer parmetro en el subprograma, el segundo en el segundo pa-
rmetro en el subprograma, etc.

Procedimiento
1. Cargar un programa principal en el editor
2. Declarar, inicializar y posiblemente manipular variables en el programa
principal
3. Crear la llamada del subprograma con la transferencia de variables
4. Cerrar y guardar el programa principal
5. Cargar el subprograma en el editor
6. Completar la lnea DEF con variables y con IN/OUT
7. Declarar, inicializar y posiblemente manipular variables en el subprogra-
ma
8. Cerrar y guardar el subprograma
Ejemplo completo:

DEF MY_PROG( )
DECL REAL w
DECL INT a, b
w = 1.5
a = 3
b = 5
CALC(w, b, a)
; Valores actuales
; w = 3.8
; a = 13
; b = 5
END
_______________________________________
DEF CALC(ww:OUT, bb:IN, aa:OUT)
; w <-> ww, b -> bb, a <-> aa

DECL REAL ww
DECL INT aa, bb
ww = ww + 2.3 ; ww = 1.5 + 2.3 =3.8 ->w
bb = bb + 5 ; bb = 5 + 5 = 10
aa = bb + aa ; aa = 10 + 3= 13 -> a
END

108 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


5 Subprogramas y funciones

5.5 Ejercicio: Subprogramas con transferencia de parmetros

Objetivo del Despus de completar correctamente este ejercicio, se dispondr de la com-


ejercicio petencia necesaria para efectuar las siguientes tareas:
Tecnologa de subprogramas con transferencia de parmetros

Requisitos Los siguientes requisitos son necesarios para completar este ejercicio correc-
tamente:
Conocimientos de tecnologa de subprogramas
Conocimientos tericos sobre la transferencia de parmetros
Conocimientos tericos sobre funciones

Formulacin de Tarea: Completar los resultados una vez ejecutados los programas.
tarea
DEF transmit_var( )
INT A, B, C, D, E, F
A=50
B=48
C=200
D=300
E=8
F=5
Calc (C, D, A, F, B, E)

;A = ....... B = ....... C = .......

;D = ....... E = ....... F = .......


END
---------------------------------------------------------------------
-------------------------------
;Sub program
DEF Calc (X1:OUT, X2:IN, X3:OUT, X4:IN, X6:IN, X5:OUT)
INT X1, X2, X3, X4, X5, X6

; Calculation
X1 = X1 + 211 ; X1 =
X2 = X2 - 312 ; X2 =
X3 = X2 + X3 ; X3 =
X4 = X4 * X5 ; X4 =
X5 = X5 * 8 ; X5 =
X6 = X6 40 ; X6 =
END

Lo que se debe saber tras el ejercicio:


1. Cuntos subprogramas pueden estar encajados?
............................................................
............................................................
2. A qu fichero DAT accede un subprograma local?
............................................................
............................................................
3. Dnde se declara una variable que debe ser conocida en el subprograma
global y tambin en el programa principal?
............................................................
............................................................

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 109 / 255


Programacin de robots 2

4. Cul es la diferencia entre "parmetros IN" y "parmetros OUT" en la


transferencia de parmetros?
.............................................................
.............................................................

110 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


5 Subprogramas y funciones

5.6 Programacin de funciones

Definicin de Una funcin es un subprograma que enva de vuelta un valor determinado


funciones con al programa principal.
KRL A menudo son necesarios determinados valores de entrada para poder
calcular el valor de retorno.
En el encabezamiento de la funcin se determina el tipo de datos que se
reescriben en el programa principal.
El valor que se va a transmitir se transmite con la instruccin RE-
TURN(return_value).
Existen funciones locales y globales.
Sintaxis de una funcin:
DEFFCT DATATYPE NAME_FUNCTION( )
...
RETURN(return_value)
ENDFCT

Principio de las El nombre del programa es al mismo tiempo el nombre de variable de un


funciones con tipo de datos determinado
KRL Llamada de una funcin global
DEF MY_PROG( )
DECL REAL result, value
INI
...
result = CALC(value)
...
END

DEFFCT REAL CALC(num:IN)


DECL REAL return_value, num
...
RETURN(return_value)
ENDFCT

La instruccin RETURN(return_value) debe aplicarse antes de la


instruccin ENDFCT.

Llamada de una funcin local


DEF MY_PROG( )
DECL REAL result, value
INI
...
result = CALC(value)
...
END
_______________________________________
DEFFCT REAL CALC(num:IN)
DECL REAL return_value, num
...
RETURN(return_value)
ENDFCT

Utilizacin de parmetros IN/OUT en la transferencia de valores


Transferencia de valores como parmetro IN
DEF MY_PROG( )
DECL REAL result, value
INI

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 111 / 255


Programacin de robots 2

value = 2.0
result = CALC(value)
; value = 2.0
; result = 1000.0
END

DEFFCT REAL CALC(num:IN)


DECL REAL return_value, num
num = num + 8.0
return_value = num * 100.0
RETURN(return_value)
ENDFCT

El valor de transferencia value no se modifica.

Transferencia de valores como parmetro OUT


DEF MY_PROG( )
DECL REAL result, value
INI
value = 2.0
result = CALC(value)
; value = 10.0
; result = 1000.0
END

DEFFCT REAL CALC(num:OUT)


DECL REAL return_value, num
num = num + 8.0
return_value = num * 100.0
RETURN(return_value)
ENDFCT

El valor de transferencia value se reescribe modificado.

Procedimiento 1. Determinar el valor que debe suministrar la funcin (tipo de datos de re-
para la progra- torno)
macin de 2. Determinar los parmetros que son necesarios en la funcin (tipo de datos
funciones de transferencia)
3. Determinar el tipo de transferencia de parmetros (parmetros IN u OUT)
4. Determinar si es necesaria una funcin local o global
5. Cargar un programa principal en el editor
6. Declarar, inicializar y posiblemente manipular variables en el programa
principal
7. Crear la llamada de funcin
8. Cerrar y guardar el programa principal
9. Crear la funcin (global o local)
10. Cargar la funcin en el editor
11. Completar la lnea DEFFCT con el tipo de datos, las variables y con IN/
OUT
12. Declarar, inicializar y manipular variables en la funcin

112 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


5 Subprogramas y funciones

13. Crear la lnea RETRUN(return_value)


14. Cerrar y guardar la funcin

5.7 Trabajar con funciones estndar de KUKA

Listado de las Funciones matemticas:


funciones
Descripcin Funcin KRL
estndar de
KUKA Cantidad ABS(x)
Raz SQRT(x)
Seno SIN(x)
Coseno COS(x)
Tangente TAN(x)
Arcocoseno ACOS(x)
Arco tangente ATAN2(y,x)

Funciones para variables de cadena:

Descripcin Funcin KRL


Determinacin de la longitud de cadena en la StrDeclLen(x)
declaracin
Longitud de una variable de cadena tras de la StrLen(x)
inicializacin
Borrado del contenido de variables de cadena StrClear(x)
Ampliar la variable de cadena StrAdd(x,y)
Comparacin del contenido de variables de StrComp( x,y,z)
cadena
Copiar variable de cadena StrCopy(x,y)

Funciones para la emisin de mensaje:

Descripcin Funcin KRL


Transmitir mensaje Set_KrlMsg(a,b,c,d)
Transmitir dilogo Set_KrlDLg(a,b,c,d)
Comprobar mensaje Exists_KrlMsg(a)
Comprobar dilogo Exists_KrlDlg(a,b)
Borrar mensaje Clear_KrlMsg(a)
Lectura de la memoria intermedia de mensajes Get_MsgBuffer(a)

Principio para la Cada funcin estndar se llama con parmetros de transmisin:


utilizacin de con valor fijo
funciones
result = SQRT(16)
estndar de
KUKA variables de tipo de datos simple
result = SQRT(x)

variable compuesta de campos


result = StrClear(Name[])

variable compuesta de tipos de datos de enumeracin


variable compuesta de estructuras
con varias variables diferentes
result = Set_KrlMsg(#QUIT, message_parameter, parameter[], option)

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 113 / 255


Programacin de robots 2

message_parameter, parameter[1...3] y option son estructura pre-


definidas de KUKA

Cada funcin necesita una variable adecuada en la que se pueda guardar el


resultado de esta funcin:
Las funciones matemticas devuelven un valor REAL
Las funciones de cadena devuelven un valor BOOL o INT
; Borrar un string
result = StrClear(Name[])

Las funciones de mensaje devuelven un valor BOOL o INT


; Borrar un mensaje (BOOL: borrado?)
result = Clear_KrlMsg(Valor de retorno)

114 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


6 Programacin de un mensaje con KRL

6 Programacin de un mensaje con KRL

6.1 Resumen

Esta unidad incluye los siguientes contenidos:


Generalidades acerca de los mensajes definidos por el usuario
Variables y estructuras para mensajes definidos por el usuario
Funciones para mensajes definifos por el usuario
Trabajar con mensajes de observacin
Trabajar con mensajes de estado
Trabajar con mensajes de confirmacin
Trabajar con mensajes de espera
Variables y estructuras adicionales para dilogos
Funciones para dilogos
Trabajos con dilogos

6.2 Informacin general sobre los mensajes definidos por el usuario

Caractersticas de la programacin de mensajes


El programador puede programar mensajes propios con KRL.
Se pueden emitir varios mensajes simultneamente.
Los mensajes emitidos se encuentran en una memoria intermedia de
mensajes hasta que se vuelven a borrar.
Los mensajes de observacin no se administran en la memoria intermedia
de mensajes (principio "fire and forget" [disparar y olvidarse]).
Los mensajes se pueden comprobar o borrar fcilmente, salvo los mensa-
jes de observacin.
En cada mensaje se pueden integrar hasta 3 parmetros.
En la ventana del mensaje de KUKA.HMI se muestra un smbolo para cada
mensaje. Los smbolos estn asignados a los tipos de mensaje de forma es-
tricta y no pueden ser modificados por el programador.
Se pueden programar los siguientes tipos de mensajes:

Smbolo Tipo
Mensaje de acuse de recibo

Mensaje de estado

Mensaje de observacin

Mensaje de espera

Mensaje de dilogo (se muestra en una ventana emergente


propia)

No existen reacciones predefinidas del sistema de robot asociadas a


los distintos tipos de mensaje (p. ej. el robot frena o se detiene el pro-
grama). Es necesario programar las reacciones deseadas.

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 115 / 255


Programacin de robots 2

Variables complejas para programar mensajes


Estructura para remitente, nmero de mensaje, texto del mensaje
Estructura como marcador de posicin para 3 parmetros posibles
Estructura para el comportamiento general de un mensaje
Estructura para la rotulacin de los botones en mensajes de dilogo
Los mensajes se emiten, borran o comprueban mediante funciones estndar
predefinidas de KUKA. Para ello se necesitan distintas variables.
Funciones para programar mensajes
Emitir un mensaje
Comprobar un mensaje
Borrar un mensaje
Emitir un dilogo
Comprobar un dilogo

6.3 Variables y estructuras para mensajes definidos por el usuario

Estructura para
remitente,
nmero de
mensaje, texto
del mensaje

Estructura KUKA predefinida: KrlMsg_T


STRUC KrlMsg_T CHAR Modul[24], INT Nr, CHAR Msg_txt[80]

A partir del ejemplo


DECL KrlMsg_T mymessage
mymessage = {Modul[ ] "College", Nr 1906, Msg_txt[ ] "My first
Message"}

Remitente: Modul[ ]"College"


Modul[ ] puede incluir, como mximo, 24 caracteres.
El sistema integra el texto del remitente en la indicacin entre "< >".
Nmero de mensaje: N. 1906
N es un nmero entero libremente seleccionable.
Los nmeros duplicados seleccionados no se detectan.
Texto del mensaje: Msg_txt[ ] "My first Message"
Msg_txt[ ] puede incluir, como mximo, 80 caracteres.
En caso de que Msg_txt[ ] deba volver a inicializarse para un men-
saje subsiguiente, en primer lugar debe borrarse todo el contenido
"antiguo". (>>> "Principio para la utilizacin de funciones estndar de
KUKA" Pgina 113)
...
INT result
INI
...
result = StrClear(My_Message.Msg_txt[])
...

116 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


6 Programacin de un mensaje con KRL

Alternativa:
...
INT X
INI
FOR x=1 TO 80...
My_Message.Msg_txt[x] = " "
ENDFOR
...

El texto se muestra en la segunda lnea del mensaje.

Seleccionar el Tipo de datos de enumeracin EKrlMsgType


tipo de mensaje ENUM EKrlMsgType Notify, State, Quit, Waiting

#Quit: da salida a este mensaje como mensaje de confirmacin

#STATE: da salida a este mensaje como mensaje de estado

#NOTIFY: da salida a este mensaje como mensaje de observacin

#WAITING: da salida a este mensaje como mensaje de espera

Variables en el En el texto de un mensaje se debe mostrar el valor de una variable. Por ejem-
texto de mensaje plo, se debe mostrar la cantidad de piezas actual. Para ello, en el texto del
mensaje se necesitan los denominados marcadores de posicin. La cantidad
mxima de marcadores de posicin es 3. La visualizacin es %1, %2 y %3.
Por este motivo se necesitan 3 juegos de parmetros. Cada juego de parme-
tros est compuesto por la estructura KUKA KrlMsgPar_T:
Enum KrlMsgParType_T Value, Key, Empty
STRUC KrlMsgPar_T KrlMsgParType_T Par_Type, CHAR Par_txt[26], INT
Par_Int, REAL Par_Real, BOOL Par_Bool

Utilizacin de las unidades individuales


Par_Type: clase de parmetro/marcador de posicin
#VALUE: el parmetro se procesa directamente en la forma transferi-
da en el texto del mensaje (es decir, como String, valor INT, REAL o
BOOL)
#KEY: el parmetro es una palabra clave que se debe buscar en la
base de datos de mensajes para cargar el texto correspondiente
#EMPTY: el parmetro est en blanco
Par_txt[26]: el texto o la palabra clave para el parmetro.
Par_Int: se transmite un valor entero como parmetro
Par_Real: se transmite un valor real como parmetro
Par_Bool: se transmite un valor booleano como parmetro, se muestra
el texto TRUE o FALSE
Ejemplos de programa para la transmisin directa de parmetros al marcador
de posicin:
El texto del mensaje es Msg_txt[ ] "Avera en %1".
DECL KrlMsgPar_T Parameter[3] ; 3 Crear juegos de parmetros
...
Parameter[1] = {Par_Type #VALUE, Par_txt[ ] "Finisher"}
Parameter[2] = {Par_Type #EMPTY}
Parameter[3] = {Par_Type #EMPTY}
...

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 117 / 255


Programacin de robots 2

Salida de mensaje: Avera en el Finisher

Puesto que los parmetros no se suelen describir mediante constan-


tes, las unidades individuales se transmiten con el punto separador.

Ejemplos de programa para la transmisin de parmetros con separador de


puntos al marcador de posicin:
El texto del mensaje es Msg_txt[ ] "Faltan %1 componentes"
DECL KrlMsgPar_T Parameter[3] ; 3 Crear juegos de parmetros
DECL INT missing_part
...
missing_part = 13
...
Parameter[1] = {Par_Type #VALUE}
Parameter[1].Par_Int = missing_part
Parameter[2] = {Par_Type #EMPTY}
Parameter[3] = {Par_Type #EMPTY}
...

Salida de mensaje: faltan 13 componentes

Estructura para Cuando se emite un mensaje se transfieren otras 4 opciones de mensaje. Con
opciones de estas opciones se puede influir en el avance, el borrado de mensajes y intro-
mensaje duccin la base de datos Log.
generales Estructura KUKA predefinida: KrlMsgOpt_T
STRUC KrlMsgOpt_T BOOL VL_Stop, BOOL Clear_P_Reset, BOOL Clear_SAW,
BOOL Log_To_DB

VL_Stop: Parada del procesamiento en avance


TRUE desencadena una parada del procesamiento en avance. El
mensaje se establece de manera sincrnica con el puntero principal.
Por defecto: TRUE
Clear_P_Reset : borrar durante el reset/la seleccin del programa
TRUE borra todos los mensajes de estado, confirmacin y espera
cuando se cancela el programa o se restablece. Por defecto: TRUE
Por defecto: TRUE

Los mensajes de observacin slo se pueden borrar con los botones


OK o Todo OK.

Clear_P_SAW: borrar durane la seleccin de lnea mediante el botn Se-


leccin de lnea.
TRUE borra todos los mensajes de estado, confirmacin y espera
cuando se selecciona una lnea mediante el men correspondiente.
Por defecto: FALSE
Log_To_DB: Entrada en la base de datos Log.
TRUE hace que este mensaje se registre en la base de datos Log.
Por defecto: FALSE

118 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


6 Programacin de un mensaje con KRL

6.4 Funciones para mensajes definifos por el usuario

Definicin o Con esta funcin se define un mensaje en el programa KRL. Esto significa que
emisin de un el mensaje correspondiente se procesa en la memoria intermedia de mensa-
mensaje jes interna. Excepcin: los mensajes de observacin, que no se administran
en la memoria intermedia de mensajes.
Funciones integradas para emitir un mensaje
DEFFCT INT Set_KrlMsg(Type:IN, MyMessage:OUT, Parameter[ ]:OUT,
Option:OUT)
DECL EKrlMsgType Type
DECL KrlMsg_T MyMessage
DECL KrlMsgPar_T Parameter[ ]
DECL KrlMsgOpt_T Option

Tipo: clase de mensaje (#Notify, #State, #Quit, #Waiting).


MyMessage: estructura para informacin general de mensaje (remitente,
nmero de mensaje, texto del mensaje)
Parameter[ ]: campo de los 3 parmetros posibles para los comodines
%1, %2 y 3%. Deben transmitirse siempre los 3 parmetros, incluso en
caso de que no se utilicen los comodines.
Opcin: Estructura de opciones de mensaje generales (parada del pro-
cesamiento, inicio de sesin en la base de datos de mensajes, mensaje
en caso de restablecimiento del programa o borrado implcito de seleccin
de lnea)
Valor de retorno de la funcin: se denomina "handle" (nmero de bille-
te). Con este "handle" es posible controlar si el mensaje se ha podido emi-
tir correctamente. Por lo dems, el "handle" es tambin el nmero de
identificacin en la memoria intermedia de mensajes. De este modo se
puede comprobar o borrar un mensaje determinado.
DEF MyProg( )
DECL INT handle
...
handle = Set_KrlMsg(Type, MyMessage, Parameter[ ], Option)

En caso de que se trabaje con varios mensajes, se debe utilizar o me-


morizar de manera intermedia un "handle" propio para cada mensaje.

handle == -1: no se ha podido emitir el mensaje (p. ej., porque la


memoria intermedia de mensajes est saturada).
handle > 0: El mensaje se ha emitido correctamente y se gestionar
en la memoria intermedia de mensajes con el nmero de identificacin
correspondiente.

Los mensajes de observacin se procesan de acuerdo con el princi-


pio "fire and forget" (dispare y olvdese). En el caso de los mensajes
de observacin, el retorno siempre es handle = 0 si el mensaje se
ha emitido correctamente.

Comprobacin de Con esta funcin se puede comprobar si un mensaje determinado con un han-
un mensaje dle definido existe todava. Tambin se comprueba si dicho mensaje se en-
cuentra an en la memoria intermedia de mensajes interna.
Funciones integradas para comprobar un mensaje
DEFFCT BOOL Exists_KrlMsg(nHandle:IN)
DECL INT nHandle

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 119 / 255


Programacin de robots 2

nHandle: el handle facilitado por la funcin "Set_KrlMsg()" para el


mensaje.
Valor de retorno de la funcin:
DEF MyProg( )
DECL INT handle
DECL BOOL present
...
handle = Set_KrlMsg(Type, MyMessage, Parameter[ ], Option)
...
present= Exists_KrlMsg(handle)

present == TRUE: este mensaje existe an en la memoria interme-


dia de mensajes.
present == FALSE: este mensaje ya no se encuentra en la memoria
intermedia de mensajes (por lo tanto, se ha confirmado o se ha borra-
do).

Borrado de un Con esta funcin se puede borrar un mensaje. Esto significa que el mensaje
mensaje correspondiente se borra de la memoria intermedia de mensajes interna.
Funciones integradas para comprobar un mensaje
DEFFCT BOOL Clear_KrlMsg(nHandle:IN)
DECL INT nHandle

nHandle: el handle facilitado por la funcin "Set_KrlMsg()" para el


mensaje.
Valor de retorno de la funcin:
DEF MyProg( )
DECL INT handle
DECL BOOL erase
...
handle = Set_KrlMsg(Type, MyMessage, Parameter[ ], Option)
...
eraser = Clear_KrlMsg(handle)

eraser == TRUE: se ha podido borrar este mensaje.


eraser == FALSE: no se ha podido borrar este mensaje.

Funciones especiales para borrar con la funcin


Clear_KrlMsg(handle):
Clear_KrlMsg(-1): se borran todos los mensajes iniciados por
este proceso.
Clear_KrlMsg(-99): se borran todos los mensajes iniciados por el
usuario KRL.

120 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


6 Programacin de un mensaje con KRL

6.5 Trabajos con un mensaje de observacin

Descripcin de
un mensaje de
observacin
definido por el
usuario

Fig. 6-1: Mensaje de observacin

Los mensajes de observacin no se administran en la memoria intermedia


de mensajes
Los mensajes de observacin slo se pueden borrar con los botones OK
o Todo OK.

Funcin de un Los mensajes de observacin son idneos para mostrar informacin ge-
mensaje de neral.
observacin Slo se puede emitir un mensaje de observacin. Se puede comprobar si
definido por el el mensaje se ha recibido correctamente.
usuario Puesto que los mensajes de observacin no se administran, se pueden
emitir 3 millones aproximadamente.

Programacin de 1. Cargar un programa principal en el editor


mensajes de 2. Declarar variables de trabajo para:
observacin Remitente, nmero de mensaje, texto del mensaje (de KrlMsg_T)
definidos por el Campos con 3 elementos para el parmetro (de KrlMsgPar_T)
usuario Opciones de mensaje generales (de KrlMsgOpt_T)
"Handle" (como INT)
3. Inicializar variables de trabajo con los valores deseados.
4. Programar la activacin de la funcin Set_KrlMsg().
5. En caso necesario, evaluar el "handle" para saber si la transmisin ha sido
satisfactoria.
6. Cerrar y guardar el programa principal.

Fig. 6-2: Mensaje de observacin

Ejemplo de programacin para visualizacin mencionada anteriormente:


DECL KRLMSG_T mymessage
DECL KRLMSGPAR_T Parameter[3]
DECL KRLMSGOPT_T Option
DECL INT handle
...
mymessage={modul[] "College", Nr 1906, msg_txt[] "My first Message"}
Option={VL_STOP FALSE, Clear_P_Reset TRUE, Clear_P_SAW FALSE,
Log_to_DB TRUE}
;Los comodines [1..3] estn vacos
Parameter[1] = {Par_Type #EMPTY}
Parameter[2] = {Par_Type #EMPTY}
Parameter[3] = {Par_Type #EMPTY}

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 121 / 255


Programacin de robots 2

handle = Set_KrlMsg(#NOTIFY, mymessage, Parameter[ ], Option)


...

122 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


6 Programacin de un mensaje con KRL

6.6 Ejercicio: Programar un mensaje de observacin

Objetivo del Despus de completar correctamente este ejercicio, se dispondr de la com-


ejercicio petencia necesaria para efectuar las siguientes tareas:
Programar mensajes de indicacin propios.
Dar salida en mensajes a los parmetros que se desee.

Requisitos Los siguientes requisitos son imprescindibles para superar el ejercicio con
xito:
Conocimientos del lenguaje de programacin KRL
Conocimientos tericos acerca de la programacin de mensajes

Formulacin de Tarea parcial 1: Mensaje de observacin


tarea 1. Crear un mensaje de observacin con el texto "Se ha iniciado el programa
Cargador".
2. En cuanto se haya iniciado el programa, solamente deber visualizarse
una vez el mensaje de observacin.
3. Comprobar el programa conforme a lo prescrito.
Tarea parcial 2: Mensaje de observacin con parmetros
1. Crear un mensaje de observacin con el texto "Cubo nmero xxx trans-
portado".
2. Ampliar el programa Cargador con un contador de piezas para los cubos
transportados. Tras la colocacin en el cargador de cubos, aumentar el
nmero de piezas y visualizar.
3. Comprobar el programa conforme a lo prescrito.
Lo que se debe saber tras el ejercicio:
1. Cmo se vuelve a borrar un mensaje de observacin?
............................................................
............................................................
2. Qu componente de la estructura del mensaje es responsable de "lanzar"
el texto del mensaje?
............................................................
............................................................

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 123 / 255


Programacin de robots 2

6.7 Trabajos con un mensaje de estado

Descripcin de
un mensaje de
estado definido
por el usuario

Fig. 6-3: Mensaje de estado

Los mensajes de estado se administran en la memoria intermedia de


mensajes.
Los mensajes de estado no se pueden volver a borrar con el botn "Todo
OK".

Funcin de un Los mensajes de estado son adecuados para indicar un cambio de estado
mensaje de (p. ej. la supresin de una entrada).
estado definido El programa persiste, por ejemplo, hasta que el estado desencadenante
por el usuario deja de darse.

No existen reacciones predefinidas del sistema de robot asociadas a


los distintos tipos de mensaje (p. ej. el robot frena o se detiene el pro-
grama). Es necesario programar las reacciones deseadas.

En la memoria intermedia de mensajes se administran 100 mensajes


como mximo. (Mensajes de estado, confirmacin, mantenimiento y di-
logos).
El mensaje de estado se vuelve a borrar mediante la funcin
Clear_KrlMsg( ).
Los mensajes de estado tambin se pueden borrar a travs de los ajustes
de las opciones de mensaje durante el reset del programa, al salir del pro-
grama o al seleccionar una lnea.

Programacin de 1. Cargar un programa principal en el editor


mensajes de 2. Declarar variables de trabajo para:
estado definidos Remitente, nmero de mensaje, texto del mensaje (de KrlMsg_T)
por el usuario Campos con 3 elementos para el parmetro (de KrlMsgPar_T)
Opciones de mensaje generales (de KrlMsgOpt_T)
"Handle" (como INT)
Variable para el resultado de la comprobacin (como BOOL)
Variable para el resultado del borrado (como BOOL)
3. Inicializar variables de trabajo con los valores deseados.
4. Programar la activacin de la funcin Set_KrlMsg().
5. Detener el programa con un bucle hasta que se desaparezca el estado
desencadenante.
6. Borrar el mensaje de estado con la activacin de la funcin
Clear_KrlMsg( ).
7. Cerrar y guardar el programa principal.

Fig. 6-4: Mensaje de estado

124 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


6 Programacin de un mensaje con KRL

Ejemplo de programacin para visualizacin/mensaje mencionados anterior-


mente:
El mensaje de estado se emite con el estado de la entrada 12 (FALSE). El pro-
grama se detiene tras la transmisin del mensaje. El mensaje se borra con el
estado de la entrada 17 (TRUE). Despus, el programa prosigue.
El mensaje tambin se borra con el reset del programa o al salir del mismo.
Para ello se utiliza el ajuste en las opciones de mensaje Clear_P_Reset
TRUE.
DECL KRLMSG_T mymessage
DECL KRLMSGPAR_T Parameter[3]
DECL KRLMSGOPT_T Option
DECL INT handle
DECL BOOL present, eraser
...
IF $IN[12]==FALSE THEN
mymessage={modul[] "College", Nr 1909, msg_txt[] "My Messagetext"}
Option= {VL_STOP FALSE, Clear_P_Reset TRUE, Clear_P_SAW FALSE,
Log_to_DB TRUE}
;Los comodines [1..3] estn vacos
Parameter[1] = {Par_Type #EMPTY}
Parameter[2] = {Par_Type #EMPTY}
Parameter[3] = {Par_Type #EMPTY}
handle = Set_KrlMsg(#STATE, mymessage, Parameter[ ], Option)
ENDIF
eraser=FALSE
;Bucle de parada hasta que se haya borrado este mensaje
REPEAT
IF $IN[12]==TRUE THEN
eraser=Clear_KrlMsg(handle) ;Borrar mensaje
ENDIF
present=Exists_KrlMsg(handle) ;Prueba adicional
UNTIL NOT(present) or eraser

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 125 / 255


Programacin de robots 2

6.8 Ejercicio: Programar un mensaje de estado

Objetivo del Despus de completar correctamente este ejercicio, se dispondr de la com-


ejercicio petencia necesaria para efectuar las siguientes tareas:
Programar mensajes de estado propios
Dar salida en mensajes a los parmetros que se desee.

Requisitos Los siguientes requisitos son imprescindibles para superar el ejercicio con
xito:
Conocimientos del lenguaje de programacin KRL
Conocimientos tericos acerca de la programacin de mensajes

Formulacin de Tarea parcial: Mensaje de estado


tarea 1. Crear un mensaje de estado con el texto "Programa de cubos en proce-
so".
2. Antes de iniciar el bucle infinito, deber visualizarse el mensaje de estado.
3. El bucle infinito debe abandonarse a travs de la entrada 16 del panel de
mando y, a continuacin, deber borrarse el mensaje de estado.
4. Compruebe su programa segn prescripcin.
Lo que se debe saber tras el ejercicio:
1. Qu significa %2 en el texto del mensaje?
.............................................................
.............................................................

126 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


6 Programacin de un mensaje con KRL

6.9 Trabajos con un mensaje de acuse de recibo

Descripcin de
un mensaje de
acuse de recibo
definido por el
usuario

Fig. 6-5: Mensaje de acuse de recibo

Los mensajes de acuse de recibo se administran en la memoria interme-


dia de mensajes.
Los mensajes de acuse de recibo solo se pueden volver a borrar con los
botones OK o Todo OK.

Funcin de un Los mensajes de acuse de recibo son idneos para mostrar informacin
mensaje de acuse que el usuario debe conocer.
de recibo definido El programa se detiene, por ejemplo, hasta que se confirme el mensaje.
por el usuario
No existen reacciones predefinidas del sistema de robot asociadas a
los distintos tipos de mensaje (p. ej. el robot frena o se detiene el pro-
grama). Es necesario programar las reacciones deseadas.

En la memoria intermedia de mensajes se administran 100 mensajes


como mximo.
En el caso del mensaje de acuse de recibo (a diferencia del mensaje de
observacin), se puede comprobar si el usuario lo ha confirmado o no.
Los mensajes de acuse de recibo se pueden volver a borrar tambin me-
diante una funcin en el programa.
Asimismo, los mensajes de acuse de recibo se pueden borrar mediante
los ajustes de las opciones de mensaje durante el reset del programa, al
salir del programa o al seleccionar un paso.

Programacin de 1. Cargar programa principal en el editor.


mensajes de 2. Declarar variables de trabajo para:
acuse de recibo Remitente, nmero de mensaje, texto del mensaje (de KrlMsg_T)
definidos por el Campos con 3 elementos para el parmetro (de KrlMsgPar_T)
usuario Opciones de mensaje generales (de KrlMsgOpt_T)
"Handle" (como INT)
Variable para el resultado de la comprobacin (como BOOL)
3. Iniciar variables de trabajo con los valores deseados.
4. Programar la activacin de la funcin Set_KrlMsg().
5. Comprobar la condicin de confirmacin en un bucle.
6. Activando la funcin Exists_KrlMsg(...), comprobar si el mensaje ya
ha sido confirmado por el usuario. Si se ha confirmado el mensaje, aban-
donar el bucle anterior.
7. Cerrar y guardar el programa principal.

Fig. 6-6: Mensaje de acuse de recibo

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 127 / 255


Programacin de robots 2

Ejemplo de programacin para visualizacin/mensaje mencionados anterior-


mente:
El programa se detiene tras la transmisin del mensaje. El mensaje se borra
accionando el botn OK o Todo OK . Despus, el programa prosigue.
El mensaje tambin se borra con el reset del programa o al salir del mismo.
Para ello se utiliza el ajuste en las opciones de mensaje Clear_P_Reset
TRUE.
DECL KRLMSG_T mymessage
DECL KRLMSGPAR_T Parameter[3]
DECL KRLMSGOPT_T Option
DECL INT handle
DECL BOOL present
...
mymessage={modul[] "College", Nr 1909, msg_txt[] "My Messagetext"}
Option= {VL_STOP FALSE, Clear_P_Reset TRUE, Clear_P_SAW FALSE,
Log_to_DB TRUE}
;Los comodines [1..3] estn vacos
Parameter[1] = {Par_Type #EMPTY}
Parameter[2] = {Par_Type #EMPTY}
Parameter[3] = {Par_Type #EMPTY}
handle = Set_KrlMsg(#QUIT, mymessage, Parameter[ ], Option)

;Bucle de parada hasta que se haya borrado este mensaje


REPEAT
present=Exists_KrlMsg(handle)
UNTIL NOT(present)

128 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


6 Programacin de un mensaje con KRL

6.10 Ejercicio: Programar mensajes de acuse de recibo

Objetivo del Despus de completar correctamente este ejercicio, se dispondr de la com-


ejercicio petencia necesaria para efectuar las siguientes tareas:
Programar mensajes de confirmacin propios.
Dar salida en mensajes a los parmetros que se desee.

Requisitos Los siguientes requisitos son imprescindibles para superar el ejercicio con
xito:
Conocimientos del lenguaje de programacin KRL
Conocimientos tericos acerca de la programacin de mensajes

Formulacin de Tarea parcial 1: Mensaje de confirmacin


tarea 1. Crear un mensaje de confirmacin con el texto "Se ha(n) transportado xxx
cubo(s)".
2. El contador de piezas ajustado debe provocar la visualizacin del mensaje
de confirmacin tras cada dcimo cubo.
3. Tras la confirmacin podr segurise con el procesamiento.
4. Compruebe su programa segn prescripcin.
Tarea parcial 2: Mensaje de estado con mensaje de confirmacin
1. Crear un mensaje de confirmacin con el texto "Finalizaacin del progra-
ma de cubos".
2. Una vez se ha abandonado el bucle infinito con la entrada 16, se borrar
el mensaje de estado "Programa de cubos en proceso". Visualizar el men-
saje de confirmacin y esperar hasta su confirmacin.
3. Compruebe su programa segn prescripcin.
Lo que se debe saber tras el ejercicio:
1. Cuntos mensajes de acuse de recibo se administran como mximo en la
memoria intermedia de mensajes?
............................................................
............................................................

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 129 / 255


Programacin de robots 2

6.11 Trabajos con un mensaje de espera

Descripcin de
un mensaje de
espera definido
por el usuario

Fig. 6-7: Mensaje de espera

Los mensajes de espera se administran en la memoria intermedia de


mensajes.
Los mensajes de espera se pueden volver a borrar con el botn Simular.
Los mensajes de espera no se pueden volver a borrar con el men Todo
OK.

Funcin de un Los mensajes de espera son adecuados para esperar a un estado y mos-
mensaje de trar el smbolo de espera.
espera definido El programa se detiene, por ejemplo, hasta que se vuelva a dar el estado
por el usuario esperado.
En la memoria intermedia de mensajes se administran 100 mensajes
como mximo.
El mensaje de espera se vuelve a borrar mediante la funcin
Clear_KrlMsg( ).
Los mensajes de espera tambin se pueden borrar mediante los ajustes
de las opciones de mensaje durante el reset del programa, al salir del pro-
grama o al seleccionar un paso.

Programacin de 1. Cargar programa principal en el editor.


mensajes de 2. Declarar variables de trabajo para:
espera definidos Remitente, nmero de mensaje, texto del mensaje (de KrlMsg_T)
por el usuario Campos con 3 elementos para el parmetro (de KrlMsgPar_T)
Opciones de mensaje generales (de KrlMsgOpt_T)
"Handle" (como INT)
Variable para el resultado de la comprobacin (como BOOL)
Variable para el resultado del borrado (como BOOL)
3. Iniciar variables de trabajo con los valores deseados.
4. Programar la activacin de la funcin Set_KrlMsg().
5. Detener el programa con un bucle hasta que se d el estado esperado o
hasta que se haya borrado el mensaje mediante el botn Simular.
6. Borrar el mensaje de espera con la activacin de la funcin
Clear_KrlMsg( ).
7. Cerrar y guardar el programa principal.

Fig. 6-8: Mensaje de espera

Ejemplo de programacin para visualizacin/mensaje mencionados anterior-


mente:

130 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


6 Programacin de un mensaje con KRL

El programa se detiene tras la transmisin del mensaje. El mensaje se borra


con el estado de la entrada 12 (TRUE). Despus, el programa prosigue.
El mensaje tambin se borra con el reset del programa o al salir del mismo.
Para ello se utiliza el ajuste en las opciones de mensaje Clear_P_Reset
TRUE.
DECL KRLMSG_T mymessage
DECL KRLMSGPAR_T Parameter[3]
DECL KRLMSGOPT_T Option
DECL INT handle
DECL BOOL present, eraser
...
IF $IN[12]==FALSE THEN
mymessage={modul[] "College", Nr 1909, msg_txt[] "My Messagetext"}
Option= {VL_STOP FALSE, Clear_P_Reset TRUE, Clear_P_SAW FALSE,
Log_to_DB TRUE}
;Los comodines [1..3] estn vacos
Parameter[1] = {Par_Type #EMPTY}
Parameter[2] = {Par_Type #EMPTY}
Parameter[3] = {Par_Type #EMPTY}
handle = Set_KrlMsg(#WAITING, mymessage, Parameter[ ], Option)
ENDIF
eraser=FALSE
;Bucle de parada hasta que se haya borrado este mensaje
REPEAT
IF $IN[12]==TRUE THEN
eraser=Clear_KrlMsg(handle) ;Meldung loeschen
ENDIF
present=Exists_KrlMsg(handle) ;kann ber simuliere geloescht worden
sein
UNTIL NOT(present) or eraser

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 131 / 255


Programacin de robots 2

6.12 Ejercicio: Programar mensajes de espera

Objetivo del Despus de completar correctamente este ejercicio, se dispondr de la com-


ejercicio petencia necesaria para efectuar las siguientes tareas:
Programar mensajes de espera propios
Dar salida en mensajes a los parmetros que se desee.

Requisitos Los siguientes requisitos son imprescindibles para superar el ejercicio con
xito:
Conocimientos del lenguaje de programacin KRL
Conocimientos tericos acerca de la programacin de mensajes

Formulacin de 1. Crear un mensajes de espera con el texto "Esperar al interruptor 15 o es-


tarea perar 5 segundos".
2. Al iniciarse el programa Cargador, deber emitirse el mensaje de espera.
Ampliar el programa Cargador conforme a la lgica del mensaje de espe-
ra.
3. Comprobar el programa conforme a lo prescrito.
Lo que se debe saber tras el ejercicio:
1. Cul es la diferencia entre un mensaje "STATE" y otro "WAITING"?
.............................................................
.............................................................

132 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


6 Programacin de un mensaje con KRL

6.13 Variables y estructuras adicionales para dilogos

Estructura para la
asignacin de
botones

Fig. 6-9: Dilogo

Estructura KUKA predefinida: KrlMsgDlgSK_T


Enum KrlMsgParType_T Value, Key, Empty
Struc KrlMsgDlgSK_T KrlMsgParType_T Sk_Type, Char SK_txt[10]

Sk_Type: Tipo de datos de enumeracin para el tipo de rotulacin de los


botones como ENUM
#VALUE: el parmetro se procesa directamente en la forma transferi-
da en el texto del mensaje.
#KEY: el parmetro es una palabra clave que se debe buscar en la
base de datos de mensajes para cargar el texto correspondiente.
#EMPTY: el botn no tiene asignacin.
Sk_txt[ ]: el campo para texto o palabra clave para el botn.
Ejemplo de programa para la rotulacin de 7 botones de un dilogo:
DECL KRLMSGDLGSK_T Softkey[7] ; 7 Preparar teclas de funcin
programable posibles
...
softkey[1]={sk_type #value, sk_txt[] "key1"}
softkey[2]={sk_type #value, sk_txt[] "key2"}
softkey[3]={sk_type #value, sk_txt[] "key3"}
softkey[4]={sk_type #value, sk_txt[] "key4"}
softkey[5]={sk_type #value, sk_txt[] "key5"}
softkey[6]={sk_type #value, sk_txt[] "key6"}
softkey[7]={sk_type #value, sk_txt[] "key7"}
...

Se pueden asignar como mximo 10 caracteres por botn. En fun-


cin de los caracteres utilizados, los botones pueden tener distinta
anchura.

6.14 Funciones para dilogos

Establecer un Con la funcin Set_KrlDlg( ) se emite un mensaje de dilogo. Esto signi-


dilogo fica que el mensaje se transfiere a la memoria intermedia de mensajes y se
muestra en una ventana de mensajes propia con botones.

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 133 / 255


Programacin de robots 2

Fig. 6-10: Dilogo

Funciones integradas para emitir un dilogo


DEFFCT Extfctp Int Set_KrlDlg (MyQuestion:OUT, Parameter[ ]:OUT,
Touchkey[ ]:OUT, Option:OUT)
DECL KrlMsg_T MyQuestion
DECL KrlMsgPar_T Parameter[ ]
DECL KrlMsgDlgSK_T Touchkey[ ]
DECL KrlMsgOpt_T Option

MyQuestion: estructura para informacin general de mensaje (remiten-


te, nmero de mensaje, texto de la pregunta)
Parameter[ ]: campo para los 3 parmetros posibles para los comodi-
nes %1, %2 y 3%. Deben transmitirse siempre los 3 parmetros, incluso
en caso de que no se utilicen los comodines.
Tecla de funcin[]: estructura para la rotulacin de los 7 botones
posibles. Deben transmitirse siempre los 7 botones, incluso si no se van
a utilizar.
Opcin: Estructura de opciones de mensaje generales (parada del pro-
cesamiento, inicio de sesin en la base de datos de mensajes, mensaje
en caso de restablecimiento del programa o borrado implcito de seleccin
de lnea)
Valor de retorno del dilogo: "handle" para el dilogo. Con este "handle"
es posible controlar si el dilogo se ha podido emitir correctamente. Por lo
dems, el "handle" es tambin el nmero de identificacin en la memoria
intermedia de mensajes.
DEF MyProg( )
DECL INT handle
...
handle = Set_KrlDlg(MyQuestion, Parameter[ ], Touchkey[ ], Option)

handle == -1: no se ha podido emitir el dilogo (p. ej., porque toda-


va hay otro dilogo activo al que no se ha respondido an o porque
la memoria intermedia de mensajes est saturada)
handle > 0: el dilogo se ha emitido correctamente y se gestionar
en la memoria intermedia de mensajes con el nmero de identificacin
correspondiente.

En todos los casos, un dilogo se puede emitir slo si no hay ningn


otro dilogo activo.
La funcin slo emite el dilogo. No espera a la respuesta del dilo-
go.

134 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


6 Programacin de un mensaje con KRL

Comprobacin y Con la funcin Exists_KrlDlg( ) se puede comprobar si an existe un di-


valoracin de un logo concreto. Tambin se comprueba si dicho dilogo se encuentra an en
dilogo la memoria intermedia de mensajes.
En caso de que se responda al dilogo, la funcin facilita informacin sobre el
botn que se ha pulsado.
Funciones integradas para comprobar un mensaje
DEFFCT BOOL Exists_KrlDlg(INT nHandle:IN, INT Answer:OUT)
DECL INT nHandle, answer

nHandle: el handle facilitado por la funcin "Set_KrlDlg()" para el


dilogo.
Answer: confirmacin del botn pulsado. De este modo, el botn 1, defi-
nido como "Button[1]", devuelve el valor 1.

La funcin no espera a la respuesta del dilogo, sino que slo explora


la memoria intermedia en busca del dilogo que tenga este handle.
La consulta en el programa KRL se debe realizar cclicamente mien-
tras el dilogo responda o se haya borrado de otro modo.

Valor de retorno de la funcin:


DEF MyProg( )
DECL INT handle, answer
DECL BOOL present
...
handle = Set_KrlDlg(MyQuestion, Parameter[ ], Touchkey[ ], Option)
...
present = Exists_KrlDlg(handle, Answer)

present == TRUE: este dilogo existe an en la memoria intermedia


de mensajes.
present == FALSE: este dilogo ya no se encuentra en la memoria
intermedia de mensajes (por lo tanto, se ha respondido).

Answer se restaura ahora con el valor del botn pulsado. Los valores
vlidos son del 1 al 7, en funcin de los nmeros de los botones pro-
gramados.

6.15 Trabajos con un dilogo

Descripcin de
un dilogo
definido por el
usuario

Fig. 6-11: Dilogo

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 135 / 255


Programacin de robots 2

En todos los casos, un dilogo se puede emitir slo si no hay ningn otro
dilogo activo.
Es posible definir hasta 7 teclas de funcin programables.

Funcin de un Los dilogos son idneos para mostrar preguntas a las que el usuario
dilogo definido debe contestar.
por el usuario Con la funcin Set_KrlDlg() se emite un dilogo.
La funcin slo emite el dilogo. No espera a la respuesta del dilogo.
Con la funcin Exists_KrlDlg( ) se puede comprobar si an existe un
dilogo concreto.
Esta funcin tampoco espera a la respuesta del dilogo, sino que solo ex-
plora la memoria intermedia en busca del dilogo que tenga este handle.
La consulta en el programa KRL se debe realizar cclicamente mientras el
dilogo responda o se haya borrado de otro modo.
Se puede conseguir que el resto del flujo de programa dependa de la tecla
de funcin programable seleccionada por el usuario.
Evaluacin de botones

Declaracin e inicializacin de botones


DECL KRLMSGDLGSK_T Softkey[7] ; 7 Preparar teclas de funcin
programable posibles
softkey[1]={sk_type #value, sk_txt[] "key1"} ; respuesta -> 1
softkey[2]={sk_type #value, sk_txt[] "key2"} ; respuesta -> 2
softkey[3]={sk_type #value, sk_txt[] "key3"} ; respuesta -> 3
softkey[4]={sk_type #value, sk_txt[] "key4"} ; respuesta -> 4
softkey[5]={sk_type #value, sk_txt[] "key5"} ; respuesta -> 5
softkey[6]={sk_type #value, sk_txt[] "key6"} ; respuesta -> 6
softkey[7]={sk_type #value, sk_txt[] "key7"} ; respuesta -> 7

Evaluacin mediante Exists_KrlDlg(): el botn creado en el ndice 4


retorna tambin 4.
; tecla de funcin n 4 disponible como respuesta 4 en las variables
ANSWER
softkey[4]={sk_type #value, sk_txt[] "key4"}
present = exists_KrlDlg(handle ,ANSWER) ; ANSWER descrito por el
sistema

Programacin de 1. Cargar programa principal en el editor.


dilogos 2. Declarar variables de trabajo para:
definidos por el Remitente, nmero de mensaje, texto del mensaje (de KrlMsg_T)
usuario Campos con 3 elementos para el parmetro (de KrlMsgPar_T)
7 botones posibles (de KrlMsgDlgSK_T)

136 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


6 Programacin de un mensaje con KRL

Opciones de mensaje generales (de KrlMsgOpt_T)


"Handle" (como INT)
Variable para el resultado de la comprobacin (como BOOL)
Variable para el resultado de la respuesta cuyo botn se haya pulsado
(como INT)
3. Iniciar variables de trabajo con los valores deseados.
4. Programar la activacin de la funcin Set_KrlDlg().
5. Detener el programa con un bucle hasta que se haya respondido al dilo-
go.
6. Evaluar el dilogo con la activacin de la funcin Exists_KrlDlg( ).
7. Planificar y programar ms ramificaciones en el programa.
8. Cerrar y guardar el programa principal.

Fig. 6-12: Dilogo con 3 botones

Ejemplo de programacin para visualizacin/mensaje mencionados anterior-


mente:
los botones no deben programarse por completo, si no con espacios en blan-
co (n. 1, 4, 6). En este caso, el sistema coloca de manera automtica y suce-
sivamente los los botones. Si slo se utilizan los botones 1, 4 y 6, nicamente
son posibles las respuestas 1, 4 y 6.
El programa se detiene tras aparecer el dilogo; el dilogo se cierra tras la
respuesta. Despus, el programa prosigue. A continuacin, se programa un
distribuidor.
El mensaje tambin se borra con el reset del programa o al salir del mismo.
Para ello se utiliza el ajuste en las opciones de mensaje Clear_P_Reset
TRUE.
DECL KRLMSG_T myQuestion
DECL KRLMSGPAR_T Parameter[3]
DECL KRLMSGDLGSK_T Softkey[7] ;7 Preparar teclas de funcin
programable posibles
DECL KRLMSGOPT_T Option
DECL INT handle, answer
DECL BOOL present
...

myQuestion={modul[] "College", Nr 1907, msg_txt[] "My Question?"}


Option= {VL_STOP FALSE, Clear_P_Reset TRUE, Clear_P_SAW FALSE,
Log_to_DB TRUE}
;Los comodines [1..3] estn vacos
Parameter[1] = {Par_Type #EMPTY}
Parameter[2] = {Par_Type #EMPTY}
Parameter[3] = {Par_Type #EMPTY}
softkey[1]={sk_type #value, sk_txt[] "key1"} ; Botn 1
softkey[2]={sk_type #EMPTY, sk_txt[] "key2"} ; Botn 2

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 137 / 255


Programacin de robots 2

softkey[3]={sk_type #EMPTY, sk_txt[] "key3"} ; Botn 3


softkey[4]={sk_type #value, sk_txt[] "key4"} ; Botn 4
softkey[5]={sk_type #EMPTY, sk_txt[] "key5"} ; Botn 5
softkey[6]={sk_type #value, sk_txt[] "key6"} ; Botn 6
softkey[7]={sk_type #EMPTY} ; Botn 7: sk_txt[] tambin puede
suprimirse
...

...; Emitir un dilogo


handle = Set_KrlDlg(myQuestion, Parameter[ ],Softkey[ ], Option)
answer=0
REPEAT ; Bucle de parada hasta que se haya contestado a este dilogo
present = exists_KrlDlg(handle ,answer) ; El sistema describe la
respuesta
UNTIL NOT(present)
...
SWITCH answer
CASE 1 ; Botn 1
; Accin con botn 1
...
CASE 4 ; Botn 4
; Accin con botn 4
...
CASE 6 ; Botn 6
; Accin con botn 6
...
ENDSWITCH
...

138 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


6 Programacin de un mensaje con KRL

6.16 Ejercicio: Programar un dilogo

Objetivo del Despus de completar correctamente este ejercicio, se dispondr de la com-


ejercicio petencia necesaria para efectuar las siguientes tareas:
Programar preguntas de dilogo propias.
Dar salida en mensajes a los parmetros que se desee.

Requisitos Los siguientes requisitos son imprescindibles para superar el ejercicio con
xito:
Conocimientos del lenguaje de programacin KRL
Conocimientos tericos acerca de la programacin de mensajes

Formulacin de Tarea parcial: Mensaje de dilogo


tarea 1. Crear un mensaje de dilogo con el texto "Seleccionar la cantidad de cu-
bos que deben transportarse".
2. Poner a disposicin los nmeros 2, 3, 5, 8 y asignar "FIN" a la tecla de fun-
cin programable 7.
3. Ampliar el programa Cargador con el dilogo y salir del bucle infinito con
"FIN".
4. Compruebe su programa segn prescripcin.
Lo que se debe saber tras el ejercicio:
1. Cmo se rotulan las teclas de funcin programables en el dilogo?
............................................................
............................................................

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 139 / 255


Programacin de robots 2

140 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


7 Programacin de movimientos con KRL

7 Programacin de movimientos con KRL

7.1 Vista general

Esta unidad incluye los siguientes contenidos:


Programar el movimiento mediante KRL
Programar los movimientos relativos mediante KRL
Programacin de bloques Spline mediante KRL
Calcular y manipular posiciones del robot
Realizar una modificacin adecuada de Status y Turn

7.2 Programar movimientos individuales SPLINE mediante KRL

Definicin de un
movimiento

Fig. 7-1: Formularios Inline paso individual movimiento SPTP/SLIN/


SCIRC

Indicaciones necesarias para un movimiento


Tipo de movimiento SPTP, SLIN, SCIRC
Posicin de destino y posible posicin auxiliar
Parada exacta o aproximacin
Velocidad - SPTP (%) y movimiento de trayectoria (m/s)
Herramienta - TCP y carga
Sistema de coordenadas base
Herramienta guiada por robot o externa
Aceleracin y tirn (modificacin de la aceleracin)
Posible parmetro de aproximacin
Control de orientacin para movimientos de trayectoria
ngulo circular para un movimiento circular CIRC
Control de orientacin con punto auxiliar y de destino de un movimiento
circular

7.3 Movimiento de conjunto individual con SPTP

Descripcin SPTP se puede programar como segmento en un bloque Spline PTP o como
movimiento individual.
Existe la posibilidad de copiar un movimiento individual SPTP en un bloque
Spline PTP, pero solo si no contiene ninguna asignacin a variables del siste-
ma que estn prohibidos all.

Sintaxis SPTP Punto de destino <WITH SysVar1 = Valor1 <, SysVar2 = Valor2 , >>
<C_SPL>

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 141 / 255


Programacin de robots 2

Aclaracin de la Elemento Descripcin


sintaxis Punto de Tipo: AXIS, E6AXIS, POS, E6POS, FRAME
destino
Las coordenadas cartesianas hacen referencia al sistema
de coordenadas BASE.
Si no se indican todos los componentes del punto de des-
tino, la unidad de control adopta los valores de la posicin
anterior para los componentes que faltan. Si esta posicin
anterior es el punto de destino de un circuito con ngulo
circular, se aceptarn los valores del punto de destino real-
mente alcanzado y no del punto de destino programado.
Si ninguna posicin anterior es conocida para la unidad de
control del robot, los componentes que falten se aceptarn
de la posicin actual del robot.
SysVar
Valor Asignacin de valor a la variable del sistema
Para segmentos SPTP: La asignacin solo es vlida para
ese segmento.
Las variables del sistema tambin se pueden ocupar por
activacin de funcin. Para esta funcin se aplican las mis-
mas restricciones que para las funciones en el Trigger.

C_SPL Con C_SPL: Se da una aproximacin del punto de des-


tino. $APO determina cundo se iniciar como muy
pronto el posicionamiento aproximado.
Solo es posible para movimientos individuales, no para
segmentos.
Sin C_SPL: El punto de destino se alcanza con exacti-
tud.

Hasta el software del sistema 8.2, la identificacin para el posiciona-


miento aproximado en Spline era "C_DIS". Si en versiones superio-
res a 8 se utilizan programas basados en 8.2 o en versiones
anteriores y contienen C_DIS, no ser necesario cambiarlo a C_SPL, sino
que se puede dejar.

Ejemplos El robot se aproxima a una posicin del fichero DAT; la posicin ha sido
programada previamente mediante formulario inline y realiza un posicio-
namiento aproximado a este punto P3
SPTP XP3 C_SPL

El robot se aproxima a una posicin introducida


Especfico del eje (AXIS o E6AXIS)
SPTP {A1 0, A2 -80, A3 75, A4 30, A5 30, A6 110}

Posicin (con herramienta actualmente activa y Base)


SPTP {X 100, Y -50, Z 1500, A 0, B 0, C 90, S 3, T 35}

El robot se desplaza solo con la introduccin de una o varias unidades


SPTP {A1 30} ; slo A1 desplazado a 30

SPTP {X 200, A 30} ; slo en X a 200mm y A a 30

El robot se desplaza con valores modificados utilizando WITH


SPTP XP10 WITH $TOOL=tool_data[2], $LOAD=load_data[2] ; Se avanza
hasta el punto P10 con TOOL 2

142 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


7 Programacin de movimientos con KRL

7.4 Movimiento de paso individual con SLIN y SCIRC

Descripcin SLIN, SCIRC:


SLIN y SCIRC se pueden programar como segmento en un bloque Spline CP
o como movimiento individual.
Existe la posibilidad de copiar un movimiento individual SLIN o SCIRC en un
bloque Spline CP, pero solo si no contiene ninguna asignacin a variables del
sistema que estn prohibidos all.

Sintaxis SLIN:
SLIN Punto de destino <WITH SysVar1 = Valor1 <, SysVar2 = Valor2 , , >>
<C_SPL>
SCIRC:
SCIRC Punto auxiliar, Punto de destino <, CA ngulo circular> <WITH SysVar1 =
Valor1 <,SysVar2 = Valor2 , >> <C_SPL>

Aclaracin de la Elemento Descripcin


sintaxis Punto auxi- Tipo: POS, E6POS, FRAME
liar
Las coordenadas hacen referencia al sistema de coorde-
Punto de nadas BASE.
destino
Si no se indican todos los componentes del punto de des-
tino, la unidad de control adopta los valores de la posicin
anterior para los componentes que faltan. Si esta posicin
anterior es el punto de destino de un circuito con ngulo
circular, existe la siguiente diferencia:
Si la posicin anterior se encuentra fuera de un bloque
Spline, se aceptarn los valores del punto de destino
realmente alcanzado y no del punto de destino progra-
mado.
Si la posicin anterior se encuentra en un bloque Spli-
ne, se aceptarn los valores del punto de destino pro-
gramado y no del punto de destino realmente
alcanzado.
Si ninguna posicin anterior es conocida para la unidad de
control del robot, los componentes que falten se aceptarn
de la posicin actual del robot.
ngulo cir- Unidad: Grado; sin limitacin
cular

SysVar

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 143 / 255


Programacin de robots 2

Elemento Descripcin
Valor Asignacin de valor a la variable del sistema
Para segmentos: La asignacin solo es vlida para ese
segmento.
Las variables del sistema tambin se pueden ocupar por
activacin de funcin. Para esta funcin se aplican las mis-
mas restricciones que para las funciones en el Trigger.

C_SPL Con C_SPL: Se da un posicionamiento aproximado del


punto de destino. $APO determina cundo se iniciar
como muy pronto el posicionamiento aproximado.
Solo es posible para movimientos individuales, no para
segmentos.
Sin C_SPL: El punto de destino se alcanza con exacti-
tud.

Hasta el software del sistema 8.2, la identificacin para el posiciona-


miento aproximado en Spline era "C_DIS". Si en versiones superio-
res a 8 se utilizan programas basados en 8.2 o en versiones
anteriores y contienen C_DIS, no ser necesario cambiarlo a C_SPL, sino
que se puede dejar.

Ejemplos SLIN:
El robot se desplaza hasta una posicin calculada y realiza una aproxima-
cin a este punto DEPSITO[4]
SLIN ABLAGE[4] C_SPL

El robot se desplaza al punto P4 con estos valores de aceleracin


SLIN P4 WITH $ACC={CP 1.8, ORI1 120, ORI2 140}

SCIRC
El robot se acerca a las posiciones previamente programadas del archivo
DAT y se desplaza en un ngulo circular de 190.
SCIRC XP3, XP4, CA 190

El robot se acerca a las posiciones indicadas y se desplaza en un ngulo


circular de 180.
SCIRC {X 100, Y ...}, {X 150, Y ...}, CA 180

ngulo circular positivo (CA>0): El circuito se desplaza en el sentido


programado: Punto inicial - punto auxiliar - punto de destino

144 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


7 Programacin de movimientos con KRL

Fig. 7-2: ngulo circular CA = +290

ngulo circular negativo (CA<0): El circuito se desplaza en sentido con-


trario al sentido programado: Punto inicial - punto destino - punto de auxi-
liar

Fig. 7-3: ngulo circular CA = -290

7.5 Parmetros de movimiento

Funcin de los Preajustes para la programacin de movimientos


parmetros de Se pueden aplicar ajustes existentes:
movimiento
de la ejecucin de la lnea INI
del ltimo formulario en lnea
de los ltimos ajustes de las variables de sistema correspondientes
Modificar o inicializar las correspondientes variables de sistema
Variables de sistema de los parmetros de movimiento
Herramienta: $TOOL y $LOAD
Activacin del TCP medido
$TOOL = tool_data[x] ; x = 1...16

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 145 / 255


Programacin de robots 2

Activacin de los datos de carga correspondientes


$LOAD = load_data[x] ; x = 1...16

Base de referencia / base de trabajo: $BASE


Activacin de la base medida
$BASE = base_data[x] ; x = 1...32

Herramienta guiada por robot o externa: $IPO_MODE


Herramienta guiada por robot
$IPO_MODE = #BASE

Herramienta externa
$IPO_MODE = #TCP

Velocidad
Con movimiento PTP
$VEL_AXIS[x] ; x=1...8 para cada eje

Con movimientos de trayectoria LIN o CIRC


$VEL.CP = 2.0 ; [m/s] Velocidad de trayectoria

$VEL.ORI1 = 150 ; [/s] Velocidad de vaivn

$VEL.ORI2 = 200 ; [/s] Velocidad rotacional

La direccin de avance de la herramienta es en la mayora de los ca-


sos el eje X. La velocidad de giro es el giro alrededor de este eje X
con ngulo C. En la velocidad de basculamiento se gira alrededor de
los otros dos ngulos (A y B).

Aceleracin
Con movimiento PTP
$ACC_AXIS[x] ; x=1...8 para cada eje

Con movimientos de trayectoria LIN o CIRC


$ACC.CP = 2.0 ; [m/s] Aceleracin de trayectoria

$ACC.ORI1 = 150 ; [/s] Aceleracin de vaivn

$ACC.ORI2 = 200 ; [/s] Aceleracin rotacional

Tirn
para movimiento SPTP
$GEAR_JERK[1...12] = 0 ... 100 Tirn del engranaje de los ejes A1 a
E6 en tanto por ciento (1...100)
SPTP XP10 WITH GEAR_JERK[1]=22, GEAR_JERK[2]=66

Con movimientos de trayectoria SLIN o SCIRC


$JERK={CP 50.0,ORI 50000.0,AX {A1 1000.0,A2 1000.0,A3 1000.0,A4
1000.0,A5 1000.0,A6 1000.0,E1 1000.0,E2 1000.0,E3 1000.0,E4 1000.0,E5
1000.0,E6 1000.0}}

El grupo est formado por los siguientes componentes:

CP: modificacin de la aceleracin en trayectoria en [m/s3]


ORI: modificacin de la aceleracin en trayectoria en [/s3]
AX: modificacin de la aceleracin del eje en [/s3] en ejes de ro-
tacin o en [m/s3] en el caso de ejes lineales

146 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


7 Programacin de movimientos con KRL

SLIN XP13 WITH $JERK = {CP 44} ; [m/s] Modificacin de la


aceleracin en trayectoria

Distancia de aproximacin
en caso de SPINE pasos individuales SLIN, SCIRC y en caso de
SPTP: C_SPL
El alejamiento respecto del punto de destino debe quedar por debajo
del valor $APO.CDIS
$APO.CDIS = 250.0 ; [mm] Distancia
SPTP XP3 C_SPL
SLIN XP4 C_SPL

Solo con movimiento PTP: C_PTP


$APO.CPTP = 50 ; Valor de aproximacin en [%] para C_PTP
PTP XP3 C_PTP

Con movimientos de trayectoria LIN, CIRC: C_ORI


El ngulo de orientacin dominante debe quedar por debajo del valor
$APO.CORI
$APO.CORI = 50.0 ; [] ngulo
SLIN XP4 C_ORI

Con movimientos de trayectoria LIN, CIRC: C_VEL


La velocidad en la fase de frenado hacia el punto de destino debe que-
dar por debajo del valor $APO.CVEL
$APO.CVEL = 75.0 ; [%] Porcentaje
LIN XP4 C_VEL

Control de la orientacin: Solo con LIN y CIRC


Con LIN y CIRC: $ORI_TYPE

$ORI_TYPE = #CONSTANT

Durante el movimiento de trayectoria, la orientacin se mantiene


constante. Para el punto final se ignora la orientacin programada.

Fig. 7-4: Control orientacin constante

$ORI_TYPE = #VAR

Durante el movimiento de trayectoria, la orientacin se modifica


continuamente hacia la orientacin del punto de destino.

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 147 / 255


Programacin de robots 2

Fig. 7-5: Estndar o PTP manual

$ORI_TYPE = #JOINT

Durante el movimiento de trayectoria, la orientacin de la herra-


mienta es modificada ininterrumpidamente desde la posicin ini-
cial hasta la posicin final. Esto se logra mediante el
desplazamiento lineal del ngulo del eje de la mueca. La proble-
mtica de la singularidad de la mueca puede evitarse con esta
opcin. Se produce un giro alrededor de la direccin de impacto
de la herramienta. No es posible realizar un giro alrededor de la
direccin de impacto de la herramienta.
Solo con CIRC: $CIRC_TPYE

La variable $CIRC_TYPE carece de significado cuando se efecta


un desplazamiento lineal del ngulo del eje de la mueca con
$ORI_TYPE = #JOINT.

$CIRC_TYPE = #PATH

Control de la orientacin relacionada con la trayectoria durante el


movimiento circular

Fig. 7-6: Orientacin constante, referida a la trayectoria

$CIRC_TYPE = #BASE

Control de orientacin referido al espacio durante el movimiento


circular

148 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


7 Programacin de movimientos con KRL

Fig. 7-7: Orientacin constante, referida a la base

Configuracin del Para movimientos SCIRC, la unidad de control del robot puede tener en cuen-
crculo SCIRC ta la orientacin programada del punto auxiliar. Si se debe tener en cuenta y
en qu medida puede determinarse por el usuario:
En caso de programacin con sintaxis KRL: mediante la variable del sis-
tema $CIRC_MODE
En caso de programacin mediante formularios inline: en la ventana de
opciones Parmetros de movimiento, pestaa Configuracin del cr-
culo
Del mismo modo, adems se puede determinar para las instrucciones SCIRC
con ngulo circular si el punto de destino debe tener la orientacin programa-
da o si la orientacin se debe continuar de acuerdo con el ngulo circular.
$CIRC_MODE solo se escribir mediante una instruccin SCIRC.
$CIRC_MODE no se puede leer.
Sintaxis KRL
Para puntos auxiliares:
$CIRC_MODE.AUX_PT.ORI = Reaccin HP
Para puntos de destino:
$CIRC_MODE.TARGET_PT.ORI = Reaccin ZP

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 149 / 255


Programacin de robots 2

Elemento Descripcin
Reaccin HP Tipo de datos: ENUM/men desplegable
Comporta- #INTERPOLATE: En el punto auxiliar, el TCP adopta la
miento de orientacin programada.
orientacin #IGNORE: La unidad de control del robot ignora la
en punto orientacin programada del punto auxiliar. La orienta-
auxiliar. cin de partida del TCP se convierte durante la trayec-
toria ms corta en la orientacin de destino.
#CONSIDER (por defecto):
Bsicamente existen 2 trayectorias para convertir la
orientacin de partida con un giro en la orientacin de
destino. Una corta y otra larga. Con #CONSIDER la uni-
dad de control del robot escoge la trayectoria que se
aproxime ms a la orientacin programada del punto
auxiliar. Es posible que el TCP adopte la orientacin
programada del punto auxiliar en un punto indetermina-
do de la trayectoria. Sin embargo, ste no tiene por qu
ser el caso.
Reaccin ZP Tipo de datos: ENUM/men desplegable
Comporta- #INTERPOLATE: En el punto de destino real se acepta
miento de la orientacin programada del punto de destino.
orientacin (nica posibilidad para SCIRC sin indicacin del ngulo
en punto de circular. Si #EXTRAPOLATE est ajustado, #INTER-
destino. POLATE se ejecuta igualmente.)
#EXTRAPOLATE: La orientacin se adapta al ngulo
circular:
Si el ngulo circular prolonga el movimiento, se acepta-
r la orientacin programada en el punto de destino
programado. La orientacin se contina de acuerdo con
ello hasta el punto de destino real.
Si el ngulo circular acorta el movimiento, no se alcan-
zar la orientacin programada.
(Valor por defecto para SCIRC con indicacin del ngu-
lo circular)

7.5.1 SCIRC: Comportamiento de orientacin ejemplo del punto auxiliar

Descripcin Para el TCP se han programado las siguientes orientaciones:


Punto de inicio: 0
Punto auxiliar: 98
Punto de destino: 197
Por lo tanto, el cambio de orientacin es de 197. Si se ignora el punto auxiliar,
tambin se podr alcanzar la orientacin de destino a travs del cambio de
orientacin ms corta de 360 - 197 = 163.
Las flechas discontinuas naranjas muestran la orientacin programada.
Las flechas grises indican esquemticamente cmo sera la orientacin
real, si se diferencia de la orientacin programada.

#INTERPOLATE El TCP acepta la orientacin programada de 98 en el punto auxiliar. El cam-


bio de orientacin es de 197.

150 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


7 Programacin de movimientos con KRL

Fig. 7-8: #INTERPOLATE

SP Punto de inicio
AuxP Punto auxiliar
TP Punto de destino

#IGNORE Se ejecuta el cambio de orientacin corto de 163. La orientacin programada


del punto auxiliar se ignora.

Fig. 7-9: #IGNORE

#CONSIDER
#CONSIDER es adecuado si el usuario desea determinar la direccin
en la que tiene que hacer el TCP el cambio de orientacin, sin que
dependa de una orientacin determinada en el punto auxiliar. El
usuario puede especificar la direccin mediante el punto auxiliar.

La orientacin programada del punto auxiliar es 98 y, de este modo, se en-


cuentra en la trayectoria ms larga. Por ello, la unidad de control del robot es-
coge la trayectoria ms larga para el cambio de orientacin.

Fig. 7-10: #CONSIDER

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 151 / 255


Programacin de robots 2

Otro ejemplo para #CONSIDER:


Si el punto auxiliar se ha programado con 262, se encontrara en la trayecto-
ria corta. Por ello, la unidad de control del robot escogera la trayectoria ms
corta para el cambio de orientacin. Las flechas grises indican que en abso-
luto acepta obligatoriamente la orientacin programada del punto auxiliar.

Fig. 7-11: #CONSIDER, otro ejemplo

7.5.2 SCIRC: Comportamiento de orientacin ejemplo del punto de destino

Descripcin Las flechas discontinuas naranjas muestran la orientacin programada.


Las flechas grises muestran la orientacin real si se diferencia de la orien-
tacin programada.

#INTERPOLATE En TP, que se encuentra delante de TP_CA, an no se ha alcanzado la orien-


tacin programada. En TP_CA se acepta la orientacin programada.

Fig. 7-12: #INTERPOLATE

SP Punto de inicio
AuxP Punto auxiliar
TP Punto de destino programado
TP_CA Punto de destino real. Se obtiene por el ngulo circular.

#EXTRAPOLATE En TP se acepta la orientacin programada. Para TP_CA se contina esta


orientacin de acuerdo con el ngulo circular.

152 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


7 Programacin de movimientos con KRL

Fig. 7-13: #EXTRAPOLATE

7.5.3 Restricciones en $CIRC_MODE

Restricciones Descripcin de las variables del sistema


Si para un segmento SCIRC se aplica $ORI_TYPE = #IGNORE, no se
evaluar $CIRC_MODE.
Si a un segmento SCIRC le precede un segmento SCIRC o SLIN para el
que se aplica $ORI_TYPE = #IGNORE, no se podr utilizar #CONSIDER
en el segmento SCIRC.
Para SCIRC con ngulo circular:
Para el punto auxiliar no se debe ajustar #INTERPOLATE.
Si se aplica $ORI_TYPE = #IGNORE, no se podr ajustar #EXTRAPOLA-
TE para el punto de destino.
Si precede un segmento spline para el que se aplica $ORI_TYPE = #IG-
NORE, no se podr ajustar #EXTRAPOLATE para el punto de destino.

Aclaracin de los Algunos mensajes de error contienen el texto "error por regla x"
mensajes de error En la programacin de $CIRC_MODE es necesario tener en cuenta tanto la
orientacin como los ejes externos:
1. Regla 1: #CONSIDER se permite justo cuando no se ignoran ni el punto
de inicio ni el punto de destino.
2. Regla 2: $CIRC_TYPE=#PATH se permite justo cuando no se ignoran ni
el punto de inicio ni el punto de destino.
3. Regla 3: Si $ORI_TYPE=#IGNORE o $EX_AX_IGNORE se han activado,
$CIRC_MODE ya no se evala.
4. Regla 4: si se programa un ngulo circular, queda prohibida la interpola-
cin del punto auxiliar.
5. Regla 5: justo cuando se programe un ngulo circular, podr determinar-
se el punto de destino mediante extrapolacin, siempre que no se ignoren
los puntos de inicio y de destino.
6. Regla 6: justo cuando se programe un ngulo circular, podr aceptarse el
punto de destino (interpolarse), siempre que no se ignore.
7. Regla 7: #CONSIDER la trayectoria nicamente tiene efecto con ejes ex-
ternos de rotacin continua. Con otro tipo de ejes, se escoger siempre la
trayectoria corta que corresponde a #IGNORE.
8. Regla 8: La componente TARGET_PT nicamente se tiene en cuenta
cuando hay programado un ngulo circular.

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 153 / 255


Programacin de robots 2

9. Regla 9: la lectura $CIRC_MODE no se permite en ningn lugar, la escri-


tura nicamente en el WITH-Token de un SCIRC.

7.6 Movimientos individuales SPLINE: Variables del sistema para WITH

Bloque Spline, Para los bloques Spline y los movimientos individuales Spline se pueden des-
movimiento cribir las siguientes variables de sistema con la lnea WITH:
individual Spline $ACC
$ACC_AXIS
$ACC_EXTAX
$APO
$BASE
$CIRC_TYPE
$ECO_LEVEL
$GEAR_JERK
$IPO_MODE
$JERK
$LOAD
$ORI_TYPE
$ROTSYS
$SPL_ORI_JOINT_AUTO
$SYNC_ID
$SYNC_LIST
$TOOL
$VEL
$VEL_AXIS
$VEL_EXTAX
Adicionalmente para SCIRC y SLIN: $CIRC_MODE

Las variables del sistema estn descritas en el captulo variables del


sistema.

7.7 Programar movimientos relativos y absolutos con KRL

Movimiento SPTP {A3 45}


absoluto
Aproximacin de la posicin de destino mediante valores absolutos. Aqu se
posiciona el eje A3 a 45.

154 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


7 Programacin de movimientos con KRL

Fig. 7-14: Movimiento absoluto del eje A3

Movimiento SPTP_REL {A3 45}


relativo
Aproximacin de la posicin de destino mediante el avance desde la posicin
actual conforme al valor indicado. Aqu, el eje A3 se posiciona 45 desde la
posicin actual, quedando en 135.

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 155 / 255


Programacin de robots 2

Fig. 7-15: Movimiento relativo del eje A3

La instruccin REL siempre hace referencia a la posicin actual del


robot. Si una instruccin REL se interrumpe, el robot por tanto efec-
ta, desde la posicin de interrupcin, todo el movimiento REL com-
pleto otra vez.

SPTP_REL:
SPTP_RELse puede programar como segmento en un bloque Spline PTP o
como movimiento individual.
Existe la posibilidad de copiar un movimiento individual SPTP_REL en un blo-
que Spline PTP, pero solo si no contiene ninguna asignacin a variables del
sistema que estn prohibidos all.
SLIN_REL, SCIRC_REL:
SLIN_REL y SCIRC_REL se pueden programar como segmento en un bloque
Spline CP o como movimiento individual.
Existe la posibilidad de copiar un movimiento individual SLIN_REL o
SCIRC_REL en un bloque Spline CP, pero solo si no contiene ninguna asig-
nacin a variables del sistema que estn prohibidos all.

Los movimientos relativos SPTP_Rel, SLIN_REL y SCIRC_REL solo


estn disponibles a partir del software KSS 8.3.6

Sintaxis SPTP_REL:
SPTP_REL Punto de destino <WITH SysVar1 = Valor1 <, SysVar2 = Valor2 , >>
<C_SPL><#BASE|#TOOL>

156 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


7 Programacin de movimientos con KRL

Elemento Descripcin
Punto de Tipo: AXIS, E6AXIS, POS, E6POS, FRAME
destino
El punto de destino puede indicarse de forma cartesiana o
especfica del eje. La unidad de control interpreta las coor-
denadas en relacin a la posicin de destino del paso
anterior.
Si no se indican todos los componentes del punto de des-
tino, la unidad de control pondr a 0 los componentes que
falten. Esto quiere decir que los valores absolutos de estos
componentes no variarn.
Los datos de estado y giro, si existen, se tendrn en
cuenta por la unidad de control. (Esto ocurre contraria-
mente a SLIN_REL, SCIRC_REL y SPL_REL, donde se
ignoran)
Valor Asignacin de valor a la variable del sistema
Para segmentos SPTP: La asignacin solo es vlida para
ese segmento.
Las variables del sistema tambin se pueden ocupar por
activacin de funcin. Para esta funcin se aplican las mis-
mas restricciones que para las funciones en el Trigger.
C_SPL Con C_SPL: Se da una aproximacin del punto de des-
tino. $APO determina cundo se iniciar como muy
pronto el posicionamiento aproximado.
Solo es posible para movimientos individuales, no para
segmentos.
Sin C_SPL: El punto de destino se alcanza con exacti-
tud.
#BASE, Solo est permitido si el punto de destino se ha indicado
#TOOL de forma cartesiana.
#BASE (por defecto): Las coordenadas de este punto
de destino hacen referencia al sistema de coordenadas
que pertenece a la base fsica.
#TOOL: Las coordenadas de este punto de destino ha-
cen referencia al sistema de coordenadas que pertene-
ce a la herramienta fsica.
$IPO_MODE no influye en el significado de #BASE y
#TOOL.

SLIN_REL:
SLIN_REL Punto de destino <WITH SysVar1 = Valor1 <, SysVar2 = Valor2, , >>
<C_SPL><#BASE|#TOOL>
SCIRC_REL:
SCIRC_REL Punto auxiliar, Punto de destino <, CA ngulo circular> <WITH
SysVar1 = Valor1 <,SysVar2 = Valor2 , >> <C_SPL><#BASE|#TOOL>

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 157 / 255


Programacin de robots 2

Elemento Descripcin
Punto auxiliar Tipo: POS, E6POS, FRAME
Punto de des- El punto debe indicarse en coordenadas cartesianas. La
tino unidad de control interpreta las coordenadas en relacin a
la posicin de destino del movimiento anterior.
Si no se indican todos los componentes del punto, la uni-
dad de control pondr a 0 los componentes que falten.
Esto quiere decir que los valores absolutos de estos com-
ponentes no variarn.
Los datos de estado y giro, si existen, se ignorarn por la
unidad de control. (Esto contrasta con SPTP_REL, donde
se tienen en cuenta)
En el punto auxiliar se ignoran adems los ngulos de
orientacin.
El punto auxiliar no puede ser aproximado. Siempre se
ejecutar de forma exacta.
ngulo circu- Unidad: Grado; sin limitacin
lar
Valor Asignacin de valor a la variable del sistema
Para segmentos: La asignacin solo es vlida para ese
segmento.
Las variables del sistema tambin se pueden ocupar por
activacin de funcin. Para esta funcin se aplican las mis-
mas restricciones que para las funciones en el Trigger.
C_SPL Con C_SPL: Se da una aproximacin al punto de desti-
no. $APO determina cundo se iniciar como muy
pronto el posicionamiento aproximado.
Solo es posible para movimientos individuales, no para
segmentos.
Sin C_SPL: El punto de destino se alcanza con exacti-
tud.
#BASE, #BASE (por defecto): Las coordenadas de este punto
#TOOL de destino hacen referencia al sistema de coordenadas
que pertenece a la base fsica.
#TOOL: Las coordenadas de este punto de destino ha-
cen referencia al sistema de coordenadas que pertene-
ce a la herramienta fsica.
$IPO_MODE no influye en el significado de #BASE y
#TOOL.

Ejemplo El eje 2 se mueve 30 en direccin negativa. El resto de ejes no se mueve.


PTP_REL {A2 -30}

El TCP se desplaza desde la posicin actual 100 mm en direccin X y 200


mm en direccin Z negativa. Y, A, B, C y S permanecen constantes. T se
calcula en el trayecto ms corto.
PTP_REL {X 100,Z -200}

En el sistema de coordenadas BASE, el TCP se desplaza de la posicin


actual 100 mm en direccin X y 200 mm en direccin Z negativa. Y, A, B,
C y S permanecen constantes. T se obtiene con el movimiento.

158 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


7 Programacin de movimientos con KRL

LIN_REL {X 100,Z -200} ; #BASE es el ajuste por defecto

La indicacin #BASE o #TOOL slo hace referencia a la instruccin


LIN_REL a la cual pertenece. No repercute en las instrucciones subsi-
guientes.
En el sistema de coordenadas TOOL, el TCP se desplaza de la posicin
actual 100 mm en direccin X negativa. Y, Z, A, B, C y S permanecen
constantes. T se obtiene con el movimiento.
Este ejemplo es apropiado para mover hacia atrs la herramienta en la di-
reccin de avance. La condicin necesaria es que la direccin de avance
de la herramienta haya sido medida en direccin X.
LIN_REL {X -100} #TOOL

El punto de destino del movimiento circular se determina mediante un n-


gulo circular de 500. Se da una aproximacin al punto de destino.
CIRC_REL {X 100,Y 30,Z -20},{Y 50},CA 500 C_VEL

Ejemplos de sintaxis

SPTP XHOME
SLIN XP1

SLIN_REL{X 0, Y 500, Z 0, A 0, B 0, C 0} WITH $BASE=$NULLFRAME #BASE


SLIN_REL{X 400} WITH $TOOL=TOOL_DATA[1], $LOAD=LOAD_DATA[1] C_SPL
#TOOL
SLIN_REL{A 20}
SPTP_REL{A3 90} C_SPL
SPTP_REL Z 50, B -30} WITH $VEL.AXIS[4]=90 C_SPL #TOOL
SPTP_REL{A1 100}

PTP_REL {A6 360}


El A6 no se mueve, ya que la unidad de control interpreta la posicin
de destino y la posicin final como idnticas, porque tiene lugar un
clculo de mdulo.
SPTP_REL {A6 360}
El A6 se mueve 360 ya que no se efecta ningn clculo de mdulo.

7.8 Calcular o manipular posiciones de robot

Descripcin Posiciones de destino del robot


Se almacenan en estructuras:
Estn disponibles las siguientes estructuras predefinidas:
AXIS
ngulo del eje A1 ... A6
E6AXIS
ngulo del eje A1 ... A6 y E1 ... E6
POS
Posicin (X, Y, Z), orientacin (A, B, C) con estado y giro (S, T)
E6POS
Posicin (X, Y, Z), orientacin (A, B, C) con estado y giro (S, T) y E1
... E6
FRAME
Posicin (X, Y, Z), orientacin (A, B, C)

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 159 / 255


Programacin de robots 2

Las posiciones existentes del fichero DAT se pueden manipular.


Cada uno de los grupos de posiciones existentes se pueden modificar con
precisin mediante el separador de puntos.

Principio
En el clculo es importante tener en cuenta los ajus-
tes TOOL y BASE correctos y activarlos a continua-
cin en la programacin de movimientos. En caso de incumplimiento pueden
producirse movimientos inesperados y colisiones.

Variables de sistema importantes


$POS_ACT: Posicin actual del robot. La variable (E6POS) describe la
posicin terica del TCP referida al sistema de coordenadas BASE.
$AXIS_ACT: Posicin actual del robot especfica del eje (valor terico). La
variable (E6AXIS) incluye el ngulo actual del eje o las posiciones actua-
les del eje.
Calcular la posicin de destino absoluta
Modificar una vez la posicin del fichero DAT
XP1.x = 450 ; Valor X nuevo 450mm
XP1.z = 30.0*distance ; Se calcula el nuevo valor Z
SPTP XP1

Modificar en cada ejecucin la posicin del fichero DAT


; Valor X desplazado cada vez por 450mm
XP2.x = XP2.x + 450
SPTP XP2

La posicin se acepta y se guarda en una variable


myposition = XP3
myposition.x = myposition.x + 100 ; Se aaden 100mm al valor x
myposition.z = 10.0*distance ; Calcular el nuevo valor Z
myposition.t = 35 ; Fijar valor Turn
SPTP XP3 ; Posicin no cambiada
SPTP myposition ; Posicin calculada

Procedimiento 1. Cargar el programa en el editor como experto mediante el pulsador Abrir


2. Calcular/manipular la posicin. Guardar temporalmente los nuevos
valores calculados en una nueva variable
3. Comprobar los ajustes predefinidos para la programacin de movimientos
y aceptar o inicializar de nuevo:
Herramienta ($TOOL y $LOAD)
Ajustes base ($BASE)
Herramienta externa o guiada por robot ($IPO_MODE)
Velocidad
Aceleracin
Posible distancia de aproximacin
posible control de la orientacin
4. Crear una instruccin de movimiento completa
Tipo de movimiento (SPTP, SLIN, SCIRC, SPTP_REL, SLIN_REL,
SCIRC_REL)
Punto de destino (con SCIRC tambin punto auxiliar)
Para SCIRC posible ngulo circular (CA)
Activar aproximacin (C_SPL, C_DIS)
5. En caso de nuevo movimiento de vuelta al punto 3
6. Cerrar el editor y guardar

160 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


7 Programacin de movimientos con KRL

7.9 Modificar de forma adecuada bits de Status y Turn

Descripcin Los valores de posicin (X, Y, Z) y de orientacin (A, B, C) del TCP no son
suficientes para determinar unvocamente la posicin del robot, ya que
con el mismo TCP son posibles varias posiciones del eje. Status y Turn
sirven para determinar una posicin unvoca desde varias posiciones del
eje posibles.

Fig. 7-16: Diferentes posiciones de eje debidos a diferentes valores de


Status y Turn

Status (S) y Turn (T) forman parte de los tipos de datos POS y E6POS:
STRUC POS REAL X, Y, Z, A, B, C, INT S, T

STRUC E6POS REAL X, Y, Z, A, B, C, E1, E2, E3, E4, E5, E6, INT S, T

La unidad de control del robot considera los valores de Status y Turn pro-
gramados solo en caso de movimientos SPTP. Se ignoran para movi-
mientos CP.
Por este motivo, la primera instruccin de movimiento en un programa
KRL debe ser una de las siguientes instrucciones para que se determine
una posicin de salida unvoca para el robot:
Una instruccin SPTP completa del tipo POS o E6POS
O bien una instruccin SPTP completa del tipo AXIS o E6AXIS
"Completa" significa que se deben indicar todos los componentes del
punto de destino. La posicin HOME por defecto siempre es una ins-
truccin PTP completa.
En las dems instrucciones se pueden omitir Status y Turn:
La unidad de control del robot conserva un valor de Status anterior.
El valor Turn resulta con el movimiento CP procedente de la trayecto-
ria.
Para los movimientos SPTP, la unidad de control del robot selecciona
el valor Turn que ofrezca el trayecto ms corto posible (es decir, no se

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 161 / 255


Programacin de robots 2

vulnera ningn interruptor de final de carrera de software y, al mismo


tiempo, el que est ms prximo al ngulo de inicio).

Funcin STATUS
La indicacin de Status (estado) evita ambigedades en la posicin de
eje.
Bit 0: indica la posicin del punto de interseccin de los ejes de la mueca
(A4, A5, A6).

Posicin Valor
rea por encima de la cabeza Bit 0 = 1
El robot se encuentra en el rea por encima de la
cabeza si el valor X del punto de interseccin de los
ejes de la mueca es negativo, referido al sistema de
coordenadas A1.
rea de base Bit 0 = 0
El robot se encuentra en el rea de base si el valor X
del punto de interseccin de los ejes de la mueca es
positivo, referido al sistema de coordenadas A1.

Fig. 7-17: Ejemplo: El punto de interseccin de los ejes de la mueca


(punto rojo) se encuentra en el rea de base.

Bit 1: indica la posicin del eje 3. El ngulo en el que se modifica el valor


del bit 1 depende del tipo de robot.
Para los robots cuyos ejes 3 y 4 se interseccionan, se aplica lo siguiente:

162 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


7 Programacin de movimientos con KRL

Posicin Valor
A3 0 Bit 1 = 1
A3 < 0 Bit 1 = 0

En los robots con un offset entre el eje 3 y el eje 4, el ngulo en el que se


modifica el valor del bit 1, depende de la magnitud de este offset.

Fig. 7-18: Offset entre A3 y A4: Ejemplo KR 30

Bit 2: indica la posicin del eje 5.

Posicin Valor
A5 > 0 Bit 2 = 1
A5 0 Bit 2 = 0

Bit 3 no se utiliza y siempre es 0.


Bit 4: indica si el punto ha sido programado o no con un robot de precisin
absoluta.
Con independencia del valor del bit, el punto puede se puede alcanzar
tanto con robots de precisin absoluta como con robots que no sean pre-
cisin absoluta. El bit 4 sirve solo de informacin y no tiene influencia en
el modo de clculo del punto por parte de la unidad de control del robot.
Esto tambin significa que cuando un robot se programa offline, se puede
prescindir del bit 4.

Descripcin Valor
El punto no se ha programado con un robot de preci- Bit 4 = 0
sin absoluta.
El punto se ha programado con un robot de precisin Bit 4 = 1
absoluta.

TURN
La indicacin de Turn (giro) tambin permite poder alcanzar ngulos de
eje superiores a +180 o inferiores a -180 , sin una estrategia de despla-
zamiento especial (por ejemplo, puntos auxiliares). En los ejes rotatorios,
los bits individuales determinan el signo que precede al valor del eje del
siguiente modo:
Bit = 0: ngulo 0
Bit = 1: ngulo < 0
Vista general de todos los ejes

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 163 / 255


Programacin de robots 2

Valor Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0


0 A6 0 A5 0 A4 0 A3 0 A2 0 A1 0
1 A6 < 0 A5 < 0 A4 < 0 A3 < 0 A2 < 0 A1 < 0

Ejemplo
DECL POS XP1 = {X 900, Y 0, Z 800, A 0, B 0, C 0, S 6, T 19}

T 19 corresponde a T 'B010011'. Esto significa:

Eje ngulo Binario


A1 negativo 1
A2 negativo 2
A3 positivo 4
A4 positivo 8
A5 negativo 16
A6 positivo 32

Procedimiento 1. Abrir el programa como experto.


2. Manipular Status y Turn. Guardar temporalmente los nuevos valores cal-
culados en una nueva variable
3. Comprobar los ajustes predefinidos para la programacin de movimientos
y aceptar o inicializar de nuevo:
Herramienta ($TOOL y $LOAD)
Ajustes base ($BASE)
Herramienta externa o guiada por robot ($IPO_MODE)
Velocidad
Aceleracin
Posible distancia de aproximacin
posible control de la orientacin
4. Generar instruccin de movimiento completa como paso individual
Tipo de movimiento (SPTP, SLIN, SCIRC)
Punto de destino (con SCIRC tambin punto auxiliar)
Para CIRC posible ngulo circular (CA)
Activar aproximacin (C_SPL, C_DIS)
5. En caso de nuevo movimiento de vuelta al punto 3
6. Cerrar el editor y guardar

164 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


7 Programacin de movimientos con KRL

7.10 Ejercicio: Paletizado y despaletizado

Objetivo del Despus de completar correctamente este ejercicio, se dispondr de la com-


ejercicio petencia necesaria para efectuar las siguientes tareas:
Trabajar con campos
Clculo de coordenadas de posicin
Manejo de estructuras y del separador de puntos
Aplicacin de bucles FOR encajados
Programacin de movimientos sin formularios en lnea
Desplazamiento hasta las coordenadas de destino calculadas

Requisitos Los siguientes requisitos son necesarios para completar este ejercicio correc-
tamente:
Conocimientos sobre campos, estructuras, bucle FOR
Conocimientos tericos sobre la manipulacin de datos
Conocimientos tericos sobre la programacin de movimientos sin formu-
lario inline

Formulacin de Se debe crear un programa con el que se recojan 16 cubos del depsito de
tarea cubos y se depositen en las posiciones previstas sobre la mesa. A continua-
cin se debern recoger de nuevo todos los cubos y llevarse de vuelta al de-
psito de cubos.
Todas las posiciones para el desplazamiento deben calcularse tomando
como base una posicin programada. Los desplazamientos a las posiciones
de descarga tambin se debern realizar mediante posiciones previas calcu-
ladas. Las distancias entre las distintas posiciones de descarga son, en todos
los lados, de 80 mm respectivamente. La distancia entre la posicin de des-
carga y la posicin previa debe ser de 100 mm.
Tarea parcial 1: Plan de ejecucin del programa
Crear un PEP para la tarea descrita.
Tarea parcial 2: Clculo de las posiciones de descarga
1. Crear la posicin de inicio mediante un formulario en lnea.
2. Crear variables adecuadas para el clculo de las posiciones de descarga.
3. Inicializar las variables con valores iniciales adecuados.
4. Calcular las 16 posiciones de descarga en la mesa de trabajo.

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 165 / 255


Programacin de robots 2

Fig. 7-19

Tarea parcial 3: Clculo de las posiciones previas


1. Esta posicin se encuentra 100 mm por encima de la posicin real de la
mesa del cubo.
2. Crear variables adecuadas para el clculo de las posiciones previas.
3. Inicializar las variables con valores iniciales adecuados.
4. Calcular las 16 posiciones previas a 100 mm por encima de la mesa.
Como base para el clculo se debern aplicar las posiciones de descarga
ya calculadas.

166 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


7 Programacin de movimientos con KRL

Fig. 7-20

Tarea parcial 4: Paletizado y despaletizado de los cubos


1. Ampliar el programa con las instrucciones de avance necesarias, de for-
ma que todos los cubos se depositen en la mesa y, a continuacin, se
vuelvan a recoger.
2. Para la recogida y del depsito de los cubos en el depsito se debern uti-
lizar los mdulos ya existentes.
3. Utilizar para ello solo instrucciones KRL.
4. Si es necesario, aplicar los elementos auxiliares programados para la es-
tructuracin del programa.
Lo que se debe saber tras el ejercicio:
1. Calcular los valores para A, B, C, X, Y, Z:
INT X, Y, Z
REAL A, B, C
A = 4.5 ;A=
B = -2 ;B=
C = 4.1 ;C=
X= 2.5 ;X=
Y=4 ;Y=
Z =0.1 ;Z=
A=A*B+Y ;A =
B=B*Z+X ;B =
C = C + 4/3 ;C =
X= X + 2.5 * 4 ;X =
Y = Y 10.0/4 ;Y =
Z = 14 Z * C + A ;Z =
2. Qu se indica con la indicacin CA en el movimiento circular?
............................................................
............................................................

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 167 / 255


Programacin de robots 2

3. Cmo se llama el ajuste para el TCP externo?


.............................................................
.............................................................
4. Cmo se ajusta la aproximacin en un movimiento LIN?
.............................................................
.............................................................

168 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


7 Programacin de movimientos con KRL

7.11 Programacin de bloques SPLINE

Adems de los pasos individuales con SPTP, SLIN, SCIRC y de los mo-
vimientos relativos, se dispone de un "bloque SPLINE".
El bloque SPLINE se visualiza y se planifica como movimiento nico con
una "trayectoria compleja".
Existen dos clases de bloques SPLINE:
Bloque SPLINE CP: Spline con movimientos CP (SPL, SLIN, SCIRC)
Bloque SPLINE PTP: Spline con movimientos exclusivamente en la
zona del eje (solo SPTP)
Concepto de bloque: un bloque SPLINE es un conjunto de movimientos
con un TOOL, un BASE y un IPO_MODE, pero con velocidades y acele-
raciones diferentes en cada segmento.
La trayectoria se planifica con todos los puntos, pasando por todos ellos.
La trayectoria se calcula previamente en su totalidad. De este modo se co-
noce todo y la planificacin ubicar perfectamente a la trayectoria en la
zona de trabajo de los ejes.
El Spline no puede desactivar la fsica. En las trayectorias que tienen con-
tornos muy estrechos, la velocidad siempre se reduce, ya que los ejes de
los robots son siempre los elementos que actan como limitacin.
Dentro de un bloque spline no se necesita ninguna aproximacin, ya que
tiene lugar una trayectoria continua por todos los puntos. A pesar de ello,
existen casos en los que la velocidad de trayectoria cae a 0 m/s.
Podrn configurarse tambin otras funciones como la "velocidad constan-
te" o el "tiempo fijo definido".
Si el robot se desplaza a puntos que se encuentran sobre una superficie
de trabajo, al desplazar al primer punto se puede producir una colisin con
la superficie de trabajo.

Fig. 7-21: Colisin con superficie de trabajo

Para evitar una colisin, tener en cuenta la recomendacin para la transi-


cin SLIN-SPL-SLIN.
(>>> 7.10.5 "Transicin SLIN-SPL-SLIN" Pgina 180)

Fig. 7-22: Evitar colisin con superficie de trabajo

Un bloque Spline que no contiene ningn segmento no es una instruccin de


movimiento. La cantidad de segmentos en el bloque est limitada exclusiva-
mente por la capacidad de la memoria. Adems de los segmentos, un bloque
Spline puede incluir los siguientes elementos:

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 169 / 255


Programacin de robots 2

Instrucciones inline de paquetes de tecnologa que cuentan con funcin


Spline
Comentarios y lneas vacas
Un bloque Spline no debe contener otras instrucciones, por ej. asignaciones
de variables o instrucciones lgicas.

El punto de inicio de un bloque Spline es el ltimo punto antes del blo-


que Spline.
El punto de destino de un bloque Spline es el ltimo punto del bloque
Spline.
Un bloque Spline no genera ninguna parada del movimiento de avance.

7.11.1 Perfil de velocidad para movimientos SPLINE

Velocidad La trayectoria siempre es la misma, independientemente del override, de la


SPLINE velocidad o de la aceleracin.
La unidad de control del robot tiene en cuenta los lmites fsicos del robot du-
rante la planificacin. El robot se mueve tan rpido como le es posible dentro
de la velocidad programada, es decir, tanto como le permiten sus lmites fsi-
cos. Esto resulta ventajoso si se compara con los movimientos LIN y CIRC
convencionales, en los que no se tienen en cuenta los lmites fsicos durante
la planificacin. Tienen repercusin durante la ejecucin del movimiento y,
dado el caso, provocan paradas.

Reduccin de la A continuacin se incluyen aquellos casos en los que no se debe alcanzar la


velocidad velocidad programada:
Esquinas salientes
Grandes cambios de orientacin
Movimientos importantes de los ejes adicionales
Cerca de singularidades
En los segmentos Spline se puede evitar una reduccin de la velocidad pro-
vocada por grandes cambios de orientacin, seleccionando el control de
orientacin Sin orientacin. La programacin KRL para ello es como se indi-
ca a continuacin:
$ORI_TYPE = #IGNORE

La reduccin de la velocidad debido a un movimiento demasiado amplio del


eje adicional se puede evitar en los segmentos Spline mediante
$EX_AX_IGNORE.

Reduccin de la Este caso se presenta en las situaciones siguientes:


velocidad a 0 Puntos consecutivos con coordenadas idnticas.
Segmentos SLIN y/o SCIRC consecutivos. Causa: Transcurso disconti-
nuo de la direccin de la velocidad.
En el caso de transiciones SLIN-SCIRC la velocidad tambin ser 0 cuan-
do la recta pasa tangencialmente por el crculo porque, a diferencia de la
recta, el crculo es curvado.

170 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


7 Programacin de movimientos con KRL

Fig. 7-23: Parada exacta en P2

Fig. 7-24: Parada exacta en P2

Excepciones:
Si se suceden una serie de segmentos SLIN que crean una recta y que
cambian la orientacin uniformemente, la velocidad no se reduce.

Fig. 7-25: P2 es pasado sin parada exacta.

En una transicin SCIRC-SCIRC la velocidad no se reduce cuando ambos


crculos tienen el mismo punto central y el mismo radio, y cuando las
orientaciones cambian uniformemente. (aprendizaje difcil, por eso calcu-
lar y programar los puntos).

Los crculos con el mismo centro y el mismo radio a veces se progra-


mas para obtener crculos de 360. Otra posibilidad ms sencilla
consiste en programar un ngulo circular.

Reduccin de la A menudo, las modificaciones en la orientacin / modificaciones adicionales


velocidad debida de la longitud cartesiana del arco distribuidas de una forma irregular provocan
a una progra- cadas de velocidad indeseadas.
macin por Ejemplo de una distribucin irregular:
aprendizaje no
PTP {x 0, y 0, z 0, A 0, B 0, C 0} ; punto de inicio del Spline
uniforme SPLINE
SPL {x 0, y 100, z 0, A 10, B 0, C 0} ; 0,1 Cambio de orientacin
por mm de trayectocart.
SPL {x 0, y 110, z 0, A 20, B 0, C 0} ; 1 Cambio de orientacin por
mm de trayecto cart.
SPL {x 0, y 310, z 0, A 31, B 0, C 0} ; 0,055 Cambio de orientacin
por mm de trayecto cart.
ENDSPLINE

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 171 / 255


Programacin de robots 2

La posicin cartesiana, la orientacin y los ejes externos tienen una


relacin fija. Si el TCP se "arrastra" por la tangente de la trayectoria
cartesiana de un Spline, la orientacin y los ejes externos se girarn
(mediante el acoplamiento) prcticamente de una forma automtica y vice-
versa (en particular, los lmites de los segmentos suelen interpolarse total-
mente). Muchos de los descensos indeseados de la velocidad cartesiana
son imprescindibles (a causa del acoplamiento) para mantener los valores
Tirones de orientacin ($JERK.ORI),
Aceleraciones en la orientacin ($ACC.ORI1), etc.
Velocidades de orientacin ($VEL.ORI1)
programados.

Una distribucin irregular de las trayectorias de orientacin en el trayecto car-


tesiano (longitud del arco) debe acelerar o retardar la orientacin muy a me-
nudo, hecho que tambin tiende a producirse con los grandes tirones de
orientacin. En consecuencia, una distribucin irregular provoca muchos ms
descensos en la velocidad que una distribucin constante (proporcional) de
los trayectos de orientacin. Adems, con tirones bruscos, tanto el robot como
la mueca del robot podran sufrir oscilaciones.
Solucin

Mantener la mayor uniformidad posible en la orientacin y en los ejes externos


Ejemplo de una distribucin regular:
PTP {x 0, y 0, z 0, A 0, B 0, C 0} ; punto de inicio del Spline
SPLINE
SPL {x 0, y 100, z 0, A 10, B 0, C 0} ; 0,1 Cambio de orientacin
por mm de trayecto cart.
SPL {x 0, y 110, z 0, A 11, B 0, C 0} ; 0,1 Cambio de orientacin
por mm de trayecto cart.
SPL {x 0, y 310, z 0, A 31, B 0, C 0} ; 0,1 Cambio de orientacin
por mm de trayecto cart.
ENDSPLINE

Desconexin del control de orientacin por formulario inline o KRL


$ORI_TYPE = #IGNORE

Comparacin con y sin control de orientacin programado

Fig. 7-26: Con orientacin programada

172 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


7 Programacin de movimientos con KRL

Fig. 7-27: Sin orientacin programada

Pos. Observacin
1 posicin programada por aprendizaje con la orientacin
correspondiente
2 posicin interpolada
3 posicin programada por aprendizaje con la orientacin
correspondiente, su orientacin no se acepta

A menudo: se programan muchos puntos guardan-


do una distancia relativamente pequea. Sin embar-
go, el inters recae principalmente sobre la trayectoria cartesiana (x, y, z).
Sin embargo, el Spline tambin interpola la orientacin programada, lo cual
puede provocar descensos de la velocidad. Por este motivo, en el formulario
Inline "Sin orientacin o $ORI_TYPE = #IGNORE.

7.11.2 Seleccin de paso en caso de movimientos Spline

Bloque Spline En los segmentos de un bloque Spline se puede realizar una seleccin de pa-
so.
Bloque Spline CP:
El desplazamiento COI se ejecuta como movimiento LIN convencional.
Esto se avisa mediante un mensaje que deber confirmarse.
Bloque Spline PTP:
El desplazamiento COI se ejecuta como movimiento PTP convencional.
No se notifica con un mensaje.
Tras una seleccin de paso, generalmente la trayectoria se desplaza al igual
que cuando se desplaza el Spline durante la ejecucin normal del programa.
Pueden darse excepciones, como en caso de que el Spline no se haya des-
plazado nunca antes de la seleccin de paso y, siempre y cuando, la selec-
cin de paso se haya ejecutado al inicio del bloque Spline:
El punto de inicio del movimiento Spline es el ltimo punto antes del bloque
Spline, es decir, el punto de inicio est situado fuera del bloque. La unidad de
control del robot guarda el punto de inicio durante la ejecucin normal de un
Spline. De este modo, se reconoce en caso de que se vaya a realizar poste-
riormente una seleccin de paso. No obstante, si todava no se ha desplazado
el bloque Spline, esto indica que el punto de inicio no es conocido.
Si despus del desplazamiento COI se pulsa la tecla de inicio, la trayectoria
alterada se anuncia mediante un mensaje que deber confirmarse.
Ejemplo: Trayectoria modificada en seleccin de paso en P1

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 173 / 255


Programacin de robots 2

Fig. 7-28: Ejemplo: Trayectoria modificada en seleccin de paso en P1

1 PTP P0
2 SPLINE
3 SPL P1
4 SPL P2
5 SPL P3
6 SPL P4
7 SCIRC P5, P6
8 SPL P7
9 SLIN P8
10 ENDSPLINE

Lnea Descripcin
2 Encabezamiento/inicio del bloque Spline CP
39 Segmentos Spline
10 Fin del bloque Spline CP

SCIRC Al seleccionar pasos en un segmento SCIRC que tenga programado un n-


gulo circular, el punto de destino se desplaza teniendo en cuenta el ngulo cir-
cular, siempre y cuando la unidad de control del robot conozca el punto inicial.
En caso de que la unidad de control del robot no conozca el punto de inicio,
se desplazar el punto de destino programado. En este caso aparece un men-
saje que informa de que no se tiene en cuenta el ngulo circular.
Durante la seleccin de paso en un movimiento individual SCIRC, no se to-
mar nunca en consideracin el ngulo circular.

7.11.3 Cambios en bloques Spline

Descripcin Cambio de la posicin del punto:


Si se desplaza un punto dentro del bloque spline, el cambio mx. de la tra-
yectoria se efecta en los dos segmentos antes de este punto y los dos
segmentos consecutivos.
Normalmente, los desplazamientos de punto menores producen modifica-
ciones de trayectoria menores. No obstante, en el caso de segmentos
muy largos y segmentos muy cortos consecutivos, incluso las modificacio-
nes menores podran tener efectos considerables.

174 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


7 Programacin de movimientos con KRL

Cambio del tipo de segmento:


En caso de cambiar un segmento SPL en un segmento SLIN y vice versa,
la trayectoria cambia en el segmento precedente y en el segmento conse-
cutivo.

Ejemplo 1 Trayectoria original:


PTP P0
SPLINE
SPL P1
SPL P2
SPL P3
SPL P4
SCIRC P5, P6
SPL P7
SLIN P8
ENDSPLINE

Fig. 7-29: Trayectoria original

Respecto a la trayectoria original, se desplaza un punto:


P3 se desplaza. As, se modifica la trayectoria en los segmentos P1 - P2, P2 -
P3 y P3 - P4. El segmento P4 - P5 no se modifica en este caso porque per-
tenece a un SCIRC, definndose as una trayectoria circular.

Fig. 7-30: El punto se desplaz

Por lo que repecta a la trayectoria original, se modifica el tipo de un seg-


mento:

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 175 / 255


Programacin de robots 2

En el caso de la trayectoria original el tipo de segmento cambia de P2 - P3 de


SPL a SLIN. La trayectoria cambia en los segmentos P1 - P2, P2 - P3 y P3 -
P4.
PTP P0
SPLINE
SPL P1
SPL P2
SLIN P3
SPL P4
SCIRC P5, P6
SPL P7
SLIN P8
ENDSPLINE

Fig. 7-31: Tipo de segmento modificado

Ejemplo 2 Trayectoria original:


...
SPLINE
SPL {X 100, Y 0, ...}
SPL {X 102, Y 0}
SPL {X 104, Y 0}
SPL {X 204, Y 0}
ENDSPLINE

Fig. 7-32: Trayectoria original

Respecto a la trayectoria original, se desplaza un punto:


P3 se desplaza. Por ello la trayectoria cambia en todos los segmentos repre-
sentados. Dado que P2 - P3 y P3 - P4 son segmentos muy cortos y P1 - P2 y
P4 - P5 segmentos largos, el desplazamiento pequeo provoca un cambio im-
portante de la trayectoria.
...
SPLINE
SPL {X 100, Y 0, ...}
SPL {X 102, Y 1}
SPL {X 104, Y 0}

176 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


7 Programacin de movimientos con KRL

SPL {X 204, Y 0}
ENDSPLINE

Fig. 7-33: El punto se ha desplazado.

Solucin:
Distribuir las distancias de puntos de forma ms constante
Programar las rectas (excepto las rectas muy cortas) como segmentos
SLIN

7.11.4 Sustituir un movimiento CP aproximado por un movimiento Spline

Descripcin Para sustituir los movimientos CP convencionales aproximados por los movi-
mientos Spline, se debe modificar el programa de la siguiente manera:
Substituir LIN - LIN por SLIN - SPL - SLIN.
Substituir LIN - CIRC por SLIN - SPL - SCIRC.
Recomendacin: Dejar que el SPL se adentre un poco en el crculo origi-
nal. De este modo el SCIRC se inicia ms tarde que el CIRC original.
En caso de movimientos aproximados se programa el punto de esquina. Por
el contrario, en el bloque Spline se programan puntos tanto en el inicio de la
aproximacin como en el final de la aproximacin.
El movimiento aproximado siguiente debe reproducirse:
LIN P1 C_DIS
LIN P2

Movimiento Spline:
SPLINE
SLIN P1A
SPL P1B
SLIN P2
ENDSPLINE

P1A = inicio de la aproximacin, P1B = final de la aproximacin

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 177 / 255


Programacin de robots 2

Fig. 7-34: Movimiento con posicionamiento aproximado - Movimiento


spline

Posibilidades para determinar P1A y P1B:


Desplazar la trayectoria aproximada y guardar las posiciones en los luga-
res deseados utilizando el Trigger.
Calcular los puntos del programa con KRL.
El inicio de la aproximacin puede determinarse a partir del criterio de
aproximacin. Ejemplo: en caso de que se indique C_DIS como criterio de
aproximacin, la distancia desde el inicio de la aproximacin hasta el pun-
to de esquina se corresponde con el valor de $APO.CDIS.
El punto terminal de aproximado depende de la velocidad programada.
La trayectoria SPL no corresponde exactamente al arco de aproximacin, aun
cuando P1A y P1B se encuentran exactamente en el inicio de aproximado y
el punto terminal de aproximado. Para obtener de forma exacta el arco de
aproximacin, se deben inserir puntos adicionales en el Spline. Normalmente
un punto es suficiente.

Ejemplo El movimiento aproximado siguiente debe reproducirse:


$APO.CDIS=20
$VEL.CP=0.5
LIN {Z 10} C_DIS
LIN {Y 60}

Movimiento Spline:
SPLINE WITH $VEL.CP=0.5
SLIN {Z 30}
SPL {Y 30, Z 10}
SLIN {Y 60}
ENDSPLINE

El inicio del arco de aproximacin fue calculado desde el criterio de aproxima-


do.

178 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


7 Programacin de movimientos con KRL

Fig. 7-35: Ejemplo: Movimiento con posicionamiento aproximado - Movi-


miento spline, 1

La trayectoria SPL todava no corresponde al arco de aproximacin. Por ello


se introduce un otro segmento SPL en el Spline.
SPLINE WITH $VEL.CP=0.5
SLIN {Z 30}
SPL {Y 15, Z 15}
SPL {Y 30, Z 10}
SLIN {Y 60}
ENDSPLINE

Fig. 7-36: Ejemplo: Movimiento con posicionamiento aproximado - Movi-


miento spline, 2

Por el punto adicional la trayectoria corresponde al arco de aproximacin.

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 179 / 255


Programacin de robots 2

7.11.5 Transicin SLIN-SPL-SLIN

En la secuencia de segmentos SLIN-SPL-SLIN se prefiere como norma que


el segmento SPL transcurra dentro del ngulo menor entre las dos rectas. En
funcin del punto de inicio y de destino del segmento SPL, la trayectoria pue-
de transcurrir tambin por fuera.

Fig. 7-37: SLIN-SPL-SLIN

La trayectoria transcurre por dentro si se cumplen las condiciones siguientes:


Los dos segmentos SLIN se cortan.
2/3 a/b 3/2
a = Distancia del punto de inicio del segmento SPL al punto de intersec-
cin de los segmentos SLIN
b = Distancia del punto de interseccin de los segmentos SLIN al punto
de destino del segmento SPL

7.11.6 PROG programacin de bloques SPLINE con KRL

Bloque spline CP SPLINE ENDSPLINE define un bloque Spline CP. Un bloque Spline CP
KRL puede contener:
Segmentos SLIN, SCIRC y SPL (cantidad limitada por la capacidad de la
memoria.)
PATH-Trigger
1 bloque de tiempo (TIME_BLOCK )
o 1 zona de desplazamiento constante (CONST_VEL )
STOP WHEN PATH
Comentarios
Lneas vacas
El bloque no debe contener otras instrucciones, p. ej. asignaciones de varia-
bles o instrucciones lgicas.
Sintaxis
SPLINE < WITH SysVar1 = Valor1 <, SysVar2 = Valor2, > >
Segmento1

<SegmentoN>

180 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


7 Programacin de movimientos con KRL

ENDSPLINE <C_SPL>

Elemento Descripcin
SysVar
Valor Asignacin de valor a la variable del sistema. El valor no
es vlido para los segmentos a los que se haya asignado
un valor propio. Exceptuando este caso, el valor es vlido
como ocurre habitualmente hasta que se asigne un valor
nuevo a la variable del sistema.
Las variables del sistema tambin se pueden ocupar por
activacin de funcin. Para esta funcin se aplican las mis-
mas restricciones que para las funciones en el Trigger.
C_SPL Con C_SPL: Se da una aproximacin al punto de desti-
no. $APO determina cundo se iniciar como muy
pronto el posicionamiento aproximado.
Sin C_SPL: El punto de destino se alcanza con exacti-
tud.

Hasta el software del sistema 8.2, la identificacin para el posiciona-


miento aproximado en Spline era "C_DIS". Si en versiones superio-
res a 8 se utilizan programas basados en 8.2 o en versiones
anteriores y contienen C_DIS, no ser necesario cambiarlo a C_SPL, sino
que se puede dejar.

SPLINE
SPL P1
TRIGGER WHEN PATH=GET_PATH() ONSTART DELAY=0 DO SUBPROG() PRIO=-1
SPL P2
SLIN P3
SPL P4
SCIRC P5, P6 WITH $VEL.CP=0.2
SPL P7 WITH $ACC={CP 2.0, ORI1 200, ORI2 200}
SCIRC P8, P9
SPL P10
ENDSPLINE

Bloque spline PTP_SPLINE ENDSPLINE define un bloque Spline PTP. Un bloque Spline
PTP KRL PTP puede contener:
Segmentos SPTP (cantidad limitada por la capacidad de la memoria).
PATH-Trigger
1 bloque de tiempo (TIME_BLOCK )
STOP WHEN PATH
Comentarios
Lneas vacas
El bloque no debe contener otras instrucciones, p. ej. asignaciones de varia-
bles o instrucciones lgicas.
Sintaxis
PTP_SPLINE < WITH SysVar1 = Valor1 <, SysVar2 = Valor2, > >
Segmento1

<SegmentoN>
ENDSPLINE <C_SPL>

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 181 / 255


Programacin de robots 2

Elemento Descripcin
SysVar
Valor Asignacin de valor a la variable del sistema. El valor no
es vlido para los segmentos a los que se haya asignado
un valor propio. Exceptuando este caso, el valor es vlido
como ocurre habitualmente hasta que se asigne un valor
nuevo a la variable del sistema.
Las variables del sistema tambin se pueden ocupar por
activacin de funcin. Para esta funcin se aplican las mis-
mas restricciones que para las funciones en el Trigger.
C_SPL Con C_SPL: Se da una aproximacin al punto de desti-
no. $APO determina cundo se iniciar como muy
pronto el posicionamiento aproximado.
Sin C_SPL: El punto de destino se alcanza con exacti-
tud.

PTP_SPLINE WITH $ACC_AXIS[1]={CP 20, ORI1 80, ORI2 80}


SPTP P1
TRIGGER WHEN PATH=GET_PATH() ONSTART DELAY=0 DO SUPBROG( ) PRIO=85
SPTP P2
SPTP P3
SPTP P4 WITH $ACC_AXIS[1]={CP 10}
ENDSPLINE C_SPL

Programacin SPL puede utilizarse solamente en bloques CP SPLINE.


KRL de SPL, SLIN y SCIRC pueden utilizarse como paso individual o en un bloque CP
SLIN, SCRIC y SPLINE.
SPTP SPTP puede utilizarse como paso indvidual o en un bloque PTP SPLINE.
La programacin es prcticamente igual, solamente SCIRC puede pro-
veerse adicionalmente de un ngulo circular.
Las palabras clave son SPL, SLIN, SCIRC y SPTP.
Tambin pueden utilizarse los movimientos relativos conocidos
SLIN_REL, SCIRC_REL y SPTP_REL.

Sintaxis
SPL:
SPL Punto de destino < WITH SysVar1 = Valor1 <,SysVar2 = Valor2 , >>
SLIN:
SLIN Punto de destino <WITH SysVar1 = Valor1 <, SysVar2 = Valor2 , , >>
<C_SPL>
SCIRC:
SCIRC Punto auxiliar, Punto de destino <, CA ngulo circular> <WITH
SysVar1 = Valor1 <,SysVar2 = Valor2 , >> <C_SPL>
SPTP:
SPTP Punto de destino <WITH SysVar1 = Valor1 <, SysVar2 = Valor2 , >>
<C_SPL>

182 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


7 Programacin de movimientos con KRL

Elemento Descripcin
Punto auxi- Tipo: POS, E6POS, FRAME
liar
Las coordenadas hacen referencia al sistema de coorde-
Punto de nadas BASE.
destino
Si no se indican todos los componentes del punto de des-
tino, la unidad de control adopta los valores de la posicin
anterior para los componentes que faltan. Si esta posicin
anterior es el punto de destino de un circuito con ngulo
circular, existe la siguiente diferencia:
Si la posicin anterior se encuentra fuera de un bloque
Spline, se aceptarn los valores del punto de destino
realmente alcanzado y no del punto de destino progra-
mado.
Si la posicin anterior se encuentra en un bloque Spli-
ne, se aceptarn los valores del punto de destino pro-
gramado y no del punto de destino realmente
alcanzado.
Si ninguna posicin anterior es conocida para la unidad de
control del robot, los componentes que falten se aceptarn
de la posicin actual del robot.
ngulo cir- Unidad: Grado; sin limitacin
cular

SysVar
Valor Asignacin de valor a la variable del sistema
Para segmentos: La asignacin solo es vlida para ese
segmento.
Las variables del sistema tambin se pueden ocupar por
activacin de funcin. Para esta funcin se aplican las mis-
mas restricciones que para las funciones en el Trigger.

C_SPL Con C_SPL: Se da una aproximacin al punto de desti-


no. $APO determina cundo se iniciar como muy
pronto el posicionamiento aproximado.
Solo es posible para movimientos individuales, no para
segmentos.
Sin C_SPL: El punto de destino se alcanza con exacti-
tud.

7.11.7 Bloque SPLINE: Variables del sistema con WITH

Segmento Spline Para los segmentos Spline se pueden describir las siguientes variables de sis-
tema con la lnea WITH:
$ACC
$ACC_AXIS
$ACC_EXTAX
$CIRC_TYPE
$EX_AX_IGNORE
$GEAR_JERK
$JERK

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 183 / 255


Programacin de robots 2

$ORI_TYPE
$ROTSYS
$SYNC_ID
$VEL
$VEL_AXIS
$VEL_EXTAX
Adicionalmente para SCIRC y SLIN: $CIRC_MODE

Las variables del sistema estn descritas en el captulo variables del


sistema.

184 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


8 Trabajar con variables de sistema

8
T
Trabajar con variables de sistema

8.1 Resumen
j

Esta unidad incluye los siguientes contenidos:


Medicin del tiempo ciclo mediante temporizador

8.2 Medicin del tiempo de ciclo mediante temporizador

Descripcin de la
medicin del
tiempo ciclo con
el temporizador
de sistema de
KUKA

Fig. 8-1

$TIMER[1]
$TIMER[2]
...
$TIMER[32]
Las variables de sistema $TIMER[Nr] sirven para medir procesos temporales.

La introduccin del valor/indicacin del temporizador $TIMER[Nr] se


realiza en milisegundos (ms).

Inicio y parada del temporizador a travs de KRL


INICIO: $TIMER_STOP[Nr] = FALSE
PARADA: $TIMER_STOP[Nr] = TRUE

El temporizador tambin se puede preasignar, iniciar y detener ma-


nualmente a travs de la ventana de indicacin.

Principio de Preasignacin del temporizador


medicin del la preasignacin del temporizador es de 0 ms en el momento del suminis-
tiempo ciclo tro
el temporizador mantiene su valor actual
un temporizador se puede adelantar o restituir hasta alcanzar el valor de-
seado
; Preasignacin de Timer 5 con 0ms
$TIMER[5] = 0

; Ajuste del Timer 12 a 1,5 segundos

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 185 / 255


Programacin de robots 2

$TIMER[12] = 1500

; Reseteo del Timer 4 a -8 segundos


$TIMER[4] = -8000

Restablecimiento e inicializacin de un temporizador


; Timer 7 Reset a 0ms
$TIMER[7] = 0
; Arranque Timer 7
$TIMER_STOP[7] = FALSE

Parada de un temporizador y comparacin posterior


; Timer 7 en marcha
...
; Parada del Timer 7
$TIMER_STOP[7] = TRUE

; en 10 segundos o ms acontece ...


IF $TIMER[7] >= 10000 THEN
...

El inicio y la parada del temporizador se realiza siempre a travs del


puntero de ejecucin en avance. La instruccin WAIT SEC 0 es
adecuada para generar una parada del procesamiento en avance.

Procedimiento en 1. Seleccin de un temporizador "libre" de los 32 temporizadores posibles


la medicin del 2. Preasignacin / reset del temporizador
tiempo ciclo 3. Arrancar el temporizador teniendo en cuenta el puntero de movimiento de
avance
4. Detener el temporizador teniendo en cuenta el puntero de movimiento de
avance
5. Guardar temporalmente el posible tiempo del ciclo actual o predesignar de
nuevo el temporizador
DEF MY_TIME( )
...
INI
$TIMER[1] = 0 ; Resetear TIMER 1
PTP HOME Vel=100% DEFAULT

WAIT SEC 0 ; Activar parada del procesamiento en avance


$TIMER_STOP[1]=FALSE ; Arrancar medicin tiempo de ciclo

SPTP XP1
SPTP XP2
SLIN XP3
...
SPTP X50
SPTP XHOME

WAIT SEC 0 ; Activar parada del procesamiento en avance


$TIMER_STOP[1]=TRUE ; Parar medicin tiempo de ciclo

; Memorizacin intermedia del tiempo de ciclo actual en el Timer 12


$TIMER[12] = $TIMER[1]; el valor se puede leer ahora en la indicacin
del temporizador
END

186 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


8 Trabajar con variables de sistema

8.3 Ejercicio: Medicin del tiempo ciclo y optimizacin

Objetivo del Despus de completar correctamente este ejercicio, se dispondr de la com-


ejercicio petencia necesaria para efectuar las siguientes tareas:
Trabajar con un temporizador (inicializar, iniciar, detener).
Realizar la optimizacin del tiempo de ciclo.

Requisitos Los siguientes requisitos son necesarios para completar este ejercicio correc-
tamente:
Conocimientos sobre variables de sistema $TIMER[x].

Formulacin de Duplicar el programa "Palet" y asignar el nombre "Medicin de tiempo". Se de-


tarea ben medir tres tiempos. El temporizador 1 debe medir el tiempo del paletiza-
do, el temporizador 2 el proceso de recogida y el temporizador 3 el tiempo
total de ambos procesos. Tener en cuenta que el temporizador no se debe ini-
ciar o detener con el avance.
1. Para la medicin del tiempo de paletizado, se debe utilizar $TIMER[1] y
guardar adicionalmente el valor final en $TIMER[4].
2. Nombrar el $TIMER[1] como "Paletizado actual" y el $TIMER[4] como
"Paletizado ANTERIOR".
3. Para la medicin del tiempo de despaletizado, se debe utilizar $TIMER[2]
y guardar adicionalmente el valor final en $TIMER[5].
4. Nombrar el $TIMER[2] como "Despaletizado actual" y el $TIMER[5] como
"Despaletizado ANTERIOR".
5. Para la medicin del tiempo total se utiliza $TIMER[3] y se guarda en $TI-
MER[6].
6. Nombrar el $TIMER[3] como "Total actual" y el $TIMER[6] como "Total
ANTERIOR".
7. Intentar optimizar el programa de forma adecuada.
8. Comprobar el programa en los modos de servicio T1, T2 y Automtico. Se
deben tener en cuenta las prescripciones de seguridad enseadas.
Lo que deber saberse ahora:
1. Cuntos temporizadores tiene el controlador de KUKA y cmo se inician?
............................................................
............................................................
2. Nombrar un ejemplo para una variable del fichero $CONFIG.DAT?
............................................................
............................................................

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 187 / 255


Programacin de robots 2

188 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


9 Programacin de interrupcin

9 Programacin de interrupcin

9.1 Resumen

Esta unidad incluye los siguientes contenidos:


Programacin de rutinas de interrupcin
Frenar el robot y cancelar el movimiento

9.2 Programacin de rutinas de interrupcin

Descripcin de
rutinas de
interrupcin

Fig. 9-1: Trabajos con rutinas de interrupcin

Si se da un suceso determinado, por ejemplo una entrada, la unidad de


control interrumpe el programa actual y ejecuta un subprograma predefi-
nido.
Un subprograma activado por una interrupcin se denomina Programa de
interrupcin.
Pueden declararse como mximo 32 interrupciones al mismo tiempo.
Simultneamente pueden estar activas un mximo de 16 interrupciones.
Pasos importantes cuando se utiliza la interrupcin
Declaracin de interrupcin
Conectar/desconectar o bloquear/liberar la interrupcin
Detener el robot dado el caso
Rechazar la planificacin de trayectoria actual y recorrer una nueva tra-
yectoria dado el caso

Aspectos Si se da un suceso determinado, por ejemplo una entrada, la unidad de


generales de la control interrumpe el programa actual y ejecuta un subprograma predefi-
declaracin de nido.
interrupciones

Sintaxis <GLOBAL> INTERRUPT DECL Prio WHEN Ereignis DO Interruptprogramm

Global
Una interrupcin recin se reconoce a partir del nivel en el cual fue de-
clarada.

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 189 / 255


Programacin de robots 2

Fig. 9-2: Validez de la interrupcin

Una interrupcin declarada en un subprograma no es conocida en el


programa principal (aqu, interrupcin 23).
Una interrupcin con la palabra clave GLOBAL antepuesta en la decla-
racin es conocida tambin en los niveles superiores (aqu, interrup-
cin 2).
Prio: prioridad
Estn disponibles las prioridades 1, 2, 4 - 39 y 81 -128.
Las prioridades 3 y 40 - 80 estn reservadas para su uso por parte del
sistema.
Puede que la interrupcin 19 est preasignada para el test de frenos.
Si se producen simultneamente varias interrupciones, se procesar
en primer lugar la que tenga la prioridad ms alta y, a continuacin, las
de prioridades ms bajas. (1 = prioridad ms alta)

190 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


9 Programacin de interrupcin

Fig. 9-3: Prioridades de las interrupciones

Evento: Suceso con el que debe darse la interrupcin.

Este evento es reconocido por un flanco cuando se produce (disparo


por flancos).

Programa de interrupcin
Nombre del programa de interrupcin que debe ejecutarse.
Este subprograma se denomina Programa de interrupcin.
Las variables de duracin temporal no se pueden transmitir como pa-
rmetros al programa de interrupcin.
Se permiten variables declaradas en una lista de datos o bien median-
te transferencia de variables.

Ejemplo: Decla- INTERRUPT DECL 23 WHEN $IN[12]==TRUE DO INTERRUPT_PROG(20,VALUE)


racin de una
Interrupcin local
interrupcin
Prioridad: 23
Evento: la entrada 12 se dectecta como flanco positivo (ascendente).
Programa de interrupcin: INTERRUPT_PROG(20,VALUE)

Despus de la declaracin est desactivada una interrupcin. La in-


terrupcin se debe activar antes de que se pueda reaccionar al even-
to definido!

Despus de la declaracin est desactivada una interrupcin. La in-


terrupcin se debe activar antes de que se pueda reaccionar ante el
evento definido.

Descripcin Conexin/desconexin/bloqueo/liberacin de la interrupcin

Opciones con la Tras declarar una interrupcin, se debe activar inmediatamente.


instruccin Activa una interrupcin.
INTERRUPT ...
Desactiva una interrupcin.
Bloquea una interrupcin.

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 191 / 255


Programacin de robots 2

Desbloquea una interrupcin.

Sintaxis INTERRUPT Accin <Nmero>


Accin
ON: Activa una interrupcin.
OFF: Desactiva una interrupcin.
DISABLE: Bloquea una interrupcin activada.
ENABLE: Desbloquea una interrupcin bloqueada.
Nmero
Nmero (=prioridad) de la interrupcin a la que hace referencia la accin.
El nmero se puede omitir.
En este caso ON o OFF hacen referencia a todas las interrupciones decla-
radas, DISABLE o ENABLE a todas las interrupciones activas.

Activar y desac- Ejemplo


tivar una Conexin y desconexin de una interrupcin
interrupcin
INTERRUPT DECL 20 WHEN $IN[22]==TRUE DO SAVE_POS( )
...
INTERRUPT ON 20
;Se detecta la interrupcin y se ejecuta (flanco positivo)
...
INTERRUPT OFF 20 ; La interrupcin est desactivada

En este caso, la interrupcin se desencadena con el cambio de estado,


p. ej., para $IN[x]==TRUE, con el cambio de FALSE a TRUE. El estado no
debe existir ya cuando se d INTERRUPT ON; en caso contrario, no se
podr desencadenar la interrupcin.
En este caso, adems se debe tener en cuenta lo siguiente: El cambio de
estado se debe producir como muy pronto un ciclo de interpolacin des-
pus de INTERRUPT ON.
(Esto se puede conseguir programando WAIT SEC 0.012 tras INTE-
RRUPT ON. Si no se desea que se produzca una parada del proce-
samiento en avance, adems se puede programar CONTINUE antes
de WAIT SEC.)
El motivo es que INTERRUPT ON necesita un ciclo de interpolacin
(= 12 ms) para que la interrupcin se active realmente. Si se cambia
el estado antes, la interrupcin no podr reconocer el cambio.

Rebotes de teclas
Si existe el riesgo de que una interrupcin se desencadene, por error,
dos veces debido a la sensibilidad de un sensor ("rebotes de teclas"),
puede evitarse desactivando la interrupcin en la primera lnea del programa
de interrupcin.
Sin embargo, se ha de tener presente que aqu tampoco se detectar, en
ningn momento, una interrupcin real durante el procesamiento de la inte-
rrupcin. Antes de retroceder, si tiene que continuar estando activa la inte-
rrupcin, se debe volver a conectar.

Bloquear y liberar Ejemplo


la interrupcin
INTERRUPT DECL 21 WHEN $IN[25]==TRUE DO INTERRUPT_PROG( )
...
INTERRUPT ON 21
;Se detecta la interrupcin y se ejecuta de inmediato (flanco
positivo)
...
INTERRUPT DISABLE 21

192 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


9 Programacin de interrupcin

;Se detecta la interrupcin y se guarda, pero no se ejecuta (flanco


positivo)
...
INTERRUPT ENABLE 21
; Ahora se ejecutan las interrupciones guardadas
...
INTERRUPT OFF 21 ; La interrupcin est desactivada
...

Una interrupcin bloqueada es detectada y guardada. La ejecucin


tiene lugar directamente tras la liberacin de la interrupcin. En este
caso se debe prestar atencin a la ausencia de colisiones cuando se
realicen movimientos.

Procedimiento 1. Declaracin de interrupcin


Establecer la prioridad
Determinar el evento desencadenante
Definir y crear una rutina de interrupcin
DEF MY_PROG( )

INI
INTERRUPT DECL 25 WHEN $IN[99]==TRUE DO ERROR( )

END
_________________________________________________
DEF ERROR()

END

2. Activar y desactivar una interrupcin


DEF MY_PROG( )

INI
INTERRUPT DECL 25 WHEN $IN[99]==TRUE DO ERROR( )
INTERRUPT ON 25
...
...
INTERRUPT OFF 25

END
_________________________________________________
DEF ERROR()

END

3. Ampliar un programa con movimientos y definir acciones en la rutina de


interrupcin
DEF MY_PROG( )

INI
INTERRUPT DECL 25 WHEN $IN[99]==TRUE DO ERROR( )
INTERRUPT ON 25
SPTP XHOME
SPTP XP1
SPTP XP2
SPTP XHOME

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 193 / 255


Programacin de robots 2

INTERRUPT OFF 25
END
_________________________________________________
DEF ERROR()
$OUT[20]=FALSE
$OUT[21]=TRUE
END

Variables tiles
del sistema para
parada exacta

Fig. 9-4: Variables de sistema para parada exacta

Variables de
sistema tiles en
caso de aproxi-
macin

Fig. 9-5: Variables de sistema en caso de posicionamiento aproximado

194 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


9 Programacin de interrupcin

9.3 Ejercicio: Trabajos con interrupciones

Objetivo del Despus de completar correctamente este ejercicio, se dispondr de la com-


ejercicio petencia necesaria para efectuar las siguientes tareas:
Declaracin de una interrupcin
Crear un subprograma de interrupcin
Evaluar y procesar interrupciones durante la ejecucin del programa

Requisitos Los siguientes requisitos son necesarios para completar este ejercicio correc-
tamente:
Conocimientos del lenguaje de programacin KRL
Conocimientos tericos sobre la programacin de interrupciones

Formulacin de El objetivo de esta tarea es detectar la posicin de 3 cubos mediante un des-


tarea plazamiento de medicin definido y guardar dichas posiciones.
1. Cree un nuevo programa con el nombre "BUSCAR".
2. Tome tres cubos del cargador (sin utilizar el robot) y colquelos en lnea
sobre la mesa.
3. Programe un movimiento SLIN como desplazamiento de bsqueda que
pase por encima de los tres cubos. La velocidad se debe ajustar a 0,2 m/s.
4. Es necesario activar o desactivar el sensor con la salida 27. Como confir-
macin de la determinacin de posicin recibir una seal en la entrada
27.
5. Al detectar un cubo, el mensaje de observacin debe provocar la visuali-
zacin de la posicin X, Y y Z del cubo. La posicin se debe guardar al
mismo tiempo que se detecta. Para ello, utilice un campo creado en el fi-
chero DAT local o $config.dat.
6. Al final del desplazamiento de bsqueda se deben mostrar las tres posi-
ciones guardadas avanzando hasta ellas, es decir, se debe avanzar a la
posicin, mensaje de observacin "Nmero de cubo X avanzado" y, a
continuacin, avanzar a la siguiente posicin.
7. Compruebe su programa segn prescripcin.
Lo que se debe saber tras el ejercicio:
1. En qu parte del programa se declara la interrupcin?
............................................................
............................................................
2. Cul es la diferencia entre INTERRUPT OFF 99 e INTERRUPT DISABLE
99?
............................................................
............................................................
............................................................
............................................................
3. Cundo se activa el subprograma de interrupcin?
............................................................
............................................................
4. Qu provoca la instruccin INTERRUPT OFF al comienzo de un subpro-
grama de interrupcin?
............................................................
............................................................

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 195 / 255


Programacin de robots 2

5. Qu rango de prioridad no se ha liberado para la interrupcin?


.............................................................
.............................................................

196 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


9 Programacin de interrupcin

9.4 Frenar el robot y cancelar el movimiento

Descripcin Frenar el robot, a continuacin continuar con el movimiento "antiguo".


(>>> "Frenar el movimiento del robot y continuar movimientos "antiguos""
Pgina 197)
Frenar el robot, cancelar el movimiento "antiguo" y continuar con el movi-
miento nuevo. (>>> "Frenar el movimiento del robot y cancelar movimien-
tos "antiguos"" Pgina 198)

Frenar el El robot se detiene con BRAKE y reanuda la marcha al final de la rutina de


movimiento del interrupcin con la trayectoria planeada en el programa principal.
robot y continuar El robot se detiene con BRAKE y pasa a la rutina de interrupcin. Una vez
movimientos finalizada la rutina de interrupcin, la trayectoria se reanuda desde el pro-
"antiguos" grama principal.

Se debe evitar que se produzcan colisiones.


Si no se respeta esta medida, pueden ocasionarse
daos materiales, lesiones corporales e incluso la muerte.

Para detenerlo, se cuenta con dos rampas de frenado (STOP 1 y STOP 2)


El programa de interrupcin slo se reanuda cuando el robot se ha para-
do.
En cuanto finaliza el programa de interrupcin, se reanuda el movimiento
iniciado por el robot.
Sintaxis:
BRAKE: STOP 2
BRAKE F: STOP 1

BRAKE slo se puede utilizar en un programa de interrupcin.

Procedimiento 1. Declaracin de interrupcin


Establecer la prioridad
Determinar el evento desencadenante
Definir y crear una rutina de interrupcin
Activar y desactivar una interrupcin
DEF MY_PROG( )

INI
INTERRUPT DECL 25 WHEN $IN[99]==TRUE DO ERROR( )
INTERRUPT ON 25
...
...
INTERRUPT OFF 25

END
_________________________________________________
DEF ERROR()

END

2. Ampliar un programa con movimientos, frenar el robot en la rutina de inte-


rrupcin y definir la lgica
DEF MY_PROG( )

INI

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 197 / 255


Programacin de robots 2

INTERRUPT DECL 25 WHEN $IN[99]==TRUE DO ERROR( )


INTERRUPT ON 25
SPTP XHOME
SPTP XP1
SPTP XP2
SPTP XHOME
INTERRUPT OFF 25
END
_________________________________________________
DEF ERROR()
BRAKE
$OUT[20]=FALSE
$OUT[21]=TRUE
END

Frenar el El robot se detiene con BRAKE y debe realizar una nueva trayectoria una
movimiento del vez finalizada la rutina de interrupcin. Para ello se puede utilizar la ins-
robot y cancelar truccin RESUME.
movimientos El robot se detiene con BRAKE y pasa a la rutina de interrupcin. Una vez
"antiguos" finalizada la rutina de interrupcin, no se debe continuar con la primera,
sino que se debe realizar una nueva planificacin de trayectoria. Para ello
se puede utilizar tambin la instruccin RESUME.

Puesto que no se puede estimar con exactitud cun-


do se desencadenar la interrupcin, debe ser posi-
ble desplazarse sin colisionar dentro de la rutina de interrupcin y de la
marcha siguiente en todas las posiciones posibles de la marcha actual del
robot.
Si no se respeta esta medida, pueden ocasionarse daos materiales, lesio-
nes corporales e incluso la muerte.

Funciones de RESUME cancela todos los programas de interrupcin y subprogramas en


RESUME curso hasta el nivel en el cual se encuentra declarada la interrupcin ac-
tual.
En el momento de la instruccin RESUME, el puntero de movimiento de
avance no debe estar en el mismo nivel en el que se ha declarado la inte-
rrupcin sino, como mnimo, en un nivel inferior.
RESUME solo puede estar presente en programas de interrupcin.
En cuanto se declare una interrupcin como GLOBAL, ya no se podr uti-
lizar RESUME en la rutina de interrupcin.
Las modificaciones de las variables $BASE en el programa de interrup-
cin solo son vigentes all.
El procesamiento en avance, es decir, la variable $ADVANCE, no se pue-
de modificar en el programa de interrupcin.
Los movimientos que deben cancelarse por BRAKE y RESUME en prin-
cipio se deben programar en un subprograma.
El comportamiento de la unidad de control del robot tras RESUME depende
de la siguiente instruccin de movimiento:
Instruccin SPTP: la marcha se realiza como movimiento SPTP.
Instruccin SLIN: la marcha se realiza como movimiento SLIN.
Instruccin SCIRC: la marcha se realiza siempre como movimiento
SLIN!
Si la primera instruccin de movimiento despus de RESUME es un movi-
miento SCIRC, se realizar siempre como SLIN. El movimiento se produce de
manera diferente a como se plane inicialmente. Este comportamiento se
debe tener en cuenta cuando se programen instrucciones RESUME.

198 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


9 Programacin de interrupcin

El robot debe poder avanzar al punto de destino del movimiento SCIRC como
SLIN sin peligro desde cualquier posicin posible en la que se pueda encon-
trar durante RESUME.

Procedimiento 1. Declaracin de interrupcin


Establecer la prioridad
Determinar el evento desencadenante
Definir y crear una rutina de interrupcin
DEF MY_PROG( )

INI
INTERRUPT DECL 25 WHEN $IN[99]==TRUE DO ERROR( )
...
END
_________________________________________________
DEF ERROR()
...
END

2. Ampliar un programa con movimientos:


Para poder cancelarlo, el movimiento se debe realizar en un subpro-
grama
El puntero de movimiento de avance debe permanecer en el subpro-
grama
Activar y desactivar una interrupcin
DEF MY_PROG( )

INI
INTERRUPT DECL 25 WHEN $IN[99]==TRUE DO ERROR( )
SEARCH()
END
_________________________________________________
DEF SEARCH()
INTERRUPT ON 25
SPTP XHOME
SPTP XP1
SPTP XP2
SPTP XHOME
WAIT SEC 0 ; Detener puntero de movimiento de avance
INTERRUPT OFF 25
END
_________________________________________________
DEF ERROR()
...
END

3. Editar una rutina de interrupcin.


Detener robot
Reposicionar el robot a $POS_INT
Rechazar el movimiento actual
Nuevo movimiento en el programa principal
DEF MY_PROG( )

INI
INTERRUPT DECL 25 WHEN $IN[99]==TRUE DO ERROR( )
SEARCH()

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 199 / 255


Programacin de robots 2

END
_________________________________________________
DEF SEARCH()
INTERRUPT ON 25
SPTP HOME
SPTP XP1
SPTP XP2
SPTP XHOME
WAIT SEC 0 ; Detener puntero de movimiento de avance
INTERRUPT OFF 25
END
_________________________________________________
DEF ERROR()
BRAKE
SPTP $POS_INT
RESUME
END

200 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


9 Programacin de interrupcin

9.5 Ejercicio: Cancelar movimientos con interrupciones

Objetivo del Despus de completar correctamente este ejercicio, se dispondr de la com-


ejercicio petencia necesaria para efectuar las siguientes tareas:
Declaracin de una interrupcin
Crear un subprograma de interrupcin
Evaluar y procesar interrupciones durante la ejecucin del programa
Frenar el movimiento del robot mediante una instruccin KRL
Frenar y cancelar el movimiento del robot mediante instrucciones KRL

Requisitos Los siguientes requisitos son necesarios para completar este ejercicio correc-
tamente:
Conocimientos del lenguaje de programacin KRL
Conocimientos tericos sobre la programacin de interrupciones
Conocimientos tericos sobre las instrucciones KRL para frenar y cance-
lar el movimiento del robot y su correcta aplicacin

Formulacin de Debe poder detectar la posicin de 3 cubos mediante un desplazamiento de


tarea medicin definido y guardar dichas posiciones. Adems, el desplazamiento
de medicin se debe cancelar directamente despus de la deteccin del ter-
cer cubo.
1. Duplique su programa BUSCAR y asgnele el nombre
"BUSCAR_CANCELAR".
2. Tome tres cubos del cargador (sin utilizar el robot) y colquelos en lnea
sobre la mesa.
3. Programe un movimiento SLIN como desplazamiento de bsqueda que
pase por encima de los tres cubos. La velocidad se debe ajustar a 0,2 m/
s. Es necesario activar o desactivar el sensor con la salida 27. Como con-
firmacin de la determinacin de posicin recibir una seal en la entrada
27.
4. Al detectar un cubo, el mensaje de observacin debe provocar la visuali-
zacin de la posicin X, Y y Z del cubo. La posicin se debe guardar al
mismo tiempo que se detecta. Para ello, utilice un campo creado en el fi-
chero DAT local o $config.dat.
5. El robot deber detenerse inmediatamente tras encontrar el tercer cubo.
Tras confirmar el mensaje "ltimo cubo encontrado; se interrumpe el des-
plazamiento de bsqueda", deber finalizarse el desplazamiento de bs-
queda.
6. Al final del desplazamiento de bsqueda se deben mostrar las tres posi-
ciones guardadas avanzando hasta ellas, es decir, se debe avanzar a la
posicin, mensaje de observacin "Nmero de cubo X avanzado" y, a
continuacin, avanzar a la siguiente posicin.
7. Compruebe el programa segn prescripcin
Lo que se debe saber tras el ejercicio:
1. Cul es la diferencia entre BRAKE y BRAKE F?
............................................................
............................................................
2. Por qu la instruccin RESUME no funciona correctamente en este caso?
INTERRUPT DECL 21 WHEN $IN[1] DO located( )
INTERRUPT ON 21
Pto. inic. SLIN
Pto. final SLIN
$ADVANCE = 0
INTERRUPT OFF 21 ...

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 201 / 255


Programacin de robots 2

END
___________________________________________
DEF located( )
INTERRUPT OFF 21
BRAKE
;pick_part
RESUME
END
3. Cuando se desencadena una interrupcin?
.............................................................
.............................................................

202 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


10 Funciones de conmutacin con KRL

10 Funciones de conmutacin con KRL

10.1 Resumen
s

Esta unidad incluye los siguientes contenidos:


Programacin de funciones de conmutacin sencillas
Programacin de funciones de conmutacin referidas a la trayectoria con
desplazamiento temporal

10.2 Programacin de funciones de conmutacin sencillas

Descripcin de Generalidades
funciones de La unidad de control del robot puede administrar, como mximo, 4096 en-
conmutacin tradas digitales4096 y 4096 salidas digitales.
sencillas De manera opcional, pueden ampliarse a travs de WorkVisual hasta 8192
entradas digitales y 8192 salidas digitales.
Las entradas/salidas se realizan a travs de sistemas de buses de campo
opcionales
La configuracin es especfica del cliente
La proyeccin se realiza a travs de WorkVisual

Fig. 10-1

Posibilidades de funciones de conmutacin sencillas


Conexin/desconexin sencilla de una salida (con avance/parada del mo-
vimiento de avance)
Pulsacin de una salida
Conmutacin de una salida con el puntero de ejecucin principal (sin pa-
rada del movimiento de avance)
Ver tambin:

Fig. 10-2: Fomularios Inline de funciones de conmutacin simple

Conmutacin con Sintaxis


parada del proce- Conexin de una salida con parada del procesamiento en avance
samiento en
$OUT[10]=TRUE
avance
Desconexin de una salida con parada del procesamiento en avance

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 203 / 255


Programacin de robots 2

$OUT[10]=FALSE

Descripcin
Mediante la conmutacin de una salida se genera una parada del movi-
miento de avance, de este modo el movimiento no podr programarse por
aproximacin
...
SLIN XP20 C_SPL
SLIN XP21
$OUT[30]=TRUE
SLIN XP22

Fig. 10-3: Conmutacin con parada del procesamiento en avance

Se generan dos mensajes de error:


Aproximacin no posible (mdulo nombre, paso nmero)
Secuencia de instrucciones sin aptitud de aproximacin (mdulo
nombre, paso nmero)

Conmutacin con Sintaxis


el movimiento de Conectar una salida en el movimiento de avance
avance
CONTINUE
$OUT[10]=TRUE

Desconectar una salida en el movimiento de avance


CONTINUE
$OUT[10]=FALSE

Descripcin
Mediante la utilizacin de la instruccin CONTINUE, se suprime la parada
del movimiento de avance y, de este modo, se conmutar con el avance.
La aproximacin es posible con CONTINUE.
CONTINUE se refiere nicamente a la lnea siguiente (incluyendo lneas
en blanco).
...
SLIN XP20
SLIN XP21 C_SPL
CONTINUE
$OUT[30]=TRUE
SLIN XP22

204 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


10 Funciones de conmutacin con KRL

Fig. 10-4: Conmutacin en el avance

Conmutacin de Sintaxis
una salida con el Conmutacin de una salida con el puntero principal y sin parada del mo-
puntero principal vimiento de avance
$OUT[10]_C=TRUE

Descripcin
Se pueden conectar hasta 8 salidas referidas a la ejecucin principal y sin
parada del movimiento de avance
En caso de que haya una parada exacta programada, se conectar al al-
canzar el punto de destino
En caso de que haya una aproximacin programada, se conectar en el
centro del movimiento de aproximacin del punto de destino
...
SLIN XP20
$OUT_C[30]=TRUE
SLIN XP21 C_SPL
SLIN XP22

Fig. 10-5: Conmutacin con la ejecucin principal

Pulsacin de una Sintaxis


salida

PULSE (Signal, Pegel, Impulsdauer)

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 205 / 255


Programacin de robots 2

Elemento Descripcin
Seal Tipo: BOOL
Salida en la que se genera el impulso. Son admisibles:
OUT[Nr]
Variable de seal
Nivel Tipo: BOOL
Expresin lgica:
TRUE hace referencia a un impulso positivo (alto).
FALSE hace referencia a un impulso negativo (ba-
jo).
Duracin del Tipo: REAL
impulso
p. ej. 1.000.000 de segundos

Descripcin
PULSE activa un impulso.
As, la salida se pone a un nivel definido durante un tiempo determinado
y, a continuacin, el sistema la restablece automticamente.
La instruccin PULSE provoca una parada del procesamiento en avance.

El impulso no se interrumpe si se da una PARADA


DE EMERGENCIA, una parada de operacin o una
parada por error.

Ejemplo:
PULSE ($OUT[30], TRUE, 20); Impulso positivo

PULSE ($OUT[31], FALSE, 20); Impulso negativo

Si se programa un impulso antes de la instruccin END, el tiempo de eje-


cucin del programa se prolongar correspondientemente
...
PULSE($OUT[50],TRUE,2)
END

Fig. 10-6: PULSE+END ejemplo

Si la ejecucin del programa se devuelve a su estado inicial (RESET) o se


interrumpe (CANCEL) mientras est activo un impulso, el impulso se res-
tablecer de inmediato
...
PULSE($OUT[50],TRUE,2)
; El programa se devuelve ahora a su estado inicial o se deselecciona

Fig. 10-7: PULSE+RESET ejemplo

206 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


10 Funciones de conmutacin con KRL

10.3 Programacin del trigger en KRL

Descripcin El Trigger lanza una instruccin definida por el usuario. La unidad de control
del robot ejecuta la instruccin de forma paralela al movimiento del robot.
El Trigger puede referirse opcionalmente al punto de inicio o de destino del
movimiento. La instruccin se puede activar directamente en el punto de re-
ferencia o an se puede desplazar en el espacio y/o temporalmente.

El Trigger no se puede utilizar para movimientos PTP.


Si el Trigger se utiliza en un bloque Spline, no podr encontrarse en-
tre el ltimo segmento y ENDSPLINE.

Posibilidades de la programacin
Formulario inline, ventana de opciones lgica Trigger

Fig. 10-8: Trigger

Formulario inline Spline Trigger

Fig. 10-9: Formulario inline spline Trigger

Programacin mediante instruccin KRL TRIGGER WHEN PATH

Programacin Utilizacin de la instruccin KRL existente para TRIGGER WHEN PATH:


trigger con KRL TRIGGER WHEN PATH = Trayecto <ONSTART> DELAY = Tiempo DO
Instruccin <PRIO = Prioridad>

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 207 / 255


Programacin de robots 2

Elemento Descripcin
ONSTART Punto de referencia del Trigger
Con ONSTART: Punto de inicio
Sin ONSTART: Punto de destino

Trayecto Tipo: REAL; variable, constante o funcin; unidad: mm


(excepcin: en Splines PTP sin unidad)
Desplazamiento en el espacio con respecto al punto de
referencia. Si no se desea ningn desplazamiento en el
espacio, fijar el Trayecto = 0.
Valor negativo: desplazamiento en direccin al principio
del movimiento
Valor positivo: desplazamiento en direccin al final del
movimiento
(>>> "Mx. desplazamiento" Pgina 208)
Tiempo Tipo: REAL; variable, constante o funcin; unidad: ms
Desplazamiento en el tiempo con respecto al Trayecto. Si
no se desea un desplazamiento temporal, ajustar Tiempo =
0.
Valor negativo: desplazamiento en direccin al principio
del movimiento
Valor positivo: activacin del Trigger transcurrido el
tiempo
(>>> "Mx. desplazamiento" Pgina 208)
Instruccin Posibilidades:
Asignacin de valor a una variable
Indicacin: en el lado izquierdo de la asignacin no
debe haber ninguna variable de tiempo de ejecucin.
Instruccin OUT; instruccin PULSE; instruccin
CYCFLAG
Activacin de un subprograma. En este caso debe indi-
carse la Prioridad.
Prioridad Tipo: INT; variable o constante
Prioridad del Trigger. Solo relevante cuando la Instruccin
activa un subprograma, pero luego obligatorio.
Estn disponibles las prioridades 1, 2, 4 - 39 y 81 - 128.
Las prioridades 40 - 80 estn reservadas para casos en los
que el sistema adjudica automticamente la prioridad. Si la
prioridad debe adjudicarla de forma automtica el sistema,
se programa: PRIO = -1.
Si varios Trigger llaman a la vez a subprogramas, se pro-
cesar primero el Trigger con la prioridad ms alta y luego
el de menor prioridad. 1 = prioridad ms alta.

Mx. desplaza- El punto de conexin solo se puede desplazar hasta lmites determinados. Si
miento se programan desplazamientos mayores y, de este modo, no vlidos, la uni-
dad de control del robot conecta el Trigger como muy tarde en el lmite permi-
tido. Para ello, emite un mensaje en T1/T2.
Desplazamiento mximo para trayecto + valor de tiempo negativo:
Los lmites son vlidos para el desplazamiento total que se obtiene del des-
plazamiento en el espacio y temporal negativo.

208 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


10 Funciones de conmutacin con KRL

Desplazamiento negativo Desplazamiento positivo mximo


mximo hasta ... hasta ...
Hasta el punto de inicio (si ste no Hasta el punto de destino (si ste
se ha programado por aproxima- no se ha programado por aproxima-
cin) cin)
Si el punto de inicio se ha progra- Si el punto de destino se ha progra-
mado por aproximacin: mado por aproximacin:
Si el punto de inicio es un punto Para el posicionamiento aproxi-
PTP programado por aproxima- mado homogneo: Hasta la si-
cin: guiente parada exacta despus
Hasta el final del arco de aproxi- de la instruccin TRIGGER
macin Para el posicionamiento aproxi-
Si el punto de inicio es otro pun- mado mixto (Spline): Hasta el
to programado por aproxima- punto de conexin que tendra
cin: un Trigger ONSTART con
PATH = 0 si se encontrara en el
Hasta el principio del arco de
movimiento hacia el que se pro-
aproximacin
grama por aproximacin.

Para el posicionamiento aproxi-


mado mixto (LIN/CIRC/PTP):
Hasta el principio del arco de
aproximacin

Desplazamiento mximo para valor de tiempo positivo:


El desplazamiento temporal positivo puede ser como mximo de 1000 ms.
Cada desplazamiento temporal entre 0 y 1000 ms se conecta incluso si el pro-
grama se ha desactivado entretanto.

Ejemplo Trigger 1 SPTP P0


con KRL 2 SPLINE
3 SPL P1
4 SPL P2
5 SPL P3
6 SPL P4
7 TRIGGER WHEN PATH=0 ONSTART DELAY=10 DO $OUT[5]=TRUE
8 SCIRC P5, P6
9 SPL P7
10 TRIGGER WHEN PATH=-20.0 DELAY=0 DO SUBPR_2() PRIO=-1
11 SLIN P8
12 ENDSPLINE

El Trigger en la lnea 10 ofrecera el mismo resultado si estuviera directamen-


te delante del bloque Spline (es decir, entre la lnea 1 y la lnea 2). En ambos
casos se refiere al ltimo punto del movimiento Spline, a P8.
No obstante, se recomienda situar el Trigger como en el ejemplo y no direc-
tamente antes del bloque Spline.

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 209 / 255


Programacin de robots 2

Fig. 10-10: Ejemplo TRIGGER WHEN PATH (para Spline)

Restricciones Los valores para DELAY y PATH se pueden asignar mediante funciones. Las
para funciones en funciones tienen las restricciones siguientes:
el Trigger El programa KRL que contiene la funcin debe tener la propiedad Oculto.
La funcin debe ser vlida globalmente.
Las funciones solo deben contener las siguientes instrucciones o elemen-
tos:
Asignaciones de valores
Instrucciones IF
Comentarios
Lneas vacas
RETURN
Leer la variable del sistema
Activar la funcin KRL predefinida

10.4 Programar una parada condicionada con KRL

Descripcin La "Parada condicionada" permite al usuario definir un lugar en la trayectoria


donde se para el robot si se cumple una condicin determinada. El lugar se
denomina "punto de parada". En cuanto deja de cumplirse la condicin, el ro-
bot reanuda la marcha.
Durante el tiempo de ejecucin, la unidad de control del robot calcula el punto
donde, posteriormente, se debe frenar para que se pueda parar en el punto
de parada. A partir de ese punto (= "punto de frenado"), la unidad de control
del robot evala si se ha cumplido o no con la condicin de frenado.
En cuanto se cumple la condicin en el punto de frenado, el robot frena
para parase en el punto de parada.
En caso de que deje de cumplirse la condicin antes de que se alcance el
punto de parada, el robot vuelve a acelerar y no se para.
Cuando no se cumple la condicin en el punto de frenado, el robot conti-
na la marcha sin frenar.

210 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


10 Funciones de conmutacin con KRL

Fig. 10-11: spline con parada condicionada

Pos. Explicacin
1 punto de frenado calculado en funcin de la carrera y la
velocidad
2 punto de parada predefinido (mediante formulario inline o
KRL)
3 posible anulacin de la expresin booleana -> aceleracin
de la velocidad programada

Bsicamente se pueden programar tantas paradas condicionadas como se


desee. No obstante, no deben solaparse ms de 10 trayectos "Punto de fre-
nado punto de parada".
Durante un proceso de frenado, la unidad de control del robot muestra los si-
guientes mensajes en T1/T2: Parada condicionada activa (lnea {Nmero de
lnea}).
Posibilidades de la programacin
En el bloque Spline (CP o PTP) o en el paso individual Spline: formulario
inline, ventana de opciones lgica de la parada condicionada

Fig. 10-12: Parada condicionada

Antes de un bloque Spline (CP y PTP): formulario inline Spline parada


condicionada

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 211 / 255


Programacin de robots 2

Fig. 10-13: Formulario inline Condicin de parada para Spline

Programacin mediante instruccin KRL STOP WHEN PATH

Parada condi- STOP WHEN PATH = Offset <ONSTART> IFCondicin


cionada con KRL
Elemento Descripcin
ONSTART Punto de referencia de la instruccin
Sin ONSTART: Punto de destino
Con ONSTART: Punto de inicio
En caso de que se aproxime el punto de referencia, ten-
drn validez las mismas normas aplicadas para PATH-Trig-
ger.

Offset Tipo: INT o REAL; constante, variable o funcin; unidad:


mm
Con Offset e puede desplazar en el espacio el punto de
parada.
Valor positivo: desplazamiento en direccin al final del
movimiento
Valor negativo: desplazamiento en direccin al principio
del movimiento
El punto al que hace referencia el desplazamiento
depende de si ONSTART est ajustado o no. Si no se
desea ningn desplazamiento, debe programarse Offset=0.
El punto de parada no puede desplazarse libremente en el
espacio. Tienen validez los mismos lmites aplicados para
PATH-Trigger. (>>> "Mx. desplazamiento" Pgina 208)
Condicin Tipo: BOOL
Condicin de parada. Son admisibles:
una variable global booleana
un nombre de seal
una comparacin
un combinacin lgica simple: NOT, OR, AND o EXOR

La parada condicionada se puede utilizar en las siguientes posiciones:


En el conjunto individual Spline
En el bloque Spline (CP y PTP)
Entre STOP WHEN PATH y ENDSPLINE debe haber al menos 1 segmen-
to.
Antes de un bloque Spline (CP y PTP)
STOP WHEN PATH hace referencia en este caso a un bloque Spline. En-
tre STOP WHEN PATH y el bloque Spline pueden establecerse instruc-
ciones, aunque no instrucciones de movimiento.
Ejemplo

1 SPTP P1

212 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


10 Funciones de conmutacin con KRL

2 SLIN P2
3 STOP WHEN PATH = -30 IF $IN[20]==TRUE ; se detiene 30 mm antes de
P3, en caso de que la entrada 20 sea TRUE
4 SLIN P3
5 SLIN P4

10.5 Programar zona de desplazamiento constante con KRL

Descripcin En un bloque Spline CP, se puede definir una zona en la que el robot mantiene
constante la velocidad programada, siempre y cuando sea posible. El margen
se denomina "Zona de desplazamiento constante".
Para cada bloque Spline CP se puede definir 1 zona de desplazamiento
constante.
La zona de desplazamiento constante se define mediante una instruccin
de inicio y una instruccin de final.
La zona no puede superar el bloque Spline.
La zona puede ser tan pequea como se desee.

Fig. 10-14: Zona de desplazamiento constante spline

En caso de que no sea posible mantener constante la velocidad programada,


la unidad de control del robot lo notifica durante la ejecucin del programa me-
diante un mensaje.
Zona de desplazamiento constante a travs de varios segmentos:
La zona de desplazamiento constante se puede extender por varios segmen-
tos con diferentes velocidades programadas. En este caso, las velocidades
ms reducidas sern vlidas para toda la zona.
Incluso en los segmentos con una velocidad programada ms elevada, en
este caso se proceder con el desplazamiento aplicando la velocidad ms re-
ducida. Aqu no se emite ningn mensaje notificando que no se ha alcanzado
la velocidad. Esto sucede nicamente si no se puede mantener la velocidad
ms reducida.
Posibilidades de la programacin
Formulario inline, ventana de opciones lgica de la zona de desplaza-
miento constante: se almacena el inicio o el final de la zona en el segmen-
to CP correspondiente

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 213 / 255


Programacin de robots 2

Fig. 10-15: Zona de desplazamiento constante

Programacin mediante las instrucciones KRL CONST_VEL START y


CONST_VEL END

Zona de despla- CONST_VEL START = Offset <ONSTART>


zamiento <Segmentos Spline ...>
constante con
...
KRL
CONST_VEL END = Offset <ONSTART>

Elemento Descripcin
ONSTART Punto de referencia de la instruccin
Con ONSTART: Punto de inicio
Sin ONSTART: Punto de destino
Si se ha realizado el posicionamiento aproximado al punto
de inicio o de destino, el punto de referencia se genera de
la misma manera que durante el posicionamiento aproxi-
mado homogneo del PATH-Trigger.

Offset Tipo: INT o REAL; constante, variable o funcin; unidad:


mm
Mediante CONST_VEL START = Offset se puede despla-
zar en el espacio el inicio de la zona.
Mediante CONST_VEL END = Offset se puede desplazar
en el espacio el final de la zona.
Valor positivo: desplazamiento en direccin al final del
movimiento
Valor negativo: desplazamiento en direccin al principio
del movimiento
El punto al que hace referencia el desplazamiento
depende de si ONSTART est ajustado o no. Si no se
desea ningn desplazamiento, debe programarse Offset=0.

Con CONST_VEL se definen las zonas de desplazamiento constante.


CONST_VEL solo se puede utilizar en bloques Spline CP.
Entre CONST_VEL END y ENDSPLINE debe haber al menos 1 segmento
Spline.
Un bloque Spline CP puede contener 1 CONST_VEL o 1 TIME_BLOCK (blo-
que temporal), pero no los dos.

214 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


10 Funciones de conmutacin con KRL

Ejemplo
Aqu la zona de desplazamiento constante se extiende a varios segmentos
con diferentes velocidades programadas. La velocidad ms baja, es decir,
0,2 m/s, se aplica en este caso para la zona completa.
1 PTP P0
2 SPLINE WITH $VEL.CP = 2.5
3 SLIN P1
4 CONST_VEL START = +100
5 SPL P2 WITH $VEL.CP = 0.5
6 SLIN P3 WITH $VEL.CP = 0.2
7 SPL P4 WITH $VEL.CP = 0.4
8 CONST_VEL END = -50
9 SCIRC P5, P6
10 SLIN P7
11 ENDSPLINE

10.6 Programar bloque de tiempo Spline

Descripcin TIME_BLOCK se puede utilizar bloques Spline CP y PTP.


TIME_BLOCK permite ejecutar el bloque Spline o una parte del mismo en un
tiempo definido. Adicionalmente es posible asignar un componente de tiempo
a secciones dentro del TIME_BLOCK.
En el bloque Spline se pueden modificar, aadir o eliminar puntos sin modifi-
car las especificaciones de tiempo. Esto permite al usuario corregir la trayec-
toria cartesiana y al conservar para ello las especificaciones de tiempo
existentes.
Un bloque Spline puede contener 1 bloque de tiempo, es decir, 1 instruccin
TIME_BLOCK START TIME_BLOCK END. En medio se puede utilizar la
cantidad deseada de TIME_BLOCK PART. El bloque de tiempo solo se puede
utilizar en bloques Spline.
Un bloque Spline CP puede contener 1 bloque de tiempo o 1 zona de despla-
zamiento constante, pero no los dos.

Bloque de tiempo TIME_BLOCK START


con KRL TIME_BLOCK PART = Parte_N >
TIME_BLOCK END = Tiempo total

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 215 / 255


Programacin de robots 2

Elemento Descripcin
Parte Tipo: INT o REAL; constante, variable o funcin
Parte deseada del Tiempo total para el siguiente trayecto:
Desde el punto antes de TIME_BLOCK
PART=parte_anterior
hasta el punto antes de TIME_BLOCK PART=parte
Si parte_anterior no existe:
Desde el punto antes de TIME_BLOCK START
hasta el punto antes de TIME_BLOCK PART=parte
"Parte desead" significa: Las partes se mantienen de la
forma ms exacta posible por la unidad de control del
robot. Aunque por regla general no se mantienen de forma
exacta.
El usuario puede asignar las parte de forma que conjunta-
mente de como resultado 100. De este modo podr consi-
derar las partes como porcentaje del Tiempo total.
Aunque las partes no deben dar como resultado 100, sino
que pueden dar como resultado una suma cualquiera. La
unidad de control del robot siempre iguala la suma de las
partes con Tiempo total. De este modo, las partes se pue-
den utilizar de una forma muy flexible y tambin se pueden
modificar.
Si se asignan partes, siempre deber haber un
TIME_BLOCK PART directamente delante de
TIME_BLOCK END. Entremedias no deber haber seg-
mentos.
Tiempo total Tipo: INT o REAL; constante, variable o funcin; unidad: s
Tiempo durante el que se recorre el siguiente trayecto:
Desde el punto antes de TIME_BLOCK START
hasta el punto antes de TIME_BLOCK END
El valor debe ser superior a 0. El tiempo total se mantiene
de forma exacta. Si no se puede mantener, p. ej. porque se
ha programado un tiempo demasiado corto, el robot se
desplaza con el tiempo ms rpido posible. En T1 y T2 se
muestra adems un mensaje.

Si el valor para Parte o Tiempo total se asigna a travs de una funcin,


se aplicarn las mismas restricciones que para las funciones en el
Trigger.

Explicacin acerca de la programacin


Antes de TIME_BLOCK START y despus de TIME_BLOCK END no es obli-
gatorio que haya segmentos Spline. No obstante, se recomienda programar
del siguiente modo:
Entre SPLINE y TIME_BLOCK START hay al menos 1 segmento Spline.
Entre TIME_BLOCK END y ENDSPLINE hay al menos 1 segmento Spli-
ne.
Ventajas:
El tiempo total programado tambin se conserva de forma exacta en el po-
sicionamiento aproximado.
Los segmentos antes de TIME_BLOCK START permiten acelerar hasta
la velocidad necesaria.

216 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


10 Funciones de conmutacin con KRL

Ejemplo
SPLINE
SLIN P1
SPL P2
TIME_BLOCK START
SLIN P3
TIME_BLOCK PART = 12.7
SPL P4
SPL P5
SPL P6
TIME_BLOCK PART = 56.4
SCIRC P7, P8
SPL P9
TIME_BLOCK PART = 27.8
TIME_BLOCK END = 3.9
SLIN P10
ENDSPLINE

Los puntos P2 a P9 se ejecutan de forma exacta en el tiempo programado de


3,9 s. La unidad de control del robot iguala el tiempo total de 3,9 s a la suma
de todas las partes, es decir, 96,9 partes.

Trayecto Tiempo que la unidad de control del robot asigna al tra-


yecto
P2 P3 12,7 partes de 3,9 s = 0,51 s
P3 P6 56,4 partes de 3,9 s = 2,27 s
P6 P9 27,8 partes de 3,9 s = 1,12 s

Seleccin de En funcin de la lnea en la que se realiza la seleccin de paso, la unidad de


paso control del robot planifica el bloque de tiempo o no.

El bloque de tiempo se ha
Seleccin de paso en la lnea...
planificado?
en el bloque Spline, antes de S
TIME_BLOCK START
TIME_BLOCK START No
en el bloque de tiempo El bloque Spline se ejecutar si no
TIME_BLOCK END existieran instrucciones
en el bloque Spline, despus de TIME_BLOCK.
TIME_BLOCK END

Si la unidad de control del robot no planifica el bloque de tiempo, emite el si-


guiente mensaje: Bloque de tiempo ignorado por el desplazamiento SAK.

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 217 / 255


Programacin de robots 2

218 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


11 Interpretador Submit

11 Interpretador Submit
t

11.1 Resumen
t

Esta unidad incluye los siguientes contenidos:


Utilizacin del interpretador Submit

11.2 Utilizacin del interpretador Submit

Descripcin del En el KSS 8.x se ejecutan dos tareas:


interpretador Interpretador de robots (secuencia de los programas de movimiento de los
Submit robots y su lgica)
Interpretador de la unidad de control (secuencia de un programa de la uni-
dad de control ejecutado en paralelo)
Estructura del programa SPS.SUB:
1 DEF SPS ( )
2 DECLARATIONS
3 INI
4
5 LOOP
6 WAIT FOR NOT($POWER_FAIL)
7 TORQUE_MONITORING()
8
9 USER PLC
10 ENDLOOP

El estado del interpretador Submit

El interpretador Sub- El interpretador Sub- El interpretador Sub-


mit est en funciona- mit est detenido mit no est seleccio-
miento nado

El interpretador de la unidad de control:


Se puede iniciar automtica o manualmente.
Tambin se puede detener o cancelar manualmente.
Puede incluir tareas de manejo y control en el entorno del robot.
Se crea de manera estndar con el nombre SPS.sub en el directorio R1/
SYSTEM.
Se puede programar con el conjunto de instrucciones KRL.
No se pueden ejecutar las instrucciones KRL relacionadas con los movi-
mientos del robot.
Se permiten movimientos asincrnicos.
Se puede acceder a las variables del sistema a travs de la lectura y de
la escritura.
Se puede acceder a las entradas/salidas a travs de la lectura y de la es-
critura.

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 219 / 255


Programacin de robots 2

Relaciones en la
Atencin!
programacin del El interpretador Submit no puede utilizarse para
interpretador aplicaciones crticas con respecto al tiempo! En estos casos deber utilizar-
Submit se un PLC. Causas:
El interpretador Submit comparte la capacidad del sistema con el inter-
pretador de robots y la gestin de E/S con la mayor prioridad. Por esta
razn, el interpretador Submit no se ejecuta regularmente en el ciclo de
interpolacin de 12 ms de la unidad de control del robot.
Adems, el tiempo de ejecucin del interpretador Submit es irregular. El
tiempo de ejecucin del interpretador Submit depender del nmero de
lneas en el programa SUB. Las lneas de comentarios y las lneas va-
cas tambin influyen.

Inicio automtico del interpretador Submit


El interpretador Submit se activa de forma automtica al conectar la
unidad de control del robot tras un arranque en fro.
Se inicia el programa definido en el archivo KRC/STEU/MADA/$cus-
tom.dat.
$PRO_I_O[]="/R1/SPS()"

Servicio automtico del interpretador Submit


Seleccionar la secuencia de men Configuracin > Interpretador
SUBMIT > Arrancar/Seleccionar para el servicio.
Servicio directo a travs de la barra de estado del indicador de estado
Interpretador Submit. En caso de seleccin, se abre una ventana
con las opciones ejecutables.

Si se modifica un archivo del sistema, por ejemplo $config.dat o $cus-


tom.dat, y ste resulta daado a raz de esta modificacin, el inter-
pretador Submit se desactiva automticamente. Si se subsana el
error en el archivo del sistema se deber seleccionar de nuevo manualmente
el interpretador Submit.

Particularidades de la programacin del interpretador Submit


No se pueden ejecutar instrucciones para movimientos del robot, por
ejemplo:
PTP, LIN, CIRC, etc.
Activaciones de subprogramas que contienen movimientos de robot
Instrucciones que hacen referencia a movimientos del robot,
TRIGGER o BRAKE
Se pueden controlar ejes asincrnicos, como E1.
IF (($IN[12] == TRUE) AND ( NOT $IN[13] == TRUE)) THEN
ASYPTP {E1 45}
ENDIF
...
IF ((NOT $IN[12] == TRUE) AND ($IN[13] == TRUE)) THEN
ASYPTP {E1 0}
ENDIF

Las instrucciones entre las lneas LOOP y ENDLOOP se ejecutan constan-


temente en "segundo plano".
Se debe evitar cualquier parada provocada por instrucciones o bucles de
espera que puedan retrasar ms la ejecucin del interpretador Submit.
Es posible activar salidas.

220 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


11 Interpretador Submit

Advertencia
No se comprobar si los interpretadores Submit y de
robots acceden simultneamente a la misma salida, ya que esto puede ser
lo que se desee que ocurra en determinados casos.
Por esta razn, el usuario deber verificar con atencin la asignacin de las
salidas. De lo contrario pueden producirse seales de salida inesperadas,
como por ejemplo en los dispositivos de seguridad. Como consecuencia po-
dran ocasionarse importantes daos materiales, lesiones graves e incluso
la muerte.

En los modos de servicio del test, $OV_PRO no se


puede describir desde el interpretador Submit, por-
que la modificacin puede tener resultados inesperados para los usuarios
que trabajan en el robot industrial. Pueden producirse daos materiales, le-
siones graves e incluso la muerte.

Advertencia
En la medida de lo posible, no utilizar el interpreta-
dor Submit para modificar las seales y variables crticas con respecto al
tiempo.

Procedimiento 1. La programacin se realiza en estado detenido o cancelado.


para programar el 2. El programa estndar SPS.sub se carga en el editor.
interpretador 3. Realizar las declaraciones e inicializaciones necesarias. Para ello se de-
Submit beran utilizar las FOLDS preparadas.
4. Realizar ampliaciones del programa en la FOLD USER PLC.
5. Cerrar y guardar el interpretador Submit.
6. Si el Submit no se inicia automticamente, iniciarlo manualmente.
Ejemplo de programa basado en una programacin de los intermitentes en el
interpretador Submit
DEF SPS( )
DECLARATIONS
DECL BOOL flash ;Declaracin en $CONFIG.dat
INI
flash = FALSE
$TIMER[32]=0 ; Reiniciar TIMER[32]
$TIMER_STOP[32]=false ; Iniciar TIMER[32]
...
LOOP
...
USER PLC
IF ($TIMER[32]>500) AND (flash==FALSE) THEN
flash=TRUE
ENDIF
IF $TIMER[32]>1000 THEN
flash=FALSE
$TIMER[32]=0
ENDIF
; Asignacin a lmpara (salida 99)
$OUT[99] = flash
...
ENDLOOP

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 221 / 255


Programacin de robots 2

222 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


12 Trabajos con seales analgicas

12
2
Trabajos con seales analgicas
T

12.1
j
Resumen
s

Esta unidad incluye los siguientes contenidos:


Programar entradas analgicas
Programar salidas analgicas

12.2 Programar entradas analgicas

Descripcin

Fig. 12-1: Seales analgicas

El KRC4 cuenta con ms de 32 entradas analgicas.


Para las seales analgicas se necesita un sistema de bus opcional y la
proyeccin se debe realizar con WorkVisual.
Las entradas analgicas se leen mediante las variables de sistema
$ANIN[1] ... $ANIN[32].
Lectura cclica (cada 12 ms) de una entrada analgica.
Los valores $ANIN[nr] oscilan entre 1,0 y -1,0 (100 % y -100 %) y repre-
sentan una tensin de entrada de entre +10 V y -10 V.

Funcin Asignacin esttica de valor


Asignacin directa de valores
...
REAL value

value = $ANIN[2]
...

Asignacin de valores de una declaracin de seal


...
SIGNAL sensor $ANIN[6]
REAL value

value = sensor
...

Asignacin dinmica de valor


Todas las variables empleadas en una instruccin ANIN deben estar de-
claradas en listas de datos (localmente o en el archivo $CONFIG.DAT).
Como mximo estn permitidas tres instrucciones ANIN ON a la vez.

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 223 / 255


Programacin de robots 2

Cmo mximo dos instrucciones ANIN ON pueden utilizar la misma varia-


ble Valor o acceder a la misma entrada analgica.
Sintaxis
Iniciar lectura cclica:
ANIN ON Valor = Factor * Nombre de seal <Offset>
Elemento Descripcin
Valor Tipo: REAL
En Valor se registra el resultado de la lectura cclica. Este
Valor puede ser una variable o un nombre de seal para
una salida.
Factor Tipo: REAL
Un factor cualquiera. Puede ser una constante, una varia-
ble o un nombre de seal.
Nombre de la Tipo: REAL
seal
Indica la entrada analgica. El nombre de seal se debe
haber declarado antes con SIGNAL . No est permitido
indicar directamente la entrada analgica $ANIN[x] en
lugar del nombre de seal.
Los valores de una entrada analgica $ANIN[x] oscilan
entre +1,0 y -1,0 y representan una tensin de +10 V a -10
V dar.
Offset Tipo: REAL
Puede ser una constante, una variable o un nombre de
seal.

Finalizar lectura cclica:


ANIN OFF nombre de seal
Ejemplo 1:
DEFDAT myprog
DECL REAL value = 0
ENDDAT

DEF myprog( )
SIGNAL sensor $ANIN[3]
...
ANIN ON value = 1.99*sensor-0.75
...
ANIN OFF sensor

Ejemplo 2:
DEFDAT myprog
DECL REAL value = 0
DECL REAL corr = 0.25
DECL REAL offset = 0.45
ENDDAT

DEF myprog( )
SIGNAL sensor $ANIN[7]
...
ANIN ON value = corr*sensor-offset
...
ANIN OFF sensor

224 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


12 Trabajos con seales analgicas

Procedimiento
El requisito para utilizar las seales analgicas es
para programar proyectar correctamente el sistema de bus con las
con entradas seales analgicas conectadas.
analgicas
Programacin de ANIN ON/OFF
1. Seleccin de la entrada analgica correcta.
2. Ejecucin de la declaracin de seal.
3. Declaracin de las variables necesarias en una lista de datos.
4. Conectar: programacin de la instruccin ANIN ON.
5. Comprobacin de que haya 3 entradas dinmicas activas como mximo.
6. Desconectar: programacin de la instruccin ANIN OFF.

12.3 Programar salidas analgicas

Descripcin

Fig. 12-2: Seales analgicas

El KRC4 cuenta con ms de 32 salidas analgicas.


Para las seales analgicas se necesita un sistema de bus opcional y la
proyeccin se debe realizar con WorkVisual.
Las salidas analgicas se leen mediante las variables de sistema
$ANOUT[1] ... $ANOUT[32].
Escritura cclica (cada 12 ms) en una salida analgica.
Los valores $ANOUT[nr] oscilan entre 1,0 y -1,0 (100 % y -100 %) y re-
presentan una tensin de salida de entre +10 V y -10 V.

Funcin
Se pueden utilizar, como mximo, 8 salidas analgi-
cas al mismo tiempo (estticas y dinmicas juntas).
ANOUT genera una parada del movimiento de avance.

Asignacin esttica de valor


Asignacin directa de valores
...
ANOUT[2] = 0.7 ; 14 mA (70 %) en la salida analgica 2 (en el mdulo
0-20 mA)
...

Asignacin de valores mediante variables


...
REAL value
value = -0.8

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 225 / 255


Programacin de robots 2

ANOUT[4] = value ; -8 V (80 %) en la salida analgica 4 (en el mdulo


-10 V - 10 V)
...

Programacin mediante formulario inline

Fig. 12-3: Formulario inline ANOUT esttica

Pos. Descripcin
1 Nmero de la salida analgica
CHANNEL_1 CHANNEL_32
2 Factor para la tensin
0 1 (graduacin: 0.01)

Asignacin dinmica de valor


Todas las variables utilizadas en una instruccin ANOUT deben estar de-
claradas en listas de datos (localmente o en $CONFIG.DAT).
Se permite un mximo de cuatro instrucciones ANOUT ON al mismo
tiempo.
ANOUT genera una parada del movimiento de avance.
Sintaxis
Iniciar escritura cclica:
ANOUT ON Nombre de seal = Factor * Elemento de regulacin <Off-
set> <DELAY = Tiempo> <MINIMUM = Valor mnimo> <MAXIMUM
= Valor mximo>
Elemento Descripcin
Nombre de la Tipo: REAL
seal
Indica la salida analgica. El Nombre de seal debe haberse
declarado con antelacin con SIGNAL. No est permitido
indicar directamente la salida analgica $ANOUT[x] en
lugar del nombre de seal.
Los valores de una salida analgica $ANOUT[x] oscilan
entre +1,0 y -1,0 y representan una tensin de +10 V a -10
V dar.
Factor Tipo: REAL
Un factor cualquiera. Puede ser una constante, una varia-
ble o un nombre de seal.
Elemento de Tipo: REAL
regulacin
Puede ser una constante, una variable o un nombre de
seal.
Offset Tipo: REAL
Puede ser una constante, una variable o un nombre de
seal.

226 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


12 Trabajos con seales analgicas

Elemento Descripcin
Tiempo Tipo: REAL
Unidad: Segundos. Con la palabra clave DELAY y una indi-
cacin de tiempo positiva o negativa, se puede emitir una
seal de salida con retardo (+) o adelanto (-).
Valor mnimo, Tipo: REAL
valor mximo
Tensin mnima y/o mxima que debe existir en la salida.
No se sobrepasa ni por encima ni por debajo, ni siquiera si
los valores calculados estn por encima o por debajo.
Valores permitidos: -1,0 a +1,0 (corresponde de -10 V a
+10 V).
Puede ser una constante, una variable, un componente
estructural o un elemento de campo. El valor mnimo debe
ser en cualquier caso menor al valor mximo. Debe respe-
tarse la secuencia de las palabras clave MINIMUM y
MAXIMUM.

Finalizar escritura cclica:


ANOUT OFF Nombre de seal
Ejemplo 1
DEF myprog( )
SIGNAL motor $ANOUT[3]
...
ANOUT ON motor = 3.5*$VEL_ACT-0.75 DELAY=0.5
...
ANOUT OFF motor

Ejemplo 2
DEFDAT myprog
DECL REAL corr = 1.45
DECL REAL offset = 0.25
ENDDAT

DEF myprog( )
SIGNAL motor $ANOUT[7]
...
ANOUT ON motor = corr*$VEL_ACT-offset
...
ANOUT OFF motor

Procedimiento
El requisito para utilizar las seales analgicas es
para programar proyectar correctamente el sistema de bus con las
con salidas seales analgicas conectadas.
analgicas
Programacin de ANOUT ON/OFF
1. Seleccin de la salida analgica correcta.
2. Ejecucin de la declaracin de seal.
3. Declaracin de las variables necesarias en una lista de datos.
4. Conectar: programacin de la instruccin ANOUT ON.
5. Comprobacin de que haya 4 salidas dinmicas activas como mximo.
6. Desconectar: programacin de la instruccin ANOUT OFF.
Ejemplo:

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 227 / 255


Programacin de robots 2

Fig. 12-4: Ejemplo de seal de salida analgica

DEF myprog( )
SIGNAL motor $ANOUT[3]
...
ANOUT ON motor = 3.375*$VEL_ACT MINIMUM=0.30 MAXIMUM=0.97
...
ANOUT OFF motor

228 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


12 Trabajos con seales analgicas

12.4 Ejercicio: Trabajos con E/S analgicas

Objetivo del Despus de completar correctamente este ejercicio, se dispondr de la com-


ejercicio petencia necesaria para efectuar las siguientes tareas:
Utilizacin de declaraciones de seales en entradas/salidas
Integracin esttica o dinmica de entradas analgicas en los procesos
de trabajo
Integracin esttica o dinmica de salidas analgicas en los procesos de
trabajo

Requisitos Los siguientes requisitos son necesarios para completar este ejercicio correc-
tamente:
Conocimientos tericos sobre las declaraciones de seales
Conocimientos tericos sobre la integracin de entradas/salidas analgi-
cas

Formulacin de Configure su sistema de modo que pueda modificar el override del programa
tarea mediante una entrada analgica. Adems, la velocidad real de desplazamien-
to del robot debe controlar una salida analgica.
Tarea parcial 1
1. Cree un programa con el nombre Velocidad.
2. Utilice la entrada analgica 1 controlada mediante el potencimetro.
3. Modifique el override del programa en el interpretador Submit.
4. Compruebe su programa segn prescripcin.
Tarea parcial 2
1. Ample su programa con movimientos de trayectoria (velocidad: hasta 2
m/s) que formen parte de un bucle infinito.
2. Utilice la salida analgica 1, visualizacin en panel.
3. Utilizar la variable de sistema $VEL_ACT para la velocidad de desplaza-
miento actual.
4. Comprobar el programa conforme a lo prescrito.
5. Adicionalmente: si la velocidad es inferior a 0,2 m/s, se debe excitar la sa-
lida de todos modos con 1.0 V; si la velocidad es superior a 1,8 m/s, la sa-
lida no debe emitir ms de 9.0 V.

Asegrese de activar la E/S analgica una nica vez.

Lo que se debe saber tras el ejercicio:


1. Cuntas E/S analgicas se pueden utilizar en la unidad de control KRC?
............................................................
............................................................
2. Cuntas entradas digitales, entradas analgicas y salidas analgicas pre-
definidas puede utilizar simultneamente la unidad de control de KUKA?
............................................................
............................................................
3. Cules son las instrucciones KRL para iniciar y finalizar cclicamente la sa-
lida analgica?
............................................................
............................................................

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 229 / 255


Programacin de robots 2

4. Cmo se interroga una entrada analgica estticamente?


.............................................................
.............................................................

230 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


13 Anexo

13 Anexo
A

13.1 Programar los movimientos mediante KRL

Definicin de un
movimiento

Fig. 13-1: Formulario inline Movimiento PTP-/LIN-/CIRC

Indicaciones necesarias para un movimiento


Tipo de movimiento - PTP, LIN, CIRC
Posicin de destino y posible posicin auxiliar
Parada exacta o aproximacin
Velocidad - PTP (%) y movimiento de trayectoria (m/s)
Herramienta - TCP y carga
Sistema de coordenadas base
Herramienta guiada por robot o externa
Aceleracin
Posible parmetro de aproximacin
Control de orientacin para movimientos de trayectoria
Posible con KRL: ngulo circular para un movimiento circular CIRC

Principio de la Tipo de movimiento PTP


programacin de Punto de destino PTP <Aproximar>
movimientos
Elemento Descripcin
Punto de des- Tipo: POS, E6POS, AXIS, E6AXIS, FRAME
tino
El punto de destino puede indicarse de forma cartesiana o
especfica del eje. Las coordenadas cartesianas hacen
referencia al sistema de coordenadas BASE.
Si no se indican todos los componentes del punto de des-
tino, la unidad de control adopta los valores de la posicin
anterior para los componentes que faltan.
Aproximacin C_PTP
Consigue que se produzca una aproximacin del
punto de destino.
Para la aproximacin PTP-PTP es suficiente la indi-
cacin C_PTP.
C_DIS
Slo para la aproximacin PTP-CP. Este parmetro
determina cuando se iniciar, como muy pronto, la
aproximacin. Son posibles las siguientes indica-
ciones:
Parmetros de distancia: La aproximacin comien-
za, como muy pronto, cuando la distancia con res-
pecto al punto de destino queda por debajo del
valor de $APO.CDIS.

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 231 / 255


Programacin de robots 2

El robot se aproxima a una posicin del fichero DAT; la posicin ha sido


programada previamente mediante formulario en lnea y realiza una
aproximacin a este punto P3
PTP XP3 C_PTP

El robot se aproxima a una posicin introducida


Especfico del eje (AXIS o E6AXIS)
PTP {A1 0, A2 -80, A3 75, A4 30, A5 30, A6 110}

Posicin (con herramienta actualmente activa y Base)


PTP {X 100, Y -50, Z 1500, A 0, B 0, C 90, S 3, T 35}

El robot se desplaza solo con la introduccin de una o varias unidades


PTP {A1 30} ; slo A1 desplazado a 30

PTP {X 200, A 30} ; slo en X a 200mm y A a 30

Tipo de movimiento LIN


LIN Punto de destino <Aproximacin de trayectoria>
Elemento Descripcin
Punto de des- Tipo: POS, E6POS, FRAME
tino
Si no se indican todos los componentes del punto de des-
tino, la unidad de control adopta los valores de la posicin
anterior para los componentes que faltan.
Las informaciones sobre el estado y el giro dentro de un
punto de destino del tipo POS o E6POS no se tienen en
cuenta para los movimientos LIN (al igual que ocurre con
los movimientos CIRC).
Las coordenadas hacen referencia al sistema de coorde-
nadas BASE.
Apro- Este parmetro consigue que se produzca una aproxima-
ximacin de cin del punto de destino. Adems determina cuando se
trayectoria iniciar, como muy pronto, la aproximacin. Los datos
posibles son:
C_DIS
Parmetros de distancia: La aproximacin comien-
za, como muy pronto, cuando la distancia con res-
pecto al punto de destino queda por debajo del
valor de $APO.CDIS.
C_ORI
Parmetros de orientacin: La aproximacin co-
mienza, como muy pronto, cuando el ngulo de
orientacin dominante queda por debajo del valor
de $APO.CORI.
C_VEL
Parmetros de velocidad: La aproximacin comien-
za, como muy pronto, cuando la velocidad durante
la fase de frenado queda por debajo del valor de
$APO.CVEL.

El robot se desplaza hasta una posicin calculada y realiza una aproxima-


cin al punto DEPSITO[4]
LIN ABLAGE[4] C_DIS

232 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


13 Anexo

Tipo de movimiento CIRC


CIRC Punto auxiliar, Punto de destino < ngulo circular (CA)> <Aproximacin
de trayectoria>

Elemento Descripcin
Punto auxiliar Tipo: POS, E6POS, FRAME
Si no se indican todos los componentes del punto auxiliar,
la unidad de control adopta los valores de la posicin ante-
rior para los componentes que faltan.
En principio, el ngulo de orientacin y las informaciones
sobre el estado y el giro dentro de un punto auxiliar no se
tienen en cuenta.
El punto auxiliar no puede ser aproximado. Se ejecuta
durante el modo de ejecucin del programa GO. Durante el
modo de ejecucin del programa Movimiento, el robot se
detiene en el punto auxiliar.
Las coordenadas hacen referencia al sistema de coorde-
nadas BASE.
Punto de des- Tipo: POS, E6POS, FRAME
tino
Si no se indican todos los componentes del punto de des-
tino, la unidad de control adopta los valores de la posicin
anterior para los componentes que faltan.
Las informaciones sobre el estado y el giro dentro de un
punto de destino del tipo POS o E6POS no se tienen en
cuenta para los movimientos CIRC (al igual que ocurre con
los movimientos LIN).
Las coordenadas hacen referencia al sistema de coorde-
nadas BASE.

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 233 / 255


Programacin de robots 2

Elemento Descripcin
ngulo circu- Indica el ngulo total del movimiento circular. Permite pro-
lar longar el movimiento ms all del punto de destino progra-
CA mado o acortarlo. Esto significa que el punto de destino
real no incluir el punto de destino programado.
Unidad: Grados. Ninguna limitacin; se puede programar
en particular un ngulo circular de ms de 360.
ngulo circular positivo: la trayectoria circular se
desplaza en direccin punto de inicio punto auxi-
liar punto de destino.
ngulo circular negativo: la trayectoria circular se
desplaza en direccin punto de inicio punto de
destino punto auxiliar.
Apro- Este parmetro consigue que se produzca una aproxima-
ximacin de cin del punto de destino. Adems determina cuando se
trayectoria iniciar, como muy pronto, la aproximacin. Los datos
posibles son:
C_DIS
Parmetros de distancia: La aproximacin comien-
za, como muy pronto, cuando la distancia con res-
pecto al punto de destino queda por debajo del
valor de $APO.CDIS.
C_ORI
Parmetros de orientacin: La aproximacin co-
mienza, como muy pronto, cuando el ngulo de
orientacin dominante queda por debajo del valor
de $APO.CORI.
C_VEL
Parmetros de velocidad: La aproximacin comien-
za, como muy pronto, cuando la velocidad durante
la fase de frenado queda por debajo del valor de
$APO.CVEL.

El robot se acerca a las posiciones previamente programadas del archivo


DAT y se desplaza en un ngulo circular de 190.
CIRC XP3, XP4, CA 190

El robot se acerca a las posiciones indicadas y se desplaza en un ngulo


circular de 180.
CIRC {X 100, Y ...}, {X 150, Y ...}, CA 180

ngulo circular CA

En el punto de destino real se adopta la orientacin que se program


en el punto de destino programado.

ngulo circular positivo (CA>0): El circuito se desplaza en el senti-


do programado: Punto inicial - punto auxiliar - punto de destino

234 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


13 Anexo

Fig. 13-2: ngulo circular CA = +290

ngulo circular negativo (CA<0): El circuito se desplaza en sentido


contrario al sentido programado: Punto inicial - punto destino - punto
de auxiliar

Fig. 13-3: ngulo circular CA = -290

Funcin de los Preajustes para la programacin de movimientos


parmetros de Se pueden aplicar ajustes existentes:
movimiento
de la ejecucin de la lnea INI
del ltimo formulario en lnea
de los ltimos ajustes de las variables de sistema correspondientes
Modificar o inicializar las correspondientes variables de sistema
Variables de sistema de los parmetros de movimiento
Herramienta: $TOOL y $LOAD
Activacin del TCP medido
$TOOL = tool_data[x] ; x = 1...16

Activacin de los datos de carga correspondientes

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 235 / 255


Programacin de robots 2

$LOAD = load_data[x] ; x = 1...16

Base de referencia / base de trabajo: $BASE


Activacin de la base medida
$BASE = base_data[x] ; x = 1...32

Herramienta guiada por robot o externa: $IPO_MODE


Herramienta guiada por robot
$IPO_MODE = #BASE

Herramienta externa
$IPO_MODE = #TCP

Velocidad
Con movimiento PTP
$VEL_AXIS[x] ; x=1...8 para cada eje

Con movimientos de trayectoria LIN o CIRC


$VEL.CP = 2.0 ; [m/s] Velocidad de trayectoria

$VEL.ORI1 = 150 ; [/s] Velocidad de vaivn

$VEL.ORI2 = 200 ; [/s] Velocidad rotacional

La direccin de avance de la herramienta es en la mayora de los ca-


sos el eje X. La velocidad de giro es el giro alrededor de este eje X
con ngulo C. En la velocidad de basculamiento se gira alrededor de
los otros dos ngulos (A y B).

Aceleracin
Con movimiento PTP
$ACC_AXIS[x] ; x=1...8 para cada eje

Con movimientos de trayectoria LIN o CIRC


$ACC.CP = 2.0 ; [m/s] Aceleracin de trayectoria

$ACC.ORI1 = 150 ; [/s] Aceleracin de vaivn

$ACC.ORI2 = 200 ; [/s] Aceleracin rotacional

Tirn
para movimiento SPTP
$GEAR_JERK[1...12] = 0 ... 100 Tirn del engranaje de los ejes A1 a
E6 en tanto por ciento (1...100)
SPTP XP10 WITH GEAR_JERK[1]=22, GEAR_JERK[2]=66

Con movimientos de trayectoria SLIN o SCIRC


$JERK={CP 50.0,ORI 50000.0,AX {A1 1000.0,A2 1000.0,A3 1000.0,A4
1000.0,A5 1000.0,A6 1000.0,E1 1000.0,E2 1000.0,E3 1000.0,E4 1000.0,E5
1000.0,E6 1000.0}}

El grupo est formado por los siguientes componentes:

CP: modificacin de la aceleracin en trayectoria en [m/s3]


ORI: modificacin de la aceleracin en trayectoria en [/s3]
AX: modificacin de la aceleracin del eje en [/s3] en ejes de ro-
tacin o en [m/s3] en el caso de ejes lineales
SLIN XP13 WITH $JERK = {CP 44} ; [m/s] Modificacin de la
aceleracin en trayectoria

236 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


13 Anexo

Distancia de aproximacin
en caso de SPINE pasos individuales SLIN, SCIRC y en caso de
SPTP: C_SPL
El alejamiento respecto del punto de destino debe quedar por debajo
del valor $APO.CDIS
$APO.CDIS = 250.0 ; [mm] Distancia
SPTP XP3 C_SPL
SLIN XP4 C_SPL

Solo con movimiento PTP: C_PTP


$APO.CPTP = 50 ; Valor de aproximacin en [%] para C_PTP
PTP XP3 C_PTP

Con movimientos de trayectoria LIN, CIRC: C_ORI


El ngulo de orientacin dominante debe quedar por debajo del valor
$APO.CORI
$APO.CORI = 50.0 ; [] ngulo
SLIN XP4 C_ORI

Con movimientos de trayectoria LIN, CIRC: C_VEL


La velocidad en la fase de frenado hacia el punto de destino debe que-
dar por debajo del valor $APO.CVEL
$APO.CVEL = 75.0 ; [%] Porcentaje
LIN XP4 C_VEL

Control de la orientacin: Solo con LIN y CIRC


Con LIN y CIRC: $ORI_TYPE

$ORI_TYPE = #CONSTANT

Durante el movimiento de trayectoria, la orientacin se mantiene


constante. Para el punto final se ignora la orientacin programada.

Fig. 13-4: Control orientacin constante

$ORI_TYPE = #VAR

Durante el movimiento de trayectoria, la orientacin se modifica


continuamente hacia la orientacin del punto de destino.

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 237 / 255


Programacin de robots 2

Fig. 13-5: Estndar o PTP manual

$ORI_TYPE = #JOINT

Durante el movimiento de trayectoria, la orientacin de la herra-


mienta es modificada ininterrumpidamente desde la posicin ini-
cial hasta la posicin final. Esto se logra mediante el
desplazamiento lineal del ngulo del eje de la mueca. La proble-
mtica de la singularidad de la mueca puede evitarse con esta
opcin. Se produce un giro alrededor de la direccin de impacto
de la herramienta. No es posible realizar un giro alrededor de la
direccin de impacto de la herramienta.
Solo con CIRC: $CIRC_TPYE

La variable $CIRC_TYPE carece de significado cuando se efecta


un desplazamiento lineal del ngulo del eje de la mueca con
$ORI_TYPE = #JOINT.

$CIRC_TYPE = #PATH

Control de la orientacin relacionada con la trayectoria durante el


movimiento circular

Fig. 13-6: Orientacin constante, referida a la trayectoria

$CIRC_TYPE = #BASE

Control de orientacin referido al espacio durante el movimiento


circular

238 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


13 Anexo

Fig. 13-7: Orientacin constante, referida a la base

Procedimiento 1. Abrir el programa como experto.


para programar 2. Comprobar los ajustes predefinidos para la programacin de movimientos
movimientos y aceptar o inicializar de nuevo:
mediante KRL Herramienta ($TOOL y $LOAD)
Ajustes base ($BASE)
Herramienta externa o guiada por robot ($IPO_MODE)
Velocidad
Aceleracin
Posible distancia de aproximacin
Posible control de la orientacin
3. Crear la instruccin de movimiento, compuesta de:
Tipo de movimiento (PTP, LIN, CIRC)
Punto de destino (con CIRC tambin punto auxiliar)
Para CIRC posible ngulo circular (CA)
Activar la aproximacin (C_PTP, C_DIS, C_ORI, C_VEL)
4. En caso de nuevo movimiento de vuelta al punto 3
5. Cerrar el editor y guardar

13.2 Variables del sistema

13.2.1 $ACC

Descripcin Aceleracin del TCP en la alimentacin


La variable del tipo de estructura CP contiene la aceleracin cartesiana pro-
gramada para los siguientes componentes:

CP: aceleracin en trayectoria en [m/s2]


ORI1: aceleracin en trayectoria en [/s2]
ORI2: aceleracin rotacional en [/s2]
Valores lmite para la aceleracin cartesiana:
0.0 $ACC_MA
La aceleracin cartesiana mxima $ACC_MA est definida en los datos
de mquina.

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 239 / 255


Programacin de robots 2

La documentacin acerca de los datos de mquina contiene informa-


cin detallada sobre la variable $ACC_MA.

Cuando $ACC vulnera los valores lmite, se visualiza el mensaje Asignacin


de valor no permitida. La ejecucin del programa se detiene o la instruccin
de movimiento correspondiente durante el desplazamiento manual no se eje-
cuta.

Ejemplo $ACC={CP 5.0,ORI1 500.0,ORI2 500.0}

13.2.2 $ACC_AXIS

Descripcin Aceleracin de los ejes del robot en la alimentacin


La variable contiene la aceleracin del eje planeada en porcentaje. En el caso
de movimientos que se planean con la ayuda del modelo dinmico, el valor
porcentual se refiere a los momentos del eje disponibles para la aceleracin.
Si no hay disponible ningn modelo dinmico, el valor porcentual se refiere a
las aceleraciones definidas en los datos de mquina mediante $RAISE_TIME
(variable en el archivo... R1\Mada\$machine.dat).

Sintaxis $ACC_AXIS[Nmero de eje]=aceleracin

Aclaracin de la
Elemento Descripcin
sintaxis
Nmero del Tipo: INT
eje
1 6: eje del robot A1 A6
Aceleracin Tipo: INT; unidad: %
1 100

13.2.3 $ACC_EXTAX

Descripcin Aceleracin de los ejes externos en la alimentacin


La variable contiene la aceleracin del eje planeada en porcentaje. En el caso
de movimientos que se planean con la ayuda del modelo dinmico, el valor
porcentual se refiere a los momentos del eje disponibles para la aceleracin.
Si no hay disponible ningn modelo dinmico, el valor porcentual se refiere a
las aceleraciones definidas en los datos de mquina mediante $RAISE_TIME
(variable en el archivo... R1\Mada\$machine.dat).

Sintaxis $ACC_EXTAX[Nmero de eje]=aceleracin

Aclaracin de la
Elemento Descripcin
sintaxis
Nmero del Tipo: INT
eje
1 6: eje adicional E1 E6
Aceleracin Tipo: INT; unidad: %
1 100

13.2.4 $APO

Descripcin Parmetros de aproximacin en la alimentacin


Con las variables se determina el trayecto de aproximacin.

240 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


13 Anexo

Sintaxis $APO={CVEL Velocidad, CPTP DisPTP, CDIS DisCP, CORI Orientacin}

Aclaracin de la
Elemento Descripcin
sintaxis
CVEL Tipo: INT; unidad: %
Parmetros de velocidad
1 100
El parmetro de aproximacin indica con qu porcentaje
de la velocidad programada comienza como mnimo la
aproximacin en la fase de frenado hacia el punto de des-
tino.
CPTP Tipo: INT; unidad: %
Distancia de aproximacin para movimientos PTP y PTP
Spline (= distancia antes del punto de destino en la que
comienza como mnimo la aproximacin)
1 100
Explicacin sobre los parmetros de aproximacin:
(>>> "CPTP" Pgina 241)
Indicacin: Los movimientos PTP Spline (SPTP) pueden
programarse a partir del KUKA System Software 8.3.
CDIS Tipo: REAL; unidad: mm
Parmetros de distancia
El posicionamiento aproximado comienza, como muy
pronto, cuando la distancia con respecto al punto de des-
tino queda por debajo del valor indicado aqu.
CORI Tipo: REAL; unidad:
Parmetros de orientacin
La aproximacin comienza como mnimo cuando el ngulo
de orientacin dominante (giro o basculacin del eje longi-
tudinal de la herramienta) queda por debajo de la distancia
angular con respecto al punto de destino indicada aqu.

CPTP El parmetro de aproximacin CPTP es diferente dependiendo de si hay pro-


gramado un movimiento PTP o PTP Spline (SPTP).
En un movimiento PTP, el valor porcentual indicado con CPTP se refiere
a un ngulo de eje determinado en los datos de mquina con
$APO_DIS_PTP. La aproximacin se efecta cuando todos los ejes no al-
cancen su distancia de aproximacin definida.
Sin embargo, la aproximacin comienza como muy pronto cuando se
haya alcanzado el 50 % de la longitud del paso. Es decir, la aproximacin
se realiza como mnimo cuando se haya realizado la mitad de la longitud
del recorrido entre el punto de inicio y el punto de destino, referido al con-
torno del movimiento PTP sin aproximacin.
Esta limitacin del 50 % tambin es vlida para la aproximacin entre 2
movimientos individuales SPTP. En la aproximacin entre PTP Splines
que estn programados como uno de varios segmentos en bloques Spli-
ne, no est definido cundo se puede comenzar como mnimo con la
aproximacin. Es decir, la aproximacin empieza tal y como se haya esti-
pulado con CPTP.
En la aproximacin entre PTP Splines, el valor porcentual indicado con
CPTP se refiere a la longitud del recorrido del ltimo segmento Spline en
el primer bloque Spline y la longitud del recorrido del primer segmento
Spline en el bloque Spline siguiente que recorren todos los ejes del robot

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 241 / 255


Programacin de robots 2

y, con ellos, los ejes adicionales acoplados matemticamente en la zona


del eje.

13.2.5 $BASE

Descripcin Sistema de coordenadas BASE en la alimentacin


La variable del tipo de estructura FRAME describe la posicin terica de la
pieza referida al sistema de coordenadas WORLD.
X, Y, Z: desplazamiento del origen a lo largo de los ejes en [mm]
A, B, C: giro del ngulo del eje en []

13.2.6 $CIRC_TYPE

Descripcin Control de orientacin de CIRC en la alimentacin


La variable contiene el control de orientacin programado de un movimiento
circular. Este est referido a la base o a la trayectoria.

Sintaxis $CIRC_TYPE=tipo

Aclaracin de la
Elemento Descripcin
sintaxis
Tipo Tipo: ENUM
#BASE: Control de orientacin referido a la base
#PATH: Control de orientacin referido a la trayectoria

13.2.7 Modo de ahorro energtico ($ECO_LEVEL)

Descripcin Mediante la variable del sistema $ECO_LEVEL, el usuario puede desplazar


el robot ahorrando energa. El grado de ahorro se puede ajustar a "bajo", "me-
dio" o "alto". El modo de ahorro energtico provoca que los ejes del robot y los
ejes adicionales se desplacen ms lentos. Cuanto mayor es el ahorro, menor
ser la velocidad. La cantidad de energa que se ahorra en comparacin con
la potencia completa, depender principalmente de las posiciones del eje y no
se puede prever.
$ECO_LEVEL no acta sobre todos los movimientos. La siguiente tabla indi-
ca los movimientos sobre los acta y en los que no:

Movimiento Efecto?
PTP S
LIN No
CIRC No
Movimientos Spline CP (bloque y conjunto indivi- S
dual)
Con perfil de desplazamiento ms elevado
Movimientos Spline CP (bloque y conjunto indivi- No
dual)
Sin perfil de desplazamiento ms elevado
Movimientos Spline PTP (bloque y conjunto indi- S
vidual)

Si un programa se restablece o se desactiva, se desconectar automtica-


mente el modo de ahorro energtico.

242 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


13 Anexo

En los siguientes casos estar inactivo el modo de ahorro energtico, incluso


si est conectado:
En un desplazamiento a coincidencia de paso
En una zona de desplazamiento constante en el Spline
En un bloque de tiempo en el Spline
Si ya se han programado valores bajos para la velocidad y la aceleracin,
$ECO_LEVEL apenas tendr efecto o no tendr efecto.
En funcin del tipo de robot puede ocurrir que en determinadas constelacio-
nes, el ahorro con "medio" y "alto" sea igual o casi igual. (P. ej. con una carga
inferior al 30% de la carga por defecto.)

Condicin previa $ADAP_ACC <> #NONE


$OPT_MOVE <> #NONE
En las dos variables del sistema <> #NONE ya es el ajuste por defecto.

Sintaxis $ECO_LEVEL=Nivel

Aclaracin de la
Elemento Descripcin
sintaxis
Nivel Tipo: ENUM
#OFF: El modo de ahorro energtico est desconecta-
do.
#LOW: Ahorro bajo
#MIDDLE: Ahorro medio
#HIGH: Ahorro alto

13.2.8 $GEAR_JERK

Descripcin Tirn de engranaje de los ejes en la alimentacin


Con las variables se determina el tirn de engranaje de un eje. El tirn de en-
granaje se refiere de forma porcentual a los datos de mquina correspondien-
tes del modelo dinmico $DYN_DAT[].
Si al comenzar un movimiento Spline no est inicializado $GEAR_JERK, p. ej.
porque la lnea INI no se haya recorrido, se muestra el mensaje de confirma-
cin Tirn de reductor no programado {Nmero del eje} y se detiene la ejecu-
cin del programa.

Sintaxis $GEAR_JERK[Nmero de eje]=tirn de engranaje

Aclaracin de la
Elemento Descripcin
sintaxis
Nmero del Tipo: INT
eje
1 6: eje del robot A1 A6
7 12: eje adicional E1 E6
Tirn del Tipo: INT; unidad: %
accion-
amiento 1 100

13.2.9 $IPO_MODE

Descripcin Modo de interpolacin programado en la alimentacin

Sintaxis $IPO_MODE=modo

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 243 / 255


Programacin de robots 2

Aclaracin de la
Elemento Descripcin
sintaxis
Modo Tipo: ENUM
#TCP: La herramienta es una herramienta fija.
#BASE: la herramienta est montada en la brida de
acople.
Por defecto: #BASE

13.2.10 $JERK

Descripcin Limitacin cartesiana del tirn para SPLINE en la alimentacin


La variable del tipo de estructura JERK_STRUC limita la modificacin tempo-
ral de la aceleracin en los movimientos CP Spline (SLIN, SCIRC).

La variable es relevante solamente con movimientos CP Spline que


se planean sin modelo dinmico. (Solo KUKA System Software 8.1.
A partir del KUKA System Software 8.2, la variable ya no es relevan-
te.)

El grupo est formado por los siguientes componentes:

CP: modificacin de la aceleracin en trayectoria en [m/s3]


ORI: modificacin de la aceleracin en trayectoria en [/s3]
AX: modificacin de la aceleracin del eje en [/s3] en ejes de rotacin o
en [m/s3] en el caso de ejes lineales
El tirn mximo permitido para movimientos SPLINE est definido en los da-
tos de mquina (variable $JERK_MA en el archivo R1\Mada\$machine.dat).

Ejemplo $JERK={CP 50.0,ORI 50000.0,AX {A1 1000.0,A2 1000.0,A3 1000.0,A4


1000.0,A5 1000.0,A6 1000.0,E1 1000.0,E2 1000.0,E3 1000.0,E4 1000.0,E5
1000.0,E6 1000.0}}

13.2.11 $LOAD

Descripcin Datos de carga actualmente vigentes en la alimentacin


La estructura contiene los datos de carga que se han introducido en la unidad
de control del robot y se han asignado a la herramienta actual. El sistema de
coordenadas de referencia es el sistema de coordenadas FLANGE.
(>>> "Cargas en el robot" Pgina 245)

Sintaxis $LOAD={M Masa, CM centro de gravedad, J inercia}

Aclaracin de la
Elemento Descripcin
sintaxis
Masa Tipo: REAL; unidad: kg
Centro de Tipo: FRAME
gravedad
X, Y, Z: Situacin del centro de gravedad relativo a la
brida
A, B, C: Orientacin de los ejes principales de inercia
relativos a la brida
Inercia Tipo: INERTIA
X, Y, Z: momentos de inercia de masa alrededor de los
ejes del sistema de coordenadas que est girado de
forma relativa respecto a la brida mediante A, B, C

244 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


13 Anexo

Cargas en el Al robot pueden acoplarse distintas cargas:


robot Carga en la brida
Carga adicional en el eje 3
Carga adicional en el eje 2
Carga adicional en el eje 1

Fig. 13-8: Cargas en el robot

1 Carga 3 Carga adicional sobre el eje 2


2 Carga adicional sobre el eje 3 4 Carga adicional sobre el eje 1

Parmetros Los datos de carga se definen por medio de los siguientes parmetros:

Parmetros Unidad
Masa m kg
Distancia al centro de Lx, Ly, Lz mm
gravedad
Inercias de masa en el Ix, Iy, Iz kg m2
centro de gravedad

Sistemas de referencia para los valores X, Y y Z por cada carga:

Carga Sistema de referencia


Carga til Sistema de coordenadas FLANGE
Carga adicional A3 Sistema de coordenadas FLANGE
A4 = 0, A5 = 0, A6 = 0
Carga adicional A2 Sistema de coordenadas ROBROOT
A2 = -90
Carga adicional A1 Sistema de coordenadas ROBROOT
A1 = 0

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 245 / 255


Programacin de robots 2

13.2.12 $ORI_TYPE

Descripcin Control de orientacin de un movimiento CP en la alimentacin

Sintaxis $ORI_TYPE=Tipo

Aclaracin de la
Elemento Descripcin
sintaxis
Tipo Tipo: ENUM
#CONSTANT: La orientacin del TCP se mantiene de
forma constante durante el movimiento.
#VAR: La orientacin del TCP se modifica continua-
mente durante el movimiento.
#JOINT: La orientacin del TCP se modifica continua-
mente durante el movimiento. Esto se logra mediante el
desplazamiento lineal del ngulo del eje de la mueca
(desplazamiento especfico del eje).
Indicacin: si $ORI_TYPE = #JOINT, la variable
$CIRC_TYPE se ignora.

13.2.13 $ROTSYS

Descripcin Sistema de coordenadas de referencia para la rotacin en la alimentacin


Con la variable puede definirse el sistema de coordenadas en el que se eje-
cuta la rotacin (A, B, C) en el caso de movimientos relativos y del desplaza-
miento manual.

Sintaxis $ROTSYS=sistema de referencia

Aclaracin de la
Elemento Descripcin
sintaxis
Sistema de Tipo: ENUM
referencia
#AS_TRA: rotacin en el sistema de coordenadas
$TRANSSYS
#BASE: rotacin en el sistema de coordenadas BASE
#TCP: rotacin en el sistema de coordenadas TOOL
Por defecto: #AS_TRA

13.2.14 $SPL_ORI_JOINT_AUTO

Descripcin $SPL_ORI_JOINT_AUTO sirve para la optimizacin del comportamiento de


movimiento cerca de las singularidades de los ejes de la mueca.
Modo de accin de $SPL_ORI_JOINT_AUTO = #ON:
Para movimientos Spline CP, para los que es vlida $ORI_TYPE = #VAR,
la unidad de control del robot decide automticamente por movimiento (es
decir, tambin por segmento) se ejecutan como #VAR o como #JOINT.

Sintaxis $SPL_ORI_JOINT_AUTO =tipo

246 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


13 Anexo

Aclaracin de la
Elemento Descripcin
sintaxis
Tipo Tipo: ENUM
#OFF ninguna optimizacin cerca de la singularidad de
los ejes de la mueca
#ON es una alternativa a la utilizacin de $ORI_TYPE
= #JOINT. Mientras que $ORI_TYPE = #JOINT se pue-
de utilizar de forma precisa para movimientos individua-
les, $SPL_ORI_JOINT_AUTO = #ON permite la
optimizacin automtica para secuencias de programa-
cin con el tamao deseado y con una necesidad de
modificacin muy reducida.
$SPL_ORI_JOINT_AUTO solo se puede modificar me-
diante un programa de robot.
$SPL_ORI_JOINT_AUTO no se puede ajustar en seg-
mentos Spline.
Por defecto: $SPL_ORI_JOINT_AUTO = #OFF

13.2.15 $TOOL

Descripcin Sistema de coordenadas TOOL en la alimentacin


La variable del tipo de estructura FRAME describe la posicin terica del sis-
tema de coordenadas TOOL referida al sistema de coordenadas FLANGE.
X, Y, Z: desplazamiento del origen a lo largo de los ejes en [mm]
A, B, C: giro del ngulo del eje en []

13.2.16 $VEL

Descripcin Velocidad del TCP en la alimentacin


La variable del tipo de estructura CP contiene la velocidad cartesiana progra-
mada para los siguientes componentes:
CP: velocidad de trayectoria en [m/s]
ORI1: velocidad de basculacin en [/s]
ORI2: velocidad de rotacin en [/s]
Valores lmite para la velocidad cartesiana:
0.0 $VEL_MA
La velocidad cartesiana mxima $VEL_MA est definida en los datos de
mquina.

La documentacin acerca de los datos de mquina contiene informa-


cin detallada sobre la variable $VEL_MA.

Cuando $VEL vulnera los valores lmite, se visualiza el mensaje Asignacin


de valor no permitida. La ejecucin del programa se detiene o la instruccin
de movimiento correspondiente durante el desplazamiento manual no se eje-
cuta.

Ejemplo $VEL={CP 2.0,ORI1 300.0,ORI2 300.0}

13.2.17 $VEL_AXIS

Descripcin Velocidad de los ejes del robot en la alimentacin

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 247 / 255


Programacin de robots 2

La variable contiene la velocidad de eje programada en tanto por ciento, refe-


rida a la velocidad del eje mxima definida en los datos de la mquina
$VEL_AXIS_MA (variable en el archivo R1\Mada\$machine.dat).

Sintaxis $VEL_AXIS[Nmero de eje]=velocidad

Aclaracin de la
Elemento Descripcin
sintaxis
Nmero del Tipo: INT
eje
1 6: eje del robot A1 A6
Velocidad Tipo: INT; unidad: %
1 100

13.2.18 $VEL_EXTAX

Descripcin Velocidad de los ejes externos en la alimentacin


La variable contiene la velocidad de eje programada en tanto por ciento, refe-
rida a la velocidad del eje mxima definida en los datos de la mquina
$VEL_AXIS_MA (variable en el archivo R1\Mada\$machine.dat).

Sintaxis $VEL_EXTAX[Nmero de eje]=Velocidad

Aclaracin de la
Elemento Descripcin
sintaxis
Nmero del Tipo: INT
eje
1 6: eje adicional E1 E6
Velocidad Tipo: INT; unidad: %
1 100

13.2.19 $CIRC_MODE

Descripcin Comportamiento del control de orientacin y de los ejes externos en el punto


auxiliar y el punto de destino de un crculo SCIRC
Para movimientos SCIRC, la unidad de control del robot puede tener en cuen-
ta la orientacin programada del punto auxiliar. Con $CIRC_MODE puede de-
terminarse si debe tenerse en cuenta y en qu medida.
Adems, con $CIRC_MODE se puede determinar si el punto de destino debe
tener la orientacin programada en las instrucciones SCIRC con ngulo circu-
lar o si la orientacin se debe escalar de acuerdo con el ngulo circular.
$CIRC_MODE solo se escribir mediante una instruccin SCIRC.
$CIRC_MODE no se puede leer.

Sintaxis Para puntos auxiliares:


$CIRC_MODE.AUX_PT.ORI = Reaccin HP
Para puntos de destino:
$CIRC_MODE.TARGET_PT.ORI = Reaccin ZP

248 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


13 Anexo

Aclaracin de la
Elemento Descripcin
sintaxis
Reaccin HP Tipo: ENUM
#INTERPOLATE: En el punto auxiliar se acepta la
orientacin programada.
#IGNORE: La orientacin de partida se convierte du-
rante la trayectoria ms corta en la orientacin de des-
tino. La orientacin programada del punto auxiliar se
ignora.
#CONSIDER: La orientacin de partida se convierte du-
rante la trayectoria en orientacin de destino, que inclu-
ye la orientacin programada del punto auxiliar. Es
decir, que la orientacin del punto auxiliar se recoge a
lo largo de la trayectoria, pero no necesariamente en el
punto auxiliar.
Por defecto: #CONSIDER
Reaccin ZP Tipo: ENUM
#INTERPOLATE: En el punto de destino real se acepta
la orientacin programada del punto de destino.
(nica posibilidad para SCIRC sin indicacin del ngulo
circular. Si #EXTRAPOLATE est ajustado, #INTER-
POLATE se ejecuta igualmente.)
#EXTRAPOLATE: En el punto de destino programado
se acepta la orientacin programada. En el punto de
destino real se escala la orientacin de acuerdo con el
ngulo circular.
Valor por defecto para SCIRC con indicacin del ngulo
circular: #EXTRAPOLATE

Restricciones Si para un segmento SCIRC se aplica $ORI_TYPE = #IGNORE, no se


evaluar $CIRC_MODE.
Si a un segmento SCIRC le precede un segmento SCIRC o SLIN para el
que se aplica $ORI_TYPE = #IGNORE, no se podr utilizar #CONSIDER
en el segmento SCIRC.
Para SCIRC con ngulo circular:
Para el punto auxiliar no se debe ajustar #INTERPOLATE.
Si se aplica $ORI_TYPE = #IGNORE, no se podr ajustar #EXTRAPOLA-
TE para el punto de destino.
Si precede un segmento Spline para el que se aplica $ORI_TYPE = #IG-
NORE, no se podr ajustar #EXTRAPOLATE para el punto de destino.

Ejemplo: El TCP recorre un arco circular con 192 cartesianos.


Punto auxiliar La orientacin en el punto de inicio es 0.
La orientacin en el punto auxiliar es 98.
La orientacin en el punto de destino es 197.
Por lo tanto, el cambio de orientacin es de 197 si se tiene en cuenta el punto
auxiliar.
Si se ignora la orientacin en el punto auxiliar, tambin se podr alcanzar la
orientacin de destino a travs del cambio de orientacin de 360 - 197 =
163.
#INTERPOLATE:
En el punto auxiliar se acepta la orientacin programada de 98. Por lo
tanto, el cambio de orientacin es de 197.

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 249 / 255


Programacin de robots 2

#IGNORE:
La orientacin programada del punto auxiliar se ignora. Se ejecuta el cam-
bio de orientacin ms corto de 163.
#CONSIDER:
Se recorre la trayectoria que incluye la orientacin del punto auxiliar, en
este caso el cambio de orientacin con 197. Es decir, a lo largo de la tra-
yectoria se aceptan los 98, pero no necesariamente en el punto auxiliar.

Ejemplo: El ejemplo muestra esquemticamente la reaccin de #INTERPOLATE y


Punto de destino #EXTRAPOLATE.
Las flechas discontinuas claras muestran la orientacin programada.
Las flechas oscuras muestran la orientacin real si se diferencia de la
orientacin programada.
#INTERPOLATE:
En TP, que se encuentra delante de TP_CA, an no se ha alcanzado la orien-
tacin programada. En TP_CA se acepta la orientacin programada.

Fig. 13-9: #INTERPOLATE

SP Punto de inicio
AuxP Punto auxiliar
TP Punto de destino programado
TP_CA Punto de destino real. Se obtiene por el ngulo circular.

#EXTRAPOLATE:
En TP se acepta la orientacin programada. Para TP_CA se escala esta
orientacin de acuerdo con el ngulo circular.

250 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


13 Anexo

Fig. 13-10: #EXTRAPOLATE

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 251 / 255


Programacin de robots 2

252 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


ndice

ndice
Smbolos DEFFCT 111
$ACC 239 Dilogo 135
$ACC_AXIS 240
$ACC_EXTAX 240 E
$ACC_MA 239 E/S analgicas, ejercicio 229
$APO 240 Editor KRL 41
$BASE 242 Ejemplo PEP 64
$CIRC_MODE 149, 248 EKrlMsgType 117
$CIRC_TYPE 242 ENUM 98
$ECO_LEVEL 242 Entradas analgicas 223
$GEAR_JERK 243 Estructura 93
$IPO_MODE 243 Estructura del proyecto (ventana) 9
$JERK 244 Estructura del proyecto WorkVisual (pestaa
$JERK_MA 244 Ficheros) 13
$LOAD 244 Explorador de proyecto 10
$ORI_TYPE 246
$RAISE_TIME 240 F
$ROTSYS 246 Fold 59
$SPL_ORI_JOINT_AUTO 246 Fragmentos (snippets) entrada rpida para
$TIMER r 185 instrucciones KRL 48
$TOOL 247 Funciones 101, 111, 113
$VEL 247 Funciones de conmutacin 203
$VEL_AXIS 247 Funciones estndar 83, 113
$VEL_AXIS_MA 248 Funciones para la emisin de mensaje 113
$VEL_EXTAX 248 Funciones para variables de cadena 113
$VEL_MA 247 Funciones, matemticas 113

A G
Activar el proyecto en la unidad de control 32 Global 189
Administrador 65 global 77
Anexo 231 Grupo 87
Avance 77 Grupo de usuario, por defecto 65
Ayuda 9
I
B Importar, proyecto de WorkVisual 35
Barra de mens 9 Impulso 206
Barras de botones 9 Individual (opcin de men) 86
Bloque de tiempo 215 Inercia de masa 245
Bloque Spline CP 180 Inicializacin 80
Bloque Spline PTP 181 interpretador Submit 219
Bloquear 34 Interrupcin 189
Introduccin al nivel del experto 65
C
Campos 87 K
Cancelar movimiento con interrupcin, ejercicio KrlMsg_T 116
201 KrlMsgDlgSK_T 133
Cargas en el robot 245 KrlMsgOpt_T 118
Cargas tiles 245
Catlogos (ventana) 9 L
Centro de gravedad 245 local 77
Comentario 57
Comparar proyectos 14 M
Manipulacin 82, 83
D Masa 245
DECL 77, 78 Mensaje de acuse de recibo 115, 127
Declaraciones 75 Mensaje de dilogo 115
Declaracin 77, 79 Mensaje de espera 115, 130
Declarar interrupcin, ejercicio 195 Mensaje de estado 115

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 253 / 255


Programacin de robots 2

mensaje de estado 124 Tiempo de ciclo 185


Mensaje de observacin 115, 121 Tipo de datos de enumeracin 98
Mensajes 115 Tipos de clculo bsicos 82
mensajes 115 Transferencia de parmetros 105
Mensajes (ventana) 9 Transmitir el proyecto a la unidad de control del
Mensajes de usuario 115 robot (instalar) 18
mensajes de usuario 115
Metodologa de programacin, ejemplo PEP 64 V
Modificar variable 86 Variable, mostrar individual 86
Modo de interpolacin 243 Variables 75, 78
Modos de WorkVisual 12 Variables de sistema 185
Vida til 77
N Vista general de la interfaz de usuario WorkVisu-
Nombres de datos 62 al 8
Nmero de mensaje 116
W
O WITH (variables del sistema permitidas) 154,
Operaciones de bit 82 183
Operaciones de comparacin 82
Operaciones lgicas 82 Z
Operario 65 Zona de desplazamiento constante 213, 214
Zonas de trabajo (ventana) 9
P ngulo circular 234
Palabra clave 77
Parada condicionada 210
PEP 62
Plan de ejecucin del programa, PEP 62
Prioridad 85, 190, 208
Programacin de movimientos en KRL 141
Programacin estructurada 57
Programador 65
Programar un dilogo, ejercicio 139
Programar un mensaje de acuse de recibo,
ejercicio 129
Programar un mensaje de espera, ejercicio 132
Programar un mensaje de estado, ejercicio 126
Programar un mensaje de observacin, ejercicio
123
Propiedades (ventana) 10

R
Remitente 116
Return 102, 111

S
Salidas analgicas 225
Seleccionar el tipo de mensaje 117
Seleccin de paso 173
seales analgicas 223
Singularidad, Spline CP 246
Submit 219
Subprogramas 60, 101
Subprogramas, globales 103
Subprogramas, locales 101
Smbolos PEP 62

T
Template 35
Temporizador 185
Tensin 226
Texto del mensaje 116

254 / 255 Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4


Programacin de robots 2

Edicin: 24.02.2015 Versin: P2KSS8_robotprogramming_2_(R2)_V4 255 / 255

You might also like