Professional Documents
Culture Documents
KR C2 / KR C3
Edicin: 12.09.2005
Versin: 01
1 de 197
ProgExperteBHR5.2 09.03.01 es
e Copyright 2005
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
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
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
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
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
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
1
1.1
1.1.1
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
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
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
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
1.2
1.2.1
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.
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
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
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
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}
12 de 197
ProgExperteBHR5.2 09.03.01 es
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
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
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
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
1.4
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
Programa seleccionado
ProgExperteBHR5.2 09.03.01 es
17 de 197
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
Seccin de declaraciones
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
1.5
1.5.1
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
1.5.2
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 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
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
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
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
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
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
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
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
ProgExperteBHR5.2 09.03.01 es
29 de 197
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
30 de 197
ProgExperteBHR5.2 09.03.01 es
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
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
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
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
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
ProgExperteBHR5.2 09.03.01 es
35 de 197
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:
= = = = = = = =
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
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:
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
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
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).
40 de 197
ProgExperteBHR5.2 09.03.01 es
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
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).
Resultado
: : : :
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
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
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
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
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).
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
46 de 197
ProgExperteBHR5.2 09.03.01 es
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.
N de operandos 1 2 2 2
Tab. 7
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.
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
ProgExperteBHR5.2 09.03.01 es
47 de 197
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).
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
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
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
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
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
-- + 0+ -- + -- + -- +* -1+1 -- +
* 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
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
52 de 197
ProgExperteBHR5.2 09.03.01 es
2.4
ProgExperteBHR5.2 09.03.01 es
53 de 197
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).
54 de 197
ProgExperteBHR5.2 09.03.01 es
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
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.
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
n n n
n n
$ROBCOR.DAT
KUKA
56 de 197
ProgExperteBHR5.2 09.03.01 es
2.5
2.5.1
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
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
2.5.3
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
Como variable de cadena StrVar[ ] solamente se permite un campo del tipo CHAR.
2.5.4
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
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
2.5.5
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
Argumento
StrComp StrComp1[] StrComp2[] CaseSens
Tipo de datos
BOOL CHAR
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
2.5.7
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
$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
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
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
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
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
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:
describible describible
$BASE
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
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
ProgExperteBHR5.2 09.03.01 es
65 de 197
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
3.2
3.2.1
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
3.2.2
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
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
ProgExperteBHR5.2 09.03.01 es
69 de 197
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_
A3 = 90_
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
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
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
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
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.
ProgExperteBHR5.2 09.03.01 es
73 de 197
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.
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
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:
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
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
Fig. 27 Efectos de los bits de estado (Status) sobre la posicin del robot
ProgExperteBHR5.2 09.03.01 es
77 de 197
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
Posicin extendida (posicin 2) La prolongacin del trayecto A2--A3 corta el 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
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
80 de 197
ProgExperteBHR5.2 09.03.01 es
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
$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.
ProgExperteBHR5.2 09.03.01 es
81 de 197
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).
82 de 197
ProgExperteBHR5.2 09.03.01 es
$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.
ProgExperteBHR5.2 09.03.01 es
83 de 197
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
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).
ProgExperteBHR5.2 09.03.01 es
85 de 197
$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
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
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
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
CA = --235
Punto inicial
Punto inicial
ProgExperteBHR5.2 09.03.01 es
89 de 197
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
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).
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
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
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
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
ProgExperteBHR5.2 09.03.01 es
93 de 197
3.5.1
94 de 197
ProgExperteBHR5.2 09.03.01 es
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=988,45 y=238,53
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
mm _ %
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
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=988,45 y=238,53
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
98 de 197
ProgExperteBHR5.2 09.03.01 es
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
x=980 y=-238
150_
y=100
y=100
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
3.5.4
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
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
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=1134 y=53,63
HP
HP
x=1019,31 y=306,71
x=1019,21 y=124,02
x=1037,81 y=-117,83
ProgExperteBHR5.2 09.03.01 es
103 de 197
3.5.5
TOOL2
P0_TOOL2
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
3.6
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
106 de 197
ProgExperteBHR5.2 09.03.01 es
4
4.1
4.1.1
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
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
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
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
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
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 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
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
112 de 197
ProgExperteBHR5.2 09.03.01 es
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
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
114 de 197
ProgExperteBHR5.2 09.03.01 es
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
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
ProgExperteBHR5.2 09.03.01 es
117 de 197
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
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
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
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.
TRUE FALSE
120 de 197
ProgExperteBHR5.2 09.03.01 es
5.3
5.3.1
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
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
5.3.2
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
ProgExperteBHR5.2 09.03.01 es
123 de 197
Componentes estructurales El tipo de datos SIGINF contiene los siguientes componentes estructurales:
SIGINF
.TYP
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
5.3.3
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.
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
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.
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.
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.
ProgExperteBHR5.2 09.03.01 es
127 de 197
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
5.5
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
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
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
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
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.
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
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
5.6
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
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.
ProgExperteBHR5.2 09.03.01 es
135 de 197
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
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
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
6.2
ProgExperteBHR5.2 09.03.01 es
139 de 197
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
15 15 225
X,NMERO
Call by reference
GLOBAL DEFFCT INT QUADRAT(NMERO:OUT) INT NMERO NMERO=NMERO*NMERO RETURN(NMERO) ENDFCT
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:
140 de 197
ProgExperteBHR5.2 09.03.01 es
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
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[,,]
142 de 197
ProgExperteBHR5.2 09.03.01 es
ProgExperteBHR5.2 09.03.01 es
143 de 197
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
144 de 197
ProgExperteBHR5.2 09.03.01 es
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
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
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
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
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
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.
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
$POS_FOR $AXIS_FOR
P3
ProgExperteBHR5.2 09.03.01 es
149 de 197
P2
$POS_INT $AXIS_INT
$POS_BACK $AXIS_BACK
$POS_ACT $AXIS_ACT
P1
7.3
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
7.4
ProgExperteBHR5.2 09.03.01 es
151 de 197
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
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
7.5
154 de 197
ProgExperteBHR5.2 09.03.01 es
ProgExperteBHR5.2 09.03.01 es
155 de 197
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
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.
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
+ 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
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
PUNTO2
DISTANCE 0 1
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
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
8.2
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.
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
+
DELAY X
PUNTO5
PUNTO3
DELAY=0 PATH=0
Ejemplo de cifras: X= --10, Y= --20
+
PUNTO4
PATH Y>0
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
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
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
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
ProgExperteBHR5.2 09.03.01 es
163 de 197
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
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
9.2
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
PROG_1.SRC DEF PROG_1 ( ) HALT OTTO = 25 END PROG_2.SRC DEF PROG_2 ( ) END
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
ProgExperteBHR5.2 09.03.01 es
167 de 197
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
10.1
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
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
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
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
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
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
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
174 de 197
ProgExperteBHR5.2 09.03.01 es
10
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
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.
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
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
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!
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
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
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].
ProgExperteBHR5.2 09.03.01 es
179 de 197
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
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
180 de 197
ProgExperteBHR5.2 09.03.01 es
10
10.5.5
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
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
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
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
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
10.6.2
184 de 197
ProgExperteBHR5.2 09.03.01 es
10
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
+X
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
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
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
10.7
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
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
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
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
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
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
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
10.9
Men Ayuda
Ayuda Versin Permanecer arriba
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
NOTAS:
196 de 197
ProgExperteBHR5.2 09.03.01 es
10
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
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