Sie sind auf Seite 1von 202

SOFTWARE

KR C2 / KR C3

Programacin por el experto

KUKA System Software (KSS) Release 5.2

Edicin: 12.09.2005

Versin: 01
1 de 197

ProgExperteBHR5.2 09.03.01 es

e Copyright 2005

KUKA Roboter GmbH Zugspitzstrasse 140 D-86165 Augsburg


La reproduccin de esta documentacin - o parte de ella - o su facilitacin a terceros solamenta est permitida con expresa autorizacin del editor. 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 estos escritos es controlado periodicamente, y en casos de divergencia, stas son enmendadas y presentadas correctamente en las ediciones siguientes. Reservados los derechos a modificaciones tcnicas que no tengan influencia sobre la funcin.

2 de 197

ProgExperteBHR5.2 09.03.01 es

Indice
1
1.1 1.1.1 1.1.2 1.1.3 1.2 1.2.1 1.2.2 1.3 1.3.1 1.3.2 1.3.2.1 1.3.2.2 1.3.2.3 1.3.2.4 1.3.2.5 1.3.2.6 1.3.2.7 1.4 1.4.1 1.4.1.1 1.5 1.5.1 1.5.2 1.6 1.7

Generalidades sobre los programas KRL . . . . . . . . . . . . . . . . . . . . . . . . . .


Estructura y creacin de programas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Superficie del programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Concepto de archivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Estructura de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Crear programas y editarlos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Crear un programa nuevo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Editar, compilar y vincular un programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modificacin de programas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Correccin de programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Funciones de bloque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Copiar (CTRL--C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Insertar (CTRL--V) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cortar (CTRL--X) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Borrar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Buscar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Reemplazar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Esconder partes de un programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FOLD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Programa de ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modo de ejecucin del programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Seleccin del modo de ejecucin del programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cambio del modo de ejecucin del programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tratamiento de errores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Comentarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7
7 7 8 8 10 10 11 13 13 13 13 14 14 14 14 14 15 17 17 18 20 20 21 23 26

2
2.1 2.2 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.3 2.3.1 2.3.1.1 2.3.1.2 2.3.1.3 2.3.1.4 2.3.1.5 2.3.1.6

Variables y declaraciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Variables y nombres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Objetos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Declaracin e inicializacin de objetos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tipos de datos simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Campos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cadenas de caracteres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Estructuras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tipos de enumeracin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Manipulacin de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operadores aritmticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operador geomtrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operadores de comparacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operadores lgicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operadores de bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Prioridades de los operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

27
27 29 29 30 33 36 36 39 40 40 40 42 46 47 48 50 3 de 197

ProgExperteBHR5.2 09.03.01 es

Programacin por el experto

2.3.2 2.4 2.5 2.5.1 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7

Funciones estndar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Variables del sistema y archivos del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Manipulacin de variables de cadena . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Longitud de una variable de cadena en la declaracin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Longitud de una variable de cadena despus de la inicializacin . . . . . . . . . . . . . . . . . . . . . . Borrar el contenido de una variable de cadena . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ampliar la variable de cadena . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bsqueda de variables de cadena . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Comparacin del contenido de variables de cadena . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Copiar una variable de cadena . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

51 53 57 57 57 58 58 59 59 60

3
3.1 3.2 3.2.1 3.2.2 3.2.3 3.2.3.1 3.3 3.3.1 3.3.2 3.3.3 3.3.4 3.4 3.5 3.5.1 3.5.2 3.5.3 3.5.4 3.5.5 3.6

Programacin de movimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Utilizacin de diferentes sistemas de coordenadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Movimientos punto a punto (PTP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . General (PTP sincrnico) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Perfil de marcha ms elevado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instrucciones de movimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Singularidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Movimientos de trayectoria (movimientos CP = Continuous Path) . . . . . . . . . . . . . . . . . . . . Velocidad y aceleracin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Control de la orientacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Movimientos lineales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Movimientos circulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Procesamiento en avance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Movimientos con posicionamiento aproximado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Posicionamiento aproximado PTP--PTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Posicionamiento aproximado LIN--LIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Posicionamiento aproximado CIRC--CIRC y posicionamiento aproximado CIRC--LIN . . . . Posicionamiento aproximado PTP -- trayectoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cambio de herramienta durante el posicionamiento aproximado . . . . . . . . . . . . . . . . . . . . . . Programacin por aprendizaje de los puntos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

61
61 67 67 68 68 78 80 80 82 87 89 91 93 94 96 98 101 104 105

4
4.1 4.1.1 4.1.2 4.1.3 4.2 4.2.1 4.2.2 4.2.3 4.2.4 4.2.5 4.3 4.3.1 4.3.2 4.4 4.5

Control de ejecucin del programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


Ramificaciones de programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instrucciones de salto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ramificacin condicionada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Distribuidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bucles de conteo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bucle rechazante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bucles no rechazantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bucles sinfn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Terminacin anticipada de la ejecucin de bucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instrucciones de espera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Espera a un evento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tiempos de espera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Detener el programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Confirmacin de mensajes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

107
107 107 107 108 109 109 110 111 112 112 113 113 115 116 116

4 de 197

ProgExperteBHR5.2 09.03.01 es

5
5.1 5.2 5.3 5.3.1 5.3.2 5.3.3 5.4 5.5 5.5.1 5.5.2 5.6

Instrucciones de entrada/salida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Generalidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Entradas y salidas binarias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Entradas y salidas digitales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Declaracin de la seal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Lectura de nmeros de seal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Activar salidas en el punto de destino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Salidas de impulso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Entradas y salidas analgicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Salidas Analgicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Entradas analgicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Entradas digitales predefinidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

118
118 118 121 121 123 125 127 129 129 131 134

6
6.1 6.2

Subprogramas y funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Declaraciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Llamada y transferencia de parmetros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

136
136 139

7
7.1 7.2 7.3 7.4 7.5

Tratamiento de interrupciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Declaracin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Activacin de interrupciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Detencin de movimientos en ejecucin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cancelacin de rutinas de interrupcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Utilizacin de banderas (flags) cclicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

144
144 146 150 151 154

8
8.1 8.2

Trigger - Acciones de conmutacin referentes a la trayectoria . . . . . .


Acciones de conmutacin en el punto de inicio o de destino de la trayectoria . . . . . . . . . . . Acciones de conmutacin en cualquier lugar sobre la trayectoria . . . . . . . . . . . . . . . . . . . . .

156
156 159

9
9.1 9.2

Listas de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Listas de datos locales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Listas de datos globales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

164
164 165

10
10.1 10.2 10.3 10.3.1 10.3.2 10.3.3 10.3.4 10.3.5 10.4 10.4.1

Editor externo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Arranque del editor externo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Men Fichero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Abrir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Guardar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Salida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cerrar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Salir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Men Editar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cortar (CTRL--X) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

168
169 170 172 172 172 172 173 173 174 174 5 de 197

ProgExperteBHR5.2 09.03.01 es

Programacin por el experto

10.4.2 10.4.3 10.4.4 10.4.5 10.5 10.5.1 10.5.2 10.5.3 10.5.4 10.5.5 10.6 10.6.1 10.6.2 10.6.2.1 10.6.3 10.6.3.1 10.6.3.2 10.7 10.7.1 10.7.2 10.7.2.1 10.7.2.2 10.7.3 10.8 10.8.1 10.9 10.9.1 10.9.2

Copiar (CTRL--C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pegar como ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Borrar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Seleccionar todo (CTRL+A) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Men Utilidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Espejo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Entrada manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cambio de bloque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Limpiar lista de ficheros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ajuste del TCP o de BASE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Men HotEdit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Base, TCP y World . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . TTS (Sistema de coordenadas de correccin) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Position--TTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Limite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Limits -- Base/World . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Limits -- TTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Men Ext Utilidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fichero -- Espejo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fichero -- Cambiar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Utilizar el fichero de referencia existente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Crear un nuevo fichero de referencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Limite cambiado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Men Opciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ajuste de salida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Men Ayuda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Versin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Permanecer arriba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

174 174 174 174 175 175 176 180 180 181 182 182 184 185 187 187 187 188 188 190 191 192 193 194 194 195 195 195

6 de 197

ProgExperteBHR5.2 09.03.01 es

Generalidades sobre los programas KRL

1
1.1
1.1.1

Generalidades sobre los programas KRL


Estructura y creacin de programas
Superficie del programa
En el instante de haber cambiado al nivel del experto, se modifica la superficie de operacin del modo representado a continuacin:

Mientras que para el usuario son invisibles todos los archivos de sistema, el experto puede verlos y tambin editarlos en la ventana de programas. Adems, junto a los nombres de archivo y comentarios, en el nivel del experto pueden mostrarse tambin las extensiones, atributos y tamaos de los archivos. Segn los ajustes predeterminados, despus de la instalacin, los siguientes programas y archivos se encuentran en diferentes directorios KRC. En el directorio KRC:\R1\ se encuentra el siguiente archivo: CELL.SRC Programa para el mando de robots a travs de un PLC central. Aqu, se selecciona a partir de un nmero de programa, el programa de la pieza correspondiente Significado Lista de datos del sistema con variables del sistema para la adaptacin de la unidad de control y del robot Lista de datos del sistema con datos para el modelo dinmico del robot Archivos servo especficos de la mquina Archivo del sistema para futuras actualizaciones Archivo del sistema para futuras actualizaciones 7 de 197

En el directorio KRC\R1\MADA\ se encuentran los siguientes archivos: Fichero $MACHINE.DAT $ROBCOR.DAT KSD... MACHINE.UPG ROBCOR.UPG ProgExperteBHR5.2 09.03.01 es

Programacin por el experto

En el directorio KRC:\R1\SYSTEM\ se encuentran los siguientes archivos: Fichero $CONFIG.DAT BAS.SRC IR_STOPM.SRC SPS.SUB Significado Lista de datos del sistema con datos generales de configuracin Paquete bsico para el comando de movimientos Programa para el tratamiento de errores cuando se producen averas Fichero submit para controles paralelos

En el directorio KRC:\R1\TP\ se encuentra el siguiente archivo: Fichero P00.DAT P00.SRC Significado Paquete de programas para el acoplamiento a un PLC

Normalmente, los programas y archivos para paquetes de tecnologa opcionales se guardan en el directorio TP.

1.1.2

Concepto de archivo
Un programa KRL puede estar compuesto de un fichero SRC y de un fichero DAT. Aqu, el fichero con la extensin SRC es el archivo con el cdigo de programa propiamente dicho. Aqu existen las variantes DEF y DEFFCT (con valor de retorno). Por el contrario, el fichero con la extensin DAT contiene los datos especficos para el programa. Esta particin est basada en el concepto de archivo de KRL: El programa contiene, adems de las instrucciones de movimiento, distintas acciones que deben ser ejecutadas por el robot industrial. stas pueden ser determinadas secuencias de movimientos, por ejemplo abrir o cerrar una herramienta con garras, amn de otras ejecuciones ms complejas, tales como el mando de una pinza de soldadura tomando en consideracin las condiciones lmite. Para efectuar el test de programas es til, y a veces necesario, poder ejecutar tareas parciales. El concepto de archivo realizado en KRL, cumple con las necesidades especiales de la programacin del robot.

1.1.3

Estructura de archivos
Un archivo es la unidad que programa el programador. Con ello, un archivo corresponde a una unidad de programa en el disco duro o en la memoria (RAM). Cada programa en KRL puede constar de uno o varios archivos. Los programas simples comprenden exactamente un archivo. Las tareas ms complejas se solucionan mejor con un programa compuesto de varios archivos. La informacin detallada acerca de los subprogramas y funciones se encuentra en el apartado [Subprogramas y funciones]. La estructura interior de un archivo KRL consta de la seccin de declaraciones, la seccin de instrucciones y hasta 255 subprogramas y funciones locales.

DEF

El nombre del objeto sin extensin es asimismo el nombre del archivo y por ello se indica en la declaracin con DEF. El nombre debe constar de un mximo de 24 caracteres y no debe ser ninguna palabra clave (vase el captulo [Variables y declaraciones]). Cada archivo comienza con la declaracin DEF y finaliza con END. DEF NAME(X1:IN) Declaraciones Instrucciones END

8 de 197

ProgExperteBHR5.2 09.03.01 es

Generalidades sobre los programas KRL (continuacin)

Declaracin

Las declaraciones se evalan antes de la ejecucin del programa, es decir, durante la compilacin. En la seccin de declaraciones no debe haber ninguna instruccin. La primera instruccin constituye asimismo el comienzo de la seccin de instrucciones. Contrariamente a lo que ocurre en la seccin de declaraciones, las instrucciones tienen un carcter dinmico: se ejecutan durante la ejecucin del programa. Un programa del robot puede constar de un solo fichero de programa o de un fichero de programa con la correspondiente lista de datos. La lista de datos y el fichero se sealizan como correspondientes mediante sus nombres comunes. Los nombres solamente se diferencian por la extensin, por ejemplo: Fichero: Lista de datos: PROG1.SRC PROG1.DAT

Instruccin Lista de datos

En la lista de datos slo se permiten asignaciones de valores con =. Cuando la lista de datos y el fichero poseen el mismo nombre, pueden utilizarse las variables que estn declaradas en la lista de datos de igual modo que las variables declaradas en el fichero SRC. La informacin detallada acerca de este tema se encuentra en el captulo [Listas de datos].

ProgExperteBHR5.2 09.03.01 es

9 de 197

Programacin por el experto

1.2
1.2.1

Crear programas y editarlos


Crear un programa nuevo
Softkey Nuevo Significado Dado que un programa para robot puede crearse tambin sin lista de datos, el archivo y la lista de datos no se crean automticamente al mismo tiempo en el nivel de experto. Para crear un programa, pulse la tecla del softkey Nuevo. Aparece la siguiente ventana: Se le solicita que seleccione un Template. Utilice para ello las teclas de flecha y confirme su seleccin con la tecla del softkey OK o con la tecla de entrada.

OK

Los Templates disponibles no pueden ser creados en todos los directorios. La informacin ms detallada acerca de los Templates se encuentra en el Manual de operacin en la documentacin [Instrucciones], captulo [Navegador], apartado [Apndice]. Los distintos Templates de forma individual: Template Modul Expert Cell Significado Se crea un fichero SRC y un fichero DAT, que contiene un programa base o tronco de programa. Se crea un fichero SRC y un fichero DAT, que contienen solo el encabezamiento DEF y END. En este caso slo se crea un fichero SRC que contiene un programa base o tronco de programa. Este programa sirve para el mando del robot a travs de un PLC central. En este caso se crea una funcin (fichero SRC) que contiene el encabezamiento DEF y END. Se crea un fichero SUB con una base o tronco de programa. El fichero Submit contiene instrucciones y puede ser utilizado por ejemplo, para controles cclicos (garras, etc.). El fichero Submit trabaja en forma paralela al servicio del robot y es ejecutado por el interpretador de la unidad de control. Como en el caso del Template Submit, se crea un fichero SUB que, sin embargo, slo contiene el encabezamiento DEF y END.

Function Submit

Expert Submit

El encabezamiento DEF y END y los programas base o troncos de programas de cada uno de los Template se encuentran (por ejemplo, para el Template Cell) en C:\KRC\ROBOTER\TEMPLATE\CellVorgabe.src. Si ha seleccionado el correspondiente Template, se le solicitar que d un nombre al fichero que desea generar.

Nombre de fichero (mx. 24 caracteres)

Extensin del fichero (SRC, DAT o SUB)

Comentario

El nombre del fichero es lo nico obligatorio y puede tener, como mx., una longitud de 24 caracteres. La extensin del fichero se completa automticamente. Si quiere agregar un comentario, con la tecla de flecha derecha desplace el cursor sobre el campo correspondiente e introduzca el texto deseado. 10 de 197 ProgExperteBHR5.2 09.03.01 es

Generalidades sobre los programas KRL (continuacin)

Para confirmar la entrada, pulse la tecla del softkey OK o la tecla de retorno. La lista de datos es imprescindible si en su archivo SRC tambin desea insertar instrucciones guiadas por men.

1.2.2

Editar, compilar y vincular un programa


Si ha creado un fichero o una lista de datos con Nuevo, puede procesarlos con el editor. Para ello se utiliza la tecla del softkey Abrir. Al cerrar el editor, se compila el cdigo de programa completo, es decir, el cdigo KRL textual se traduce a un lenguaje de mquina comprensible para la unidad de control. Para que el programa sea claro y comprensible, es necesario, por ej., que cuando existen ramificaciones stas queden colocadas en distintos niveles. Esto se puede lograr en el editor utilizando los espacios en blanco. El compilador comprueba el cdigo para verificar que la sintaxis y la semntica son correctas. Si existe algn error, se emite el correspondiente mensaje y se genera un archivo de fallos con la extensin .ERR. Slo se pueden seleccionar y ejecutar programas exentos de errores.

Encontrar ms informacin sobre el tratamiento de errores o fallos de edicin en el apartado [Tratamiento de errores]. Cuando se carga un programa con la tecla del softkey Seleccionar, todos los ficheros y listas de datos necesarios se vinculan para formar un programa. Al vincular estos datos, el sistema comprueba si todos los mdulos existen, han sido analizados y estn exentos de errores. Adems, cuando se efecta una transferencia de parmetros, el vnculo comprueba la compatibilidad de tipos entre los parmetros transmitidos. Al igual que ocurre durante las compilaciones, si durante este proceso aparece algn error, se genera un fichero de error con la extensin .ERR. A continuacin se presenta un ejemplo sencillo de programa para la definicin de velocidades y aceleraciones de ejes:

ProgExperteBHR5.2 09.03.01 es

11 de 197

Programacin por el experto

DEF PROG1() ;----- Seccin de declaraciones ----INT J ;------ Seccin de instrucciones ------$VEL_AXIS[1]=100 ;Especificacin de las velocidades de eje $VEL_AXIS[2]=100 $VEL_AXIS[3]=100 $VEL_AXIS[4]=100 $VEL_AXIS[5]=100 $VEL_AXIS[6]=100 $ACC_AXIS[1]=100 $ACC_AXIS[2]=100 $ACC_AXIS[3]=100 $ACC_AXIS[4]=100 $ACC_AXIS[5]=100 $ACC_AXIS[6]=100 ;Especificacin de las aceleraciones de eje

PTP {A1 0,A2 -90,A3 90,A4 0,A5 0,A6 0} FOR J=1 TO PTP {A1 PTP {A2 PTP {A1 ENDFOR 5 4} -7,A3 5} 0,A2 -9,A3 9}

PTP {A1 0,A2 -90,A3 90,A4 0,A5 0,A6 0} END

12 de 197

ProgExperteBHR5.2 09.03.01 es

Generalidades sobre los programas KRL (continuacin)

1.3

Modificacin de programas
Bsicamente, existen dos posibilidades de modificar un programa en la superficie de operacin del nivel del experto: G G Correccin de programa (PROKOR) Editor

1.3.1

Correccin de programa
Correccin de programa es el mtodo normal. Si se selecciona un programa o se detiene un programa en curso, el sistema pasa automticamente al modo PROKOR. Aqu se pueden introducir o modificar instrucciones por medio del formulario inline o en cdigo ASCII (en el nivel del experto) que nicamente afectan a una lnea de programa. Por lo tanto, quedan excluidas las estructuras de control (bucles, etc.) y las declaraciones de variables. En el estado seleccionado, al salir de la lnea de programa, las entradas errneas son borradas inmediatamente y aparece un mensaje de error en la ventana de mensajes.

1.3.2

Editor
Mediante la tecla del softkey Abrir, debe abrir un programa cuyo contenido desee modificar con las funciones de bloque. Por ello, para procesar o insertar determinadas instrucciones KRL o estructuras de programas, debe utilizarse el editor. Dado que al cerrar el editor se compila el cdigo completo, tambin pueden detectarse errores que se producen en relacin con otras lneas (por ejemplo, variables declaradas incorrectamente). Los programas que contienen instrucciones de movimiento (p. ej. PTP, LIN, CIRC) y se cargan en el editor para su posterior procesamiento, deben encontrarse en el directorio KRC:\.... De lo contrario, aparece el correspondiente mensaje de error (como sucede, por ejemplo, al copiar bloques).

1.3.2.1

Funciones de bloque Las funciones de bloque solamente estn disponibles en el editor a partir del nivel del Experto. Mediante la tecla del softkey Editar, debe abrir el programa cuyo contenido desea modificar con las funciones de bloque. Para saber cmo pasar antes al nivel del Experto, consulte el captulo [Configurar el sistema], apartado Grupo de usuario. Coloque primero el cursor intermitente del editor sobre el comienzo o el final de aquella parte de programa que desea cambiar de lugar. Luego mantenga pulsada la tecla Shift en el teclado moviendo mientras tanto el cursor hacia arriba o hacia abajo. De esta manera, marcar la parte del programa que, en el paso siguiente, va a procesar con las funciones de bloque. La parte marcada aparecer resaltada en otro color. Pulse la tecla de men Editar y seleccione la funcin deseada en el men que se abrir. Si para las funciones de bloque se han de utilizar el bloque numrico y el teclado, la funcin NUM debe estar desactivada. Para ello, pulse en el teclado la tecla NUM. En ese momento, se desactivar la indicacin correspondiente en la lnea de estado.

ProgExperteBHR5.2 09.03.01 es

13 de 197

Programacin por el experto

1.3.2.2

Copiar (CTRL-C) [Procesar > Copiar] La seccin marcada del programa es memorizada en el portapapeles para su posterior procesamiento. Esta seccin puede ser insertada a continuacin en otro lugar. Alternativamente, puede mantener pulsada la tecla CTRL del bloque numrico y pulsar en el teclado la tecla C. A continuacin suelte ambas teclas.

1.3.2.3

Insertar (CTRL-V) Coloque el cursor del editor sobre el punto donde desea insertar la parte de programa copiada o cortada. [Procesar > Insertar] Seleccione ahora la opcin Insertar. La parte de programa antes marcada se inserta debajo del cursor de edicin.

Alternativamente, se puede mantener pulsada la tecla CTRL del bloque numrico y pulsar la tecla V del teclado. A continuacin, suelte ambas teclas. 1.3.2.4 Cortar (CTRL-X) Si selecciona en el men la opcin Cortar, la parte de programa marcada se guardar en el portapapeles y se borrar del listado del programa. [Procesar > Cortar] Alternativamente, se puede mantener pulsada la tecla CTRL del bloque numrico y pulsar la tecla X del teclado. A continuacin, suelte ambas teclas.

1.3.2.5

Borrar [Procesar > Borrar] La regin marcada puede ser eliminada del programa. En este caso, no se memoriza ningn dato en el portapapeles. Esta parte eliminada del programa quedar con ello definitivamente borrada. Por este motivo, la ventana de mensajes formula una pregunta de seguridad que debe ser respondida mediante la barra de teclas de funcin programable. Cancelar S No La accin Borrar queda cancelada. La regin marcada se borra definitivamente. La funcin Borrar queda cancelada.

Si se selecciona en el men la opcin Borrar, la parte marcada del programa es borrada del listado sin que se memorice ningn dato en el portapapeles. 1.3.2.6 Buscar Encontrar ms informacin en el Manual de operacin, dentro de la documentacin Programacin por el usuario, captulo [Creacin y modificacin de un programa], apartado [Trabajar con el editor de programa].

14 de 197

ProgExperteBHR5.2 09.03.01 es

Generalidades sobre los programas KRL (continuacin)

1.3.2.7

Reemplazar La funcin Buscar y reemplazar slo existe en el nivel del experto y, en ese nivel, slo est disponible en el editor. Esta aplicacin busca en el programa, dentro de la zona visible (quedan excluidas las lneas de folds o las folds abiertas), una secuencia de caracteres previamente indicada y permite sustituirla por otra secuencia de caracteres definida. Para ello seleccione en el men Procesar la opcin Reemplazar. [Procesar > Reemplazar] Se abrir la siguiente ventana:

Introduzca una secuencia de caracteres en la lnea de bsqueda y luego, con la tecla de flecha, baje hasta la lnea de reemplazo. Introduzca en ella la secuencia de caracteres que debe reemplazar a la secuencia buscada.

ProgExperteBHR5.2 09.03.01 es

15 de 197

Programacin por el experto

Softkey Buscar

Significado Si la secuencia de caracteres aparece varias veces en el documento, pero slo desea reemplazarla una vez en un lugar determinado, pulse varias veces la tecla del softkey Buscar hasta que encuentre el lugar que busca. A continuacin pulse Reemplazar. La secuencia de caracteres buscada quedar reemplazada por la secuencia de caracteres previamente indicada. Si desea que la secuencia de caracteres buscada sea reemplazada en todos los lugares donde aparece o en la regin que previamente marc, despus de introducirla en el formulario de bsqueda/reemplazo (tal como se describe ms arriba) pulse la tecla del softkey Reemplazar todo. Al hacerlo, en la ventana de mensajes aparecer el mensaje Se ha encontrado la regin especificada o marcada. (Este mensaje es una confirmacin de que la bsqueda se efectu en todo el programa o en la regin marcada). Al pulsar la tecla del softkey Cancelar, abandonar el modo de reemplazo y en la ventana de mensajes podr ver la cantidad de reemplazos efectuados desde el momento en que se activ esta funcin.

Reemplazar

Reemplazar todo

Cancelar

16 de 197

ProgExperteBHR5.2 09.03.01 es

Generalidades sobre los programas KRL (continuacin)

1.4

Esconder partes de un programa


Al contrario que en los editores normales, el editor KCP permite visualizar aquellas partes especficas del contenido de un programa que el usuario desea ver. As, por ejemplo, el usuario ve solamente los contenidos esenciales de un programa, mientras que el experto puede ver el programa completo.

1.4.1

FOLD
La superficie de operacin KUKA utiliza una tcnica especial para visualizar con claridad un programa. Las instrucciones marcadas como comentarios KRL permiten suprimir la visualizacin de las partes subsiguientes del programa. De esta manera, el programa queda dividido en apartados adecuados que se denominan FOLDS por tener las caractersticas de una carpeta. Normalmente, las FOLDS se encuentran cerradas, y slo pueden ser abiertas en el nivel del experto. Estos elementos contienen informacin que el usuario no puede ver en la superficie de operacin de KUKA (KUKA--BOF). En el nivel del experto, se puede hacer que un bloque KRL sea invisible para el usuario. Para ello, se deben delimitar las correspondientes declaraciones o instrucciones por medio de las denominaciones ;FOLD y ;ENDFOLD. En un programa, las folds se pueden visualizar u ocultar pulsando la tecla de men Procesar, y luego seleccionando FOLD y el comando deseado.
Procesar FOLD Copiar Insertar Cortar Borrar Buscando... Reemplazar Cerrar FOLD Copiar Insertar Cortar Borrar Buscando... Reemplazar Cancelar programa Resetear programa Modificar FOLD actual abr/cer Abrir todas FOLD Cerrar todas FOLD

Programa en el editor

Procesar

FOLD actual abr/cer Abrir todas FOLD Cerrar todas FOLD

Programa seleccionado

ProgExperteBHR5.2 09.03.01 es

17 de 197

Programacin por el experto

Se puede elegir entre las siguientes opciones: FOLD actual abr/ cer Abrir todas FOLD abre o cierra la FOLD en la lnea en la que se encuentra el cursor de edicin abre todas las FOLD del programa

Cerrar todas FOLD cierra todas las FOLD del programa Si se resetea un programa seleccionado en el cual hay Folds abiertas, stas se cerrarn automticamente. De la secuencia... ;FOLD RESET OUT FOR I=1 TO 16 $OUT[I]=FALSE ENDFOR ;ENDFOLD ....estando las Folds cerradas, en la superficie de operacin solamente se visualizarn las palabras RESET OUT. Con esta instruccin se puede, por ejemplo, hacer invisible para el usuario la seccin de declaraciones e inicializacin. 1.4.1.1 Programa de ejemplo DEF FOLDS() ;FOLD DECLARE ;--------- Seccin de declaracin --------EXT BAS (BAS_COMMAND :IN,REAL :IN ) DECL AXIS HOME INT I ;ENDFOLD ;FOLD INITIAL ;---------- Inicializacin --------INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( ) INTERRUPT ON 3 BAS (#INITMOV,0 ) ;Inicializacin de velocidades, ;aceleraciones, $BASE, $TOOL, etc. FOR I=1 TO 16 $OUT[I]=FALSE ENDFOR HOME={AXIS: A1 0,A2 -90,A3 90,A4 0,A5 30,A6 0} ;ENDFOLD ;------------- Seccin principal-----------PTP HOME ;desplazamiento COI LIN {X 540,Y 630,Z 1500,A 0,B 90,C 0} PTP HOME END

18 de 197

ProgExperteBHR5.2 09.03.01 es

Generalidades sobre los programas KRL (continuacin)

En la superficie de operacin, el programa de este ejemplo tiene el siguiente aspecto:

Seccin principal El mismo programa con folds abiertas:

Seccin de declaraciones

Inicializacin Inicializacin de velocidades;

aceleraciones

Seccin principal Con la FOLD cerrada, slo se puede ver la expresin que aparece despus de la palabra clave FOLD. Por el contrario, con la FOLD abierta se visualizan todas las instrucciones y declaraciones. FOLD es simplemente una instruccin para el editor. El compilador interpreta las instrucciones FOLD gracias a que stas llevan delante el signo de punto y coma como si fuera un comentario normal.

ProgExperteBHR5.2 09.03.01 es

19 de 197

Programacin por el experto

1.5
1.5.1

Modo de ejecucin del programa


Seleccin del modo de ejecucin del programa
El modo de ejecucin del programa especifica si el procesamiento del mismo debe realizarse G sin que el programa se detenga G por pasos de movimiento o G por pasos individuales (lnea). En la siguiente tabla se describen todos los modos de ejecucin de programas.

Modo de ejecucin #GO

Descripcin

Todas las instrucciones se procesan sin interrupcin dentro del programa hasta llegar al final del mismo. #MSTEP Motion Step (paso de movimiento) El programa se ejecuta paso por paso, es decir, con una parada despus de cada paso de movimiento. El programa se ejecuta sin avance. Paso incremental (paso individual) El programa se ejecuta por pasos programados, es decir, con una parada despus de cada instruccin (tambin de las lneas en blanco). El programa se ejecuta sin avance. Program Step (paso de programa) Los subprogramas se ejecutan por completo. El programa se ejecuta sin avance. Continuous Step (paso de movimiento) El programa se ejecuta paso por paso, es decir, con una parada despus de cada paso de movimiento con parada exacta. El programa se ejecuta con avance, es decir, la ejecucin se efecta con posicionamiento aproximado.

#ISTEP

#PSTEP

#CSTEP

Los modos de ejecucin de programas #GO, #MSTEP y #ISTEP pueden seleccionarse en el KCP a travs de una funcin de estado o por medio de la variable $PRO_MODE. En cambio, #PSTEP y #CSTEP pueden ser declarados solamente a travs de la variable $PRO_MODE. [Indicacin > Variable > nicos]

Encontrar informacin ms detallada en el captulo [Variables y declaraciones], apartado [Objetos de datos] bajo (Tipos de enumeracin).

20 de 197

ProgExperteBHR5.2 09.03.01 es

Generalidades sobre los programas KRL (continuacin)

1.5.2

Cambio del modo de ejecucin del programa


Normalmente no es necesario un desplazamiento COI al cambiar el modo de ejecucin del programa. Si el cambio de modo de ejecucin del programa tiene lugar durante un paso de movimiento con avance, se ejecutar, por lo menos, el paso de movimiento actual. En el caso de un paso de movimiento con posicionamiento aproximado, se ejecutan hasta el final el paso de movimiento actual y el siguiente.

Conmutacin ...STEP-GO Al cambiar el modo de ejecucin del programa de #...STEP a #GO, no se selecciona ningn paso y por tanto no se puede realizar ningn desplazamiento COI. Cuando se llega al siguiente paso de movimiento, el sistema pasa al modo #GO. En este caso, no es necesario volver a pulsar la tecla de arranque. El interpretador no se reinicia, ya que primero ha alcanzado el siguiente paso de movimiento. No es necesario borrar la ejecucin principal, ya que en el modo de operacin #...STEP la memoria intermedia slo contiene el paso de movimiento actual.

Conmutacin GO-...STEP Al cambiar el modo de ejecucin del programa de #GO a #...STEP, el robot se desplaza hasta la siguiente parada exacta o hasta que el avance ha sido ejecutado por completo. En el caso de un paso de movimiento con posicionamiento aproximado, se ejecuta, por lo menos, el paso de movimiento siguiente. No se producen desplazamientos hasta otras zonas de aproximacin, ningn punto que quede fuera del punto de destino se podr alcanzar mediante una seleccin de paso. Pulsando la tecla de arranque, se efecta una seleccin de paso en el paso de movimiento que sigue al paso de ejecucin principal. A continuacin, el sistema pasa al modo de ejecucin de programa #...STEP. Si en este momento no es posible seleccionar ningn paso, se visualizar el correspondiente mensaje de estado. En este caso, la ejecucin principal, incluido el posicionamiento aproximado, continuarn hasta que sea posible una seleccin de paso. El interpretador se reinicia cuando finaliza el paso de movimiento. Los pasos de movimiento que fueron planeados en el avance se borran de la memoria intermedia.

1 2 => 3 4 5 6

DEF PTP PTP PTP PTP END

Sub1() 1 P2 2 P3 Ejecucin principal 3 P4 4 P5 5 => 6 7

DEF TEST() PTP HOME PTP P1 SUB1() PTP P6 PTP P7 Avance END

El puntero principal se encuentra en el subprograma SUB1(); el puntero adelantado est en el programa principal, en TEST(). Si en ese momento se cambia el modo de ejecucin del programa a ...STEP, se visualizar un mensaje de estado. Slo despus de que el puntero principal llega al punto P6 del programa principal se efecta una seleccin de paso en el siguiente paso de movimiento. A continuacin, el mensaje de estado se borra y el sistema pasa al modo de ejecucin de programa #...STEP. ProgExperteBHR5.2 09.03.01 es 21 de 197

Programacin por el experto

Caso especial de interrupcin: 1 DEF Interrupt() 2 INT I 3 INTERRUPT DECLARE 5 WHEN $IN[10]==TRUE DO POSITION() 4 PTP HOME 5 PTP P1 => 6 LIN P2 Ejecucin principal 7 INTERRUPT ON 8 LIN P3 9 INTERRUPT OFF 10 PTP P4 11 END 12 13 DEF POSITION() 14 $OUT[12]=TRUE => 15 BRAKE Avance 16 $OUT[52]=FALSE 16 END Al cambiar el modo de ejecucin del programa, el puntero adelantado se encuentra dentro de un subprograma de interrupcin. En este caso, el avance ejecuta el subprograma de interrupcin paso por paso en el modo de ejecucin de programa #...STEP antes de que contine la ejecucin principal. Caso especial de instruccin CIRC: El paso de movimiento CIRC actual finaliza antes pasar al modo de ejecucin de programa #...STEP.

22 de 197

ProgExperteBHR5.2 09.03.01 es

Generalidades sobre los programas KRL (continuacin)

1.6

Tratamiento de errores
Si se produce un error al compilar o al vincular, en la ventana de mensajes aparece un mensaje de error y en el navegador se marca el fichero donde est el error. Un ejemplo sera el fichero ERROR.SRC, que fue creado (con errores):

Una vez cerrado el editor, aparece en la ventana de mensajes una indicacin acerca de la cantidad de errores. Al mismo tiempo, durante este proceso, los ficheros afectados son marcados con una cruz roja. Las teclas de softkey disponibles son las siguientes:
Nuevo Editar ERR Abrir Editar DAT Borrar

La tecla del softkey Abrir carga el fichero en el editor; al pulsar la tecla del softkey Editar DAT se abre con el editor el fichero de extensin Dat. Si desea borrar los ficheros que contienen errores, pulse Borrar. Con la opcin Nuevo podr crear un nuevo fichero.
Editar ERR

Nombre del fichero Descripcin breve Nmero de fallo *1 Nmero de lnea y columna errneas

Lnea errnea del texto fuente Descripcin del fallo Con ello, la barra de teclas de softkey cambia:
Editor Actualiza Cerrar

ProgExperteBHR5.2 09.03.01 es

23 de 197

Programacin por el experto

INDICACIN *1 Los nmeros de lnea indicados corresponden a los nmeros absolutos de lnea en el programa, del mismo modo que se visualizaran en un editor ASCII normal. Para que los nmeros de lnea de la indicacin de fallos concuerden con los nmeros de lnea en el KCP, todas las folds deben estar abiertas y la visualizacin de detalles y la lnea DEF deben estar activas. No obstante, esta forma de visualizacin es algo confusa, ya que ofrece toda la informacin aunque no sea necesaria. Encontrar ms informacin sobre la visualizacin de detalles y la lnea DEF en el apartado [Esconder partes de un programa]. En la indicacin de fallos se puede observar que han aparecido los siguientes fallos: G G G G G 3 lneas en el fichero SRC contienen errores; los nmeros de lnea con errores son 24, 25 y 28; en la lnea 24, los nmeros de error ---2263: 2249: 2309: tipo de variable de bucle diferente a INT expresin diferente a INT se espera el signo ( en la lnea 25 el nmero de error en la lnea 28 el mensaje de error

De los mensajes de error 2263 se puede deducir de inmediato que la variable I no fue declarada como entera. El mensaje de error 2249 tambin es resultado de la ausencia de esa declaracin, ya que en un bucle de conteo el contador siempre debe ser del tipo INT. El mensaje 2309 significa: el compilador interpreta la lnea como una llamada de subprograma en la que sin embargo faltan los parntesis. El significado de los nmeros de error tambin se puede visualizar en lnea mediante la funcin de men Variable > nicos. Para ello, indique en la ventana de estado, en el campo de entrada Nombre el signo & seguido del nmero de error. En este caso, sera por ejemplo &2263 y se pulsara la tecla de entrada. [Indicacin > Variable > nicos] Si ahora carga en el editor el fichero SRC (en este caso, ERROR.SRC), puede efectuar las correcciones correspondientes. Para facilitar esta labor, el cursor se coloca, parpadeando, sobre la primera lnea errnea. Compruebe que est desactivada la visibilidad limitada y que puede verse la lnea DEF. Encontrar informacin ms detallada en el apartado [Esconder partes de un programa]. En el siguiente ejemplo no es necesario abrir las folds. No obstante, si se desea hacerlo, utilice la instruccin de men Procesar > FOLD > Abrir todas FOLD. La lnea INT I que faltaba en el programa creado originalmente debe ser insertada delante de la lnea INI. Esto slo es posible cuando puede verse la lnea DEF ERROR ( ).

24 de 197

ProgExperteBHR5.2 09.03.01 es

Generalidades sobre los programas KRL (continuacin)

As pues, en el ejemplo de la pgina 23, agregue la lnea INT I delante de la lnea INI y tache uno de los signos de igualdad dobles. I = I + 1 Insertar esta lnea aqu

Eliminar un signo de igualdad Despus de haber cerrado el editor y memorizado el fichero corregido, en la lista de fallos (Error de listado) puede pulsar la tecla del softkey Actualiza y la lista de fallos desaparecer cuando se hayan corregido todos los fallos.

ProgExperteBHR5.2 09.03.01 es

25 de 197

Programacin por el experto

1.7

Comentarios
Los comentarios son un componente importante de cualquier programa informtico. Con ellos puede clarificar la estructura de un programa y hacer que otros puedan comprenderla. Los comentarios no influyen en la velocidad de procesamiento del programa. Los comentarios se pueden colocar en cualquier parte de un programa. Siempre comienzan con un punto y coma ;, por ej.: PTP P1 ;Desplazamiento al punto de partida ;--- Reiniciar salidas --FOR I = 1 TO 16 $OUT[I] = FALSE ENDFOR

26 de 197

ProgExperteBHR5.2 09.03.01 es

Variables y declaraciones

2
2.1

Variables y declaraciones
Variables y nombres
Junto al uso de constantes, es decir, la indicacin directa del valor en forma de nmeros, caracteres, etc., en KRL tambin pueden utilizarse dentro del programa variables y otras formas de datos. En la programacin de robots industriales, las variables son necesarias, por ejemplo, para el procesamiento del sensor. Con ellas, el valor ledo por el sensor se puede memorizar y evaluar en diferentes lugares del programa. Adems, se pueden efectuar operaciones aritmticas para calcular, por ejemplo, una nueva posicin. En el programa, una variable se representa por medio de un nombre que se puede elegir libremente dentro de unos determinados lmites.

Nombres en KRL S pueden tener una longitud mxima de 24 caracteres S pueden contener letras (A--Z), cifras (0--9) y los caracteres _ y $ S no deben comenzar con cifras S no deben ser palabras clave
Puesto que todas las variables del sistema (vase el apartado 2.4) comienzan con $, no se debe utilizar este signo como primer carcter en los nombres definidos por el propio usuario. Nombres vlidos en KRL son, por ejemplo: SENSOR_1 BOQUILLA13 P1_HASTA_P12 Una variable se debe considerar como un rea de memoria fija, a cuyo contenido puede accederse a travs del nombre de variable. Por ello, la variable se crea para el tiempo que dura el procesamiento del programa mediante una posicin de memoria (lugar) y un contenido de memoria (valor). Asignacin de valor: Los valores se asignan a las variables mediante el signo de igualdad (=). La instruccin CANTIDAD = 5 significa por tanto que en el rea de memoria se registra, con la direccin CANTIDAD, el valor 5. Al programador no le interesa la apariencia exacta de la direccin, por lo que el compilador la asigna de manera independiente. Lo nico que importa es que en el programa se pueda acceder en todo momento al contenido de memoria por medio de su nombre. Dado que cada objeto de datos (vase el apartado 2.2) necesita su propia cantidad de memoria, el tipo de datos de una variable debe ser acordado (declarado) antes de su uso (vase el apartado 2.2.1).

ProgExperteBHR5.2 09.03.01 es

27 de 197

Programacin por el experto

Duracin: La duracin de una variable es el tiempo durante el cual dicha variable tiene asignada una posicin de memoria. Este tiempo depende de si la variable est declarada en un archivo SRC o en una lista de datos: G Variable declarada en un archivo SRC La duracin se limita al tiempo de funcionamiento del programa. Una vez finalizado el procesamiento, el rea de memoria vuelve a quedar libre. Por lo tanto, el valor de la variable se pierde. G Variable declarada en una lista de datos (vase el captulo Listas de datos) La duracin no depende del tiempo de procesamiento del programa. La variable existe mientras exista la lista de datos. Dichas variables son, por lo tanto, permanentes (hasta la prxima conexin / desconexin).

28 de 197

ProgExperteBHR5.2 09.03.01 es

Variables y declaraciones (continuacin)

2.2

Objetos de datos
Objetos de datos son aquellas unidades de memoria de un determinado tipo de datos que pueden recibir un nombre. Las unidades de memoria pueden constar de muchas clulas de memoria diferentes (bytes, palabras, etc.). Si el programador acuerda un objeto de datos de este tipo con un nombre, se obtiene una variable. A partir de ese momento, la variable ocupa una o varias clulas de memoria en las que el programa puede grabar y leer datos. Gracias a la posibilidad de denominar simblicamente las clulas de memoria con nombres libremente seleccionables, la programacin resulta ms fcil y clara, y el programa se puede leer con mayor facilidad. El siguiente ejemplo sirve para clarificar el trmino tipo de datos: en una clula de memoria con 8 bits se encuentra la combinacin de bits 00110101 Cmo debe interpretarse esta combinacin de bits? Se trata de la representacin binaria del nmero 53 o del carcter ASCII 5 (que se representa con el mismo patrn de bits)? Tipo de datos: Para poder dar una respuesta inequvoca a esta cuestin, falta todava una informacin importante: eltipo de datos de un objeto de datos. En el caso anterior, podra tratarse, por ejemplo, del tipo nmero entero (INTEGER) o carcter (CHARACTER). Adems de por estas razones (de naturaleza computacional), el uso de tipos de datos se justifica por lo cmodo que resulta para el usuario, ya que le permite trabajar exactamente con aquellos tipos que son idneos para su aplicacin en particular.

2.2.1

Declaracin e inicializacin de objetos de datos


DECL: La asignacin de un nombre de variable a un tipo de datos y la reserva de la posicin de memoria se efectan en KRL por medio de la declaracin DECL. Con DECL INT CANTIDAD,NUMERO se declaran, por ejemplo, dos variables CANTIDAD y NUMERO del tipo de datos nmero entero (integer). De este modo, el compilador conoce estas dos variables y el tipo de datos correspondiente, y utilizando las variables puede comprobar si este tipo de datos permite efectuar la operacin deseada. Tal como muestra el ejemplo, la declaracin comienza con la palabra clave DECL, seguida por el tipo de datos y la lista de variables que deben contenerlo. Para declarar variables y campos de un tipo de datos predefinido, se puede omitir la palabra clave DECL. Junto a los tipos de datos simples INT, REAL, CHAR y BOOL (vase el apartado 2.2.2) se encuentran predefinidos, entre otros, los tipos de datos de estructura POS, E6POS, FRAME, AXIS y E6AXIS (vase el apartado 2.2.5). En las variables (no los campos!) con datos del tipo POS, se puede omitir toda la declaracin. El tipo de datos POS se considera el tipo estndar para variables. La palabra clave DECL es imprescindible para poder declarar los tipos de estructura o los de enumeracin libremente definibles (vanse los apartados 2.2.5 y 2.2.6). Inicializacin: Una vez declarada una variable, su valor se define inicialmente como no vlido, ya que de lo contrario este valor dependera de la ocupacin aleatoria de la memoria. Para poder trabajar con la variable, es necesario asignarle previamente un determinado valor. Esta primera asignacin de un valor a una variable se denomina inicializacin. Para crear nuevos archivos con la tecla del softkey Nuevo, en la superficie de operacin KUKA tambin se genera automticamente una secuencia INI. La declaracin de variables siempre debe efectuarse antes de esta secuencia.

ProgExperteBHR5.2 09.03.01 es

29 de 197

Programacin por el experto

La asignacin de un valor a una variable es una instruccin y, por ello, no puede efectuarse en la seccin de declaraciones. No obstante, en la seccin de instrucciones la inicializacin se puede realizar en cualquier momento. Sin embargo, todas las variables declaradas deben ser convenientemente inicializadas en una seccin de inicializacin directamente despus de la seccin de declaracin (vase Fig. 8). Solamente en las listas de datos est permitido inicializar variables directamente en la lnea de declaracin.

DEF NAME() ;---- Seccin de declaraciones--- ;---- Seccin de inicializacin --- ;---- Seccin de instrucciones --- END
Fig. 8 Estructura bsica de un programa del robot Encontrar ms informacin en el captulo [Listas de datos].

2.2.2

Tipos de datos simples


Tipos de datos simples son ciertos tipos de datos bsicos que existen en la mayora de lenguajes de programacin. Al contrario que los tipos de datos estructurados (vase el apartado 2.2.3--2.2.6), los tipos de datos simples contienen un nico valor. Los tipos de datos conocidos en KRL aparecen en una lista junto con su rango de valores correspondiente en Tab. 1. Tipo de datos Palabra clave Significado Rango de valores Entero INT Nmero entero -231231-1 Tab. 1 Real REAL Nmero con coma flotante 1.1E-38 3.4E+38 Booleano BOOL Estado lgico TRUE, FALSE Carcter CHAR 1 carcter Carcter ASCII

Tipo de datos simple

30 de 197

ProgExperteBHR5.2 09.03.01 es

Variables y declaraciones (continuacin)

INT: El tipo de datos Integer (nmero entero) constituye una parte de la cantidad total de nmeros enteros. Solamente es posible manejar una parte porque ningn ordenador puede visualizar todos los nmeros enteros, cuya cantidad es en teora infinita. Los 32 bits previstos para los tipos enteros en el KR C... proporcionan por tanto 231 nmeros enteros ms el signo correspondiente. El nmero 0 es considerado parte de los nmeros positivos. Con NMERO = -23456 se asigna a la variable NMERO el valor -23456. Si a una variable INTEGER se le asigna un valor REAL, el valor se redondea segn las normas generales (x.0 hasta x.49 redondeado hacia abajo, x.5 hasta x.99 redondeado hacia arriba). A travs de la instruccin NMERO = 45,78 la variable INTEGER NMERO recibe el valor 46. Excepcin: en la divisin de enteros, se corta la posicin decimal, por ejemplo: 7/4 = 1 Sistema binario/hexadecimal: Mientras que el ser humano calcula y piensa en el sistema decimal, un ordenador solamente reconoce unos y ceros que representan los estados activo e inactivo. Un estado (activo o inactivo) se representa por tanto mediante un bit. Por motivos de velocidad, en general el ordenador accede a un paquete completo de estos ceros y unos. El tamao tpico de un paquete son 8 bits (=1 byte), 16 bits o 32 bits. Por ello, en las operaciones propias de la mquina, a menudo resulta til el uso del sistema binario (sistema de 2 dgitos: cifras 0 y 1) o del sistema hexadecimal (sistema de 16 dgitos: cifras 0--9 y A--F). Los valores enteros binarios o hexadecimales pueden indicarse en KRL mediante las comillas simples () y una B, para la representacin binaria, o una H, para la hexadecimal. D H 0 0 1 1 Tab. 2 NUMENT = 90 NUMENT = B1011010 NUMENT = H5A Bin Dec: La conversin de los nmeros binarios al sistema decimal se realiza del modo siguiente: 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 11 12 13 14 15 16 A B C D E F 10

Los primeros 17 nmeros de los sistemas decimal y hexadecimal ;Sistema decimal ;Sistema binario ;Sistema hexadecimal

El nmero 90 se puede por tanto asignar en KRL a tres diferentes tipos de variable entera:

1 0 1 1 0 1 0 = 1S26+0S25+1S24+1S23+0S22+1S21+0S20= 90 26 25 24 23 22 21 20
Hex Dec: Para transferir los nmeros desde el sistema hexadecimal al sistema decimal, proceda del modo siguiente:

161 160

=5S161+10S160=90

ProgExperteBHR5.2 09.03.01 es

31 de 197

Programacin por el experto

REAL: La coma flotante significa la divisin de un nmero en mantisa y exponente, y su representacin de forma normalizada. As se representa, por ejemplo: 5.3 como 0.53000000 E+01 -100 como -0.10000000 E+03 0.0513 como 0.51300000 E-01 Al calcular con valores reales, debido a la cantidad limitada de posiciones de coma flotante y a la inexactitud que eso conlleva, es preciso recordar que las leyes algebraicas habituales dejan de ser vlidas para todos los casos. As, por ejemplo, en el lgebra vale: 13 = 1 3 Si se deja realizar este clculo a un ordenador, puede obtenerse un resultado de slo 0.99999999 E+00. Una comparacin lgica de este nmero con el nmero 1 dara como resultado el valor FALSE. Sin embargo, para las aplicaciones prcticas en el campo de los robots, suele ser suficiente esta exactitud si se tiene en cuenta que la prueba lgica de igualdad para magnitudes reales slo se puede realizar adecuadamente dentro de un pequeo rango de tolerancia. Algunas asignaciones admisibles en variables reales son, por ejemplo: NUMREAL1 = -13.653 NUMREAL2 = 10 NUMREAL3 = 34.56 E-12 Si a una variable REAL se le asigna un valor ENTERO (INTEGER), se efecta una conversin automtica de tipo segn REAL. La variable NUMREAL2 tiene por tanto, segn esta asignacin, el valor 10.0. BOOL: Las variables booleanas sirven para describir estados lgicos (por ejemplo, entradas/salidas). Solamente pueden asumir los valores TRUE (verdadero) y FALSE (falso): ESTADO1 = TRUE ESTADO2 = FALSE CHAR: Las variables de carcter pueden representar exactamente 1 carcter del juego de caracteres ASCII. Para poder asignar un carcter ASCII a una variable CHAR, el carcter asignado debe estar entre comillas (): CARACTER1 = G CARACTER2 = ? Respecto a la memorizacin de todas las series de caracteres, consulte el apartado 2.2.4.

32 de 197

ProgExperteBHR5.2 09.03.01 es

Variables y declaraciones (continuacin)

2.2.3

Campos
Se conocen como campos aquellos agrupamientos de objetos de un mismo tipo de datos que forman un objeto de datos. A los componentes individuales de un campo se puede acceder a travs de ndices. Mediante la declaracin DECL INT OTTO[7] ndice de campo: puede poner, por ejemplo, 7 nmeros enteros diferentes en el campo OTTO[]. A cada componente individual del campo se puede acceder indicando el correspondiente ndice (el primer ndice es siempre el 1): OTTO[1] OTTO[2] OTTO[3] OTTO[4] OTTO[5] OTTO[6] OTTO[7] = = = = = = = 5 10 15 20 25 30 35 ; al 1 elemento se le asigna el nmero 5 ; al 2 elemento se le asigna el nmero 10 ; al 3 elemento se le asigna el nmero 15 ; al 4 elemento se le asigna el nmero 20 ; al 5 elemento se le asigna el nmero 25 ; al 6 elemento se le asigna el nmero 30 ; al 7 elemento se le asigna el nmero 35

De manera grfica, cabe imaginarse el campo con el nombre OTTO[] como una estantera con 7 compartimentos. De acuerdo con las asignaciones anteriores, la ocupacin de los compartimentos ofrecera el siguiente aspecto: 5 OTTO [1] 10 [2] 15 [3] 20 [4] 25 [5] 30 [6] 35 [7]

Fig. 9 Representacin de un campo unidimensional Si es preciso inicializar todos los elementos de un campo con el mismo nmero, por ejemplo el 0, no es necesario programar explcitamente cada asignacin, sino que se puede automatizar la preasignacin por medio de un bucle y de una variable de conteo: FOR I = 1 TO 7 OTTO[I] = 0 ENDFOR Encontrar ms informacin en el captulo [Control de ejecucin del programa], apartado [Bucles]. La variable de conteo es en este caso la variable entera I. sta debe haber sido declarada antes de ser utilizada como nmero entero. S El tipo de datos de un campo es opcional. De este modo, cada uno de los elementos puede constar a su vez de una composicin de tipos de datos (por ejemplo: un campo compuesto de campos) S Para el ndice slo se permite utilizar tipos de datos enteros S Adems de las constantes y variables, para el ndice tambin se permite utilizar expresiones aritmticas (vase el apartado 2.3.1) S El ndice siempre empieza a contar a partir de 1

ProgExperteBHR5.2 09.03.01 es

33 de 197

Programacin por el experto

Bidimensional: Adems de los campos unidimensionales tratados hasta ahora (es decir, los campos con un solo ndice), en KRL pueden utilizarse tambin campos bidimensionales o tridimensionales. Con DECL REAL MATRIX[5,4] se declara un campo bidimensional 54 con 54=20 elementos del tipo REAL. Grficamente, este campo puede representarse como una matriz con 5 columnas y 4 filas. Con la secuencia de programa I[3] = 0 FOR COLUMNA = 1 TO 5 FOR FILA = 1 TO 4 I[3] = I[3] + 1 MATRIX[COLUMNA,FILA] = I[3] ENDFOR ENDFOR los elementos de la matriz reciben un valor que corresponde con el orden de su asignacin. As pues, la ocupacin de matriz obtenida es la siguiente:
Plano 1 Fila 1 Fila 2 Fila 3 Fila 4 1 2 3 4 Columna 1

5 6 7 8 Columna 2

9 10 11 12 Columna 3

13 14 15 16 Columna 4

17 18 19 20 Columna 5

Fig. 10 Representacin de un campo bidimensional Tridimensional: Al fin y al cabo, cabe imaginarse los campos tridimensionales como varias matrices bidimensionales dispuestas una tras otra. La tercera dimensin indica, por as decirlo, el plano en el que se encuentra la matriz (vase Fig. 11). Un campo tridimensional se declara de forma anloga a los campos unidimensionales o bidimensionales, por ejemplo: DECL BOOL FELD_3D[3,5,4] La secuencia de inicializacin podra tener el siguiente aspecto: FOR PLANO = 1 TO 3 FOR COLUMNA = 1 TO 5 FOR FILA = 1 TO 4 CAMPO_3D[PLANO,COLUMNA,FILA] = FALSE ENDFOR ENDFOR ENDFOR 34 de 197 ProgExperteBHR5.2 09.03.01 es

Variables y declaraciones (continuacin)

Plano 3 Plano 2 Plano 1 Fila 1 Fila 2 Fila 3 Fila 4 1 2 3 4 Columna 1 21 22 5 6 7 8 Columna 2 9 10 11 12 Columna 3 25 26 41 42 29 30 45 46

49 50

53 54 55 56

57 58 59 60

33 34 35 36

37 38 39 40

13 14 15 16 Columna 4

17 18 19 20 Columna 5

Fig. 11 Representacin de un campo tridimensional

ProgExperteBHR5.2 09.03.01 es

35 de 197

Programacin por el experto

2.2.4

Cadenas de caracteres
Tal como se describe anteriormente, el tipo de datos CHAR slo permite guardar caracteres individuales. Para utilizar cadenas de caracteres completas, por ejemplo palabras, basta con definir un campo unidimensional del tipo CHAR: DECL CHAR NAME[8] Como viene siendo habitual, se puede acceder a cada uno de los elementos del campo NAME[], por ejemplo: NAME[3] = G

G
Tambin se pueden introducir cadenas de caracteres completas: NAME[] = ABCDEFG ocupa los siete primeros elementos del campo NAME[] con las letras A, B, C, D, E, F y G:

2.2.5

Estructuras
STRUC: Si es necesario agrupar diferentes tipos de datos, el campo no es apropiado, por lo que debe recurrirse a la forma general de composicin. Con la instruccin de declaracin STRUC pueden agruparse diferentes tipos de datos definidos previamente (o tipos de datos predefinidos) en un nuevo tipo de datos compuesto. En especial, las composiciones y los campos pueden ser parte de otras composiciones. Un ejemplo tpico del uso de composiciones es el tipo de datos estndar POS. Este tipo consta de 6 valores REAL y 2 valores INT, y fue definido en el archivo $OPERATE.SRC de la siguiente manera:

STRUC POS REAL X, Y, Z, A, B, C, INT S, T


Punto separador: Si ahora se utiliza por ejemplo una variable POSICIN del tipo de datos de estructura POS, se pueden ocupar los elementos individualmente mediante el punto separador, por ejemplo:

POSICION.X POSICION.Y POSICION.Z POSICION.A POSICION.B POSICION.C POSICION.S POSICION.T

= = = = = = = =

34.4 -23.2 100.0 90 29.5 3.5 2 6

o conjuntamente por medio de lo que se conoce como agregado

POSICION={X 34.4,Y -23.2,Z 100.0,A 90,B 29.5,C 3.5,S 2,T 6}

Encontrar ms informacin en el captulo [Variables y declaraciones], apartado [Declaracin e inicializacin de objetos de datos].

36 de 197

ProgExperteBHR5.2 09.03.01 es

Variables y declaraciones (continuacin)

Los agregados se rigen por las siguientes normas: Los valores de un agregado pueden ser constantes simples o incluso agregados. En un agregado no es necesario indicar todos los componentes de la estructura. Los componentes no necesitan indicarse en el orden en que fueron definidos. Cada componente debe estar incluido en un agregado una sola vez. En los campos de estructuras, un agregado describe el valor de un elemento de campo individual. S Al comienzo de un agregado puede estar indicado el nombre del tipo de estructura (separado por un signo de dos puntos). S S S S S As pues, las variables POS tambin admiten, por ejemplo, las siguientes asignaciones:

POSICION={B 100.0,X 29.5,T 6} POSICION={A 54.6,B -125.64,C 245.6} POSICION={POS: X 230,Y 0.0,Z 342.5}
En las estructuras POS, E6POS, AXIS, E6AXIS y FRAME los componentes que faltan no sufren ningn cambio. En todos los dems agregados, los componentes inexistentes se definen como no vlidos. El siguiente ejemplo explica el procedimiento de creacin de algunas variables de estructura: En un subprograma de soldadura al arco, es necesario transferir a una variable S_PARA la siguiente informacin: REAL INT BOOL V_HILO CARACT ARCO Velocidad del hilo Lnea caracterstica 0100% con/sin arco (para simulacin)

La variable S_PARA debe constar de 3 elementos correspondientes a diferentes tipos de datos. En primer lugar, se debe definir un nuevo tipo de datos que cumpla estos requisitos:

STRUC TIPOSOLD REAL V_HILO, INT CARACT, BOOL ARCO


De este modo, se ha creado un nuevo tipo de datos con la denominacin TIPOSOLD (TIPOSOLD no es ninguna variable). TIPOSOLD consta de 3 componentes: V_HILO, CARACT y ARCO. A continuacin, puede declararse una variable opcional del nuevo tipo de datos, por ejemplo: DECL TIPOSOLD S_PARA De este modo, se ha creado una variable S_PARA del tipo de datos TIPOSOLD. Tal como se ha descrito, a los elementos individuales se puede acceder por medio del punto separador o del agregado: S_PARA.V_HILO = 10.2 S_PARA.CARACT = 66 S_PARA.ARCO = TRUE o S_PARA = {V_HILO 10.2,CARACT 50, ARCO TRUE} Para poder diferenciar mejor los tipos de datos autodefinidos de las variables, los nombres de los nuevos tipos de datos deben terminar con TIPO. En el archivo $OPERATE.SRC se encuentran predefinidas las estructuras siguientes: STRUC AXIS REAL A1,A2,A3,A4,A5,A6 STRUC E6AXIS STRUC FRAME STRUC POS STRUC E6POS ProgExperteBHR5.2 09.03.01 es REAL REAL REAL REAL A1,A2,A3,A4,A5,A6,E1,E2,E3,E4,E5,E6 X,Y,Z,A,B,C X,Y,Z,A,B,C, INT S,T X,Y,Z,A,B,C,E1,E2,E3,E4,E5,E6, INT S,T 37 de 197

Programacin por el experto

Los componentes A1A6 de la estructura AXIS son valores angulares (ejes rotatorios) o valores de translacin (ejes translatorios) para el desplazamiento especfico de los ejes del robot 16. Con los componentes adicionales E1E6 en la estructura E6AXIS se puede acceder a los ejes adicionales. En la estructura FRAME se pueden especificar 3 valores de posicin en el espacio (X,Y y Z) as como 3 orientaciones en el espacio (A, B y C). De este modo, un punto en el espacio queda definido unvocamente por su posicin y por su orientacin. Dado que existen robots que pueden desplazarse hasta un mismo punto en el espacio con varias posiciones de eje, las variables enteras S y T de la estructura POS sirven para determinar una posicin unvoca del eje. Encontrar ms informacin en el captulo [Programacin de movimiento], apartado [Instrucciones de movimiento] Status (S) y Turn (T). Con los componentes E1E6 de la estructura E6POS, se puede acceder de nuevo a los ejes adicionales. Tipos de datos geomtricos: Los tipos AXIS, E6AXIS, POS, E6POS y FRAME tambin se conocen como tipos de datos geomtricos, ya que con ellos el programador puede describir con facilidad relaciones geomtricas. Encontrar ms informacin en el captulo [Programacin de movimiento], apartado [Utilizacin de diferentes sistemas de coordenadas].

38 de 197

ProgExperteBHR5.2 09.03.01 es

Variables y declaraciones (continuacin)

2.2.6

Tipos de enumeracin
Un tipo de datos de enumeracin es un tipo de datos que se compone de una cantidad limitada de constantes. Las constantes son nombres libremente definibles y pueden ser especificadas por el usuario. Una variable de este tipo (variable de enumeracin) solamente puede aceptar el valor de una de estas constantes. Para explicar este concepto, se puede tomar la variable de sistema $MODE_OP. En ella se memoriza qu tipo de modo de servicio acaba de ser seleccionado. Se puede elegir entre los modos de servicio T1, T2, AUT y EX. Se podra declarar $MODE_OP como variable entera, asignar un nmero a cada modo de servicio y memorizarlo en $MODE_OP. Este procedimiento resultara, sin embargo, muy complicado. Una solucin mucho ms conveniente es la que ofrece el tipo de enumeracin. En el archivo $OPERATE.SRC se ha generado para ello un tipo de datos de enumeracin con el nombre MODE_OP: ENUM MODE_OP T1, T2, AUT, EX, INVALID La instruccin para declarar los tipos de enumeracin se denomina por tanto ENUM. Las variables del tipo de enumeracin MODE_OP solamente pueden aceptar los valores T1, T2, AUT, EX o INVALID. La declaracin de las variables se efecta una vez ms con la palabra clave DECL: DECL MODE_OP $MODE_OP La variable de enumeracin $MODE_OP puede ser ocupada mediante asignacin normal con uno de los cuatro valores del tipo de datos MODE_OP. Para diferenciarlas de las constantes simples, a las constantes de enumeracin autodefinidas se les antepone, en las inicializaciones o en las consultas, el carcter #, por ejemplo: $MODE_OP = #T1 Ahora con ENUM se pueden crear tantos tipos de datos de enumeracin autodefinidos como se que quiera.

ProgExperteBHR5.2 09.03.01 es

39 de 197

Programacin por el experto

2.3

Manipulacin de datos
Para la manipulacin de diferentes objetos de datos, existe una gran cantidad de operadores y funciones que permiten crear frmulas. El poder de un lenguaje de programacin de robots depende tanto de los objetos de datos admitidos como de las posibilidades de manipularlos.

2.3.1

Operadores
Operadores son los operadores matemticos habituales, en contraposicin a funciones tales como SIN(30), que proporciona el seno del ngulo de 30_. As pues, en la operacin 5+7, el 5 y el 7 son los operandos y el signo + es el operador. En cada operacin, el compilador comprueba la admisibilidad de los operandos. As, por ejemplo, 7 -- 3 es, como resta de dos nmeros enteros, una operacin admisible. Por el contrario, 5 + A es, como adicin de un valor entero a un carcter, una operacin no permitida. En algunas operaciones como 5 + 7.1 (es decir, la suma de nmeros enteros y valores reales) se efecta una adaptacin del tipo y el valor entero 5 es convertido en el valor real 5.0. Esta problemtica se tratar ms a fondo al hablar de los diferentes operadores.

2.3.1.1

Operadores aritmticos Los operadores aritmticos corresponden a los tipos de datos INTEGER (ENTERO) y REAL. En KRL se admiten los 4 tipos de clculo bsico (vase Tab. 3).

Operador Descripcin + * / Suma o signo positivo Resta o signo negativo Multiplicacin Divisin
Tab. 3 Operadores aritmticos

El resultado de una operacin aritmtica solamente es INT cuando los dos operandos son del tipo INTEGER (entero). Si el resultado de una divisin de enteros no es un nmero entero, se desecha la parte decimal. Cuando, como mnimo, uno de los dos operandos es REAL, entonces tambin el resultado es de tipo REAL (vase Tab. 4).

Operandos INT REAL

INT INT REAL


Tab. 4

REAL REAL REAL

Resultado de una operacin aritmtica

40 de 197

ProgExperteBHR5.2 09.03.01 es

Variables y declaraciones (continuacin)

A modo de explicacin, puede utilizarse el siguiente ejemplo de programa: DEF ARITH() ;--------- Seccin de declaracin --------INT A,B,C REAL K,L,M ;---------- Inicializacin --------;antes de la inicializacin, todas las variables son no-vlidas. A = 2 ;A=2 B = 9.8 ;B=10 C = 7/4 ;C=1 K = 3.5 ;K=3.5 L = 0.1 E01 ;L=1.0 M = 3 ;M=3.0 ;------------- Seccin principal-----------A = A * C ;A=2 B = B - HB ;B=-1 C = C + K ;C=5 K = K * 10 ;K=35.0 L = 10 / 4 ;L=2 L = 10 / 4.0 ;L=2.5 L = 10 / 4. ;L=2.5 L = 10./ 4 ;L=2.5 C = 10./ 4. ;C=3 M = (10/3) * M ;M=9.0 END

ProgExperteBHR5.2 09.03.01 es

41 de 197

Programacin por el experto

2.3.1.2

Operador geomtrico El operador geomtrico se simboliza en KRL con el smbolo de dos puntos :. Este operador ejecuta, entre los tipos de datos FRAME y POS un combinacin lgica de frames. La combinacin lgica de dos frames es el procedimiento normal para transformar sistemas de coordenadas. Por ello, la combinacin lgica de una estructura FRAME con una estructura POS solamente acta sobre el frame que est dentro de la estructura POS. Los componentes S y T no resultan afectados por la transformacin y por ello tampoco necesitan estar ocupados con un valor. Sin embargo, los valores X, Y, Z, A, B y C deben estar ocupados siempre con un valor, tanto en los operandos POS como en los operandos FRAME. Combinacin lgica de frames: Una combinacin lgica de frames se evala de izquierda a derecha. El resultado siempre tiene el mismo tipo de datos que el operando que, en el lado derecho, ms alejado se encuentre (vase Tab. 5).

Operando Operador izquierdo (SC referencia) POS POS FRAME FRAME


Tab. 5

Operando derecho (SC destino) POS FRAME POS FRAME

Resultado

: : : :

POS FRAME POS FRAME

Combinaciones de tipos de datos en el operador geomtrico

Cuando el operando izquierdo tiene el tipo de datos POS, se efecta una adaptacin de tipo. La posicin indicada por la estructura POS es convertida en un frame. Esto significa que el sistema averigua el frame de la herramienta correspondiente a esta posicin. La forma en que acta el operador geomtrico se puede explicar por medio de un sencillo ejemplo (vase Fig. 12): En una habitacin hay una mesa. El sistema de coordenadas del ESPACIO est definido como sistema de coordenadas fijo en el rincn delantero izquierdo de la habitacin. La mesa se encuentra paralela a las paredes de la habitacin. La esquina delantera izquierda de la mesa se encuentra exactamente a 600 mm de la pared delantera y a 450 mm de la pared izquierda de la habitacin. La mesa tiene 800 mm de altura. Sobre la mesa hay una pieza de forma cuadrangular. El sistema de coordenadas PIEZA se debe colocar en una esquina de la pieza, tal como se muestra en Fig. 12. Para luego poder manipular convenientemente la pieza, el eje Z del sistema de coordenadas PIEZA mira hacia abajo. Con respecto al eje Z del sistema de coordenadas MESA, la pieza est girada 40_. La posicin del sistema de coordenadas PIEZA respecto al sistema de coordenadas MESA es X=80 mm, Y = 110 mm y Z = 55 mm.

42 de 197

ProgExperteBHR5.2 09.03.01 es

Variables y declaraciones (continuacin)

Base=Mesa:Pieza
ZR XB YR ZB YB

Base

ZT

YT
XT

Pieza

Mesa XR Fig. 12 Modo de actuacin del operador geomtrico Ahora, la tarea es describir el sistema de coordenadas PIEZA con respecto al sistema de coordenadas HABITACIN. Para ello, se deben declarar en primer lugar las siguientes variables de frame: FRAME MESA, PIEZA, BASE El sistema de coordenadas HABITACIN ya est establecido por el sistema. Los sistemas de coordenadas MESA y PIEZA se inicializan ahora de acuerdo con las condiciones lmite: MESA = {X 450,Y 600,Z 800,A 0,B 0,C 0} PIEZA = {X 80,Y 110,Z 55,A -40,B 180,C 0} Ahora, el sistema de coordenadas PIEZA con respecto al sistema de coordenadas ESPACIO se obtiene mediante el operador geomtrico, para BASE = MESA:PIEZA En nuestro caso, BASE est ocupado del modo siguiente: BASE = {X 530,Y 710,Z 855,A 140,B 0,C -180} Otra posibilidad sera: BASE = {X 530,Y 710,Z 855,A -40,B 180,C 0}

ProgExperteBHR5.2 09.03.01 es

43 de 197

Programacin por el experto

Solamente en este caso especial los componentes de BASE son resultado de la suma de los componentes de MESA y PIEZA. Esto se debe a que el sistema de coordenadas MESA no est girado con respecto al sistema de coordenadas HABITACIN. Sin embargo, lo normal es que no se pueda realizar una suma simple de los componentes. Una combinacin lgica de frames tampoco es conmutativa. Esto significa que si se intercambian el frame de referencia y del frame de destino, lo normal es que cambie tambin el resultado.
Encontrar ms informacin en el captulo [Programacin de movimiento], apartado [Utilizacin de diferentes sistemas de coordenadas]. He aqu otro ejemplo de aplicacin del operador geomtrico: en l se desplazan diferentes sistemas de coordenadas y combinaciones lgicas de sistemas de coordenadas. Para aclarar las modificaciones de orientacin, en cada sistema de coordenadas la punta de la herramienta desplaza primero una pieza en direccin X, luego una pieza en direccin Y y por ltimo una pieza en direccin Z.

44 de 197

ProgExperteBHR5.2 09.03.01 es

Variables y declaraciones (continuacin)

DEF

GEOM_OP ( );

--------- Seccin de declaraciones --------EXT BAS (BAS_COMMAND :IN,REAL :IN ) DECL AXIS HOME ;Variable HOME del tipo AXIS DECL FRAME MYBASE[2] ;Campo del tipo FRAME; ---------- Inicializacin --------BAS (#INITMOV,0 ) ;Inicializacin de velocidades, ;aceleraciones, $BASE, $TOOL, etc. HOME={AXIS: A1 0,A2 -90,A3 90,A4 0,A5 30,A6 0}; Activar Sistema de coordenadas base BASE = {X 1000,Y 1000,Z 0,A 0,B 0,C 0} REF_POS_X={X 100,Y 0,Z 0,A 0,B 0,C 0} ;Pos. referencia REF_POS_Y={X 100,Y 100,Z 0,A 0,B 0,C 0} REF_POS_Z={X 100,Y 100,Z 100,A 0,B 0,C 0}; definir sistemas de coordenadas propios MYBASE[1]={X 200,Y 100,Z 0,A 0,B 0,C 180} MYBASE[2]={X 0,Y 200,Z 250,A 0,B 90,C 0} ------------- Seccin principal -----------PTP HOME ; desplazamiento COI; Movimiento con respecto al sistema de coordenadas $BASE PTP $Base ;desplazarse directamente hasta el origen de $BASE-SC WAIT SEC 2 ;esperar 2 segundos PTP REF_POS_X ;recorrer 100 mm en la direccin x PTP REF_POS_Y ;recorrer 100 mm en la direccin y PTP REF_POS_Z; recorrer 100 mm en la direccin z; movimiento con respecto al $BASE-SC desplazado sobre MYBASE[1] PTP MYBASE[1] WAIT SEC 2 PTP MYBASE[1]:REF_POS_X PTP MYBASE[1]:REF_POS_Y PTP MYBASE[1]:REF_POS_Z; Movimiento con respecto al $BASE-SC desplazado sobre MYBASE[2] PTP MYBASE[2] WAIT SEC 2 PTP MYBASE[2]:REF_POS_X PTP MYBASE[2]:REF_POS_Y PTP MYBASE[2]:REF_POS_Z; Movimiento con respecto al $BASE-SC desplazado sobre MYBASE[1]:MYBASE[2] $BASE-SC PTP MYBASE[1]:MYBASE[2] WAIT SEC 2 PTP MYBASE[1]:MYBASE[2]:REF_POS_X PTP MYBASE[1]:MYBASE[2]:REF_POS_Y PTP MYBASE[1]:MYBASE[2]:REF_POS_Z; Movimiento con respecto al $BASE-SC desplazado sobre MYBASE[2]:MYBASE[1] $BASE-SC PTP MYBASE[2]:MYBASE[1] WAIT SEC 2 PTP MYBASE[2]:MYBASE[1]:REF_POS_X PTP MYBASE[2]:MYBASE[1]:REF_POS_Y PTP MYBASE[2]:MYBASE[1]:REF_POS_Z PTP HOME END

ProgExperteBHR5.2 09.03.01 es

45 de 197

Programacin por el experto

2.3.1.3

Operadores de comparacin Con los operadores de comparacin que figuran en Tab. 6 se pueden formar expresiones lgicas. Por tanto, el resultado de una comparacin es siempre del tipo de datos BOOL, ya que una comparacin slo puede ser verdadera (TRUE) o falsa (FALSE).

Operador == <> > < >= <=

Descripcin igual desigual mayor que menor que mayor o igual que menor o igual que
Tab. 6

Tipos de datos admisibles INT, REAL, CHAR, ENUM, BOOL INT, REAL, CHAR, ENUM, BOOL INT, REAL, CHAR, ENUM INT, REAL, CHAR, ENUM INT, REAL, CHAR, ENUM INT, REAL, CHAR, ENUM
Operadores de comparacin

Las comparaciones pueden utilizarse en instrucciones de ejecucin de programa y el resultado de una comparacin puede ser asignado a una variable booleana. Cuando se trata de valores reales, la prueba de la igualdad o desigualdad slo tiene sentido en ciertas circunstancias, ya que debido a errores de redondeo durante el clculo de los valores a comparar, puede suceder que frmulas algebraicamente idnticas proporcionen valores desiguales (vase 2.2.2). S Se pueden combinar operandos de INT, REAL, y CHAR. S Un tipo ENUM slo se debe comparar con el mismo tipo ENUM. S Un tipo BOOL slo se debe comparar con el mismo tipo BOOL. Por tanto, la comparacin de valores numricos (INT, REAL) con caracteres (CHAR) es posible gracias a que cada carcter ASCII tiene asignado un cdigo ASCII. Este cdigo es un nmero que determina la secuencia de los caracteres en el juego de caracteres. Las diferentes constantes de un tipo de enumeracin son numeradas, durante su declaracin, en el orden en que aparecen. Los operadores de comparacin hacen referencia a estos nmeros. Adems de las comparaciones simples, tambin estn permitidas las comparaciones mltiples. He aqu algunos ejemplos: BOOL A,B B = 10 < 3 A = 10/3 == 3 B = ((B == A) <> (10.00001 >= 10)) == TRUE A = F < Z

;B=FALSE ;A=TRUE ;B=TRUE ;A=TRUE

46 de 197

ProgExperteBHR5.2 09.03.01 es

Variables y declaraciones (continuacin)

2.3.1.4

Operadores lgicos Permiten la combinacin lgica de variables booleanas, constantes y expresiones lgicas simples formadas mediante los operadores de comparacin. As, por ejemplo, la expresin (A > 5) AND (A < 12) solamente tiene el valor TRUE si A est dentro de un rango de 5 a 12. Estas expresiones se utilizan con frecuencia en instrucciones para el control de ejecucin (vase el apartado LEERER MERKER). En Tab. 7 aparece una lista de los operadores lgicos.

Operador NOT AND OR EXOR

N de operandos 1 2 2 2
Tab. 7

Descripcin Inversin Y lgico O lgico O exclusivo

Operadores lgicos

Los operandos de una combinacin lgica deben ser del tipo BOOL; del mismo modo, el resultado es siempre del tipo BOOL. En Tab. 8 aparecen los resultados posibles de las respectivas combinaciones lgicas en funcin del valor de los operandos.

Operacin A = TRUE A = TRUE A = FALSE A = FALSE B = TRUE B = FALSE B = TRUE B = FALSE


Tab. 8

NOT A FALSE FALSE TRUE TRUE

A AND B TRUE FALSE FALSE FALSE

A OR B TRUE TRUE TRUE FALSE

A EXOR B FALSE TRUE TRUE FALSE

Tabla de veracidad para combinaciones lgicas

He aqu algunos ejemplos de combinaciones lgicas: BOOL A,B,C A = TRUE B = NOT A C = (A AND B) OR NOT (B EXOR NOT A) A = NOT NOT C

;A=TRUE ;B=FALSE ;C=TRUE ;A=TRUE

ProgExperteBHR5.2 09.03.01 es

47 de 197

Programacin por el experto

2.3.1.5

Operadores de bits Con los operadores de bits (vase Tab. 9) se pueden combinar lgicamente nmeros enteros, combinando lgicamente entre s los bits individuales cada nmero. Los operadores de bits combinan bits individuales del mismo modo que los operadores lgicos combinan dos valores booleanos, si se considera el valor de bit 1 como TRUE y el valor 0 como FALSE. As, una combinacin lgica Y por bits de los nmeros 5 y 12, proporciona por ejemplo el nmero 4, una combinacin lgica O por bits proporciona el nmero 13 y una combinacin O exclusivo por bits, el nmero 9:

0 1 AND OR EXOR 0 1 1

1 1 1 1 0

0 0 0 0 0

1 0 0 1 1

= 5 = 12 = 4 = 13 = 9

La inversin por bits no significa simplemente invertir todos los bits. En lugar de ello, cuando se utiliza B_NOT al operando se le suma 1 y el signo se invierte por ejemplo: B_NOT B_NOT 10 = -11 -10 = 9

Los operadores de bits se utilizan, por ejemplo, para combinar entre s seales de entrada/ salida digitales (vase 5.3).

Operador B_NOT B_AND B_OR B_EXOR

N de operandos 1 2 2 2
Tab. 9

Descripcin Inversin por bits Combinacin lgica Y por bits Combinacin lgica O por bits Combinacin lgica O exclusivo por bits

Operadores de bits lgicos

Dado que a los caracteres ASCII tambin se puede acceder a travs de los CDIGOS ASCII de nmeros enteros, el tipo de datos de los operandos puede ser, adems de INT, tambin CHAR. El resultado es siempre del tipo INT. Ejemplos de uso de operadores de bits: INT A = A = A = A = A = A = A = A 10 B_AND 9 10 B_OR 9 10 B_EXOR 9 B_NOT 197 B_NOT HC5 B_NOT B11000101 B_NOT E ;A=8 ;A=11 ;A=3 ;A=-198 ;A=-198 ;A=-198 ;A=-70

Supongamos que usted ha definido una salida digital con una anchura de 8 bits. En ese caso, puede acceder a esa salida por medio de la variable INTEGER DIG. Para activar los bits 0, 2, 3 y 7 se puede simplemente programar 48 de 197 ProgExperteBHR5.2 09.03.01 es

Variables y declaraciones (continuacin)

Activar bits: DIG = B10001101 B_OR DIG Los dems bits permanecen igual, independientemente del valor que tengan. Si, por ejemplo, se desea desactivar los bits 1, 2 y 6, es necesario programar Desactivacin de bits: DIG = B10111001 B_AND DIG Todos los dems bits permanecen igual. Con la misma facilidad se puede comprobar, con los operadores de bits, si determinados bits de la salida se encuentran activados. La expresin Filtrado de bits: (B10000001 B_AND DIG) == B10000001 es TRUE cuando los bits 0 y 7 estn activados; de lo contrario es FALSE. Para comprobar nicamente si, como mnimo, est activado el bit 0 o el bit 7, tan slo es necesario que la combinacin lgica Y por bits sea mayor que cero: (B10000001 B_AND DIG) > 0

ProgExperteBHR5.2 09.03.01 es

49 de 197

Programacin por el experto

2.3.1.6

Prioridades de los operadores Si se utilizan expresiones ms complejas con varios operadores, deben tenerse en cuenta las diferentes prioridades de cada uno de ellos (vase Tab. 10), ya que las expresiones individuales se ejecutan siguiendo el orden de sus prioridades.

Prioridad Operador 1 2 3 4 5 6 7 NOT * + AND OR == B_NOT / B_AND B_OR <> < > >= <=

EXOR B_EXOR

Tab. 10 Prioridades de los operadores En este caso, las normas bsicas son:

G Las expresiones entre parntesis se procesan en primer lugar. G En las expresiones sin parntesis, la evaluacin sigue el orden de la prioridad. G Las combinaciones lgicas con operadores de la misma prioridad se realizan de izquierda a derecha. Ejemplos: INT A,B BOOL E,F A = B = E = F = E = A = B = F = 4 7 TRUE FALSE NOT E OR F AND NOT (-3 + A * 2 > B) 4 + 5 * 3 - B_NOT B / 2 7 B_EXOR 3 B_OR 4 B_EXOR 3 B_AND 5 TRUE == (5 >= B) AND NOT F ;E=FALSE ;A=23 ;B=5 ;F=TRUE

50 de 197

ProgExperteBHR5.2 09.03.01 es

Variables y declaraciones (continuacin)

2.3.2

Funciones estndar
Para calcular ciertos problemas matemticos, en KRL se encuentran predefinidas algunas funciones estndar (vase Tab. 11). stas pueden utilizarse directamente sin otra declaracin. Descripcin Funcin Tipo de datos Argumento Rango de valores Argumento Tipo de datos Funcin Rango de valores Resultado

Cantidad Raz Seno Coseno Tangente

ABS(X) SQRT(X) SIN(X) COS(X) TAN(X)

REAL REAL REAL REAL REAL REAL REAL

-- + 0+ -- + -- + -- +* -1+1 -- +

REAL REAL REAL REAL REAL REAL REAL

0+ 0+ -1+1 -1+1 -- + 0_180_ -90_+90_

Arco coACOS(x) seno Arco tang. ATAN2(Y,X)

* ningn mltiplo impar de 90_, es decir, X (2k-1)*90_, k8 Tab. 11 Funciones matemticas estndar La funcin ABS(X) calcula la cantidad del valor X, por ejemplo: B = -3.4 A = 5 * ABS(B) A = SQRT(16.0801) ;A=17.0 ;A=4.01

SQRT(X) calcula la raz cuadrada del nmero X, por ejemplo: Las funciones trigonomtricas SIN(X), COS(X) y TAN(X) calculan el seno, el coseno o la tangente del ngulo X, por ejemplo: A = SIN(30) B = 2*COS(45) C = TAN(45) ;A=0.5 ;B=1.41421356 ;C=1.0

La tangente de 90_ y de los mltiplos impares de 90_ (270_, 450_, 630_) es infinita. Por lo tanto, intentar calcular uno de estos valores da lugar a un mensaje de error. ACOS(X) es la funcin inversa para COS(X): A = COS(60) B = ACOS(A) ;A=0.5 ;B=60

Para el arco seno, la funcin inversa para SIN(X) no es una funcin estndar predefinida. Sin embargo, se puede calcular muy fcilmente tomando como base la relacin SIN(X) = COS(90_ --X): A = SIN(60) B = 90-ACOS(A) ;A=0.8660254 ;B=60

La tangente de un ngulo est definida como cateto opuesto (Y) dividido por el cateto adyacente (X) en un tringulo rectngulo. Si se conoce la longitud de ambos catetos, se puede calcular el ngulo entre el cateto adyacente y la hipotenusa con el arco tangente. Si tomamos ahora un crculo entero, el factor decisivo es el signo que tienen los componentes X y Y. Si solamente se tuvieran en cuenta los cocientes, con el arco tangente solamente se podran calcular ngulos entre 0_ y 180_. Esto sucede tambin con cualquier calculadora de bolsillo normal: el arco tangente de los valores positivos proporciona un ngulo de entre 0_ y 90_; el arco tangente de los valores negativos proporciona un ngulo entre 90_ y 180_. ProgExperteBHR5.2 09.03.01 es 51 de 197

Programacin por el experto

Indicando explcitamente X e Y, a travs de su signo queda unvocamente establecido el cuadrante en el que se encuentra el ngulo (vase Fig. 13). Por tanto, tambin se pueden calcular ngulos en los cuadrantes III y IV. Por esta razn, para calcular el arco tangente en la funcin ATAN2(Y,X) tambin se necesitan estos dos datos, por ejemplo: A B C D = = = = ATAN2(0.5,0.5) ATAN2(0.5,-0.5) ATAN2(-0.5,-0.5) ATAN2(-0.5,0.5) ;A=45 ;B=135 ;C=225 ;D=315

II
X=COS() Y=SIN()

III

IV

Fig. 13 Utilizacin de X eY en la funcin ATAN2(Y,X) Encontrar ms informacin en el captulo [Subprogramas y funciones].

52 de 197

ProgExperteBHR5.2 09.03.01 es

Variables y declaraciones (continuacin)

2.4

Variables del sistema y archivos del sistema


Un requisito importante para poder ejecutar aplicaciones robticas complejas es una unidad de control que se pueda programar libre y cmodamente. Para ello, debe poder programarse con facilidad la funcionalidad de la unidad de control del robot en el lenguaje del robot. Slo cuando los parmetros de control se pueden integrar en un programa de robot de manera completa y sencilla resulta posible aprovechar toda la funcionalidad de una unidad de control de robot. En la KR C..., esto se logra de manera perfecta mediante variables y archivos del sistema predefinidos. Algunos ejemplos de variables predefinidas son: $POS_ACT (posicin actual del robot), $BASE (sistema de coordenadas base) o $VEL.CP (velocidad de trayectoria). Encontrar un listado de todas las variables predefinidas en la documentacin separada [Variables del sistema]. Las variables del sistema estn totalmente integradas en el concepto de variables de la KRL. Poseen un tipo de datos correspondiente y pueden ser ledas y escritas como cualquier otra variable del programa, siempre y cuando no existan limitaciones a causa del tipo de datos. La posicin actual del robot, por ejemplo, solamente se puede leer, pero no se puede escribir. La unidad de control comprueba estas limitaciones. Siempre que la seguridad lo permita, usted podr incluso escribir en los datos del sistema. Eso ofrece mltiples posibilidades de diagnstico, ya que la KCP y el sistema de programacin pueden cargar o modificar numerosos datos del sistema. Algunas variables tiles del sistema con acceso de escritura son, por ejemplo, $TIMER[] y $FLAG[]. Las 16 variables de temporizador $TIMER[1]$TIMER[16], sirven para medir los procesos temporales y pueden por tanto utilizarse como cronmetro. La medicin se inicia y se para con las variables del sistema $TIMER_STOP[1]$TIMER_STOP[16]: $TIMER_STOP[4] = FALSE arranca, por ejemplo, el temporizador 4, $TIMER_STOP[4] = TRUE vuelve a detener el temporizador 4. Mediante una asignacin normal de valores, se puede reiniciar en todo momento la variable de temporizador afectada, por ejemplo: $TIMER[4] = 0 Si el valor de una variable de temporizador cambia de menos a ms, el correspondiente flag se coloca en TRUE (condicin Timer--Out), por ejemplo: $TIMER_FLAG[4] = TRUE Al arrancar la unidad de control, todas las variables de temporizador se ocupan automticamente con 0, los flags $TIMER_FLAG[1]$TIMER_FLAG[16] se ocupan con FALSE y las variables $TIMER_STOP[1]$TIMER_STOP[16] se ocupan con TRUE. La unidad de las variables de temporizador es el milisegundo (ms). La actualizacin de $TIMER[1]$TIMER[16] y de $TIMER_FLAG[1]$TIMER_FLAG[16] tiene lugar cada 12 ms. Los 1024 flags $FLAG[1]$FLAG[1024] se utilizan como marcas globales. Estas variables booleanas se predefinen con FALSE. Usted puede ver en cualquier momento sobre la superficie de operacin el valor actual de los flags mediante el punto de men Visualizacin. Adems, en el KR C... hay 32 flags cclicos $CYCFLAG[1]$CYCFLAG[32]. Despus del arranque de la unidad de control, todos ellos estn predefinidos con FALSE.

ProgExperteBHR5.2 09.03.01 es

53 de 197

Programacin por el experto

Los flags slo son cclicamente activos en el nivel de robot. Los flags cclicos son admisibles en un archivo submit, pero no se produce ninguna evaluacin cclica. Los flags cclicos pueden definirse y activarse tambin en subprogramas, funciones y subprogramas de interrupcin. $CYCFLAG[1]$CYCFLAG[32] tienen el tipo de datos BOOL. En la asignacin a un flag cclico se puede utilizar cualquier expresin booleana que se desee. Son admisibles G las variables de sistema booleanas y G las variables booleanas que han sido declaradas e inicializadas en una lista de datos. No son admisibles G las funciones que reenvan un valor booleano. La instruccin $CYCFLAG[10] = $IN[2] AND $IN[13] hace, por ejemplo, que la expresin booleana $IN[2] AND $IN[13] sea evaluada cclicamente. Esto quiere decir que cualquier modificacin de la entrada 2 o de la entrada 13 producir tambin un cambio en $CYCFLAG[10], sin importar el lugar en que se encuentre el puntero de ejecucin del programa una vez ejecutada la expresin anterior. Todas los flags cclicos definidos mantienen su validez hasta que se anula la seleccin de un mdulo o se efecta una seleccin de paso con la funcin reset. Si se alcanza el final del programa, todas los flags cclicos permanecern activos. Encontrar ms informacin en el captulo [Tratamiento de interrupciones], apartado [Utilizacin de banderas (flags) cclicas]. En general, para las variables predefinidas se seleccionan nombres fciles de memorizar. Todos comienzan con un smbolo $ y constan de una abreviatura inglesa fcil de recordar. Dado que son tratadas como variables habituales, no es necesario recordar instrucciones extraordinarias ni opciones fuera de lo normal. Para evitar confusiones, no se debe declarar ninguna variable que comience con el smbolo $. Una parte de las variables predefinidas se refiere a la unidad de control completa KR C... (p. ej. $ALARM_STOP para definir la salida de la seal de parada de emergencia del SPS). Otras, por el contrario, solamente son importantes para el robot (por ejemplo $BASE para el sistema de coordenadas base). En la superficie de operacin de KUKA aparece la estacin de discos del robot en la que se han memorizado los datos relevantes de control (en el directorio STEU) y los datos relevantes del robot (en el directorio R1).

Fig. 14 Diferentes niveles en la superficie de operacin KUKA

54 de 197

ProgExperteBHR5.2 09.03.01 es

Variables y declaraciones (continuacin)

Para la programacin de la KR C... se pueden crear archivos de programa y listas de datos. En los archivos de programa hay definiciones de datos e instrucciones ejecutables, las listas de datos solamente contienen definiciones de datos y, en algunos casos, inicializaciones. Encontrar ms informacin en el captulo [Listas de datos]. Adems de las listas de datos que usted crea durante la programacin, en el KR C... existen listas de datos definidas por KUKA que se suministran con el software de control. Estas listas de datos se llaman listas de datos predefinidas y contienen principalmente las variables predefinidas. Usted no podr borrar ni crear estas listas de datos predefinidas. Se crean durante la instalacin del software y siempre estn disponibles. Tambin los nombres de las listas de datos predefinidas comienzan, al igual que los nombres de los datos predefinidos, con el smbolo $. En la KR C... existen las siguientes listas de datos predefinidas: G $MACHINE.DAT es una lista de datos predefinida que solamente contiene variables de sistema predefinidas. Con los datos de la mquina, se adapta la unidad de control a los robots conectados (cinemtica, parmetros de regulacin, etc.). Existe una lista $MACHINE.DAT tanto en el sistema de control como en el sistema de robot. Usted no podr crear variables nuevas ni borrar variables ni borrar variables existentes. Ejemplos: $ALARM_STOP $NUM_AX G Seal de parada de emergencia (especfica de la unidad de control) Nmero de ejes del robot (especfico del robot)

$CUSTOM.DAT es una lista de datos que solamente existe en el sistema de control. Contiene datos con los que puede configurar o parametrizar determinadas funciones de control. Para el programador solamente existe la posibilidad de modificar valores de las variables predefinidas. Usted no podr crear variables nuevas ni borrar variables ni borrar variables existentes. Ejemplos: $PSER_1 $IBUS_ON Parmetro de protocolo de la interfaz serial 1 Conexin de grupos alternativos de interbus

$CONFIG.DAT es una lista de datos que ha sido predefinida por KUKA pero no contiene variables de sistema predefinidas. Existe una $CONFIG.DAT tanto en el nivel de la unidad de control como en el nivel de robot. En ella pueden definirse variables, estructuras, canales y seales que mantienen su validez durante mucho tiempo y son de gran importancia para muchos programas. La lista de datos del nivel de robot se subdivide en los bloques siguientes: -BAS ---------AUTOEXT GRIPPER PERCEPT SPOT A10 A50 A20 TOUCHSENSE USER 55 de 197

ProgExperteBHR5.2 09.03.01 es

Programacin por el experto

Las declaraciones globales del usuario deben registrarse obligatoriamente en el bloque USER. Solamente en l se aceptan las declaraciones en posteriores actualizaciones de software. G $ROBCOR.DAT El archivo $ROBCOR.DAT contiene datos especficos de robot para el modelo dinmico del robot. Estos datos son necesarios para la planificacin de la trayectoria. Tampoco en este caso se pueden crear variables nuevas ni borrar variables existentes.

Tab. 12 proporciona un resumen de las listas de datos predefinidas.

Lista de datos

Sistema Robot

Asignacin de valor para Puesta en servicio Puesta en servicio Montaje o reequipamiento de clulas Suministro mediante KUKA/usuario Usuario/KUKA Usuario/KUKA

Lista de datos Unidad de control


$MACHINE.DAT $CUSTOM.DAT $CONFIG.DAT

n n n

n n

$ROBCOR.DAT

KUKA

Tab. 12 Listas de datos predefinidas en la KR C...

56 de 197

ProgExperteBHR5.2 09.03.01 es

Variables y declaraciones (continuacin)

2.5

Manipulacin de variables de cadena


Para procesar variables de cadena existen las siguientes funciones, que se pueden utilizar en los mdulos *.SRC y *.SUB, as como en la visualizacin de variables.

2.5.1

Longitud de una variable de cadena en la declaracin


Esta funcin averigua la longitud de una variable de cadena de acuerdo con su declaracin en la seccin de declaraciones de un programa. StrDeclLen(StrVar[]) Como valor de retorno, se emite la longitud averiguada.

Argumento
StrDeclLen StrVar[]

Tipo de datos
INT CHAR

Significado Longitud de las variables de cadena tal como fue declarada en la seccin de declaracin Variable de cadena cuya longitud debe ser averiguada

Ejemplos S CHAR $ProName[24] S CHAR ab[12] = xyz -> -> StrDeclLen($ProName[]) = 24 StrDeclLen(ab[]) = 12

Puesto que la variable de cadena StrVar[ ] es un campo del tipo CHAR, para averiguar la longitud no se permiten caracteres sueltos ni constantes.

2.5.2

Longitud de una variable de cadena despus de la inicializacin


Esta funcin averigua la longitud de la secuencia de caracteres de una variable de cadena, tal como fue establecida en la seccin de inicializacin del programa. StrLen(StrVar) Como valor de retorno, se emite la longitud averiguada.

Argumento
StrLen StrVar

Tipo de datos
INT CHAR

Significado Nmero de caracteres que en este momento son asignados a la variable de cadena Secuencia de caracteres o variable cuya longitud se debe averiguar

Ejemplos S StrLen(abcd) S CHAR a = y S CHAR ab[12] = xyz -> -> -> StrLen = 4 StrLen(a) = 1 StrLen(ab[]) = 3

ProgExperteBHR5.2 09.03.01 es

57 de 197

Programacin por el experto

2.5.3

Borrar el contenido de una variable de cadena


El contenido de una variable de cadena se puede borrar con la instruccin StrClear. StrClear(StrVar[]) Una vez que se ha logrado borrar el contenido de la variable, el valor de retorno es TRUE.

Argumento
StrClear StrVar[]

Tipo de datos
BOOL CHAR

Significado Borra la secuencia de caracteres de la variable de cadena respectiva Variable cuya secuencia de caracteres debe ser borrada

Ejemplo IF (NOT StrClear($Loop_Msg[]) THEN HALT ENDIF

Como variable de cadena StrVar[ ] solamente se permite un campo del tipo CHAR.

2.5.4

Ampliar la variable de cadena


El contenido de una variable de cadena se puede ampliar aadiendo otra variable de cadena. StrAdd(StrDest[], StrToAdd[]) Como valor de retorno se emite la suma de las longitudes de las secuencias de caracteres de StrDest[ ] y StrToAdd[ ]. Si la suma sobrepasa el mximo de 470 caracteres, como valor de retorno simplemente se emite un 0.

Argumento
StrAdd StrDest[] StrToAdd[] Ejemplo

Tipo de datos
INT CHAR CHAR

Significado Ampla la variable de cadena previamente indicada La variable de cadena que se desea ampliar La secuencia de caracteres con la que se ampla

$Loop_Msg[ ] = Secuencia1 StrAdd($Loop_Msg[], Secuencia2 -> Secuencia2

$Loop_Msg[ ] = Secuencia1

Puesto que la variable de cadena StrDest[ ] es un campo del tipo CHAR, no se permiten caracteres sueltos ni constantes.

58 de 197

ProgExperteBHR5.2 09.03.01 es

Variables y declaraciones (continuacin)

2.5.5

Bsqueda de variables de cadena


Se puede buscar la variable de cadena mediante una secuencia de caracteres teniendo en cuenta la diferencia entre maysculas y minsculas. StrFind(StartAt, StrVar[], StrFind[], CaseSens) Como valor de retorno se emite la posicin del primer carcter encontrado.

Argumento
StrFind StartAt StrVar[] StrFind[] CaseSens

Tipo de datos
INT INT CHAR CHAR

Significado Busca la variable de cadena previamente indicada Inicia la bsqueda a partir de esta posicin La variable de cadena que se desea buscar

sta es la secuencia de caracteres que el sistema busca #CASE_SENS Diferencia entre maysculas y minsculas #NOT_CASE_SENS No diferencia entre maysculas y minsculas

Ejemplos StrFind(1, StrFind(1, StrFind(1, StrFind(1, ABCDE, ABCDE, ABCDE, ABCDE, BC, #CASE_SENS) bc, #NOT_CASE_SENS) AC, #NOT_CASE_SENS) A, #NOT_CASE_SENS) -> -> -> -> 2 2 0 1

2.5.6

Comparacin del contenido de variables de cadena


Se puede comparar el contenido de las secuencias de caracteres de dos variables de cadena. Tambin en este caso es posible diferenciar entre maysculas y minsculas. StrComp(StrComp1[], StrComp2[], CaseSens) Si ambas secuencias de caracteres coinciden, como valor de retorno se recibe TRUE. Si no es as, se recibir FALSE.

Argumento
StrComp StrComp1[] StrComp2[] CaseSens

Tipo de datos
BOOL CHAR

Significado Compara dos variables de cadena entre s

La variable de cadena se compara con StrComp2[ ] CHAR La variable de cadena se compara con StrComp1[ ] #CASE_SENS Diferencia entre maysculas y minsculas #NOT_CASE_SENS No diferencia entre maysculas y minsculas

Ejemplos StrComp(ABCDE, StrComp(ABCDE, StrComp(ABCDE, StrComp(ABCDE, ABCDE, abcde, abcde, acbde, #CASE_SENS) #NOT_CASE_SENS) #CASE_SENS) #NOT_CASE_SENS) -> -> -> -> TRUE TRUE FALSE FALSE

ProgExperteBHR5.2 09.03.01 es

59 de 197

Programacin por el experto

2.5.7

Copiar una variable de cadena


El contenido de una variable de cadena se puede copiar y pegar en otra variable de cadena. StrCopy(StrDest[], StrSource[]) Si la accin de copiado se realiza correctamente, el valor de retorno ser TRUE; si no, ser FALSE.

Argumento
StrAdd StrDest[] StrSource[]

Tipo de datos
BOOL CHAR CHAR

Significado Copia una secuencia de caracteres y la pega en una variable de cadena previamente indicada La secuencia de caracteres es asignada a esta variable de cadena Esta es la variable de cadena cuyo contenido se copia

Ejemplo $Loop_Msg[ ] = StrCopy($Loop_Msg[], Example ->

$Loop_Msg[ ] = Example

Puesto que la variable de cadena StrDest[ ] es un campo del tipo CHAR, no se permiten caracteres sueltos ni constantes.

60 de 197

ProgExperteBHR5.2 09.03.01 es

Programacin de movimiento

Programacin de movimiento
Una de las tareas ms importantes de una unidad de control de robot es el movimiento del robot. El programador controla los movimientos del robot industrial mediante instrucciones de movimiento especiales. stas constituyen tambin la caracterstica principal que diferencia los lenguajes de robot de los lenguajes de programacin comunes para ordenador, como el C o el Pascal. Segn el tipo de control, estas instrucciones de movimiento pueden subdividirse en instrucciones para movimientos simples de un punto a otro punto e instrucciones para movimientos de trayectoria. Mientras que, en los movimientos de trayectoria, el efector final (por ejemplo, la garra o la herramienta) describe en el espacio una trayectoria geomtrica exactamente definida (una recta o un arco de circunferencia), en los movimientos de punto a punto, la trayectoria de movimiento depende de la cinemtica del robot y por ello no se puede prever con exactitud. Ambos tipos de movimiento tienen en comn el hecho de que la programacin se realiza desde la posicin actual hasta una nueva posicin. Por tanto, en una instruccin de movimiento solamente es necesario, por lo general, indicar la posicin de destino (excepcin: movimientos circulares, vase 3.3.4). Las coordenadas de las posiciones pueden especificarse textualmente introduciendo valores numricos, o bien mediante el desplazamiento con el robot y la memorizacin de los valores actuales (aprendizaje). En ambos casos, las indicaciones pueden ser referidas a distintos sistemas de coordenadas. Otras propiedades de movimiento, tales como las velocidades y aceleraciones, as como el control de orientacin, pueden ser ajustadas mediante variables del sistema. El posicionamiento aproximado de los puntos intermedios se inicia por medio de parmetros opcionales en la instruccin de movimiento. Para el posicionamiento aproximado debe estar activado un procesamiento en avance.

3.1

Utilizacin de diferentes sistemas de coordenadas


Para poder indicar en el espacio la posicin u orientacin de un punto, se utilizan diferentes sistemas de coordenadas. Se puede establecer una diferenciacin bsica entre sistemas de coordenadas especficos de los ejes y sistemas de coordenadas cartesianos: En el sistema de coordenadas especfico de los ejes se indican los corrimientos (para los ejes de traslacin) o los giros (para los ejes de rotacin) de cada eje del robot. En un robot de brazo articulado de 6 ejes, deben indicarse los 6 ngulos de articulacin del robot, para especificar unvocamente la posicin y la orientacin (vase Fig. 15).

Fig. 15 Sistema de coordenadas especfico de los ejes de un robot de brazo articulado de 6 ejes ProgExperteBHR5.2 09.03.01 es 61 de 197

Programacin por el experto

La descripcin de una posicin especfica de un eje se efecta en la KR C1 mediante el tipo de estructura predefinida AXIS, cuyos componentes tienen el significado de ngulos o de longitudes dependiendo del tipo de eje. Encontrar ms informacin en el captulo [Variables y declaraciones] apartado [Estructuras]. Las posiciones especficas de los ejes slo se pueden alcanzar utilizando pasos de movimiento PTP. Si un movimiento de trayectoria se programa con una posicin de robot especfica de un eje, se producir un fallo. Transformacin de las coordenadas Puesto que el ser humano, como programador, piensa en coordenadas cartesianas, no suele ser prctico programar en el sistema de coordenadas especficas de los ejes. La unidad de control ofrece por ello varios sistemas cartesianos para la programacin cuyas coordenadas se transforman automticamente en el sistema especfico del eje antes de que se ejecute el movimiento (vase Fig. 16).

Transformacin de avance

A1, A2, A3, A4, A5, A6 X, Y, Z, A, B, C (, S, T)

Transformacin de retroceso
Fig. 16 Transformacin de las coordenadas Sistema de coordenadas cartesiano En un sistema de coordenadas cartesiano, cada uno de los 3 ejes de coordenadas (X, Y y Z) es perpendicular a los otros dos y todos juntos forman, en este orden, un sistema rectangular. En el sistema de coordenadas cartesiano, la posicin de un punto en el espacio queda unvocamente establecida mediante la indicacin de las coordenadas X, Y y Z. Estas coordenadas se obtienen de las distancias translatorias de cada valor de coordenadas con respecto al origen de coordenadas.

62 de 197

ProgExperteBHR5.2 09.03.01 es

Programacin de movimiento (continuacin)

Z P

Z1 Y

Y1

X1

P(X1=5, Y1=2, Z1=4) Fig. 17 Descripcin translatoria de la posicin de un punto Para poder alcanzar cualquier punto en el espacio con la orientacin que se desee, adems de los tres valores translatorios se necesitan tres datos de rotacin: Los ngulos denominados en el KR C1 como A, B y C giran sobre los ejes de coordenadas Z, Y y X. El orden de las rotaciones debe mantenerse: 1. Giro sobre el eje Z formando el ngulo A 2. Giro sobre el nuevo eje Y formando el ngulo B 3. Giro sobre el nuevo eje X formando el ngulo C Este orden de giro corresponde a los ngulos roll--pitch--yaw (rodar--cabecear--oscilar) que se manejan en aeronutica. El ngulo C corresponde a rodar, el ngulo B a cabecear y el ngulo A a oscilar (vase Fig. 18).

A
Z Z
A

B
Y X Z Z
C

Y X

Fig. 18 Descripcin de la orientacin de un punto mediante rotaciones Con las translaciones X, Y y Z, y con las rotaciones A, B y C se pueden describir unvocamente la posicin y la orientacin de un punto en el espacio. En la KR C1, esto se logra mediante la estructura predefinida FRAME. ProgExperteBHR5.2 09.03.01 es 63 de 197

Programacin por el experto

Para los movimientos de trayectoria, la indicacin de las coordenadas FRAME es siempre unvoca y suficiente. Sin embargo, en el desplazamiento punto a punto, con determinadas cinemticas de robots (por ejemplo, un brazo articulado de 6 ejes) se puede alcanzar un mismo punto (posicin y orientacin) en el espacio con varias posiciones de eje. Con los otros dos datos S y T, puede eliminarse esta ambigedad. En la KR C1 est prevista la estructura POS para un frame ampliado mediante S y T. Encontrar ms informacin en el captulo [Variables y declaraciones] apartado [Estructuras] e [Instrucciones de movimiento]. En la KR C1 se encuentran predefinidos los siguientes sistemas de coordenadas cartesianos:

Sistema de coordenadas Sistema de coordenadas universales Sistema de coordenadas del robot

Variable del sistema $WORLD $ROBROOT

Estado protegido contra escritura protegido contra escritura (modificable en


R1\MADA\$MASCHINE.DAT)

Sistema de coordenadas de la herramienta $TOOL Sistema de coordenadas base (de la pieza)


Tab. 1

describible describible

$BASE

Sistemas de coordenadas predefinidos

y z

SC de la herramienta
z y x

SC bsico

SC universal
z y x

SC del robot
x

Fig. 19 Sistemas de coordenadas cartesianos para robots Sistema de coordenadas universales El sistema de coordenadas universales es un sistema de coordenadas fijo en un lugar (= no se desplaza con el movimiento del robot) que sirve como sistema de coordenadas de origen para un sistema de robot (robot, til de recepcin de una pieza o herramienta). As pues, representa el sistema de referencia tanto para el sistema de robot como tambin para los dispositivos perifricos de la clula. Sistema de coordenadas del robot Este sistema de coordenadas se encuentra en el pie del robot y sirve como sistema de coordenadas de referencia para la estructura mecnica del robot. Tambin tiene como referencia el sistema de coordenadas universales y, en el estado de suministro, es idntico a ste. Con $ROBROOT puede definirse un corrimiento del robot hacia $WORLD. 64 de 197 ProgExperteBHR5.2 09.03.01 es

Programacin de movimiento (continuacin)

Sistema de coordenadas de la herramienta El sistema de coordenadas de la herramienta tiene su origen en la punta de la herramienta. La orientacin se puede seleccionar de modo que su eje X sea idntico a la direccin de avance de la herramienta y apunte hacia fuera de la misma. Con el movimiento de la punta de la herramienta, se mueve tambin el sistema de coordenadas de la herramienta. En el estado de suministro, el sistema de coordenadas de la herramienta se encuentra en la brida del robot (el eje Z es idntico al eje 6). Se refiere, a travs de la transformacin, al sistema de coordenadas del robot.

Y X Z

Si se efecta un cambio de herramienta, despus de la nueva medicin se puede seguir utilizando el programa original, ya que el ordenador conoce las coordenadas de la punta de la herramienta. Sistema de coordenadas base El sistema de coordenadas base se utiliza como sistema de referencia para la descripcin de la posicin de la pieza. La programacin del robot se efecta en el sistema de coordenadas base. Como sistema de coordenadas de referencia, utiliza el sistema de coordenadas universal. En el estado de suministro es $BASE=$WORLD. Modificando $BASE se pueden, por ejemplo, procesar varias piezas iguales en diferentes lugares con el mismo programa. Interpolacin referida a la base Para la interpolacin de la trayectoria de movimiento, la unidad de control del robot calcula, en una situacin normal (es decir, con la herramienta en la brida del robot) la posicin actual ($POS_ACT) con referencia al sistema de coordenadas $BASE (vase Fig. 20).

$TOOL

z y x z

$POS_ACT

z y x

$BASE
z y

$ROBROOT
y

$WORLD

Fig. 20 Cadena cinemtica para la interpolacin referida a la base

ProgExperteBHR5.2 09.03.01 es

65 de 197

Programacin por el experto

Sin embargo, en la prctica industrial, cada vez es ms habitual fijar la herramienta en el espacio (por ejemplo, una antorcha de soldadura) y guiar la pieza a lo largo de la herramienta fija mediante una garra adecuada. La variable $TOOL siempre tiene como referencia la herramienta o la pieza que se encuentra en el robot. Por el contrario, la variable $BASE siempre tiene como referencia una herramienta o una pieza externa. Interpolacin referida a la garra Puesto que ahora la pieza y la herramienta han intercambiado sus posiciones pero el movimiento debe seguir teniendo como referencia la pieza, la interpolacin de la trayectoria del movimiento debe efectuarse mediante el sistema de coordenadas $TOOL. Esta asignacin del tipo de interpolacin se efecta de forma implcita cuando se utiliza un TCP normal o externo. Con la variable del sistema $IPO_MODE usted puede definir este tipo de interpolacin. La lnea de programa $IPO_MODE = #TCP permite una interpolacin referida a la garra en el sistema de coordenadas $TOOL. Ahora, la posicin actual $POS_ACT se calcula por tanto con referencia a $TOOL (vase Fig. 21). Con $IPO_MODE = #BASE usted establece de nuevo, como tipo de interpolacin, la interpolacin referida a la base para el caso normal. ste es tambin el ajuste estndar al arrancar la unidad de control.

$TOOL y
x z z

$POS_ACT

y x

$BASE
x

$ROBROOT
z y y

$WORLD

Fig. 21 Cadena cinemtica para la interpolacin referida a la garra Encontrar un ejemplo de corrimiento del sistema de coordenadas en el captulo [Variables y declaraciones], apartado [Operador geomtrico].

66 de 197

ProgExperteBHR5.2 09.03.01 es

Programacin de movimiento (continuacin)

3.2
3.2.1

Movimientos punto a punto (PTP)


General (PTP sincrnico)
PTP El movimiento punto a punto (PTP) es la manera ms rpida de mover la punta de la herramienta (Tool Center Point: TCP) desde la posicin actual hasta una posicin de destino programada. La unidad de control calcula para ello las diferencias de ngulo necesarias para cada eje. Mediante la variable del sistema G $VEL_AXIS[nmero de eje] se programan las velocidades mximas especficas del eje, $ACC_AXIS[nmero de eje] las aceleraciones mximas especficas del eje.

y con G Todos los datos se indican en porcentajes, tomando como referencia un valor mximo definido en los datos de la mquina. Si estas dos variables del sistema no han sido programadas para todos los ejes, al ejecutarse el programa se emite el mensaje de fallo correspondiente. Los movimientos los distintos ejes se sincronizan (PTP sincrnico) de forma que todos los ejes comiencen y terminen el movimiento al mismo tiempo. Esto significa que slo el eje con el recorrido ms largo, el llamado eje directriz, se desplaza con el valor lmite de aceleracin y velocidad programado. Todos los dems ejes se mueven solamente con las aceleraciones y velocidades necesarias para alcanzar el punto final del movimiento en el mismo instante, independientemente de los valores programados en $VEL_AXIS[Nr] y $ACC_AXIS[Nr]. Si est activada la adaptacin de aceleracin o la caracterstica de velocidad superior ($ADAP_ACC=#STEP1, $OPT_MOVE=#STEP1) los ejes se desplazan sincrnicamente en sus fases, es decir, todos los ejes se encuentran al mismo tiempo en la fase de aceleracin, de movimiento constante y de retardo. Puesto que, en general, en los movimientos PTP con coordenadas de destino cartesianas no se conoce cul es el eje directriz, en esos casos suele resultar conveniente equiparar los valores de aceleracin y de velocidad para todos los ejes. Los movimientos con sincronizacin en el tiempo disminuyen la carga mecnica del robot, ya que reducen los momentos de los motores y reductores de todos aquellos ejes con trayectos de desplazamiento ms cortos. Los movimientos con sincronizacin de fases generan (adems) una trayectoria de movimiento que siempre discurre igual en el espacio, independientemente de la velocidad y aceleracin programadas. Encontrar ms informacin en el captulo [Programacin de movimiento], apartado [Movimientos con posicionamiento aproximado].

ProgExperteBHR5.2 09.03.01 es

67 de 197

Programacin por el experto

3.2.2

Perfil de marcha ms elevado


Como opcin predeterminada, para los movimientos PTP se utiliza el perfil de marcha ms elevado. Con este modelo, en los pasos PTP individuales y en los pasos PTP con posicionamiento aproximado, el desplazamiento resulta ptimo en cuanto al tiempo desde el punto inicial hasta el punto de destino. Esto significa que, con los reductores y motores disponibles, el desplazamiento no puede ser ms rpido. Los momentos admitidos se aprovechan ptimamente en cada punto de la trayectoria, especialmente en la fase de velocidad constante. La velocidad siempre se adapta de modo que no se sobrepasen los momentos. Una modificacin de los valores de velocidad o de aceleracin produce solamente (tambin en los pasos de posicionamiento aproximado) un cambio del perfil de velocidad en la trayectoria. La curva geomtrica en el espacio no sufre ningn cambio. Las asignaciones de velocidad y los valores lmites de aceleracin (indicados en porcentajes) se pueden definir individualmente para cada eje. No obstante, este valor lmite no repercute directamente sobre la aceleracin, sino sobre el momento de aceleracin del eje. Es decir, un valor de aceleracin del eje de 50% no reduce necesariamente la aceleracin a la mitad.

3.2.3

Instrucciones de movimiento
El siguiente ejemplo de programa, PTP_AXIS.SRC, representa en principio el programa KRL ejecutable ms pequeo: DEF PTP_AXIS() $VEL_AXIS[1]=100 $VEL_AXIS[2]=100 $VEL_AXIS[3]=100 $VEL_AXIS[4]=100 $VEL_AXIS[5]=100 $VEL_AXIS[6]=100 $ACC_AXIS[1]=100 $ACC_AXIS[2]=100 $ACC_AXIS[3]=100 $ACC_AXIS[4]=100 $ACC_AXIS[5]=100 $ACC_AXIS[6]=100 ;el nombre del programa es PTP_AXIS ;especificacin de las velocidades de eje

;especificacin de las aceleraciones de eje

PTP {AXIS: A1 0,A2 -90,A3 90,A4 0,A5 0,A6 0} END En primer lugar, en este programa se especifican las velocidades y aceleraciones de los ejes. Antes de que pueda ejecutarse un movimiento punto a punto, deben haberse efectuado estas asignaciones. A continuacin, el robot coloca cada eje en las posiciones angulares especificadas en la estructura AXIS. Por ejemplo eje 1 en 0_, eje 2 en --90_, eje 3 en 90_, eje 4 en 0_, eje 5 en 0_ y eje 6 en 0_.

68 de 197

ProgExperteBHR5.2 09.03.01 es

Programacin de movimiento (continuacin)

Fig. 22 Posicin mecnica cero

ProgExperteBHR5.2 09.03.01 es

69 de 197

Programacin por el experto

Si al indicar las coordenadas de los ejes se omiten componentes individuales, el robot solamente desplaza los ejes indicados. Los otros ejes no cambian de posicin. Por lo tanto, con PTP {A3 45} slo se coloca el eje 3 en 45_. Es preciso tener en cuenta que las indicaciones de ngulos en la instruccin PTP son valores absolutos. El robot no gira el eje otros 45_, sino que se desplaza hasta la posicin absoluta 45_ del eje. Para el desplazamiento relativo se utiliza la instruccin PTP_REL. As pues, para girar por ejemplo los ejes 1 y 4 35_ cada uno, tan slo es necesario programar: PTP_REL {A1 35,A4 35} A3 = 0_

PTP {A3 45}

A3 = 90_

PTP_REL {A3 45}

Fig. 23 Diferencia entre las coordenadas absolutas y relativas especficas de los ejes

Para el desplazamiento relativo debe, no obstante, tenerse en cuenta que no es fcil reanudar un movimiento detenido durante la ejecucin de un programa. Despus de un nuevo arranque y de una nueva seleccin de paso o un nuevo cambio del modo de ejecucin del programa, la unidad de control no puede tener en cuenta el recorrido ya realizado y recorre de nuevo toda la distancia relativa programada, lo que en definitiva lleva a un punto final incorrecto.

70 de 197

ProgExperteBHR5.2 09.03.01 es

Programacin de movimiento (continuacin)

Sin embargo, el desplazamiento en las coordenadas especficas del eje no suele ser prctico, ya que las personas piensan y actan en el espacio cartesiano. Para ello se utiliza la indicacin de las coordenadas cartesianas mediante una estructura POS como la que aparece en el siguiente ejemplo: DEF PTP_POS() $BASE = $WORLD ;Definicin del sistema de coordenadas base $TOOL = $NULLFRAME ;Definicin del sistema de coordenadas de la herramienta $VEL_AXIS[1]=100 $VEL_AXIS[2]=100 $VEL_AXIS[3]=100 $VEL_AXIS[4]=100 $VEL_AXIS[5]=100 $VEL_AXIS[6]=100 $ACC_AXIS[1]=100 $ACC_AXIS[2]=100 $ACC_AXIS[3]=100 $ACC_AXIS[4]=100 $ACC_AXIS[5]=100 $ACC_AXIS[6]=100 ;Especificacin de las velocidades de eje

;Especificacin de las aceleraciones de eje

PTP {POS:X 1025,Y 0,Z 1480,A 0,B 90,C 0,S B 010,T B 000010} END Ahora debe recordarse que, para indicar el punto final en las coordenadas cartesianas, adems de los datos de velocidad y aceleracin es obligatorio definir el sistema de coordenadas base y el sistema de coordenadas de la herramienta. Sistemas de coordenadas En nuestro caso, el sistema de coordenadas base ($BASE) fue igualado con el sistema de coordenadas universal ($WORLD) que de forma estndar se encuentra en el pie del robot ($ROBROOT). El sistema de coordenadas de la herramienta ($TOOL) fue ocupado con el frame cero ($NULLFRAME = {FRAME: X 0, Y 0, Z 0,A 0,B 0,C 0}), lo que significa que todos los datos hacen referencia al punto central de la brida. As pues, el punto central de la herramienta (Tool Center Point: TCP) se encuentra, por as decirlo, en el punto central de la brida. Si hay una herramienta montada sobre la brida, los valores se deben corregir como corresponda. Para ello deber consultarse la documentacin sobre medicin de herramientas. Con la instruccin PTP mostrada arriba, el robot se desplaza ahora de tal modo que, en el punto final del movimiento, el TCP se desplaza 1025 mm en direccin X, 0 mm en direccin Y, y 1480 mm en direccin Z desde el pie del robot. Los datos A, B y C definen la orientacin del TCP. El estado S y el giro T definen la posicin de los ejes. Si prueba el ejemplo en un robot KR 6, obtendr el mismo resultado que en el ejemplo anterior. El robot se desplaza a la posicin mecnica cero. Las dos instrucciones son idnticas para este tipo de robot. Tambin al indicar el punto final en las coordenadas cartesianas se pueden volver a omitir componentes individuales de los datos de geometra. La instruccin PTP {Z 1300, B 180} produce por lo tanto un movimiento del TCP en la direccin del eje Z hasta la posicin absoluta 1300 mm y un cabeceo del TCP de 180_. ProgExperteBHR5.2 09.03.01 es 71 de 197

Programacin por el experto

Para el desplazamiento relativo del robot, se utiliza nuevamente la instruccin PTP_REL. Con PTP_REL {Z 180, B -90} se puede por tanto devolver el robot a su posicin original. Una vez ms, es preciso recordar que no se deben volver a seleccionar los movimientos relativos despus de una interrupcin. ZBASE PTP {X 50, Y 50} PTP_REL {X 50, Y 50}

YBASE
200 150 100 50

50

100

150

200

XBASE

Fig. 24 Diferencia entre las coordenadas cartesianas absolutas y relativas Con las coordenadas cartesianas se puede ejecutar, directamente en la instruccin de movimiento, una combinacin lgica de frames mediante el operador geomtrico. De este modo puede iniciarse, por ejemplo, un desplazamiento hacia el sistema de coordenadas base sin modificar la variable $BASE.

El corrimiento de la base mediante el operador de dos puntos tiene adems una ventaja decisiva frente a la opcin de ocupar de nuevo $BASE: El corrimiento se efecta en el paso de movimiento, mientras que una ocupacin de $BASE debe realizarse en un momento anterior al paso de movimiento. De este modo, siempre est seleccionada la base correcta para el movimiento: tambin en el caso de una parada del programa y la posterior seleccin de paso.
Una nueva ocupacin mltiple de $BASE, como en la secuencia siguiente, $BASE = $WORLD PTP POS_1 $BASE = {X 100,Y -200,Z 1000,A 0, B 180,C 45) PTP POS_2 conducira, por el contrario, una vez cancelado el paso de movimiento POS_2 y seleccionado de nuevo el paso POS_1, a un punto de destino incorrecto, ya que ahora tambin se utilizara la nueva base para el paso de movimiento POS_1. Lo mismo ocurre tambin cuando se produce una parada del primer paso de movimiento si se encuentra activado un procesamiento en avance correspondiente. Encontrar ms informacin en el captulo [Programacin de movimiento], apartado [Procesamiento en avance]. Por este motivo se debe, siempre que sea posible, ocupar $BASE y $TOOL una sola vez, por ejemplo en la seccin de inicializacin del programa. Pueden llevarse a cabo otros corrimientos con el operador geomtrico. 72 de 197 ProgExperteBHR5.2 09.03.01 es

Programacin de movimiento (continuacin)

En caso de un TouchUp con el paquete bsico que constituye el suministro estndar, $BASE y $TOOL se guardan automticamente para cada punto en la lista de datos. En el ejemplo siguiente, en la segunda instruccin PTP se efecta un corrimiento de las coordenadas del punto de destino de 300 mm en la direccin X y --100 mm en la direccin Y, as como un giro de 90_ sobre el eje Z. DEF FR_VERS ( )

;--------- Seccin de declaracin --------EXT BAS (BAS_COMMAND :IN,REAL :IN ) DECL AXIS HOME ;Variable HOME del tipo AXIS DECL FRAME BASE1 ;Variable BASE1 del tipo FRAME ;---------- Inicializacin --------BAS (#INITMOV,0 ) ;Inicializacin de velocidades, ;aceleraciones, $BASE, $TOOL, etc. HOME={AXIS: A1 0,A2 -90,A3 90,A4 0,A5 0,A6 0} BASE1={FRAME: X 300,Y -100,Z 0,A 90,B 0,C 0} ;------------- Seccin principal-----------PTP HOME ; desplazamiento COI ; Movimiento respecto al sistema de coordenadas $BASE PTP {POS: X 540,Y 630,Z 1500,A 0,B 90,C 0,S 2,T 35} ; Movimiento respecto al SC $BASE corrido en BASIS1 PTP BASE1:{POS: X 540,Y 630,Z 1500,A 0,B 90,C 0,S 2,T 35} PTP HOME END

En este ejemplo, adems, las declaraciones necesarias de las velocidades, aceleraciones, as como de los sistemas de coordenadas $BASE y $TOOL ya no se llevan a cabo manualmente. En lugar de ello, se utiliza el paquete base estndar BAS.SRC. Para ello, primero hay que hacer que el programa lo reconozca con la instruccin EXT.
Con la instruccin de inicializacin BAS (#INITMOV, 0) todas las variables de sistema importantes se ocupan finalmente con valores estndar.

Encontrar ms informacin en el captulo [Subprogramas y funciones] apartado [Declaraciones].

ProgExperteBHR5.2 09.03.01 es

73 de 197

Programacin por el experto

COI Antes poder procesar un programa es necesario generar la coincidencia de paso (COI), es decir, la coincidencia de la posicin actual del robot con la posicin programada. Puesto que el movimiento de coincidencia de paso no representa ningn movimiento programado y verificado, debe realizarse con la tecla de arranque (funcin de hombre muerto) pulsada y con velocidad automtica reducida. Una vez alcanzada la trayectoria programada, el movimiento se detiene y el programa puede continuar cuando se vuelve a pulsar la tecla de arranque.

En el modo de servicio Automtico externo no se efecta ningn desplazamiento de coincidencia COI.


Por ello, como primera instruccin de movimiento, se recomienda un recorrido hasta la posicin Home en el que el robot se desplaza hasta una posicin inicial no crtica y unvocamente definida donde tambin se genera la coincidencia de paso. Tambin al final del programa debe devolverse el robot a esta posicin. SyT En una indicacin POS, los datos S y T permiten seleccionar de entre varias posiciones de robot posibles para un mismo punto en el espacio (debido a las singularidades de la cinemtica) una posicin muy precisa y unvocamente definida. Por ello, en la primera instruccin de movimiento, si se utilizan coordenadas cartesianas es muy importante programar tambin Status y Turn para definir una posicin inicial unvoca. Como para los movimientos de trayectoria (vase 3.3) no se tienen en cuenta los datos S y T, la primera instruccin de movimiento de un programa (desplazamiento a Home) debe ser en todos los casos una instruccin completa PTP con la indicacin Status (estado) y Turn (giro) (o una instruccin PTP completa con coordenadas de eje). En las instrucciones PTP subsiguientes pueden omitirse los datos S y T siempre que no sea necesaria una posicin determinada del eje (por ejemplo, porque hay obstculos). El robot mantiene el valor de S antiguo y selecciona el nuevo valor T, que da como resultado el recorrido axial ms corto permitido. Este recorrido tambin es siempre el mismo en las distintas ejecuciones de la programacin debido a la programacin nica de S y T en el primer paso PTP. Tanto Status (estado) como Turn (giro) requieren datos enteros (integer) que deben indicarse en forma binaria para que cumplan su funcin. TURN Ampliando una indicacin de posicin cartesiana con el valor Turn (giro) se pueden adems alcanzar ngulos de eje superiores a +180_ o inferiores a --180_ sin una estrategia de desplazamiento especial (por ejemplo, puntos intermedios). En los ejes rotatorios, los bits individuales determinan el signo que precede al valor del eje del siguiente modo: Bit x = 0: Bit x = 1: Valor 0 1 ngulo del eje x 0_ ngulo del eje x < 0_ Bit 5 A6 0_ A6 < 0_ Bit 4 A5 0_ A5 < 0_ Tab. 2 Bit 3 A4 0_ A4 < 0_ Bit 2 A3 0_ A3 < 0_ Bit 1 A2 0_ A2 < 0_ Bit 0 A1 0_ A1 < 0_

Significado de los bits de Turn (giro)

Una indicacin T B 10011, significa por tanto que los ngulos de los ejes 1, 2 y 5 son negativos, y que los ngulos de los ejes 3, 4 y 6 son por el contrario positivos (pueden omitirse todos los bits de 0 con un valor ms alto). 74 de 197 ProgExperteBHR5.2 09.03.01 es

Programacin de movimiento (continuacin)

Estado Con el estado S se manejan las ambigedades en la posicin del eje (vase Fig. 25). Por lo tanto, S depende de la respectiva cinemtica del robot.

Ambigedades

Eje 5

Eje 2

Eje 3

Eje 5

Eje 4

Eje 6

Fig. 25 Ejemplos de cinemticas de robot ambiguas Encontrar informacin ms detallada sobre ambigedades en la cinemtica del robot en el apartado [Singularidades]. El significado de cada uno de los bits es el siguiente: Bit 0: Bit 1: Bit 2: Valor 0 1 Bit 2 0_ A5 < 180_ A5 < --180_ --180_ A5 < 0_ A5 180_ Tab. 3 Posicin del punto de la raz de la mueca (rea de base/rea por encima de la cabeza) Configuracin del brazo Configuracin de la mueca Bit 1 A3 < ( depende del tipo de robot) A3 ( depende del tipo de robot) Bit 0 rea de base rea por encima de la cabeza

Para los robots de brazo articulado de 6 ejes, los bits se definen segn la tabla siguiente:

Bits de Status (estado) para los robots de brazo articulado de 6 ejes

Grficamente, cabe imaginarse el rea de base / por encima de la cabeza de forma cartesiana. Para ello, se definen los conceptos siguientes: Punto de la raz de la mueca: Punto de interseccin de los ejes de la mueca Sistema de coordenadas A1: Si el eje 1 est en 0_, entonces es idntico al sistema de coordenadas $ROBROOT. En los valores distintos de 0_, se mueve junto con el eje 1. As pues, el rea de base/por encima de la cabeza, puede definirse del modo siguiente: G G Si el valor x del punto de la raz de la mueca, expresado en el sistema de coordenadas A1, es positivo, el robot se encuentra en el rea de base. Si el valor x del punto de la raz de la mueca, expresado en el sistema de coordenadas A1, es negativo, el robot se encuentra en el rea por encima la cabeza. 75 de 197

ProgExperteBHR5.2 09.03.01 es

Programacin por el experto

El bit 1 indica la posicin del brazo. La activacin del bit depende del tipo de robot. En los robots cuyos ejes 3 y 4 se interseccionan, se aplica lo siguiente: el bit 1 tiene el valor 0, cuando el eje 3 es < 0_; de lo contrario, el bit 1 = 1. En los robots con un offset entre el eje 3 y el eje 4 (por ejemplo, los KR 30, vase Fig. 26), la posicin angular en la cambia el valor del bit 1 depende de la magnitud de este offset.

Offset

Fig. 26 Offset entre los ejes 3 y 4 en un KR 30 La Fig. 27 muestra la repercusin de los bits de Status (estado) en la configuracin del robot. El mismo punto en el espacio ha sido alcanzado con cuatro posiciones de robot diferentes. En la primera posicin, el robot se encuentra en la posicin de salida; el eje 5 tiene un valor de aprox. 45_ y el eje 3 de aprox. 80_. En la segunda configuracin del robot apenas puede apreciarse alguna diferencia. nicamente se ha girado 180_ el eje 4 y los otros ejes se han corregido en consonancia con este giro. Mientras que la configuracin del brazo ha permanecido igual, la configuracin de la mueca ha cambiado: ahora el eje 5 tiene aprox. 45_. El bit de estado 2 es por lo tanto 1. Ahora, al pasar de la posicin 2 a la 3 cambia la configuracin del brazo. El eje 3 gira hasta una posicin angular de aprox. --50_; el bit de estado 1 asume el valor 0. Por ltimo, en la cuarta posicin, el robot se encuentra en la posicin por encima la cabeza. Para lograrlo, lo decisivo ha sido girar el eje 1 180_. El bit de estado 0 se pone a 1.

76 de 197

ProgExperteBHR5.2 09.03.01 es

Programacin de movimiento (continuacin)

Fig. 27 Efectos de los bits de estado (Status) sobre la posicin del robot

ProgExperteBHR5.2 09.03.01 es

77 de 197

Programacin por el experto

3.2.3.1

Singularidades La cinemtica estndar de KUKA diferencia 3 posiciones singulares distintas. stas son: la singularidad por encima de la cabeza, la posicin extendida y la singularidad de los ejes de la mueca. Una singularidad se caracteriza, entre otras cosas, por no permitir una transformacin de retroceso (conversin de las coordenadas cartesianas en valores especficos de los ejes) unvoca aunque se hayan preestablecido los datos Status y Turn. Las pequeas alteraciones cartesianas cercanas a una singularidad producen grandes cambios en el ngulo de los ejes. Singularidad por encima de la cabeza (posicin 1) En este caso, el punto de raz de la mueca, cuya posicin radica en el punto de interseccin de los ejes A4, A5 y A6, se encuentra en el eje 1. Punto de la raz de la mueca

La posicin del eje 1 no se puede establecer unvocamente mediante la transformacin de retroceso y puede por tanto asumir cualquier valor. Si el punto de destino de un paso de movimiento PTP est en la singularidad por encima de la cabeza, la unidad de control ofrece las siguientes posibilidades: G G El eje 1 se desplaza durante el movimiento PTP a 0 grados (ajuste estndar); El ngulo axial del eje 1 permanece igual tanto para el punto inicial como para el de destino.

Para ello existe la variable del sistema $SINGUL_POS[1], que se puede modificar editando los datos de mquina. Encontrar ms informacin sobre $SINGUL_POS[1] en la documentacin independiente [Variables del sistema].

78 de 197

ProgExperteBHR5.2 09.03.01 es

Programacin de movimiento (continuacin)

Posicin extendida (posicin 2) La prolongacin del trayecto A2--A3 corta el punto de la raz de la mueca.

Punto de la raz de la mueca

Aqu, el robot se encuentra en el lmite de su rea de trabajo. La transformacin de retroceso proporciona un ngulo de eje unvoco, pero las pequeas velocidades cartesianas dan lugar a grandes velocidades axiales en los ejes 2 y 3. Singularidad de los ejes de mueca (posicin 5) En este caso, los ejes 4 y 6 se encuentran paralelos. La posicin de estos dos ejes no se puede determinar unvocamente mediante una transformacin de retroceso, ya que hay un nmero indeterminado de posiciones para los ejes A4 y A6 en las que las sumas de los ngulos de eje son idnticas.

ProgExperteBHR5.2 09.03.01 es

79 de 197

Programacin por el experto

Punto de la raz de la mueca

0,01812_ Si el punto de destino de un paso de movimiento PTP est dentro de esta singularidad (--0,01812_ A5 +0,01812_), la unidad de control ofrece las siguientes posibilidades de ayuda: G G El eje 4 se desplaza durante el movimiento PTP a 0 grados (ajuste estndar); El ngulo axial del eje 4 permanece igual tanto para el punto inicial como para el de destino.

Para ello existe la variable del sistema $SINGUL_POS[3], que se puede modificar editando los datos de mquina. Encontrar ms informacin sobre $SINGUL_POS[3] en la documentacin independiente [Variables del sistema]. En casos excepcionales puede que no sea posible alcanzar exactamente un punto fuera de la zona de singularidad con los mismos ngulos de eje que aprendi originalmente.

3.3
3.3.1

Movimientos de trayectoria (movimientos CP = Continuous Path)


Velocidad y aceleracin
Al contrario que en los movimientos PTP, en los movimientos de trayectoria no slo se predefine la posicin de partida y la de destino. Adems, es necesario que la punta de la herramienta del robot se mueva en una trayectoria lineal o circular entre estos puntos. Por ello, las velocidades y aceleraciones que es preciso indicar ya no tienen como referencia los ejes individuales, sino el movimiento del TCP. De este modo, la punta de la herramienta se mueve a una velocidad definida con exactitud.Tab. 4 ofrece una vista general de las variables del sistema que deben programarse, as como de sus unidades.

80 de 197

ProgExperteBHR5.2 09.03.01 es

Programacin de movimiento (continuacin)

Nombre de variable Tipo de Unidad datos $VEL.CP $VEL.ORI1 Velocidades $VEL.ORI2


*1 *1 *2

Funcin Velocidad de trayectoria Velocidad de basculamiento Velocidad de giro Velocidades axiales de los ejes de la mueca Aceleracin de trayectoria Aceleracin de basculamiento Aceleracin de giro Aceleraciones axiales de los ejes de la mueca

REAL REAL REAL INT REAL


*1 *1 *2

m/s _/s _/s % m/s2 _/s2 _/s2 %

$VEL_AXIS[4]--[6] $ACC.CP $ACC.ORI1 Aceleraciones $ACC.ORI2

REAL REAL INT

$ACC_AXIS[4]--[6]
*1 *2

Datos necesarios para $ORI_TYPE = #CONSTANT o #VAR Datos necesarios para $ORI_TYPE = #JOINT Tab. 4 Variables del sistema para velocidades y aceleraciones

Como mnimo, uno de los componentes del movimiento (translacin, basculamiento y giro o eje[4]...[6]) se desplaza en cada instante de la ejecucin del movimiento con aceleracin o velocidad programada. Los componentes no dominantes se adaptan con sincronizacin de las fases. Tambin las velocidades y aceleraciones para los movimientos de trayectoria son ocupados, como ajuste predeterminado, con los valores mximos definidos en los datos de mquina o en $CONFIG.DAT cuando se activa la secuencia de inicializacin del paquete base. Adems, en los movimientos CP se controlan las velocidades y aceleraciones de los ejes y, si se sobrepasan los valores lmites de control definidos en las variables del sistema $ACC_ACT_MA y $VEL_ACT_MA, se dispara una reaccin de parada y se emite un mensaje de fallo. Los lmites de aceleracin de los ejes (acceleration) y velocidad de los ejes (velocity) dependen del tipo de robot y del modo de servicio utilizado. El robot se detiene hasta que se sobrepasa uno de los valores permitidos de velocidad o de aceleracin. Este puede ser el caso, por ejemplo, cuando un movimiento del robot se produce cerca de la singularidad de la mueca (posicin extendida de los ejes de la mueca). Punto de la raz de la mueca La singularidad de la mueca se alcanza cuando los ejes A4 y A6 se encuentran paralelos.

Fig. 28 Singularidad de la mueca

ProgExperteBHR5.2 09.03.01 es

81 de 197

Programacin por el experto

A travs de la variable del sistema $CP_VEL_TYPE se pueden reducir los avances de los ejes, y con ello la aceleracin y la velocidad, para evitar que se alcancen los valores lmites de control (reaccin de parada). Como ajuste predeterminado, la variable se encuentra ocupada con #CONSTANT, es decir, la reduccin no est activa durante el servicio con el programa. Si se desea utilizar esta funcin en el modo de servicio T1, se debe activar la variable #VAR_T1 (en T1 se utilizan valores ms pequeos de velocidad y aceleracin de los ejes). Para todos los modos de servicio, se debe activar la variable #VAR_ALL. En el modo de servicio manual la reduccin siempre se encuentra activa. Con la variable del sistema $CPVELREDMELD, en ambos modos de servicio de test se recibe un mensaje si se reduce la velocidad de trayectoria. Para ello, se debe asignar a la variable de mensaje el valor 1.

3.3.2

Control de la orientacin

Si es necesario modificar la orientacin de la herramienta en el espacio durante un movimiento de trayectoria, el tipo de control de la orientacin se puede ajustar mediante la variable del sistema $ORI_TYPE: El valor de esta variable mantiene su validez hasta que se le asigna un nuevo valor o se reinicia el programa. $ORI_TYPE = #CONSTANT Durante el movimiento de trayectoria, la orientacin se mantiene constante. Para el punto final se ignora la orientacin programada y se utiliza la del punto inicial.

Fig. 29 Sin cambios en la orientacin $ORI_TYPE = #VAR (estndar) Durante el movimiento de trayectoria, la orientacin de la herramienta es modificada ininterrumpidamente desde la posicin inicial hasta la posicin final. Esto se logra girando y haciendo bascular la direccin de avance de la herramienta. As pues, esta opcin se recomienda cuando la direccin de avance de la herramienta tiene especial importancia. Si cerca de una singularidad no se puede mantener la velocidad programada, para el paso de movimiento respectivo debe utilizarse como $ORI_TYPE la opcin #JOINT. El valor #VAR tambin se define durante la inicializacin por medio de BAS(#INITMOV,0).

Fig. 30 Modificacin de la orientacin durante un movimiento lineal

82 de 197

ProgExperteBHR5.2 09.03.01 es

Programacin de movimiento (continuacin)

$ORI_TYPE = #JOINT Durante el movimiento de trayectoria, la orientacin de la herramienta es modificada ininterrumpidamente desde la posicin inicial hasta la posicin final. Ello se logra mediante el desplazamiento lineal del eje axial de la mueca. Esta opcin permite evitar los problemas que se derivan de la singularidad de la mueca, ya que no implica ningn control de orientacin mediante giro o basculacin sobre la direccin de avance de la herramienta. En el momento de planear la trayectoria, es preciso conocer los frames Base y Tool (herramienta) correspondientes al punto inicial y al punto de destino, ya que ambos son necesarios para calcular la posicin de los ejes de la mueca. Si durante la ejecucin cambian los frames Base o Tool, no se debe utilizar ORI_TYPE = #JOINT. A diferencia de lo que ocurre con los tipos de orientacin #Constant y #Var, lo decisivo no es el punto de raz de la mueca (punto de interseccin de los ejes de la mueca), sino el TCP (punto de referencia de la herramienta). En casos excepcionales, puede suceder que algunas posiciones de destino no se puedan alcanzar con el tipo de orientacin #JOINT. Este caso se da cuando, al calcular el punto de destino, se produce un cambio de estado. Un cambio de estado se produce cuando el TCP cambia el rea cuyos lmites se simbolizan mediante el trayecto prolongado de los ejes A2--A3 (vase Fig. 31 y Fig. 32). Por este motivo, el robot se detiene al comienzo de la ejecucin principal y el sistema emite el correspondiente mensaje de fallo en la ventana de mensajes. Seleccione en este caso otro tipos de orientacin (p. ej. #VAR). En las figuras Fig. 31 y Fig. 32 se alcanza un punto en el espacio con las mismas coordenadas cartesianas pero distinto estado. Aqu los ngulos del eje de la mueca son absolutamente idnticos en ambas figuras, pero la orientacin del TCP es diferente.

Estado A de la posicin del robot

Fig. 31 TCP debajo de las rectas A2-A3

ProgExperteBHR5.2 09.03.01 es

83 de 197

Programacin por el experto

Estado B de la posicin del robot

Fig. 32 TCP encima de las rectas A2-A3 Si, dentro de un programa KRL existente, se han efectuado en el nivel de experto asignaciones explcitas (p. ej. $ORI_TYPE=#CONSTANT) stas deben ser adaptadas manualmente. La razn para ello es que, en cada fold de movimiento se efecta automticamente la asignacin respectiva, que sobrescribe la definicin anterior. Durante los movimientos circulares se puede escoger, adems de la orientacin constante (#CONST) y variable (#VAR), entre una orientacin referida al espacio y una orientacin referida a la trayectoria. Para ello se utiliza la variable $CIRC_TYPE. 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 = #BASE Control de orientacin referido al espacio durante el movimiento circular. Este valor tambin se define durante la inicializacin por medio de BAS(#INITMOV,0). Constante + referido al espacio En el control de la orientacin referido al espacio, la orientacin se realiza en relacin al sistema base actual ($BASE). El control de orientacin constante referido al espacio es especialmente adecuado para aplicaciones en donde lo ms importante es el movimiento de trayectoria, es decir, guiar la punta de la herramienta sobre la trayectoria circular. Resulta idneo sobre todo en aplicaciones con una pequea modificacin de la orientacin entre el punto inicial y el de destino, o en aplicaciones con una orientacin exactamente constante en el espacio (vase Fig. 33) durante un movimiento circular (por ejemplo, aplicacin de adhesivo con una boquilla de rotacin simtrica).

84 de 197

ProgExperteBHR5.2 09.03.01 es

Programacin de movimiento (continuacin)

Fig. 33 Control de orientacin constante referido al espacio en los movimientos circulares Variable + referido al espacio Mediante la superposicin de los movimientos de basculamiento y de giro, se ejecuta de nuevo un cambio en la orientacin referida al espacio ($ORI_TYPE=#VAR) entre la posicin de partida y la de destino (vase Fig. 34).

Fig. 34 Control de orientacin variable referido al espacio en los movimientos circulares

ProgExperteBHR5.2 09.03.01 es

85 de 197

Programacin por el experto

$CIRC_TYPE = #PATH Control de orientacin referido a la trayectoria durante el movimiento circular. Constante + referido a la trayectoria En el control de orientacin referido a la trayectoria, el eje longitudinal de la herramienta se mantiene relativo con respecto al plano del crculo y a la tangente del crculo. Esta relacin puede explicarse grficamente utilizando el denominado trpode que acompaa a la trayectoria (vase Fig. 35).

Fig. 35 Control de orientacin constante referido a la trayectoria en los movimientos circulares El trpode que acompaa a la trayectoria se compone del vector tangente a la circunferencia t, del vector de la normal n y del vector de la binormal b. La Fig. 35 sigue sobre el segmento de la circunferencia la orientacin de la herramienta mediante el trpode que acompaa a la trayectoria. Con relacin al trpode que acompaa a la trayectoria, no se produce ningn cambio de orientacin en las posiciones de la herramienta. ste es, entre otros, un requisito importante para la soldadura al arco. En el ejemplo mostrado, la orientacin de la herramienta en relacin al trpode que acompaa a la trayectoria no sufre ningn cambio durante el movimiento desde el punto inicial hacia el punto de destino ($ORI_TYPE=#CONST). Variable + referido a la trayectoria Si se desea una modificacin de la orientacin referida a la trayectoria entre la posicin de partida y la de destino ($ORI_TYPE=#VAR), sta se ejecutar en relacin al trpode que acompaa a la trayectoria, mediante el giro y basculamiento superpuestos (vase Fig. 36). El control de la orientacin en el trpode que acompaa la trayectoria es exactamente igual para los movimientos circulares y los lineales.

86 de 197

ProgExperteBHR5.2 09.03.01 es

Programacin de movimiento (continuacin)

Fig. 36 Control de orientacin variable referido a la trayectoria en los movimientos circulares En la Tab. 5 aparecen de nuevo en una lista los preajustes de las variables del sistema para el control de orientacin durante los movimientos de trayectoria: en el sistema $ORI_TYPE $CIRC_TYPE Tab. 5 #PATH Preajustes de $ORI_TYPE y $CIRC_TYPE #VAR #BASE mediante BAS(#INITMOV,0)

3.3.3

Movimientos lineales
LIN Para un movimiento lineal, la KR C... calcula una recta desde la posicin actual (en el programa, ste es el ltimo punto programado) hasta la posicin que se indic en la instruccin de movimiento. La programacin de un movimiento lineal se efecta utilizando las palabras claves LIN o LIN_REL junto con la indicacin del punto de destino, es decir, igual que en la programacin PTP. Para los movimientos lineales, la posicin de destino se indica de forma cartesiana. Por lo tanto, solamente se admiten los tipos de datos FRAME o POS. En los movimientos lineales, el estado del punto final es igual al del punto inicial. Por este motivo, en un punto de destino correspondiente al tipo de datos POS se ignora la indicacin del estado (status) y del giro (Turn). Por ello, antes de la primera instruccin LIN, tiene que estar programado un movimiento PTP con la indicacin completa de la posicin (indicacin de las coordenadas incluido el estado); por ejemplo, desplazamiento HOME. En el siguiente programa de ejemplo, la ocupacin de las variables de velocidad y aceleracin necesaria para los movimientos de trayectoria, as como la definicin del sistema de coordenadas Tool y Base, se realizan de nuevo por medio de la rutina de inicializacin BAS.SRC.

ProgExperteBHR5.2 09.03.01 es

87 de 197

Programacin por el experto

DEF LIN_BEW () ;--------- Seccin de declaracin --------EXT BAS (BAS_COMMAND: IN, REAL: IN) DECL AXIS HOME ;Variable HOME del tipo AXIS ;---------- Inicializacin --------BAS (#INITMOV, 0) ;inicializacin de las velocidades, ;aceleraciones, $BASE, $TOOL, etc. HOME = {AXIS: A1 0,A2 -90,A3 90,A4 0,A5 0,A6 0} ;------------- Seccin principal-----------PTP HOME ; desplazamiento COI PTP {A5 30} ; Movimiento lineal hacia la posicin indicada, la orientacin ; cambia continuamente a la orientacin destino LIN {X 1030,Y 350,Z 1300,A 160,B 45,C 130} ; Movimiento lineal en el plano Y-Z, S y T se ignoran LIN {POS: Y 0,Z 800,A 0,S 2,T 35} ; Movimiento lineal hacia la posicin indicada, la orientacin ; no cambia $ORI_TYPE=#CONST LIN {FRAME: X 700,Y -300,Z 1000,A 23,B 230,C -90} ; la orientacin sigue sin cambiar LIN {FRAME: Z 1200,A 90,B 0,C 0} ; Movimiento relativo a lo largo del eje X LIN_REL {FRAME: X 300} PTP END HOME

88 de 197

ProgExperteBHR5.2 09.03.01 es

Programacin de movimiento (continuacin)

3.3.4

Movimientos circulares
CIRC Para definir unvocamente una circunferencia o arco de circunferencia en el espacio, se necesitan 3 puntos que sean diferentes entre s y no se encuentren sobre una recta. Al igual que en PTP o en LIN, el punto inicial de un movimiento circular se vuelve a indicar mediante la posicin actual. Por ello, para programar un movimiento circular con las instrucciones CIRC oCIRC_REL, adems del punto de destino debe definirse un punto intermedio. Para calcular la trayectoria de movimiento con la unidad de control, del punto auxiliar solamente se evalan los componentes translatorios (X, Y, Z). La orientacin de la punta de la herramienta cambia continuamente, dependiendo del control de orientacin, desde el punto inicial hasta el punto final, o bien se mantiene constante. Adems de la posicin intermedia y de la posicin de destino, puede programarse un ngulo circular con la opcin CA (ngulo circular). La geometra del arco de circunferencia se sigue especificando mediante el punto inicial, el punto auxiliar y el punto de destino. Sin embargo, la posicin de destino a alcanzar realmente en el arco de circunferencia se especifica mediante el ngulo de circunferencia programado. Eso resulta particularmente til a la hora de reprogramar la posicin de destino (sin modificar la geometra del crculo). El arco de circunferencia a recorrer puede prolongarse o acortarse de acuerdo con el ngulo de circunferencia. La orientacin de destino programada se alcanza en el punto de destino real. Mediante el signo del ngulo circular puede especificarse el sentido de giro, es decir, la direccin en que debe recorrerse el arco de circunferencia (vase Fig. 37): CA > 0_ CA < 0_ en el sentido programado (Punto inicial punto auxiliar punto de destino) en sentido contrario al programado (Punto inicial punto de destino punto auxiliar)

El valor del ngulo circular no est limitado. Una posibilidad especial es la de programar circunferencias completas (> 360_).

CA > 0

CA < 0
Punto de destino real

Punto auxiliar

Punto auxiliar

CA = 235

Punto de destino programado Punto de destino real

CA = --235

Punto de destino programado

Punto inicial

Punto inicial

Fig. 37 Repercusiones de la opcin CA en la instruccin CIRC o CIRC_REL

ProgExperteBHR5.2 09.03.01 es

89 de 197

Programacin por el experto

Las indicaciones relativas correspondientes a la posicin intermedia y a la posicin de destino (CIRC_REL) tienen como referencia, respectivamente, la posicin inicial. Las indicaciones de posicin especficas del eje son, al igual que en los movimientos LIN, inadmisibles. Del mismo modo, $BASE y $TOOL deben estar completamente asignados antes de la ejecucin de un movimiento circular. DEF CIRC_BEW ( )

;--------- Seccin de declaracin --------EXT BAS (BAS_COMMAND :IN,REAL :IN ) DECL AXIS HOME ;---------- Inicializacin --------BAS (#INITMOV,0 ) ;Inicializacin de velocidades, ;aceleraciones, $BASE, $TOOL, etc. HOME={AXIS: A1 0,A2 -90,A3 90,A4 0,A5 0,A6 0} ;------------- Seccin principal-----------PTP HOME ; desplazamiento COI PTP {POS: X 980,Y -238,Z 718,A 133,B 66,C 146,S 6,T 50} ; control de orientacin variable referido al espacio (preajuste) CIRC {X 925,Y -285,Z 718},{X 867,Y -192,Z 718,A 155,B 75,C 160} ; control de orientacin constante referido al espacio ; punto de destino especificado mediante la indicacin del ngulo $ORI_TYPE=#CONST CIRC {X 982,Y -221,Z 718,A 50,B 60,C 0},{X 1061,Y -118,Z 718, A -162,B 60,C 177}, CA 300.0 ; control de orientacin constante referido a la trayectoria ; punto de destino mediante la indicacin del ngulo (hacia atrs) $CIRC_TYPE=#PATH CIRC {X 867,Y -192,Z 718},{X 982,Y -221,Z 718,A 0}, CA -150 $ORI_TYPE=#VAR LIN {A 100} ; Reorientacin del TCP

; control de orientacin variable referido a la trayectoria CIRC {X 963.08,Y -85.39,Z 718},{X 892.05,Y 67.25,Z 718.01, A 97.34,B 57.07,C 151.11} ; movimiento circular relativo CIRC_REL {X -50,Y 50},{X 0,Y 100} PTP END HOME

90 de 197

ProgExperteBHR5.2 09.03.01 es

Programacin de movimiento (continuacin)

3.4

Procesamiento en avance
Un aspecto crucial del rendimiento en un robot industrial es la rapidez con la que puede realizar sus trabajos. Junto a la dinmica del robot, es de importancia decisiva tambin la eficacia del procesamiento del programa de usuario, que junto a los movimientos, consta tambin de instrucciones aritmticas y de control de los perifricos. Un procesamiento ms rpido del programa puede conseguirse G G mediante la reduccin de la duracin del movimiento y mediante la reduccin del tiempo de parada entre los movimientos.

En el caso de las condiciones lmite preestablecidas, tales como las velocidades y aceleraciones mximas del eje, lo primero se logra mediante el posicionamiento aproximado de los movimientos en un tiempo ptimo. Encontrar ms informacin en el captulo [Programacin de movimiento], apartado [Movimientos con posicionamiento aproximado]. El tiempo de parada entre los movimientos puede reducirse ejecutando las laboriosas instrucciones aritmticas y lgicas entre los pasos de movimiento mientras el robot se mueve, es decir, realizando una ejecucin preliminar (denominada ejecucin en avance). $ADVANCE A travs de la variable del sistema $ADVANCE se puede establecer el nmero mximo de pasos de movimiento que la ejecucin en avance puede anteponer a la ejecucin principal (es decir, al paso de movimiento procesado actualmente). El puntero principal visible en la superficie de operacin durante el procesamiento del programa, muestra siempre el paso de movimiento en ejecucin. Por el contrario, el puntero de ejecucin en avance no es visible, y puede sealar tanto instrucciones completamente ejecutadas por la unidad de control como pasos de movimiento que solamente son preparados por la unidad de control y realizados posteriormente durante la ejecucin principal. (Vase Fig. 38).

Puntero de ejecucin principal

El puntero de ejecucin en avance se encuentra en esta posicin; $ADVANCE = 1

Fig. 38 Puntero de ejecucin principal y puntero de ejecucin en avance En la seccin de programa anterior, el procesamiento en avance est definido en 1 y el puntero de ejecucin principal se encuentra en la lnea 16 (es decir, se ejecuta el movimiento LIN). Un procesamiento en avance de 1 significa que las instrucciones de las lneas 16 a 22 se han llevado a cabo en paralelo con la ejecucin del movimiento y los datos de movimiento para los movimientos PTP en la lnea 24 se estn preparando en ese momento. ProgExperteBHR5.2 09.03.01 es 91 de 197

Programacin por el experto

Para permitir un posicionamiento aproximado, debe estar ajustado, como mnimo, un procesamiento en avance de 1 (el valor estndar de la variable $ADVANCE es 3. El mximo posible de pasos de avance son 5). En un subprograma de interrupcin no es posible el procesamiento en avance. La unidad de control confecciona siempre los programas de interrupcin por lneas, por lo que no es posible un posicionamiento aproximado en ellos. Preajustes de $ADVANCE: en el sistema $ADVANCE 0 mediante BAS (#INITMOV, 0) 3

Parada automtica del procesamiento en avance Las instrucciones y los datos que pueden influir en los dispositivos perifricos (por ej. las instrucciones de entrada/salida) o que se refieren al estado actual del robot generan una Parada del procesamiento en avance (vase Tab. 6). Esto es necesario para asegurar la secuencia correcta en ejecucin y tiempo, de las instrucciones y los movimientos del robot. Instrucciones ANOUT ON ANIN ON DIGIN ON PULSE HALT CREAD SREAD Instrucciones en combinacin i con una interrupcin WAIT CWRITE SWRITE COPEN CCLOSE ANOUT OFF ANIN OFF DIGIN OFF

Combinaciones CP-PTP sin posicionamiento aproximado END (en caso de que en el mdulo se haya definido una interrupcin no global) INTERRUPT DECL (en caso de que la interrupcin ya haya sido declarada) RESUME sin BRAKE Variables del si- $ANOUT[Nr] stema ms utiliutili $DIGIN1 zadas $OUT[Nr] $AXIS_ACT $POS_ACT $AXIS_INC $ANIN[Nr] $DIGIN2 $IN[Nr] $AXIS_BACK $POS_BACK $AXIS_INT $AXIS_FOR $POS_FOR $AXIS_RET $POS_RET $DIGIN6

$POS_ACT_MES $POS_INT

$TORQUE_AXIS $ASYNC_AXIS $TECH[X].MODE, $TECH[X].CLASS en ciertas operaciones $LOAD, $LOAD_A1, $LOAD_A2, $LOAD_A3 (si se trata de un robot de exactitud absoluta con cambio de carga) otras variables del sistema $ALARM_STOP $EM_STOP $ACT_TOOL $OV_PRO $ASYNC_EX_AX _DECOUPLE $AXIS_ACTMOD $EXTSTARTTYP $PAL_MODE $WORKSPACE $INHOME_POS $REVO_NUM $ACT_BASE $IBUS_OFF $ON_PATH $SAFETY_SW $ACT_EX_AX $IBUS_ON

92 de 197

ProgExperteBHR5.2 09.03.01 es

Programacin de movimiento (continuacin)

Variables importadas Otros Tab. 6

todas, con el acceso Si entre pasos de posicionamiento aproximado se efecta un cambio de filtro, se genera una parada del procesamiento en avance.

Instrucciones y variables que activan una parada automtica del procesamiento en avance CONTINUE En los casos de aplicacin en los que es preciso impedir esta parada del procesamiento en avance, inmediatamente antes de la instruccin correspondiente debe programarse la instruccin CONTINUE. La unidad de control contina entonces con el avance. Sin embargo, el efecto se limita a la siguiente lnea de programa (incluyendo lneas en blanco!). Si, por el contrario, usted desea detener el procesamiento en avance en un lugar determinado sin tener que modificar para ello la variable de sistema $ADVANCE, puede servirse de un pequeo truco: simplemente programe en este lugar un tiempo de espera de 0 segundos. La instruccin WAIT activa una parada automtica del procesamiento en avance sin producir ningn otro efecto: WAIT SEC 0 Encontrar ms informacin en el captulo [Control de ejecucin de programa], apartado [Tiempos de espera].

3.5

Movimientos con posicionamiento aproximado

Para aumentar la velocidad puede utilizarse el posicionamiento aproximado en aquellos casos en donde no es necesario posicionar exactamente sobre el punto. El robot acorta el recorrido, tal como muestra la Fig. 39. Contorno de posicionamiento aproximado El contorno de posicionamiento aproximado es generado automticamente por la unidad de control. El programador solamente influye en el comienzo y el final del posicionamiento aproximado. Para el clculo del paso de posicionamiento aproximado, el control necesita los datos del punto inicial, del punto de posicionamiento aproximado y del punto final.

Para permitir un posicionamiento aproximado, el procesamiento en avance ($ADVANCE) debe estar, como mnimo, en 1. Si el procesamiento en avance es demasiado pequeo, aparece el mensaje No es posible un posicionamiento aproximado y los puntos son alcanzados con exactitud. Si programa una instruccin despus de una instruccin de posicionamiento aproximado que activa una parada automtica del procesamiento en avance, no es posible efectuar un posicionamiento aproximado. Encontrar ms informacin sobre la instruccin TRIGGER (disparo) en el captulo [Trigger - Acciones de conmutacin referentes a la trayectoria].

Posicionamiento aproximado

Punto intermedio

Punto de destino

Punto inicial Fig. 39 Posicionamiento aproximado de los puntos intermedios

ProgExperteBHR5.2 09.03.01 es

93 de 197

Programacin por el experto

3.5.1

Posicionamiento aproximado PTP-PTP


Para el posicionamiento aproximado PTP, la unidad de control calcula las distancias a recorrer axialmente en la zona de aproximacin y planifica para cada eje los perfiles de velocidad para cada eje, que aseguran las transiciones tangenciales de los pasos individuales para asegurar al contorno de posicionamiento aproximado. Comienzo de la aproximacin El posicionamiento aproximado se inicia cuando el ltimo eje (= eje directriz) sobrepasa un ngulo determinado con respecto al punto de posicionamiento aproximado. En los datos de la mquina se ha predefinido un ngulo para cada eje: $APO_DIS_PTP[1] = 90 $APO_DIS_PTP[6] = 90 En el programa puede indicarse, mediante $APO.CPTP, el comienzo del posicionamiento aproximado en forma de porcentaje de estos valores mximos. Por ejemplo: $APO.CPTP = 50 En este caso, el posicionamiento aproximado se inicia cuando el primer eje tiene que recorrer un ngulo residual de 45_ (50% de 90_) hacia el punto de posicionamiento aproximado. As pues, el posicionamiento concluye exactamente cuando el primer eje ha recorrido un ngulo de 45_ desde el punto de posicionamiento aproximado.

Cuanto mayor es $APO.CPTP, ms se redondea la trayectoria.


Bsicamente, el posicionamiento aproximado no puede producirse por detrs del centro del paso. En este caso, el sistema se limita automticamente al centro del paso. C_PTP El posicionamiento aproximado de un punto se visualiza en la instruccin PTP indicando la palabra clave C_PTP: PTP PUNTO4 C_PTP Tambin el paso de posicionamiento aproximado PTP se ejecuta en el tiempo ptimo, es decir, mientras se efecta el posicionamiento aproximado, se desplaza siempre como mnimo, un eje con el valor lmite programado para la aceleracin o velocidad. Simultneamente, se asegura para cada eje que no se superan los momentos admitidos para los engranajes reductores y motores. El perfil de marcha ms elevado ajustado de forma estndar, garantiza un control de los movimientos invariante en velocidad y en aceleracin. Encontrar ms informacin en el captulo [Programacin de movimiento], apartado [Perfil de marcha ms elevado]. En el ejemplo siguiente puede verse el efecto de la instruccin de posicionamiento aproximado y de la variable $APO.CPTP. La trayectoria recorrida est representada en la Fig. 40 en los planos x--y. En ella puede observarse, en particular, que en los movimientos PTP el TCP no se desplaza sobre una recta entre los puntos de destino.

94 de 197

ProgExperteBHR5.2 09.03.01 es

Programacin de movimiento (continuacin)

DEF

UEBERPTP ( )

;--------- Seccin de declaracin --------EXT BAS (BAS_COMMAND :IN,REAL :IN ) DECL AXIS HOME ;---------- Inicializacin --------BAS (#INITMOV,0 ) ;Inicializacin de velocidades, ;aceleraciones, $BASE, $TOOL, etc. HOME={AXIS: A1 0,A2 -90,A3 90,A4 0,A5 0,A6 0} ;------------- Seccin principal-----------PTP HOME ; desplazamiento COI PTP {POS:X 1159.08,Y -232.06,Z 716.38,A 171.85,B 67.32,C 162.65,S 2,T 10} ;Posicionamiento aproximado del punto PTP {POS:X 1246.93,Y -98.86,Z 715,A 125.1,B 56.75,C 111.66,S 2,T 10} C_PTP PTP {POS:X 1109.41,Y -0.51,Z 715,A 95.44,B 73.45,C 70.95,S 2,T 10} ;Posicionamiento aproximado de dos puntos $APO.CPTP=20 PTP {POS:X 1296.61,Y 133.41,Z 715,A 150.32,B 55.07,C 130.23,S 2,T 11} C_PTP PTP {POS:X 988.45,Y 238.53,Z 715,A 114.65,B 50.46,C 84.62,S 2,T 11} C_PTP PTP {POS:X 1209.5,Y 381.09,Z 715,A -141.91,B 82.41,C -159.41,S 2,T 11} PTP END HOME

x=1296,61 y=133,41 x=1246,93 y=-98,86 x=1209,5 y=381,09

x=1159,08 y=-232,06 x=1109,41 y=-0,51

x=988,45 y=238,53

Fig. 40 Ejemplo para el posicionamiento aproximado PTP-PTP ProgExperteBHR5.2 09.03.01 es 95 de 197

Programacin por el experto

Por lo general, la trayectoria de un movimiento PTP no es una recta ni est en un plano en el espacio, por lo que, estrictamente, no se puede representar como en la Fig. 40. A pesar del hecho de que el valor z es igual en todos los puntos del ejemplo, no todos los puntos de la trayectoria de movimiento estn en el plano z=715 mm. Por lo tanto, la trayectoria reflejada es nicamente una proyeccin de la trayectoria real en el plano x--y.

3.5.2

Posicionamiento aproximado LIN-LIN


Para el movimiento continuo a lo largo de trayectorias complejas, existe el requisito de efectuar el posicionamiento aproximado tambin entre pasos individuales lineales. Los diferentes movimientos de orientacin en los pasos LIN, deben pasar gradualmente unos dentro de otros. Como contorno de posicionamiento aproximado, la unidad de control calcula una trayectoria parablica, dado que esta forma de contorno se aproxima muy bien al recorrido de la trayectoria de los pasos individuales con el mejor aprovechamiento de las reservas de aceleracin en la zona de aproximacin. Para especificar el comienzo del posicionamiento aproximado existen tres variables predefinidas: Variable Tipo de datos REAL REAL INT Unidad Significado Palabra clave en la instruccin C_DIS C_ORI C_VEL

$APO.CDIS $APO.CORI $APO.CVEL

mm _ %

Criterio de distancia de translacin Criterio de orientacin Criterio de velocidad

Tab. 7

Variables del sistema para la especificacin del comienzo del posicionamiento aproximado

Criterio de distancia A la variable $APO.CDIS se le puede asignar una distancia translatoria. Si el posicionamiento aproximado se activa por medio de esta variable, la unidad de control abandona el contorno individual cuando la distancia hasta el punto de destino es inferior al valor mnimo de $APO.CDIS. Criterio de orientacin A la variable $APO.CORI se le puede asignar una distancia de orientacin. En este caso, el contorno individual se abandona cuando el ngulo de orientacin dominante (basculamiento o giro del eje longitudinal de la herramienta) queda por debajo de la distancia hasta el punto de posicionamiento aproximado programado especificada en $APO.CORI. Criterio de velocidad A la variable $APO.CVEL se le puede asignar un valor porcentual. Este valor indica cul es el porcentaje de la velocidad programada ($VEL) que debe dar inicio a la operacin de posicionamiento aproximado en la fase de frenado del paso individual. Para ello, se evala cada componente de translacin, basculamiento y giro que se alcanza mediante el movimiento del valor de velocidad programado, o el que ms se le aproxime. Cuanto mayores son los valores en $APO.CDIS, $APO.CORI o $APO.CVEL, antes comienza el posicionamiento aproximado. En determinadas condiciones, dentro del sistema puede acortarse el posicionamiento aproximado (centro del paso, criterio de simetra), pero nunca agrandarse. C_DIS, C_ORI, C_VEL El posicionamiento aproximado se activa agregando la palabra clave C_DIS, C_ORI o C_VEL a la instruccin LIN o LIN_REL. 96 de 197 ProgExperteBHR5.2 09.03.01 es

Programacin de movimiento (continuacin)

Para hacer ms clara esta idea, se ofrece el siguiente ejemplo, vinculado a la Fig. 41: DEF UEBERLIN ( )

;--------- Seccin de declaracin --------EXT BAS (BAS_COMMAND :IN,REAL :IN ) DECL AXIS HOME ;---------- Inicializacin --------BAS (#INITMOV,0 ) ;Inicializacin de velocidades, ;aceleraciones, $BASE, $TOOL, etc. HOME={AXIS: A1 0,A2 -90,A3 90,A4 0,A5 0,A6 0} ;------------- Seccin principal-----------PTP HOME ; desplazamiento COI PTP {POS: X 1159,08,Y -232,06,Z 716,38,A 171,85,B 67,32,C 162,65,S 2,T 10} ;posicionamiento aproximado del punto segn el criterio de distancia $APO.CDIS=20 LIN {X 1246.93,Y -98.86,Z 715,A 125.1,B 56.75,C 111.66} C_DIS LIN {X 1109,41,Y -0,51,Z 715,A 95,44,B 73,45,C 70,95} ;posicionamiento aproximado de dos puntos LIN {X 1296.61,Y 133.41,Z 714.99,A 150.32,B 55.07,C 130.23} C_ORI LIN {X 988.45,Y 238.53,Z 714.99,A 114.65,B 50.46,C 84.62} C_VEL LIN PTP END {X 1209,5,Y 381,09,Z 715,A -141,91,B 82,41,C -159,41} HOME

x=1296,61 y=133,41 x=1246,93 y=-98,86 x=1209,5 y=381,09

x=1159,08 y=-232,06 x=1109,41 y=-0,51

x=988,45 y=238,53

Fig. 41 Ejemplo para el posicionamiento aproximado LIN-LIN ProgExperteBHR5.2 09.03.01 es 97 de 197

Programacin por el experto

La posicin en la cual el contorno de posicionamiento aproximado desemboca en el paso de movimiento LIN subsiguiente es calculada automticamente por la unidad de control. En el caso de que $ACC y $VEL sean idnticos para ambos pasos individuales y las longitudes de los pasos sean suficientes grandes, la parbola de aproximacin es simtrica a la bisectriz entre los dos pasos individuales. En pasos individuales cortos se limita el comienzo de la zona de aproximacin a la mitad de la longitud del paso. La velocidad se reduce para ello de forma tal, que pueda mantenerse siempre un posicionamiento exacto en el punto siguiente. Las transiciones entre los pasos individuales y el contorno de posicionamiento aproximado son permanentes y son tangenciales. Esto garantiza una transicin suave y una proteccin de la mecnica, ya que los componentes de velocidad son siempre constantes. El contorno generado por la unidad de control en la zona de aproximacin depende de las modificaciones del override, que se admiten para cada instante del movimiento.

3.5.3

Posicionamiento aproximado CIRC-CIRC y posicionamiento aproximado CIRC-LIN


La tarea de posicionamiento aproximado entre los pasos CIRC y otros pasos CP (LIN o CIRC) es casi idntica al posicionamiento aproximado entre dos pasos LIN. Tanto el movimiento de orientacin como el translatorio deben pasar sin saltos de velocidad de uno a otro contorno de paso individual. El comienzo del posicionamiento aproximado se vuelve a definir mediante las variables $APO.CDIS, $APO.CORI o $APO.CVEL, cuya evaluacin se ejecuta de forma idntica a los pasos LIN. El ajuste del criterio de posicionamiento aproximado deseado se efecta asimismo mediante las palabras clave C_DIS, C_ORI o C_VEL. Encontrar ms informacin en el captulo [Programacin de movimiento], apartado [Posicionamiento aproximado LIN-LIN]. A continuacin, el posicionamiento aproximado CIRC--CIRC se explica de nuevo a travs de un ejemplo y de la trayectoria de movimiento representada por la figura:

98 de 197

ProgExperteBHR5.2 09.03.01 es

Programacin de movimiento (continuacin)

DEF UEBERCIR ( );--------- Seccin de declaraciones --------EXT BAS (BAS_COMMAND :IN,REAL :IN ) DECL AXIS HOME;---------- Inicializacin --------BAS (#INITMOV,0 ) ;Inicializacin de velocidades, ;aceleraciones, $BASE, $TOOL, etc. HOME={AXIS: A1 0,A2 -90,A3 90,A4 0,A5 0,A6 0};------------- Seccin principal -----------PTP HOME ; desplazamiento COI PTP {POS: X 980,Y -238,Z 718,A 133,B 66,C 146,S 6,T 50} ; control de orientacin variable referido al espacio ; posicionamiento aproximado segn el criterio de distancia $APO.CDIS=20 CIRC {X 925,Y -285,Z 718},{X 867,Y -192,Z 718,A 155,B 75,C 160} C_DIS ; control de orientacin constante referido al espacio ; punto de destino especificado mediante la indicacin del ngulo ; no es posible el posicionamiento aproximado debido a la parada del procesamiento en avance mediante $OUT $ORI_TYPE=#CONST CIRC {X 982,Y -221,Z 718,A 50,B 60,C 0},{X 1061,Y -118,Z 718,A -162,B 60,C 177}, CA 150 C_ORI $OUT[3]=TRUE ; control de orientacin variable referido a la trayectoria ; posicionamiento aproximado segn el criterio de orientacin $ORI_TYPE=#VAR $CIRC_TYPE=#PATH CIRC {X 963.08,Y -85.39,Z 718},{X 892.05,Y 67.25,Z 718.01,A 97.34,B 57.07,C 151.11} C_ORI

; movimientos circulares relativos ; posicionamiento aproximado segn el criterio de velocidad $APO.CVEL=50 CIRC_REL {X -50,Y 50},{X 0,Y 100} C_VEL ; posicionamiento aproximado segn el criterio de distancia $APO.CDIS=40 CIRC_REL {X -50,Y 50},{X 0,Y 100} C_DIS CIRC_REL {X -50,Y 50},{X 0,Y 100} PTP END HOME

ProgExperteBHR5.2 09.03.01 es

99 de 197

Programacin por el experto

x=980 y=-238

150_

y=100

y=100

y=100 x=867 y=-192

Fig. 42 Ejemplo para el posicionamiento aproximado CIRC-CIRC Por lo general, el requisito de las transiciones tangenciales impide calcular durante el posicionamiento aproximado con pasos CIRC los contornos de posicionamiento aproximado simtricos. La trayectoria de posicionamiento aproximado consta por lo tanto de dos segmentos parablicos que se funden tangencialmente uno con otro y desembocan simultneamente, y de forma tangencial, en los pasos individuales.

Aproximacin LIN--CIRC
Final del posicionamiento aproximado Comienzo del posicionamiento aproximado

Fig. 43 Contorno de posicionamiento aproximado en los pasos LIN-CIRC Como norma general, durante el posicionamiento aproximado CIRC la interpolacin tiene como referencia el espacio. La orientacin de partida es siempre la orientacin que se alcanz en el punto de posicionamiento aproximado. Si se ejecutan dos pasos de posicionamiento aproximado con orientacin referida a la trayectoria, a pesar de ello, la reorientacin en la zona de aproximacin se comporta con referencia al espacio.

100 de 197

ProgExperteBHR5.2 09.03.01 es

Programacin de movimiento (continuacin)

3.5.4

Posicionamiento aproximado PTP - trayectoria


Existe la posibilidad, de efectuar posicionamientos aproximados entre pasos de movimiento PTP especficos del eje y de trayectoria cartesiana. El movimiento PTP ofrece las siguientes posibilidades: G G Bsicamente es ms rpido que en el mismo caso cartesiano, especialmente en la proximidad de posiciones singulares. Al contrario que la interpolacin cartesiana, permite un cambio de configuracin, por ejemplo, una transicin desde el rea de base al rea por encima de la cabeza o un basculamiento con la posicin extendida de la mueca.

La trayectoria exacta de un movimiento PTP no puede ser determinada con antelacin, dado que el robot efecta para l, el recorrido ms rpido. Aqu la trayectoria est sujeta a la ligera influencia de diversos factores (por ej. la velocidad de desplazamiento). Sin embargo, las ventajas de la interpolacin especfica del eje slo pueden aprovecharse totalmente cuando se tiene la posibilidad de una transicin continua entre pasos especficos del eje y cartesianos, ya que durante una parada exacta, se pierde en gran parte el tiempo ganado. La programacin de la aproximacin PTP -- trayectoria, se efecta de forma totalmente anloga al procedimiento presentado hasta ahora. La zona de aproximacin se especifica del modo siguiente: Posicionamiento aproximado PTP trayectoria El comienzo del posicionamiento aproximado se determina con el criterio PTP $APO.CPTP mediante el procedimiento habitual. Para el siguiente paso de movimiento de trayectoria, puede indicarse explcitamente un criterio de posicionamiento aproximado (C_DIS, C_ORI, C_VEL) que especifica la entrada en el paso CP. Esto se produce mediante la secuencia de instruccin: PTP PUNTO1 C_PTP C_DIS LIN PUNTO2 Si en el paso PTP falta una indicacin para el criterio de posicionamiento aproximado deseado en el paso CP, se utilizar C_DIS como valor predeterminado para establecer la entrada en el paso CP. El contorno de un posicionamiento aproximado PTP -- trayectoria o trayectoria PTP es un movimiento PTP. Por lo tanto, no se puede determinar con exactitud la trayectoria de posicionamiento aproximado. Si se necesita una trayectoria exacta, por ej. un movimiento CP paralelo a la mesa, es necesario observar precauciones al abandonar esta trayectoria con la combinacin CP--PTP durante el posicionamiento aproximado. Lo mismo vale para un movimiento PTP--CP para acceder a esa trayectoria. P3 Programa: ... CP--PTP LIN P1 LIN P2 C_DIS PTP P3 P1 P2 ... Aqu aparece el problema que el movimiento de posicionamiento aproximado no puede predecirse. Es posible que pueda existir una colisin con la mesa.

Mesa

ProgExperteBHR5.2 09.03.01 es

101 de 197

Programacin por el experto

Para resolver el problema planteado ms arriba y evitar una parada exacta, debe agregarse otro movimiento CP (P2_INTERM). Programa: ... LIN P1 LIN P2 C_DIS LIN P2_INTERM C_DIS PTP P3 ... Posicionamiento aproximado trayectoria P1

CP--CP--PTP

P3 P2_INTERM

P2

Mesa PTP

Para el paso CP se utiliza el criterio de posicionamiento aproximado programado, para el paso PTP se recurre a $APO.CPTP. Por lo tanto, una secuencia de instruccin podra tener el aspecto siguiente: CIRC AUX PUNTO1 C_VEL PTP PUNTO2 Sin embargo, el posicionamiento aproximado CP--PTP solamente puede garantizarse cuando ninguno de los ejes del robot en el paso de trayectoria gira ms de 180_ y el estado S no cambia, ya que estas modificaciones de posicin no son previsibles durante la planificacin del contorno de posicionamiento aproximado. Si se produce un cambio de configuracin de este tipo en el paso de trayectoria antes de la aproximacin (modificacin de S o T), el paso de trayectoria se recorre hasta el final como un paso individual para el punto final programado, y se emite el mensaje de fallo confirmable Progr. aproximacin CP/PTP no ejecutable. El usuario debe descomponer entonces el paso CP en varios pasos individuales, de forma que el paso individual previo al posicionamiento aproximado CP--PTP sea lo suficientemente corto como para poder excluir un cambio de S o de T en todos los ejes del robot. Encontrar ms informacin en el captulo [Programacin de movimiento], apartado [Instrucciones de movimiento]. En el ejemplo siguiente se ha programado un posicionamiento aproximado PTP--LIN, un posicionamiento aproximado LIN--CIRC y un posicionamiento aproximado CIRC--PTP.

102 de 197

ProgExperteBHR5.2 09.03.01 es

Programacin de movimiento (continuacin)

DEF

UEBERB_P ( )

;--------- Seccin de declaracin --------EXT BAS (BAS_COMMAND :IN,REAL :IN ) DECL AXIS HOME ;---------- Inicializacin --------BAS (#INITMOV,0 ) ;Inicializacin de velocidades, ;aceleraciones, $BASE, $TOOL, etc. HOME={AXIS: A1 0,A2 -90,A3 90,A4 0,A5 0,A6 0} ;------------- Seccin principal-----------PTP HOME ; desplazamiento COI PTP {POS: X 1281,55,Y -250,02,Z 716,A 79,11,B 68,13,C 79,73,S 6,T 50} PTP {POS: X 1209.74,Y -153.44,Z 716,A 79.11,B 68.13,C 79.73,S 6,T 50} C_PTP C_ORI LIN {X 1037,81,Y -117,83,Z 716,A 79,11,B 68,13,C 79,73} $APO.CDIS=25 LIN {X 1183.15,Y -52.64,Z 716,A 79.11,B 68.13,C 79.73} C_DIS CIRC {POS: X 1134,Y 53.63,Z 716},{X 1019.21,Y 124.02,Z 716,A 79.11,B 68.12,C 79.73} CIRC {POS: X 1087.47,Y 218.67,Z 716},{X 1108.78,Y 267.16,Z 716,A 79.11,B 68.12,C 79.73} C_ORI PTP {POS: X 1019,31,Y 306,71,Z 716,A 80,8,B 68,C 81,74,S 6,T 59} PTP END HOME CIRC (C_ORI) PTP CIRC LIN (C_DIS) PTP x (_PTP C_ORI)
x=1281,55 y=-250,02

LIN

x=1209,74 y=-153,44 x=1183,15 y=-52,64

x=1108,78 y=267,16 x=1087,47 y=218,67

x=1134 y=53,63

HP

HP

x=1019,31 y=306,71

x=1019,21 y=124,02

x=1037,81 y=-117,83

Fig. 44 Aproximacin PTP-trayectoria y aproximacin trayectoria-trayectoria

ProgExperteBHR5.2 09.03.01 es

103 de 197

Programacin por el experto

3.5.5

Cambio de herramienta durante el posicionamiento aproximado


Esta funcionalidad se encuentra disponible para todas las combinaciones de pasos individuales de PTP, LIN y CIRC. Se puede cambiar una herramienta de forma virtual incluso durante el posicionamiento aproximado. Es decir, una herramienta es aprendida dos veces de forma diferente: p. ej. en una pistola de aplicacin la distancia con respecto a la pieza es en TOOL1 5 cm y en TOOL2 10 cm. Ejemplo En este ejemplo, al principio del movimiento de posicionamiento aproximado de P1 a P2, la herramienta TOOL_DATA1[1] debe ser sustituida por TOOL_DATA[2]. $TOOL=TOOL_DATA[1] PTP P0_TOOL1; el punto es programado con la herramienta TOOL_DATA[1] LIN P1_TOOL1 C_DIS; el punto es programado con la herramienta TOOL_DATA[1] $TOOL=TOOL_DATA[2] LIN P2_TOOL2; el punto es programado con la herramienta TOOL_DATA[2]

Brida TOOL1 Comienzo aproximacin 1 P0_TOOL1 TOOL2 P1_TOOL1 TOOL1

TOOL2

P2_TOOL2 Fin aproximacin 2

P0_TOOL2

P1_TOOL2 Comienzo aproximacin 2

En este ejemplo, el cambio de herramienta se produce durante el posicionamiento aproximado: al entrar en el paso intermedio, la posicin cartesiana salta de Comienzo aproximacin1 a Comienzo aproximacin2; tanto los ngulos de los ejes como la posicin cartesiana y la velocidad de la brida son guiadas constantemente durante todo el movimiento. El salto en la posicin cartesiana del TCP se descompone durante el movimiento desde Fin aproximacin2 hacia P2_TOOL2, de modo que la trayectoria no discurre sobre la unin lineal espacial de P1_TOOL1 a P2_TOOL2, sino sobre una parte de la trayectoria programada con parada exacta para TOOL2.

104 de 197

ProgExperteBHR5.2 09.03.01 es

Programacin de movimiento (continuacin)

3.6

Programacin por aprendizaje de los puntos


La integracin del procedimiento de aprendizaje es una caracterstica de calidad fundamental de un lenguaje de programacin de robot. Signo ! Para ello, en KRL solamente es necesario programar un signo ! como posicionador para las coordenadas que posteriormente se desean programar por aprendizaje: PTP ! LIN ! C_DIS CIRC ! ,CA 135.0 Luego, en la unidad de control, se pueden introducir en el programa las coordenadas correspondientes mediante la tecla del softkey Touch Up despus de pulsar la tecla del softkey Modificar. Las coordenadas actuales se escriben directamente en la estructura seleccionada del archivo SRC, por ejemplo: PTP {POS:X 145.25,Y 42.46,Z 200.5,A -35.56,B 0.0,C 176.87,S 2, T 2} LIN {X -23.55,Y 0.0,Z 713.56,A 0.0,B 34.55,C -90.0} C_DIS CIRC {X -56.5,Y -34.5,Z 45.56,A 35.3,B 0.0,C 90.0},{X 3.5,Y 20.30, Z 45.56,A 0.0,B 0.0,C 0.0}, CA 135.0

Al programar por aprendizaje las coordenadas cartesianas, siempre se toma como sistema de referencia el sistema de coordenadas base ($BASE) que en ese momento es vlido en el sistema. Por ello, debe asegurarse de que durante la programacin por aprendizaje est siempre declarado el sistema de coordenadas base necesario para el movimiento posterior.
La KR C1 permite otra variante ms de programacin por aprendizaje: programe usted una instruccin de movimiento con una variable que NO declare en la seccin de declaraciones, por ejemplo: PTP PUNTO_ARR Despus de pulsar las teclas de softkey programable Modificar y Var, se le pedir que seleccione la estructura deseada. Cuando lo haya hecho, en la lista de datos correspondiente se declarar automticamente una variable PUNTO_ARR y esta variable ser ocupada con las coordenadas reales actuales referentes al $BASE actual, por ejemplo: DECL FRAME PUNTO_ARR={X 15.2,Y 2.46,Z 20.5,A -35.5,B 9.0,C 16.87} Si no se ha declarado la lista de datos, aparece el correspondiente mensaje de fallo. Encontrar ms informacin sobre el tema Listas de datos en el captulo [Listas de datos]. Si ha creado una instruccin de movimiento a travs de los formularios inline puede utilizar tambin, posteriormente, los puntos programados por aprendizaje a travs del formulario, en una instruccin de movimiento KRL: Los puntos se almacenan en la lista de datos correspondiente con los nombres indicados en el formulario y una X delante (por ello, para los nombres de puntos en los formularios inline se admiten como mximo 11 caracteres en lugar de 12). Puede acceder al punto P7 en el formulario inline es decir, posteriormente como XP7 en una instruccin KRL: LIN XP7 Tambin aqu debe tenerse en cuenta que en ambos casos tiene que utilizarse el mismo sistema de coordenadas base para que se produzca el desplazamiento hasta el mismo punto. ProgExperteBHR5.2 09.03.01 es 105 de 197

Programacin por el experto

106 de 197

ProgExperteBHR5.2 09.03.01 es

Control de ejecucin del programa

4
4.1
4.1.1

Control de ejecucin del programa


Ramificaciones de programa
Instrucciones de salto
La forma ms simple de la ramificacin de programa la constituye la denominada instruccin de salto incondicional. Esta puede, sin reflejar ninguna condicin determinada, ser ejecutada en todo caso. A travs de la instruccin GOTO MARCA el puntero del programa salta a la posicin MARCA. Pero la posicin deber estar definida imprescindiblemente con MARCA: en alguna parte del programa. La instruccin de salto propiamente dicha no permite deducciones acerca de la estructura de programa generada. Por consiguiente, se deber elegir un nombre de marca de salto de modo que la accin de salto ligada a ella, sea ms comprensible. Por ej. es una diferencia notable si se escribe GOTO MARCA_1 o GOTO STOP_PEGAM La instruccin GOTO conduce rpidamente a programas no estructurados sin una buena visin global, dado que adems cualquier instruccin GOTO puede ser sustituida por cualquier otra instruccin de bucle, deber, en lo posible, evitarse la utilizacin de GOTO. Un ejemplo de GOTO se encuentra en este captulo en el apartado [Bucles] bajo Bucles no rechazantes.

4.1.2
IF

Ramificacin condicionada
La instruccin IF permite la formulacin de instrucciones condicionadas ofreciendo dos alternativas para la seleccin. En la forma ms comn la instruccin es la siguiente IF Condicin de ejecucin THEN Instrucciones ELSE Instrucciones ENDIF La condicin de ejecucin es una expresin booleana. Si la condicin de ejecucin ha sido cumplidas, se ejecutar el bloque THEN. En el otro caso, puede ejecutarse el bloque ELSE o se prescide del mismo. Prescindir significa el abandono inmediato de la ramificacin. Se permiten la cantidad de instrucciones que se desee. Estas pueden constar a su vez de otras instrucciones IF. Esto significa que se pueden encajar los bloques IF. Sin embargo, cada instruccin IF debe cerrarse con una instruccin ENDIF propia.

ProgExperteBHR5.2 09.03.01 es

107 de 197

Programacin por el experto

INT A,B IF $IN[10]==FALSE THEN PTP HOME ELSE IF A>B THEN $OUT[1]=TRUE LIN PUNKT1 ENDIF A=A+1 PTP HOME ENDIF

En la secuencia de programa que se presenta al lado, se realiza un desplazamiento a la posicin HOME, si la entrada 10 est puesta en FALSE. Si est activada la entrada 10 y si la variable A es mayor que la variable B, se activa la salida 1 y se produce un desplazamiento al punto 1. Independientemente de A y de B, en caso de que se activa la entrada 10, se aumenta la variable A en 1 y se produce el desplazamiento a la posicin HOME.

4.1.3
SWITCH

Distribuidor

Identificacin de bloque

Si existen ms de 2 alternativas, se puede programar bien con una estructura IF encajada o bien ms confortable utilizar en la programacin el distribuidor SWITCH. La instruccin SWITCH es una instruccin de seleccin para diferentes ramificaciones del programa. Un criterio de seleccin es ocupado antes de la instruccin SWITCH con un valor determinado. Si el valor concuerda con una identificacin de bloque, se procesa la ramificacin de programa correspondiente, saltando el programa, sin tener en consideracin la identificacin de bloque subsiguiente, hasta la instruccin ENDSWITCH. Si no concuerda una identificacin de bloque con el criterio de seleccin, se procesar, en caso de que exista, un bloque DEFAULT (por defecto). En caso contrario se continuara con la instruccin siguiente a partir de la instruccin ENDSWITCH. A una ramificacin de programa es permisible asignar varios identificadores de bloque. Sin embargo, a la inversa, no es recomendable utilizar un identificador de bloque repetidas veces ya que slo es considerada la primera ramificacin con la identificacin correspondiente. Los tipos de datos permitidos del criterio de seleccin son INT, CHAR y ENUM. El tipo de dato del criterio de seleccin deber concordar con la identificacin de bloque. La instruccin de DEFAULT (por defecto) puede faltar, pero slo puede aparecer una sola vez dentro de una instruccin SWITCH. Con una instruccin SWITCH puede llamar p. ej. diferentes subprogramas en dependencia de un nmero de programa. El nmero de programa podra enviarse p. ej. del PLC a las entradas digitales del KR C1. As est disponible como criterio de seleccin en forma de un valor Integer. DEF MAIN() SIGNAL PROG_NR $IN[1] TO $IN[4] ;en la variable INT PROG_NR se transmite por el PLC ;seguidamente el nmero de programa deseado SWITCH PROG_NR CASE 1 ;en caso de PROG_NR=1 PARTE_1() CASE 2 ;en caso de PROG_NR=2 PARTE_2() PARTE_2A() CASE 3,4,5 ;en caso de PROG_NR=3, 4 o 5 $OUT[3]=TRUE PARTE_345() DEFAULT ;en caso de PROG_NR<>1,2,3,4 o 5 ERROR_UP() ENDSWITCH END ProgExperteBHR5.2 09.03.01 es

108 de 197

Control de ejecucin del programa (continuacin)

En forma similar est estructurado el programa CELL (CELL.SRC) estndar en la unidad de control.

4.2

Bucles
La estructura base siguiente para el control del procesamiento del programa son los bucles que contienen una o varias instrucciones de procesamiento repetitivas hasta que se haya cumplido una determinada condicin. Los bucles se diferencian segn la forma de la condicin y posicin donde se produce la interrogacin respecto a su continuacin. El salto desde fuera hacia dentro de un cuerpo de bucle no est permitido siendo rechazado por la unidad de control (mensaje de fallo).

4.2.1

Bucles de conteo
Los bucles de conteo son ejecutados hasta que la variable de conteo sobrepase o quede por debajo de un determinado valor, bien mediante conteo ascendente o descendente. En la KRL se tiene a disposicin una instruccin FOR. Con FOR Contador = Arranque TO Final STEP Ancho de paso Instrucciones ENDFOR

De esta forma se permite, con una buena visin global, programar una determinada cantidad de secuencias. Como valor de Arranque y valor Final del contador deber indicar, respectivamente, una expresin del tipo Integer (entero). Las expresiones son analizadas al principio del bucle. La variable INT Contador (por consiguiente deber estar declarada previamente) es impuesta con el valor de arranque, aumentando o disminuyendo segn el ancho de paso tras cada secuencia del bucle. El ancho de paso no debe ser ni una variable ni tampoco cero. Si se omite la indicacin del ancho de paso, dispondr por defecto el valor estndar 1. Tambin se admiten valores negativos para el ancho de paso. Para cada instruccin FOR debe haber una instruccin ENDFOR. El programa continuar procesndose, despus de la ltima secuencia de bucle, en la primera instruccin detrs de ENDFOR. El valor del contador puede utilizarse tanto dentro como fuera del bucle. Dentro del bucle, este sirve p.ej. de ndice actual para la edicin de los campos. Despus de salir del bucle, el contador adopta el ltimo valor tomado (es decir Final+Ancho de paso). DEF INT INT FOR FOR_PROG() I,J FELD[10,6] En el ejemplo que se muestra a continuacin, se colocan las velocidades de ejes $VEL_AXIS[1]$VEL_AXIS[6] a 100%. Seguidamente se inicializan los componentes de un campo bidimensional con los valores calculados. El resultado se representa en Tab. 8.

I=1 TO 6 $VEL_AXIS[I] = 100 ;Todas las velocidades de ejes al 100% ENDFOR FOR I=1 TO 9 STEP 2 FOR J=6 TO 1 STEP -1 FELD[I,J] = I*2 + J*J FELD[I+1,J] = I*2 + I*J ENDFOR ENDFOR ;I adopta ahora el valor 11, J el valor 0 END ProgExperteBHR5.2 09.03.01 es

109 de 197

Programacin por el experto

Index 1 6 5 J = 4 3 2 1 38 27 18 11 6 3 2 8 7 6 5 4 3
Tab. 8

I = 3 42 31 22 15 10 7 4 24 21 18 15 12 9 5 46 35 26 19 14 11 6 40 35 30 25 20 15 7 50 39 30 23 18 15 8 56 49 42 35 28 21 9 54 43 34 27 22 19 10 72 63 54 45 36 27

Resultado de clculo para el ejemplo 5.2

4.2.2
WHILE

Bucle rechazante
El bucle WHILE interroga al principio de la repeticin sobre una condicin de ejecucin. Se trata de un bucle rechazante, ya que no se ejecuta ni una sola vez si la condicin de ejecucin no es cumplida ya desde el principio. La sintaxis del bucle WHILE es: WHILE Condicin de ejecucin Instrucciones ENDWHILE La condicin de ejecucin es una expresin lgica que puede tratarse tanto de una variable boolena, una llamada de funcin booleana o una combinacin lgica con un resultado booleano. El bloque de instrucciones se ejecuta cuando la condicin lgica ha tomado el valor de TRUE, es decir, que la condicin de ejecucin se ha cumplido. Cuando la condicin lgica tiene el valor FALSE, el programa continua procesndose detrs de la instruccin ENDWHILE. Por consiguiente, deber finalizar cada instruccin WHILE con una instruccin ENDWHILE. DEF WHILE_PR() INT X,W WHILE $IN[4] == TRUE ;Ejecucin mientras que entrada 4 activada PTP PALETA $OUT[2] = TRUE PTP POS_2 $OUT[2] = FALSE PTP HOME ENDWHILE X = 1 W = 1 WHILE W < 5; ;Ejecucin mientras que W sea menor que 5 X = X * W W = W + 1 ENDWHILE ;W ahora es 5 ;X ahora es 1S2S3S4 = 24 W = 100 WHILE W < 100 ;Ejecucin mientras que W sea menor que 100 $OUT[15] = TRUE W = W + 1 ENDWHILE ;El bucle no se ejecuta nunca, W queda 100 END

110 de 197

ProgExperteBHR5.2 09.03.01 es

Control de ejecucin del programa (continuacin)

4.2.3
REPEAT

Bucles no rechazantes
Lo contrario a un bucle WHILE es un bucle REPEAT. Con REPEAT se interroga al final del bucle acerca de la condicin de interrupcin. Por ello un bucle REPEAT realizar, en todo caso, el ciclo completo, incluso cuando se cumpla ya de entrada la condicin de interrupcin desde el principio del bucle. REPEAT Instrucciones UNTIL Condicin de interrupcin La condicin de interrupcin es anloga a la del bucle WHILE, una expresin lgica, una variable booleana, una llamada de funcin booleana o una combinacin lgica con un resultado booleano: DEF REPEAT_P() INT W REPEAT PTP PALETA $OUT[2]=TRUE PTP POS_2 $OUT[2]=FALSE PTP HOME UNTIL $IN[4] == TRUE X = 1 W = 1 REPEAT X = X * W W = W + 1 UNTIL W == 4 W = 100 REPEAT $OUT[15] = TRUE W = W + 1 UNTIL W > 100 ... END

;Ejecucin hasta que se active la entrada 4

;Ejecucin hasta que W sea igual a 4 ;W ahora es 4 ;X ahora es 1S2S3S4 = 24

;Ejecucin hasta que W sea mayor de 100 ;mn. 1 ejecucin de bucle, es decir ;W ahora es 101, la salida 15 se activa

Con WHILE y REPEAT tiene en sus manos una herramienta muy potente para la programacin estructurada, con esta podr sustituir en la mayora de los casos, las instrucciones GOTO. La secuencia de instruccin se puede realizar por ejemplo de una forma ms elegante con REPEAT: GOTO X = 0 G = 0 MARCA: X = X + G G = G + 1 IF G > 100 THEN GOTO LISTO ENDIF GOTO MARCA: LISTO: REPEAT X = 0 G = 0 REPEAT X = X + G G = G + 1 UNTIL G > 100

ProgExperteBHR5.2 09.03.01 es

111 de 197

Programacin por el experto

4.2.4
LOOP

Bucles sinfn
Con la instruccin LOOP se pueden programar bucles sinfn: LOOP Instrucciones ENDLOOP La ejecucin repetida del bloque de instruccin slo se puede finalizar mediante la instruccin EXIT. Informaciones adicionales respecto a la instruccin Exit se encuentran en el prximo apartado.

4.2.5
EXIT

Terminacin anticipada de la ejecucin de bucles


Con la instruccin EXIT puede terminar cualquier bucle prematuramente. Llamando a EXIT dentro de un bloque de instruccin del bucle, se terminan los ciclos de bucles, continuando el programa detrs de la instruccin del final del bucle. Seleccionando adecuadamente las condiciones de cancelacin o de ejecucin, no es necesario en la mayora de las veces, utilizar la instruccin EXIT en bucles WHILE o REPEAT. Para los bucles sinfn, el EXIT es, sin embargo, la nica posibilidad de finalizar la ejecucin del bucle. Respecto a ello vase el ejemplo siguiente: DEF EXIT_PRO() PTP HOME LOOP PTP POS_1 LIN POS_2 IF $IN[1] == TRUE THEN EXIT ENDIF CIRC HELP_1,POS_3 PTP POS_4 ENDLOOP PTP HOME END

;Inicio del bucle sinfn

;Cancelar, cuando entrada 1 activada

;Final del bucle sinfn

112 de 197

ProgExperteBHR5.2 09.03.01 es

Control de ejecucin del programa (continuacin)

4.3
WAIT

Instrucciones de espera
Con la instruccin WAIT puede forzar la detencin del programa hasta que se produzca una situacin determinada. Se hace una diferenciacin entre esperar que se produzca un evento y el establecimiento de temporizaciones de espera.

4.3.1

Espera a un evento
Con la instruccin WAIT FOR Condicin puede detener el procesamiento del programa hasta que se produzca el evento especificado con Condicin: G Si la expresin lgica de Condicin durante la llamada de WAIT ya es TRUE, el procesamiento del programa no ser interrumpido (sin embargo se fuerza una parada del procesamiento en avance). Si la condicin es FALSE, el procesamiento del programa se interrumpir hasta que la expresin tome de nuevo el valor TRUE.

La condicin WAIT FOR puede aplicarse a las variables $IN[], $OUT[], $CYCFLAG[], $TIMER[], $TIMER_FLAG[], $FLAG[] e I[]. El compilador no reconoce si la expresin no es capaz de tomar el valor TRUE debido a una formulacin errnea. En este caso, se detiene indefinidamente el procesamiento del programa debido a que el intrprete del programa espera a una condicin irrealizable. Valores numricos A cada variable se le asigna un nmero. WAIT FOR ... $IN[5] $OUT[5]==FALSE $TIMER-FLAG[5] $FLAG[5]==FALSE $CYCFLAG[5] I[5]==9 Salida en la ventana de mensajes Espera a entrada 5 Espera a no entrada 5 Espera a temporizador_Flag 5 Espera a no flag 5 Espera a marca 5 Espera a contador 5 = = 9 Significado Espera hasta que la entrada 5 tenga valor TRUE Espera hasta que la entrada 5 tenga valor FALSE Espera hasta que el temporizador_Flag 5 tenga valor TRUE Espera hasta que el flag 5 tenga valor FALSE Espera hasta que la marca 5 tenga el valorTRUE Espera hasta que el contador 5 tenga el valor 9

ProgExperteBHR5.2 09.03.01 es

113 de 197

Programacin por el experto

Valores variables En lugar de un nmero se transfiere una variable. Para ello es necesario una declaracin de las variables en la lista de datos (*.dat). Una convencin en el archivo fuente (*.src) fija el valor de la variable. Lista de datos: Archivo fuente: DEFDAT PROG1 ... DECL INT INT_VAR ... DEF PROG1() ... INT_VAR=7 ...

En el ejemplo, a la variable INT_VAR se le asigna el valor 7. WAIT FOR ... $IN[INT_VAR] $OUT[INT_VAR] =FALSE $TIMER[INT_VAR] >=300 $TIMER_FLAG [INT_VAR] $FLAG[INT_VAR] ==FALSE $CYCFLAG[INT_VAR] I[INT_VAR]==9 Salida en la ventana de mensajes Espera a entrada 7 Espera a no entrada 7 Espera a temporizador 7 >= 300 Significado Espera hasta que la entrada 7 tenga valor TRUE Espera hasta que la entrada 7 tenga valor FALSE Espera hasta que el temporizador 7 tenga el valor mnimo de 300ms

Espera a flag de temporiza- Espera hasta que el flag del dor 7 temporizador 7 tenga el valor TRUE Espera a no flag 7 Espera a marca 7 Espera a contador 7 = = 9 Espera hasta que el flag 7 tenga el valor FALSE Espera hasta que la marca 7 tenga el valor TRUE Espera hasta que el contador 7 tenga el valor 9

Tambin es posible un clculo de expresiones. En el ejemplo, se le asign a la variable X el valor 1, a Y el valor 2 y a Z el valor 3. WAIT FOR ... $IN[x+y+z] $CYCLAG[Z-X] ==FALSE Salida en la ventana de mensajes Espera a entrada 6 Espera a no marca 2 Significado Espera hasta que la entrada 6 tenga valor TRUE Espera hasta que la marca 2 tenga el valor FALSE

Devolucin del valor de una funcin

114 de 197

ProgExperteBHR5.2 09.03.01 es

Control de ejecucin del programa (continuacin)

Ejemplo: espera a GHOST_AUS DEF Globals() ... END ;FOLD GHOST_AUS (INT_PARAM:IN) GLOBAL DEFFCT BOOL GHOST_AUS (INT_PARAM:IN) INT INT_PARAM IF $OUT[INT_PARAM] = = TRUE THEN RETURN TRUE ELSE RETURN FALSE ENDIF ENDFCT ;ENDFOLD Textos largos Si a una variable se le ha asignado un texto largo, no se visualiza en pantalla la indicacin del ndice numrico. Condicin de espera Texto largo asignado WAIT FOR ... $IN[5] $OUT[3] $TIMER[8]>150 $FLAG[16]==FALSE $CYCFLAG[4] I[7]==9 MiEntrada5 MiSalida3 MiTemporizador8 MiFlag16 MiCycflag4 MiContador7 Salida en la ventana de mensajes Espera a MiEntrada5 Espera a MiSalida3 Espera a MiTemporizador8 > 150 Espera a no MiFlag16 Espera a MiCycflag4 Espera a MiContador7 == 9

Convencin de seales En una convencin de seales, que consta de varias entradas o salidas, se indica solamente el nombre de la seal. En el ejemplo se han definido las seales EIN_NAME $IN[7] TO $IN[17] y AUS_NAME $OUT[7] TO $OUT[17]. Condicin de espera Salida en la ventana de WAIT FOR ... mensajes EIN_NAME Espera a NAME_EIN Significado Espera a que todas las entradas de la convencin de seales sean TRUE Espera a que todas las salidas de la convencin de seales sean FALSE

AUS_NAME==FALSE

Espera a no NAME_AUS

4.3.2

Tiempos de espera
La instruccin WAIT SEC sirve para programar los tiempos de espera en segundos: WAIT SEC Tiempo Tiempo es una expresin aritmtica REAL, con la que puede indicar la cantidad de segundos que desea que dure la interrupcin del procesamiento del programa. Si el valor es negativo, no se produce la espera. Ejemplos: WAIT SEC 17.542 WAIT SEC TIEMPO*4+1

ProgExperteBHR5.2 09.03.01 es

115 de 197

Programacin por el experto

4.4
HALT

Detener el programa
Si desea interrumpir la ejecucin del programa y detener el procesamiento, deber programar la instruccin HALT Pero la ltima instruccin de movimiento procesada es ejecutada completamente. El procesamiento continua presionando la tecla de arranque. A continuacin se ejecutar la instruccin subsiguiente despus de HALT.

Caso especial: en una rutina de interrupcin, se detendr el procesamiento del programa mediante una instruccin HALT despus de haber ejecutado el procesamiento en avance (vase captulo 7, Tratamiento de interrupciones).
Excepcin: en la programacin de una instruccin BRAKE se para inmediatamente.

4.5

Confirmacin de mensajes
Con la instruccin CONFIRM V_Numero puede confirmar por programa los mensajes confirmables. Despus de realizar la confirmacin con xito, el mensaje especificado con un nmero de gestin V_Numero ya no estar disponible. Despus de suprimir una seal de Stop se emite p. ej. siempre un mensaje confirmable. Antes de continuar el procesamiento del programa, el mensaje debe ser confirmado. El siguiente subprograma reconoce y confirma automticamente este mensaje, en el momento que est seleccionado el modo de servicio correcto (no servicio manual) y el estado que determin la parada haya sido realmente solucionado (dado que un programa de robot no esta listo para funcionar si an est presente un mensaje confirmable, deber procesarse el subprograma en un fichero Submit): DEF AUTO_QUIT() INT M DECL STOPMESS MLD ;Tipo de estructura predefinida para mensajes de Stop IF $STOPMESS AND $EXT THEN ;Verificar mensaje de Stop y comprobar modo de servicio M=MBX_REC($STOPMB_ID,MLD) ;lectura del estado actual en MLD IF M==0 THEN ;Comprobacin, si se puede producir la confirmacin IF ((MLD.GRO==2) AND (MLD.STATE==1)) THEN CONFIRM MLD.CONFNO ;Confirmacin de este mensaje ENDIF ENDIF ENDIF END

CONFIRM

116 de 197

ProgExperteBHR5.2 09.03.01 es

Control de ejecucin del programa (continuacin)

ProgExperteBHR5.2 09.03.01 es

117 de 197

Programacin por el experto

5
5.1

Instrucciones de entrada/salida
Generalidades
La KR C... conoce 1026 entradas y 1024 salidas. En el armario de la unidad de control estndar de KUKA, el usuario dispone, en el conector X11 (mdulo MFC), de las entradas y salidas siguientes: Entradas Salidas Salidas 1 1 17 16 16(carga admisible mx. de 100 mA; 100% simultaneidad) 20(carga admisible mx. de 2 A; 100% simultaneidad)

Opcionalmente, pueden configurarse entradas/salidas adicionales como p. ej. a travs de buses de campo. Las entradas pueden ser ledas, las salidas pueden ser ledas y activadas. Estas son excitadas a travs de las variables de sistema $IN[Nr] o $OUT[Nr]. Las salidas no utilizadas pueden usarse como marcas. Las entradas/salidas del mdulo MFC pueden conmutarse a otras zonas por medio del archivo IOSYS.INI. La unidad de control tipo KR C2 se entrega, de forma estndar, sin E/Ss. Por motivos de seguridad, todas las instrucciones de entrada y de salida, as como los accesos a las variables de sistema para entrada/salida, producen una parada del procesamiento en avance. Los accesos a variables del sistema para entradas/salidas no generan una parada del procesamiento en avance con una predefinicin de la instruccin CONTINUE. Encontrar ms informacin en el captulo [Programacin de movimiento], apartado [Procesamiento en avance].

5.2

Entradas y salidas binarias


Si se excitan entradas y salidas individualmente, se puede hablar de entradas y salidas binarias. Las salidas binarias pueden tomar 2 estados: Low o High (nivel de tensin bajo o alto). Por ello, se tratan estas variables como del tipo BOOL. Por consiguiente, las salidas pueden ser activadas con la variables del sistema $OUT[Nr] = TRUE $OUT[Nr] = FALSE y reseteadas con .

El estado de una entrada $IN[Nr] puede leerse dentro de una variable booleana o bien utilizarse como expresin booleana en las instrucciones de programa, interrupcin o disparo. Encontrar ms informacin en el captulo [Control de ejecucin del programa], captulo [Tratamiento de interrupciones] captulo [Trigger - Acciones de conmutacin referentes a la trayectoria]. Las secuencias de instruccin BOOL CONMUTADOR CONMUTADOR = $IN[6] IF CONMUTADOR == THEN ENDIF y FALSE IF $IN[6] == FALSE THEN ENDIF

tienen, por consiguiente, el mismo significado. 118 de 197 ProgExperteBHR5.2 09.03.01 es

Instrucciones de entrada/salida (continuacin)

SIGNAL En la KR C se pueden adems asignar nombres a cada una de las entradas/salidas. Para ello sirve la declaracin de la seal. Esta deber estar ubicada, como todas las declaraciones, en la parte de declaracin del programa. Es decir que tambin se puede programar: SIGNAL CONMUTADOR $IN[6] IF CONMUTADOR == FALSE THEN ENDIF La variable conmutador es declarada internamente como BOOL. A las entradas y salidas del sistema puede accederse tambin con $IN y $OUT. Sin embargo, las salidas del sistema estn protegidas contra escritura. La entrada 1025 siempre es TRUE, la entrada 1026 siempre es FALSE. Estas entradas son utilizadas p. ej, en los datos de mquinas como variables Dummy. Se permite la multiutilizacin. DEF BINSIG ( ) ;--------- Seccin de declaracin --------EXT BAS (BAS_COMMAND :IN,REAL :IN ) DECL AXIS HOME SIGNAL CANCELAR $IN[16] SIGNAL IZQUIERDA $OUT[13] SIGNAL CENTRO $OUT[14] SIGNAL DERECHA $OUT[15] ;---------- Inicializacin --------BAS (#INITMOV,0 ) ;Inicializacin de velocidades, ;aceleraciones, $BASE, $TOOL, etc. HOME={AXIS: A1 0,A2 -90,A3 90,A4 0,A5 0,A6 0} ;------------- Seccin principal-----------PTP HOME ; desplazamiento COI IZQUIERDA=FALSE CENTRO=TRUE ;en posicin central DERECHA=FALSE WHILE CANCELAR==FALSE ;Cancelar con entrada 16 activa IF $IN[1] AND NOT IZQUIERDA THEN ;Entrada 1 activa PTP {A1 45} IZQUIERDA=TRUE ;en posicin izquierda CENTRO=FALSE DERECHA=FALSE ELSE IF $IN[2] AND NOT CENTRO THEN ;Entrada 2 activa PTP {A1 0} IZQUIERDA=FALSE CENTRO=TRUE ;en posicin central DERECHA=FALSE ELSE IF $IN[3] AND NOT DERECHA THEN ;Entrada 3 activa PTP {A1 -45} IZQUIERDA=FALSE CENTRO=FALSE DERECHA=TRUE ;en posicin derecha ENDIF ENDIF ENDIF ENDWHILE PTP HOME END ProgExperteBHR5.2 09.03.01 es 119 de 197

Programacin por el experto

Mediante la activacin de las entradas 1,2 o 3 el robot puede desplazarse a tres posiciones diferentes. Si el robot ha alcanzado la posicin deseada, se muestra este hecho mediante la activacin de las salidas correspondientes 13, 14 o bien 15. Ya que estas salidas muestran siempre la posicin actual del robot se puede evitar, mediante la consulta IF $IN[1] AND NOT $OUT[13] THEN ENDIF de que el robot intente desplazarse de nuevo a la posicin que ya tiene en cada ciclo de procesamiento del bucle While. El robot se desplaza slo cuando la entrada est activada (instruccin para el desplazamiento hasta la posicin deseada) y la salida correspondiente no est activada (el robot an no est en esa posicin). Con la activacin de la entrada 16 se concluye el bucle While y por consiguiente, el programa.

$IN [Nr] AND NOT $OUT[Nr] $IN[Nr]


Tab. 9

$OUT[Nr] TRUE FALSE FALSE FALSE TRUE FALSE

TRUE FALSE

Tabla de veracidad para una combinacin lgica AND NOT

120 de 197

ProgExperteBHR5.2 09.03.01 es

Instrucciones de entrada/salida (continuacin)

5.3
5.3.1

Entradas y salidas digitales


Declaracin de la seal
Con la declaracin de la seal no slo se puede asignar a determinadas entradas/salidas un nombre, sino que adems, se pueden agrupar varias entradas/salidas binarias a una sola seal digital. Con la declaracin SIGNAL SALI $OUT[10] TO $OUT[20] se puede declarar ahora, p. ej., las salidas 10 hasta 20 a travs de una variable interna declarada como Entera SALI y activada como palabra de 11 bit. La salida digital declarada de este modo, se puede definir para cada asignacin entera posible a la variable SALI, p. ej.: SALI = 35 SALI = B100011 SALI = H23

G Las entradas/salidas debern indicarse en la declaracin de la seal, en orden


ascendente, sin interrupciones.

G Como mximo, se pueden agrupar 32 entradas o salidas a una seal digital. G Una seal puede aparecer en diferentes declaraciones de seales.
Si se agrupan las salidas 13 a 15 del ejemplo mostrado en una variable denominada POSICION, resulta el siguiente programa modificado:

ProgExperteBHR5.2 09.03.01 es

121 de 197

Programacin por el experto

DEF

BINSIG_D ( )

;--------- Seccin de declaracin --------EXT BAS (BAS_COMMAND :IN,REAL :IN ) DECL AXIS HOME SIGNAL CANCELAR $IN[16] SIGNAL POSICION $OUT[13] TO $OUT[15] ;---------- Inicializacin --------BAS (#INITMOV,0 ) ;Inicializacin de velocidades, ;aceleraciones, $BASE, $TOOL, etc. HOME={AXIS: A1 0,A2 -90,A3 90,A4 0,A5 0,A6 0} ;------------- Seccin principal-----------PTP HOME ;desplazamiento COI POSICION=B010 ;en posicin central WHILE CANCELAR==FALSE ;Cancelar con entrada 16 activa IF $IN[1] AND (POSICION<>B001) THEN ;Entrada 1 activa PTP {A1 45} POSICION=B001 ;en posicin izquierda ELSE IF $IN[2] AND (POSICION<>B010) THEN ;Entrada 2 activa PTP {A1 0} POSICION=B010 ;en posicin central ELSE IF $IN[3] AND (POSICION<>B100) THEN;Entrada 3 activa PTP {A1 -45} POSICION=B100 ;en posicin derecha ENDIF ENDIF ENDIF ENDWHILE PTP HOME END Encontrar ms informacin en este mismo captulo, dentro del apartado [Entradas digitales predefinidas].

122 de 197

ProgExperteBHR5.2 09.03.01 es

Instrucciones de entrada/salida (continuacin)

5.3.2

Lectura de nmeros de seal


Las entradas/salidas asignadas a una declaracin de seal pueden ser probadas mediante el resumen de variables o la KRL (programas *.SRC o *.SUB). Resumen de variables Para ello solamente es necesario introducir GET_SIG_INF seguido del nombre de la variable o de la seal. Nombre de variable/nombre de seal

Componentes estructurales

KRL Primero se realiza la declaracin de una variable del tipo de datos SIGINF en la seccin de declaraciones del programa. DECL SIGINF Variable A continuacin, con esta variable se puede leer la declaracin de seal. Variable = GET_SIG_INF(nombre de seal)

Argumento
Variable Nombre de la seal

Tipo de datos
SIGINF CHAR

Significado Una denominacin cualquiera que puede constar de hasta 24 caracteres ASCII Denominacin de la declaracin de seal, compuesta de hasta 24 caracteres ASCII

Tab. 10 Argumentos en la instruccin GET_SIG_INF

ProgExperteBHR5.2 09.03.01 es

123 de 197

Programacin por el experto

Componentes estructurales El tipo de datos SIGINF contiene los siguientes componentes estructurales:

SIGINF
.TYP

Valor #IN #OUT #INV #IN0 #OUT0

Significado La seal est declarada para las entradas La seal est declarada para las salidas La seal no est declarada Reservada para usos futuros

.DTYP

.IDX

Seal de las salidas del sistema ajustada como FALSE #SYSI Seal del sistema correspondiente al tipo de datos Integer (nmero entero) #SYSB Seal del sistema correspondiente al tipo de datos Booleano (estado lgico) #USRI Seal global definida por el usuario correspondiente al tipo de datos Integer #USRB Seal global definida por el usuario correspondiente al tipo de datos Booleano 0 Nmero de seal no vlido o ajustado como FALSE 1 ... 4096 Nmero de seal vlido 0 1 1 ... 32 Longitud de seal no es vlida o est ajustada como FALSE Longitud de seal para el tipo de datos Booleano Longitud de seal para el tipo de datos Integer

.LEN

Tab. 11 Componentes estructurales del tipo de datos SIGINF DEF SIGTEST ( ) DECL SIGINF S_INF CHAR S_NAME[24] S_NAME[] = $EXT_START ... S_INF = GET_SIG_INF($MOVE_ENABLE) IF (S_INF.IDX == 1025) OR (S_INF.IDX == 0) THEN ERROR() ENDIF ... S_INF = GET_SIG_INF(S_NAME[]) IF (S_INF.TYP == #INV) OR (S_INF.IDX == 0) THEN ERROR() ENDIF ... END La consulta de los componentes estructurales IDX es suficiente en la mayora de los casos, ya que una seal no vlida o ajustada como FALSE se detecta inmediatamente. Por el contrario, la informacin detallada la proporciona el componente estructural .LEN. 124 de 197 ProgExperteBHR5.2 09.03.01 es

Instrucciones de entrada/salida (continuacin)

5.3.3

Activar salidas en el punto de destino


En el momento que el robot haya alcanzado el punto de destino de un paso de movimiento, pueden activarse hasta 8 salidas referidas a la ejecucin principal y sin detencin de la ejecucin en avance. Para ello sirve la siguiente instruccin: $OUT_C[salida] = expresin booleana

Argumento
Salida Expresin booleana

Tipo de datos
INT BOOL

Significado
Expresin aritmtica que define el nmero de la salida que se debe activar. Existen las salidas 1 ... 1024 Expresin lgica que indica si la salida correspondiente ser ajustada como TRUE o FALSE

Normalmente se pueden utilizar las salidas 1 ... 1024. Si la variable $SET_IO_SIZE ha sido ajustada correspondientemente, estarn disponibles las salidas 2048 o 4096. Si el puntero de ejecucin en avance alcanza la instruccin, se interpretar primeramente la expresin booleana. La expresin afectada se transformar en una constante. Al alcanzar el puntero de la ejecucin principal, se activan entonces las salidas interpretadas. Una asignacin podra, por ejemplo, tener la siguiente forma: $OUT_C[TOOL[ex]+WELD[y]] = ((NOT(x==100)) AND (SAFE==TRUE)) Despus de efectuada la interpretacin (puntero de ejecucin en avance) la instruccin puede tener internamente, p. ej., la siguiente forma: $OUT_C[5] = TRUE Con ello, al alcanzarse el punto de destino (puntero de ejecucin principal) la salida 5 recibe el valor TRUE. Al alcanzar el puntero de ejecucin principal del programa, la salida es puesta al valor definido por la expresin booleana, vlida en el instante de la interpretacin, an cuando este valor pudo haber sido modificado desde entonces. Una instruccin $OUT_C[x], al contrario que una $OUT[x], no influye sobre el procesamiento en avance. $OUT_C[x] slo puede ser escrita; para leer una salida debe utilizarse $OUT[x]. Una seleccin de pasos borra todas las asignaciones $OUT_C[x] que hasta ese momento han sido interpretadas pero no activadas. Esto es vlido para una seleccin de paso y para un reset del programa.

PTP P1 $OUT_C[10] = TRUE $OUT_C[11]=FALSE $OUT_C[12] = TRUE LIN P2

En las instrucciones PTP, LIN y CIRC absolutas y relativas, la salida se activa inmediatamente despus de la correspondiente instruccin de movimiento.

Si en el punto P1 se produce una parada exacta, en ese momento se activan las salidas 10 ... 12 de acuerdo con su definicin. Si, por el contrario, el punto P1 es alcanzado mediante posicionamiento aproximado, las salidas 10 ... 12 slo se activarn cuando se haya alcanzado el centro de la zona de aproximacin. Si no es posible efectuar un posicionamiento aproximado, las salidas se activan en el punto P1. En los modos de ejecucin de programa Single--Step (MSTEP) e I--Step (ISTEP) primero se efecta en el punto P1 una parada del procesamiento en avance; en este momento las salidas no se activan. Las salidas definidas solamente se activan al soltar y pulsar de nuevo la tecla de arranque. ProgExperteBHR5.2 09.03.01 es 125 de 197

Programacin por el experto

Un desplazamiento COI causa tambin una detencin del procesamiento en avance. Recin despus de un rearranque del programa, se activan las salidas de acuerdo con su definicin. Comparacin con disparo (Trigger) Tanto con $OUT_C[x] como con Trigger (disparo) pueden activarse salidas tomando como referencia la ejecucin principal y sin que haya parada del procesamiento en avance.

$OUT_C[x]: PTP P1 C_PTP $OUT_C[5]=TRUE PTP P2


Trigger: TRIGGER WHEN DISTANCE=1 DELAY=0 DO $OUT[5]=TRUE PTP P1 C_PTP PTP P2 En ambos casos, la salida 5 se activa en cuanto se alcanza el centro de la zona de aproximacin de P1. Puntero de ejecucin principal Si los punteros de procesamiento en avance y de ejecucin principal son idnticos (es decir, el robot no ejecuta actualmente ningn paso de movimiento), la asignacin se efecta inmediatamente al alcanzarse la instruccin $OUT_C[].

PTP P1 WAIT FOR $IN[22]==TRUE $OUT_C[12]=FALSE PTP P2

En el ejemplo, en la lnea WAIT... se crea una parada del procesamiento en avance mientras la entrada 22 se encuentra en FALSE. En cuanto en la entrada 22 aparece el estado TRUE la salida 12 se activa. Seal Una salida tambin puede ser activada mediante una convencin de seal de 1 bit.

SIGNAL Test $OUT_C[7] PTP P1 Test = TRUE PTP P2


En el ejemplo, la salida 7 pasa a TRUE en cuanto el puntero de ejecucin principal ha alcanzado el paso de movimiento P1. En las siguientes condiciones no est permitido $OUT_C[x]: G G G G G 126 de 197 Dentro de programas de interrupcin o declaraciones de interrupcin En un programa Submit En combinacin con $CYCFLAG[x] Dentro de una instruccin de Trigger (disparo) En relacin con la correccin de variables ProgExperteBHR5.2 09.03.01 es

Instrucciones de entrada/salida (continuacin)

5.4

Salidas de impulso
PULSE Con la instruccin PULSE pueden activarse o desactivarse cada una de las salidas durante un tiempo determinado. La instruccin PULSE($OUT[4],TRUE,0.7) pone por ejemplo, a nivel alto, la salida 4 durante 0,7 segundos. Este impulso puede procesarse paralelamente con el programa del robot (durante este proceso no se detiene el intrprete). En vez de la indicacin directa de la salida con $OUT[Nr] puede haber una variable de seal. Encontrar ms informacin en este captulo, dentro del apartado [Entradas y salidas binarias]. Las temporizaciones de impulsos realizables van de 0.012 a 231 segundos. La retcula es de 0.1 segundos. La unidad de control redondea todos los valores a una dcima. G G G G G G Se pueden programar como mx. 16 salidas de impulsos simultneamente. Se pueden programar tanto impulsos High (alto) como impulsos Low (bajo). Con las funciones Resetear programa o Cancelar programa se interrumpe el impulso. Un impulso activado puede ser influenciado mediante interrupciones. Las salidas de impulsos pueden ser programadas tambin desde el nivel de la unidad de control. La instruccin PULSE origina una parada del procesamiento en avance. Slo en la instruccin TRIGGERse ejecuta siguiendo el movimiento.

Un impulso NO es interrumpido con G G G PARADA DE EMERGENCIA, parada de operacin o parada de error, llegar al fin del programa (instruccin END), soltar la tecla de arranque si el impulso fue programado antes de la primera instruccin de movimiento y el robot no ha alcanzado an COI.

En el programa siguiente encontrar algunos ejemplos de utilizacin de la instruccin PULSE:

ProgExperteBHR5.2 09.03.01 es

127 de 197

Programacin por el experto

DEF

PULSIG ( )

;--------- Seccin de declaracin --------EXT BAS (BAS_COMMAND :IN,REAL :IN ) DECL AXIS HOME INT I SIGNAL OTTO $OUT[13] ;---------- Inicializacin --------BAS (#INITMOV,0 ) ;Inicializacin de velocidades, ;aceleraciones, $BASE, $TOOL, etc. HOME={AXIS: A1 0,A2 -90,A3 90,A4 0,A5 0,A6 0} FOR I=1 TO 16 $OUT[I]=FALSE ENDFOR ;puesta de todas las salidas a nivel LOW

;------------- Seccin principal-----------PULSE ($OUT[1],TRUE,2.1) ;El impulso llega directo durante 2.1s PTP HOME ; desplazamiento COI OTTO=TRUE PTP {A3 45,A5 30} PULSE (OTTO,FALSE,1.7) ;poner la salida 13 en TRUE ;Impulso LOW durante 1.7s en salida 13 ;El impulso llega despus del movimiento

WAIT SEC 2 FOR I=1 TO 4 PULSE ($OUT[I],TRUE,1) ;salidas 1-4 en orden consecutivo WAIT SEC 1 ;durante 1s a High ENDFOR ;colocacin de un impulso con referencia a la trayectoria TRIGGER WHEN DISTANCE=0 DELAY=50 DO PULSE ($OUT[8],TRUE,1.8) LIN {X 1391,Y -319,Z 1138,A -33,B -28,C -157} PTP HOME CONTINUE ;Evitar parada de procesamiento en avance para la salida 15 PULSE ($OUT[15],TRUE,3) ;El impulso llega directo (en procesamiento en avance) ;en salida 16 PULSE ($OUT[16],TRUE,3) ;El impulso llega despus del desplazamiento HOME END ;y queda an despus de END

Observe detenidamente estos ejemplos, a partir de que momento estn presentes los impulsos programados en las salidas: generalmente la instruccin PULSE produce siempre una parada del procesamiento en avance. Por tanto, el impulso est presente despus de finalizar el movimiento. Existen dos formas de evitar la parada del procesamiento en avance:

G Programacin de una instruccin CONTINUE justo antes de antes de la instruccin PULSE. G Utilizacin de la instruccin PULSEdentro de una instruccin TRIGGER (accin de
conmutacin referida a la trayectoria).

Encontrar ms informacin en el captulo [Programacin de movimiento], apartado [Procesamiento en avance] (CONTINUE) y captulo [Trigger - Acciones de conmutacin referentes a la trayectoria] (TRIGGER). 128 de 197 ProgExperteBHR5.2 09.03.01 es

Instrucciones de entrada/salida (continuacin)

5.5

Entradas y salidas analgicas


Adems de las entradas y salidas binarias, la KR C... reconoce tambin entradas y salidas analgicas. A travs de los sistemas de bus opcionales, la KR C pone a disposicin 32 entradas analgicas y 32 salidas analgicas. Las salidas pueden ser ledas y escritas mediante las variables de sistema $ANOUT[1] $ANOUT[32], las entradas slo pueden ser ledas con las variables $ANIN[1] $ANIN[32]. ANIN y ANOUT Las entradas y las salidas pueden ser activadas tanto estticamente como dinmicamente, es decir mediante una consulta permanente en el ciclo de interpolacin (actualmente es de 12 ms). Mientras que la lectura y escritura esttica se produce igual que con las seales binarias mediante una simple asignacin de valor, el procesamiento dinmico utiliza instrucciones especiales de ANIN y ANOUT.

5.5.1

Salidas Analgicas
Los valores de emisin para las 32 salidas analgicas de la KR C se encuentran comprendidos entre --1.0 +1.0 y estn normalizados a una tensin de salida de 10.0 V. Si el valor de salida supera la tolerancia de 1.0, el valor es recortado. Para activar un canal analgico, se la asigna simplemente un valor a la variable $ANOUT correspondiente: $ANOUT[2] = 0.5 o REAL V_PEGAM V_PEGAM = -0.9 $ANOUT[15] = V_PEGAM ;el canal analgico 15 se pone a -9 V Estas asignaciones son estticas, ya que el valor del canal excitado cambiar cuando se le haya asignado a la variable de sistema $ANOUT[Nr]correspondiente un nuevo valor explcito. A veces se desea que una salida analgica determinada vaya adquiriendo nuevos valores en un tiempo de ciclo prefijado durante el procesamiento del programa. Esta salida analgica se realiza con la instruccin ANOUT. Con la instruccin ANOUT ON HILO = 0.8 * V_HILO As p. ej. mediante una simple asignacin de valor a la variable V_HILO, puede variar la salida analgica especificada con la variable de seal HILO. La tensin en la salida correspondiente sigue as a la variable V_HILO. Previamente se debe por supuesto declarar la variable HILO, con la declaracin SIGNAL, p. ej.: SIGNAL HILO $ANOUT[2] Con ANOUT OFF HILO finaliza de nuevo la emisin analgica cclica. La expresin actualizada cclica que se ha de indicar para el clculo del valor de emisin analgica, no debe sobrepasar un nivel de complejidad determinado. Por tal motivo, la sintaxis admisible est limitada y orientada a la tecnologa. La sintaxis completa es ;el canal analgico 2 se pone a +5 V

ProgExperteBHR5.2 09.03.01 es

129 de 197

Programacin por el experto

ANOUT ON ANOUT ON Nombre de seal = Factor * Elemento de regulacin Offset DELAY=t MINIMUM=U1 MAXIMUM=U2 para el inicio de la emisin analgica cclica, o bien, ANOUT OFF ANOUT OFF Nombre de seal para la finalizacin. El significado de cada uno de los argumentos se puede ver en Tab. 12.

Argumento
Nombre de la seal Factor Elemento de regulacin Offset T

Tipo de datos
REAL

Significado
Variable de seal que especifica la salida analgica (debe estar declarada con SIGNAL). No se permite la indicacin directa de $ANOUT[Nr]. Cualquier factor pudindose tratar de variable, nombre de seal o constante. A travs del elemento de regulacin se influye la salida analgica. Puede tratarse de una variable o nombre de seal. Opcionalmente puede programarse un offset como elemento de regulacin. El offset debe ser una constante. Con la palabra clave DELAY y una indicacin de tiempo positiva o negativa, se puede optar entre retardar (+) o adelantar (--) una seal de salida calculada cclicamente. La palabra clave MINIMUM define la tensin mnima que aparece en la salida. Los valores permitidos se encuentran entre --1.0 ... 1.0 (que corresponde a --10V ... +10V). El valor mnimo debe ser menor que el valor mximo, siempre que se utilicen ambos valores.

REAL REAL

REAL REAL

U1

REAL

Como valor tambin se permite una variable, una componente de estructura o un elemento de grupo.
U2 REAL La palabra clave MAXIMUM define la tensin mxima que aparece en la salida. Los valores permitidos se encuentran entre --1.0 ... 1.0 (que corresponde a --10V ... +10V). El valor mximo debe ser mayor que el valor mnimo, siempre que se utilicen ambos valores.

Como valor tambin se permite una variable, una componente de estructura o un elemento de grupo.
Tab. 12 Argumentos en la instruccin ANOUT Los parmetros opcionales Minimum y Maximum no estn disponibles en los formularios inline, ya que solamente se utilizan para la tecnologa Aplicacin de pegamentos.

130 de 197

ProgExperteBHR5.2 09.03.01 es

Instrucciones de entrada/salida (continuacin)

En este ejemplo se han definido tanto un valor mnimo (Minimum) como un valor mximo (Maximum). Las definiciones correspondientes se escriben MINIMUM=0.3 y MAXIMUM=0.95. 10 000 Maximum Tensin analgica [mV] 8 000 6 000 4 000 2 000 Uestndar [mV] 0 100 200 300 400 500 Velocidad de trayectoria [mm/s] Uhilo [mV]

Minimum

Fig. 45 Tensin analgica en dependencia de la velocidad de trayectoria

5.5.2

Entradas analgicas
Las 32 entradas analgicas de la KR C pueden leerse en una variable REAL a travs de las variables $ANIN[1] a $ANIN[32] mediante una simple asignacin de valor: REAL PARTE PARTE = $ANIN[3] o SIGNAL SENSOR3 $ANIN[3] REAL PARTE PARTE = SENSOR3 Los valores en $ANIN[Nr] se mueven entre +1.0 y --1.0 que representan una tensin de entrada de +10 V hasta --10 V. ANIN Para la lectura cclica de entradas analgicas se usa la instruccin ANIN. Con ella se puede tomar lectura hasta 3 entradas analgicas simultneamente. La lectura se realiza en el ciclo de interpolacin. Con la secuencia de instrucciones SIGNAL SENSOR3 $ANIN[3] REAL PARTE ANIN ON PARTE = 1 * SENSOR3 puede leer la entrada analgica 3 cclicamente y con la instruccin ANIN OFF SENSOR3 concluir la lectura. Se debe tener en cuenta que, no pueden estar simultneamente activadas ms de 3 instrucciones ANIN ON. Para ambas instrucciones se permite acceder a la misma interfaz analgica o asignar la misma variable.

ProgExperteBHR5.2 09.03.01 es

131 de 197

Programacin por el experto

La sintaxis completa para la lectura cclica de una entrada analgica es la siguiente: ANIN ON ANIN ON Valor = Factor * Nombre de seal Offset La finalizacin del seguimiento cclico la efecta con ANIN OFF ANIN OFF Nombre de seal El significado de los argumentos puede tomarlos de Tab. 13.

Argumento
Valor

Tipo de datos
REAL

Significado
El valor puede ser una variable o un nombre de seal (de salida). En Valor se registra el resultado de la lectura cclica. Variable de seal que especifica la entrada analgica (deber estar declarada con SIGNAL). No se permite la indicacin directa de $ANIN[Nr]. Cualquier factor pudindose tratar de variable, nombre de seal o constante. Opcionalmente puede programarse un offset. El offset puede ser una constante, una variable o un nombre de seal.

Nombre de la seal Factor Offset

REAL

REAL REAL

Tab. 13 Argumentos en la instruccin ANIN En el ejemplo mostrado a continuacin se ilustran las instrucciones para las entradas y salidas analgicas. Con la ayuda de la variable del sistema $TECHIN[1] y un sensor de seguimiento de trayectoria conectado a la entrada analgica, se puede realizar p. ej. una correccin de trayectoria durante el movimiento. La variable $VEL_ACT, que contiene permanentemente la velocidad de trayectoria, puede ir valorada con los factores correspondientes utilizndola para la salida analgica proporcional a la velocidad, p. ej. para controlar la cantidad de pegamento en una aplicacin de adhesivo.

132 de 197

ProgExperteBHR5.2 09.03.01 es

Instrucciones de entrada/salida (continuacin)

DEF

ANSIG ( )

;--------- Seccin de declaracin --------EXT BAS (BAS_COMMAND :IN,REAL :IN ) DECL AXIS HOME INT I SIGNAL ADHESIVO $ANOUT[1] ;Abertura de boquilla para adhesivo SIGNAL CORRECCIN $ANIN[5] ;Sensor de seguimiento de trayectoria ;---------- Inicializacin --------BAS (#INITMOV,0 ) ;Inicializacin de velocidades, ;aceleraciones, $BASE, $TOOL, etc. HOME={AXIS: A1 0,A2 -90,A3 90,A4 0,A5 0,A6 0} FOR I=1 TO 16 $ANOUT[I]=0 ENDFOR ;Poner todas las salidas a 0 V

;------------- Seccin principal-----------PTP HOME ; desplazamiento COI $ANOUT[3] = 0.7 IF $ANIN[1] >= 0 THEN ;Salida analgica 3 a 7V ;Proceso de pegado slo si la entrada ;analgica 1 tiene tensin positiva

PTP POS1 ;Correccin de trayectoria de acuerdo con la seal del sensor ;con la ayuda de las variables del sistema $TECHIN ANIN ON $TECHIN[1] = 1 * CORRECCIN + 0.1 ;salida analgica proporcional a la velocidad; variables de sistema $VEL_ACT contiene la velocidad actual ANOUT ON ADHESIVO = 0.5 * $VEL_ACT + 0.2 DELAY = -0.12 LIN POS2 CIRC POSINTERMED,POS3 ANOUT OFF ADHESIVO ANIN OFF CORRECCIN PTP POS4 ENDIF PTP HOME END

ProgExperteBHR5.2 09.03.01 es

133 de 197

Programacin por el experto

5.6

Entradas digitales predefinidas


La unidad de control ofrece 6 entradas digitales que pueden ser ledas a travs de las variables de seal $DIGIN1$DIGIN6. Las entradas forman parte de las entradas de usuario normales. Pueden tener una longitud de 32 bit con su salida Strobe correspondiente. La configuracin de las entradas digitales se realiza en los datos de mquina: /mada/ steu/$maschine.dat. Con una declaracin de la seal se establece primeramente el rango y el tamao de la entrada digital: SIGNAL $DIGIN3 $IN[1000] TO $IN[1011] Mediante las dems variables de sistema $DIGIN1CODE$DIGIN6CODE, $STROBE1$STROBE6 y $STROBE1LEV$STROBE6LEV se prefijan las interpretaciones del signo, las salidas Strobe correspondientes y la clase de la salida Strobe: DECL DIGINCODE $DIGIN3CODE = #UNSIGNED SIGNAL $STROBE3 $OUT[1000] BOOL $STROBE3LEV = TRUE ;sin signo ;Prefijar la salida Strobe ;Strobe es un impulso high

Una salida Strobe es una salida de la KR C... con un impulso determinado que produce la congelacin de la seal para la lectura de un aparato externo (p. ej. codificador). Mientras que entradas digitales diferentes pueden acceder a la misma entrada, las seales Strobe, NO pueden escribir la misma salida. El rango de valores de $DIGIN1$DIGIN6 depende de la longitud del grupo de bit definida, as como de la interpretacin del signo ((#SIGNED o #UNSIGNED) a partir de: 12 bits con signo (#SIGNED) 12 bits sin signo (#UNSIGNED) rango de valores: --20482047 rango de valores: 04095

Las entradas digitales se pueden leer estticamente mediante una asignacin ordinaria de valores o cclicamente con una instruccin DIGIN: Asignacin de valor INT NMERO NMERO = $DIGIN2 DIGIN INT NMERO DIGIN ON NMERO = FACTOR * $DIGIN2 + OFFSET DIGIN OFF $DIGIN2

Se permiten hasta 6 instrucciones DIGIN ON al mismo tiempo. En la instruccin DIGIN ON, tambin se puede acceder a la seal de entrada analgica (p. ej. como FACTOR). La sintaxis es exactamente anloga a la instruccin ANIN ON: DIGIN ON DIGIN ON Valor = Factor * nombre de seal Offset DIGIN OFF DIGIN OFF Nombre de seal

134 de 197

ProgExperteBHR5.2 09.03.01 es

Instrucciones de entrada/salida (continuacin)

El significado de los argumentos puede tomarlos de Tab. 14.

Argumento
Valor

Tipo de datos
REAL

Significado
El valor puede ser una variable o un nombre de seal (de salida). En Valor se registra el resultado de la lectura cclica. Variable de seal que especifica la entrada digital. Slo se permiten $DIGIN1$DIGIN6 Cualquier factor pudindose tratar de variable, nombre de seal o constante. Opcionalmente puede programarse un offset. El offset puede ser una constante, una variable o un nombre de seal.

Nombre de la seal Factor Offset

REAL REAL REAL

Tab. 14 Argumentos en la instruccin DIGIN

ProgExperteBHR5.2 09.03.01 es

135 de 197

Programacin por el experto

Subprogramas y funciones
Para reducir durante la programacin la tarea de escribir aquellos apartados de programa que se repiten con frecuencia, as como la longitud del programa, se han introducido subprogramas y funciones como construccin de lenguaje. Un efecto de los subprogramas y de las funciones que no conviene infravalorar es la posibilidad de volver a utilizar en otros programas los algoritmos que ya han sido registrados, y especialmente el uso de subprogramas para estructurar el programa. Este tipo de estructuracin puede generar un estructura jerrquica, de modo que se pueda activar cada uno de los subprogramas por un programa de nivel superior, se puedan procesar completamente tareas parciales y se puedan enviar los resultados.

6.1

Declaraciones
Un subprograma o una funcin son partes de programas separadas, con encabezamiento de programa, seccin de declaraciones y de instrucciones, que pueden llamarse desde cualquier parte del programa segn convenga. Una vez procesado el subprograma o la funcin, se produce un salto hacia atrs hasta la instruccin subsiguiente despus de activarse el subprograma. Desde un subprograma o bien una funcin, pueden llamarse otros subprogramas y/o funciones. La profundidad de encajado permitida en este caso es de 20. Si se excede este nmero, aparecer un mensaje de fallo indicando REBASE APILAMIENTO DE PROGRAMA. La llamada recursiva de subprograma o de funciones est permitida. Dicho con otras palabras: un subprograma o una funcin puede volver a llamarse a s mismo. DEF Todos los subprogramas se declaran exactamente igual que los programas principales, con la convencin DEF ms el nombre, y se cierran con END, p. ej.: DEF SUBPROG() END PROG.SRC DEF PROG() ;Programa principal SUBPROG() ;Llamada subprograma SUBPROG() ;Llamada subprograma END ;Fin programa principal

DEF SUBPROG() ;Subprograma END ;Fin subprograma

Fig. 46 Llamada subprograma y salto atrs 136 de 197 ProgExperteBHR5.2 09.03.01 es

Subprogramas y funciones (continuacin)

DEFFCT Al contrario que los subprogramas, las funciones emiten un valor de retorno. Una funcin comienza con la palabra clave DEFFCT. El tipo de datos del valor de retorno se indica inmediatamente despus de la palabra clave DEFFCT. El propio valor de retorno es transferido mediante RETURN. Mediante la palabra clave ENDFCT se finaliza la funcin. DEFFCT INT Funcin() DECL INT Sample Sample = 11 RETURN Sample ENDFCT Si falta la instruccin RETURN aparecer un error de tiempo de ejecucin. En general, se diferencia entre subprogramas/funciones locales y globales. Local En el caso de los subprogramas o funciones locales, el programa principal y los subprogramas/ las funciones se encuentran en el mismo archivo SRC. El archivo ostenta el mismo nombre que el programa principal. El programa principal estar en el texto fuente siempre en primer lugar, mientras que los subprogramas y funciones pueden estar ordenados en cualquier orden y cantidad despus del programa principal. Las funciones /los subprogramas locales pueden llamarse slo dentro de los archivos SRC en los cuales fueron programados. Global Si se desea que otros programas puedan llamar a los subprogramas/las funciones, estos programas deben ser del tipo global, es decir, debern estar memorizados en un fichero SRC propio. Como alternativa, se puede anteponer a un subprograma local la palabra clave GLOBAL. Todos los programas se convierten en subprogramas cuando son llamados desde otro programa (programa principal, subprograma o funcin). G En los subprogramas o las funciones locales, se conocen todas las variables declaradas en la lista de datos del programa principal. Las variables que han sido declaradas en el programa principal (archivo SRC) son las llamadas Variables Runtime. Estas variables slo deben ser utilizadas en el programa principal. Si se intenta utilizar estas variables en un subprograma, aparecer el correspondiente mensaje de fallo. En los subprogramas o funciones globales, las variables declaradas dentro del programa principal no son conocidas. En el programa principal, las variables declaradas en subprogramas o funciones globales no son conocidas. Un programa principal no puede acceder a subprogramas o funciones locales de otro programa principal. El nombre de los subprogramas/las funciones locales pueden tener como mximo 24 caracteres. En el caso de los subprogramas/las funciones globales, el nombre puede tener como mximo 24 caracteres (debido a la extensin de archivo).

G G G

Para que el subprograma global sea conocido por el programa principal, tan slo es necesario llamarlo dentro del programa principal (por ej: PROG_2()). Ejemplo: PROG_3() VAR = Funktion() En Fig. 47 se muestra la diferencia entre subprogramas/funciones locales y globales: PROG.SRC, PROG_1.SRC y PROG_3.SRC son programas principales independientes, ProgExperteBHR5.2 09.03.01 es 137 de 197

Programacin por el experto

PROG_2FUN.SRC es una funcin. Cuando un programa (por ej. PROG_1.SRC) es llamado desde PROG.SRC, se convierte automticamente en un subprograma global. LOCAL() es un subprograma local, LOCALFUN() una funcin local de PROG.SRC. PROG.SRC DEF PROG() EXT PROG_1() EXT PROG_3() A=A*LOCALFUN() LOCAL() PROG_3() PROG_1() END DEF LOCAL() EXTFCT PROG_2FUN() PROG_2FUN() G=PROG_2FUN() H=5+LOCALFUN() END DEFFCT INT LOCALFUN() INT INTVAR RETURN INTVAR ENDFCT PROG_1.SRC DEF PROG_1() END

PROG_2FUN.SRC DEFFCT INT PROG_2FUN() INT A EXT PROG_1() PROG_1() PROG_1() ENDFCT PROG_3.SRC DEF PROG_3() END

Fig. 47 Diferencia entre subprogramas locales y globales La palabra clave EXT es necesaria cuando en el editor se introduce la respectiva llamada de subprograma/funcin.

138 de 197

ProgExperteBHR5.2 09.03.01 es

Subprogramas y funciones (continuacin)

6.2

Llamada y transferencia de parmetros


La llamada de un subprograma se realiza simplemente indicando el nombre del subprograma y parntesis normales. As pues, su aspecto es el de una instruccin, p. ej.: SUBPROG1() Una llamada de funcin es una forma especial de asignacin de valor. Por consiguiente, una funcin no puede estar sola. Antes bien, el valor de la funcin debe ser asignado siempre dentro de la expresin de una variable del mismo tipo de datos, p. ej.: INTVAR = 5 * INTFUNCIN() + 1 REALVAR = REALFUNCIN() Lista de parmetros En los subprogramas y las funciones locales, se conocen todas las variables declaradas en la lista de datos del programa principal. Por el contrario, en los subprogramas globales, estas variables son desconocidas. No obstante, a travs de una lista de parmetros puede transferirse tambin valores a subprogramas y funciones globales. A menudo conviene tambin en los subprogramas y funciones locales la transferencia con listas de parmetros, ya que de ese modo se puede establecer una separacin clara entre el programa principal y el subprograma/la funcin: las variables declaradas en el programa principal (archivo SRC) slo se utilizan en ste; todas las transferencias en subprogramas y funciones (locales y globales) se efectan por medio de listas de parmetros. Mediante esta forma de programacin estructurada se reducen notablemente los errores de programacin. Para transferir parmetros existen dos mecanismos diferentes: G Call by value (IN) En este tipo de transferencia, se transfiere un valor del programa principal a una variable del subprograma o de la funcin. El valor transferido puede ser una constante, una variable, una llamada de funcin o una expresin. Si se trata de diferentes tipos de datos, siempre que sea posible se realizar una adaptacin de tipos. G Call by reference (OUT) A travs de Call by reference se transfiere slo la direccin de una variable del programa principal al subprograma o a la funcin. El subprograma/funcin llamado puede entonces sobreescribir la zona de memoria mediante un nombre de variable propio y de ese modo modificar el valor de la variable en el programa principal. Por consiguiente, los tipos de datos utilizados debern ser idnticos; en este caso no se puede efectuar una adaptacin de tipos. En Fig. 48 se muestra la diferencia entre ambos mtodos. Mientras que la variable X con Call by value permanece invariable en el programa principal debido a la zona de memoria separada, con Call by reference es sustituida por la variable NMERO en la funcin.

ProgExperteBHR5.2 09.03.01 es

139 de 197

Programacin por el experto

X 15 15 DEF PROG() INT X,Y,E X=5*3 Y=QUADRAT(X) ;Y=225 E=Y/X END 225 NMERO 225 15 225

Call by value
GLOBAL DEFFCT INT QUADRAT(NMERO:IN) INT NMERO NMERO=NMERO*NMERO RETURN(NMERO) ENDFCT

X=15 Y= 225 E=15

15 15 225

X,NMERO

Call by reference
GLOBAL DEFFCT INT QUADRAT(NMERO:OUT) INT NMERO NMERO=NMERO*NMERO RETURN(NMERO) ENDFCT

X=225 Y= 225 E=1

Fig. 48 Diferencia entre Call by value y Call by reference Call by value es indicado en el encabezamiento del subprograma o de la funcin mediante la palabra clave IN colocada detrs de cada variable en la lista de parmetros. Call by reference se obtiene indicando OUT. OUT tambin es el ajuste por defecto. Ejemplo: DEF CALCULA(X:OUT,Y:IN,Z:IN,B) Si el subprograma global o la funcin global que se desea llamar no estn declarados como GLOBAL, ser necesario indicar, en el caso de la declaracin externa en el programa principal, qu tipo de datos tiene cada una de las variables y qu mecanismo de transferencia se debe utilizar. OUT vuelve a ser el ajuste por defecto. Ejemplo:

EXTFCT REAL FUNKT1(REAL:IN,BOOL:OUT,REAL,CHAR:IN)


Mediante el siguiente ejemplo se explica el modo de utilizar IN y OUT. Se parte del supuesto de que el subprograma y la funcin son globales.

140 de 197

ProgExperteBHR5.2 09.03.01 es

Subprogramas y funciones (continuacin)

DEF PROG() CALCULA (INT:OUT,INT:IN,INT:IN) FUNC1(REAL:IN,REAL:OUT,REAL:OUT,REAL:IN,REAL:OUT) INT A,B,C REAL D,E,F,G,H,X A B C D E F G H = = = = = = = = 1 2 3 1 2 3 4 5 (A,B,C) ahora es 11 permanece como 2 permanece como 3

CALCULA ;A ;B ;C

X = FUNC1(H,D,E,F,G) ;D ahora es 3 ;E ahora es 8 ;F permanece como 3 ;G ahora es 24 ;H permanece como 5 ;X ahora es 15 END DEF CALCULA(X1:OUT,X2:IN,X3:IN) ;subprograma global INT X1,X2,X3 X1=X1+10 X2=X2+10 X3=X3+10 END DEFFCT REAL FUNC1(X1:IN,X2:OUT,X3:OUT,X4:IN,X5:OUT);funcin global REAL X1,X2,X3,X4,X5 X1 = X1*2 X2 = X2*3 X3 = X3*4 X4 = X4*5 X5 = X5*6 RETURN(X4) ENDFCT Para transferir un campo, ste tambin debe ser declarado de nuevo en el subprograma o en la funcin, aunque sin ndice. Vase a este respecto el siguiente ejemplo, en el cual se duplican los valores de un campo X[] (la funcin es global):

ProgExperteBHR5.2 09.03.01 es

141 de 197

Programacin por el experto

DEF ARRAY ( ) EXT BAS (BAS_COMMAND :IN,REAL :IN) INT X[5] ;Declaracin de campo INT I BAS (#INITMOV,0) FOR I=1 TO X[I]=I ENDFOR 5 ;Array X[] inicializar ;X[1]=1,X[2]=2,X[3]=3,X[4]=4,x[5]=5

DOBLE (X[]) ;Llamada del subprograma con parmetro de campo ;X[1]=2,X[2]=4,X[3]=6,X[4]=8,X[5]=10 END DEF DOBLE (A[]:OUT) INT A[] ;Nueva declaracin del campo INT I FOR I=1 TO 5 A[I]=2*A[I] ;Duplicar los valores de campo ENDFOR END En la transferencia de campos multidimensionales tampoco se indican ndices; sin embargo, la dimensin del campo se debe especificar mediante comas. Ejemplos: A[,] A[,,]

para campos bidimensionales para campos tridimensional

142 de 197

ProgExperteBHR5.2 09.03.01 es

Subprogramas y funciones (continuacin)

ProgExperteBHR5.2 09.03.01 es

143 de 197

Programacin por el experto

Tratamiento de interrupciones
Al utilizar robots en instalaciones de produccin complejas, existe la necesidad que el robot reaccione de inmediato y en forma directa a determinados eventos externos o internos, pudindolos ejecutar acciones paralelas al proceso del robot. Esto significa que se debe interrumpir un programa en curso del robot e iniciar un programa o funcin de interrupcin. Una vez procesado el programa de interrupcin, deber continuar el programa de robot interrumpido si no se ha especificado algo distinto. La interrupcin o bien arranque directo de un programa lo posibilitan las instrucciones de interrupcin. Con ellas, el usuario tiene la posibilidad de reaccionar mediante programa, a un evento determinado que se ha producido, no sincronizado en el tiempo, con la secuencia del programa. Las interrupciones pueden ser activadas por G G G G aparatos tales como sensores, unidades perifricas, etc., mensajes de fallo, el usuario, o los circuitos de seguridad.

Por ejemplo despus de accionar un pulsador de parada de emergencia, se llama una rutina de interrupcin que resetea determinadas seales de salida (programa preparado IR_STOPM.SRC).

7.1

Declaracin
Antes de poder activar una interrupcin, debern definirse previamente las posibles causas de la misma y las reacciones respectivas del sistema. INTERRUPT Esto se realiza con las declaraciones de interrupcin, teniendo en cuenta que a cada interrupcin se le ha de asignar una prioridad, un evento y la rutina de interrupcin que ha de activar. La sintaxis completa es: INTERRUPT DECL Prioridad WHEN Evento DO Subprograma Para el significado que tienen los argumentos vase Tab. 15.

Argumento
Prioridad

Tipo de datos
INT

Significado
Expresin aritmtica que indica la prioridad de la interrupcin. Estn disponibles los niveles de prioridad del 139 y 81128. Los valores 40...80 estn reservados para una asignacin automtica de prioridades por parte del sistema. La interrupcin del nivel 1 tiene la mxima prioridad. Expresin lgica que define el evento de interrupcin. Se permite: S una constante booleana S una variable booleana S un nombre de seal S una comparacin Nombre del programa de interrupcin que se ha de ejecutar cuando se produzca un evento.

Evento

BOOL

Subprograma

Tab. 15 Argumentos en la declaracin de interrupciones

144 de 197

ProgExperteBHR5.2 09.03.01 es

Tratamiento de interrupciones (continuacin)

La instruccin INTERRUPT DECL 4 WHEN $IN[3]==TRUE DO UP1() declara p. ej. una interrupcin de prioridad 4, que llama el subprograma UP1() en el momento que la entrada 3 pasa a nivel high. La declaracin de interrupcin es una instruccin, por consiguiente, no debe estar colocada en la seccin de declaraciones! Una interrupcin (Interrupt) recin es reconocida a partir del nivel del programa en la cual fue declarada. En los niveles ms altos de programa, a pesar de estar activada, la interrupcin no es reconocida. Es decir, una interrupcin declarada en un subprograma, no es conocida en el programa principal. GLOBAL Pero si una interrupcin es declarada como GLOBAL, entonces puede estar declarada en cualquier subprograma, y no pierde su validez al abandonar este nivel. GLOBAL INTERRUPT DECL 4 WHEN $IN[3]==TRUE DO UP1() G G G G G Una declaracin puede ser sobreescrita en todo momento por una nueva. Una interrupcin GLOBAL se diferencia de una interrupcin normal, en que al abandonar el subprograma en el cual ha sido declarada, sigue teniendo validez. Simultneamente pueden estar declaradas, como mximo, 32 interrupciones. En la condicin de interrupcin no se puede acceder a variables o componentes de estructura. A la subrutina de interrupcin no deben ser entregados como parmetros, variables de duracin temporal, excepto que se trate de GLOBAL o variables declaradas en la lista de datos.

Programa principal DEF MAIN() INTERRUPT DECL 1 INTERRUPT DECL 3 UP() END

Subprograma DEF UP() GLOBAL INTERRUPT DECL 23 INTERRUPT DECL 2 END

Validez Interrupt 1,3,23 Validez Interrupt 2

Fig. 49 Rango de validez de una interrupcin dependiente del lugar y del tipo de declaracin

ProgExperteBHR5.2 09.03.01 es

145 de 197

Programacin por el experto

7.2

Activacin de interrupciones
Activar interrupciones Despus de la declaracin, en primer momento, la interrupcin est desactivada. Con la instruccin INTERRUPT ON 4 se activa la interrupcin con la prioridad 4, con INTERRUPT ON se activan todas las interrupciones. Slo activadas, se puede esperar que se produzcan las reacciones ante la presencia de una interrupcin definida. Recin ahora se controla cclicamente la presencia del evento de interrupcin. Disparo por flancos La supervisin del evento se produce mediante disparo por flancos, es decir, que una interrupcin slo ser disparada cuando la condicin lgica cambie su estado de FALSE a TRUE, pero no si en el momento de activarla, ya estaba la condicin en TRUE. Debido a tiempos de clculo no se permiten ms de 16 interrupciones activadas simultneamente. Esto se ha de tener en cuenta sobre todo en la activacin global de todas las interrupciones. Desactivar interrupciones Del mismo modo que funciona la activacin de cada una o de todas las interrupciones, funciona tambin su desactivacin: INTERRUPT OFF 4 o INTERRUPT OFF Bloquear / liberar Con las claves de ENABLE y DISABLE pueden liberarse o bloquearse interrupciones activadas de forma global. La instruccin de bloqueo posibilita proteger determinadas partes del programa contra una interrupcin. Una interrupcin bloqueada es detectada y almacenada pero no ejecutada. Una vez que se produzca la liberacin, se procesarn las interrupciones en el orden de prioridad respectivo. DISABLE 4 o DISABLE A un evento memorizado ya no se reaccionar si la interrupcin ha sido desactivada antes de que se produzca el disparo. Si una interrupcin bloqueada se produce repetidas veces, slo se ejecutar una vez despus de su liberacin. Las condiciones previas para el disparo de las interrupciones son: S S S S la interrupcin deber estar declarada (INTERRUPT DECL ) la interrupcin deber estar activada (INTERRUPT ON) la interrupcin no deber estar bloqueada se deber haber producido el evento correspondiente (disparo por flancos) ProgExperteBHR5.2 09.03.01 es

146 de 197

Tratamiento de interrupciones (continuacin)

Prioridad Cuando se produzcan simultneamente interrupciones, ser procesada primeramente la que tenga la prioridad ms alta y a continuacin las de prioridades ms bajas. El nivel de prioridad 1 es el de mxima prioridad y el nivel 128 la mnima. Cuando se detecta un evento, se memoriza la posicin real actual del robot y se llama la rutina de interrupcin. La interrupcin originada as como todas las prioridades de niveles ms bajos, se bloquearn durante el tiempo que dure el procesamiento. Al regresar del programa de interrupcin, se cancelar el bloqueo implcito indicado incluso para la interrupcin actual. Es decir que en el momento que se produzca nuevamente (incluso durante el programa de interrupcin), puede procesarse otra vez la interrupcin. Sin embargo, si se desea evitar esto, deber bloquearse o desactivarse la interrupcin explcitamente antes de su salto atrs. Un interrupt puede ser interrumpido despus del primer comando en el programa de interrupciones mediante un interrupt de nivel superior. En el primer comando, el programador tiene la opcin de evitar esto bloquendo/desactivando uno o todos los interrupts. Si una interrupcin se desactiva automticamente dentro del subprograma de interrupcin, ste se procesar hasta el final. Despus de finalizar una interrupcin de prioridad ms alta, se continuar el programa de interrupcin interrumpido en el mismo lugar en el cual fue interrumpido. G G A un programa de interrupcin pueden transferirse parmetros IN. Si desea que un programa de interrupcin local regrese un parmetro, deber estar declarada la variable en la lista de datos del programa principal. En los programas de interrupcin global deber operarse con la lista de datos $CONFIG.DAT. Las modificaciones de $TOOL y $BASE en el programa de interrupcin, slo son efectivas en el mismo (servicio de comando). En el programa de interrupciones no existe una ejecucin en avance, ya que funciona en el nivel de comandos, es decir que es procesado paso por paso ( no se permiten las asignaciones $ADVANCE). Con ello, no se puede realizar un posicionamiento aproximado.

G G

Casos especiales: S Las interrupciones sobre las variables del sistema $ALARM_STOP y $STOPMESS son procesadas incluso en caso de anomala, es decir que a pesar de una parada del robot, continuan procesndose las instrucciones de interrupciones (no los movimientos). S Durante una parada de operacin, se puede reconocer cada interrupcin declarada y activada. Despus de un nuevo arranque, se procesarn las interrupciones dependiendo de sus prioridades (en caso de que estn liberadas) y a continuacin, seguir la ejecucin normal del programa. Con la llamada de un programa de interrupcin, no se interrumpe el movimiento del robot en marcha. Mientras se procesa el programa de interrupcin, se ejecutan todos los movimientos preparados dentro del programa interrumpido. Si el programa de interrupcin, durante este tiempo, ha terminado de procesarse, contina la ejecucin del programa, sin parada del movimiento, es decir, sin prolongar el tiempo del procesamiento. Si por el contrario, no ha concluido la accin de interrupcin, el robot se detendr hasta que, despus del salto atrs, se procese y contine el movimiento subsiguiente. Si en el propio programa de interrupciones existen instrucciones de movimiento, el programa de interrupcin parar en la primera instruccin de movimiento hasta que termine de procesarse la ejecucin en avance del programa principal. ProgExperteBHR5.2 09.03.01 es 147 de 197

Programacin por el experto

El ejemplo indicado a continuacin muestra como utilizar las instrucciones de interrupciones y de variables especiales del sistema. En este se controlan en forma permanente dos sensores (en las entradas 1 y 2) durante el movimiento lineal. En el momento que el sensor 1 detecta una pieza (pasa a nivel alto), se produce la llamada de un subprograma de interrupcin en la cual se almacena la posicin de la pieza, mostrndose como indicacin, la salida correspondiente. El movimiento del robot no es interrumpido durante este proceso. A continuacin se realiza de nuevo un desplazamiento hacia las piezas detectadas. DEF INTERRUP ( )

;--------- Seccin de declaraciones --------EXT BAS (BAS_COMMAND :IN,REAL :IN ) DECL AXIS HOME POS TEIL[2] INT I ;---------- Inicializacin --------BAS (#INITMOV,0 ) ;Inicializacin de velocidades, ;aceleraciones, $BASE, $TOOL, etc. HOME={AXIS: A1 0,A2 -90,A3 90,A4 0,A5 30,A6 0} FOR I=1 TO 16 $OUT[I]=FALSE ;resetear todas las salidas ENDFOR INTERRUPT DECL 10 WHEN $IN[1]==TRUE DO SAVEPOS (1 ) INTERRUPT DECL 11 WHEN $IN[2]==TRUE DO SAVEPOS (2 ) ;------------- Seccin principal -----------PTP HOME ;Desplazamiento COI PTP {X 1320,Y 100,Z 1000,A -13,B 78,C -102}

INTERRUPT ON ;activar todas las interrupciones LIN {X 1320,Y 662,Z 1000,A -13,B 78,C -102} ;Tramo de localizacin INTERRUPT OFF 10 ;Desactivar la interrupcin 10 INTERRUPT OFF 11 ;Desactivar la interrupcin 11 PTP HOME

FOR I=1 TO 2 IF $OUT[I] THEN LIN PARTE[I] ; Desplazarse hacia la pieza detectada $OUT[I]=FALSE PTP HOME ENDIF ENDFOR END ;----------- Programa de interrupcin ---------DEF SAVEPOS (NR :IN ) ;Pieza detectada INT NR $OUT[NR]=TRUE ;Colocar marcador PARTE[NR]=$POS_INT ;Memorizar posicin END

148 de 197

ProgExperteBHR5.2 09.03.01 es

Tratamiento de interrupciones (continuacin)

Junto al paquete base (BAS.SRC) se encuentra en la unidad de control, en forma estndar, un archivo IR_STOPM(). Este subprograma ejecuta, en caso de fallo, determinadas instrucciones fundamentales. Entre otras, adems de acciones especficas tecnolgicas, forma parte el reposicionamiento del robot sobre su trayectoria de desplazamiento. Mientras que el robot, despus de accionar el pulsador de PARADA de EMERGENCIA, contina en su trayectoria, se produce en el disparo de los dispositivos de proteccin referidos directamente al operador (p. ej. puerta de proteccin), una parada de lado hardware fuera de la trayectoria. Por consiguiente, Ud. debera implementar siempre en la parte de inicializacin de sus programas, la secuencia siguiente (en forma estndar se encuentra siempre en la fold de BAS INI): INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( ) INTERRUPT ON 3 En el archivo IR_STOPM() se produce la reposicin mediante la instruccin PTP $POS_RET estableciendo de nuevo la coincidencia de paso. Otras variables tiles del sistema para los trabajos con interrupciones, aparecen en Tab. 16. Las posiciones hacen referencia siempre al sistema de coordenadas actual en la ejecucin principal.

Especfica de Cartesiana ejes


$AXIS_INT $AXIS_ACT $AXIS_RET $AXIS_BACK $AXIS_FOR $POS_INT $POS_ACT $POS_RET $POS_BACK $POS_FOR

Significado
Posicin en la que se produce la interrupcin Posicin actual REAL Posicin en la cual se abandono la trayectoria Posicin del punto inicial de la trayectoria Posicin del punto final de la trayectoria

Tab. 16 Variables de sistema tiles en el tratamiento de interrupciones Las posiciones _BACK y _FOR dependen en el movimiento de aproximacin donde se encuentre la ejecucin principal. Vase al respecto Fig. 50 hasta Fig. 51.

$POS_INT $AXIS_INT

$POS_RET $AXIS_RET P2

P1 $POS_BACK $AXIS_BACK $POS_ACT $AXIS_ACT

$POS_FOR $AXIS_FOR

P3

Fig. 50 Variablesdel sistema - interrupcin con puntosde paradaexactos

ProgExperteBHR5.2 09.03.01 es

149 de 197

Programacin por el experto

P2

$POS_INT $AXIS_INT

$POS_RET $AXIS_RET $POS_FOR $AXIS_FOR

$POS_BACK $AXIS_BACK

$POS_ACT $AXIS_ACT

P1

P3 Fig. 51 Variables del sistema - interrupcin en una zona de aproximacin

7.3

Detencin de movimientos en ejecucin


BRAKE Si se desea que se detengan movimientos en ejecucin del robot cuando se produzca una interrupcin, entonces se sirve uno de la instruccin BRAKE en el programa de interrupcin. Si se programa BRAKE sin parmetros, esto produce un frenado del movimiento con los valores de aceleracin de ejes y de trayectoria programados. El comportamiento es el mismo que el que se produce cuando se acciona la tecla STOP. En esta actuacin, no se abandona la trayectoria de movimiento programada. Con la instruccin BRAKE F (brake fast) alcanzar carreras de frenado ms cortas. El robot es frenado aqu con un retardo con la mayor exactitud de trayectoria posible. La instruccin BRAKE slo puede estar en un programa de interrupcin. En otros programas producir una parada con fallo. La instruccin BRAKE no tiene por que efectuarse directamente despus de su llamada, sino que puede producirse en cualquier parte del programa de interrupciones. Su efectividad depende de que si en el momento de su tratamiento, an se est ejecutando un movimiento del programa interrumpido. Si el robot est detenido, la instruccin no tiene consecuencias. Una movimiento en ejecucin del programa interrumpido, se parar con el modo de frenado programado. Sin embargo, la instruccin BRAKE no sustituye la instruccin HALT, si se ha de parar la secuencia del programa. La ejecucin del programa de interrupcin continuar despus de la parada correcta del robot, con la instruccin siguiente.

Despus del salto atrs al programa interrumpido, se continuar en el programa con el movimiento interrumpido por BRAKE o BRAKE F!

150 de 197

ProgExperteBHR5.2 09.03.01 es

Tratamiento de interrupciones (continuacin)

7.4

Cancelacin de rutinas de interrupcin


En el ejemplo 8.1 se detectan durante el movimiento del robot, como mximo, 2 objetos mediante 2 detectores de aproximacin, registrndose tambin sus posiciones para el arranque posterior. El trayecto de bsqueda es ejecutado en su totalidad, incluso cuando estn ya detectados ambos objetos. Para ahorrar tiempo, es deseable interrumpir el movimiento de inmediato cuando se hayan detectado la mxima cantidad de piezas. RESUME La cancelacin de un movimiento del robot es posible efectuarla en la KR C... con la instruccin RESUME La instruccin RESUME cancela todos los programas de interrupcin en procesamiento y todos los subprogramas en marcha hasta el nivel en la cual se encuentra declarada la interrupcin actual. Igual a lo que sucede con la instruccin BRAKE, slo se permite la instruccin RESUME dentro de un programa de interrupcin. En el momento de la instruccin RESUME, el puntero de avance no debe estar en el mismo nivel en el cual se declar la interrupcin, sino como mnimo, en un nivel inferior. Al tener que interrumpirse el trayecto de bsqueda con RESUME, deber programarse el movimiento de bsqueda en un subprograma. Esto se realiza en el ejemplo que se muestra a continuacin en MOVEP(), el subprograma de interrupcin se llama IR_PROG(). Lo importante en los subprogramas que se han de interrumpir con RESUME, es que se interrumpa el procesamiento en avance antes de la ltima lnea. Slo as estar garantizado de que el puntero de avance de ejecucin no est con RESUME en el mismo nivel donde fue declarada la interrupcin. En MOVEP() se realiz esto con la asignacin $ADVANCE=0. En el propio programa de interrupcin -- en el momento que se detecten 4 piezas por el sensor en la entrada 1 -- se parar el movimiento de bsqueda mediante BRAKE y a continuacin se cancelar con la instruccin RESUME (ya que junto al IR_PROG() tambin finaliza MOVEP()). Sin la instruccin BRAKE se tratara primero el movimiento de bsqueda en el procesamiento en avance. Despus de RESUME, contina el programa principal con la instruccin siguiente a continuacin de la llamada del subprograma, es decir $ADVANCE=3 (resetear procesamiento en avance).

ProgExperteBHR5.2 09.03.01 es

151 de 197

Programacin por el experto

DEF SEARCH ( ) ;--------- Seccin de declaraciones --------EXT BAS (BAS_COMMAND :IN,REAL :IN ) DECL AXIS HOME ;---------- Inicializacin --------INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( ) INTERRUPT ON 3 ;tratamiento de errores estndar BAS (#INITMOV,0 ) ;Inicializacin de velocidades, ;aceleraciones, $BASE, $TOOL, etc. HOME={AXIS: A1 0,A2 -90,A3 90,A4 0,A5 30,A6 0} INTERRUPT DECL 11 WHEN $IN[1] DO IR_PROG ( ) I[1]=0 ;colocar el contador predefinido a 0 ;------------- Seccin principal -----------PTP HOME ;desplazamiento COI INTERRUPT ON 11 MOVEP ( ) ;recorrido del trayecto de busqueda $ADVANCE=3 ;resetear avance INTERRUPT OFF 11 GRIP ( ) PTP HOME END ;-------- Subprograma -----------DEF MOVEP ( ) ;Subprograma para el recorrido del trayecto de busqueda PTP {X 1232,Y -263,Z 1000,A 0,B 67,C -90} LIN {X 1232,Y 608,Z 1000,A 0,B 67,C -90} $ADVANCE=0 ;Parar el avance END ; ;------ Programa de interrupcin --------DEF IR_PROG ( ) ;Guardar posicin de piezas ;INTERRUPT OFF 11 I[1]=I[1]+1 POSICIN[I]=$POS_INT ;Guardado de la posicin IF I[1]==4 THEN ;4 piezas son detectadas BRAKE ;Detencin del movimiento RESUME ;Cancelacin de IR_PROG & MOVE ENDIF ;INTERRUPT ON 11 END ;-------- Subprograma ------------l DEF GRIP ( ) ;Coger las piezas detectadas INT POS_NR ;Variable de conteo FOR POS_NR=I[1] TO 1 STEP -1 POSICIN[POS_NR].Z=POSICIN[POS_NR].Z+200 LIN POSICIN[POS_NR] ;Pasar 200mm sobre la pieza LIN_REL {Z -200} ;Aproximarse perpendicularmente a la pieza ; Coger pieza LIN POSICIN[POS_NR] ;Subir nuevamente hacia arriba LIN {X 634,Y 1085,Z 1147,A 49,B 67,C -90} ; Depositar pieza ENDFOR END

152 de 197

ProgExperteBHR5.2 09.03.01 es

Tratamiento de interrupciones (continuacin)

Si existe el riesgo de que una interrupcin dispare, por error, dos veces debido a la sensibilidad de un sensor (rebotes de teclas), puede evitarlo 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 interrupcin. Antes de realizar el salto hacia atrs, si tiene que continuar estando activa la interrupcin, se ha de conectar de nuevo la misma. Si se ha interrumpido un movimiento como en el ejemplo anterior con RESUME, el movimiento siguiente no debe ser un movimiento CIRC, ya que el punto de inicio es distinto cada vez ( crculos diferentes). En la accin de bsqueda programada en el ejemplo 7.2, las entradas son interrogadas en el ciclo de interpolacin (actualmente 12 ms). Aqu se produce una inexactitud mxima de 12 ms multiplicada la velocidad de trayectoria. Medicin rpida Si se desea evitar inexactitudes, no se deber conectar el detector de aproximacin a las entradas de usuario, sino a travs de entradas especiales (4 unidades) en el conector de perifricos X11. Estas entradas pueden ser activadas a travs de las variables del sistema $MEAS_PULSE[1]MEAS_PULSE[4] (tiempo de respuesta 125 s). Al conectar la interrupcin, el impulso de medicin no debe estar presente, caso contrario se emite el correspondiente mensaje de fallo.

ProgExperteBHR5.2 09.03.01 es

153 de 197

Programacin por el experto

7.5

Utilizacin de banderas (flags) cclicas


En la instruccin para declaraciones de interrupciones no se permiten combinaciones lgicas. Para definir eventos complejos deber trabajarse con banderas (flags) cclicas ya que slo estas permiten una actualizacin continua. Con la secuencia $CYCFLAG[3] = $IN[1] AND ([$IN[2] OR $IN[3]) INTERRUPT DECL 10 WHEN $CYCFLAG[3] DO IR_PROG() INTERRUPT ON 10 pueden supervisarse 3 entradas simultneamente y combinarlas entre s en forma lgica. Informaciones adicionales se encuentran en el captulo [Variables y declaraciones], apartado [Variables y archivos del sistema].

154 de 197

ProgExperteBHR5.2 09.03.01 es

Tratamiento de interrupciones (continuacin)

ProgExperteBHR5.2 09.03.01 es

155 de 197

Programacin por el experto

Trigger - Acciones de conmutacin referentes a la trayectoria


Al contrario de las funcionalidades de interrupcin independientes del movimiento, algunos casos de aplicacin requieren determinados acciones de conmutacin que se disparan dependientes de la trayectoria del movimiento. Estos casos de aplicacin son p. ej: G G G cerrar o abrir una pinza de soldadura durante la soldadura por puntos conectar/desconectar la corriente de soldadura en la soldadura al arco sobre una trayectoria conectar/desconectar el caudal durante el proceso de pegado y aplicacin de sellantes

En la KR C..., estas acciones de conmutacin referentes a la trayectoria se pueden realizar mediante instrucciones de disparo (TRIGGER). Paralelamente al prximo movimiento de robot, se puede procesar con TRIGGER, en dependencia de la trayectoria, un subprograma o efectuar una asignacin de valor a una variable o una instruccin PULSE o activarse una salida.

8.1

Acciones de conmutacin en el punto de inicio o de destino de la trayectoria


TRIGGER Si se desea una accin de conmutacin referente a un punto de inicio o de destino de una trayectoria de movimiento, deber programar delante de la instruccin de movimiento en cuestin (PTP, LIN o CIRC) una instruccin de TRIGGER con la sintaxis siguiente: TRIGGER WHEN DISTANCE=Punto de conmutacin DELAY=Tiempo DO Instruccin <PRIO=Prioridad> En la siguiente tabla se describen los argumentos en forma ms detallada.

Argumento
Punto de conmutacin

Tipo de datos
INT

Significado
En los pasos individuales la DISTANCE=0 define el punto de inicio y DISTANCE=1 el punto final del siguiente movimiento. En los pasos de aproximacin la DISTANCE=1 marca las indicaciones del centro de la curvatura de aproximacin siguiente. Si el paso precedente es un paso con posicionamiento aproximado, DISTANCE=0 marca el punto final de la curvatura de aproximacin precedente. Con la indicacin de DELAY se puede retardar el punto de conmutacin en un determinado tiempo. El punto de conmutacin slo podr desplazarse de modo que quede comprendido dentro del paso de referencia. La unidad se expresa en milisegundos. La instruccin puede ser S una llamada de un subprograma S una asignacin de valor a una variable S una instruccin OUTPUT (tambin Pulse).

Tiempo

INT

Instruccin

Prioridad

INT

Cada instruccin TRIGGER con llamada de subprograma deber ir asignada a una prioridad. Son permisibles valores entre 139 y 81128. En este caso se trata de las mismas prioridades que en las interrupciones (vase captulo 7). Los valores 4080 estn reservados por el sistema para una asignacin automtica de prioridades. Programe para ello PRIO=--1.

Tab. 17 Argumentos en la instruccin TRIGGER 156 de 197 ProgExperteBHR5.2 09.03.01 es

Trigger - Acciones de conmutacin referentes a la trayectoria (continuacin)

Con la secuencia de instrucciones LIN PUNTO2 TRIGGER WHEN DISTANCE = 0 DELAY=20 DO $OUT[4]=TRUE TRIGGER WHEN DISTANCE = 1 DELAY=-25 DO UP1() PRIO=-1 LIN PUNTO3 LIN PUNTO4 se activa durante el movimiento lineal hacia el PUNTO3 la salida 4 despus de 20 milisegundos tras el inicio del movimiento y se produce la llamada del subprograma UP1(), 25 milisegundos antes de alcanzar el punto final. La asignacin de prioridad se produce automticamente por el sistema. Para entender mejor los diferentes efectos de la indicacin de DISTANCE en pasos individuales y de aproximacin, vase las figuras siguientes.

DISTANCE 0 1

0
PUNTO2

Rango de DELAY conmutacin 0 -- 1 + 1 -- 0 --

+ PUNTO3

1
Fig. 52 Rangos de conmutacin y posibles valores de retardo cuando el punto de inicio y de destino son puntos de parada exactos

0
+

PUNTO2

DISTANCE 0 1

Rango de DELAY conmutacin 0 -- 1a + 1a -- 1b

1a PUNTO3

1
1b +
PUNTO4

Fig. 53 Rangos de conmutacin y posibles valores de retardo cuando el punto de inicio es un punto de parada exacta y el punto final uno de aproximacin ProgExperteBHR5.2 09.03.01 es 157 de 197

Programacin por el experto

PUNTO2

DISTANCE 0 1

Rango de DELAY conmutacin 0 -- 1a + 1a -- 1b

0
+ 1a PUNTO3

1
1b +
PUNTO4

Fig. 54 Rangos de conmutacin y posibles valores de retardo cuando los puntos de inicio y de destino son puntos de aproximacin

DISTANCE

PUNTO2

0 1

Rango de DELAY conmutacin 0 -- 1 + 1 -- 0 --

0
+ PUNTO3

Fig. 55 Rangos de conmutacin y posibles valores de retardo cuando el punto de inicio es un punto de aproximacin y el punto final un punto de parada exacta

158 de 197

ProgExperteBHR5.2 09.03.01 es

Trigger - Acciones de conmutacin referentes a la trayectoria (continuacin)

8.2

Acciones de conmutacin en cualquier lugar sobre la trayectoria


Con la instruccin TRIGGER referente a la trayectoria, se puede disparar las acciones de conmutacin en cualquier lugar de la trayectoria con la indicacin de la distancia. Adicionalmente, el disparo, a su vez, puede desplazarse temporalmente, como en el caso de las acciones de conmutacin para el inicio o el punto final. La accin de conmutacin referente a la trayectoria slo es permisible para los movimientos de trayectoria (LIN o CIRC). La instruccin TRIGGER hace referencia para ello al paso de movimiento programado a continuacin, y su sintaxis es la siguiente: TRIGGER WHEN PATH PRIO=Prioridad = Trayecto DELAY = Tiempo DO Instruccin

En la siguiente tabla se describen los argumentos en forma ms detallada.

Argumento
Trayecto

Tipo de datos
INT

Significado
Con Trayecto indica la distancia deseada anterior al punto final donde se produce el disparo. Si este punto final es un punto con posicionamiento aproximado, Trayecto indica la distancia deseada entre la accin de conmutacin y la posicin de la zona de aproximacin ms prxima al punto final. El punto de conmutacin puede adelantarse mediante un Trayecto negativo hasta el punto de inicio. Si el punto de inicio es un punto de posicionamiento aproximado, se puede desplazar el punto de conmutacin hasta el principio de la zona de aproximacin. Con una indicacin positiva de Trayecto, se puede efectuar un desplazamiento hacia el punto de parada exacta despus del punto de disparo. La unidad se expresa en milmetros. Con la indicacin de DELAY es posible de retardar (+) o de acortar (--) en un tiempo determinado el punto de conmutacin en forma relativa respecto a la indicacin de PATH. Pero el punto de conmutacin solamente puede ser desplazado en la zona de conmutacin arriba mencionada (tanto, que puede alcanzar el prximo punto de parada exacta). En movimientos de posicionamiento aproximado, el punto de conmutacin se puede adelantar como mximo, hasta el comienzo de aproximacin del punto de inicio. La unidad se expresa en milisegundos. La instruccin puede ser S una llamada de un subprograma S una asignacin de valor a una variable S una instruccin OUTPUT (tambin Pulse).

Tiempo

INT

Instruccin

Prioridad

INT

Cada instruccin TRIGGER con llamada de subprograma deber ir asignada a una prioridad. Son permisibles valores entre 139 y 81128. En este caso se trata de las mismas prioridades que en las interrupciones (vase captulo 7). Los valores 4080 estn reservados por el sistema para una asignacin automtica de prioridades. Programe para ello PRIO=--1.

Tab. 18 Argumentos en la instruccin TRIGGER ProgExperteBHR5.2 09.03.01 es 159 de 197

Programacin por el experto

Secuencia de instruccin: LIN PUNTO2 C_DIS TRIGGER WHEN PATH = Y DELAY= X DO $OUT[2]=TRUE LIN PUNTO3 C_DIS LIN PUNTO4 C_DIS LIN PUNTO5 Al poderse desplazar el punto de conmutacin a partir del punto de movimiento del cual fue programado mas all de todos los puntos de posicionamiento aproximado siguientes hasta el prximo punto de parada exacta, es posible un desplazamiento del punto de conmutacin desde la zona de aproximacin PUNTO2 hasta PUNTO5. Si en esta secuencia de instrucciones el PUNTO2 no es de posicionamiento aproximado, entonces el punto de conmutacin solo podr ser desplazado hasta el punto de parada exacta PUNTO2.

PUNTO2

PATH Y<0 DELAY X

+
DELAY X

PUNTO5

PUNTO3
DELAY=0 PATH=0
Ejemplo de cifras: X= --10, Y= --20

+
PUNTO4

PATH Y>0

PUNTO2 Punto de parada exacta

DELAY= -10

PUNTO5

PATH= -20

PUNTO3

PUNTO4

Fig. 56 Zona de conmutacin cuando el punto de inicio es un punto de posicionamiento aproximado 160 de 197 ProgExperteBHR5.2 09.03.01 es

Trigger - Acciones de conmutacin referentes a la trayectoria (continuacin)

Casos especiales: G Desplazamiento COI Si se realiza una seleccin de paso en un movimiento de trayectoria, se produce un desplazamiento de coincidencia de paso COI. Al poder ser el punto inicial del desplazamiento COI uno cualquiera, no puede ser un punto inicial recomendable para una indicacin de distancia. Si delante de este tipo de movimiento se encuentran programadas instrucciones Trigger con indicacin de PATH, y se produce una seleccin de paso sobre estas instrucciones, se ejecutarn todas en el punto final. G No se puede realizar un posicionamiento aproximado Si no se puede realizar una aproximacin, se produce en este punto un movimiento con parada exacta. Pero ste bsicamente es tratado bajo el aspecto como si se fuese un movimiento de aproximacin. Las acciones de conmutacin que deban producirse sobre la trayectoria, permanecen almacenadas y se activarn en los puntos correspondientes. Sin embargo, por regla general, ya no sern muy exactas ya que resulta una trayectoria distinta y por consiguiente una longitud de trayectoria tambin distinta. Las acciones de conmutacin colocadas en la primera parte de la zona de aproximacin, debido a un valor negativo del PATH, se pueden disparar, como muy pronto, en el punto de aproximacin: LIN P1 C_DIS TRIGGER WHEN PATH=-120 DELAY=0 DO UP1() PRIO=-1 TRIGGER WHEN PATH=-70 DELAY=0 DO $OUT[2]=TRUE LIN P2 C_DIS En el ejemplo anterior ahora la distancia entre el punto de inicio y de destino debe ser 100 mm. Si se puede realizar un posicionamiento aproximado en P1, se ejecutar la llamada del subprograma UP1() 20 mm antes de alcanzar el punto de trayectoria ms cercano al punto de aproximacin P1. La activacin de la salida 2 se efecta unos 30 mm despus de este punto de la trayectoria. Si no se pudo realizar el movimiento de posicionamiento aproximado en P1, la trayectoria pasa a travs del punto P1, en el cual tambin es posicionado. Inmediatamente al salir de P1 se ejecuta la llamada del subprograma UP1(), se activa la salida 2 a una distancia de 30 mm de P1. G Cancelacin de un movimiento Si un movimiento es interrumpido, p. ej. mediante una seleccin de paso o por un reset, y no lleva a trmino, las acciones de conmutacin que todava no han sido ejecutadas, ya no sern ejecutadas y se borrarn (como nel caso de la indicacin DISTANCE). G Instruccin TRIGGER - referente a un trayecto para un movimiento PTP Si una instruccin PATH-TRIGGER con indicacin de trayecto es programada para que sea un movimiento PTP, el interpretador la rechazar durante la ejecucin. G Posicionamiento aproximado PTP - trayectoria Si una instruccin PATH-TRIGGER es programada para un movimiento cuyo punto de inicio es un punto de posicionamiento aproximado PTP -- trayectoria, entonces, dado que la zona de aproximacin completo es movimiento PTP, las acciones de conmutacin se realizarn, como muy pronto, al final de la zona de aproximacin. En una zona de aproximacin trayectoria -- PTP, todas las instrucciones TRIGGER an activas sin conmutar, se disparan en el punto de inicio de la zona de aproximacin. Ya que a partir de este punto se produce un recorrido PTP, sin opcin a asignarle una trayectoria.

ProgExperteBHR5.2 09.03.01 es

161 de 197

Programacin por el experto

En el ejemplo presentado a continuacin se han programado tanto acciones de conmutacin con indicacin de DISTANCE como indicacin de PATH. Cada uno de los puntos de conmutacin y la trayectoria de movimiento estn representados en Fig. 57. DEF TRIG ( ) ;--------- Seccin de declaracin --------EXT BAS (BAS_COMMAND :IN,REAL :IN) DECL AXIS HOME INT I SIGNAL ADHESIVO $OUT[3] ;---------- Inicializacin --------INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( ) INTERRUPT ON 3 BAS (#INITMOV,0 ) ;Inicializacin de velocidades, ;aceleraciones, $BASE, $TOOL, etc. $APO.CDIS=35 ;prefijar la distancia de aproximacin HOME={AXIS: A1 0,A2 -90,A3 90,A4 0,A5 30,A6 0} POS0={POS: X 1564,Y -114,Z 713,A 128,B 85,C 22,S 6,T 50} POS1={X 1383,Y -14,Z 713,A 128,B 85,C 22} POS2={X 1383,Y 200,Z 713,A 128,B 85,C 22} POS3={X 1527,Y 200,Z 713,A 128,B 85,C 22} POS4={X 1527,Y 352,Z 713,A 128,B 85,C 22} FOR I=1 TO 16 $OUT[I]=FALSE ENDFOR ;------------- Seccin principal-----------PTP HOME ;desplazamiento COI PTP POS0 TRIGGER WHEN DISTANCE=0 DELAY=40 DO $OUT[1]=TRUE TRIGGER WHEN PATH=-30 DELAY=0 DO UP1(2) PRIO=-1 LIN POS1 TRIGGER WHEN DISTANCE=1 DELAY=-50 DO PEGAMENTO=TRUE TRIGGER WHEN PATH=180 DELAY 55 DO PULSE($OUT[4],TRUE,0.9) TRIGGER WHEN PATH=0 DELAY=40 DO $OUT[6]=TRUE LIN POS2 C_DIS TRIGGER WHEN DISTANCE=0 DELAY=40 DO PULSE ($OUT[5],TRUE,1.4 ) TRIGGER WHEN PATH=-20 DELAY=-15 DO $OUT[8] LIN POS3 C_DIS TRIGGER WHEN DISTANCE=1 DELAY=-15 DO UP1 (7 ) PRIO= -1 LIN POS4 PTP HOME END DEF UP1 (NR :IN ) INT NR IF $IN[1]==TRUE THEN $OUT[NR]=TRUE ENDIF END

162 de 197

ProgExperteBHR5.2 09.03.01 es

Trigger - Acciones de conmutacin referentes a la trayectoria (continuacin)

POS 1 30

2B

POS 2 2
$OUT[3] $OUT[6]

$OUT[2]

2E
$OUT[5]

180 8

3B

$OUT[1]

$OUT[8]

POS 0 3 POS 3

20
$OUT[4] $OUT[7]

3E POS 4

Fig. 57 Puntos de conmutacin y trayectoria de movimiento pertenecientes al ejemplo anterior

ProgExperteBHR5.2 09.03.01 es

163 de 197

Programacin por el experto

9
9.1

Listas de datos
Listas de datos locales
Las listas de datos sirven para poner a disposicin declaraciones especficas de programa o de nivel superior. De estas forman parte tambin las informaciones de punto tales como p. ej. coordenadas: G G G G G Para cada archivo SRC se puede crear una lista de datos. Este llevar el mismo nombre que el archivo SRC y termina con la extensin .DAT. La lista de archivo es local a pesar de tratarse de un archivo propio. En una lista de datos slo pueden encontrarse declaraciones e inicializaciones. Se puede declarar en una lnea e inicializarse. No se acepta ninguna variable del sistema.

DEFDAT La declaracin de listas de datos se realiza de forma anloga a la declaracin de archivos SRC. Esta declaracin es canalizada mediante la clave DEFDAT y el nombre del programa y concluye con la clave ENDDAT. La inicializacin de variables se realiza mediante la asignacin de valor en las variables respectivas, directamente en la lnea de declaracin. PROG_1.SRC DEF PROG_1 ( ) HALT OTTO = 25 HALT END OTTO al principio es 0 PROG_1.DAT DEFDAT PROG_1 INT OTTO = 0 ENDDAT

Despus de ejecutar el programa OTTO = 25

DEFDAT PROG_1 INT OTTO = 25 ENDDAT

Fig. 58 Inicializacion y asignacin de valor de las variables declaradas en listas de datos A travs de la declaracin e inicializacin en la lista de datos, se prescinde de ello en el programa principal. Si se la asigna a la variable OTTO en el programa principal un nuevo valor, este tambin ser registrado en la lista de datos, permaneciendo en este de forma memorizada permanente (vase Fig. 58). Despus de efectuar un ON/OFF de la unidad de control se trabajar con el nuevo valor. Esto es imprescindible para una correccin online u otras correcciones de programa. Si un programa principal ha de iniciarse siempre con el mismo valor, deber declararse la variable correspondiente en el programa principal con el valor deseado. En las listas de datos deben encontrarse las siguientes declaraciones: G G G G G Declaraciones externas para subprogramas y funciones que pueden ser utilizadas en el archivo SRC. Declaraciones de importacin para variables importadas. Declaraciones e inicializaciones de variables utilizadas en un archivo SRC. Declaraciones de nombres de canal y de seal, que pueden ser utilizadas en el archivo SRC. Declaraciones de tipos de datos y de conteo (Struc, Enum) que pueden ser utilizados en la lista de datos o en el archivo SRC. ProgExperteBHR5.2 09.03.01 es

164 de 197

Listas de datos (continuacin)

9.2

Listas de datos globales


Las variables definidas en una lista de datos pueden ser facilitadas para que pueda acceder un programa principal externo. Para ello deber figurar y definirse en el encabezamiento de la lista de datos la clave opcional PUBLIC, como accesible al pblico. Ahora existen dos posibilidades de declarar la variable: G Una variable se define, por ej. con INT OTTO = 0 en la lista de datos, y en el programa principal externo debe importarse esta variable con la instruccin Import, para tener acceso a la misma. A una variable importada puede asignarse en el programa principal un nombre diferente que el original que tenia en la lista de datos de donde se realizo la importacin. Es decir que si desea utilizar en un programa PROG_2() la variable OTTO procedente de la lista de datos anterior PROG_1, deber programar junto a la palabra clave de PUBLIC en la lista de datos, las especificaciones de importacin siguientes dentro del programa PROG_2(): IMPORT INT OTTO_2 IS /R1/PROG_1 .. OTTO La variable OTTO de la lista de datos PROG_1.DAT en el directorio /R1 ahora es conocida bajo el nombre de OTTO_2 incluso en el programa PROG_2() (vase Fig. 59). PROG_1.SRC DEF PROG_1 ( ) HALT OTTO = 25 END PROG_2.SRC DEF PROG_2 ( ) IMPORT INT OTTO_2 IS /R1/PROG_1 .. OTTO END PROG_1.DAT DEFDAT PROG_1 PUBLIC INT OTTO = 0 ENDDAT

Fig. 59 Importacin de variables de listasde datosexternas con Import La variable es declarada como Variable global por ej. DECL GLOBAL INT OTTO = 0 y es accesible a todo otro programa principal externo sin instruccin de importacin. Cuando se ha declarado una variable global, no es posible cambiar el nombre de la variable en otro programa principal.

ProgExperteBHR5.2 09.03.01 es

165 de 197

Programacin por el experto

PROG_1.SRC DEF PROG_1 ( ) HALT OTTO = 25 END PROG_2.SRC DEF PROG_2 ( ) END

PROG_1.DAT DEFDAT PROG_1 PUBLIC DECL GLOBAL INT OTTO = 0 ENDDAT

Fig. 60 Importacin de variables de listas de datos externas sin Import La declaracin de una variable global solo est permitida en listas de datos. Si se utiliza en ficheros SRC o SUB, se genera un mensaje de fallos. En la lista global del sistema $CONFIG.DAT ya predefinida, pueden definirse variables, estructuras, canales y seales, vlidas por tiempo prolongado y de importancia superior para muchos programas. Las variables en el fichero $CONFIG.DAT no necesitan ser declaradas con IMPORT, dado que son conocidas automticamente por todos los programas de aplicacin. Informaciones adicionales accerca de $CONFIG.DAT se encuentran en el captulo [Variables y declaraciones], apartado [Variables y archivos del sistema].

166 de 197

ProgExperteBHR5.2 09.03.01 es

Listas de datos (continuacin)

ProgExperteBHR5.2 09.03.01 es

167 de 197

Programacin por el experto

10

Editor externo
Este programa adicional amplia el software del robot aadiendo funciones no disponibles en la superficie de operacin. Limpiar el programa Los puntos de trayectoria y los parmetros de movimiento no referenciados son borrados de la lista de datos. Colocacin y desplazamiento de lmites de carrera Manipulacin de bloques. -- Marcar y copiar, borrar o recortar un bloque. -- Invertir la trayectoria del robot en la zona marcada, es decir, que el primer punto programado del sector marcado de la trayectoria, ser el ltimo al cual se desplazar el robot, y el ltimo punto programado pasar a ser el primero. -- Efectuar con la trayectoria del robot una imagen especular en el plano X--Z del sector marcado, en el sistema de coordenadas universales. -- Modificar los parmetros de movimiento (velocidad, aceleracin, etc.) en la zona marcada. -- Correr todos los puntos dentro de la zona de trayectoria marcada en el sistema de coordenadas de la pieza (BASE), la herramienta (TOOL) o universales (WORLD) El corrimiento o giro puede efectuarse por la entrada manual de un valor offset en el sistema de coordenadas correspondiente, o por programacin por aprendizaje de puntos de referencia. -- Desplazamiento, especfico del eje, de todos los puntos de la zona marcada. Adaptar puntos de trayectoria -- a otra herramienta o -- a otro sistema de coordenadas de la pieza Adaptar puntos de trayectoria -- mientras un programa se est ejecutando en la unidad de control, pueden efectuarse desplazamientos de coordenadas de un punto en el sistema de coordenadas Tool, Base y universales.

168 de 197

ProgExperteBHR5.2 09.03.01 es

10

Editor externo (continuacin)

10.1

Arranque del editor externo


El editor externo est disponible a partir del grupo de usuarios Expertos. Acceda al editor externo a travs del men Inicializacin y la opcin Servicio. Inicial. > Servicio > Editor externo] Estando seleccionado el programa, no est disponible el men Inicializacin (puesta en servicio). En este caso, utilice la instruccin de men Procesar > Modificar que se ofrece a partir del grupo de usuarios Expertos. [Procesar > Modificar > Punto] A continuacin se abre el editor externo, pudindose efectuar las correcciones necesarias. Inmediatamente despus del arranque del editor aparece el dilogo Seleccionar archivos. Con las teclas del cursor y seleccione el fichero a editar. El usuario dispone de todos los archivos SRC del directorio R1 menos el archivo R1\MADA\, R1\SYSTEM\ y R1\TP\. Adems, pueden definirse archivos estndar (C:\KRC\UTIL\HOTEDIT.INI), que tampoco se indicarn en pantalla. Si el Editor externo es arrancado como programa fuera de lnea (offline), el software KRC arranca automticamente. Si usted ha marcado de esta manera el fichero deseado, ste se cargar en el editor una vez pulsada la tecla del softkey correspondiente o la tecla de entrada. El tiempo de duracin de carga depende del tamao del fichero. Si aparece el mensaje *.DAT--File not found (archivo *.DAT no encontrado), eso significa que ha intentado cargar en el editor un programa para el que no existe lista de datos. Si el fichero ha sido cargado con xito, el programa es presentado en forma parecida a la presentacin por el editor de la superficie de operacin.

En la lnea de estado del editor se muestra si el acceso tuvo lugar a travs del men de puesta en servicio o mediante la instruccin Procesar > Modificar. ProgExperteBHR5.2 09.03.01 es 169 de 197

Programacin por el experto

10.2

Operacin
Los elementos de la superficie de operacin normal se encuentran tambin en la del editor externo. As, se tiene aqu tambin a disposicin, funciones de estado, funciones con mens, softkeys, una ventana de programas, as como tambin una ventana de mensajes y una lnea de estados. Los mens tambin se pueden abrir pulsando primero la tecla ALT y luego la letra que aparece subrayada en el men. De la misma manera se puede seleccionar una instruccin del men. Teclas de estado Con las teclas de estado Arriba o Abajo, puede mover la marca de lnea (el foco) lnea por lnea hacia el comienzo o hacia el final de la lista. Las teclas del cursor " o #, as como las teclas PGUP y PGDN, cumplen la misma funcin.

Foco

Foco

Con las teclas PGUp o PgDn puede pasar pginas hacia adelante o hacia atrs. Para ello se debe desactivar la funcin NUM o utilizar un teclado externo. El contenido de la ventana de mensajes se borra Si usted pulsa la tecla de estado KRL, visualizar el programa tal como aparece en el modo del experto con los ajustes Abrir todas FOLD y Visualizar detalles (ASCII). En el rango FOLD se visualiza la instruccin marcada con el foco (fichero SRC). En el rango Datos se visualizan los datos correspondientes a la instruccin marcada (fichero DAT).

170 de 197

ProgExperteBHR5.2 09.03.01 es

10

Editor externo (continuacin)

6 Opciones

Pulsando la tecla de estado Lupa se regresa a la representacin del programa completo. Barra de teclas de softkey A esta tecla del softkey le corresponde la instruccin de men Cerrar, que cierra el programa actual pero permite al editor seguir funcionando. Ventana de mensajes En la ventana de mensajes se emiten mensajes relevantes para el editor externo. Nro. Tiempo Mensaje Resultado Lnea de estados En la lnea de estados se visualizan informaciones adicionales. NUM CAPS ExtEdit Palette 7:52 PM Est activada la entrada de nmeros en el bloque numrico La tecla de bloqueo de maysculas est desconectada El mdulo Externer Editor (Editor externo) est activo y se accedi a l a travs del men Inicializacin > Servicio El nombre del programa actualmente abierto La hora actual del sistema Tipo de mensaje y nmero de mensaje El momento en el que se cre el mensaje El tipo de mensaje La informacin sobre cmo se ha desarrollado una accin

ProgExperteBHR5.2 09.03.01 es

171 de 197

Programacin por el experto

10.3

Men Fichero
En este men se encuentran las funciones para la manipulacin de ficheros.
Fichero Abrir Guardar Imprimir Cerrar Salir Programa actual Todos los usuarios

10.3.1

Abrir
Al activarse la opcin Abrir aparece la ventana Seleccionar archivos tal como se ha descrito en el apartado 10.2.

10.3.2

Guardar
Si el contenido del archivo cargado en el editor fue modificado con las funciones ofrecidas, entonces, antes de memorizar la nueva versin de este archivo, o bien, si se cierra el editor, el sistema requiere una respuesta de seguridad si realmente se aceptan estas modificaciones. Si quiere Ud. aceptar ahora las modificaciones efectuadas, basta con pulsar la tecla de entrada, confirmando de esta manera la preseleccin. Los contenidos de la versin del fichero hasta ese momento existente y editado, se pierden indefectiblemente, por lo menos en parte. Para cancelar la accin, primero se debe pulsar una de las teclas del cursor para desplazar el foco hasta el botn No. A continuacin puede confirmarse la seleccin pulsando la tecla de entrada. La versin hasta ahora vlida del fichero editado queda en este caso sin modificar.

10.3.3

Salida
Esta instruccin permite la salida de programas en el soporte ajustado en bajo Opciones > Output setting (declaraciones sobre la edicin).
Fichero Abrir Guardar Salida Cerrar Salir Programa actual Todos los programas de usuario

Se dispone aqu de las siguientes funciones: Programa actual El fichero indicado en el editor externo es editado en la forma representada en la ventana del editor. KRC:\Palette.SRC ************************************* INI 1:PTP HOME Vel=100 % DEFAULT 2:PTP P1 CONT Vel=100 % PDAT1 Tool[1] Base[0] 3:LIN P2 CONT Vel=1.5 m/s CPDAT1 Tool[1] Base[0] 4:CIRC P3 P4 Vel=2 m/s % CPDAT2 Tool[1] Base[0] 5:PTP HOME Vel=100 % DEFAULT END 172 de 197 ProgExperteBHR5.2 09.03.01 es

10

Editor externo (continuacin)

Todos los programas de usuario Se editan todos los programas de aplicacin. Si no se ha declarado previamente una ruta de salida mediante Asegurar ruta, en el directorio C:\USERPROG se guardan de manera estndar medios Impresora y Archivo. Si se ha declarado Editor como medio de salida, la opcin Imprimir no estar disponible. La salida a travs de la opcin todos los usuarios (mnualles) puede tardar algn tiempo dependiendo del archivo al que se desea dar salida.

10.3.4

Cerrar
Si el fichero que se encuentra en el editor ha sido modificado desde el momento de la carga, puede Ud. primero asegurar las modificaciones (como descrito en el apartado 10.3.2). Despus de haber cerrado el archivo que se encuentra en el editor, a travs del men Fichero y de la opcin Abrir (vase tambin el apartado 10.3.1), puede cargarse otro archivo en el editor.

10.3.5

Salir
Si el fichero que se encuentra en el editor ha sido modificado desde el momento de la carga, puede Ud. primero asegurar las modificaciones (como descrito en el apartado 10.3.2). La ventana del editor se cierra y emerge nuevamente la superficie de operacin del software del robot.

ProgExperteBHR5.2 09.03.01 es

173 de 197

Programacin por el experto

10.4

Men Editar
Este men contiene una serie de funciones de bloque.
Editar Cortar Copiar Pegar como Borrar Seleccionar todo Trayectoria original Trayectoria inversa

Si desea marcar una zona, mantenga pulsada la tecla SHIFT (maysculas) y pulse la tecla de estado Arriba o Abajo (o bien la correspondiente tecla del cursor).

Zona marcada (marca de bloque) La marcacin de un bloque puede desactivarse por medio de la tecla ESC.

10.4.1

Cortar (CTRL-X)
Borra el sector de trayectoria marcado del programa, y lo coloca en el portapapeles preparado para insertar en otro lugar.

10.4.2

Copiar (CTRL-C)
Copia el sector de trayectoria marcado del programa, y lo coloca en el portapapeles preparado para insertar en otro lugar.

10.4.3

Pegar como ...


trayectoria original (CTRL+V) Pega el contenido del portapapeles en la misma secuencia como efectuado el recorte o el copiado. trayectoria inversa Pega nuevamente el contenido del portapapeles en la secuencia inversa. El ltimo punto de la trayectoria del sector de trayectoria marcado y recortado o copiado, es colocado al comienzo del bloque insertado; el primer punto de la trayectoria al final. Si por ejemplo, se ha programado por aprendizaje el recorrido hacia un dispositivo o til, esta trayectoria puede insertarse fcilmente como recorrido de retorno. De este modo no es necesario efectuar la programacin del camino de retorno.

10.4.4

Borrar
El sector de trayectoria marcado es borrado sin memorizarlo en el portapapeles. El borrado de un sector de trayectoria marcado, no puede ser repuesto. Si usted ha borrado por descuido una parte del programa, cierre el fichero sin memorizar las modificaciones y luego vuelva a abrirlo.

10.4.5

Seleccionar todo (CTRL+A)


Queda marcado el programa completo que se encuentra cargado en el editor.

174 de 197

ProgExperteBHR5.2 09.03.01 es

10

Editor externo (continuacin)

10.5

Men Utilidades
En este men se encuentran opciones para la manipulacin geomtrica del programa.
Utilidades Espejo Entrada manual Cambio de bloque Limpiar lista de ficheros Ajuste del TCP Ajuste de estructura Base TCP World Ejes

Con las teclas del cursor o podr mover la marca de insercin de un campo de entrada a otro.

10.5.1

Espejo
+Z

Con funcin puede generar, en el plano X--Z del sistema de coordenadas $ROBROOT, una simetra especular de los puntos de trayectoria programados. Para ello, debe estar marcado como mnimo un paso de movimiento. P1 P1 P2 P2

ROBROOT --Y P3

P3

+X Despus de haber seleccionado la opcin, se presenta en pantalla una ventana de dilogo, en la cual Ud. debe indicar el nombre del fichero, en donde se ha de memorizar el programa cargado con los puntos de trayectoria simetrizados.

Pulsando la tecla de entrada se inicia el procedimiento y el programa se guarda con el nombre indicado. Este programa puede ser cargado posteriormente en el editor. Si quiere cancelar la accin, pulse la tecla ESC. ProgExperteBHR5.2 09.03.01 es 175 de 197

Programacin por el experto

10.5.2

Entrada manual
Con ayuda de esta funcin puede Ud. efectuar el corrimiento de la posicin de los puntos de trayectoria programados en: -- el sistema de coordenadas de la pieza (BASE) -- el sistema de coordenadas de la herramienta (TCP) -- el sistema de coordenadas universales (WORLD) o -- coordenadas especficas del eje (EJES). Despus de seleccionar una de las posibles opciones, aparece en pantalla una ventana para la declaracin de los valores deseados. Dependiendo del sistema de coordenadas declare aqu el corrimiento y el giro, o los ngulos de los ejes. BASE Bajo corrimiento cartesiano base de un punto se entiende un corrimiento relativo de un punto cualquiera en el espacio en el sistema de coordenadas originales (WORLD), que se encuentra en el pie del robot. Por medio del ejemplo aqu representado, quiere aclararse el corrimiento cartesiano base de un punto: Valores de entrada = valores relativos --Y [mm]; --X [mm]; A+[] Z+

En este ejemplo se producira un corrimiento relativo negativo en X,Y y un giro positivo relativo sobre Z.

A+ Pnuevo X+ Yantiguo -Yr Pantiguo -Xr Y+ Xantiguo

El vector de corrimiento se introduce numricamente en el correspondiente campo de entrada. Se puede pasar de un campo de entrada a otro con las teclas del cursor y . El corrimiento se inicia con Instruc. OK y se puede cancelar en cualquier momento con Interrupcin o Esc. Introduzca en los campos de entrada los valores del corrimiento (X, Y, Z) en [mm] y del giro (A, B, C) en [Grados].

176 de 197

ProgExperteBHR5.2 09.03.01 es

10

Editor externo (continuacin)

TCP Un corrimiento cartesiano TCP de un punto significa, que un punto cualquiera en el espacio es desplazado de forma relativa respecto al sistema de coordenadas TOOL. Por medio del ejemplo aqu representado quiere aclararse el corrimiento cartesiano TCP de un punto:

Zantiguo

Pnuevo -- Zr Cr C Yantiguo Z+ Pantiguo X+ -- Yr Y+

En este ejemplo se producira un corrimiento relativo negativo en Y, Z y un giro relativo positivo sobre X []. Un corrimiento relativo en X no es tenido en cuenta!

Valores de entrada = valores relativos --Y [mm]; --Z [mm]; C+[]

El vector de corrimiento se introduce numricamente en el correspondiente campo de entrada. Se puede pasar de un campo de entrada a otro con el cursor arriba/abajo. El corrimiento se inicia con Instruc. OK y se puede cancelar en cualquier momento con Interrupcin o Esc. Introduzca en los campos de entrada los valores del corrimiento (X, Y, Z) en [mm] y del giro (A, B, C) en [Grados].

ProgExperteBHR5.2 09.03.01 es

177 de 197

Programacin por el experto

WORLD Bajo corrimiento WORLD de un punto, se entiende que el sistema de coordenadas de origen, que de forma estndar se encuentra en el pie del robot, es desplazado relativamente. El ejemplo que ofrecemos pretende aclarar el corrimiento WORLD de un punto: Valores de entrada = valores relativos +Y [mm]; +X [mm]; A--[] Z+

En este ejemplo se producira un corrimiento relativo positivo en X, Y y un giro positivo negativo sobre Z.

Porg

Z+nuevo Y+ Pnuevo +Yr X+nuevo A-Y+nuevo Introduzca en los campos de entrada los valores del corrimiento (X, Y, Z) en [mm] y del giro (A, B, C) en [Grados]. +Xr

X+

178 de 197

ProgExperteBHR5.2 09.03.01 es

10

Editor externo (continuacin)

Ejes Bajo corrimiento especifico del eje de un punto se entiende, que un punto cualquiera en el espacio es alcanzado por medio de un movimiento relativo de los ejes. Por medio de la figura aqu representada, quiere efectuarse un corrimiento relativo del eje 5.

Pantiguo A5 nuevo A5 antiguo Pnuevo Valores de entrada = valores relativos +A5 [] En este ejemplo se producira un giro relativo positivo de A5 []. Un giro relativo de los dems ejes no es tenido en cuenta! La declaracin del giro del eje debe efectuarse en grados o en incrementos del correspondiente eje. Se puede pasar de un campo de entrada a otro las teclas del cursor arriba/abajo. El corrimiento se inicia con Instruc. OK y se puede cancelar en cualquier momento con Interrupcin o Esc. Introduzca los valores de los ngulos de los ejes (A1 ... A6) en [Grados]. Las indicaciones tambin pueden efectuarse incrementalmente (E1--E6)[Inc].

Incrementos = Impulsos de giro de los accionamientos de los ejes

ProgExperteBHR5.2 09.03.01 es

179 de 197

Programacin por el experto

10.5.3

Cambio de bloque
Con ayuda de esta funcin puede Ud. modificar datos de movimiento en las partes marcadas en el programa. Los bloques se marcan pulsando la tecla de estado ltimo, o Siguiente y manteniendo pulsada la tecla SHIFT. Despus de la llamada de la funcin, aparece la ventana que se muestra ms abajo:
6 Opciones

004 003 002 001

OK OK

Con las teclas del cursor o podr mover la marca de insercin de un campo de entrada a otro. Los campos de listas se abren con la combinacin de teclas ALT + , O ALT + . Softkey Modificar Cancelar Significado Una vez introducidas las modificaciones deseadas, pulse la tecla del softkey Cambio. La funcin puede ser abandonada en cualquier momento pulsando la tecla del softkey Cancelar.

10.5.4

Limpiar lista de ficheros


Una vez activada esta funcin, los puntos de trayectoria y parmetros de movimiento no referenciados se borran de la lista de datos (*.DAT) perteneciente al programa.

180 de 197

ProgExperteBHR5.2 09.03.01 es

10

Editor externo (continuacin)

10.5.5

Ajuste del TCP o de BASE


Con esta funcin puede adaptar el programa cargado en el editor a otro sistema de coordenadas de la herramienta (TOOL) o de la pieza (BASE). Una vez activada la funcin, se visualiza la ventana que aparece en la figura de ms abajo. A modo de ejemplo, en ella se ha seleccionado el ajuste del TCP.
6 Opciones

004 003 002 001

OK OK

Se visualizan todos los programas con aquellos puntos a los cuales hace referencia la adaptacin de Tool o de Base. Para poder mover la marca de insercin de campo en campo, deben estar activadas las funciones de mando del cursor en el campo numrico. Para ello pulse brevemente la tecla NUM. A continuacin podr desplazar la marca de insercin de un campo a otro con la tecla SHIFT (maysculas). Los campos de listas se abren con la combinacin de teclas ALT + , O ALT + . En el campo de listas, dentro de Nuevos datos de TCP, seleccione la herramienta a la que desea adaptar el programa cargado. En los campos de entrada X=, Y=, Z=, A=, B= y C= tambin pueden indicarse manualmente los nuevos datos de herramienta. Una vez introducidas las modificaciones deseadas, pulse la tecla del softkey Cambio. Podr salir de esta funcin en cualquier momento pulsando la tecla del softkey Cancelar.

ProgExperteBHR5.2 09.03.01 es

181 de 197

Programacin por el experto

10.6

Men HotEdit
El men HotEdit permite correr en lnea (on line) las coordenadas del punto en el sistema de coordenadas Tool, Base y universales durante la ejecucin de un programa. El punto de men Limits permite limitar este corrimiento.
HotEdit Base TCP World TTS Limits

Limits - Base/World Limits - TTS

La correccin del punto en lnea (online) solo ser tenida en cuenta si el puntero de procesamiento en avance o el puntero de ejecucin principal no han alcanzado en ese momento el paso de instrucciones. Los valores mximos para el desplazamiento quedan definidos en el men Limits. La instruccin de men HotEdit > TCP slo estar disponible si se ha iniciado el editor a travs del men de puesta en servicio.

10.6.1

Base, TCP y World


Marque el paso o los pasos de movimiento que desea correr. Despus de seleccionar la opcin Base, TCP o World en el borde inferior del display aparece una ventana de dilogo en la que se puede introducir el corrimiento (X, Y, Z) y el giro (A, B, C) con respecto al sistema de coordenadas correspondiente. Si se han marcado varios pasos de movimiento, stos se corrigen en el sistema de coordenadas WORLD o BASE. La ventana de dilogo de la figura sirve como ejemplo para las dems ventanas de dilogo.

Con las teclas del cursor o podr mover la marca de insercin de un campo de entrada a otro. Si ha introducido todos los datos necesarios para el corrimiento, pulse la tecla del softkey Ok. Si desea finalizar la accin sin efectuar ningn corrimiento en el programa, pulse la tecla del softkey Cancelar. A continuacin, la ventana de dilogo se desactivar y aparecern dos nuevas teclas de softkey.

182 de 197

ProgExperteBHR5.2 09.03.01 es

10

Editor externo (continuacin)

Con la tecla del softkey Cancelar puede interrumpir en cualquier momento la introduccin de datos sin memorizar las modificaciones efectuadas. Ahora puede Ud. asignar los valores declarados, pulsando la tecla del softkey correspondiente. Hasta este instante, la modificacin de datos todava no fue memorizada, y por ello todava puede anularse la accin. Si Ud. ha decidido de otra manera, puede anular la asignacin. Para ello se dispone del softkey que se ve al lado. Este botn recin est disponible, despus de haber efectuado la asignacin de valores. Esta funcin es especialmente til cuando se est ejecutando un programa y se puede constatar inmediatamente el efecto del corrimiento. Si el corrimiento responde a sus necesidades, puede guardar los cambios de las coordenadas del punto en el fichero DAT. Si alguno de los valores declarados se encuentra fuera de las tolerancias, aparece en la ventana de corrimiento del programa una observacin o un mensaje de fallo, que el valor declarado rebasa los lmites de tolerancia.

ProgExperteBHR5.2 09.03.01 es

183 de 197

Programacin por el experto

10.6.2

TTS (Sistema de coordenadas de correccin)


Esta funcin sirve para optimizar puntos en el espacio con el trpode de tecnologa que acompaa a la trayectoria (TTS) y puede ser utilizada en instrucciones tecnolgicas (por ej. soldadura al arco o aplicacin de pegamentos). La correccin TTS est disponible a partir del grupo de usuarios Expertos y se puede utilizar en todos los modos de servicio. Mediante TTS pueden corregirse las coordenadas cartesianas de un punto con tecnologas KUKA o tecnologas del cliente. La correccin se efecta en la direccin de avance de la herramienta. Normalmente, la direccin de avance es el eje X de la herramienta medida. Dependiendo de la configuracin, tambin puede utilizarse el eje Z como direccin de avance. En cada correccin de punto se busca en la lista de datos local (*.DAT) los puntos correspondientes con sus coordenadas cartesianas. Si uno de los puntos necesarios no es encontrado, se emite el correspondiente mensaje de fallos. La bsqueda del punto el cual indica la direccin de la trayectoria, se efecta siempre desde el lugar donde se encuentra el punto a corregir, hacia adelante. La excepcin la forma el punto final de un contorno de soldadura o de aplicacin de un cordn de pegamento, dado que aqu se busca en los nmeros de pasos prximos ms bajos. Deben tenerse en cuenta las siguientes excepciones: G G G G Se ignora un cambio del sistema de coordenadas base entre dos pasos de movimiento; Pasos CIRC con una indicacin de ngulo del crculo (CA) no se corregirn; En la correccin de un punto auxiliar se utiliza la orientacin de la herramienta en correspondencia con la del punto de arranque; Las coordenadas de un punto es una lista de datos de variables simple o una componente de ella (no se permiten variables importadas, tampoco variables de datos de mquina).

184 de 197

ProgExperteBHR5.2 09.03.01 es

10

Editor externo (continuacin)

10.6.2.1 Position-TTS Marque en el editor externo la instruccin de movimiento deseada y active el comando HotEdit > TTS. La opcin TTS slo est disponible, cuando se ha seleccionado un paso de movimiento en una aplicacin de soldadura o de pegamento. Si se han marcado varias instrucciones de movimiento, la correccin hace referencia siempre a la primera instruccin marcada. Utilice las teclas del cursor o , para colocar el foco en el lugar deseado. Con las teclas del bloque numrico d entrada a los nuevos valores. Eje X El eje X en el sistema de coordenadas TTS responde a un vector unitario a lo largo de la tangente a la trayectoria. +Z +Y +X P2

+Z +Y +X En una instruccin LIN, el eje X se desplaza a lo largo de la trayectoria de movimiento P1 +Z +Z +Y +Y

+X

+X P2 En una instruccin CIRC el eje X se mueve a lo largo de la tangente de la trayectoria

P1

El eje X del sistema de coordenadas de la herramienta no debe encontrarse de forma paralela a la tangente de la trayectoria, caso contrario el sistema de coordenadas de correccin no puede ser creado. En este caso se emite el correspondiente mensaje de fallo.

ProgExperteBHR5.2 09.03.01 es

185 de 197

Programacin por el experto

Eje Y A partir del vector unitario a lo largo de la tangente de la trayectoria (+X) y del eje X del sistema de coordenadas de la herramienta (+XTool) se genera un plano. El eje Y se encuentra perpendicular a este plano. +Z +Y +X +XTool P2

El eje Y se encuentra perpendicular al plano generado mediante +X y +XTool P1 Eje Z Del vector unitario a lo largo de la tangente de la trayectoria (+X) y el eje Y (+Y) se genera un plano. El eje Z se encuentra perpendicularmente a este plano. +Z +Y +X P2

El eje Z se encuentra perpendicular al plano generado mediante +X e +Y P1 Correccin del punto PTP, LIN Con el softkey Cancelar puede Ud. finalizar la entrada en cualquier momento. Despus de declarar las modificaciones en los campos de entrada, pulse esta tecla del softkey. Ahora puede Ud. asignar los valores declarados, pulsando la tecla del softkey correspondiente. Hasta este instante, la modificacin de datos todava no fue memorizada, y por ello todava puede anularse la accin. Si Ud. ha decidido de otra manera, puede anular la asignacin. Para ello se dispone del softkey que se ve al lado. Este botn recin est disponible, despus de haber efectuado la asignacin de valores. Guarde los cambios.

186 de 197

ProgExperteBHR5.2 09.03.01 es

10

Editor externo (continuacin)

Correccin del punto CIRC Con esta tecla del softkey puede finalizar la entrada en cualquier momento sin guardar los cambios efectuados. Despus de haber introducido los cambios, asigne al punto intermedio (PI) las correcciones correspondientes. Con este softkey selecciona Ud. el punto final (PF), despus de haber dado entrada a las modificaciones en los campos de entrada. Ahora puede asignar los valores introducidos pulsando la correspondiente tecla del softkey. Hasta este instante, la modificacin de datos todava no fue memorizada, y por ello todava puede anularse la accin. Si cambia de opinin, puede anular la asignacin. Para ello se utiliza la tecla del softkey que aparece a un lado. Este botn slo est disponible una vez asignados los valores. Si el desplazamiento responde a sus necesidades, asegure las coordenadas del punto.

10.6.3

Limite
Slo se permite una correccin en lnea (online) hasta los valores mximos, que pueden ajustarse mediante las funciones Limits--Base/World (Lmites Base/World) o Limits--TTS (Lmites TTS). Las tolerancias mximas permitidas se definen por medio del fichero C:\KRC\UTIL\HOTEDIT.INI. Si se indica un valor mayor, se emite automticamente un mensaje de fallo.

Para la correccin TTS, valores lmites mayores de 5 mm carecen de sentido. Utilice las teclas del cursor o , para colocar el foco en el lugar deseado. Con las teclas del bloque numrico, defina las nuevas tolerancias. Los valores introducidos no son aceptados. Memoriza las tolerancias introducidas.

10.6.3.1 Limits - Base/World En la seleccin del punto del men aparece la ventana en la cual se indican los valores de desplazamiento mximos y que pueden ser modificados correspondientemente. Con esta tecla del softkey, puede finalizar la entrada en cualquier momento. Pulse esta tecla del softkey para guardar los valores y cerrar la ventana.

10.6.3.2 Limits - TTS Esta funcin permite definir los valores lmite de las correcciones TTS. Estos valores lmite son controlados automticamente cuando tiene lugar la correccin del punto.

ProgExperteBHR5.2 09.03.01 es

187 de 197

Programacin por el experto

10.7

Men Ext Utilidades


Aqu se ofrecen las funciones para la simetra a espejo, corrimiento y ajuste de los lmites de carrera software.
Ext. Utilidades Fichero - Espejo Fichero - Cambiar Limite cambiado 2 puntos 6-Puntos

Este men slo est disponible mientras no se haya cargado ningn programa en el editor externo.

10.7.1

Fichero - Espejo
Al contrario que la funcin Espejo, que permite simetrizar puntos de trayectoria marcados en pasos de movimiento seleccionados, la funcin Fichero--Espejo permite simetrizar programas de movimientos completos. Despus iniciar esta funcin, indique en primer lugar el fichero fuente que desea simetrizar.

Con las teclas del cursor " o #, seleccione el fichero que desea simetrizar. Con la tecla del softkey Cancelar, podr abandonar esta funcin en cualquier momento. Despus de marcar el fichero deseado, pulse la tecla del softkey Flecha a derecha.

188 de 197

ProgExperteBHR5.2 09.03.01 es

10

Editor externo (continuacin)

Para el fichero simetrizado, indique un nombre compuesto de un mximo de 8 caracteres. Con esta tecla del softkey regresar a la ltima pgina, donde puede seleccionar otro fichero fuente. Una vez introducido el nombre deseado para el fichero, pulse esta tecla del softkey.

ProgExperteBHR5.2 09.03.01 es

189 de 197

Programacin por el experto

Ahora podr agregar un comentario, que aparecer visualizado en el navegador. Con esta tecla del softkey regresar a la ltima pgina, donde puede introducir un nombre para el fichero que desea crear (fichero simetrizado). Despus de introducir el comentario deseado, pulse esta tecla del softkey. A continuacin se crear el programa correspondiente.

10.7.2

Fichero - Cambiar
Esta funcin permite, mediante un vector, mover la posicin de los puntos de trayectoria marcados (2 puntos), o bien mover su posicin y girar al mismo tiempo el sistema de coordenadas de referencia (6 puntos). Cambio, 2 puntos La funcin de desplazamiento de 2 puntos requiere la programacin por aprendizaje de un fichero de referencia (nombre cualquiera; .src, .dat). En este fichero de referencia se memorizan dos puntos. Estos puntos definen el vector de desplazamiento (X, Y, C), medida en la cual se han de desplazar los puntos marcados. Cambio, 6 puntos La funcionalidad del sistema de desplazamiento de 6 puntos, trabaja con el mismo principio. En el fichero de referencia correspondiente debe programarse por aprendizaje un total de seis puntos. Los primeros tres puntos definen la base fuente, los ltimos tres, la base de destino. Para fuente y destino deben programarse puntos idnticos. Con estos valores se calculan las bases. El corrimiento y el giro entre bases fuente y de destino est determinado por el valor en que los puntos marcados deben ser desplazados. El vector debe estar programado en un fichero ya antes del llamado de la funcin. Adems deben haberse marcado los distintos pasos de movimiento que se han de mover. Despus de seleccionar la opcin Corrimiento (Cambio) 2 puntos o bien, Corrimiento (Cambio) 6 puntos, el programa necesita la informacin respecto al fichero de referencia.

Con la tecla del softkey Cancelar, podr abandonar esta funcin en cualquier momento.

190 de 197

ProgExperteBHR5.2 09.03.01 es

10

Editor externo (continuacin)

10.7.2.1 Utilizar el fichero de referencia existente Esta tecla del softkey permite indicar el fichero de referencia y el fichero que debe ser desplazado.

Seleccione en primer lugar el fichero de referencia con las teclas del cursor y a continuacin pulse la tecla del softkey Flecha a derecha. Con esta tecla del softkey, regresar a la pgina anterior.

ProgExperteBHR5.2 09.03.01 es

191 de 197

Programacin por el experto

Utilice de nuevo las teclas del cursor para marcar el fichero que desea desplazar. A continuacin, pulse de nuevo la tecla del softkey Flecha a derecha. Con esta tecla del softkey, regresar a la pgina anterior. A continuacin se carga en el editor el fichero a desplazar. Marque en l las instrucciones de movimiento que desea desplazar.

Pulse de nuevo la tecla del softkey Flecha a derecha. A continuacin los puntos seleccionados son desplazados en el fichero. El avance del proceso es visualizado en la ventana de mensajes. Con esta tecla del softkey, regresar a la pgina anterior. En la ventana de mensajes se muestra el resultado de la accin. 10.7.2.2 Crear un nuevo fichero de referencia

Con este softkey se crea un nuevo fichero de referencia. A continuacin se selecciona este nuevo programa de referencia, para que el operario programe por aprendizaje, los puntos necesarios.

Despus de la programacin por aprendizaje, anule la seleccin del programa e inicie de nuevo el editor externo. Contine tal como se describe en el apartado 10.7.2.1. 192 de 197 ProgExperteBHR5.2 09.03.01 es

10

Editor externo (continuacin)

10.7.3

Limite cambiado
Con ayuda de esta funcin, es posible adaptar los lmites de carrera software de los distintos ejes a los programas de movimiento. Para ello, debe iniciar la funcin Limite cambiado y, con la tecla de seleccin de ventana, regresar a la superficie de operacin de la unidad de control del robot. Una vez en ella, inicie los programas de movimiento cuyos valores de ejes son controlados en segundo plano. Despus de ejecutar todos los programas que necesite, active de nuevo la funcin. Los valores averiguados de esta manera pueden establecerse como interruptores de fin de carrera de software. Las posiciones de los ejes son controladas en segundo plano mientras la funcin Lmite cambiado se encuentra activa. Los valores mximos y mnimos que aparecen en cada caso, as como las posiciones actuales de los ejes A1 ... A6 se visualizan en los campos correspondientes. Por medio de una casilla de verificacin pueden marcarse los ejes a los cuales se desea asignar los lmites de carrera. Para seleccionar los ejes deseados, utilice las teclas del cursor. La tecla espaciadora oficia de llave de conmutacin, para activar o desactivar el eje correspondiente. Poner una tilde significa que para ese eje se puede establecer el , debe activarse el interruptor de software de fin de carrera. Con Reset se pueden restablecer los valores originales de los lmites de carrera de software. Pulsando la tecla del softkey Set, se definen de nuevo los interruptores de software de fin de carrera de los ejes seleccionados. Esta accin se puede cancelar en cualquier momento (tambin ms tarde) pulsando la tecla del softkey Reset. A los valores medidos en cada eje se agrega un margen de seguridad de 5.

ProgExperteBHR5.2 09.03.01 es

193 de 197

Programacin por el experto

10.8

Men Opciones
Opciones Ajuste de salida Impresora Editor Fichero Asignar ruta

El men Opciones sirve para establecer determinados ajustes bsicos en el editor externo.

10.8.1

Ajuste de salida
Este men permite determinar el medio de salida deseado, que se puede utilizar en Salida> Programa actual o Imprimir > Usuarios. Mientras no se defina ningn medio de salida, los datos se emitirn en un archivo de texto siguiendo la ruta ajustada en Set Path (asignar ruta). Si no se ha definido ninguna ruta de salida, se utilizar la ruta estndar C:\USERPROG. Impresora Si se ha configurado una impresora en el sistema operativo, sta ser la que se utilice para emitir los datos. Si no ha sido configurada ninguna impresora, se edita, en cambio, el mensaje correspondiente en la ventana de mensajes. Editor El programa seleccionado se carga en el editor WordPad del sistema operativo, donde podr ser editado. Fichero Si se emite el programa actual mediante la funcin Print (imprimir), este programa se guarda como fichero de texto en la ruta establecida con Set Path (asignar ruta). Si se emiten todos los programas del usuario mediante la funcin Print (imprimir), en la carpeta definida mediante Set Path (asignar ruta) se crea el subdirectorio USERPROG y en l se guardan los programas como ficheros de texto. Con un editor de textos se puede tener acceso a cada uno de los programas guardados y tambin modificarlos, en caso necesario. Asignar ruta Esta opcin slo es necesaria cuando se quieran guardar programas como fichero en el disco duro. En la ventana de dilogo puede indicarse el directorio de destino as como tambin el nombre del fichero a imprimir. Cuando se emiten todos los programas del usuario a travs de File (archivo) se crea el subdirectorio USERPROG y en l se guardan los ficheros de texto.

194 de 197

ProgExperteBHR5.2 09.03.01 es

10

Editor externo (continuacin)

10.9

Men Ayuda
Ayuda Versin Permanecer arriba

En este men puede consultar la versin y seleccionar una opcin de visualizacin.

10.9.1

Versin
En la ventana de mensajes aparece el nmero de versin del editor externo.
Nro. 003 002 001 Tiempo 17:16:31 17:16:27 17:16:27 Mensaje Version Fichero abrir ExtEdit start Resultado 5.0.26 OK OK

Nmero de versin

10.9.2

Permanecer arriba
Despus de haber seleccionado esta opcin ya no aparece ms en primer plano la superficie de operacin del software del robot hasta finalizar el editor.

ProgExperteBHR5.2 09.03.01 es

195 de 197

Programacin por el experto

NOTAS:

196 de 197

ProgExperteBHR5.2 09.03.01 es

10

Editor externo (continuacin)

ProgExperteBHR5.2 09.03.01 es

197 de 197

Index

Smbolos
.ERR, 11 # -- smbolo, 39 #BASE, 66 , 84 #CONSTANT, 82 #CSTEP, 20 #GO, 20 #INITMOV, 82 , 84 #ISTEP, 20 #JOINT, 83 #MSTEP, 20 #PATH, 86 #PSTEP, 20 #TCP, 66 #VAR, 82 $ACC.CP, 81 $ACC.ORI1, 81 $ACC.ORI2, 81 $ACC_AXIS, 67 , 81 $ADVANCE, 91 $ALARM_STOP, 54 , 55 $APO.CDIS, 96 , 98 $APO.CORI, 96 , 98 $APO.CPTP, 94 $APO.CVEL, 96 , 98 $APO_DIS_PTP, 94 $BASE, 64 , 71 $CIRC_TYPE, 84 , 87 $CONFIG.DAT, 8 , 55 $CUSTOM.DAT, 55 $CYCFLAG, 53 $FLAG, 53 $IBUS_ON, 55 $IPO_MODE, 66 $MACHINE.DAT, 7 , 55 $NULLFRAME, 71 $NUM_AX, 55 $ORI_TYPE, 82 , 87 $OUT_C, 125 $POS_ACT, 65 , 66 $PRO_MODE, 20 $PSER, 55 $ROBCOR.DAT, 7 , 56 $ROBROOT, 64 , 71 $SET_IO_SIZE, 125 Index -- i

$SINGUL_POS[3], 78 , 80 $TIMER, 53 $TIMER_FLAG, 53 $TIMER_STOP, 53 $TOOL, 64 , 71 $VEL.CP, 81 $VEL.ORI1, 81 $VEL.ORI2, 81 $VEL_AXIS, 67 , 81 $WORLD, 64 , 71

A
Abrir todas FOLD, 18 ABS(X), 51 Accin de conmutacin, 159 Aceleracin, 80 Aceleracin de eje, 68 ACOS(x), 51 Activar bits, 49 Activar interrupciones, 146 Agregado, 36 Ajuste de BASE, 181 Ajuste del TCP, 181 Ambigedades, 75 ngulo circular, 89 ANIN, 131 ANIN OFF, 132 ANIN ON, 132 ANIN y ANOUT, 129 ANOUT OFF, 130 ANOUT ON, 130 Aproximacin LIN--CIRC, 100 Archivos del sistema, 53 Arco coseno, 51 Arco seno, 51 Arco tangente, 51 rea de la base, 75 rea por encima de la cabeza, 75 Asignacin de valor, 27 ATAN2(Y,X), 51 AXIS, 38 , 62

B
B_AND, 48 , 50 B_EXOR, 48 , 50

Index

B_NOT, 48 , 50 B_OR, 48 , 50 BAS.SRC, 8 , 73 BASE, 66 Bidimensional, 34 Bin Dec, 31 Bloquear / liberar, 146 BOOL, 30 , 32 Borrar, 14 BRAKE, 150 Bucle rechazante, 110 Bucles, 109 Bucles de conteo, 109 Bucles no rechazantes, 111 Bucles sinfn, 112

C
C_DIS, 96 , 98 C_ORI, 96 , 98 C_PTP, 94 C_VEL, 96 , 98 CA, 89 Cadena cinemtica, 65 , 66 Cadenas de caracteres, 36 Cambio de bloque, 180 Cambio de tiles, 104 Campo bidimensional, 34 Campo tridimensional, 35 Campo unidimensional, 33 Campos, 33 Cantidad, 51 CELL.SRC, 7 Cerrar todas FOLD, 18 CHAR, 30 , 32 Cinemticas de robot ambiguas, 75 CIRC, 89 CIRC !, 105 CIRC_REL, 89 COI, 74 Coincidencia de paso, 74 Combinacin lgica, 47 Combinacin lgica de frames, 42 Combinacin lgica O, 48 Combinacin lgica O exclusivo, 48 Combinacin lgica Y, 48 Comentarios, 26

Compilador, 11 Compilar, 11 Concepto de archivo, 8 CONFIRM, 116 Constante + referido a la trayectoria, 86 Constante + referido al espacio, 84 Continous Path, 80 CONTINUE, 93 Contorno de posicionamiento aproximado, 93 Control de ejecucin del programa, 107 Control de la orientacin, 82 Copiar, 14 Correccin de programa, 13 Cortar, 14 COS(X), 51 Crear programas y editarlos, 10 Crear un programa nuevo, 10 Criterio de distancia, 96 Criterio de orientacin, 96 Criterio de velocidad, 96 CSTEP, 20 CTRL--C, 14 CTRL--V, 14 CTRL--X, 14

D
DECL, 29 Declaracin, 9 DEF, 8 , 136 DEFDAT, 164 DEFFCT, 137 Desactivacin de bits, 49 Desactivar interrupciones, 146 Desplazamiento a Home, 74 DIGIN OFF, 134 DIGIN ON, 134 Disparo por flancos, 146 DISTANCE, 157 Duracin, 28

E
E6AXIS, 38 Editar, 11 Editor, 13 Editor Externo, 168 Ejecucin en avance, 91 Index -- ii

Index

Ejecucin principal, 91 ELSE, 107 END, 8 ENDFOLD, 17 ENDFOR, 109 ENDLOOP, 112 ENDWHILE, 110 Entrada manual, 176 Entradas / salidas digitales, 121 Entradas analgicas, 131 Entradas digitales, 134 Entradas y salidas binarias, 118 ENUM, 39 Esconder partes de un programa, 17 Espejo, 175 Estado, 71 , 74 , 75 Estructura de archivos, 8 Estructura y creacin de programas, 7 Estructuras, 36 EXIT, 112 EXT, 73

I
Identificacin de bloque, 108 IF, 107 ndice, 33 ndice de campo, 33 INI, 73 Insertar, 14 Instruccin, 9 Instrucciones de entrada/salida, 118 Instrucciones de espera, 113 Instrucciones de movimiento, 61 Instrucciones de salto, 107 INT, 30 , 31 Interpolacin referida a la base, 65 Interpolacin referida a la garra, 66 INTERRUPT, 144 Inversin, 48 IR_STOPM.SRC, 8 ISTEP, 20

K
KSD, 7

F
Filtrado de bits, 49 Flags, 53 , 154 Flags cclicos, 53 FOLD, 17 FOLD actual abr/cer, 18 FRAME, 38 Funciones, 8 , 136 Funciones de bloque, 13

L
Lenguaje de mquina, 11 Limits -- Base/World, 187 Limits -- TTS, 187 Limpiar lista de ficheros, 180 LIN, 87 LIN !, 105 LIN_REL, 87 Lista de datos, 9 Lista de ficheros, 9 Lista de parmetros, 139 Listas de datos, 164 Listas de datos globales, 165 Listas de datos locales, 164 Local, 137 LOOP, 112

G
GET_SIG_INF, 123 Giro, 71 , 74 GLOBAL, 165 Global, 137 GO, 20 GOTO, 107

H
HALT, 116 Herramienta fija, 66 Hex Dec, 31 Index -- iii

M
Manipulacin de datos, 40 MARCA, 107 Medicin rpida, 153 Modificacin de programas, 13

Index

Modo de ejecucin del programa, 20 Movimientos circulares, 89 Movimientos con posicionamiento aproximado, 93 Movimientos CP, 80 Movimientos de trayectoria, 80 Movimientos lineales, 87 Movimientos punto a punto, 67 MSTEP, 20

O
Objetos de datos, 29 Operador, 40 Operador geomtrico, 42 Operadores aritmticos, 40 Operadores de bits, 48 Operadores de comparacin, 46 Operadores lgicos, 47 Operando, 40 OTTO, 164

Procesamiento en avance, 91 Programacin de movimiento, 61 Programacin por aprendizaje de los puntos, 105 PROKOR, 13 PSTEP, 20 PTP, 67 , 70 PTP !, 105 PTP sincrnico, 67 PTP_REL, 70 PUBLIC, 165 PULSE, 127 Punto de la raz de la mueca, 75 , 78 Punto separador, 36

R
Raz, 51 Ramificacin condicionada, 107 Ramificaciones de programa, 107 REAL, 30 , 32 Reemplazar, 15 REPEAT, 111 RESUME, 151

P
P00.DAT, 8 P00.SRC, 8 Parada automtica del procesamiento en avance, 92 Parada del procesamiento en avance, 92 , 118 Perfil de marcha ms elevado, 68 POS, 38 Posicin a1, 78 Posicin a2, 79 Posicin a5, 79 Posicin extendida, 79 Posicin mecnica cero, 69 Posicionamiento aproximado, 93 Posicionamiento aproximado CIRC--CIRC, 98 Posicionamiento aproximado CIRC--LIN, 98 Posicionamiento aproximado LIN--LIN, 96 Posicionamiento aproximado PTP -- trayectoria, 101 Posicionamiento aproximado PTP--PTP, 94 Posicionamiento aproximado trayectoria -- PTP, 102 Prioridad, 50 , 147 Prioridades de los operadores, 50

S
S y T, 74 Salidas Analgicas, 129 Salidas de impulso, 127 Seccin de declaraciones, 8 Seccin de instrucciones, 8 Seno, Coseno, Tangente, 51 SIGNAL, 119 Signo !, 105 Smbolo $, 54 SIN(X), 51 Singularidad de los ejes de mueca, 79 Singularidad por encima de la cabeza, 78 Singularidades, 78 Singularidades de la cinemtica, 74 Sistema binario, 31 Sistema de coordenadas base, 65 Sistema de coordenadas cartesiano, 62 Sistema de coordenadas de correccin, 184 Sistema de coordenadas de la herramienta, 65 Sistema de coordenadas del robot, 64 Index -- iv

Index

Sistema de coordenadas especfico de los ejes, 61 Sistema de coordenadas universales, 64 Sistema decimal, 31 Sistema hexadecimal, 31 Sistemas de coordenadas, 61 , 71 SPS.SUB, 8 SQRT(X), 51 STRUC, 36 Subprogramas, 8 , 136 SWITCH, 108

Velocidad, 80 Velocidad de eje, 68 Vincular, 11 Vnculo, 11

W
WAIT, 113 WHILE, 110

T
TAN(X), 51 TCP, 66 Temporizador, 53 Tipo de datos, 29 Tipos de datos geomtricos, 38 Tipos de datos simples, 30 Tipos de enumeracin, 39 Tool Center Point, 67 Transferencia de parmetros, 139 Transformacin de avance, 62 Transformacin de las coordenadas, 62 Transformacin de retroceso, 62 Translaciones, 63 Tratamiento de errores, 23 Tratamiento de interrupciones, 144 Tridimensional, 34 Trigger, 156 Trpode de tecnologa que acompaa a la trayectoria, 184 TTS, 184 Turn, 74

U
UNTIL, 111

V
Variable + referido a la trayectoria, 86 Variable + referido al espacio, 85 Variable global, 165 Variables del sistema, 53 Variables y declaraciones, 27 Variables y nombres, 27

Index -- v

Das könnte Ihnen auch gefallen