13.07.2015 Views

Manual de referencia de RAPID

Manual de referencia de RAPID

Manual de referencia de RAPID

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Manual</strong> <strong>de</strong> <strong>referencia</strong> <strong>de</strong> <strong>RAPID</strong>Descripción general <strong>de</strong> <strong>RAPID</strong>Software <strong>de</strong> controlador para IRC5RobotWare 5.0


<strong>Manual</strong> <strong>de</strong> <strong>referencia</strong> <strong>de</strong> <strong>RAPID</strong>3HAC 16580-5Revisión ASoftware <strong>de</strong> controlador para IRC5Descripción general <strong>de</strong> <strong>RAPID</strong>ÍndiceRobotWare 5.0IntroducciónResumen sobre <strong>RAPID</strong>Características básicasPrincipios <strong>de</strong> movimiento y E/SProgramación fuera <strong>de</strong> líneaDatos y programas pre<strong>de</strong>finidosGlosarioÍndice alfabéticoDescripción general <strong>de</strong> <strong>RAPID</strong>


La información <strong>de</strong> este manual pue<strong>de</strong> cambiar sin previo aviso y no pue<strong>de</strong> enten<strong>de</strong>rse como un compromiso por parte <strong>de</strong> ABB.ABB no se hace responsable <strong>de</strong> ningún error que pueda aparecer en este manual.Excepto en los casos en que se indica expresamente en este manual, ninguna parte <strong>de</strong>l mismo <strong>de</strong>be enten<strong>de</strong>rse comoninguna garantía por parte <strong>de</strong> ABB por las pérdidas, lesiones, daños materiales, idoneidad para un fin <strong>de</strong>terminado nigarantías similares.ABB no será en ningún caso responsable <strong>de</strong> los daños acci<strong>de</strong>ntales o consecuentes que se produzcan como consecuencia<strong>de</strong>l uso <strong>de</strong> este manual o <strong>de</strong> los productos <strong>de</strong>scritos en el mismo.Se prohíbe la reproducción o la copia <strong>de</strong> este manual o cualquiera <strong>de</strong> sus partes si no se cuenta con una autorización escrita<strong>de</strong> ABB. Ninguna parte <strong>de</strong> este manual <strong>de</strong>be ser entregada a terceros ni utilizada para fines no autorizados. Cualquierincumplimiento <strong>de</strong> esta norma será perseguido legalmente.Usted pue<strong>de</strong> obtener copias adicionales <strong>de</strong> este manual a través <strong>de</strong> ABB, con el coste aplicable en el momento <strong>de</strong> su solicitud.© Copyright 2004 ABB. Reservados todos los <strong>de</strong>rechos.ABB Automation Technologies ABRoboticsSE-721 68 VästeråsSueciaDescripción general <strong>de</strong> <strong>RAPID</strong>


Índice1 Introducción............................................................................................................................... 11.1 Otros manuales ................................................................................................................. 11.2 Cómo leer este manual ..................................................................................................... 1Convenciones tipográficas ............................................................................................... 2Reglas <strong>de</strong> sintaxis.............................................................................................................2Sintaxis formal ................................................................................................................. 32 La estructura <strong>de</strong>l lenguaje........................................................................................................ 53 Control <strong>de</strong>l flujo <strong>de</strong>l programa ................................................................................................ 73.1 Principios <strong>de</strong> programación.............................................................................................. 73.2 Llamada a otra rutina........................................................................................................ 73.3 Control <strong>de</strong>l programa <strong>de</strong>ntro <strong>de</strong> la rutina.......................................................................... 73.4 Detención <strong>de</strong> la ejecución <strong>de</strong>l programa........................................................................... 83.5 Detención <strong>de</strong>l ciclo actual.................................................................................................84 Otras instrucciones.................................................................................................................... 94.1 Asignación <strong>de</strong> un valor a un dato ..................................................................................... 94.2 Espera ............................................................................................................................... 94.3 Comentarios...................................................................................................................... 94.4 Carga <strong>de</strong> módulos <strong>de</strong> programa ...................................................................................... 104.5 Otras funciones............................................................................................................... 104.6 Datos básicos .................................................................................................................. 104.7 Funciones <strong>de</strong> conversión ................................................................................................ 115 Parámetros <strong>de</strong> movimiento.....................................................................................................135.1 Principios <strong>de</strong> programación............................................................................................ 135.2 Velocidad máxima <strong>de</strong> TCP ............................................................................................. 135.3 Definición <strong>de</strong> la velocidad.............................................................................................. 145.4 Definición <strong>de</strong> la aceleración ........................................................................................... 145.5 Definición <strong>de</strong>l control <strong>de</strong> configuración......................................................................... 145.6 Definición <strong>de</strong> la carga útil .............................................................................................. 145.7 Definición <strong>de</strong>l comportamiento cerca <strong>de</strong> puntos singulares........................................... 155.8 Desplazamiento <strong>de</strong> programa ......................................................................................... 155.9 Servo suave..................................................................................................................... 155.10 Modificación <strong>de</strong> los valores <strong>de</strong> ajuste <strong>de</strong>l robot ........................................................... 165.11 Zonas mundo ................................................................................................................ 175.12 Datos para parámetros <strong>de</strong> movimiento ......................................................................... 176 Movimiento .............................................................................................................................. 196.1 Principios <strong>de</strong> programación............................................................................................ 196.2 Instrucciones <strong>de</strong> posicionamiento................................................................................... 206.3 Búsqueda ........................................................................................................................ 20Descripción general <strong>de</strong> <strong>RAPID</strong>I


Índice6.4 Activación <strong>de</strong> salidas o interrupciones en posiciones concretas .................................... 216.5 Control <strong>de</strong> una señal analógica <strong>de</strong> salida <strong>de</strong> forma proporcional al TCP real................ 216.6 Control <strong>de</strong>l movimiento si se produce un error o una interrupción................................ 226.7 Obtención <strong>de</strong> la información <strong>de</strong> robot en un sistema MultiMove.................................. 226.8 Control <strong>de</strong> ejes externos ................................................................................................. 226.9 Ejes in<strong>de</strong>pendientes ........................................................................................................236.10 Corrección <strong>de</strong> trayectoria ............................................................................................. 246.11 Grabadora <strong>de</strong> trayectorias............................................................................................. 246.12 Conveyor tracking (Control <strong>de</strong> transportadores).......................................................... 256.13 Sincronización <strong>de</strong> sensores........................................................................................... 256.14 I<strong>de</strong>ntificación <strong>de</strong> carga y <strong>de</strong>tección <strong>de</strong> colisiones ........................................................ 256.15 Funciones <strong>de</strong> posición .................................................................................................. 266.16 Comprobación <strong>de</strong> la interrupción <strong>de</strong> una trayectoria <strong>de</strong>spués <strong>de</strong> una caída <strong>de</strong> alimentación...............................................................................................................................266.17 Funciones <strong>de</strong> estado...................................................................................................... 266.18 Datos <strong>de</strong> movimiento.................................................................................................... 276.19 Datos básicos <strong>de</strong> los movimientos................................................................................ 277 Señales <strong>de</strong> entrada y salida..................................................................................................... 297.1 Principios <strong>de</strong> programación............................................................................................ 297.2 Modificación <strong>de</strong>l valor <strong>de</strong> una señal............................................................................... 297.3 Lectura <strong>de</strong>l valor <strong>de</strong> una señal <strong>de</strong> entrada ...................................................................... 297.4 Gestión <strong>de</strong> errores........................................................................................................... 307.5 Lectura <strong>de</strong>l valor <strong>de</strong> una señal <strong>de</strong> salida......................................................................... 307.6 Comprobación <strong>de</strong> la entrada en las señales <strong>de</strong> salida..................................................... 307.7 Desactivación y activación <strong>de</strong> módulos <strong>de</strong> E/S.............................................................. 307.8 Definición <strong>de</strong> señales <strong>de</strong> entrada y salida....................................................................... 317.9 Obtención <strong>de</strong>l estado <strong>de</strong> la unidad <strong>de</strong> E/S ...................................................................... 318 Comunicación.......................................................................................................................... 338.1 Principios <strong>de</strong> programación............................................................................................ 338.2 Comunicación a través <strong>de</strong>l FlexPendant ........................................................................ 338.3 Lectura o escritura a través <strong>de</strong> un canal serie o un archivo alfanumérico...................... 348.4 Comunicación a través <strong>de</strong> canales serie o archivos o buses <strong>de</strong> campo binarios............. 348.5 Conversión...................................................................................................................... 358.6 Datos para canales serie ................................................................................................. 359 Interrupciones ......................................................................................................................... 379.1 Principios <strong>de</strong> programación............................................................................................ 379.2 Conexión <strong>de</strong> interrupciones a rutinas TRAP.................................................................. 379.3 Petición <strong>de</strong> interrupciones .............................................................................................. 38IIDescripción general <strong>de</strong> <strong>RAPID</strong>


Índice9.4 Cancelación <strong>de</strong> interrupciones........................................................................................ 389.5 Activación y <strong>de</strong>sactivación <strong>de</strong> interrupciones ................................................................ 389.6 Datos <strong>de</strong> interrupción......................................................................................................389.7 Tipos <strong>de</strong> datos <strong>de</strong> las interrupciones............................................................................... 3910 Recuperación en caso <strong>de</strong> error............................................................................................. 4110.1 Principios <strong>de</strong> programación.......................................................................................... 4110.2 Creación <strong>de</strong> una situación <strong>de</strong> error <strong>de</strong>s<strong>de</strong> el propio programa ..................................... 4110.3 Registro <strong>de</strong> un número <strong>de</strong> error .................................................................................... 4110.4 Reinicio y retorno <strong>de</strong>s<strong>de</strong> el gestor <strong>de</strong> errores ............................................................... 4210.5 Errores y avisos <strong>de</strong>finidos por el usuario...................................................................... 4210.6 Generación <strong>de</strong> errores <strong>de</strong> proceso................................................................................. 4210.7 Datos para la gestión <strong>de</strong> errores.................................................................................... 4210.8 Configuración para la gestión <strong>de</strong> errores...................................................................... 4311 Sistema y tiempo.................................................................................................................... 4511.1 Principios <strong>de</strong> programación .......................................................................................... 4511.2 Utilización <strong>de</strong> un reloj para temporizar un evento........................................................ 4511.3 Lectura <strong>de</strong> la hora y la fecha actuales........................................................................... 4511.4 Obtención <strong>de</strong> información <strong>de</strong> hora <strong>de</strong> un archivo......................................................... 4611.5 Obtener el tamaño <strong>de</strong> memoria libre <strong>de</strong>l programa ...................................................... 4612 Operaciones matemáticas.....................................................................................................4712.1 Principios <strong>de</strong> programación.......................................................................................... 4712.2 Cálculos sencillos con datos numéricos ....................................................................... 4712.3 Cálculos más avanzados ............................................................................................... 4712.4 Funciones aritméticas ................................................................................................... 4812.5 Funciones <strong>de</strong> bits .......................................................................................................... 4913 Comunicación con un or<strong>de</strong>nador externo........................................................................... 5113.1 Principios <strong>de</strong> programación.......................................................................................... 5113.2 Envío <strong>de</strong> un mensaje controlado por el programa <strong>de</strong>l robot a un or<strong>de</strong>nador................ 5114 Funciones para operaciones con archivos........................................................................... 5315 Instrucciones <strong>de</strong> soporte <strong>de</strong> <strong>RAPID</strong>..................................................................................... 5515.1 Obtención <strong>de</strong> datos <strong>de</strong>l sistema .................................................................................... 5515.2 Obtención <strong>de</strong> información acerca <strong>de</strong>l sistema .............................................................. 5515.3 Obtención <strong>de</strong> información acerca <strong>de</strong> la memoria ......................................................... 5615.4 Lectura <strong>de</strong> datos <strong>de</strong> configuración .............................................................................. 5615.5 Escritura <strong>de</strong> datos <strong>de</strong> configuración............................................................................ 5615.6 Reinicio <strong>de</strong>l controlador ............................................................................................... 5615.7 Funciones <strong>de</strong> disparo .................................................................................................... 5615.8 Instrucciones para tablas <strong>de</strong> texto................................................................................. 57Descripción general <strong>de</strong> <strong>RAPID</strong>III


Índice15.9 Obtención <strong>de</strong> nombres <strong>de</strong> objetos ................................................................................ 5715.10 Obtención <strong>de</strong> nombres <strong>de</strong> tareas................................................................................. 5715.11 Búsqueda <strong>de</strong> símbolos ................................................................................................ 5816 Instrucciones <strong>de</strong> servicio técnico y calibración .................................................................. 5916.1 Calibración <strong>de</strong> la herramienta....................................................................................... 5916.2 Distintos métodos <strong>de</strong> calibración ................................................................................. 5916.3 Envío <strong>de</strong> un valor a la señal <strong>de</strong> test <strong>de</strong>l robot............................................................... 5916.4 Registro <strong>de</strong> una ejecución............................................................................................. 6017 Funciones para ca<strong>de</strong>nas <strong>de</strong> caracteres ................................................................................ 6117.1 Operaciones básicas ..................................................................................................... 6117.2 Comparación y búsqueda ............................................................................................. 6117.3 Conversión.................................................................................................................... 6218 Multitarea .............................................................................................................................. 6318.1 Conceptos básicos ........................................................................................................ 6318.2 Instrucciones y funciones generales ............................................................................. 6318.3 Sistema MultiMove con robots coordinados................................................................ 6419 Resumen <strong>de</strong> la sintaxis.......................................................................................................... 6519.1 Instrucciones................................................................................................................. 6519.2 Functions ...................................................................................................................... 7820 Elementos básicos.................................................................................................................. 8520.1 I<strong>de</strong>ntificadores .............................................................................................................. 8520.2 Espacios y caracteres <strong>de</strong> salto <strong>de</strong> línea......................................................................... 8620.3 Valores numéricos ........................................................................................................ 8620.4 Valores lógicos ............................................................................................................. 8620.5 Valores <strong>de</strong> ca<strong>de</strong>na <strong>de</strong> caracteres ................................................................................... 8620.6 Comentarios.................................................................................................................. 8720.7 Marcadores <strong>de</strong> sustitución ............................................................................................ 8720.8 Encabezado <strong>de</strong>l archivo................................................................................................ 8820.9 Sintaxis ......................................................................................................................... 8821 Módulos.................................................................................................................................. 9121.1 Módulos <strong>de</strong> programa................................................................................................... 9121.2 Módulos <strong>de</strong> sistema ...................................................................................................... 9221.3 Declaración <strong>de</strong> módulos ............................................................................................... 9221.4 Sintaxis ......................................................................................................................... 9322 Rutinas ................................................................................................................................... 9522.1 Ámbito <strong>de</strong> una rutina.................................................................................................... 9522.2 Parámetros .................................................................................................................... 9622.3 Finalización <strong>de</strong> una rutina ............................................................................................ 97IVDescripción general <strong>de</strong> <strong>RAPID</strong>


Índice22.4 Declaraciones <strong>de</strong> rutinas............................................................................................... 9722.5 Llamada a procedimiento ............................................................................................. 9822.6 Sintaxis ......................................................................................................................... 9923 Tipos <strong>de</strong> datos ...................................................................................................................... 10323.1 Tipos <strong>de</strong> datos sin valores........................................................................................... 10323.2 Tipos <strong>de</strong> datos <strong>de</strong> igualdad (alias) .............................................................................. 10423.3 Sintaxis ....................................................................................................................... 10424 Datos..................................................................................................................................... 10524.1 Ámbito <strong>de</strong> un dato ...................................................................................................... 10524.2 Declaración <strong>de</strong> variables............................................................................................. 10624.3 Declaración <strong>de</strong> variables persistentes......................................................................... 10724.4 Declaración <strong>de</strong> constantes .......................................................................................... 10724.5 Inicialización <strong>de</strong> datos ................................................................................................ 10824.6 Clase <strong>de</strong> almacenamiento ........................................................................................... 10924.7 Sintaxis ....................................................................................................................... 11025 Instrucciones.........................................................................................................................11125.1 Sintaxis ....................................................................................................................... 11126 Expresiones .......................................................................................................................... 11326.1 Expresiones aritméticas .............................................................................................. 11326.2 Expresiones lógicas .................................................................................................... 11426.3 Expresiones <strong>de</strong> ca<strong>de</strong>na <strong>de</strong> caracteres.......................................................................... 11526.4 Utilización <strong>de</strong> datos en expresiones............................................................................ 115Matrices........................................................................................................................ 115Registros....................................................................................................................... 11526.5 Utilización <strong>de</strong> agregados en expresiones.................................................................... 11626.6 Utilización <strong>de</strong> llamadas a funciones en las expresiones............................................. 11626.7 Prioridad entre operadores.......................................................................................... 117Ejemplo ........................................................................................................................11826.8 Sintaxis ....................................................................................................................... 118Expresiones .................................................................................................................. 118Operadores ................................................................................................................... 118Valores constantes ........................................................................................................ 118Datos ............................................................................................................................ 119Agregados .................................................................................................................... 119Llamadas a funciones................................................................................................... 119Expresiones especiales................................................................................................. 120Parámetros.................................................................................................................... 12027 Recuperación en caso <strong>de</strong> error........................................................................................... 121Descripción general <strong>de</strong> <strong>RAPID</strong>V


Índice27.1 Gestores <strong>de</strong> errores ..................................................................................................... 121Gestor <strong>de</strong> errores <strong>de</strong>l sistema ....................................................................................... 122Errores elevados por el programa ................................................................................ 122El registro <strong>de</strong> eventos................................................................................................... 12228 Interrupciones ..................................................................................................................... 12328.1 Manipulación <strong>de</strong> interrupciones ................................................................................. 12328.2 Rutinas TRAP............................................................................................................. 12429 UNDO................................................................................................................................... 12529.1 Definiciones/terminología .......................................................................................... 12529.2 Cuándo utilizar UNDO............................................................................................... 12529.3 Comportamiento <strong>de</strong>tallado <strong>de</strong> UNDO........................................................................ 12529.4 Limitaciones ............................................................................................................... 12629.5 Ejemplo ...................................................................................................................... 12730 Ejecución hacia atrás.......................................................................................................... 12930.1 Gestores <strong>de</strong> ejecución hacia atrás............................................................................... 12930.2 Limitación <strong>de</strong> las instrucciones <strong>de</strong> movimiento <strong>de</strong>l gestor <strong>de</strong> ejecución hacia atrás . 13030.3 Comportamiento <strong>de</strong> la ejecución hacia atrás.............................................................. 131Rutinas MoveC y nostepin........................................................................................... 131Objetivo, tipo <strong>de</strong> movimiento y velocidad................................................................... 131Ejemplo........................................................................................................................ 13231 Multitarea ............................................................................................................................ 13531.1 Sincronización <strong>de</strong> tareas............................................................................................. 136Sincronización mediante consulta................................................................................ 136Sincronización mediante una interrupción................................................................... 13731.2 Comunicación entre tareas ......................................................................................... 13731.3 Tipo <strong>de</strong> tarea ............................................................................................................... 13831.4 Priorida<strong>de</strong>s.................................................................................................................. 13931.5 Nivel <strong>de</strong> confianza...................................................................................................... 14031.6 Una consi<strong>de</strong>ración a tener en cuenta .......................................................................... 14131.7 Esquema <strong>de</strong> programación ......................................................................................... 141Primera vez .................................................................................................................. 141Fase <strong>de</strong> iteración .......................................................................................................... 141Fase <strong>de</strong> finalización...................................................................................................... 14232 Sistemas <strong>de</strong> coor<strong>de</strong>nadas .................................................................................................... 14332.1 El punto central <strong>de</strong> la herramienta <strong>de</strong>l robot (TCP) ................................................... 14332.2 Sistemas <strong>de</strong> coor<strong>de</strong>nadas utilizados para <strong>de</strong>terminar la posición <strong>de</strong>l TCP................. 143Sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> la base .............................................................................. 143Sistema <strong>de</strong> coor<strong>de</strong>nadas mundo................................................................................... 144VIDescripción general <strong>de</strong> <strong>RAPID</strong>


ÍndiceSistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong>l usuario............................................................................. 145Sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> objeto ............................................................................... 145Sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> <strong>de</strong>splazamiento................................................................. 146Ejes externos coordinados............................................................................................ 14732.3 Sistemas <strong>de</strong> coor<strong>de</strong>nadas utilizados para <strong>de</strong>terminar la dirección <strong>de</strong> la herramienta. 148Sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> la muñeca ......................................................................... 149Sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> la herramienta .................................................................. 149TCPs estacionarios....................................................................................................... 15032.4 Información relacionada............................................................................................. 15233 Posicionamiento durante la ejecución <strong>de</strong>l programa....................................................... 15333.1 Consi<strong>de</strong>raciones generales.......................................................................................... 15333.2 Interpolación <strong>de</strong> la posición y la orientación <strong>de</strong> la herramienta................................. 153Interpolación <strong>de</strong> ejes .................................................................................................... 153Interpolación lineal ...................................................................................................... 154Interpolación circular ................................................................................................... 155SingArea\Wrist............................................................................................................. 15633.3 Interpolación <strong>de</strong> trayectorias <strong>de</strong> esquina .................................................................... 157Interpolación <strong>de</strong> ejes en trayectorias <strong>de</strong> esquina..........................................................158Interpolación lineal <strong>de</strong> una posición en trayectorias <strong>de</strong> esquina.................................. 158Interpolación lineal <strong>de</strong> la orientación en trayectorias <strong>de</strong> esquina ................................ 159Interpolación <strong>de</strong> ejes externos en trayectorias <strong>de</strong> esquina ........................................... 160Trayectorias <strong>de</strong> esquina al cambiar <strong>de</strong> método <strong>de</strong> interpolación ................................. 160Interpolación al cambiar <strong>de</strong> sistema <strong>de</strong> coor<strong>de</strong>nadas ................................................... 160Trayectorias <strong>de</strong> esquina con zonas superpuestas..........................................................161Planificación <strong>de</strong> tiempo para los puntos <strong>de</strong> paso ......................................................... 16233.4 Ejes in<strong>de</strong>pendientes .................................................................................................... 162Ejecución <strong>de</strong> programas ............................................................................................... 162Ejecución paso a paso .................................................................................................. 163Movimiento.................................................................................................................. 163Área <strong>de</strong> trabajo ............................................................................................................. 163Velocidad y aceleración ............................................................................................... 164Ejes <strong>de</strong>l robot ............................................................................................................... 16433.5 Servo suave................................................................................................................. 16533.6 Paro y reanudación ..................................................................................................... 16533.7 Información relacionada............................................................................................. 16634 Sincronización con instrucciones lógicas .......................................................................... 16734.1 Ejecución secuencial <strong>de</strong>l programa en puntos <strong>de</strong> paro............................................... 16734.2 Ejecución secuencial <strong>de</strong> programas en puntos <strong>de</strong> paso .............................................. 167Descripción general <strong>de</strong> <strong>RAPID</strong>VII


Índice34.3 Ejecución simultánea <strong>de</strong> programas ........................................................................... 16834.4 Sincronización <strong>de</strong> trayectorias.................................................................................... 17134.5 Información relacionada............................................................................................. 17235 Configuración <strong>de</strong>l robot...................................................................................................... 17335.1 Distintos tipos <strong>de</strong> configuraciones <strong>de</strong> robot ............................................................... 17335.2 Especificación <strong>de</strong> la configuración <strong>de</strong>l robot ............................................................. 17535.3 Comprobación <strong>de</strong> la configuración ............................................................................ 17535.4 Información relacionada............................................................................................. 17636 Mo<strong>de</strong>los cinemáticos <strong>de</strong>l robot........................................................................................... 17736.1 Cinemática <strong>de</strong>l robot .................................................................................................. 177Robot principal............................................................................................................. 177Robot externo............................................................................................................... 17836.2 Cinemática general ..................................................................................................... 17936.3 Información relacionada............................................................................................. 18137 Supervisión <strong>de</strong>l movimiento y <strong>de</strong>tección <strong>de</strong> colisiones..................................................... 18337.1 Introducción................................................................................................................ 18337.2 Ajuste <strong>de</strong> los niveles <strong>de</strong> <strong>de</strong>tección <strong>de</strong> colisiones........................................................ 18337.3 Ventana <strong>de</strong> diálogo Supervisión <strong>de</strong>l Movimiento....................................................... 18537.4 Salidas digitales.......................................................................................................... 18537.5 Limitaciones ............................................................................................................... 18537.6 Información relacionada............................................................................................. 18638 Singularida<strong>de</strong>s ..................................................................................................................... 187Puntos <strong>de</strong> singularidad <strong>de</strong>l robot IRB140 .................................................................... 18838.1 Ejecución <strong>de</strong>l programa a través <strong>de</strong> singularida<strong>de</strong>s.................................................... 18838.2 Movimiento a través <strong>de</strong> singularida<strong>de</strong>s ...................................................................... 18838.3 Información relacionada............................................................................................. 18939 Limitación optimizada <strong>de</strong> la aceleración .......................................................................... 19140 Zonas mundo ....................................................................................................................... 19340.1 Utilización <strong>de</strong> zonas globales ..................................................................................... 19340.2 Utilización <strong>de</strong> zonas mundo ....................................................................................... 19340.3 Definición <strong>de</strong> zonas mundo en el sistema <strong>de</strong> coor<strong>de</strong>nadas mundo ............................ 19340.4 Supervisión <strong>de</strong>l TCP <strong>de</strong>l robot ................................................................................... 194TCPs estacionarios....................................................................................................... 19440.5 Acciones ..................................................................................................................... 195Activar una salida digital cuando el TCP se encuentra <strong>de</strong>ntro <strong>de</strong> una zona mundo. ... 195Activar una salida digital antes <strong>de</strong> que el TCP alcance una zona mundo.................... 195Detener el robot antes <strong>de</strong> que el TCP alcance una zona mundo. ................................. 19540.6 Tamaño mínimo <strong>de</strong> las zonas mundo ......................................................................... 196VIIIDescripción general <strong>de</strong> <strong>RAPID</strong>


Índice40.7 Número máximo <strong>de</strong> zonas mundo.............................................................................. 19640.8 Caídas <strong>de</strong> alimentación, reinicio y reanudación ......................................................... 19640.9 Información relacionada............................................................................................. 19741 Principios <strong>de</strong> E/S ................................................................................................................. 19941.1 Características <strong>de</strong> las señales...................................................................................... 19941.2 Señales conectadas a interrupciones........................................................................... 20041.3 Señales <strong>de</strong>l sistema ..................................................................................................... 20141.4 Conexiones cruzadas .................................................................................................. 20141.5 Limitaciones ............................................................................................................... 20241.6 Información relacionada............................................................................................. 20242 Programación fuera <strong>de</strong> línea .............................................................................................. 20342.1 Formato <strong>de</strong> archivo..................................................................................................... 20342.2 Edición........................................................................................................................ 20342.3 Comprobación <strong>de</strong> la sintaxis....................................................................................... 20342.4 Ejemplos ..................................................................................................................... 20442.5 Creación <strong>de</strong> instrucciones propias .............................................................................. 20543 Módulo <strong>de</strong> sistema User......................................................................................................20743.1 Contenido.................................................................................................................... 20743.2 Creación <strong>de</strong> nuevos datos en este módulo.................................................................. 20743.3 Eliminación <strong>de</strong> esta información ................................................................................ 20844 Glosario ................................................................................................................................ 209Descripción general <strong>de</strong> <strong>RAPID</strong>IX


ÍndiceXDescripción general <strong>de</strong> <strong>RAPID</strong>


Introducción1 IntroducciónÉste es un manual <strong>de</strong> <strong>referencia</strong> que contiene una explicación <strong>de</strong>tallada <strong>de</strong>l lenguaje <strong>de</strong>programación, así como <strong>de</strong> todos los tipos <strong>de</strong> datos, las instrucciones y las funciones.Si prevé realizar la programación fuera <strong>de</strong> línea, este manual le resultará especialmenteútil a la hora <strong>de</strong> hacerlo.Cuando empiece a programar el robot normalmente es mejor empezar con el <strong>Manual</strong><strong>de</strong>l operador - IRC5 con FlexPendant hasta que esté familiarizado con el sistema.1.1 Otros manualesAntes <strong>de</strong> usar el robot por primera vez, <strong>de</strong>be leer Uso básico. En este capítuloencontrará los conceptos básicos acerca <strong>de</strong>l uso <strong>de</strong>l robot.El <strong>Manual</strong> <strong>de</strong>l operador - IRC5 con FlexPendant contiene instrucciones <strong>de</strong>talladasacerca <strong>de</strong> cómo realizar distintas tareas, por ejemplo, cómo mover manualmente elrobot, cómo realizar la programación o cómo iniciar un programa en la producciónreal.El <strong>Manual</strong> <strong>de</strong>l producto <strong>de</strong>scribe cómo instalar el robot, así como los procedimientos<strong>de</strong> mantenimiento y la búsqueda <strong>de</strong> averías. Este manual también contiene unaEspecificación <strong>de</strong>l producto, en la que encontrará un resumen <strong>de</strong> las características y<strong>de</strong>l rendimiento <strong>de</strong>l robot.1.2 Cómo leer este manualPara obtener respuestas a preguntas como ¿qué instrucción <strong>de</strong>bo usar? o ¿quésignifica esta instrucción?, consulte el Capítulo 3: Resumen sobre <strong>RAPID</strong> <strong>de</strong> laDescripción general <strong>de</strong> <strong>RAPID</strong>. Este capítulo <strong>de</strong>scribe brevemente todas lasinstrucciones, funciones y tipos <strong>de</strong> datos, agrupados por las listas <strong>de</strong> selección <strong>de</strong>instrucciones que se usan durante la programación. También incluye un resumen <strong>de</strong> lasintaxis, lo que resulta especialmente útil a la hora <strong>de</strong> programar fuera <strong>de</strong> línea.El Capítulo 4: Características básicas <strong>de</strong> la Descripción general <strong>de</strong> <strong>RAPID</strong> explica los<strong>de</strong>talles internos <strong>de</strong>l lenguaje. Normalmente, no leerá este capítulo si no es unprogramador experto.El Capítulo 5: Principios <strong>de</strong> movimiento y E/S <strong>de</strong> la Descripción general <strong>de</strong> <strong>RAPID</strong><strong>de</strong>scribe los distintos sistemas <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong>l robot, su velocidad y otrascaracterísticas <strong>de</strong> movimiento durante los distintos tipos <strong>de</strong> ejecución.El <strong>Manual</strong> <strong>de</strong> <strong>referencia</strong> <strong>de</strong> <strong>RAPID</strong> - Parte 1 y 2, la Parte 1 <strong>de</strong>scribe todas lasinstrucciones y la Parte 2 las funciones y tipos <strong>de</strong> datos. Se <strong>de</strong>scriben en or<strong>de</strong>nalfabético para mayor comodidad.Descripción general <strong>de</strong> <strong>RAPID</strong> 1


IntroducciónEste manual <strong>de</strong>scribe todos los datos y programas que se incluyen con el robot en elmomento <strong>de</strong> la entrega. A<strong>de</strong>más <strong>de</strong> éstos, existe un conjunto <strong>de</strong> datos y programaspre<strong>de</strong>finidos que se entregan junto con el robot, ya sea en disquete o, como en algunasocasiones, ya cargados.El Capítulo 7: Datos y programas pre<strong>de</strong>finidos <strong>de</strong> la Descripción general <strong>de</strong> <strong>RAPID</strong><strong>de</strong>scribe qué ocurre al cargar estos elementos en el robot.Si programa fuera <strong>de</strong> línea, encontrará algunas sugerencias en el Capítulo 6:Programación fuera <strong>de</strong> línea <strong>de</strong> la Descripción general <strong>de</strong> <strong>RAPID</strong>..Para facilitarle la búsqueda y la comprensión <strong>de</strong> la información, el Capítulo 8 <strong>de</strong> laDescripción general <strong>de</strong> <strong>RAPID</strong> contiene un índice y un glosario. Por otro lado, el<strong>Manual</strong> <strong>de</strong> <strong>referencia</strong> <strong>de</strong> <strong>RAPID</strong> - Parte 1 y 2 contiene un índice al final.Convenciones tipográficasLos comandos situados en cualquiera <strong>de</strong> las cinco teclas <strong>de</strong> menú <strong>de</strong> la parte superior<strong>de</strong> cada pantalla <strong>de</strong>l FlexPendant aparecen con el formato Menú: Comando. Porejemplo, para activar el comando Imprimir <strong>de</strong>l menú Archivo, <strong>de</strong>be seleccionarArchivo: Imprimir..Los nombres <strong>de</strong> las teclas <strong>de</strong> función y <strong>de</strong> los campos <strong>de</strong> introducción se especifican encursiva y negrita, por ejemplo Modpos.Las palabras que pertenecen al propio lenguaje <strong>de</strong> programación, por ejemplo, losnombres <strong>de</strong> las instrucciones, aparecen en cursiva, como en MoveL.Los programas <strong>de</strong> ejemplo se muestran siempre con el mismo formato en que sealmacenan en un disquete o se imprimen. Esto difiere <strong>de</strong> lo que aparece en elFlexPendant en lo siguiente:- Determinadas palabras <strong>de</strong> control que aparecen con una máscara en la pantalla<strong>de</strong>l FlexPendant se imprimen, por ejemplo, las palabras que indican el principioy el final <strong>de</strong> una rutina.- Las <strong>de</strong>claraciones <strong>de</strong> datos y rutinas se imprimen con el formato formal, porejemplo, VAR num reg1;.Reglas <strong>de</strong> sintaxisLas instrucciones y funciones se <strong>de</strong>scriben utilizando tanto una sintaxis simplificadacomo una sintaxis formal. Si utiliza el FlexPendant para programar, normalmente sólonecesita conocer la sintaxis simplificada, dado que el robot se asegura automáticamente<strong>de</strong> que se utilice la sintaxis correcta.2 Descripción general <strong>de</strong> <strong>RAPID</strong>


IntroducciónSintaxis simplificadaEjemplo:TPWriteString [\Num] | [\Bool] | [\Pos] | [\Orient]InstrucciónArgumentoobligatorioArgumentoopcionalArgumentosexcluyentesentre síSintaxis formal- Los argumentos opcionales aparecen entre corchetes [ ]. Pue<strong>de</strong> omitir estosargumentos.- Los argumentos excluyentes entre sí, es <strong>de</strong>cir, que no pue<strong>de</strong>n existir a la vez enuna misma instrucción, aparecen separados por una barra vertical |.- Los argumentos que pue<strong>de</strong>n repetirse un número arbitrario <strong>de</strong> veces aparecenentre llaves { }.Ejemplo:TPWrite[String’:=’] [’\’Num’:=’ ] |[’\’Bool’:=’ ] |[’\’Pos’:=’ ] |[’\’Orient’:=’ ]’;’- Pue<strong>de</strong> omitir el texto que aparece entre corchetes [ ].- Los argumentos excluyentes entre sí, es <strong>de</strong>cir, que no pue<strong>de</strong>n existir a la vez enuna misma instrucción, aparecen separados por una barra vertical |.- Los argumentos que pue<strong>de</strong>n repetirse un número arbitrario <strong>de</strong> veces aparecenentre llaves { }.- Los símbolos que se escriben para conseguir la sintaxis correcta aparecen entrecomillas sencillas (apóstrofos) ’ ’.- El tipo <strong>de</strong> datos <strong>de</strong>l argumento (en cursiva) y otras características aparecenentre símbolos <strong>de</strong> mayor y menor que < >. Consulte la <strong>de</strong>scripción <strong>de</strong> losparámetros <strong>de</strong> una rutina para obtener información más <strong>de</strong>tallada.Los elementos básicos <strong>de</strong>l lenguaje y <strong>de</strong>terminadas instrucciones se escriben medianteuna sintaxis especial, EBNF. Esta sintaxis se basa en las mismas reglas, pero conalgunos elementos adicionales.Ejemplo:GOTO ’;’ ::= | ::= { | | ’_’}- El símbolo ::= significa se <strong>de</strong>fine como.- El texto encerrado entre símbolos <strong>de</strong> mayor y menor que < > se <strong>de</strong>finen en unalínea separada.Descripción general <strong>de</strong> <strong>RAPID</strong> 3


Introducción4 Descripción general <strong>de</strong> <strong>RAPID</strong>


La estructura <strong>de</strong>l lenguaje2 La estructura <strong>de</strong>l lenguajeEl programa está compuesto por un conjunto <strong>de</strong> instrucciones que <strong>de</strong>scriben la actividad<strong>de</strong>l robot. Por tanto, existen instrucciones específicas para los distintos comandos, porejemplo una para mover el robot, otra para seleccionar una salida, etc.Por lo general, las instrucciones llevan asociado un conjunto <strong>de</strong> argumentos que<strong>de</strong>finen qué <strong>de</strong>be ocurrir con una instrucción concreta. Por ejemplo, la instrucciónutilizada para restablecer una salida contiene un argumento que <strong>de</strong>fine qué salida <strong>de</strong>berestablecerse, por ejemplo Reset do5. Estos argumentos pue<strong>de</strong>n especificarse medianteuno <strong>de</strong> los métodos siguientes:- Como un valor numérico, por ejemplo 5 ó 4.6- Como una <strong>referencia</strong> a un dato, por ejemplo reg1- Como una expresión, por ejemplo 5+reg1*2- Como una llamada a una función, por ejemplo Abs(reg1)- Como un valor <strong>de</strong> ca<strong>de</strong>na <strong>de</strong> caracteres, por ejemplo "Producción <strong>de</strong> la pieza A"Existen tres tipos <strong>de</strong> rutinas: procedimientos, funciones y rutinas TRAP.- Los procedimientos se utilizan como subprogramas.- Las funciones <strong>de</strong>vuelven un valor <strong>de</strong> un tipo concreto y se utilizan comoargumento <strong>de</strong> una instrucción.- Las rutinas TRAP proporcionan una forma <strong>de</strong> respon<strong>de</strong>r a las interrupciones.Las rutinas TRAP pue<strong>de</strong>n asociarse con una interrupción <strong>de</strong>terminada. Porejemplo, al establecer una entrada, se ejecuta automáticamente si se producedicha interrupción en concreto.La información también pue<strong>de</strong> almacenarse en datos, por ejemplo los datos <strong>de</strong> lasherramientas (que contienen información sobre las herramientas, como su TCP y supeso) y datos numéricos (que pue<strong>de</strong>n usarse por ejemplo para contar el número <strong>de</strong>piezas que <strong>de</strong>ben procesarse). Los datos se agrupan en distintos tipos <strong>de</strong> datos que<strong>de</strong>scriben los distintos tipos <strong>de</strong> información, como herramientas, posiciones y cargas.Dado que es posible crear estos datos y asignarles nombres arbitrarios, no existeningún límite en el número <strong>de</strong> datos (excepto el límite impuesto por la memoriadisponible). Estos datos pue<strong>de</strong>n existir <strong>de</strong> forma global en el programa o sólolocalmente <strong>de</strong>ntro <strong>de</strong> una rutina.Existen tres tipos <strong>de</strong> datos: constantes, variables y persistentes.- Las constantes representan valores fijos y la única forma <strong>de</strong> asignarles un nuevovalor es manualmente.- Las asignación <strong>de</strong> nuevos valores a las variables pue<strong>de</strong> realizarse durante laejecución <strong>de</strong>l programa.- Un valor persistente pue<strong>de</strong> <strong>de</strong>scribirse como una variable “persistente”.Cuando se guarda un programa, el valor <strong>de</strong> inicialización correspon<strong>de</strong> al valoractual <strong>de</strong>l valor persistente.Descripción general <strong>de</strong> <strong>RAPID</strong> 5


La estructura <strong>de</strong>l lenguajeOtras características <strong>de</strong>l lenguaje son:- Parámetros <strong>de</strong> rutinas- Expresiones aritméticas y lógicas- Gestión automática <strong>de</strong> errores- Programas modulares- Multitarea6 Descripción general <strong>de</strong> <strong>RAPID</strong>


Control <strong>de</strong>l flujo <strong>de</strong>l programa3 Control <strong>de</strong>l flujo <strong>de</strong>l programaEl programa se ejecuta secuencialmente como una regla, es <strong>de</strong>cir, una instrucción trasotra. En ocasiones, se requieren instrucciones que interrumpen esta ejecuciónsecuencial y que llaman a otra instrucción, para enfrentarse a las distintas situacionesque pue<strong>de</strong>n darse durante la ejecución.3.1 Principios <strong>de</strong> programaciónEl flujo <strong>de</strong>l programa pue<strong>de</strong> controlarse acor<strong>de</strong> con cinco principios diferentes:- Llamar a otra rutina (procedimiento) y, una vez ejecutada dicha rutina,continuar la ejecución con la instrucción que sigue a la llamada a la rutina.- Ejecutar instrucciones diferentes en función <strong>de</strong> si se cumple o no una condición<strong>de</strong>terminada.- Repetir una secuencia <strong>de</strong> instrucciones un número <strong>de</strong>terminado <strong>de</strong> veces o hastaque se cumple una condición <strong>de</strong>terminada.- Ir a una etiqueta <strong>de</strong>ntro <strong>de</strong> la misma rutina.- Detener la ejecución <strong>de</strong>l programa.3.2 Llamada a otra rutinaInstrucciónProcCallCallByVarRETURNFinalidad:Llamar (saltar a) otra rutinaLlamar a procedimientos que tienen nombres concretosVolver a la rutina original3.3 Control <strong>de</strong>l programa <strong>de</strong>ntro <strong>de</strong> la rutinaInstrucciónFinalidad:Compact IF (IF compacto)Ejecutar una instrucción sólo si se cumple una condiciónIFEjecutar una secuencia <strong>de</strong> instrucciones diferentes en función<strong>de</strong> si se cumple una condiciónFORRepetir una sección <strong>de</strong>l programa un número <strong>de</strong> vecesWHILERepetir una secuencia <strong>de</strong> instrucciones diferentes mientras sigacumpliéndose una condiciónTESTEjecutar instrucciones diferentes en función <strong>de</strong>l valor <strong>de</strong> unaexpresiónGOTOSaltar a una etiquetaetiquetaEspecificar una etiqueta (un nombre <strong>de</strong> línea)Descripción general <strong>de</strong> <strong>RAPID</strong> 7


Control <strong>de</strong>l flujo <strong>de</strong>l programa3.4 Detención <strong>de</strong> la ejecución <strong>de</strong>l programaInstrucciónStopEXITBreakFinalidad:Detener la ejecución <strong>de</strong>l programaDetener la ejecución <strong>de</strong>l programa <strong>de</strong> forma que no se permitareiniciarloDetener temporalmente la ejecución <strong>de</strong>l programa con fines <strong>de</strong><strong>de</strong>puración3.5 Detención <strong>de</strong>l ciclo actualInstrucciónExitCycleFinalidad:Detener el ciclo actual y trasladar el puntero <strong>de</strong>l programa a laprimera instrucción <strong>de</strong> la rutina principal. Cuando seselecciona el modo <strong>de</strong> ejecución CONT, la ejecución continúaen el siguiente ciclo <strong>de</strong> programa.8 Descripción general <strong>de</strong> <strong>RAPID</strong>


Otras instrucciones4 Otras instruccionesExiste un conjunto <strong>de</strong> instrucciones adicionales que se utilizan para:- Asignar valores a los datos- Esperar una <strong>de</strong>terminada cantidad <strong>de</strong> tiempo o esperar hasta que se cumpla unacondición- Insertar un comentario en el programa- Cargar módulos <strong>de</strong> programa4.1 Asignación <strong>de</strong> un valor a un datoEs posible asignar cualquier valor a un dato <strong>de</strong>terminado. Por ejemplo, el valor pue<strong>de</strong>ser inicializado con un valor constante, por ejemplo 5, o actualizado mediante unaexpresión aritmética, por ejemplo reg1+5*reg3.Instrucción Finalidad::= Asignación <strong>de</strong> un valor a un dato4.2 EsperaEs posible programar el robot <strong>de</strong> forma que espere un tiempo <strong>de</strong>terminado o que esperehasta que se cumpla la condición que <strong>de</strong>see, por ejemplo, esperar hasta que se activeuna entrada.InstrucciónWaitTimeWaitUntilWaitDIWaitDOFinalidad:Esperar una cantidad <strong>de</strong>terminada <strong>de</strong> tiempo o esperar hastaque el robot <strong>de</strong>je <strong>de</strong> moverseEsperar hasta que se cumpla una condiciónEsperar hasta que se active una entrada digitalEsperar hasta que se active una salida digital4.3 ComentariosLa única finalidad <strong>de</strong> insertar comentarios en el programa es facilitar su lectura. Loscomentarios no afectan a la ejecución <strong>de</strong>l programa.InstruccióncomentarioFinalidad:Comentario sobre el programaDescripción general <strong>de</strong> <strong>RAPID</strong> 9


Otras instrucciones4.4 Carga <strong>de</strong> módulos <strong>de</strong> programaLos programas <strong>de</strong> módulo pue<strong>de</strong>n cargarse <strong>de</strong>s<strong>de</strong> la memoria <strong>de</strong> almacenamiento oeliminarse <strong>de</strong> la memoria <strong>de</strong> programas. Esto permite manejar programas gran<strong>de</strong>s consólo una memoria pequeña.InstrucciónLoadUnLoadStartLoadWaitLoadCancelLoadSaveEraseModuleTipo <strong>de</strong> datosloadsessionFinalidad:Cargar un módulo <strong>de</strong> programa en la memoria <strong>de</strong> programasDescargar un módulo <strong>de</strong> programa <strong>de</strong> la memoria <strong>de</strong> programasCargar un módulo <strong>de</strong> programa en la memoria <strong>de</strong> programasdurante la ejecuciónConectar el módulo, si se ha cargado con StartLoad, a la tarea<strong>de</strong> programaCancelar la carga <strong>de</strong> un módulo que se está cargando o que seha cargado con la instrucción StartLoadGuardar un módulo <strong>de</strong> programaBorrar un módulo <strong>de</strong> la memoria <strong>de</strong>l programa.Finalidad:Programar una sesión <strong>de</strong> carga4.5 Otras funcionesFunciónOpMo<strong>de</strong>RunMo<strong>de</strong>NonMotionMo<strong>de</strong>DimPresentIsPersIsVarFinalidad:Leer el modo actual <strong>de</strong> funcionamiento <strong>de</strong>l robotLeer el modo actual <strong>de</strong> ejecución <strong>de</strong> programas <strong>de</strong>l robotLeer el modo sin ejecución <strong>de</strong> movimientos actual <strong>de</strong> la tarea<strong>de</strong>l programaObtener las dimensiones <strong>de</strong> una matrizDeterminar si está presente un parámetro opcional cuando sehace una llamada a una rutinaComprobar si un parámetro es <strong>de</strong> tipo persistenteComprobar si un parámetro es una variable4.6 Datos básicosTipo <strong>de</strong> datoboolnumsymnumstringswitchPara <strong>de</strong>finir:Datos lógicos (con los valores verda<strong>de</strong>ro o falso)Valores numéricos (<strong>de</strong>cimales o enteros)Datos numéricos con valor simbólicoCa<strong>de</strong>nas <strong>de</strong> caracteresParámetros <strong>de</strong> rutina sin valor10 Descripción general <strong>de</strong> <strong>RAPID</strong>


Otras instrucciones4.7 Funciones <strong>de</strong> conversiónFunciónStrToByteByteToStrFinalidad:Convertir un byte en un dato <strong>de</strong> ca<strong>de</strong>na <strong>de</strong> caracteres con unformato <strong>de</strong>finido <strong>de</strong> datos <strong>de</strong> byte.Convertir una ca<strong>de</strong>na <strong>de</strong> caracteres con un formato <strong>de</strong>finido <strong>de</strong>datos <strong>de</strong> byte a un dato <strong>de</strong> byte.Descripción general <strong>de</strong> <strong>RAPID</strong> 11


Otras instrucciones12 Descripción general <strong>de</strong> <strong>RAPID</strong>


Parámetros <strong>de</strong> movimiento5 Parámetros <strong>de</strong> movimientoAlgunas <strong>de</strong> las características <strong>de</strong> movimiento <strong>de</strong>l robot se <strong>de</strong>terminan medianteinstrucciones lógicas que se aplican a todos los movimientos:- Velocidad máxima <strong>de</strong> TCP- Velocidad máxima y ajuste <strong>de</strong> velocidad- Aceleración- Gestión <strong>de</strong> distintas configuraciones <strong>de</strong> robot- Carga útil- Comportamiento cerca <strong>de</strong> puntos singulares- Desplazamiento <strong>de</strong>l programa- Servo suave- Valores <strong>de</strong> ajuste5.1 Principios <strong>de</strong> programaciónLas características básicas <strong>de</strong>l movimiento <strong>de</strong>l robot <strong>de</strong>pen<strong>de</strong>n <strong>de</strong> los datosespecificados con cada instrucción <strong>de</strong> posicionamiento. Sin embargo, algunos datos seespecifican en instrucciones separadas que se aplican a todos los movimientos hastaque cambia dicha información.Los parámetros generales <strong>de</strong> movimiento se especifican utilizando variasinstrucciones, pero también pue<strong>de</strong>n leerse a través <strong>de</strong> la variable <strong>de</strong> sistemaC_MOTSET o C_PROGDISP.Los valores pre<strong>de</strong>terminados se establecen automáticamente (mediante la ejecución <strong>de</strong>la rutina SYS_RESET <strong>de</strong>l módulo BASE <strong>de</strong>l sistema) en los casos siguientes:- En los arranques en frío- Cuando se carga un nuevo programa- Cuando se inicia el programa <strong>de</strong>s<strong>de</strong> el principio5.2 Velocidad máxima <strong>de</strong> TCPFunciónMaxRobSpeedFinalidad:Obtener la velocidad <strong>de</strong> TCP máxima <strong>de</strong>l tipo <strong>de</strong> robotutilizadoDescripción general <strong>de</strong> <strong>RAPID</strong> 13


Parámetros <strong>de</strong> movimiento5.3 Definición <strong>de</strong> la velocidadLa velocidad absoluta se programa como un argumento <strong>de</strong> la instrucción <strong>de</strong>posicionamiento. A<strong>de</strong>más, es posible <strong>de</strong>finir la velocidad máxima y el ajuste <strong>de</strong>velocidad (un porcentaje <strong>de</strong> la velocidad programada).InstrucciónVelSetPara <strong>de</strong>finir:La velocidad máxima y el ajuste <strong>de</strong> velocidad5.4 Definición <strong>de</strong> la aceleraciónEn algunos casos, por ejemplo cuando se manejan piezas frágiles, es posible reducir laaceleración en una parte <strong>de</strong>l programa.InstrucciónAccSetWorldAccLimPathAccLimFinalidad:Definir la aceleración máximaLimitar la aceleración/<strong>de</strong>celeración <strong>de</strong> la herramienta (y lacarga <strong>de</strong> la pinza) <strong>de</strong>ntro <strong>de</strong>l sistema <strong>de</strong> coor<strong>de</strong>nadas mundo.Establecer o restablecer limitaciones <strong>de</strong> aceleración y/o<strong>de</strong>celeración <strong>de</strong> TCP a lo largo <strong>de</strong> la trayectoria <strong>de</strong> movimiento.5.5 Definición <strong>de</strong>l control <strong>de</strong> configuraciónNormalmente, la configuración <strong>de</strong>l robot se comprueba durante los movimientos. Si seutiliza el movimiento <strong>de</strong> ejes (eje por eje), se conseguirá la configuración correcta. Sise utiliza un movimiento lineal o circular, el robot siempre se <strong>de</strong>splaza hacia laconfiguración más cercana, pero se realiza una comprobación si es la misma que laprogramada. Sin embargo, es posible cambiar este comportamiento.InstrucciónConfJConfLPara <strong>de</strong>finir:Control <strong>de</strong> configuración activado/<strong>de</strong>sactivado durante elmovimiento <strong>de</strong> ejesControl <strong>de</strong> configuración activado/<strong>de</strong>sactivado durante elmovimiento lineal5.6 Definición <strong>de</strong> la carga útilPara alcanzar el rendimiento óptimo <strong>de</strong>l robot, es necesario <strong>de</strong>finir la carga útilcorrecta.InstrucciónGripLoadPara <strong>de</strong>finir:La carga útil <strong>de</strong> la pinza14 Descripción general <strong>de</strong> <strong>RAPID</strong>


Parámetros <strong>de</strong> movimiento5.7 Definición <strong>de</strong>l comportamiento cerca <strong>de</strong> puntos singularesEs posible programar el robot para evitar puntos singulares, mediante la modificaciónautomática <strong>de</strong> la orientación <strong>de</strong> la herramienta.InstrucciónSingAreaPara <strong>de</strong>finir:El método <strong>de</strong> interpolación utilizado al pasar por puntossingulares5.8 Desplazamiento <strong>de</strong> programaCuando es necesario <strong>de</strong>splazar una parte <strong>de</strong>l programa, por ejemplo a continuación <strong>de</strong>una búsqueda, es posible añadir un <strong>de</strong>splazamiento <strong>de</strong> programa.InstrucciónPDispOnPDispSetPDispOffEOffsOnEOffsSetEOffsOffFunciónDefDFrameDefFrameORobTDefAccFrameFinalidad:Activar el <strong>de</strong>splazamiento <strong>de</strong> programaActivar el <strong>de</strong>splazamiento <strong>de</strong> programa mediante laespecificación <strong>de</strong> un valorDesactivar el <strong>de</strong>splazamiento <strong>de</strong> programaActivar un offset <strong>de</strong>l eje externoActivar un offset <strong>de</strong> eje externo mediante la especificación <strong>de</strong>un valorDesactivar un offset <strong>de</strong> eje externoFinalidad:Calcular un <strong>de</strong>splazamiento <strong>de</strong> programa <strong>de</strong>s<strong>de</strong> tres posicionesCalcular un <strong>de</strong>splazamiento <strong>de</strong> programa <strong>de</strong>s<strong>de</strong> seis posicionesEliminar el <strong>de</strong>splazamiento <strong>de</strong> programa <strong>de</strong>s<strong>de</strong> una posiciónDefinir una base <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong>s<strong>de</strong> las posicionesoriginales y las <strong>de</strong>splazadas5.9 Servo suaveUno o varios <strong>de</strong> los ejes <strong>de</strong>l robot pue<strong>de</strong>n funcionar en el modo “suave”. Con estafunción, el robot pue<strong>de</strong> adaptarse a nuevas situaciones y pue<strong>de</strong> sustituir, por ejemplo,a una herramienta con resorte.InstrucciónSoftActSoftDeactDitherAct 1DitherDeact 1Finalidad:Activar el servo suave para uno o varios ejesDesactivar el servo suavePermite aplicar una función <strong>de</strong> oscilación al servo suaveDesactiva la función <strong>de</strong> oscilación <strong>de</strong>l servo suave1. Sólo en el sistema IRB 7600Descripción general <strong>de</strong> <strong>RAPID</strong> 15


Parámetros <strong>de</strong> movimiento5.10 Modificación <strong>de</strong> los valores <strong>de</strong> ajuste <strong>de</strong>l robotEn general, el funcionamiento <strong>de</strong>l robot incorpora una optimización automática. Sinembargo, en casos extremos pue<strong>de</strong>n producirse situaciones como rebasamientos. Pue<strong>de</strong>modificar los valores <strong>de</strong> ajuste <strong>de</strong>l robot para conseguir el funcionamiento requerido.InstrucciónTuneServoTuneResetPathResolCirPathMo<strong>de</strong>Tipo <strong>de</strong> datotunetypeFinalidad:Modificar los valores <strong>de</strong> ajuste <strong>de</strong>l robotRestablecer el ajuste al modo normalAjustar la resolución <strong>de</strong> trayectorias geométricasSeleccionar la forma en que la herramienta cambia <strong>de</strong>orientación durante una interpolación circularFinalidad:Representar el tipo <strong>de</strong> ajuste como una constante simbólica16 Descripción general <strong>de</strong> <strong>RAPID</strong>


Parámetros <strong>de</strong> movimiento5.11 Zonas mundoEs posible <strong>de</strong>finir hasta 10 volúmenes diferentes <strong>de</strong>ntro <strong>de</strong>l área <strong>de</strong> trabajo <strong>de</strong>l robot.Pue<strong>de</strong> usarlos para:- Indicar que el TCP <strong>de</strong>l robot es una parte <strong>de</strong>finida <strong>de</strong>l área <strong>de</strong> trabajo.- Delimitar el área <strong>de</strong> trabajo <strong>de</strong>l robot e impedir colisiones con la herramienta.- Crear un área <strong>de</strong> trabajo común para dos robots. En este caso, el área <strong>de</strong> trabajoestá disponible sólo para un robot cada vez.InstrucciónWZBoxDef 1WZCylDef 1WZSphDefWZHomeJointDefWZLimJointDefWZLimSup 1WZDOSet 1WZDisable 1WZEnable 1WZFree 1Finalidad:Definir una zona global cuadradaDefinir una zona global cilíndricaDefinir una zona global esféricaDefinir una zona global en coor<strong>de</strong>nadas <strong>de</strong> ejesDefinir una zona global en coor<strong>de</strong>nadas <strong>de</strong> ejes para la<strong>de</strong>limitación <strong>de</strong>l área <strong>de</strong> trabajoActivar la supervisión <strong>de</strong> límites <strong>de</strong> una zona globalActivar la zona global para el establecimiento <strong>de</strong> salidasdigitalesDesactivar la supervisión <strong>de</strong> una zona global temporalActivar la supervisión <strong>de</strong> una zona global temporalBorrar la supervisión <strong>de</strong> una zona global temporalTipo <strong>de</strong> datowztemporarywzstationary 1shapedata 1Finalidad:I<strong>de</strong>ntificar una zona global temporalI<strong>de</strong>ntificar una zona global estacionariaDescribir la geometría <strong>de</strong> una zona global5.12 Datos para parámetros <strong>de</strong> movimientoTipo <strong>de</strong> datomotsetdataprogdispPara <strong>de</strong>finir:Parámetros <strong>de</strong> movimiento, excepto <strong>de</strong>splazamiento <strong>de</strong>programaDesplazamiento <strong>de</strong> programa1. Sólo si el robot está equipado con la opción “World zones”Descripción general <strong>de</strong> <strong>RAPID</strong> 17


Parámetros <strong>de</strong> movimiento18 Descripción general <strong>de</strong> <strong>RAPID</strong>


Movimiento6 MovimientoLos movimientos <strong>de</strong>l robot se programan como movimientos <strong>de</strong> posición a posición,es <strong>de</strong>cir, “moverse <strong>de</strong> la posición actual a una nueva posición”. La trayectoria entreestas dos posiciones es calculada automáticamente por el robot.6.1 Principios <strong>de</strong> programaciónLas características básicas <strong>de</strong>l movimiento, como el tipo <strong>de</strong> trayectoria, se especificanmediante la selección <strong>de</strong> la instrucción <strong>de</strong> posicionamiento a<strong>de</strong>cuada.Las <strong>de</strong>más características <strong>de</strong> movimiento se especifican mediante la <strong>de</strong>finición <strong>de</strong>datos que se usan como argumentos <strong>de</strong> la instrucción:- Datos <strong>de</strong> posición (posición final <strong>de</strong>l robot y los ejes externos)- Datos <strong>de</strong> velocidad (velocidad <strong>de</strong>seada)- Datos <strong>de</strong> zona (exactitud <strong>de</strong> la posición)- Datos <strong>de</strong> la herramienta (por ejemplo, la posición <strong>de</strong>l TCP)- Datos <strong>de</strong> objeto tratado (por ejemplo, el sistema <strong>de</strong> coor<strong>de</strong>nadas actual)Algunas <strong>de</strong> las características <strong>de</strong> movimiento <strong>de</strong>l robot se <strong>de</strong>terminan medianteinstrucciones lógicas que se aplican a todos los movimientos (consulte Parámetros <strong>de</strong>movimiento en la página 13):- Velocidad máxima y ajuste <strong>de</strong> velocidad- Aceleración- Gestión <strong>de</strong> distintas configuraciones <strong>de</strong> robot- Carga útil- Comportamiento cerca <strong>de</strong> puntos singulares- Desplazamiento <strong>de</strong>l programa- Servo suave- Valores <strong>de</strong> ajustePara el posicionamiento tanto <strong>de</strong>l robot como <strong>de</strong> los ejes externos se usan las mismasinstrucciones. Los ejes externos se mueven a una velocidad constante y alcanzan laposición final al mismo tiempo que el robot.Descripción general <strong>de</strong> <strong>RAPID</strong> 19


Movimiento6.2 Instrucciones <strong>de</strong> posicionamientoInstrucciónMoveCMoveJMoveLMoveAbsJMoveExtJMoveCDOMoveJDOMoveLDOMoveCSync 1MoveJSync 1MoveLSync 1Tipo <strong>de</strong> movimiento:Mover el TCP a lo largo <strong>de</strong> una trayectoria circularMovimiento <strong>de</strong> ejesMover el TCP a lo largo <strong>de</strong> una trayectoria linealMovimiento absoluto <strong>de</strong> ejesMover un eje externo lineal o giratorio sin TCPMover el robot en una trayectoria circular y establecer unasalida digital a medio camino <strong>de</strong> la trayectoria <strong>de</strong> esquina.Mover el robot con un movimiento <strong>de</strong> ejes y establecer unasalida digital a medio camino <strong>de</strong> la trayectoria <strong>de</strong> esquina.Mover el robot en una trayectoria lineal y establecer una salidadigital a medio camino <strong>de</strong> la trayectoria <strong>de</strong> esquina.Mover el robot en una trayectoria circular y ejecutar unprocedimiento <strong>de</strong> <strong>RAPID</strong>.Mover el robot con un movimiento <strong>de</strong> ejes y ejecutar unprocedimiento <strong>de</strong> <strong>RAPID</strong>Mover el robot <strong>de</strong> forma lineal y ejecutar un procedimiento <strong>de</strong><strong>RAPID</strong>6.3 BúsquedaDurante el movimiento, el robot pue<strong>de</strong> buscar la posición <strong>de</strong>l objeto <strong>de</strong> trabajo, porejemplo. La posición buscada (indicada por una señal <strong>de</strong> sensor) se almacena y pue<strong>de</strong>usarse más tar<strong>de</strong> para posicionar el robot o para calcular un <strong>de</strong>splazamiento <strong>de</strong>programa.InstrucciónSearchCSearchLTipo <strong>de</strong> movimiento:TCP a lo largo <strong>de</strong> una trayectoria circularTCP a lo largo <strong>de</strong> una trayectoria lineal1. Sólo si el robot está equipado con la opción “Fixed position events”.20 Descripción general <strong>de</strong> <strong>RAPID</strong>


Movimiento6.4 Activación <strong>de</strong> salidas o interrupciones en posiciones concretasNormalmente, las instrucciones lógicas se ejecutan en la transición <strong>de</strong> una instrucción<strong>de</strong> posicionamiento a otra. Sin embargo, si se utilizan instrucciones especiales <strong>de</strong>movimiento, podrían ejecutarse éstas en su lugar cuando el robot se encuentra en unaposición <strong>de</strong>terminada.InstrucciónTriggIO 1TriggInt 1TriggCheckIO 1TriggEquip 1TriggC 1TriggJ 1TriggL 1StepBwdPath 2TriggStopProc 2Tipo <strong>de</strong> datotriggdata 1aiotrigg 3restartdata 2Finalidad:Definir una condición <strong>de</strong> disparo para establecer una salida enuna posición <strong>de</strong>terminadaDefinir una condición <strong>de</strong> disparo para ejecutar una rutinaTRAP en una posición <strong>de</strong>terminadaDefinir una comprobación <strong>de</strong> E/S en una posición <strong>de</strong>terminadaDefinir una condición <strong>de</strong> disparo para establecer una salida enuna posición <strong>de</strong>terminada, con la posibilidad <strong>de</strong> incluir unacompensación <strong>de</strong> tiempo por el retardo <strong>de</strong> los equipos externosMover el robot (el TCP) en círculo con una condición <strong>de</strong>disparo activadaMover el robot eje por eje con una condición <strong>de</strong> disparoactivadaMover el robot (el TCP) linealmente con una condición <strong>de</strong>disparo activadaRetroce<strong>de</strong>r en su trayectoria en una rutina <strong>de</strong> eventoRESTARTCrear un proceso interno <strong>de</strong> supervisión en el sistema para lapuesta a cero <strong>de</strong> las señales <strong>de</strong> proceso especificadas y lageneración <strong>de</strong> datos <strong>de</strong> reinicio en una variable persistenteespecificada, cada vez que se <strong>de</strong>tiene el programa (STOP) o seproduce un paro <strong>de</strong> emergencia (QSTOP) en el sistema.Para <strong>de</strong>finir:Condiciones <strong>de</strong> disparoCondiciones <strong>de</strong> disparo con E/S analógicaDatos para TriggStopProc6.5 Control <strong>de</strong> una señal analógica <strong>de</strong> salida <strong>de</strong> forma proporcional al TCP realTriggSpeed 2Definir condiciones y acciones para el control <strong>de</strong> una señalanalógica <strong>de</strong> salida cuyo valor <strong>de</strong> salida es proporcional a lavelocidad real <strong>de</strong>l TCP.1. Sólo si el robot está equipado con la opción “Fixed position events”.2. Sólo si el robot está equipado con la opción “Advanced <strong>RAPID</strong>”.3. Sólo si el robot está equipado con la opción “Analog signal interrupt”.Descripción general <strong>de</strong> <strong>RAPID</strong> 21


Movimiento6.6 Control <strong>de</strong>l movimiento si se produce un error o una interrupciónPara po<strong>de</strong>r corregir un error o una interrupción, es posible <strong>de</strong>tener temporalmente elmovimiento y reiniciarlo posteriormente.InstrucciónStopMoveStartMoveStartMoveRetryStopMoveResetStorePath 1RestoPath 1ClearPathFinalidad:Detener los movimientos <strong>de</strong>l robotReiniciar los movimientos <strong>de</strong>l robotReiniciar los movimientos <strong>de</strong>l robot y hacer un reintento en unasecuencia indivisibleRestablecer el estado <strong>de</strong> <strong>de</strong>tención <strong>de</strong> movimiento, pero sininiciar los movimientos <strong>de</strong>l robotAlmacenar la última trayectoria generadaRestaurar una trayectoria almacenada anteriormenteEliminar toda la trayectoria <strong>de</strong> movimiento <strong>de</strong>l nivel actual <strong>de</strong>trayectorias <strong>de</strong> movimiento.6.7 Obtención <strong>de</strong> la información <strong>de</strong> robot en un sistema MultiMoveSe utiliza para obtener un nombre o una <strong>referencia</strong> al robot en la tarea <strong>de</strong> programaactual.FunciónRobNameDatoROB_IDFinalidad:Obtener el nombre <strong>de</strong>l robot controlado en la tarea <strong>de</strong> programaactual, si lo hay.Finalidad:Obtener datos que contienen una <strong>referencia</strong> al robot controladoen la tarea <strong>de</strong> programa actual, si lo hay.6.8 Control <strong>de</strong> ejes externosPara el posicionamiento <strong>de</strong>l robot y <strong>de</strong> los ejes externos se usan las mismasinstrucciones. Sin embargo, algunas instrucciones sólo afectan a los movimientos <strong>de</strong>los ejes externos.InstrucciónDeactUnitActUnitMechUnitLoadFunciónGetNextMechUnitIsMechUnitActiveFinalidad:Desactivar una unidad mecánica externaActivar una unidad mecánica externaDefinir una carga útil para una unidad mecánicaFinalidad:Obtener el nombre <strong>de</strong> las unida<strong>de</strong>s mecánicas <strong>de</strong>l sistema <strong>de</strong>lrobotComprobar si una unidad mecánica está activada o no1. Sólo si el robot está equipado con la opción “Path recovery”.22 Descripción general <strong>de</strong> <strong>RAPID</strong>


Movimiento6.9 Ejes in<strong>de</strong>pendientesEl eje 6 <strong>de</strong>l robot (o el 4 en el caso <strong>de</strong>l sistema IRB 2400 /4400) o un eje externopue<strong>de</strong>n moverse in<strong>de</strong>pendientemente <strong>de</strong>l resto <strong>de</strong> movimientos. También es posiblerestablecer el área <strong>de</strong> trabajo <strong>de</strong> un eje, con lo que se reducen los tiempos <strong>de</strong> ciclo.FunciónIndAMove 1IndCMove 1IndDMove 1IndRMove 1IndReset 1IndInpos 1IndSpeed 1InstrucciónHollowWristReset 2Finalidad:Poner un eje en el modo in<strong>de</strong>pendiente y mover el eje hasta unaposición absolutaPoner un eje en el modo in<strong>de</strong>pendiente e iniciar un movimientocontinuo <strong>de</strong>l ejePoner un eje en el modo in<strong>de</strong>pendiente y mover el eje unadistancia <strong>de</strong>ltaPoner un eje en el modo in<strong>de</strong>pendiente y mover el eje hasta unaposición relativa (<strong>de</strong>ntro <strong>de</strong> la revolución <strong>de</strong>l eje)Poner un eje en el modo <strong>de</strong>pendiente o/y restablecer el área <strong>de</strong>trabajoComprobar si un eje in<strong>de</strong>pendiente está en posiciónComprobar si un eje in<strong>de</strong>pendiente ha alcanzado la velocidadprogramadaFinalidad:Restablecer la posición <strong>de</strong> los ejes <strong>de</strong> muñeca en losmanipuladores <strong>de</strong> muñeca huecos, por ejemplo, en los sistemasIRB 5402 y IRB 5403.1. Sólo si el robot está equipado con la opción “In<strong>de</strong>pen<strong>de</strong>nt movement”.2. Sólo si el robot está equipado con la opción “In<strong>de</strong>pen<strong>de</strong>nt movement”. La instrucción HollowWristResetsólo pue<strong>de</strong> usarse en los robots IRB 5402 y IRB 5403.Descripción general <strong>de</strong> <strong>RAPID</strong> 23


Movimiento6.10 Corrección <strong>de</strong> trayectoriaInstrucciónCorrCon 1CorrWrite 1CorrDiscon 1CorrClear 1FunciónCorrRead 1Tipo <strong>de</strong> datoscorr<strong>de</strong>scr 1Finalidad:Conectarse con un generador <strong>de</strong> correcciónEscribir offsets <strong>de</strong>l sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> trayectoria en ungenerador <strong>de</strong> correcciónDesconectarse <strong>de</strong> un generador <strong>de</strong> conexión con el que se haconectado anteriormenteEliminar todos los generadores <strong>de</strong> corrección conectadosFinalidad:Leer todas las correcciones entregadas por todos losgeneradores <strong>de</strong> corrección conectadosFinalidad:Añadir offsets geométricos al sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong>trayectoria6.11 Grabadora <strong>de</strong> trayectoriasInstrucciónPathRecStart 2PathRecStop 2PathRecMoveBwd 2PathRecMoveFwd 2FunciónPathRecValidBwd 2PathRecValidFwd 2Tipo <strong>de</strong> datospathrecidFinalidad:Iniciar la grabación <strong>de</strong> la trayectoria <strong>de</strong>l robotDetener la grabación <strong>de</strong> la trayectoria <strong>de</strong>l robotMover el robot hacia atrás por una trayectoria grabadaMover el robot <strong>de</strong> nuevo a la posición en la que se ejecutóPathRecMoveBwdFinalidad:Comprobar si la grabadora <strong>de</strong> trayectorias está activa y si estádisponible una trayectoria hacia atrás grabadaComprobar si la grabadora <strong>de</strong> trayectorias pue<strong>de</strong> utilizarse paramoverse hacia a<strong>de</strong>lanteFinalidad:I<strong>de</strong>ntificar un punto <strong>de</strong> ruptura para la grabadora <strong>de</strong>trayectorias1. Sólo si el robot está equipado con la opción “Path offset or RobotWare-Arc sensor”.2. Sólo si el robot está equipado con la opción “Path recovery”.24 Descripción general <strong>de</strong> <strong>RAPID</strong>


Movimiento6.12 Conveyor tracking (Control <strong>de</strong> transportadores)InstrucciónWaitWObj 1DropWObj 1Finalidad:Esperar a que exista un objeto <strong>de</strong> trabajo en el transportadorSoltar el objeto <strong>de</strong> trabajo sobre el transportador6.13 Sincronización <strong>de</strong> sensoresLa sincronización <strong>de</strong> sensores es la función por la cual la velocidad <strong>de</strong>l robot <strong>de</strong>pen<strong>de</strong><strong>de</strong> un sensor que pue<strong>de</strong> montarse sobre un transportador móvil o el eje <strong>de</strong> un motor <strong>de</strong>empuje.InstrucciónWaitSensor 2SyncToSensor 2DropSensor 2Finalidad:Conectarse con un objeto <strong>de</strong> la ventana inicial <strong>de</strong> una unidadmecánica con sensor.Iniciar o <strong>de</strong>tener la sincronización <strong>de</strong> los movimientos <strong>de</strong>lrobot con el movimiento <strong>de</strong> los sensoresDesconectarse <strong>de</strong>l objeto actual6.14 I<strong>de</strong>ntificación <strong>de</strong> carga y <strong>de</strong>tección <strong>de</strong> colisionesInstrucciónMotionSup 3ParIdPosValidParIdRobValidLoadIdManLoadIdTipo <strong>de</strong> datosloadidnumparidnumparidvalidnumFinalidad:Desactiva/activa la supervisión <strong>de</strong>l movimientoPosición <strong>de</strong> robot válida para la i<strong>de</strong>ntificación <strong>de</strong> parámetrosTipo <strong>de</strong> robot válido para la i<strong>de</strong>ntificación <strong>de</strong> parámetrosI<strong>de</strong>ntificación <strong>de</strong> carga <strong>de</strong> la herramienta o la carga útilI<strong>de</strong>ntificación <strong>de</strong> carga <strong>de</strong>l manipulador externoFinalidad:Representar un entero con una constante simbólicaRepresentar un entero con una constante simbólicaRepresentar un entero con una constante simbólica1. Sólo si el robot está equipado con la opción “Conveyor tracking”.2. Sólo si el robot está equipado con la opción “Sensor synchronization”.3. Sólo si el robot está equipado con la opción “Collision <strong>de</strong>tection”.Descripción general <strong>de</strong> <strong>RAPID</strong> 25


Movimiento6.15 Funciones <strong>de</strong> posiciónFunciónOffsRelToolCalcRobTCPosCRobTCJointTReadMotorCToolCWObjORobTMirPosCalcJointTDistanceFinalidad:Añadir un offset a una posición <strong>de</strong>l robot, expresada en relacióncon el objeto <strong>de</strong> trabajoAñadir un offset, expresado en el sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> laherramientaCalcular el valor <strong>de</strong> robtarget a partir <strong>de</strong>l valor <strong>de</strong> jointtargetLeer la posición actual (sólo los valores x, y, z <strong>de</strong>l robot)Leer la posición actual (robtarget completo)Leer los ángulos actuales <strong>de</strong> las articulacionesLeer los ángulos actuales <strong>de</strong> los motoresLeer el valor actual <strong>de</strong> tooldataLeer el valor actual <strong>de</strong> wobjdataEliminar un <strong>de</strong>splazamiento <strong>de</strong> programa <strong>de</strong> una posición<strong>de</strong>terminadaObtener la posición espejo <strong>de</strong> otra posiciónCalcular los ángulos <strong>de</strong> las articulaciones a partir <strong>de</strong>l valor <strong>de</strong>robtargetLa distancia entre dos posiciones6.16 Comprobación <strong>de</strong> la interrupción <strong>de</strong> una trayectoria <strong>de</strong>spués <strong>de</strong> una caída<strong>de</strong> alimentaciónFunciónPFRestart 1Finalidad:Comprobar si la trayectoria fue interrumpida comoconsecuencia <strong>de</strong> la caída <strong>de</strong> alimentación6.17 Funciones <strong>de</strong> estadoFunciónCSpeedOverri<strong>de</strong>Finalidad:Leer el ajuste <strong>de</strong> velocidad establecido por el usuario en lasventanas <strong>de</strong> programa o producción.1. Sólo si el robot está equipado con la opción “Advanced <strong>RAPID</strong>”.26 Descripción general <strong>de</strong> <strong>RAPID</strong>


Movimiento6.18 Datos <strong>de</strong> movimientoLos datos <strong>de</strong> movimiento se utilizan como argumentos <strong>de</strong> las instrucciones <strong>de</strong>posicionamiento.Tipo <strong>de</strong> datorobtargetjointtargetspeeddatazonedatatooldatawobjdatastoppointdatai<strong>de</strong>ntnoPara <strong>de</strong>finir:La posición finalLa posición final <strong>de</strong> una instrucción MoveAbsJ oMoveExtJLa velocidadLa exactitud <strong>de</strong> la posición (punto <strong>de</strong> paro o punto <strong>de</strong> paso)El sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> la herramienta y la carga <strong>de</strong> laherramientaEl sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong>l objeto <strong>de</strong> trabajoLa finalización <strong>de</strong> la posiciónUn número utilizado para controlar la sincronización <strong>de</strong> dos omás movimientos sincronizados y coordinados entre sí6.19 Datos básicos <strong>de</strong> los movimientosTipo <strong>de</strong> dato Para <strong>de</strong>finir:pos Una posición (x, y, z)orientUna orientaciónposeUn sistema <strong>de</strong> coor<strong>de</strong>nadas (posición y orientación)confdataLa configuración <strong>de</strong> los ejes <strong>de</strong>l robotextjointLa posición <strong>de</strong> los ejes externosrobjointLa posición <strong>de</strong> los ejes <strong>de</strong>l roboto_robtarget Posición original <strong>de</strong>l robot cuando se utiliza Limit ModPoso_jointtarget Posición original <strong>de</strong>l robot cuando se usa Limit ModPos paraMoveAbsJloaddataUna cargamecunitUna unidad mecánica externaDescripción general <strong>de</strong> <strong>RAPID</strong> 27


Movimiento28 Descripción general <strong>de</strong> <strong>RAPID</strong>


Señales <strong>de</strong> entrada y salida7 Señales <strong>de</strong> entrada y salidaEl robot pue<strong>de</strong> contar con varias señales <strong>de</strong> usuario digitales y analógicas que pue<strong>de</strong>nleerse y modificarse <strong>de</strong>s<strong>de</strong> el propio programa.7.1 Principios <strong>de</strong> programaciónLos nombres <strong>de</strong> las señales se <strong>de</strong>finen en los parámetros <strong>de</strong>l sistema. Estos nombresestán siempre disponibles en el programa para la lectura o el establecimiento <strong>de</strong>operaciones <strong>de</strong> E/S.El valor <strong>de</strong> una señal analógica o <strong>de</strong> un grupo <strong>de</strong> señales digitales se especifica comoun valor numérico.7.2 Modificación <strong>de</strong>l valor <strong>de</strong> una señalInstrucción Finalidad:InvertDOInvertir el valor <strong>de</strong> una señal digital <strong>de</strong> salidaPulseDOGenerar un pulso en una señal digital <strong>de</strong> salidaReset Restablecer una señal digital <strong>de</strong> salida (ponerla a 0)Set Activar una señal digital <strong>de</strong> salida (cambiarla a 1)SetAOCambiar el valor <strong>de</strong> una señal analógica <strong>de</strong> salidaSetDOCambiar el valor <strong>de</strong> una señal digital <strong>de</strong> salida (su valorsimbólico, por ejemplo alta/baja)SetGOCambiar el valor <strong>de</strong> un grupo <strong>de</strong> señales digitales <strong>de</strong> salida7.3 Lectura <strong>de</strong>l valor <strong>de</strong> una señal <strong>de</strong> entradaEl valor <strong>de</strong> una señal <strong>de</strong> entrada pue<strong>de</strong> leerse directamente <strong>de</strong>s<strong>de</strong> el programa, comoen los ejemplos siguientes:! Entrada digitalIF di1 = 1 THEN ...! Entrada <strong>de</strong> grupo digitalIF gi1 = 5 THEN ...! Entrada analógicaIF ai1 > 5.2 THEN ...Descripción general <strong>de</strong> <strong>RAPID</strong> 29


Señales <strong>de</strong> entrada y salida7.4 Gestión <strong>de</strong> erroresPue<strong>de</strong>n generarse los errores recuperables siguientes. El error pue<strong>de</strong> ser gestionado enun gestor <strong>de</strong> errores. La variable <strong>de</strong> sistema ERRNO cambia a:ERR_NORUNUNITsi ha perdido el contacto con la unidad.7.5 Lectura <strong>de</strong>l valor <strong>de</strong> una señal <strong>de</strong> salidaFunciónAOutputDOutputGOutputFinalidad:Leer el valor actual <strong>de</strong> una señal analógica <strong>de</strong> salidaLeer el valor actual <strong>de</strong> una señal digital <strong>de</strong> salidaLeer el valor actual <strong>de</strong> un grupo <strong>de</strong> señales digitales <strong>de</strong> salida7.6 Comprobación <strong>de</strong> la entrada en las señales <strong>de</strong> salidaInstrucciónWaitDIWaitDOFunciónTestDIFinalidad:Esperar hasta que se activa o se pone a cero una entrada digitalEsperar hasta que se activa o se pone a cero una salida digitalFinalidad:Comprobar si una entrada digital está activada7.7 Desactivación y activación <strong>de</strong> módulos <strong>de</strong> E/SLos módulos <strong>de</strong> E/S están activados automáticamente en el momento <strong>de</strong> la puesta enmarcha <strong>de</strong>l sistema, pero pue<strong>de</strong>n <strong>de</strong>sactivarse durante la ejecución <strong>de</strong>l programa yreactivarse más tar<strong>de</strong>.InstrucciónIODisableIOEnableFinalidad:Desactivar un módulo <strong>de</strong> E/SActivar un módulo <strong>de</strong> E/S30 Descripción general <strong>de</strong> <strong>RAPID</strong>


Señales <strong>de</strong> entrada y salida7.8 Definición <strong>de</strong> señales <strong>de</strong> entrada y salidaTipo <strong>de</strong> datodionumsignalaisignalaosignaldisignaldosignalgisignalgoInstrucciónAliasIO 1Para <strong>de</strong>finir:El valor simbólico <strong>de</strong> una señal digitalEl nombre <strong>de</strong> una señal analógica <strong>de</strong> entrada*El nombre <strong>de</strong> una señal analógica <strong>de</strong> salida*El nombre <strong>de</strong> una señal digital <strong>de</strong> entrada*El nombre <strong>de</strong> una señal digital <strong>de</strong> salida*El nombre <strong>de</strong> un grupo <strong>de</strong> señales digitales <strong>de</strong> entrada*El nombre <strong>de</strong> un grupo <strong>de</strong> señales digitales <strong>de</strong> salida*Finalidad:Definir una señal con un nombre <strong>de</strong> alias* Sólo para su <strong>de</strong>finición mediante parámetros <strong>de</strong> sistema.7.9 Obtención <strong>de</strong>l estado <strong>de</strong> la unidad <strong>de</strong> E/STipo <strong>de</strong> datoiounit_stateFunciónIOUnitStatusPara <strong>de</strong>finir:El estado <strong>de</strong> la unidad <strong>de</strong> E/SFinalidad:Devuelve el estado actual <strong>de</strong> la unidad <strong>de</strong> E/S1. Sólo si el robot está equipado con la opción “Advanced <strong>RAPID</strong>-Alias I/O signals”.Descripción general <strong>de</strong> <strong>RAPID</strong> 31


Señales <strong>de</strong> entrada y salida32 Descripción general <strong>de</strong> <strong>RAPID</strong>


Comunicación8 ComunicaciónExisten cuatro formas posibles <strong>de</strong> comunicarse a través <strong>de</strong> canales serie:- Es posible enviar mensajes a la pantalla <strong>de</strong>l FlexPendant y el usuario pue<strong>de</strong>respon<strong>de</strong>r a las preguntas, por ejemplo, sobre el número <strong>de</strong> piezas a procesar.- Es posible almacenar información alfanumérica en archivos <strong>de</strong> texto <strong>de</strong> lamemoria <strong>de</strong> almacenamiento o leerse <strong>de</strong> éstos. Por ejemplo, es posiblealmacenar <strong>de</strong> esta forma las estadísticas <strong>de</strong> producción y procesarlas mása<strong>de</strong>lante en un PC. También es posible enviar directamente la información auna impresora conectada al robot.- Es posible transferir información binaria entre el robot y un sensor, porejemplo.- También es posible transferir información binaria entre el robot y otroor<strong>de</strong>nador, por ejemplo, a través <strong>de</strong> un protocolo <strong>de</strong> comunicaciones.8.1 Principios <strong>de</strong> programaciónLa <strong>de</strong>cisión <strong>de</strong> utilizar información alfanumérica o binaria <strong>de</strong>pen<strong>de</strong> <strong>de</strong> cómo manejanesta información los equipos con los que se comunica el robot. Por ejemplo, un archivopue<strong>de</strong> contener datos almacenados en formato alfanumérico o binario.Si se requiere una comunicación en ambos sentidos <strong>de</strong> forma simultánea, <strong>de</strong>beutilizarse la transmisión binaria.En primer lugar es necesario abrir el canal serie o el archivo. Al hacerlo, se asigna alcanal o archivo un <strong>de</strong>scriptor que se utiliza posteriormente como <strong>referencia</strong> al leer oescribir. El FlexPendant está disponible en todo momento y no es necesario abrirlo.Es posible imprimir tanto textos como los valores <strong>de</strong> <strong>de</strong>terminados tipos <strong>de</strong> datos.8.2 Comunicación a través <strong>de</strong>l FlexPendantInstrucciónTPEraseTPWriteErrWriteTPReadFKTPReadNumTPShowTipo <strong>de</strong> datotpnumFinalidad:Vaciar la pantalla <strong>de</strong> usuario <strong>de</strong>l FlexPendantEscribir un texto en la pantalla <strong>de</strong> usuario <strong>de</strong>l FlexPendantEscribir un texto en la pantalla <strong>de</strong>l FlexPendant y almacenarloa la vez en el registro <strong>de</strong> errores <strong>de</strong>l programa.Asignar etiquetas a las teclas <strong>de</strong> función y leer qué tecla se hapulsadoLeer un valor numérico <strong>de</strong>l FlexPendantSeleccionar una ventana <strong>de</strong>l FlexPendant <strong>de</strong>s<strong>de</strong> <strong>RAPID</strong>Finalidad:Representar la ventana <strong>de</strong>l FlexPendant con una constantesimbólicaDescripción general <strong>de</strong> <strong>RAPID</strong> 33


Comunicación8.3 Lectura o escritura a través <strong>de</strong> un canal serie o un archivo alfanuméricoInstrucciónOpen 1Write 1Close 1FunciónReadNum 1ReadStr 1Finalidad:Abrir un canal o un archivo para lectura o escrituraEscribir un texto en el canal o el archivoCerrar el canal o el archivoFinalidad:Leer un valor numéricoLeer una ca<strong>de</strong>na <strong>de</strong> caracteres8.4 Comunicación a través <strong>de</strong> canales serie o archivos o buses <strong>de</strong> campo binariosInstrucciónOpen 1WriteBin 1WriteAnyBin 1WriteStrBin 1Rewind 1Close 1ClearIOBuff 1ReadAnyBin 1WriteRawBytes 1ReadRawBytes 1FunciónReadBin 1ReadStrBin 1Finalidad:Abrir un canal serie o un archivo para una transferencia binaria<strong>de</strong> datosEscribir en un canal serie o un archivo binarioEscribir en cualquier canal serie o archivo binarioEscribir una ca<strong>de</strong>na <strong>de</strong> caracteres en cualquier canal serie oarchivo binarioSeleccionar el principio <strong>de</strong>l archivo como posición actualCerrar el canal o el archivoVaciar el búfer <strong>de</strong> entrada <strong>de</strong> un canal serieLeer <strong>de</strong> cualquier canal serie binarioEscribir los datos <strong>de</strong> tipo rawbytes en un canal serie o unarchivo o un bus <strong>de</strong> campo binarioLeer los datos <strong>de</strong> tipo rawbytes <strong>de</strong> un canal serie o un archivoo un bus <strong>de</strong> campo binarioFinalidad:Leer <strong>de</strong> un canal serie binarioLeer una ca<strong>de</strong>na <strong>de</strong> caracteres <strong>de</strong> un canal serie o un archivobinario1. Sólo si el robot está equipado con la opción “File and serial channel handling”34 Descripción general <strong>de</strong> <strong>RAPID</strong>


Comunicación8.5 ConversiónInstrucciónClearRawBytes 1CopyRawBytes 1PackRawBytes 1UnPackRawBytes 1PackDNHea<strong>de</strong>r 2FunciónRawBytesLen 1rawbyteFinalidad:Cambiar la variable rawbytes a ceroCopiar <strong>de</strong> una variable rawbytes a otraEmpaquetar el contenido <strong>de</strong> una variable en un “contenedor”<strong>de</strong> tipo rawbytesDesempaquetar el contenido <strong>de</strong> un “contenedor” <strong>de</strong> tiporawbytes en una variableEmpaquetar el título <strong>de</strong>l mensaje DeviceNet en un“contenedor” <strong>de</strong> rawbytesFinalidad:Obtener la longitud actual <strong>de</strong> los bytes válidos en una variable8.6 Datos para canales serieTipo <strong>de</strong> datoio<strong>de</strong>v 1rawbytes 1Para <strong>de</strong>finir:Una <strong>referencia</strong> a un canal serie o un archivo, para usarlaposteriormente en operaciones <strong>de</strong> lectura y escrituraUn “contenedor” general <strong>de</strong> datos, que se utiliza para lacomunicación con los dispositivos <strong>de</strong> E/S.1. Sólo si el robot está equipado con la opción “File and serial channel handling”.2. Sólo si el robot está equipado con la opción “Fieldbus command interface”.Descripción general <strong>de</strong> <strong>RAPID</strong> 35


Comunicación36 Descripción general <strong>de</strong> <strong>RAPID</strong>


Interrupciones9 InterrupcionesEl programa utiliza las interrupciones para tener la posibilidad <strong>de</strong> tratar directamenteun evento, in<strong>de</strong>pendientemente <strong>de</strong> qué instrucción se esté ejecutando en cadamomento.Por ejemplo, el programa se interrumpe cuando se cambia a uno el valor <strong>de</strong> una entrada<strong>de</strong>terminada. Cuando esto se produce, se interrumpe el programa normal y se ejecutauna rutina TRAP especial. Una vez ejecutada completamente la rutina, la ejecución <strong>de</strong>lprograma se reanuda en el punto en que se interrumpió.9.1 Principios <strong>de</strong> programaciónCada interrupción tiene asignada una i<strong>de</strong>ntidad <strong>de</strong> interrupción. Obtiene su i<strong>de</strong>ntidadmediante la creación <strong>de</strong> una variable (<strong>de</strong>l tipo <strong>de</strong> datos intnum) y conectándola a unarutina TRAP.A partir <strong>de</strong> ese momento, la i<strong>de</strong>ntidad <strong>de</strong> interrupción (variable) se utiliza para solicitaruna interrupción, es <strong>de</strong>cir, para especificar el motivo <strong>de</strong> la interrupción. Pue<strong>de</strong> tratarse<strong>de</strong> uno <strong>de</strong> los eventos siguientes:- Cambio <strong>de</strong>l valor <strong>de</strong> una entrada o una salida a uno o a cero.- Transcurre un intervalo <strong>de</strong>terminado <strong>de</strong>spués <strong>de</strong> la petición <strong>de</strong> una interrupción.- Se alcanza una posición <strong>de</strong>terminada.Cuando se solicita una interrupción, ésta queda activada automáticamente, pero esposible <strong>de</strong>sactivarla temporalmente. Esto pue<strong>de</strong> realizarse <strong>de</strong> dos formas:- Es posible <strong>de</strong>sactivar todas las interrupciones. Todas las interrupciones que seproduzcan durante este intervalo se sitúan en una cola y se generanautomáticamente cuando se activen <strong>de</strong> nuevo las interrupciones.- Es posible <strong>de</strong>sactivar interrupciones concretas. Las interrupciones que seproduzcan durante este intervalo se <strong>de</strong>scartan.9.2 Conexión <strong>de</strong> interrupciones a rutinas TRAPInstrucciónCONNECTFinalidad:Conectar una variable (una i<strong>de</strong>ntidad <strong>de</strong> interrupción) a unarutina TRAPDescripción general <strong>de</strong> <strong>RAPID</strong> 37


Interrupciones9.3 Petición <strong>de</strong> interrupcionesInstrucciónISignalDIISignalDOISignalAI 1ISignalAO 1ITimerTriggInt 2IPersIError 3Para solicitar:Una interrupción <strong>de</strong>s<strong>de</strong> una señal digital <strong>de</strong> entradaUna interrupción <strong>de</strong>s<strong>de</strong> una señal digital <strong>de</strong> salidaUna interrupción <strong>de</strong>s<strong>de</strong> una señal analógica <strong>de</strong> entradaUna interrupción a partir <strong>de</strong> una señal analógica <strong>de</strong> salidaUna interrupción temporizadaUna interrupción relacionada con una posición (<strong>de</strong> la lista <strong>de</strong>selección <strong>de</strong> movimientos)Una interrupción al cambiar una variable persistente.Pedir y activar una interrupción cuando se produce un error9.4 Cancelación <strong>de</strong> interrupcionesInstrucciónIDeleteFinalidad:Cancelar (eliminar) una interrupción9.5 Activación y <strong>de</strong>sactivación <strong>de</strong> interrupcionesInstrucciónISleepIWatchIDisableIEnableFinalidad:Desactivar una interrupción concretaActivar una interrupción concretaDesactivar todas las interrupcionesActivar todas las interrupciones9.6 Datos <strong>de</strong> interrupciónInstrucciónGetTrapData 3ReadErrData 3Casos en que se usa:En rutinas TRAP, para obtener todos los datos sobre lainterrupción que causó la ejecución <strong>de</strong> la rutina TRAP.En rutinas TRAP, para obtener información numérica(dominio, tipo y número) sobre un error, un cambio <strong>de</strong> estadoo una advertencia que provocaron la ejecución <strong>de</strong> la rutinaTRAP.1. Sólo si el robot está equipado con la opción “Analog signal interrupt”.2. Sólo si el robot está equipado con la opción “Fixed position events”.3. Sólo si el robot está equipado con la opción “Advanced <strong>RAPID</strong>”.38 Descripción general <strong>de</strong> <strong>RAPID</strong>


Interrupciones9.7 Tipos <strong>de</strong> datos <strong>de</strong> las interrupcionesTipo <strong>de</strong> datosintnumtrapdataerrtypeerrdomainFinalidad:Definir la i<strong>de</strong>ntidad <strong>de</strong> una interrupciónContener los datos <strong>de</strong> interrupción que causaron la ejecución<strong>de</strong> la rutina TRAP actualEspecificar un tipo <strong>de</strong> error (gravedad).Especificar un dominio <strong>de</strong> errorDescripción general <strong>de</strong> <strong>RAPID</strong> 39


Interrupciones40 Descripción general <strong>de</strong> <strong>RAPID</strong>


Recuperación en caso <strong>de</strong> error10 Recuperación en caso <strong>de</strong> errorMuchos <strong>de</strong> los errores que se producen cuando se está ejecutando un programa pue<strong>de</strong>ngestionarse <strong>de</strong>s<strong>de</strong> el programa, lo que significa que no es necesario interrumpir laejecución. Estos errores son <strong>de</strong> un tipo <strong>de</strong>tectado por el sistema, como por ejemplo ladivisión por cero, o <strong>de</strong> un tipo elevado por el programa, por ejemplo cuando unprograma eleva un error al obtenerse un valor incorrecto <strong>de</strong> un lector <strong>de</strong> códigos <strong>de</strong>barras.10.1 Principios <strong>de</strong> programaciónCuando se produce un error, se realiza una llamada al gestor <strong>de</strong> la rutina (si lo hay).También es posible crear un error <strong>de</strong>s<strong>de</strong> el propio programa y saltar a continuaciónhacia el gestor <strong>de</strong> errores.En los gestores <strong>de</strong> errores, es posible manejar los errores mediante instruccionesconvencionales. El dato <strong>de</strong> sistema ERRNO pue<strong>de</strong> usarse para <strong>de</strong>terminar el tipo <strong>de</strong>error que se ha producido. Posteriormente, el retorno <strong>de</strong>s<strong>de</strong> el gestor <strong>de</strong> errores pue<strong>de</strong>realizarse <strong>de</strong> varias formas (RETURN, RETRY, TRYNEXT y RAISE).Si la rutina actual no contiene un gestor <strong>de</strong> errores, el gestor <strong>de</strong> errores interno <strong>de</strong>l robottoma directamente el control. El gestor <strong>de</strong> errores interno genera un mensaje <strong>de</strong> errory <strong>de</strong>tiene la ejecución <strong>de</strong>l programa, <strong>de</strong>jando el puntero <strong>de</strong>l programa en la instrucciónque provoca el problema.10.2 Creación <strong>de</strong> una situación <strong>de</strong> error <strong>de</strong>s<strong>de</strong> el propio programaInstrucciónRAISEFinalidad:“Crear” un error y llamar al gestor <strong>de</strong> errores10.3 Registro <strong>de</strong> un número <strong>de</strong> errorInstrucciónBookErrNo 1Finalidad:Registrar un nuevo número <strong>de</strong> error <strong>de</strong> sistema <strong>de</strong> <strong>RAPID</strong>1. Sólo si el robot está equipado con la opción “Advanced <strong>RAPID</strong>”.Descripción general <strong>de</strong> <strong>RAPID</strong> 41


Recuperación en caso <strong>de</strong> error10.4 Reinicio y retorno <strong>de</strong>s<strong>de</strong> el gestor <strong>de</strong> erroresInstrucciónEXITRAISERETRYTRYNEXTRETURNRaiseToUserStartMoveRetrySkipWarnFinalidad:Detener la ejecución <strong>de</strong>l programa en caso <strong>de</strong> un error norecuperable.Llamar al gestor <strong>de</strong> errores <strong>de</strong> la rutina que llamó a la rutinaactual.Ejecutar <strong>de</strong> nuevo la instrucción que causó el error.Ejecutar la instrucción siguiente a la instrucción que causó elerror.Volver a la rutina que llamó a la rutina actual.Des<strong>de</strong> una rutina NOSTEPIN, el error es elevado por el gestor<strong>de</strong> errores en el nivel <strong>de</strong> usuario.Una instrucción que sustituye al par <strong>de</strong> instruccionesStartMove y RETRY. Reanuda los movimientos y vuelve aejecutar a<strong>de</strong>más la instrucción que generó el error.Omitir el último mensaje <strong>de</strong> advertencia pedido.10.5 Errores y avisos <strong>de</strong>finidos por el usuarioInstrucciónErrLogErrRaiseFinalidad:Mostrar un mensaje <strong>de</strong> error en la unidad <strong>de</strong> programación yescribirla en el registro <strong>de</strong> mensajes <strong>de</strong>l robot.Crear un error en el programa y llamar a continuación al gestor<strong>de</strong> errores <strong>de</strong> la rutina.10.6 Generación <strong>de</strong> errores <strong>de</strong> procesoInstrucciónProcerrRecovery 1Finalidad:Generar un error <strong>de</strong> proceso durante el movimiento <strong>de</strong>l robot.10.7 Datos para la gestión <strong>de</strong> erroresTipo <strong>de</strong> datoerrnumerrstrPara <strong>de</strong>finir:El motivo <strong>de</strong>l errorEl texto <strong>de</strong> un mensaje <strong>de</strong> error42 Descripción general <strong>de</strong> <strong>RAPID</strong>


Recuperación en caso <strong>de</strong> error10.8 Configuración para la gestión <strong>de</strong> erroresParámetros <strong>de</strong> sistema Para <strong>de</strong>finir:No Of Retry El número <strong>de</strong> veces que se <strong>de</strong>be reintentar una instrucciónfallida si el gestor <strong>de</strong> errores utiliza RETRY. No Of Retrypertenece al tipo System Misc <strong>de</strong>l tema Controller.Descripción general <strong>de</strong> <strong>RAPID</strong> 43


Recuperación en caso <strong>de</strong> error44 Descripción general <strong>de</strong> <strong>RAPID</strong>


Sistema y tiempo11 Sistema y tiempoLas instrucciones <strong>de</strong> sistema y tiempo permiten al usuario medir, inspeccionar yregistrar tiempos.11.1 Principios <strong>de</strong> programaciónLas instrucciones <strong>de</strong> reloj permiten utilizar relojes que funcionan en forma <strong>de</strong>cronómetros. De esta forma, es posible utilizar el programa <strong>de</strong>l robot para temporizarcualquier evento que se <strong>de</strong>see.Es posible obtener la hora o la fecha actuales en forma <strong>de</strong> una ca<strong>de</strong>na <strong>de</strong> caracteres. Acontinuación, es posible mostrar esta ca<strong>de</strong>na <strong>de</strong> caracteres al usuario en la pantalla <strong>de</strong>lFlexPendant o utilizarla para almacenar la fecha y la hora junto con archivos <strong>de</strong>registro.También es posible obtener componentes <strong>de</strong> la hora actual <strong>de</strong>l sistema en forma <strong>de</strong>valores numéricos. Esto permite al programa <strong>de</strong>l robot realizar una acción a una hora<strong>de</strong>terminada o en un día <strong>de</strong>terminado <strong>de</strong> la semana.11.2 Utilización <strong>de</strong> un reloj para temporizar un eventoInstrucciónClkResetClkStartClkStopFunciónClkReadTipo <strong>de</strong> datoclockFinalidad:Poner a cero un reloj utilizado para la temporizaciónPoner en marcha un reloj utilizado para la temporizaciónDetener un reloj utilizado para la temporizaciónFinalidad:Leer un reloj utilizado para la temporizaciónFinalidad:Temporización: almacena una medición <strong>de</strong> tiempo, ensegundos11.3 Lectura <strong>de</strong> la hora y la fecha actualesFunciónCDateCTimeGetTimeFinalidad:Obtener la fecha actual en forma <strong>de</strong> ca<strong>de</strong>na <strong>de</strong> caracteresObtener la hora actual en forma <strong>de</strong> ca<strong>de</strong>na <strong>de</strong> caracteresObtener la hora actual en forma <strong>de</strong> valor numéricoDescripción general <strong>de</strong> <strong>RAPID</strong> 45


Sistema y tiempo11.4 Obtención <strong>de</strong> información <strong>de</strong> hora <strong>de</strong> un archivoFunciónFileTimeModTimeFinalidad:Obtener la última hora <strong>de</strong> modificación <strong>de</strong> un archivoObtener la hora <strong>de</strong> carga <strong>de</strong> un módulo <strong>de</strong>terminado11.5 Obtener el tamaño <strong>de</strong> memoria libre <strong>de</strong>l programaFunciónProgMemFreeFinalidad:Obtener el tamaño <strong>de</strong> memoria libre <strong>de</strong>l programa.46 Descripción general <strong>de</strong> <strong>RAPID</strong>


Operaciones matemáticas12 Operaciones matemáticasLas instrucciones y funciones matemáticas se utilizan para calcular y cambiar el valor<strong>de</strong> la información.12.1 Principios <strong>de</strong> programaciónLos cálculos suelen realizarse mediante la instrucción <strong>de</strong> asignación, por ejemploreg1:= reg2 + reg3 / 5. También existen algunas instrucciones que se utilizan paracálculos simples, como eliminar el valor <strong>de</strong> una variable numérica.12.2 Cálculos sencillos con datos numéricosInstrucción Finalidad:ClearEliminar el valorAddSumar o restar un valorIncr Aumentar en 1Decr Reducir en 112.3 Cálculos más avanzadosInstrucción Finalidad::= Realizar cálculos con cualquier tipo <strong>de</strong> datoDescripción general <strong>de</strong> <strong>RAPID</strong> 47


Operaciones matemáticas12.4 Funciones aritméticasFunciónFinalidad:AbsCalcular el valor absolutoRoundRedon<strong>de</strong>ar un valor numéricoTruncTruncar un valor numéricoSqrtCalcular la raíz cuadradaExpCalcular el valor exponencial en base “e”PowCalcular el valor exponencial en la base <strong>de</strong>seadaACosCalcular el arco cosenoASinCalcular el arco senoATan Calcular el arco tangente en el rango [-90,90]ATan2 Calcular el arco tangente en el rango [-180,180]CosCalcular el cosenoSinCalcular el valor <strong>de</strong>l senoTanCalcular la tangenteEulerZYXCalcular ángulos <strong>de</strong> Euler a partir <strong>de</strong> una orientaciónOrientZYXCalcular la orientación a partir <strong>de</strong> ángulos <strong>de</strong> EulerPoseInvInvertir una posePoseMultMultiplicar una posePoseVectMultiplicar una pose y un vectorVectmagnCalcular la magnitud <strong>de</strong> un vector pos.DotProdCalcular el producto escalar <strong>de</strong> dos vectores pos.NOrientNormalizar una orientación no normalizada (quarternion)48 Descripción general <strong>de</strong> <strong>RAPID</strong>


Operaciones matemáticas12.5 Funciones <strong>de</strong> bitsInstrucciónBitClear 1BitSet 1FunciónBitCheck 1BitAnd 1BitNeg 1BitOr 1BitXOr 1BitLSh 1BitrSh 1Tipo <strong>de</strong> datosbyte 1Finalidad:Eliminar un bit especificado en un dato <strong>de</strong> byte <strong>de</strong>finido.Cambiar 1 un bit especificado en un dato <strong>de</strong> byte <strong>de</strong>finido.Finalidad:Comprobar si un bit especificado <strong>de</strong> un dato <strong>de</strong> byte <strong>de</strong>finidotiene el valor 1.Ejecutar una operación lógica bit a bit AND en tipos <strong>de</strong> datosbyte.Ejecutar una operación lógica <strong>de</strong> NEGACIÓN en tipos <strong>de</strong> datosbyte.Ejecutar una operación lógica bit a bit OR en tipos <strong>de</strong> datosbyte.Ejecutar una operación lógica bit a bit XOR en tipos <strong>de</strong> datosbyte.Ejecutar una operación lógica bit a bit DESPLAZAMIENTO ALA IZQUIERDA en tipos <strong>de</strong> datos byte.Ejecutar una operación lógica bit a bit DESPLAZAMIENTO ALA DERECHA en tipos <strong>de</strong> datos byte.Finalidad:Se utiliza junto con instrucciones y funciones <strong>de</strong> manipulación<strong>de</strong> bits.1. Sólo si el robot está equipado con la opción “Advanced <strong>RAPID</strong> - Bit functions”.Descripción general <strong>de</strong> <strong>RAPID</strong> 49


Operaciones matemáticas50 Descripción general <strong>de</strong> <strong>RAPID</strong>


Comunicación con un or<strong>de</strong>nador externo13 Comunicación con un or<strong>de</strong>nador externoEs posible controlar el robot <strong>de</strong>s<strong>de</strong> un or<strong>de</strong>nador supervisor. En este caso, se utiliza unprotocolo <strong>de</strong> comunicaciones especial para transferir la información.13.1 Principios <strong>de</strong> programaciónDado que se utiliza un protocolo <strong>de</strong> comunicaciones convencional para transferir lainformación entre el robot y el or<strong>de</strong>nador, éstos pue<strong>de</strong>n compren<strong>de</strong>rse mutuamente yno se requiere programación adicional. Por ejemplo, el or<strong>de</strong>nador pue<strong>de</strong> cambiarvalores <strong>de</strong> los datos <strong>de</strong>l programa sin necesidad <strong>de</strong> programación (excepto a la hora <strong>de</strong><strong>de</strong>finir esta información). Sólo se requiere programación si es necesario enviarinformación controlada por el programa <strong>de</strong>s<strong>de</strong> el robot al or<strong>de</strong>nador supervisor.13.2 Envío <strong>de</strong> un mensaje controlado por el programa <strong>de</strong>l robot a un or<strong>de</strong>nadorInstrucciónSCWrite 1Finalidad:Enviar un mensaje al or<strong>de</strong>nador supervisor1. Sólo si el robot está equipado con la opción “PC interface/backup”.Descripción general <strong>de</strong> <strong>RAPID</strong> 51


Comunicación con un or<strong>de</strong>nador externo52 Descripción general <strong>de</strong> <strong>RAPID</strong>


Funciones para operaciones con archivos14 Funciones para operaciones con archivosInstrucciónMakeDir 1RemoveDir 1OpenDir 1CloseDir 1RemoveFile 1RenameFile 1CopyFile 1FunciónISFile 1FSSize 1FileSize 1ReadDir 1Tipo <strong>de</strong> datosdir 1Finalidad:Crear un nuevo directorioEliminar un directorioAbrir un directorio para su examen posteriorCerrar un directorio como operación opuesta <strong>de</strong> OpenDirEliminar un archivoCambiar el nombre <strong>de</strong> un archivoCopiar un archivoFinalidad:Comprobar el tipo <strong>de</strong> un archivoObtener el tamaño <strong>de</strong> un sistema <strong>de</strong> archivosObtener el tamaño <strong>de</strong> un archivo <strong>de</strong>terminadoObtener el elemento siguiente <strong>de</strong> un directorioFinalidad:Recorrer estructuras <strong>de</strong> directorios1. Sólo si el robot está equipado con la opción “File and serial channel handling - File operation functions”.Descripción general <strong>de</strong> <strong>RAPID</strong> 53


Funciones para operaciones con archivos54 Descripción general <strong>de</strong> <strong>RAPID</strong>


Instrucciones <strong>de</strong> soporte <strong>de</strong> <strong>RAPID</strong>15 Instrucciones <strong>de</strong> soporte <strong>de</strong> <strong>RAPID</strong>Existen varias funciones que soportan el lenguaje <strong>RAPID</strong>:- Obtención <strong>de</strong> datos <strong>de</strong>l sistema- Lectura <strong>de</strong> datos <strong>de</strong> configuración- Escritura <strong>de</strong> datos <strong>de</strong> configuración- Reinicio <strong>de</strong>l controlador- Comprobar datos <strong>de</strong>l sistema- Obtención <strong>de</strong> nombres <strong>de</strong> objetos- Obtención <strong>de</strong> nombres <strong>de</strong> tareas- Búsqueda <strong>de</strong> símbolos15.1 Obtención <strong>de</strong> datos <strong>de</strong>l sistemaInstrucciones para capturar el valor y (opcionalmente) el nombre <strong>de</strong>l símbolo <strong>de</strong>l dato<strong>de</strong> sistema actual <strong>de</strong>l tipo especificado.InstrucciónGetSysDataSetSysData 1FunciónIsSysIDIsStopStateEvent 2RobOSFinalidad:Obtener los datos y el nombre <strong>de</strong> la herramienta o <strong>de</strong>l objeto <strong>de</strong>trabajo actualesActivar un nombre <strong>de</strong> dato <strong>de</strong> sistema especificado para untipo <strong>de</strong> datos especificado.Finalidad:Comprobar la i<strong>de</strong>ntidad <strong>de</strong>l sistemaObtener información acerca <strong>de</strong>l movimiento <strong>de</strong>l puntero <strong>de</strong>programaComprobar si la ejecución se realiza en el controlador <strong>de</strong> robotRC o en el controlador virtual VC.15.2 Obtención <strong>de</strong> información acerca <strong>de</strong>l sistemaFunción para obtener información acerca <strong>de</strong>l número <strong>de</strong> serie, versión <strong>de</strong> software otipo <strong>de</strong> robot.FunciónGetSysInfoFinalidad:Obtener información acerca <strong>de</strong>l sistema.1. Sólo si el robot está equipado con la opción “Advanced <strong>RAPID</strong>-Data search”.2. Sólo si el robot está equipado con la opción “Advanced <strong>RAPID</strong>-Miscellaneous functions”.Descripción general <strong>de</strong> <strong>RAPID</strong> 55


Instrucciones <strong>de</strong> soporte <strong>de</strong> <strong>RAPID</strong>15.3 Obtención <strong>de</strong> información acerca <strong>de</strong> la memoriaFunciónProgMemFreeFinalidad:obtener el tamaño <strong>de</strong> memoria libre <strong>de</strong>l programa15.4 Lectura <strong>de</strong> datos <strong>de</strong> configuraciónInstrucciones para leer un atributo <strong>de</strong> un parámetro <strong>de</strong> sistema cuyo nombre se indica.InstrucciónReadCfgData 1Finalidad:Leer un atributo <strong>de</strong> un parámetro <strong>de</strong> sistema cuyo nombre seindica.15.5 Escritura <strong>de</strong> datos <strong>de</strong> configuraciónInstrucciones para escribir un atributo <strong>de</strong> un parámetro <strong>de</strong> sistema cuyo nombre seindica.InstrucciónWriteCfgData 1Finalidad:Escribir un atributo <strong>de</strong> un parámetro <strong>de</strong> sistema cuyo nombrese indica15.6 Reinicio <strong>de</strong>l controladorInstrucciónWarmStart 1Finalidad:Reiniciar el controlador, por ejemplo <strong>de</strong>spués <strong>de</strong> cambiar losparámetros <strong>de</strong> sistema <strong>de</strong>s<strong>de</strong> <strong>RAPID</strong>.15.7 Funciones <strong>de</strong> disparoInstrucciones para establecer señales <strong>de</strong> salida y/o ejecutar rutinas <strong>de</strong> interrupción enposiciones fijas al mismo tiempo que se mueve el robot.InstrucciónTriggC 2TriggJ 2TriggL 2Finalidad:Definir movimientos y eventos <strong>de</strong>l robot a lo largo <strong>de</strong> unatrayectoria circularDefinir movimientos y eventos <strong>de</strong>l robot a lo largo <strong>de</strong> unmovimiento lineal <strong>de</strong> un punto a otroDefinir movimientos y eventos <strong>de</strong>l robot en un movimientolineal1. Sólo si el robot está equipado con la opción “Advanced <strong>RAPID</strong>”.2. Sólo si el robot está equipado con la opción “Fixed position events”.56 Descripción general <strong>de</strong> <strong>RAPID</strong>


Instrucciones <strong>de</strong> soporte <strong>de</strong> <strong>RAPID</strong>15.8 Instrucciones para tablas <strong>de</strong> textoInstrucciones para administrar las tablas <strong>de</strong> texto <strong>de</strong>l sistemaInstrucciónTextTabInstall 1FunciónTextTabGet 1TextGet 1TextTabFreeToUse 1Finalidad:Instalar una tabla <strong>de</strong> textos en el sistemaFinalidad:Obtener el número <strong>de</strong> tabla <strong>de</strong> textos <strong>de</strong> una tabla <strong>de</strong> textos<strong>de</strong>finida por el usuarioObtener una ca<strong>de</strong>na <strong>de</strong> caracteres <strong>de</strong> las tablas <strong>de</strong> texto <strong>de</strong>lsistemaComprobar si el nombre <strong>de</strong> la tabla <strong>de</strong> textos (ca<strong>de</strong>na <strong>de</strong>caracteres <strong>de</strong> recursos <strong>de</strong> texto) está disponible para su uso15.9 Obtención <strong>de</strong> nombres <strong>de</strong> objetosUna instrucción para obtener el nombre <strong>de</strong> un objeto <strong>de</strong> datos original para unargumento actual o un dato actual.FunciónArgName 2Finalidad:Obtener el nombre <strong>de</strong>l objeto <strong>de</strong> datos original15.10 Obtención <strong>de</strong> nombres <strong>de</strong> tareasFunciónGetTaskNameFinalidad:Obtener la i<strong>de</strong>ntidad <strong>de</strong> la tarea <strong>de</strong> programa actual, con sunombre y número1. Sólo si el robot está equipado con la opción “Advanced <strong>RAPID</strong> -Text handling”.2. Sólo si el robot está equipado con la opción “Advanced <strong>RAPID</strong>-Miscellaneous functions”.Descripción general <strong>de</strong> <strong>RAPID</strong> 57


Instrucciones <strong>de</strong> soporte <strong>de</strong> <strong>RAPID</strong>15.11 Búsqueda <strong>de</strong> símbolosInstrucciones para buscar objetos <strong>de</strong> datos en el sistemaInstrucciónSetAllDataVal 1SetDataSearch 1GetDataVal 1SetDataVal 1FunciónGetNextSym 1Tipo <strong>de</strong> datosdatapos 1Finalidad:Establecer un nuevo valor en todos los objetos <strong>de</strong> datos <strong>de</strong> untipo <strong>de</strong>terminado y que coincidan con una gramática<strong>de</strong>terminada.Junto con GetNextSym , permite obtener objetos <strong>de</strong> datos <strong>de</strong>lsistemaObtener un valor <strong>de</strong> un objeto <strong>de</strong> datos que se especificamediante una variable <strong>de</strong> ca<strong>de</strong>na <strong>de</strong> caracteresEstablecer un valor para un objeto <strong>de</strong> datos que se especificamediante una variable <strong>de</strong> ca<strong>de</strong>na <strong>de</strong> caracteresFinalidad:Junto con SetDataSearch , permite obtener objetos <strong>de</strong> datos <strong>de</strong>lsistemaFinalidad:Contiene información acerca <strong>de</strong> dón<strong>de</strong> está <strong>de</strong>finido un objeto<strong>de</strong>terminado <strong>de</strong>ntro <strong>de</strong>l sistema.1. Sólo si el robot está equipado con la opción “Advanced <strong>RAPID</strong>-Data search”.58 Descripción general <strong>de</strong> <strong>RAPID</strong>


Instrucciones <strong>de</strong> servicio técnico y calibración16 Instrucciones <strong>de</strong> servicio técnico y calibraciónExisten varias instrucciones <strong>de</strong>stinadas a la calibración y la comprobación <strong>de</strong>l sistema<strong>de</strong> robot. Para obtener más información, consulte el capítulo <strong>de</strong> herramientas <strong>de</strong><strong>de</strong>tección <strong>de</strong> averías en el manual <strong>de</strong>l producto.16.1 Calibración <strong>de</strong> la herramientaInstrucciones4MToolRotCalibMToolTCPCalibSToolRotCalibSToolTCPCalibFinalidad:Calibrar la rotación <strong>de</strong> una herramienta móvilCalibrar el TCP (punto central <strong>de</strong> la herramienta) <strong>de</strong> unaherramienta móvilCalibrar el TCP y la rotación <strong>de</strong> una herramienta estacionariaCalibrar el TCP (punto central <strong>de</strong> la herramienta) <strong>de</strong> unaherramienta estacionaria16.2 Distintos métodos <strong>de</strong> calibraciónFuncionesCalcRotAxisFrameCalcRotAxFrameZDefAccFrameFinalidad:Calcular el sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong>l usuario <strong>de</strong> un tipo <strong>de</strong>eje giratorio.Calcular el sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong>l usuario <strong>de</strong> un tipo <strong>de</strong>eje giratorio cuando el robot principal y el eje externo seencuentran en tareas diferentes <strong>de</strong> <strong>RAPID</strong>.Definir una base <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong>s<strong>de</strong> las posicionesoriginales y las <strong>de</strong>splazadas.16.3 Envío <strong>de</strong> un valor a la señal <strong>de</strong> test <strong>de</strong>l robotEs posible enviar una señal <strong>de</strong> <strong>referencia</strong>, por ejemplo la velocidad <strong>de</strong> un motor, a unaseñal analógica <strong>de</strong> salida situada en la tarjeta <strong>de</strong> bus <strong>de</strong>l robot.InstruccionesTestSignDefineTestSignResetFunciónTestSignReadTipo <strong>de</strong> datotestsignalFinalidad:Definir una señal <strong>de</strong> testRestablecer todas las <strong>de</strong>finiciones <strong>de</strong> señales <strong>de</strong> testFinalidad:Obtener el valor <strong>de</strong> una señal <strong>de</strong> testFinalidad:Para la instrucción <strong>de</strong> programación TestSignDefineDescripción general <strong>de</strong> <strong>RAPID</strong> 59


Instrucciones <strong>de</strong> servicio técnico y calibración16.4 Registro <strong>de</strong> una ejecuciónLa información registrada se almacena en un archivo para su análisis posterior y seutiliza en labores <strong>de</strong> <strong>de</strong>puración <strong>de</strong> programas <strong>de</strong> <strong>RAPID</strong>, específicamente en sistemasmultitarea.InstruccionesSpyStartSpyStopFinalidad:Iniciar la grabación <strong>de</strong> instrucciones y datos <strong>de</strong> tiempo durantela ejecuciónDetener la grabación <strong>de</strong> datos <strong>de</strong> tiempo durante la ejecución60 Descripción general <strong>de</strong> <strong>RAPID</strong>


Funciones para ca<strong>de</strong>nas <strong>de</strong> caracteres17 Funciones para ca<strong>de</strong>nas <strong>de</strong> caracteresLas funciones para ca<strong>de</strong>nas <strong>de</strong> caracteres se utilizan en operaciones con ca<strong>de</strong>nas <strong>de</strong>caracteres, como copia, concatenación, comparación, búsqueda, conversión, etc.17.1 Operaciones básicasTipo <strong>de</strong> datostringPara <strong>de</strong>finir:Ca<strong>de</strong>na <strong>de</strong> caracteres. Constantes pre<strong>de</strong>finidas STR_DIGIT,STR_UPPER, STR_LOWER y STR_WHITEInstrucción/Operador Finalidad::= Asignar un valor (una copia <strong>de</strong> la ca<strong>de</strong>na <strong>de</strong> caracteres)+ Concatenación <strong>de</strong> ca<strong>de</strong>nas <strong>de</strong> caracteresFunciónStrLenStrPartFinalidad:Determinar la longitud <strong>de</strong> una ca<strong>de</strong>na <strong>de</strong> caracteresObtener parte <strong>de</strong> una ca<strong>de</strong>na <strong>de</strong> caracteres17.2 Comparación y búsquedaOperadorFinalidad:= Comprobar si un valor es igual a otro Comprobar si un valor es distinto <strong>de</strong> otroFunciónStrMembStrFindStrMatchStrOr<strong>de</strong>rFinalidad:Comprobar si un carácter aparece <strong>de</strong>ntro <strong>de</strong> un conjunto <strong>de</strong>caracteresBuscar un carácter en una ca<strong>de</strong>na <strong>de</strong> caracteresBuscar un patrón <strong>de</strong>ntro <strong>de</strong> una ca<strong>de</strong>na <strong>de</strong> caracteresComprobar si varias ca<strong>de</strong>nas <strong>de</strong> caracteres están or<strong>de</strong>nadasDescripción general <strong>de</strong> <strong>RAPID</strong> 61


Funciones para ca<strong>de</strong>nas <strong>de</strong> caracteres17.3 ConversiónFunciónNumToStrValToStrStrToValStrMapStrToByteByteToStrDecToHexHexToDecFinalidad:Convertir un valor numérico en una ca<strong>de</strong>na <strong>de</strong> caracteresConvertir un valor en una ca<strong>de</strong>na <strong>de</strong> caracteresConvertir una ca<strong>de</strong>na <strong>de</strong> caracteres en un valorMapear una ca<strong>de</strong>na <strong>de</strong> caracteresConvertir una ca<strong>de</strong>na <strong>de</strong> caracteres en un byteConvertir un byte en una ca<strong>de</strong>na <strong>de</strong> caracteresConvertir un número especificado en una ca<strong>de</strong>na que admitalectura <strong>de</strong> la base 10 a la base 16Convertir un número especificado en una ca<strong>de</strong>na que admitalectura <strong>de</strong> la base 16 a la base 1062 Descripción general <strong>de</strong> <strong>RAPID</strong>


Multitarea18 Multitarea<strong>RAPID</strong> en modo multitarea es una forma <strong>de</strong> ejecutar los programas en(seudo)paralelo con la ejecución normal. Un programa en paralelo pue<strong>de</strong> situarse ensegundo plano o en primer plano respecto <strong>de</strong> otro programa. También pue<strong>de</strong> situarseen el mismo nivel que otro programa (consulte la sección Características básicas -Multitarea).18.1 Conceptos básicosPara usar esta función, es necesario configurar el robot con una TAREA adicional paracada programa en segundo plano.Es posible ejecutar hasta 10 tareas diferentes en seudoparalelo. Cada tarea se compone<strong>de</strong> un conjunto <strong>de</strong> módulos, <strong>de</strong> forma muy parecida al programa normal. Todos losmódulos se consi<strong>de</strong>ran locales <strong>de</strong>ntro <strong>de</strong> cada tarea.Las variables y constantes se consi<strong>de</strong>ran locales <strong>de</strong>ntro <strong>de</strong> cada tarea, al contrario <strong>de</strong> loque ocurre con las variables persistentes. Las variables persistentes que tienen elmismo nombre y tipo pue<strong>de</strong>n utilizarse en todas las tareas. Si existen dos variablespersistentes con el mismo nombre pero tienen un tipo o un tamaño (un número <strong>de</strong>elementos <strong>de</strong> matriz) diferente, se produce un error <strong>de</strong> tiempo <strong>de</strong> ejecución.Las tareas tienen su propia gestión <strong>de</strong> rutinas TRAP y las rutinas <strong>de</strong> eventos sólo sedisparan si lo indica el propio sistema <strong>de</strong> tarea (por ejemplo, iniciar, <strong>de</strong>tener,reiniciar....).18.2 Instrucciones y funciones generalesInstrucciónWaitSyncTask 1FunciónTestAndSetTaskRunMecTaskRunMecTipo <strong>de</strong> datostaskidsynci<strong>de</strong>nttasksFinalidadSincronizar varias tareas <strong>de</strong> programa en un punto especial <strong>de</strong>cada programaFinalidad:Obtener el <strong>de</strong>recho <strong>de</strong> uso exclusivo <strong>de</strong> áreas <strong>de</strong> códigoconcretas <strong>de</strong> <strong>RAPID</strong> o recursos <strong>de</strong>l sistemaComprobar si la tarea <strong>de</strong> programa controla alguna unidadmecánicaComprobar si la tarea <strong>de</strong> programa controla algún robot conTCPFinalidadI<strong>de</strong>ntificar las tareas <strong>de</strong> programa disponibles en el sistemaEspecificar el nombre <strong>de</strong> un punto <strong>de</strong> sincronizaciónEspecificar varias tareas <strong>de</strong> programa <strong>de</strong> <strong>RAPID</strong>1. Sólo si el robot está equipado con la opción “Multitasking”.Descripción general <strong>de</strong> <strong>RAPID</strong> 63


Multitarea18.3 Sistema MultiMove con robots coordinadosInstrucciónSyncMoveOn 1SyncMoveOff 1SyncMoveUndoFunciónIsSyncMoveOnTipo <strong>de</strong> datossynci<strong>de</strong>nttasksFinalidadIniciar una secuencia <strong>de</strong> movimientos sincronizadosPara finalizar los movimientos sincronizadosRestablecer los movimientos sincronizadosFinalidad:Indicar si la tarea actual está en el modo sincronizadoFinalidadPara especificar el nombre <strong>de</strong> un punto <strong>de</strong> sincronizaciónEspecificar varias tareas <strong>de</strong> programa <strong>de</strong> <strong>RAPID</strong>1. Sólo si el robot está equipado con la opción “Coordinated Robots”.64 Descripción general <strong>de</strong> <strong>RAPID</strong>


Resumen <strong>de</strong> la sintaxis19 Resumen <strong>de</strong> la sintaxis19.1 InstruccionesDato := ValorAccSet Acc RampActUnit MecUnitAdd Name AddValueAliasIOFromSignal ToSignalArcRefreshArcKillBitClearBitData BitPosBitSetBitData BitPosBookErrNoErrorNameBreakCallByVarName NumberCancelLoad LoadNoCirPathMo<strong>de</strong>[\PathFrame] | [\ObjectFrame] | [\CirPointOri]ClearNameClearIOBuffIODeviceClearPathClearRawBytesRawData [\FromIn<strong>de</strong>x]ClkResetClkStartClkStopClockClockClockDescripción general <strong>de</strong> <strong>RAPID</strong> 65


Resumen <strong>de</strong> la sintaxisClose IODeviceCloseDirDev! CommentConfJ [\On] | [\Off]ConfL[\On] | [\Off]CONNECT Interrupt WITH Trap routineCopyFileOldPath NewPathCopyRawBytesFromRawData FromIn<strong>de</strong>x ToRawData ToIn<strong>de</strong>x66 Descripción general <strong>de</strong> <strong>RAPID</strong>


Resumen <strong>de</strong> la sintaxis[\NoOfBytes]CorrClearCorrConDescrCorrDisconDescrCorrWriteCorrWriteDescr DataCorrClearDeactUnitMecUnitDecrNameDitherAct[\MechUnit] Axis [\Level]DitherDeactDropSensorDropWObjMecuntWObjEOffsOffEOffsOnEOffsSet[\ExeP] ProgPointEAxOffsEraseModuleModuleNameErrLog ErrorID [\W] Argument1 Argument2 Argument3Argument4 Argument5Descripción general <strong>de</strong> <strong>RAPID</strong> 67


Resumen <strong>de</strong> la sintaxisErrRaise ErrorName ErrorID Argument1 Argument2 Argument3Argument4 Argument5ErrWrite[\W] Hea<strong>de</strong>r Reason [\RL2] [\RL3] [\RL4]ExitExitCycleFOR Loopcounter FROM Startvalue TO Endvalue [STEP Stepvalue] DO ... ENDFORGetDataValGetSysDataGetTrapDataObject [\Block] ValueDestObject [\ObjectName]TrapEventGOTOLabelGripLoadLoadIDeleteInterruptIDisableIEnableIErrorErrorDomain [\ErrorId] ErrorType InterruptIF Condition ...IF Condition THEN ... {ELSEIF Condition THEN ...} [ELSE ...]ENDIFIncrNameIndAMove[\Ramp]IndCMoveIndDMoveMecUnit Axis [\ToAbsPos] | [\ToAbsNum] SpeedMecUnit Axis Speed [\Ramp]MecUnit Axis Delta Speed [\Ramp]IndReset MecUnit Axis[\RefPos] | [\RefNum] | [\Short] | [\Fwd] | [\Bwd] | [\Old]68 Descripción general <strong>de</strong> <strong>RAPID</strong>


Resumen <strong>de</strong> la sintaxisIndRMove MecUnit Axis [\ToRelPos] | [\ToRelNum] | [\Short] |[\Fwd] | [\Bwd] Speed [\Ramp]InvertDOIODisableIOEnableSignalUnitName MaxTimeUnitName MaxTimeIPersName InterruptISignalAI [\Single] Signal Condition HighValue LowValueDeltaValue [\DPos] | [\DNeg] InterruptISignalAO [\Single] Signal Condition HighValue LowValueDeltaValue [\DPos] | [\DNeg] InterruptISignalDIISignalDO[\Single] Signal TriggValue Interrupt[\Single] Signal TriggValue InterruptISleepInterruptITimer [\Single] Time InterruptIVarValueVarNo Value InterruptIWatch Interrupt ParIdType LoadIdType Tool [\PayLoad][\WObj] [\ConfAngle] [\SlowTest] [\Accuracy]Load[\Dynamic] FilePath [\File]LoadId ParIdType LoadIdType Tool [\PayLoad] [\WObj][\ConfAngle] [\SlowTest] [\Accuracy]MakeDirPathManLoadIdProc [\ParIdType] [\MechUnit] [\MechUnitName][\AxisNumber] [\PayLoad] [\ConfigAngle] [\DeactAll][\AlreadyActive] [\DefinedFlag]MechUnitLoadMechUnit AxisNo LoadMotionSupMoveAbsJ[\On] | [\Off] [\TuneValue][\Conc] ToJointPos [\ID] Speed [\V] | [\T] ZoneDescripción general <strong>de</strong> <strong>RAPID</strong> 69


Resumen <strong>de</strong> la sintaxis[\Z] Tool [\WObj]MoveC [\Conc] CirPoint ToPoint [\ID] Speed [\V] | [\T] Zone[\Z] Tool [\WObj]70 Descripción general <strong>de</strong> <strong>RAPID</strong>


Resumen <strong>de</strong> la sintaxisMoveCDO CirPoint ToPoint [\ID] Speed [\T] Zone Tool[\WObj] Signal ValueMoveCSync CirPoint ToPoint [\ID] Speed [\T] Zone Tool[\WObj] ProcNameMoveExtJ[\Conc] ToJointPos [\ID] Speed [\T] Zone [\Inpos]MoveJ[\WObj][\Conc] ToPoint [\ID] Speed [\V] | [\T] Zone [\Z] ToolMoveJDO ToPoint [\ID] Speed [\T] Zone Tool [\WObj]Signal ValueMoveJSyncProcNameToPoint [\ID] Speed [\T] Zone Tool [\WObj]MoveL [\Conc] ToPoint [\ID] Speed [\V] | [\T] Zone [\Z]Tool [\WObj]MoveLDO ToPoint [\ID] Speed [\T] Zone Tool [\WObj]Signal ValueMoveLSyncProcNameToPoint [\ID] Speed [\T] Zone Tool [\WObj]MToolRotCalibMToolTCPCalibRefTip ZPos [\XPos] ToolPos1 Pos2 Pos3 Pos4 Tool MaxErr MeanErrOpen Object [\File] IODevice[\Read] | [\Write] | [\Append] | [\Bin]OpenDirDev PathPackDNHea<strong>de</strong>rService Path RawDataPackRawBytes Value RawData [\Network] StartIn<strong>de</strong>x[\Hex1] | [\IntX] | [\Float4] | [\ASCII]PathAccLimAccLim [\AccMax] DecelLim [\DecelMax]PathRecMoveBwdPathRecMoveFwd[\ID] [\ToolOffs] [\Speed][\ID] [\ToolOffs] [\Speed]Descripción general <strong>de</strong> <strong>RAPID</strong> 71


Resumen <strong>de</strong> la sintaxisPathRecStartIDPathRecStop [\Clear]PathResolValuePDispOffPDispOnPDispSet[\Rot] [\ExeP] ProgPoint Tool [\WObj]DispFrameProcedure { Argument }ProcerrRecovery[\SyncOrgMoveInst] | [\SyncLastMoveInst]PulseDO[\PLength] SignalRAISE [ Error no ]RaiseToUserReadAnyBinReadCfgData[\Continue] | [\BreakOff] [\ErrorNumber]IODevice Data [\Time]InstancePath Attribute CfgDataReadErrData TrapEvent ErrorDomain ErrorId ErrorType [\Str1][\Str2] [\Str3] [\Str4] [\Str5]ReadRawBytesIODevice RawData NoOfBytes[\Time]RemoveDirRemoveFileRenameFilePathPathOldPath NewPathResetSignalRestoPathRETURN [ Return value ]RewindIODeviceSave[\TaskRef] ModuleName [\FilePath] [\File]SearchC [\Stop] | [\PStop] | [\Sup] Signal SearchPoint CirPointToPoint [\ID] Speed [\V] | [\T] Tool [\WObj]72 Descripción general <strong>de</strong> <strong>RAPID</strong>


Resumen <strong>de</strong> la sintaxisSearchL [\Stop] | [\PStop] | [\Sup] Signal SearchPoint ToPoint[\ID] Speed [\V] | [\T] Tool [\WObj]Set SignalSetAllDataValType [\TypeMod] [\Object] [\Hid<strong>de</strong>n] ValueSetAOSignal ValueSetDataSearch Type [\TypeMod] [\Object] [\PersSym] [\VarSym][\ConstSym] [\InTask] | [\InMod] [\InRout][\GlobalSym] | [\LocalSym]SetDataValObject [\Block] ValueSetDOSetGO[\SDelay] Signal ValueSignal ValueSetSysDataSingAreaSourceObject [\ObjectName][\Wrist] | [\Arm] | [\Off]SkipWarnSoftAct Axis Softness [\Ramp]SoftDeact[\Ramp]SpcCon Descr Status [\GrpSize] [\Teach] [\Strict] [\Hea<strong>de</strong>r][\BackupFile]SpcDiscon DescrSpcDumpSpcReadSpcStatSpotJSpotL ToPoint Speed Spot [\InPos] [\NoConc] [\Retract] GunTool [\WObj]SpotMLSpyStartFileDescripción general <strong>de</strong> <strong>RAPID</strong> 73


Resumen <strong>de</strong> la sintaxisSpyStopStartLoad [\Dynamic] FilePath [\File] LoadNoStartMove [\AllMotionTasks]StartMoveRetryStepBwdPathSToolRotCalibSToolTCPCalibStepLength StepTimeRefTip ZPos XPos ToolPos1 Pos2 Pos3 Pos4 Tool MaxErr MeanErrStop[\NoRegain]StopMove[\Quick][\AllMotionTasks]StorePathSyncMoveOffSyncMoveOnSyncID [\TimeOut]SyncID TaskList [\TimeOut]SyncMoveUndoSyncToSensorMecunt [On/Off]TEST Test data {CASE Test value {, Test value} : ...} [ DEFAULT: ...]ENDTESTTestSignDefineChannel SignalId MechUnit Axis SampleTimeTestSignResetTextTabInstallFileTPEraseTPWriteString [\Num] | [\Bool] | [\Pos] | [\Orient]TPReadFKAnswer String FK1 FK2 FK3 FK4 FK574 Descripción general <strong>de</strong> <strong>RAPID</strong>


Resumen <strong>de</strong> la sintaxis[\MaxTime] [\DIBreak] [\BreakFlag]TPReadNumAnswer String [\MaxTime] [\DIBreak] [\BreakFlag]TPShowTPWriteWindowString [\Num] | [\Bool] | [\Pos] | [\Orient]TriggC CirPoint ToPoint [\ID] Speed [\T] Trigg_1 [\T2] [\T3][\T4] Zone Tool [\WObj]TriggCheckIO TriggData Distance [\Start] | [\Time] SignalRelation CheckValue [\StopMove] InterruptTriggEqipTriggIntTriggData Distance [\Start] | [\Time] InterruptTriggIO TriggData Distance[\Start] | [\Time] [\DOp] | [\GOp] | [\AOp] SetValue[\DODelay] | [\AORamp]TriggJ ToPoint [\ID] Speed [\T] Trigg_1 [\T2] [\T3] [\T4]Zone Tool [\WObj]TriggL ToPoint [\ID] Speed [\T] Trigg_1 [\T2] [\T3] [\T4]Zone Tool [\WObj]TriggSpeed TriggData Distance [\Start] ScaleLag AOScaleValue [\DipLag] [\ErrDO] [\Inhib]TriggStopProc RestartRef [\DO1] [\GO1] [\GO2] [\GO3] [\GO4]ShadowDOTuneResetTuneServoMecUnit Axis TuneValue [\Type]UnLoadFilePath [\File]UnpackRawBytesRawData [\Network] StartIn<strong>de</strong>x ValueDescripción general <strong>de</strong> <strong>RAPID</strong> 75


Resumen <strong>de</strong> la sintaxis[\Hex1] | [\IntX] | [\Float4] | [\ASCII]WaitDIWaitDOSignal Value [\MaxTime] [\TimeFlag]Signal Value [\MaxTime] [\TimeFlag]WaitLoadWaitSensor[\TimeFlag][\UnloadPath] [\UnloadFile] LoadNoMecunt[ \RelDist ] [ \PredTime] [\MaxTime]WaitSyncTaskSyncID TaskList [\TimeOut]WaitTimeWaitUntil[\InPos] Time[\InPos] Cond [\MaxTime] [\TimeFlag]76 Descripción general <strong>de</strong> <strong>RAPID</strong>


Resumen <strong>de</strong> la sintaxisWaitWObj WObj [\RelDist]WarmStartVelSetOverri<strong>de</strong> MaxWHILE Condition DO ...ENDWHILEWorldAccLim [\On] | [\Off]Write IODeviceString [\Num] | [\Bool] | [\Pos] | [\Orient] [\NoNewLine]WriteAnyBin IODevice DataWriteBinIODevice Buffer NCharWriteCfgData InstancePath Attribute CfgDataWriteRawBytesIODevice RawData [\NoOfBytes]WriteStrBinWZBoxDefIODevice Str[\Insi<strong>de</strong>] | [\Outsi<strong>de</strong>] Shape LowPoint HighPointWZCylDef [\Insi<strong>de</strong>] | [\Outsi<strong>de</strong>] Shape CentrePoint Radius HeightWZDisableWorldZoneWZDOSet [\Temp] | [\Stat] WorldZone [\Insi<strong>de</strong>] | [\Before] ShapeSignal SetValueWZEnableWorldZoneWZFreeWorldZoneWZHomeJointDefDeltaJointValWZLimJointDefHighJointVal[\Insi<strong>de</strong>] | [\Outsi<strong>de</strong>] Shape MiddleJointVal[\Insi<strong>de</strong>] | [\Outsi<strong>de</strong>] Shape LowJointValWZLimSupWZSphDef[\Temp] | [\Stat] WorldZone Shape[\Insi<strong>de</strong>] | [\Outsi<strong>de</strong>] Shape CentrePoint RadiusDescripción general <strong>de</strong> <strong>RAPID</strong> 77


Resumen <strong>de</strong> la sintaxis19.2 FunctionsAbsACos(Input)(Value)AOutputArgName(Signal)(Parameter)ASinATan(Value)(Value)ATan2 (Y X)BitAnd (BitData1 BitData2)BitCheckBitLSh(BitData BitPos)(BitData ShiftSteps)BitNegBitOr(BitData1)(BitData1 BitData2)BitRSh (BitData1 ShiftSteps)BitXOr(BitData1 BitData2)ByteToStr(ByteData [\Hex] | [\Okt] | [\Bin] | [\Char])CalcJointT (Rob_target Tool [\WObj])CalcRobT(Joint_target Tool [\WObj])CalcRotAxisFrameMaxErr MeanErr)CalcRotAxFrameZ(MechUnit [\AxisNo] TargetList TargetsInList(TargetList TargetsInList PositiveZPoint78 Descripción general <strong>de</strong> <strong>RAPID</strong>


Resumen <strong>de</strong> la sintaxisMaxErr MeanErr)CDateCJointTClkRead(Clock)CorrReadDescripción general <strong>de</strong> <strong>RAPID</strong> 79


Resumen <strong>de</strong> la sintaxisCosCPos(Angle)([\Tool] [\WObj])CRobT([\Tool] [\WObj])CSpeedOverri<strong>de</strong>CTimeCToolCWObjDecToHex(Str)DefAccFrame (TargetListOne TargetListTwo TargetsInListMaxErr MeanErr)DefDFrameDefFrame(OldP1 OldP2 OldP3 NewP1 NewP2 NewP3)(NewP1 NewP2 NewP3 [\Origin])Dim(ArrPar DimNo)DistanceDOutputDotProd(Point1 Point2)(Signal)(Vector1 Vector2)EulerZYX ([\X] | [\Y] | [\Z]Rotation)Exp(Exponent)FileSizeFileTimeFSSize(Path)(Path [\ModifyTime] | [\AccessTime] | [\StatCTime])(Name [\Total] | [\Free])GetNextMechUnit(ListNumber UnitName)GetNextSymGetSysInfo(Object Block [\Recursive])([\SerialNo] | [\SWVersion] | [\RobotType])GetTaskName([\TaskNo])80 Descripción general <strong>de</strong> <strong>RAPID</strong>


Resumen <strong>de</strong> la sintaxisGetTimeGOutputHexToDecIndInposIndSpeed([\WDay] | [\Hour] | [\Min] | [\Sec])(Signal)(Str)(MecUnit Axis)(MecUnit Axis [\InSpeed] | [\ZeroSpeed])IOUnitState(UnitName)IsFile)(Path[\Directory] [\Fifo] [\RegFile] [\BlockSpec] [\CharSpec]IsMechUnitActive(MechUnit)IsPers(DatObj)IsStopStateEvent([\PPMoved] | [\PPToMain])IsSyncMoveOnIsSysIdIsVar(SystemId)(DatObj)MaxRobSpeedMirPos(Point MirPlane [\WObj] [\MirY])ModTime(Object)NonMotionMo<strong>de</strong>([\Main])NOrientNumToStr(Rotation)(Val Dec [\Exp])Offs(Point XOffset YOffset ZOffset)Descripción general <strong>de</strong> <strong>RAPID</strong> 81


Resumen <strong>de</strong> la sintaxisOpMo<strong>de</strong>OrientZYX(ZAngle YAngle XAngle)ORobT(OrgPoint [\InPDisp] | [\InEOffs])ParIdPosValid (ParIdType Pos AxValid [\ConfAngle])ParIdRobValid(ParIdType)PathRecValidBwd([\ID])82 Descripción general <strong>de</strong> <strong>RAPID</strong>


Resumen <strong>de</strong> la sintaxisPathRecValidFwd([\ID])PFRestart ([\Base] | [\Irpt])PoseInvPoseMultPoseVect(Pose)(Pose1 Pose2)(Pose Pos)Pow(Base Exponent)Present(OptPar)ProgMemFreeRawBytesLen(RawData)ReadBinReadDir(IODevice [\Time])(Dev FileName)ReadMotorReadNum([\MecUnit] Axis)(IODevice [\Time])ReadStr(IODevice [\Time])ReadStrBin(IODevice NoOfChars [\Time])RelTool(Point Dx Dy Dz [\Rx] [\Ry] [\Rz])RobOSRound( Val [\Dec])RunMo<strong>de</strong>([\Main])Sin (Angle)Sqrt(Value)StrFindStrLen(Str ChPos Set [\NotInSet])(Str)StrMap (Str FromMap ToMap)StrMatch(Str ChPos Pattern)Descripción general <strong>de</strong> <strong>RAPID</strong> 83


Resumen <strong>de</strong> la sintaxisStrMembStrOr<strong>de</strong>rStrPart(Str ChPos Set)(Str1 Str2 Or<strong>de</strong>r)(Str ChPos Len)StrToByteStrToVal(ConStr [\Hex] | [\Okt] | [\Bin] | [\Char])(Str Val)Tan(Angle)TaskRunMecTaskRunRobTestAndSet(Object)TestDI(Signal)TestSignRead(Channel)TextGet(Table In<strong>de</strong>x)TextTabFreeToUse(TableName)TextTabGet (TableName)Trunc(Val [\Dec])ValToStrVectMagn(Val)(Vector)84 Descripción general <strong>de</strong> <strong>RAPID</strong>


Elementos básicos20 Elementos básicos20.1 I<strong>de</strong>ntificadoresLos i<strong>de</strong>ntificadores se utilizan para asignar nombres a módulos, rutinas, datos yetiquetas.Por ejemploMODULE nombre_<strong>de</strong>_móduloPROC nombre_<strong>de</strong>_rutina()VAR pos nombre_<strong>de</strong>_dato;nombre_<strong>de</strong>_etiqueta:El primer carácter <strong>de</strong> cualquier i<strong>de</strong>ntificador <strong>de</strong>be ser una letra. Los <strong>de</strong>más caracterespue<strong>de</strong>n ser letras, dígitos o caracteres <strong>de</strong> subrayado “_”.La longitud máxima <strong>de</strong> cualquier i<strong>de</strong>ntificador es <strong>de</strong> 16 caracteres, cada uno <strong>de</strong> loscuales es significativo. Se consi<strong>de</strong>ra iguales a dos i<strong>de</strong>ntificadores que se llaman igualpero que están escritos con distintas mayúsculas o minúsculas.Palabras reservadasLas palabras enumeradas a continuación están reservadas. Tienen un significadoespecial en el lenguaje <strong>RAPID</strong> y por tanto no pue<strong>de</strong>n utilizarse como i<strong>de</strong>ntificadores.También existen varios nombres pre<strong>de</strong>finidos para tipos <strong>de</strong> datos, datos <strong>de</strong> sistema,instrucciones y funciones, que tampoco pue<strong>de</strong>n usarse como i<strong>de</strong>ntificadores. Consultelos Capítulos 7, 8, 9, 10 ,13, 14 y 15 <strong>de</strong> este manual.ALIAS AND BACKWARD CASECONNECT CONST DEFAULT DIVDO ELSE ELSEIF ENDFORENDFUNC ENDIF ENDMODULE ENDPROCENDRECORD ENDTEST ENDTRAP ENDWHILEERROR EXIT FALSE FORFROM FUNC GOTO IFINOUT LOCAL MOD MODULENOSTEPIN NOT NOVIEW ORPERS PROC RAISE READONLYRECORD RETRY RETURN STEPSYSMODULE TEST THEN TOTRAP TRUE TRYNEXT VARVIEWONLY WHILE WITH XORDescripción general <strong>de</strong> <strong>RAPID</strong> 85


Elementos básicos20.2 Espacios y caracteres <strong>de</strong> salto <strong>de</strong> líneaEl lenguaje <strong>de</strong> programación <strong>RAPID</strong> es un lenguaje con formato libre, lo que significaque es posible utilizar espacios en cualquier lugar <strong>de</strong>l código, excepto <strong>de</strong>ntro <strong>de</strong>:- I<strong>de</strong>ntificadores- Palabras reservadas- Valores numéricos- Marcadores <strong>de</strong> sustituciónEs posible utilizar caracteres <strong>de</strong> salto <strong>de</strong> línea, tabulador y salto <strong>de</strong> formulario en todoslos lugares don<strong>de</strong> se permite el uso <strong>de</strong> espacios, excepto <strong>de</strong>ntro <strong>de</strong> los comentarios.Los i<strong>de</strong>ntificadores, las palabras reservadas y los valores numéricos <strong>de</strong>ben aparecerseparados entre sí por un espacio, un carácter <strong>de</strong> salto <strong>de</strong> línea, un tabulador o uncarácter <strong>de</strong> salto <strong>de</strong> formulario.Los espacios y caracteres <strong>de</strong> salto <strong>de</strong> línea innecesarios se eliminan automáticamente<strong>de</strong> un programa al cargarlo en la memoria <strong>de</strong> programas. Por tanto, es posible que unprograma cargado <strong>de</strong>s<strong>de</strong> un disquete y almacenado <strong>de</strong> nuevo en el disquete presentecambios.20.3 Valores numéricosLos valores numéricos pue<strong>de</strong>n expresarse como:- Un entero, por ejemplo 3, -100, 3E2- Un número con <strong>de</strong>cimales, por ejemplo 3,5, -0,345, -245E-2Los valores <strong>de</strong>ben estar <strong>de</strong>ntro <strong>de</strong>l rango especificado por el estándar <strong>de</strong> coma flotanteANSI IEEE 754-1985 (precisión simple).20.4 Valores lógicosLos valores lógicos pue<strong>de</strong>n expresarse como TRUE o FALSE.20.5 Valores <strong>de</strong> ca<strong>de</strong>na <strong>de</strong> caracteresLos valores <strong>de</strong> ca<strong>de</strong>na <strong>de</strong> caracteres son secuencias <strong>de</strong> caracteres (ISO 8859-1) ycaracteres <strong>de</strong> control (caracteres no ISO 8859-1 en el rango <strong>de</strong> códigos numéricos <strong>de</strong> 0a 255). Es posible incluir códigos <strong>de</strong> caracteres, lo que permite incluir tambiéncaracteres no imprimibles (datos binarios) en las ca<strong>de</strong>nas <strong>de</strong> caracteres. La longitudmáxima <strong>de</strong> las ca<strong>de</strong>nas es <strong>de</strong> 80 caracteres.86 Descripción general <strong>de</strong> <strong>RAPID</strong>


Elementos básicosEjemplo:"Esto es una ca<strong>de</strong>na <strong>de</strong> caracteres""Esta ca<strong>de</strong>na <strong>de</strong> caracteres termina con el carácter <strong>de</strong> control BEL \07"Si se <strong>de</strong>sea incluir una barra invertida (que se usa para indicar códigos <strong>de</strong> carácter) o uncarácter <strong>de</strong> comillas, es necesario escribirlos dos veces.Ejemplo: "Esta ca<strong>de</strong>na <strong>de</strong> caracteres contiene un carácter <strong>de</strong> comillas "" ""Esta ca<strong>de</strong>na <strong>de</strong> caracteres contiene un carácter <strong>de</strong> barra invertida \\"20.6 ComentariosLos comentarios se utilizan para facilitar la comprensión <strong>de</strong>l programa. No afectan <strong>de</strong>ninguna forma al significado <strong>de</strong>l programa.Los comentarios comienzan con el signo <strong>de</strong> exclamación “!” y terminan con un carácter<strong>de</strong> salto <strong>de</strong> línea. Ocupan toda una línea y no pue<strong>de</strong> aparecer entre dos módulos.Por ejemplo:! ComentarioIF reg1 > 5 THEN! comentarioreg2:=0;ENDIF20.7 Marcadores <strong>de</strong> sustituciónLos marcadores <strong>de</strong> sustitución pue<strong>de</strong>n usarse temporalmente para representar a partes<strong>de</strong>l programa que “no están <strong>de</strong>finidas aún”. Los programas que contienen marcadores<strong>de</strong> sustitución son correctos sintácticamente y pue<strong>de</strong>n cargarse en la memoria <strong>de</strong>programas.Marcador <strong>de</strong> sustituciónRepresenta:Definición <strong>de</strong> tipo <strong>de</strong> datosDeclaración <strong>de</strong> datoDeclaración <strong>de</strong> rutinaParámetro alternativo opcional formalParámetro opcional formalDimensión <strong>de</strong> matriz formal (conformada)InstrucciónReferencia a un objeto <strong>de</strong> datos (variable, variable persistente oparámetro)Cláusula Else IF <strong>de</strong> una instrucción IFCláusula Case <strong>de</strong> una instrucción <strong>de</strong> testExpresiónArgumento <strong>de</strong> llamada a procedimientoI<strong>de</strong>ntificadorDescripción general <strong>de</strong> <strong>RAPID</strong> 87


Elementos básicos20.8 Encabezado <strong>de</strong>l archivoLos archivos <strong>de</strong> programa comienzan con el encabezado <strong>de</strong> archivo siguiente:%%%VERSION:1(Versión <strong>de</strong> programa M94 o M94A)LANGUAGE:ENGLISH(inglés u otro idioma:%%% GERMAN o FRENCH)20.9 SintaxisI<strong>de</strong>ntificadores ::=| ::= { | | ’_’}Valores numéricos ::= [ ]| ’.’ [ ] [ ]| [ ] ’.’ [ ] ::= {} ::= (’E’ | ’e’) [’+’ | ’-’] Valores lógicos ::= TRUE | FALSEValores <strong>de</strong> ca<strong>de</strong>na <strong>de</strong> caracteres ::= ’"’ { | } ’"’ ::= ’\’ ::= | A | B | C | D | E | F | a | b | c | d | e | fComentarios ::=’!’ { | } 88 Descripción general <strong>de</strong> <strong>RAPID</strong>


Elementos básicosCaracteres ::= -- ISO 8859-1 -- ::= -- carácter <strong>de</strong> control <strong>de</strong> salto <strong>de</strong> línea -- ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ::=| ::=A | B | C | D | E | F | G | H | I | J| K | L | M | N | O | P | Q | R | S | T| U | V | W | X | Y | Z | À | Á | Â | Ã| Ä | Å | Æ | Ç | È | É | Ê | Ë | Ì | Í| Î | Ï | 1) | Ñ | Ò | Ó | Ô | Õ | Ö | Ø| Ù | Ú | Û | Ü | 2) | 3) | ß ::=a | b | c | d | e | f | g | h | i | j| k | l | m | n | o | p | q | r | s | t| u | v | w | x | y | z | ß | à | á | â| ã| ä | å | æ | ç | è | é | ê | ë | ì| í | î | ï | 1) | ñ | ò | ó | ô | õ | ö| ø | ù | ú | û | ü | 2) | 3) | ÿ1) Letra “eth” islan<strong>de</strong>sa2) Letra Y con acento agudo3) Letra “thorn” islan<strong>de</strong>saDescripción general <strong>de</strong> <strong>RAPID</strong> 89


Elementos básicos90 Descripción general <strong>de</strong> <strong>RAPID</strong>


Módulos21 MódulosLos programas se divi<strong>de</strong>n en programa y módulos <strong>de</strong> sistema. También es posibledividir un programa en distintos módulos (consulte la Figura 1).Memoria <strong>de</strong> programasProgramaDatos <strong>de</strong> programaMóduloMódulo1Módulo2Módulo3Módulo4Rutina principalRutina1Rutina2Rutina3Datos <strong>de</strong> programaRutina4Rutina5Módulo <strong>de</strong> sistema1Datos <strong>de</strong> programaMódulo <strong>de</strong> sistema2Rutina6Rutina7Figura 1Es posible dividir un programa en distintos módulos.21.1 Módulos <strong>de</strong> programaUn módulo <strong>de</strong> programa pue<strong>de</strong> estar compuesto por datos y rutinas diferentes. Esposible copiar cada módulo, o el programa en su totalidad, a un disquete, a un disco enRAM, etc., y viceversa.Uno <strong>de</strong> los módulos contiene el procedimiento <strong>de</strong> entrada, un procedimiento global<strong>de</strong>nominado main. De hecho, la ejecución <strong>de</strong>l programa implica la ejecución <strong>de</strong>lprocedimiento main. El programa pue<strong>de</strong> contener muchos módulos, pero sólo uno <strong>de</strong>ellos pue<strong>de</strong> contener el procedimiento main.Por ejemplo, un módulo pue<strong>de</strong> <strong>de</strong>finir la interacción con equipos externos o contenerdatos geométricos que se generan <strong>de</strong>s<strong>de</strong> sistemas <strong>de</strong> CAD o se crean en línea mediantedigitalización (programación con la unidad <strong>de</strong> programación).Si bien las instalaciones pequeñas se suelen reflejar en un solo módulo, lasinstalaciones <strong>de</strong> mayor tamaño pue<strong>de</strong>n tener un módulo main que hace <strong>referencia</strong> arutinas y/o datos almacenados en uno o varios módulos adicionales.Descripción general <strong>de</strong> <strong>RAPID</strong> 91


Módulos21.2 Módulos <strong>de</strong> sistemaLos módulos <strong>de</strong> sistema se utilizan para <strong>de</strong>finir datos y rutinas comunes y específicos<strong>de</strong>l sistema, como por ejemplo, herramientas. No se incluyen cuando se guarda unprograma, lo que significa que cualquier cambio que se haga en un módulo <strong>de</strong> sistemaafectará a todos los programas almacenados actualmente en la memoria <strong>de</strong> programaso que se carguen posteriormente en ella.21.3 Declaración <strong>de</strong> módulosLa <strong>de</strong>claración <strong>de</strong> un módulo especifica el nombre y los atributos <strong>de</strong>l módulo. Estosatributos sólo pue<strong>de</strong>n añadirse fuera <strong>de</strong> línea, no a través <strong>de</strong>l FlexPendant. Acontinuación aparecen algunos ejemplos <strong>de</strong> los atributos <strong>de</strong> un módulo:AtributoSYSMODULENOSTEPINVIEWONLYREADONLYNOVIEWpor ejemploSi se especifica, el módulo:Se trata <strong>de</strong> un módulo <strong>de</strong> sistema (si no se indica, es un módulo<strong>de</strong> programa)No se permite su activación durante la ejecución paso a pasoNo se permite su modificaciónNo se permite su modificación, pero sí la eliminación <strong>de</strong> esteatributoNo se permite su visualización, sólo su ejecución Las rutinasglobales pue<strong>de</strong>n utilizarse <strong>de</strong>s<strong>de</strong> otros módulos y se ejecutansiempre con el atributo NOSTEPIN. Los valores <strong>de</strong> los datosglobales en cada momento pue<strong>de</strong>n usarse <strong>de</strong>s<strong>de</strong> otros móduloso <strong>de</strong>s<strong>de</strong> la ventana <strong>de</strong> datos <strong>de</strong>l FlexPendant. No es posibleguardar los módulos o programas que contengan un módulo <strong>de</strong>programa con el atributo NOVIEW. Por tanto, NOVIEW <strong>de</strong>beser utilizado principalmente por los módulos <strong>de</strong> sistema. Elatributo NOVIEW sólo pue<strong>de</strong> <strong>de</strong>finirse fuera <strong>de</strong> línea <strong>de</strong>s<strong>de</strong> unPC.MODULE nombre_módulo (SYSMODULE, VIEWONLY)!Definición <strong>de</strong> tipo <strong>de</strong> datos!Declaraciones <strong>de</strong> datos!Declaraciones <strong>de</strong> rutinasENDMODULENo se permite que un módulo tenga el mismo nombre que otro módulo o una rutina oun dato globales.92 Descripción general <strong>de</strong> <strong>RAPID</strong>


Módulos21.4 SintaxisDeclaración <strong>de</strong> módulos ::=MODULE [ ]ENDMODULE ::= ::= ‘(‘ { ‘,’ } ‘)’ ::= SYSMODULE| NOVIEW| NOSTEPIN | VIEWONLY | READONLY(Nota: Si se utilizan dos o más atributos, <strong>de</strong>ben aparecer en el or<strong>de</strong>n indicadoanteriormente. El atributo NOVIEW sólo pue<strong>de</strong> especificarse por sí solo o junto conel atributo SYSMODULE.) ::= { } ::= { } ::= { }Descripción general <strong>de</strong> <strong>RAPID</strong> 93


Módulos94 Descripción general <strong>de</strong> <strong>RAPID</strong>


Rutinas22 RutinasExisten tres tipos <strong>de</strong> rutinas (subprogramas): procedimientos, funciones y rutinasTRAP.- Los procedimientos no <strong>de</strong>vuelven ningún valor y se utilizan en el contexto <strong>de</strong>las instrucciones.- Las funciones <strong>de</strong>vuelven un valor <strong>de</strong> un tipo concreto y se utilizan en elcontexto <strong>de</strong> las expresiones.- Las rutinas TRAP proporcionan una forma <strong>de</strong> respon<strong>de</strong>r a las interrupciones.Las rutinas TRAP pue<strong>de</strong>n asociarse con una interrupción <strong>de</strong>terminada. Cuandoposteriormente se produce una interrupción concreta, se ejecuta la rutina TRAPcorrespondiente. Las rutinas TRAP no pue<strong>de</strong>n ejecutarse explícitamente <strong>de</strong>s<strong>de</strong>el programa.22.1 Ámbito <strong>de</strong> una rutinaEl ámbito <strong>de</strong> una rutina es el área <strong>de</strong>ntro <strong>de</strong> la cual es visible la rutina. La inclusión <strong>de</strong>la directiva opcional “local” en una <strong>de</strong>claración <strong>de</strong> rutina hace que ésta sea local(<strong>de</strong>ntro <strong>de</strong>l módulo). De lo contrario, la rutina se consi<strong>de</strong>ra global.Ejemplo:LOCAL PROC rutina_local (...PROC rutina_global (...Las reglas <strong>de</strong> ámbito siguientes sólo se aplican a las rutinas (consulte el ejemplo <strong>de</strong> laFigura 2):- El ámbito <strong>de</strong> una rutina global pue<strong>de</strong> incluir cualquier módulo.- El ámbito <strong>de</strong> una rutina local compren<strong>de</strong> el módulo al que pertenece.- Dentro <strong>de</strong> su ámbito, las rutinas locales suponen la ocultación <strong>de</strong> rutinasglobales o datos que tengan el mismo nombre.- Dentro <strong>de</strong> su ámbito, las rutinas suponen la ocultación <strong>de</strong> instrucciones, rutinaspre<strong>de</strong>finidas y datos que tengan el mismo nombre.Módulo1Rutina local aRutina local bRutina cRutina dRutina eMódulo2Rutina local aRutina local eRutina fRutina gRutina hFigura 2Ejemplo: Las rutinas siguientes están disponibles <strong>de</strong>s<strong>de</strong> la rutina h:Módulo1 - Rutina c, d.Módulo2 - Todas las rutinas.No se permite que una rutina tenga el mismo nombre que otra rutina o que un dato <strong>de</strong>lmismo módulo. No se permite que una rutina global tenga el mismo nombre que unmódulo o que una rutina o un dato global <strong>de</strong> otro módulo.Descripción general <strong>de</strong> <strong>RAPID</strong> 95


Rutinas22.2 ParámetrosLa lista <strong>de</strong> parámetros <strong>de</strong> la <strong>de</strong>claración <strong>de</strong> una rutina especifica los argumentos (losparámetros reales) que <strong>de</strong>ben/pue<strong>de</strong>n entregarse al llamar a la rutina.Existen cuatro tipos <strong>de</strong> parámetros (en el modo <strong>de</strong> acceso):- Normalmente, los parámetros se usan sólo como datos <strong>de</strong> entrada y se tratancomo variables <strong>de</strong> la rutina. Cuando se modifica el contenido <strong>de</strong> esta variable,no cambia el argumento correspondiente.- El parámetro INOUT especifica que el argumento correspondiente <strong>de</strong>be ser unavariable (un entero, un elemento o un componente) o una variable persistenteentera cuyo valor pue<strong>de</strong> ser modificado por la rutina.- El parámetro VAR especifica que el argumento correspondiente <strong>de</strong>be ser unavariable (un entero, un elemento o un componente) cuyo valor pue<strong>de</strong> sermodificado por la rutina.- El parámetro PERS especifica que el argumento correspondiente <strong>de</strong>be ser unavariable persistente entera cuyo valor pue<strong>de</strong> ser modificado por la rutina.Si se actualiza un parámetro <strong>de</strong> tipo INOUT, VAR o PERS, significa que, en realidad, seactualiza el argumento en sí, lo que posibilita el uso <strong>de</strong> argumentos para <strong>de</strong>volver valores ala rutina <strong>de</strong>s<strong>de</strong> la que se hace la llamada.Ejemplo:PROC routine1 (num in_par, INOUT num inout_par, VAR num var_par, PERS num pers_par)Un parámetro pue<strong>de</strong> ser opcional y pue<strong>de</strong> ser omitido <strong>de</strong> la lista <strong>de</strong> argumentos <strong>de</strong> lallamada a una rutina. Los parámetros opcionales se indican mediante una barrainvertida “\” precediendo al parámetro.Ejemplo:PROC routine2 (num required_par \num optional_par)No se permiten las <strong>referencia</strong>s al valor <strong>de</strong> un parámetro opcional omitido en la llamadaa una rutina. Esto significa que es necesario comprobar las llamadas a las rutinas, para<strong>de</strong>terminar la existencia <strong>de</strong> parámetros opcionales antes <strong>de</strong> utilizarlos.Dos o más parámetros opcionales pue<strong>de</strong>n ser excluyentes entre sí (es <strong>de</strong>cir, que la<strong>de</strong>claración <strong>de</strong> uno <strong>de</strong> ellos excluye al otro), lo que significa que sólo uno <strong>de</strong> ellospue<strong>de</strong> estar presente en la llamada a una rutina. Esto se indica mediante una barravertical “|” entre los parámetros afectados.Ejemplo:PROC routine3 (\num exclu<strong>de</strong>1 | num exclu<strong>de</strong>2)El tipo especial switch (sólo) pue<strong>de</strong> ser asignado a parámetros opcionales yproporciona una forma <strong>de</strong> usar argumentos modificadores, es <strong>de</strong>cir, argumentos quesólo se especifican por nombre (no por valor). No es posible transferir un valor a unparámetro modificador. La única forma <strong>de</strong> usar un parámetro modificador escomprobar su presencia mediante la función pre<strong>de</strong>finida Present.Ejemplo:PROC routine4 (\switch on | switch off)...IF Present (off ) THEN...ENDPROC96 Descripción general <strong>de</strong> <strong>RAPID</strong>


RutinasEs posible entregar matrices como argumentos. El grado <strong>de</strong> un argumento <strong>de</strong> matriz<strong>de</strong>be coincidir con el grado <strong>de</strong>l parámetro formal correspondiente. La dimensión <strong>de</strong> unparámetro <strong>de</strong> matriz está “conformada” (marcada con “*”). Por tanto, la dimensión real<strong>de</strong>pen<strong>de</strong> <strong>de</strong> la dimensión <strong>de</strong>l argumento correspondiente <strong>de</strong> la llamada a una rutina. Lasrutinas pue<strong>de</strong>n <strong>de</strong>terminar la dimensión actual <strong>de</strong> un parámetro mediante la funciónpre<strong>de</strong>finida Dim.Ejemplo:PROC rutina5 (VAR num palet{*,*})22.3 Finalización <strong>de</strong> una rutinaLa ejecución <strong>de</strong> un procedimiento finaliza explícitamente con una instrucciónRETURN o implícitamente cuando se alcanza el final (ENDPROC, BACKWARD oERROR) <strong>de</strong>l procedimiento.La evaluación <strong>de</strong> una función <strong>de</strong>be finalizar con una instrucción RETURN.La ejecución <strong>de</strong> una rutina TRAP finaliza explícitamente con la instrucción RETURNo implícitamente cuando se alcanza el final (ENDTRAP o ERROR) <strong>de</strong> la rutina TRAP. La ejecución continúa en el punto en el que se produjo la interrupción.22.4 Declaraciones <strong>de</strong> rutinasLas rutinas pue<strong>de</strong>n contener <strong>de</strong>claraciones <strong>de</strong> rutinas (con sus parámetros), datos, uncuerpo principal, un gestor <strong>de</strong> ejecución hacia atrás (sólo en el caso <strong>de</strong> losprocedimientos) y un gestor <strong>de</strong> errores (consulte la Figura 3). No se permite elanidamiento <strong>de</strong> las <strong>de</strong>claraciones <strong>de</strong> rutinas, es <strong>de</strong>cir, no se permite <strong>de</strong>clarar una rutina<strong>de</strong>ntro <strong>de</strong> una rutina.MóduloDeclaraciones <strong>de</strong> datosRutina aRutina bRutina cRutina dRutina eDeclaración <strong>de</strong> rutinaDeclaraciones <strong>de</strong> datosCuerpo (instrucciones)Gestor <strong>de</strong> ejecución hacia atrásGestor <strong>de</strong> erroresFigura 3Las rutinas pue<strong>de</strong>n contener <strong>de</strong>claraciones, datos, un cuerpo principal, un gestor <strong>de</strong>ejecución hacia atrás y un gestor <strong>de</strong> errores.Descripción general <strong>de</strong> <strong>RAPID</strong> 97


RutinasDeclaración <strong>de</strong> procedimientoEjemplo:Multiplicar por un factor todos los elementos una matriz <strong>de</strong> números.PROC arrmul( VAR num array{*}, num factor)FOR in<strong>de</strong>x FROM 1 TO dim( array, 1 ) DOarray{in<strong>de</strong>x} := array{in<strong>de</strong>x} * factor;ENDFORENDPROCDeclaración <strong>de</strong> funciónLas funciones pue<strong>de</strong>n <strong>de</strong>volver valores <strong>de</strong> cualquier tipos <strong>de</strong> datos, excepto matrices.Ejemplo:Devolver la longitud <strong>de</strong> un vector.FUNC num veclen (pos vector)RETURN Sqrt(Pow(vector.x,2)+Pow(vector.y,2)+Pow(vector.z,2));ENDFUNCDeclaración <strong>de</strong> rutina TRAPEjemplo:Respon<strong>de</strong>r a la interrupción <strong>de</strong> alimentador vacío.TRAP fee<strong>de</strong>r_emptywait_fee<strong>de</strong>r;RETURN;ENDTRAP22.5 Llamada a procedimientoCuando se realiza una llamada a un procedimiento, se utilizarán los argumentos quecorrespon<strong>de</strong>n a los parámetros <strong>de</strong>l procedimiento:- Es necesario especificar los parámetros obligatorios. A<strong>de</strong>más, es necesarioespecificarlos en el or<strong>de</strong>n correcto.- Pue<strong>de</strong> omitir los argumentos opcionales.- Es posible usar argumentos opcionales para transferir parámetros <strong>de</strong> una rutinaa otra.Consulte el Capítulo Utilización <strong>de</strong> llamadas a funciones en las expresiones en lapágina 116 para obtener más <strong>de</strong>talles.El nombre <strong>de</strong>l procedimiento pue<strong>de</strong> especificarse <strong>de</strong> forma estática mediante uni<strong>de</strong>ntificador (enlazamiento en tiempo <strong>de</strong> compilación) o especificarse en tiempo <strong>de</strong>ejecución a partir <strong>de</strong> una expresión <strong>de</strong> ca<strong>de</strong>na <strong>de</strong> caracteres (enlazamiento en tiempo <strong>de</strong>ejecución). Si bien el enlazamiento en tiempo <strong>de</strong> compilación <strong>de</strong>be consi<strong>de</strong>rarse laforma “normal” <strong>de</strong> llamar a procedimientos, hay ocasiones en las que el enlazamientoen tiempo <strong>de</strong> ejecución permite crear un código muy eficiente y compacto. Elenlazamiento en tiempo <strong>de</strong> ejecución se <strong>de</strong>fine mediante la inclusión <strong>de</strong> signos <strong>de</strong>porcentaje antes y <strong>de</strong>spués <strong>de</strong> la ca<strong>de</strong>na <strong>de</strong> caracteres que se usa como nombre <strong>de</strong>lprocedimiento.98 Descripción general <strong>de</strong> <strong>RAPID</strong>


RutinasEjemplo: ! Enlazamiento en tiempo <strong>de</strong> compilaciónTEST products_idCASE 1:proc1 x, y, z;CASE 2:proc2 x, y, z;CASE 3:...! El mismo ejemplo con enlazamiento en tiempo <strong>de</strong> ejecución% “proc” + NumToStr(product_id, 0) % x, y, z;...! Otra vez el mismo ejemplo, pero con otra variante <strong>de</strong> enlazamientoen tiempo <strong>de</strong> ejecuciónVAR string procname {3} :=[“proc1”, “proc2”, “proc3”];...% procname{product_id} % x, y, z;...Tenga en cuenta que el enlazamiento en tiempo <strong>de</strong> ejecución sólo está disponible parallamadas a procedimientos, no para llamadas a funciones. Si se hace <strong>referencia</strong> a unprocedimiento <strong>de</strong>sconocido mediante enlazamiento en tiempo <strong>de</strong> ejecución, la variable<strong>de</strong> sistema ERRNO cambia al valor ERR_REFUNKPRC. Si se hace <strong>referencia</strong> a unerror <strong>de</strong> llamada <strong>de</strong> procedimiento (<strong>de</strong> sintaxis, no <strong>de</strong> procedimiento) medianteenlazamiento en tiempo <strong>de</strong> ejecución, la variable ERRNO cambia al valorERR_CALLPROC.22.6 SintaxisDeclaración <strong>de</strong> rutina ::=[LOCAL] ( | | )| | Parámetros ::= { } ::= | | Descripción general <strong>de</strong> <strong>RAPID</strong> 99


Rutinas ::=’,’ | | ’,’| ’,’ ::=’\’ ( | ){ ’|’ ( | ) } ::=[ VAR | PERS | INOUT] [ ’{’ ( ’*’ { ’,’ ’*’ } ) | ] ’}’| ’switch’ Declaración <strong>de</strong> procedimiento ::=PROC ’(’ [ ] ’)’[ BACKWARD ][ ERROR ]ENDPROC ::= ::= { }Declaración <strong>de</strong> función ::=FUNC ’(’ [ ] ’)’[ ERROR ]ENDFUNC ::= Declaración <strong>de</strong> rutina TRAP ::=TRAP [ ERROR ]ENDTRAP ::= 100 Descripción general <strong>de</strong> <strong>RAPID</strong>


RutinasLlamada a procedimiento ::= [ ] ’;’ ::= | ’%’ ’%’ ::= { } ::= | | | ::=’,’ | | ’,’ | | ’,’ | ’,’ ::= [ ’:=’ ] ::= ’\’ [ ’:=’ ] ::= ’\’ ’?’ ( | )Descripción general <strong>de</strong> <strong>RAPID</strong> 101


Rutinas102 Descripción general <strong>de</strong> <strong>RAPID</strong>


Tipos <strong>de</strong> datos23 Tipos <strong>de</strong> datosExisten dos clases diferentes <strong>de</strong> tipos <strong>de</strong> datos:- Los tipos atómicos son atómicos en cuanto a que no están <strong>de</strong>finidos partiendo<strong>de</strong> ningún otro tipo y que no pue<strong>de</strong>n ser divididos en distintas partes o distintoscomponentes. Un ejemplo es el tipo num.- Los tipos <strong>de</strong> datos <strong>de</strong> registro son tipos compuestos con componentes connombre y or<strong>de</strong>nados. Un ejemplo es pos. Los componentes pue<strong>de</strong>n ser <strong>de</strong> tipoatómico o <strong>de</strong> registro.Los valores <strong>de</strong> registro pue<strong>de</strong>n expresarse usando una representaciónagregada.Por ejemplo:[ 300, 500, profundidad ]Valor agregado <strong>de</strong> registro pos.El acceso a un componente concreto <strong>de</strong> un dato <strong>de</strong> registro pue<strong>de</strong> realizarse através <strong>de</strong>l nombre <strong>de</strong>l componente.Por ejemplo:pos1.x := 300;Asignación <strong>de</strong>l componente x <strong>de</strong> pos1.23.1 Tipos <strong>de</strong> datos sin valoresCada tipo <strong>de</strong> datos disponible es un tipo <strong>de</strong> datos con valor o un tipo <strong>de</strong> datosin valor.En otras palabras, un tipo <strong>de</strong> dato con valor representa alguna forma <strong>de</strong> “valor”. Losdatos sin valor no pue<strong>de</strong>n usarse en operaciones basadas en valores:- Inicialización- Asignación (:=)- Comprobaciones <strong>de</strong> igualdad (=) y <strong>de</strong> diferencia ()- Instrucciones TEST- Parámetros IN (modo <strong>de</strong> acceso) en llamadas a rutinas- Tipos <strong>de</strong> datos <strong>de</strong> función (return)Los tipos <strong>de</strong> datos <strong>de</strong> entrada (signalai, signaldi, signalgi) son <strong>de</strong>l tipo <strong>de</strong> datos <strong>de</strong>semivalor. Estos datos pue<strong>de</strong>n usarse en operaciones basadas en valores, excepto lainicialización y la asignación:En la <strong>de</strong>scripción <strong>de</strong> un tipo <strong>de</strong> datos, sólo se especifica cuando es un tipo <strong>de</strong> datos <strong>de</strong>semivalor o sin valor.Descripción general <strong>de</strong> <strong>RAPID</strong> 103


Tipos <strong>de</strong> datos23.2 Tipos <strong>de</strong> datos <strong>de</strong> igualdad (alias)Un tipo <strong>de</strong> dato <strong>de</strong> alias se <strong>de</strong>fine como equivalente a otro tipo <strong>de</strong> dato. Los datos conlos mismos tipos <strong>de</strong> datos pue<strong>de</strong>n usarse unos en sustitución <strong>de</strong> otros.Ejemplo:VAR dionum high:=1;VAR num level;level:= high;Esto es correcto dado que dionum es untipo <strong>de</strong> dato <strong>de</strong> alias <strong>de</strong> num.23.3 Sintaxis::=[LOCAL] ( | )| | ::=RECORD ENDRECORD ::= | ::= ’;’ ::=ALIAS ’;’ ::= 104 Descripción general <strong>de</strong> <strong>RAPID</strong>


Datos24 DatosExisten tres tipos <strong>de</strong> datos: variables, variables persistentes y constantes.- Las asignación <strong>de</strong> nuevos valores a las variables pue<strong>de</strong> realizarse durante laejecución <strong>de</strong>l programa.- Un valor persistente pue<strong>de</strong> <strong>de</strong>scribirse como una variable “persistente”. Esto seconsigue haciendo que una actualización <strong>de</strong>l valor <strong>de</strong> una variable persistenteprovoque automáticamente la actualización <strong>de</strong>l valor <strong>de</strong> inicialización <strong>de</strong> la<strong>de</strong>claración <strong>de</strong> la variable persistente (cuando se guarda un programa, el valor<strong>de</strong> inicialización <strong>de</strong> cualquier <strong>de</strong>claración <strong>de</strong> variable persistente refleja el valoractual <strong>de</strong> la variable persistente).- Las constantes representan valores fijos y no es posible asignarles nuevosvalores.Las <strong>de</strong>claraciones <strong>de</strong> datos introducen los datos mediante la asociación <strong>de</strong> un nombre(un i<strong>de</strong>ntificador) a un tipo <strong>de</strong> dato. Excepto en el caso <strong>de</strong> los datos pre<strong>de</strong>finidos y lasvariables <strong>de</strong> bucle, es necesario <strong>de</strong>clarar todos los datos utilizados.24.1 Ámbito <strong>de</strong> un datoEl ámbito <strong>de</strong> un dato es el área <strong>de</strong>ntro <strong>de</strong> la cual es visible el dato. La inclusión <strong>de</strong> ladirectiva opcional “local” en una <strong>de</strong>claración <strong>de</strong> dato hace que éste sea local (<strong>de</strong>ntro<strong>de</strong>l módulo). De lo contrario, el dato se consi<strong>de</strong>ra global. Recuer<strong>de</strong> que la directiva“local” sólo pue<strong>de</strong> usarse en el nivel <strong>de</strong> módulo, no <strong>de</strong>ntro <strong>de</strong> una rutina.Ejemplo:LOCAL VAR num variable_local;VAR num variable_global;Los datos <strong>de</strong>clarados fuera <strong>de</strong> una rutina se conocen como datos <strong>de</strong> programa. A losdatos <strong>de</strong> programa se les aplican las siguientes reglas <strong>de</strong> ámbito:- El ámbito <strong>de</strong> un dato <strong>de</strong> programa pre<strong>de</strong>finido o global pue<strong>de</strong> incluir cualquiermódulo.- El ámbito <strong>de</strong> un dato <strong>de</strong> programa local compren<strong>de</strong> el módulo al que pertenece.- Dentro <strong>de</strong> su ámbito, los datos <strong>de</strong> programa locales suponen la ocultación <strong>de</strong>cualquier dato o rutina globales que tengan el mismo nombre (incluidas lasinstrucciones, las rutinas pre<strong>de</strong>finidas y los datos).No se permite que los datos <strong>de</strong> programa tengan el mismo nombre que otros datos orutinas <strong>de</strong>l mismo módulo. No se permite que los datos <strong>de</strong> programa globales tenganel mismo nombre que otros datos globales o rutinas <strong>de</strong> otros módulos. No se permiteque una variable persistente tenga el mismo nombre que otra variable persistente <strong>de</strong>lmismo programa.Los datos <strong>de</strong>clarados <strong>de</strong>ntro <strong>de</strong> una rutina se conocen como datos <strong>de</strong> rutina. Recuer<strong>de</strong>que los parámetros <strong>de</strong> una rutina también se manejan como datos <strong>de</strong> rutina. A los datos<strong>de</strong> rutina se les aplican las siguientes reglas <strong>de</strong> ámbito:- El ámbito <strong>de</strong> un dato <strong>de</strong> rutina compren<strong>de</strong> la rutina a la que pertenece.- Dentro <strong>de</strong> su ámbito, los datos <strong>de</strong> rutina suponen la ocultación <strong>de</strong> las rutinas olos datos que tengan el mismo nombre.Descripción general <strong>de</strong> <strong>RAPID</strong> 105


DatosConsulte el ejemplo <strong>de</strong> la Figura 4.Módulo1Dato local aDato local bDato cDato dDato eMódulo2Dato local aDato local fDato gRutina local eDato e1Rutina hDato h1Dato cFigura 4Ejemplo: Los datos siguientes están disponibles <strong>de</strong>s<strong>de</strong> la rutina e:Módulo1: Datos c, d.Módulo2: Datos a, f, g, e1.Los datos siguientes están disponibles <strong>de</strong>s<strong>de</strong> la rutina h:Módulo1: Dato d.Módulo2: Datos a, f, g, h1, c.No se permite que los datos <strong>de</strong> rutina tengan el mismo nombre que otros datos oetiquetas <strong>de</strong> la misma rutina.24.2 Declaración <strong>de</strong> variablesLas variables se introducen mediante <strong>de</strong>claraciones <strong>de</strong> variable.Ejemplo: VAR num x;Es posible asignar un formato <strong>de</strong> matriz (<strong>de</strong> grado 1, 2 ó 3) a variables <strong>de</strong> cualquier tipo,mediante la especificación <strong>de</strong> información <strong>de</strong> dimensiones en la <strong>de</strong>claración. Lasdimensiones son valores enteros mayores que 0.Ejemplo: VAR pos pallet{14, 18};Es posible inicializar las variables con tipos <strong>de</strong> valores (es <strong>de</strong>cir, indicar su valorinicial). La expresión utilizada para inicializar una variable <strong>de</strong> programa <strong>de</strong>be serconstante. Recuer<strong>de</strong> que se permite utilizar el valor <strong>de</strong> una variable no inicializada,pero ésta no está <strong>de</strong>finida, es <strong>de</strong>cir, tiene el valor cero.Ejemplo:VAR string author_name := “Juan Bueno”;VAR pos start := [100, 100, 50];VAR num maxno{10} := [1, 2, 3, 9, 8, 7, 6, 5, 4, 3];El valor <strong>de</strong> inicialización se establece en las situaciones siguientes:- Al abrir el programa- Cuando se ejecuta el programa <strong>de</strong>s<strong>de</strong> el principio106 Descripción general <strong>de</strong> <strong>RAPID</strong>


Datos24.3 Declaración <strong>de</strong> variables persistentesLas variables persistentes sólo pue<strong>de</strong>n ser <strong>de</strong>claradas en el nivel <strong>de</strong> módulo, no <strong>de</strong>ntro<strong>de</strong> una rutina. Estas variables persistentes pue<strong>de</strong>n <strong>de</strong>clararse como globales <strong>de</strong>lsistema, globales <strong>de</strong> la tarea o locales.Ejemplo: PERS num persglobal := 123;TASK PERS num perstarea := 456;LOCAL PERS num perslocal := 789;Todas las variables persistentes globales <strong>de</strong>l sistema que tengan el mismo nombrecomparten el valor actual. Las variables persistentes globales <strong>de</strong> la tarea y locales nocomparten el valor actual con otras variables persistentes.Las variables persistentes locales y globales <strong>de</strong> la tarea <strong>de</strong>ben recibir un valor <strong>de</strong>inicialización. En el caso <strong>de</strong> las variables persistentes globales <strong>de</strong>l sistema, el valorinicial pue<strong>de</strong> omitirse. El valor <strong>de</strong> inicialización <strong>de</strong>be ser un solo valor (sin <strong>referencia</strong>sa datos ni operandos) o un solo agregado con miembros que, a su vez, sean valoressimples o agregados simples.Ejemplo: PERS pos refpnt := [100.23, 778.55, 1183.98];Es posible asignar un formato <strong>de</strong> matriz (<strong>de</strong> grado 1, 2 ó 3) a variables persistentes <strong>de</strong>cualquier tipo, mediante la especificación <strong>de</strong> información <strong>de</strong> dimensiones en la<strong>de</strong>claración. Las dimensiones son valores enteros mayores que 0.Ejemplo: PERS pos pallet{14, 18} := [...];Recuer<strong>de</strong> que si cambia el valor actual <strong>de</strong> una variable persistente, el hacerlo provocaautomáticamente la actualización <strong>de</strong>l valor <strong>de</strong> inicialización (si no se había omitido) <strong>de</strong>la <strong>de</strong>claración <strong>de</strong> la variable persistente.Ejemplo: PERS num reg1 := 0;...reg1 := 5;Después <strong>de</strong> guardar el módulo, éste tiene el aspecto siguiente:PERS num reg1 := 5;...reg1 := 5;24.4 Declaración <strong>de</strong> constantesLas constantes se introducen mediante <strong>de</strong>claraciones <strong>de</strong> constante. No es posiblemodificar el valor <strong>de</strong> las constantes.Ejemplo: CONST num pi := 3.141592654;Es posible asignar un formato <strong>de</strong> matriz (<strong>de</strong> grado 1, 2 ó 3) a constantes <strong>de</strong> cualquiertipo, mediante la especificación <strong>de</strong> información <strong>de</strong> dimensiones en la <strong>de</strong>claración. Lasdimensiones son valores enteros mayores que 0.Ejemplo: CONST pos seq{3} := [[614, 778, 1020],[914, 998, 1021],[814, 998, 1022]];Descripción general <strong>de</strong> <strong>RAPID</strong> 107


Datos24.5 Inicialización <strong>de</strong> datosEl valor <strong>de</strong> inicialización <strong>de</strong> una constante o una variable pue<strong>de</strong> ser una expresiónconstante.El valor <strong>de</strong> inicialización <strong>de</strong> una variable persistente sólo pue<strong>de</strong> ser una expresiónliteral.Ejemplo: CONST num a := 2;CONST num b := 3;! Sintaxis correctaCONST num ab := a + b;VAR num a_b := a + b;PERS num a__b := 5;! Sintaxis incorrectaPERS num a__b := a + b;En la tabla siguiente pue<strong>de</strong> ver qué ocurre durante distintas activida<strong>de</strong>s, como elarranque en caliente, un nuevo programa, inicio <strong>de</strong>l programa, etc.Tabla1 Cambios <strong>de</strong> datos en distintas activida<strong>de</strong>s.Evento <strong>de</strong>sistemaAfecta aEncendido(arranqueencaliente)Abrir, cerraro nuevoprogramaIniciarprograma(moverpuntero amain)Iniciarprograma(moverpuntero arutina)Iniciarprograma(moverpuntero acursor)Iniciarprograma(llamadaa rutina)Iniciarprograma(<strong>de</strong>spués<strong>de</strong> ciclo)Iniciarprograma(<strong>de</strong>spués<strong>de</strong> paro)ConstanteSincambiosInicialización Inicialización Inicialización SincambiosSincambiosSincambiosSincambiosVariableSincambiosInicialización Inicialización Inicialización SincambiosSincambiosSincambiosSincambiosPersistenteSincambiosInicialización**/SincambiosSin cambios Sin cambios SincambiosSincambiosSincambiosSincambiosInterrupciones concomandoPedidas <strong>de</strong>nuevoDesaparece Desaparece Desaparece SincambiosSincambiosSincambiosSincambiosRutina <strong>de</strong>puesta enmarchaSYS_RESET (conconfiguraciones <strong>de</strong>movimiento)No seejecutaSe ejecuta* Ejecución No se ejecuta No seejecutaNo seejecutaNo seejecutaNo seejecutaArchivos Se cierran Se cierran Se cierran Se cierran SincambiosSincambiosSincambiosSincambiosTrayectoriaCreada <strong>de</strong>nuevo alarrancarDesaparece Desaparece Desaparece Desaparece SincambiosSincambiosSincambios* Genera un error cuando hay un error semántico en el programa <strong>de</strong> la tarea actual.** Las variables persistentes que no tienen ningún valor inicial sólo se inicializan si nose han <strong>de</strong>clarado previamente.108 Descripción general <strong>de</strong> <strong>RAPID</strong>


Datos24.6 Clase <strong>de</strong> almacenamientoLa clase <strong>de</strong> almacenamiento <strong>de</strong> un objeto <strong>de</strong> datos <strong>de</strong>termina cuándo asigna y libera elsistema la memoria <strong>de</strong>l objeto <strong>de</strong> datos. La clase <strong>de</strong> almacenamiento <strong>de</strong> un objeto <strong>de</strong>datos se <strong>de</strong>termina por el tipo <strong>de</strong> objeto <strong>de</strong> datos y el contexto <strong>de</strong> su <strong>de</strong>claración. Pue<strong>de</strong>ser estática o volátil.Las constantes, las variables persistentes y las variables <strong>de</strong> módulo son estáticas, es<strong>de</strong>cir, que tienen el mismo tipo <strong>de</strong> almacenamiento durante toda la vida <strong>de</strong> una tarea.Esto significa que cualquier valor asignado a una variable persistente o a una variable<strong>de</strong> módulo permanece siempre sin cambios hasta la siguiente asignación.Las variables <strong>de</strong> rutina son volátiles. La memoria necesaria para almacenar el valor <strong>de</strong>una variable volátil se asigna en primer lugar con una llamada a la rutina que albergala <strong>de</strong>claración en la que se encuentra la variable. Más tar<strong>de</strong>, la memoria se libera en elpunto <strong>de</strong> retorno al lugar <strong>de</strong>l programa <strong>de</strong>s<strong>de</strong> el que se llama a la rutina. Esto significaque el valor <strong>de</strong> una variable <strong>de</strong> rutina está siempre sin <strong>de</strong>finir antes <strong>de</strong> la llamada a larutina y siempre se pier<strong>de</strong> (queda sin <strong>de</strong>finición) al final <strong>de</strong> la ejecución <strong>de</strong> la rutina.En una ca<strong>de</strong>na <strong>de</strong> llamadas recursivas a rutinas (una rutina que se llama a sí misma <strong>de</strong>forma directa o indirecta), cada instancia <strong>de</strong> la rutina recibe una posición propia en lamemoria para la “misma” variable <strong>de</strong> rutina (se crean varias instancias <strong>de</strong> la mismavariable).Descripción general <strong>de</strong> <strong>RAPID</strong> 109


Datos24.7 SintaxisDeclaración <strong>de</strong> datos ::=[LOCAL] ( | | )| TASK | | Declaración <strong>de</strong> variables ::=VAR ’;’ ::= [ ’{’ { ’,’ } ’}’ ][ ’:=’ ] ::= Declaración <strong>de</strong> variables persistentes ::=PERS ’;’ ::= [ ’{’ { ’,’ } ’}’ ][ ’:=’ ]Importante: La expresión literal sólo pue<strong>de</strong> omitirse en el caso <strong>de</strong> las variablespersistentes globales <strong>de</strong>l sistema.Declaración <strong>de</strong> constantes ::=CONST ’;’ ::= [ ’{’ { ’,’ } ’}’ ]’:=’ ::= 110 Descripción general <strong>de</strong> <strong>RAPID</strong>


Instrucciones25 InstruccionesLas instrucciones se ejecutan una tras otra a no ser que una instrucción <strong>de</strong> flujo <strong>de</strong>lprograma, una interrupción o un error hagan que la ejecución continúe en algún otrolugar.La mayoría <strong>de</strong> las instrucciones terminan en punto y coma “;”. Las etiquetas terminanen dos puntos “:”. Algunas instrucciones pue<strong>de</strong>n contener otras instrucciones yterminan con palabras clave <strong>de</strong>terminadas:InstrucciónIFFORWHILETESTPalabra <strong>de</strong> terminaciónENDIFENDFORENDWHILEENDTESTEjemplo:WHILE in<strong>de</strong>x < 100 DO.in<strong>de</strong>x := in<strong>de</strong>x + 1; ENDWHILE25.1 Sintaxis ::= { } ::=[| Descripción general <strong>de</strong> <strong>RAPID</strong> 111


Instrucciones112 Descripción general <strong>de</strong> <strong>RAPID</strong>


Expresiones26 ExpresionesUna expresión especifica la evaluación <strong>de</strong> un valor. Por ejemplo, pue<strong>de</strong> usarla en lassituaciones siguientes:- En instrucciones <strong>de</strong> asignación, por ejemplo a:=3*b/c;- Como una condición <strong>de</strong> una instrucción IF, por ejemplo IF a>=3 THEN ...- Como argumento <strong>de</strong> una instrucción, por ejemplo, WaitTime tiempo;- Como argumento <strong>de</strong> una llamada a una función, por ejemplo a:=Abs(3*b);26.1 Expresiones aritméticasLas expresiones aritméticas se utilizan para evaluar valores numéricos.Ejemplo:2*pi*radioTabla 2: Distintos tipos <strong>de</strong> operaciones posiblesOperador Operación Tipos <strong>de</strong> operandosTipo <strong>de</strong>resultado+ suma num + num num3)+ suma unitaria; conservar el signo +num o +pos igual1)3)+ suma <strong>de</strong> vectores pos + pos pos- resta num - num num3)- resta unitaria; cambio <strong>de</strong> signo -num o -pos igual1)3)- resta <strong>de</strong> vectores pos - pos pos* multiplicación num * num num3)* multiplicación <strong>de</strong> vectores escalares num * pos o pos * num pos* producto <strong>de</strong> vectores pos * pos pos* vinculación <strong>de</strong> rotaciones orient * orient orient/ división num / num numDIV 2) división entera num DIV num numMOD 2) módulo <strong>de</strong> entero; resto num MOD num num1. El resultado recibe el mismo tipo que el operando. Si el operando tiene un tipo<strong>de</strong> datos <strong>de</strong> alias, el resultado recibe el tipo “básico” <strong>de</strong>l alias (num o pos).2. Operaciones enteras, por ejemplo 14 DIV 4=3, 14 MOD 4=2.(No se permite el uso <strong>de</strong> operandos no enteros.)3. Conserva la representación <strong>de</strong> entero (exacto) siempre y cuando los operandosy el resultado se mantengan <strong>de</strong>ntro <strong>de</strong>l subdominio <strong>de</strong> enteros <strong>de</strong>l tipo num.Descripción general <strong>de</strong> <strong>RAPID</strong> 113


Expresiones26.2 Expresiones lógicasLas expresiones lógicas se utilizan para evaluar valores lógicos (TRUE/FALSE).Ejemplo: a>5 AND b=3Tabla 3: Distintos tipos <strong>de</strong> operaciones posiblesOperador Operación Tipos <strong>de</strong> operandosTipo <strong>de</strong>resultado< menor que num < num bool= num bool> mayor que num > num bool distinto <strong>de</strong> cualquiera 1) cualquiera 1)AND y booleano ANDbooleanoXOR OR exclusivo booleano XORbooleanoOR o booleano ORbooleanoboolboolboolboolNOT no unitario; negación NOT booleano bool1) Sólo tipos <strong>de</strong> datos con valor. Los operandos <strong>de</strong>ben ser <strong>de</strong>l mismo tipo.a AND ba Verda<strong>de</strong>ro FalsobVerda<strong>de</strong>roFalsoVerda<strong>de</strong>ro FalsoFalso Falsoa XOR ba Verda<strong>de</strong>ro FalsobVerda<strong>de</strong>roFalsoFalso Verda<strong>de</strong>roVerda<strong>de</strong>ro Falsoa OR ba Verda<strong>de</strong>ro FalsobVerda<strong>de</strong>roVerda<strong>de</strong>roVerda<strong>de</strong>roFalsoVerda<strong>de</strong>roFalsoNOT bbVerda<strong>de</strong>roFalsoFalsoVerda<strong>de</strong>ro114 Descripción general <strong>de</strong> <strong>RAPID</strong>


Expresiones26.3 Expresiones <strong>de</strong> ca<strong>de</strong>na <strong>de</strong> caracteresLas expresiones <strong>de</strong> ca<strong>de</strong>na <strong>de</strong> caracteres se utilizan para realizar operaciones conca<strong>de</strong>nas <strong>de</strong> caracteres.Ejemplo: “IN” + “PUT” Genera el resultado “INPUT”.Tabla 4: Única operación posibleOperador Operación Tipos <strong>de</strong> operandosTipo <strong>de</strong>resultado+ concatenación <strong>de</strong> ca<strong>de</strong>nas<strong>de</strong> caracteresca<strong>de</strong>na <strong>de</strong> caracteres+ ca<strong>de</strong>na <strong>de</strong>caracteresca<strong>de</strong>na26.4 Utilización <strong>de</strong> datos en expresionesEs posible usar variables enteras, variables persistentes o constantes como parte <strong>de</strong> unaexpresión.Ejemplo:2*pi*radioMatricesEs posible hacer <strong>referencia</strong> a una variable, una variable persistente o una constante<strong>de</strong>clarada como matriz, ya sea como un todo o en sus distintos elementos.Para hacer <strong>referencia</strong> a un elemento <strong>de</strong> matriz se utiliza el número <strong>de</strong> índice <strong>de</strong>lelemento. El índice es un valor entero mayor que 0 y no <strong>de</strong>be ir más allá <strong>de</strong> ladimensión <strong>de</strong>clarada. El valor <strong>de</strong> índice 1 se utiliza para seleccionar el primerelemento. El número <strong>de</strong> elementos <strong>de</strong> la lista <strong>de</strong> índices <strong>de</strong>be correspon<strong>de</strong>r al grado<strong>de</strong>clarado (1, 2 ó 3) <strong>de</strong> la matriz.Ejemplo:VAR num row{3};VAR num column{3};VAR num value;.value := column{3};row := column;Sólo un elemento <strong>de</strong> la matrizTodos los elementos <strong>de</strong> la matrizRegistrosEs posible hacer <strong>referencia</strong> a una variable, una variable persistente o una constante<strong>de</strong>clarada como registro, ya sea como un todo o en sus distintos componentes.Para hacer <strong>referencia</strong> a un componente <strong>de</strong> un registro, se utiliza el nombre <strong>de</strong>lcomponente.Descripción general <strong>de</strong> <strong>RAPID</strong> 115


ExpresionesEjemplo:VAR pos home;VAR pos pos1;VAR num yvalue;..yvalue := home.y;pos1 := home;Sólo el componente YToda la posición26.5 Utilización <strong>de</strong> agregados en expresionesLos agregados se utilizan con valores <strong>de</strong> registro o <strong>de</strong> matriz.Ejemplo: pos := [x, y, 2*x]; Agregado <strong>de</strong> registros posposarr := [[0, 0, 100], [0,0,z]]; Agregado <strong>de</strong> matrices posDebe ser posible <strong>de</strong>terminar el tipo <strong>de</strong> dato <strong>de</strong> un agregado por su contexto. El tipo <strong>de</strong>dato <strong>de</strong> cada miembro <strong>de</strong>l agregado <strong>de</strong>be ser igual al tipo <strong>de</strong>l miembro correspondiente<strong>de</strong>l tipo <strong>de</strong>terminado.EjemploVAR pos pl;p1 :=[1, -100, 12];Tipo <strong>de</strong> agregado pos - <strong>de</strong>terminadopor p1IF [1, -100, 12] = [a,b,b,] THEN Ilegal ya que no es posible <strong>de</strong>terminarel tipo <strong>de</strong> dato <strong>de</strong> ninguno <strong>de</strong> losagregados por su contexto.26.6 Utilización <strong>de</strong> llamadas a funciones en las expresionesLa llamada a una función inicia la evaluación <strong>de</strong> una función <strong>de</strong>terminada y recibe elvalor <strong>de</strong>vuelto por la función.Ejemplo:Sin(angle)Los argumentos <strong>de</strong> la llamada a una función se utilizan para transferir datos a (yposiblemente <strong>de</strong>) la función a la que se llama. El tipo <strong>de</strong> dato <strong>de</strong> un argumento <strong>de</strong>be serigual al tipo <strong>de</strong>l parámetro correspondiente <strong>de</strong> la función. Se permite la omisión <strong>de</strong> losargumentos opcionales pero el or<strong>de</strong>n <strong>de</strong> los argumentos (presentes) <strong>de</strong>ben ser el mismoque el or<strong>de</strong>n <strong>de</strong> los parámetros formales. A<strong>de</strong>más, es posible <strong>de</strong>clarar dos o másargumentos opcionales que se excluyen entre sí, en cuyo caso sólo pue<strong>de</strong> estar presenteuno <strong>de</strong> ellos en la lista <strong>de</strong> argumentos.Los argumentos obligatorios se separan entre sí mediante una coma “,”. El nombreformal <strong>de</strong>l parámetro pue<strong>de</strong> incluirse u omitirse.Ejemplo: Polar(3.937, 0.785398) Dos argumentos obligatoriosPolar(Dist:=3.937, Angle:=0.785398) ... con sus nombresLos argumentos opcionales <strong>de</strong>ben ir precedidos por una barra invertida “\” y el nombreformal <strong>de</strong>l parámetro. Los argumentos <strong>de</strong> parámetro modificador son un caso algoespecial. No pue<strong>de</strong>n incluir expresiones <strong>de</strong> argumento. En su lugar, estos argumentossólo pue<strong>de</strong>n estar “presentes” o “ausentes”.116 Descripción general <strong>de</strong> <strong>RAPID</strong>


ExpresionesEjemplo: Cosine(45) Un argumento obligatorioCosine(0.785398\Rad)... y un modificadorDist(p2)Un argumento obligatorioDist(\distance:=pos1, p2) ... y uno opcionalLos argumentos condicionales se utilizan para la propagación sin problemas <strong>de</strong> losargumentos opcionales a través <strong>de</strong> ca<strong>de</strong>nas <strong>de</strong> llamadas a rutinas. Se consi<strong>de</strong>ra que unargumento condicional está “presente” si el parámetro opcional especificado (<strong>de</strong> lafunción <strong>de</strong>s<strong>de</strong> la que se hace la llamada) está presente. De lo contrario, se consi<strong>de</strong>rasencillamente como omitido. Recuer<strong>de</strong> que el parámetro especificado <strong>de</strong>be seropcional.Ejemplo: PROC Read_from_file (io<strong>de</strong>v File \num Maxtime)..character:=ReadBin (File \Time?Maxtime);! El tiempo máximo sólo se usa si se especifica durante la llamada a larutina! Leer_<strong>de</strong>_archivo..ENDPROCLa lista <strong>de</strong> parámetros <strong>de</strong> una función asigna un modo <strong>de</strong> acceso a cada parámetro. Elmodo <strong>de</strong> acceso pue<strong>de</strong> ser in, inout, var o pers:- Los parámetros IN (los pre<strong>de</strong>terminados) permiten usar cualquier expresióncomo argumento. La función a la que se llama consi<strong>de</strong>ra el parámetro como unaconstante.- Los parámetros INOUT requieren que el argumento correspondiente sea unavariable (un elemento, un elemento <strong>de</strong> una matriz o un componente <strong>de</strong> unregistro) o una variable persistente. La función a la que se llama obtiene unacceso completo (lectura y escritura) al argumento.- Los parámetros VAR requieren que el argumento correspondiente sea unavariable (un elemento, un elemento <strong>de</strong> una matriz o un componente <strong>de</strong> unregistro). La función a la que se llama obtiene un acceso completo (lectura yescritura) al argumento.- Los parámetros PERS exigen que el argumento correspondiente sea unavariable persistente entera. La función a la que se llama obtiene un accesocompleto (lectura y actualización) al argumento.26.7 Prioridad entre operadoresLa prioridad relativa <strong>de</strong> los operadores <strong>de</strong>termina el or<strong>de</strong>n en el que se evalúan. Losparéntesis proporcionan una forma <strong>de</strong> re<strong>de</strong>finir la prioridad <strong>de</strong> los operadores. Lasreglas siguientes implican la siguiente prioridad <strong>de</strong> los operadores:* / DIV MOD- Máxima+ -< > = =ANDXOR OR NOT - MínimaLos operadores con alta prioridad se evalúan antes que los operadores con prioridadbaja. Los operadores con la misma prioridad se evalúan <strong>de</strong> izquierda a <strong>de</strong>recha.Descripción general <strong>de</strong> <strong>RAPID</strong> 117


ExpresionesEjemploExpresión Or<strong>de</strong>n <strong>de</strong> evaluación Comentarioa + b + c (a + b) + c Regla <strong>de</strong> izquierda a<strong>de</strong>rechaa + b * c a + (b * c) * mayor que +a OR b OR c (a OR b) OR c Regla <strong>de</strong> izquierda a<strong>de</strong>rechaa AND b OR c AND d (a AND b) OR (c AND d) AND con más prioridadque ORa < b AND c < d (a < b) AND (c < d) < con más prioridad queAND26.8 SintaxisExpresiones ::=| ::= [ NOT ] { ( OR | XOR ) } ::= { AND } ::= [ ] ::= [ ] { } ::= { } ::=| | | | | | | ’(’ ’)’Operadores ::= ’=’ | ’’ ::= ’+’ | ’-’ ::= ’*’ | ’/’ | DIV | MODValores constantes ::= | | 118 Descripción general <strong>de</strong> <strong>RAPID</strong>


ExpresionesDatos ::=| | ::= ::= ’{’ ’}’ ::= { ’,’ } ::= ’.’ ::= ::=| | ::=| | Agregados ::= ’[’ { ’,’ } ’]’Llamadas a funciones ::= ’(’ [ ] ’)’ ::= ::= { } ::=| | ::=’,’ | | ’,’ | | ’,’ ::= [ ’:=’ ] ::= ’\’ [ ’:=’ ] ::= ’\’ ’?’ Descripción general <strong>de</strong> <strong>RAPID</strong> 119


ExpresionesExpresiones especiales ::= ::= ::= Parámetros ::=| | 120 Descripción general <strong>de</strong> <strong>RAPID</strong>


Recuperación en caso <strong>de</strong> error27 Recuperación en caso <strong>de</strong> errorLos errores <strong>de</strong> ejecución son situaciones anormales relacionadas con la ejecución <strong>de</strong>un fragmento <strong>de</strong>terminado <strong>de</strong> un programa. Los errores impi<strong>de</strong>n que la ejecucióncontinúe (o que esta resulte peligrosa). Algunos <strong>de</strong> los errores posibles son el“<strong>de</strong>sbordamiento <strong>de</strong> memoria” y la “división entre cero”. Los errores se i<strong>de</strong>ntifican porun número <strong>de</strong> error exclusivo y son siempre <strong>de</strong>tectados por el sistema. La aparición <strong>de</strong>un error provoca la suspensión <strong>de</strong> la ejecución normal <strong>de</strong>l programa y su control seentrega a un gestor <strong>de</strong> errores. El concepto <strong>de</strong> los gestores <strong>de</strong> errores es que sea posiblerespon<strong>de</strong>r a los errores que se producen durante la ejecución y, si es posible,recuperarse tras el error. Si no es posible continuar con la ejecución, al menos el gestor<strong>de</strong> errores pue<strong>de</strong> hacer que el programa se <strong>de</strong>tenga <strong>de</strong> la forma más correcta posible.27.1 Gestores <strong>de</strong> erroresCualquier rutina pue<strong>de</strong> contener un gestor <strong>de</strong> errores. El gestor <strong>de</strong> errores es en realidadparte <strong>de</strong> la rutina, y el ámbito <strong>de</strong> los datos <strong>de</strong> la rutina incluye también el gestor <strong>de</strong>errores <strong>de</strong> la propia rutina. Si se produce un error durante la ejecución <strong>de</strong> la rutina, elcontrol se transfiere a su gestor <strong>de</strong> errores.Ejemplo:FUNC num safediv( num x, num y)RETURN x / y;ERRORIF ERRNO = ERR_DIVZERO THENTPWrite "El número no pue<strong>de</strong> ser igual a 0";RETURN x;ENDIFENDFUNCLa variable <strong>de</strong> sistema ERRNO contiene el número <strong>de</strong>l error (más reciente) y pue<strong>de</strong>usarse en el gestor <strong>de</strong> errores para i<strong>de</strong>ntificador el error. Después <strong>de</strong> tomar todas lasacciones oportunas, el gestor <strong>de</strong> errores pue<strong>de</strong>:- Reanudar la ejecución, comenzando por la instrucción en la que se produjo elerror. Esto se hace mediante la instrucción RETRY. Si esta instrucción causa <strong>de</strong>nuevo el mismo error, se realizarán un máximo <strong>de</strong> cuatro recuperaciones, traslo cual se <strong>de</strong>tiene la ejecución. Para po<strong>de</strong>r realizar más <strong>de</strong> cuatro reintentos,tiene que configurar el parámetro <strong>de</strong>l sistema No Of Retry. Consulte el <strong>Manual</strong><strong>de</strong> <strong>referencia</strong> técnica - Parámetros <strong>de</strong> sistema.- Reanudar la ejecución, comenzando por la instrucción siguiente a la instrucciónen la que se produjo el error. Esto se hace mediante la instrucción TRYNEXT.- Devolver el control a la rutina <strong>de</strong>s<strong>de</strong> la que se llamó a la rutina actual. Para ellose utiliza la instrucción RETURN. Si la rutina es una función, la instrucciónRETURN <strong>de</strong>be especificar un valor <strong>de</strong> retorno a<strong>de</strong>cuado.- Propagar el error a la rutina <strong>de</strong>s<strong>de</strong> la que se llamó a la rutina actual. Para ello seutiliza la instrucción RAISE.Descripción general <strong>de</strong> <strong>RAPID</strong> 121


Recuperación en caso <strong>de</strong> errorGestor <strong>de</strong> errores <strong>de</strong>l sistemaCuando se produce un error en una rutina que no contiene ningún gestor <strong>de</strong> errores ocuando se alcanza el final <strong>de</strong>l gestor <strong>de</strong> errores (ENDFUNC, ENDPROC oENDTRAP), se llama al gestor <strong>de</strong> errores <strong>de</strong>l sistema. El gestor <strong>de</strong> errores <strong>de</strong>l sistemasólo informa <strong>de</strong>l error y <strong>de</strong>tiene la ejecución.En una ca<strong>de</strong>na <strong>de</strong> llamadas a rutinas, cada una <strong>de</strong> ellas pue<strong>de</strong> tener su propio gestor <strong>de</strong>errores. Si se produce un error en una rutina que tiene gestor <strong>de</strong> errores y el error sepropaga explícitamente mediante la instrucción RAISE, el mismo error se eleva <strong>de</strong>nuevo en el punto <strong>de</strong> la llamada a la rutina (el error se propaga). Cuando se alcanza laparte superior <strong>de</strong> la ca<strong>de</strong>na <strong>de</strong> llamadas (la rutina <strong>de</strong> entrada <strong>de</strong> la tarea) sin que seencuentre ningún gestor <strong>de</strong> errores o cuando se alcanza el final <strong>de</strong> cualquiera <strong>de</strong> losgestores <strong>de</strong> errores pertenecientes a la ca<strong>de</strong>na <strong>de</strong> llamadas, se llama al gestor <strong>de</strong> errores<strong>de</strong>l sistema. El gestor <strong>de</strong> errores <strong>de</strong>l sistema sólo informa <strong>de</strong>l error y <strong>de</strong>tiene laejecución. Dado que las llamadas a las rutinas TRAP sólo pue<strong>de</strong>n hacerse <strong>de</strong>s<strong>de</strong> elsistema (como respuesta a una interrupción), cualquier propagación <strong>de</strong> las rutinasTRAP se realiza al gestor <strong>de</strong> errores <strong>de</strong>l sistema.La recuperación <strong>de</strong> errores no está disponible en el caso <strong>de</strong> las instrucciones <strong>de</strong>l gestor<strong>de</strong> ejecución hacia atrás. Este tipo <strong>de</strong> errores se propagan siempre hacia el gestor <strong>de</strong>errores <strong>de</strong>l sistema.No es posible recuperar la ejecución tras los errores que se producen <strong>de</strong>ntro <strong>de</strong> ungestor <strong>de</strong> errores. Este tipo <strong>de</strong> errores se propagan siempre hacia el gestor <strong>de</strong> errores <strong>de</strong>lsistema.Errores elevados por el programaA<strong>de</strong>más <strong>de</strong> los errores <strong>de</strong>tectados y elevados por el robot, los programas pue<strong>de</strong>n elevarexplícitamente los errores mediante la instrucción RAISE. Esta posibilidad pue<strong>de</strong>usarse para recuperar la ejecución en situaciones complejas. Por ejemplo, pue<strong>de</strong> usarsepara escapar <strong>de</strong> posiciones <strong>de</strong> código anidadas a gran profundidad. Es posible usar losnúmeros <strong>de</strong> error <strong>de</strong>l 1 al 90 junto con la instrucción RAISE. Los errores elevadosexplícitamente <strong>de</strong> esta forma se tratan exactamente igual que los errores elevados porel sistema.El registro <strong>de</strong> eventosLos errores manejados por un gestor <strong>de</strong> errores siguen provocando un aviso en elregistro <strong>de</strong> eventos. Mediante la consulta <strong>de</strong>l registro <strong>de</strong> eventos es posible controlarqué errores se han producido.Si <strong>de</strong>sea que un error se maneje sin escribir ningún aviso en el registro <strong>de</strong> eventos,utilice la instrucción SkipWarn en el gestor <strong>de</strong> errores. Esto pue<strong>de</strong> resultar útil si seutiliza el gestor <strong>de</strong> errores para probar algún hecho (por ejemplo, si existe un archivo<strong>de</strong>terminado) sin <strong>de</strong>jar ninguna huella si la prueba no da un resultado positivo.122 Descripción general <strong>de</strong> <strong>RAPID</strong>


Interrupciones28 InterrupcionesLas interrupciones son eventos <strong>de</strong>finidos por el programa e i<strong>de</strong>ntificados por números<strong>de</strong> interrupción. Las interrupciones se producen siempre que una condición <strong>de</strong>interrupción resulta verda<strong>de</strong>ra. Al contrario que los errores, el punto en el que seproduce una interrupción no está relacionado directamente (sincronizado con) ningunaposición específica <strong>de</strong>l código. La aparición <strong>de</strong> una interrupción provoca la suspensión<strong>de</strong> la ejecución normal <strong>de</strong>l programa y su control se entrega a una rutina TRAP.A pesar <strong>de</strong> que el robot <strong>de</strong>tecta inmediatamente la aparición <strong>de</strong> una interrupción (sóloretrasada por la velocidad <strong>de</strong>l hardware), su respuesta (mediante una llamada a la rutinaTRAP correspondiente) sólo pue<strong>de</strong> tener lugar en posiciones concretas <strong>de</strong>l programa.Se trata <strong>de</strong> las siguientes:- Cuando se entra en la siguiente instrucción- En cualquier momento durante la ejecución <strong>de</strong> una instrucción <strong>de</strong> espera, es<strong>de</strong>cir WaitUntil- En cualquier momento durante la ejecución <strong>de</strong> una instrucción <strong>de</strong> movimiento,es <strong>de</strong>cir MoveLNormalmente, esto tiene como resultado un retardo <strong>de</strong> entre 5 y 120 ms entre la<strong>de</strong>tección <strong>de</strong> la interrupción y la respuesta, en función <strong>de</strong>l tipo <strong>de</strong> movimiento que seesté realizando en el momento <strong>de</strong> la interrupción.La elevación <strong>de</strong> interrupciones pue<strong>de</strong> estar <strong>de</strong>sactivada o activada. Si lasinterrupciones están <strong>de</strong>sactivadas, las interrupciones que se produzcan se almacenanen una cola y no se elevan hasta que se activen <strong>de</strong> nuevo las interrupciones. Recuer<strong>de</strong>que la cola <strong>de</strong> interrupciones pue<strong>de</strong> contener más <strong>de</strong> una interrupción en espera. Lasinterrupciones <strong>de</strong> la cola se elevan en or<strong>de</strong>n FIFO. Las interrupciones siempre están<strong>de</strong>sactivadas durante la ejecución <strong>de</strong> una rutina TRAP.Las interrupciones no se manejan si el programa está en el modo paso a paso o si está<strong>de</strong>tenido. Las interrupciones generadas en estas situaciones no se tratan en absoluto.El número máximo <strong>de</strong> <strong>de</strong>finiciones <strong>de</strong> interrupción en un momento dado está limitadoa 70 por cada tarea <strong>de</strong> programa. El límite total establecido por la CPU <strong>de</strong> E/S es<strong>de</strong> 100 interrupciones.28.1 Manipulación <strong>de</strong> interrupcionesLa <strong>de</strong>finición <strong>de</strong> una interrupción hace que el robot la conozca. En la <strong>de</strong>finición seespecifica la condición <strong>de</strong> la interrupción, a<strong>de</strong>más <strong>de</strong> activar y habilitar la interrupción.Ejemplo:VAR intnum sig1int;.ISignalDI di1, high, sig1int;Es posible <strong>de</strong>sactivar una interrupción que está activada (y viceversa).Durante el periodo en que una interrupción está <strong>de</strong>sactivada, su aparición no se <strong>de</strong>tectay se <strong>de</strong>secha, sin ejecutar ninguna rutina TRAP.Ejemplo: ISleep sig1int; Desactivar .IWatch sig1int;ActivarDescripción general <strong>de</strong> <strong>RAPID</strong> 123


InterrupcionesEs posible <strong>de</strong>shabilitar una interrupción que está habilitada (y viceversa).Durante el periodo en que una interrupción está <strong>de</strong>shabilitada, las interrupcionesgeneradas <strong>de</strong>l tipo especificado se almacenan en una cola y se elevan tan pronto comolas interrupciones se habilitan <strong>de</strong> nuevo.Ejemplo: IDisable sig1int; Deshabilitar.IEnable sig1int;HabilitarLa eliminación <strong>de</strong> una interrupción supone también la eliminación <strong>de</strong> su <strong>de</strong>finición. Noes necesario eliminar explícitamente la <strong>de</strong>finición <strong>de</strong> una interrupción, pero no esposible <strong>de</strong>finir una interrupción para una variable <strong>de</strong> interrupción hasta que se eliminala <strong>de</strong>finición anterior.Ejemplo:IDelete sig1int;28.2 Rutinas TRAPLas rutinas TRAP proporcionan una forma <strong>de</strong> respon<strong>de</strong>r a las interrupciones. Paraconectar una rutina TRAP a una interrupción <strong>de</strong>terminada, se utiliza la instrucciónCONNECT. Cuando se produce una interrupción, el control se transfiereinmediatamente a la rutina TRAP asociada (si la hay). Si se produce una interrupciónque no tiene ninguna rutina TRAP conectada, el evento se trata como un error norecuperable, es <strong>de</strong>cir, que causa la finalización inmediata <strong>de</strong> la ejecución <strong>de</strong>l programa.Ejemplo:VAR intnum empty;VAR intnum full;.PROC main()CONNECT empty WITH etrap; Conectar rutinas TRAPCONNECT full WITH ftrap;ISignalDI di1, high, empty; Definir interrupciones <strong>de</strong> alimentadorISignalDI di3, high, full;.IDelete empty;IDelete full;ENDPROCTRAP etrapopen_valve;RETURN;ENDTRAPTRAP <strong>de</strong>tecllenoclose_valve;RETURN;ENDTRAPRespon<strong>de</strong> a la interrupción “alimentador vacío”Respon<strong>de</strong> a la interrupción “alimentador lleno”Es posible conectar varias interrupciones a una misma rutina TRAP. La variable <strong>de</strong>sistema INTNO contiene el número <strong>de</strong> la interrupción y pue<strong>de</strong> usarse para i<strong>de</strong>ntificaruna interrupción <strong>de</strong>s<strong>de</strong> una rutina TRAP. Una vez tomadas las acciones necesarias, esposible finalizar la rutina TRAP mediante la instrucción RETURN o cuando se alcanzael final (ENDTRAP o ERROR) <strong>de</strong> la rutina TRAP. La ejecución continúa en el puntoen el que se produjo la interrupción.124 Descripción general <strong>de</strong> <strong>RAPID</strong>


UNDO29 UNDOLa rutinas <strong>de</strong> <strong>RAPID</strong> pue<strong>de</strong>n contener un gestor UNDO. El gestor se ejecutaautomáticamente si el PP se mueve hacia el exterior <strong>de</strong> la rutina. Se ha previsto paraeliminar los efectos secundarios que que<strong>de</strong>n <strong>de</strong>spués <strong>de</strong> ejecutar rutinas parcialmente,por ejemplo, al cancelar instrucciones modales (como abrir un archivo). La mayorparte <strong>de</strong>l lenguaje <strong>de</strong> <strong>RAPID</strong> pue<strong>de</strong> utilizarse en un gestor UNDO, pero hay algunaslimitaciones, por ejemplo en las instrucciones <strong>de</strong> movimiento.29.1 Definiciones/terminologíaPara evitar ambigüeda<strong>de</strong>s en el texto que aparece más a<strong>de</strong>lante, enumeramos acontinuación distintas explicaciones <strong>de</strong> los términos relacionados con UNDO.UNDO: La ejecución <strong>de</strong>l código <strong>de</strong> limpieza antes <strong>de</strong> un restablecimiento <strong>de</strong>lprograma.Gestor UNDO: Una parte opcional <strong>de</strong> un procedimiento o función <strong>de</strong> <strong>RAPID</strong> quecontiene el código <strong>de</strong> <strong>RAPID</strong> que se ejecuta en UNDO.Rutina UNDO: Un procedimiento o una función con un gestor UNDO.Ca<strong>de</strong>na <strong>de</strong> llamadas: Todos los procedimientos o funciones asociados actualmenteentre sí a través <strong>de</strong> las ejecuciones <strong>de</strong> rutina y que no han finalizado aún. Se suponeque se empieza en la rutina Main si no se especifica lo contrario.Contexto UNDO: Cuando la rutina actual es parte <strong>de</strong> una ca<strong>de</strong>na <strong>de</strong> llamadas que seinicia en un gestor UNDO.29.2 Cuándo utilizar UNDOUna rutina <strong>de</strong> <strong>RAPID</strong> pue<strong>de</strong> anularse en cualquier punto con sólo situar el puntero <strong>de</strong>programa fuera <strong>de</strong> la rutina. En algunos casos, cuando el programa está ejecutandociertas rutinas sensibles, no es posible anularlas. Es posible utilizar UNDO paraproteger esas rutinas sensibles frente a un restablecimiento inesperado <strong>de</strong>l programa.Con UNDO es posible conseguir que cierto código se ejecute automáticamente si seanula la rutina. Este código <strong>de</strong>be realizar normalmente acciones <strong>de</strong> limpieza, porejemplo cerrar un archivo.29.3 Comportamiento <strong>de</strong>tallado <strong>de</strong> UNDOCuando se activa UNDO, se ejecutan todos los gestores <strong>de</strong> UNDO <strong>de</strong> la ca<strong>de</strong>na <strong>de</strong>llamadas actual. Estos gestores son partes opcionales <strong>de</strong> un procedimiento o unafunción <strong>de</strong> <strong>RAPID</strong> que contiene código <strong>de</strong> <strong>RAPID</strong>. Los gestores UNDO activosDescripción general <strong>de</strong> <strong>RAPID</strong> 125


UNDOactualmente son aquellos que pertenecen a procedimientos o funciones que se haniniciado su ejecución pero no han terminado, es <strong>de</strong>cir, las rutinas <strong>de</strong> la ca<strong>de</strong>na <strong>de</strong>llamadas actual.UNDO se activa cuando el PP se mueve inesperadamente hacia el exterior <strong>de</strong> una rutinaUNDO, por ejemplo si el usuario mueve el PP a Main. UNDO se inicia también si seejecuta una instrucción EXIT, lo que hace que el programa se restablezca o si elprograma se restablece por alguna otra razón, por ejemplo al cambiar ciertaconfiguración o si se elimina el programa o el módulo. Sin embargo, UNDO no seinicia si el programa alcanza el final <strong>de</strong> la rutina o una sentencia return y retorna <strong>de</strong> laforma normal <strong>de</strong>s<strong>de</strong> la rutina.Si hay más <strong>de</strong> una rutina UNDO en la ca<strong>de</strong>na <strong>de</strong> llamadas, los gestores UNDO <strong>de</strong> lasrutinas se procesarán en el mismo or<strong>de</strong>n con el que habrían retornado las distintasrutinas, <strong>de</strong> abajo arriba. El gestor UNDO más cercano al final <strong>de</strong> la ca<strong>de</strong>na <strong>de</strong> llamadasse ejecutará en primer lugar y el más cercano a Main se ejecutará en último lugar.29.4 LimitacionesUn gestor UNDO pue<strong>de</strong> acce<strong>de</strong>r a cualquier variable o símbolo al que se pueda llegar<strong>de</strong>s<strong>de</strong> el cuerpo <strong>de</strong> la rutina normal, incluidas las variables <strong>de</strong>claradas localmente. Sinembargo, el código <strong>de</strong> <strong>RAPID</strong> que se va a ejecutar en contexto UNDO tiene ciertaslimitaciones.El gestor UNDO no <strong>de</strong>be contener STOP, BREAK, RAISE ni RETURN. Si se hace unintento <strong>de</strong> utilizar algunas <strong>de</strong> estas instrucciones en el contexto UNDO, la instrucciónno se tendrá en cuenta y se generara un aviso <strong>de</strong> ELOG.Las instrucciones <strong>de</strong> movimiento, por ejemplo MoveL, tampoco están permitidas en elcontexto UNDO.La ejecución es siempre continua en UNDO. No es posible ejecutar paso a paso.Cuando se inicia UNDO, el modo <strong>de</strong> ejecución cambia automáticamente a continuo.Una vez terminada la sesión <strong>de</strong> UNDO, se restablece el modo <strong>de</strong> ejecución anterior.Si el programa se <strong>de</strong>tiene durante la ejecución <strong>de</strong> un gestor UNDO, el resto <strong>de</strong>l gestorno se ejecutará. Si hay gestores UNDO adicionales aún por ejecutar en la ca<strong>de</strong>na <strong>de</strong>llamadas, tampoco se tendrán en cuenta. Esto dará lugar a un aviso <strong>de</strong> ELOG. A<strong>de</strong>másse <strong>de</strong>tiene <strong>de</strong>bido a un error en tiempo <strong>de</strong> ejecución.El PP no está visible en un gestor UNDO. Cuando se ejecuta UNDO, el PP permaneceen su anterior ubicación, pero se actualiza cuando finalizan los gestores UNDO.Una instrucción EXIT anula al UNDO <strong>de</strong> la misma forma que un error <strong>de</strong> tiempo <strong>de</strong>ejecución o la <strong>de</strong>tención <strong>de</strong>l programa. El resto <strong>de</strong> gestores UNDO no se tienen encuenta y el PP se mueve a Main.126 Descripción general <strong>de</strong> <strong>RAPID</strong>


UNDO29.5 EjemploTabla 5: Una ejecución <strong>de</strong> UNDOEl programa:PROC BTPWrite "Aquí la rutina B";Exit;UNDOTPWrite "Aquí el UNDO <strong>de</strong> la rutina B";ENDPROCLa salida:Aquí MainAquí la rutina AAquí la rutina BAquí el UNDO <strong>de</strong> la rutina BAquí el UNDO <strong>de</strong> MainPROC ATPWrite "Aquí la rutina A";B;ENDPROCPROC mainTPWrite "Aquí Main";A;UNDOTPWrite "Aquí el UNDO <strong>de</strong> Main";ENDPROCDescripción general <strong>de</strong> <strong>RAPID</strong> 127


UNDO128 Descripción general <strong>de</strong> <strong>RAPID</strong>


Ejecución hacia atrás30 Ejecución hacia atrásLos programas pue<strong>de</strong>n ejecutarse hacia atrás, una instrucción cada vez. La ejecuciónhacia atrás está sujeta a las restricciones generales siguientes:- No es posible retroce<strong>de</strong>r paso a paso hasta salir <strong>de</strong> una sentencia IF, FOR,WHILE o TEST.- No es posible retroce<strong>de</strong>r para salir <strong>de</strong> una rutina cuando se alcanza el comienzo<strong>de</strong> la rutina.- Ni las instrucciones <strong>de</strong> parámetros <strong>de</strong> movimiento ni otras instrucciones queafectan al movimiento pue<strong>de</strong>n ejecutarse hacia atrás.Si intenta ejecutar estas instrucciones hacia atrás, una ventana <strong>de</strong> alerta le informará <strong>de</strong>que no es posible.30.1 Gestores <strong>de</strong> ejecución hacia atrásLos procedimientos pue<strong>de</strong>n contener gestores <strong>de</strong> ejecución hacia atrás en los que se<strong>de</strong>fine la ejecución hacia atrás <strong>de</strong> una llamada a un procedimiento.El gestor <strong>de</strong> ejecución hacia atrás es en realidad parte <strong>de</strong>l procedimiento, y el ámbito<strong>de</strong> los datos <strong>de</strong> cualquier rutina también incluye el gestor <strong>de</strong> ejecución hacia atrás <strong>de</strong>lpropio procedimiento.Ejemplo: PROC MoveTo ()MoveL p1,v500,z10,tool1;MoveC p2,p3,v500,z10,tool1;MoveL p4,v500,z10,tool1;BACKWARDMoveL p4,v500,z10,tool1;MoveC p2,p3,v500,z10,tool1;MoveL p1,v500,z10,tool1;ENDPROCCuando se llama al procedimiento durante una ejecución en avance, se produce losiguiente:PROC MoveTo ().. MoveL p1,v500,z10,tool1;MoveTo; MoveC p2,p3,v500,z10,tool1;.. MoveL p4,v500,z10,tool1;BACKWARDMoveL p4,v500,z10,tool1;MoveC p2,p3,v500,z10,tool1;MoveL p1,v500,z10,tool1;ENDPROCDescripción general <strong>de</strong> <strong>RAPID</strong> 129


Ejecución hacia atrásCuando se llama al procedimiento durante una ejecución hacia atrás, se produce losiguiente:PROC MoveTo ().. MoveL p1,v500,z10,tool1;MoveTo;MoveC p2,p3,v500,z10,tool1;.. MoveL p4,v500,z10,tool1;BACKWARDMoveL p4,v500,z10,tool1;MoveC p2,p3,v500,z10,tool1;MoveL p1,v500,z10,tool1;ENDPROCNi las instrucciones <strong>de</strong>l gestor <strong>de</strong> ejecución hacia atrás o ni las <strong>de</strong>l gestor <strong>de</strong> errores <strong>de</strong>una rutina pue<strong>de</strong>n ejecutarse hacia atrás. La ejecución hacia atrás no pue<strong>de</strong> estaranidada, es <strong>de</strong>cir, no es posible ejecutar simultáneamente hacia atrás dos instrucciones<strong>de</strong> una ca<strong>de</strong>na <strong>de</strong> llamadas.No es posible ejecutar hacia atrás los procedimientos que no disponen <strong>de</strong> un gestor <strong>de</strong>ejecución hacia atrás. Los procedimientos cuyos gestores <strong>de</strong> ejecución hacia atrás estánvacíos se ejecutan como “sin operaciones”.30.2 Limitación <strong>de</strong> las instrucciones <strong>de</strong> movimiento <strong>de</strong>l gestor <strong>de</strong> ejecuciónhacia atrásEl tipo y la secuencia <strong>de</strong> instrucciones <strong>de</strong> movimiento <strong>de</strong>l gestor <strong>de</strong> ejecución haciaatrás <strong>de</strong>ben correspon<strong>de</strong>r al espejo <strong>de</strong>l tipo y la secuencia <strong>de</strong> instrucciones <strong>de</strong> laejecución en avance <strong>de</strong> la misma rutina.PROC MoveTo ()MoveL p1,v500,z10,tool1;MoveC p2,p3,v500,z10,tool1;MoveL p4,v500,z10,tool1;BACKWARDMoveL p4,v500,z10,tool1;MoveC p2,p3,v500,z10,tool1;MoveL p1,v500,z10,tool1;ENDPROCPlano espejoRecuer<strong>de</strong> que el or<strong>de</strong>n <strong>de</strong> CirPoint p2 y ToPoint p3 <strong>de</strong> MoveC <strong>de</strong>ben ser iguales.Las instrucciones <strong>de</strong> movimiento afectadas son todas aquellas instrucciones queproduzcan cualquier movimiento en el robot o en los ejes externos, como por ejemploMoveL, SearchC, TriggJ, ArcC, PaintL ...130 Descripción general <strong>de</strong> <strong>RAPID</strong>


Ejecución hacia atrásCualquier método <strong>de</strong> programación que no tenga en cuenta esta limitación en laprogramación <strong>de</strong>l gestor <strong>de</strong> ejecución hacia atrás pue<strong>de</strong> dar lugar a un ejecuciónhacia atrás <strong>de</strong>fectuosa. El movimiento lineal pue<strong>de</strong> dar lugar a un movimientocircular y viceversa en alguna parte <strong>de</strong> la trayectoria <strong>de</strong> ejecución hacia atrás.30.3 Comportamiento <strong>de</strong> la ejecución hacia atrásRutinas MoveC y nostepinCuando se ejecuta paso a paso hacia <strong>de</strong>lante y se pasa por una instrucción MoveC, elrobot se <strong>de</strong>tiene en el punto circular (la instrucción se ejecuta en dos pasos). Sinembargo, cuando se ejecuta paso a paso hacia atrás y se pasa por una instrucciónMoveC, el robot no se <strong>de</strong>tiene en el punto circular (la instrucción se ejecuta en un solopaso).No se permite pasar <strong>de</strong> la ejecución hacia <strong>de</strong>lante a la ejecución hacia atrás cuando elrobot está ejecutando una instrucción MoveC.No se permite pasa <strong>de</strong> la ejecución hacia <strong>de</strong>lante a la ejecución hacia atrás, niviceversa, en una rutina nostepin.Objetivo, tipo <strong>de</strong> movimiento y velocidadCuando se ejecuta paso a paso hacia <strong>de</strong>lante por el código <strong>de</strong>l programa, un puntero <strong>de</strong>programa indica la siguiente instrucción que va a ejecutarse y un puntero <strong>de</strong>movimiento indica la instrucción <strong>de</strong> movimiento que el robot está realizando.Cuando se ejecuta paso a paso hacia atrás por el código <strong>de</strong>l programa, el puntero <strong>de</strong>programa indica la instrucción inmediatamente anterior al puntero <strong>de</strong> movimiento.Cuando el puntero <strong>de</strong> programa indica una instrucción <strong>de</strong> movimiento y el puntero <strong>de</strong>movimiento indica otra, el siguiente movimiento hacia atrás se moverá hasta elobjetivo indicado por el puntero <strong>de</strong> programa, usando el tipo <strong>de</strong> movimiento y lavelocidad indicada por el puntero <strong>de</strong> movimiento.Una excepción en cuanto a la velocidad <strong>de</strong> ejecución hacia atrás es la instrucciónMoveExtJ. Esta instrucción utiliza la velocidad relacionada con el objetivo <strong>de</strong> robottanto para la ejecución hacia <strong>de</strong>lante como para la ejecución hacia atrás.Descripción general <strong>de</strong> <strong>RAPID</strong> 131


Ejecución hacia atrásEjemploEn este ejemplo se ilustra el comportamiento cuando se ejecuta paso a paso hacia atráspor las instrucciones <strong>de</strong> movimiento. El puntero <strong>de</strong> programa y el puntero <strong>de</strong>movimiento le ayudan a controlar dón<strong>de</strong> se encuentra la ejecución <strong>de</strong> <strong>RAPID</strong> y dón<strong>de</strong>está el robot.Tabla 6: Explicaciones sobre la imagen anteriorABCPuntero <strong>de</strong> programaPuntero <strong>de</strong> movimientoSe resalta el objetivo <strong>de</strong> robot hacia el que se mueve el robot o el que ya ha alcanzado.1 El programa se ejecuta paso a paso hacia <strong>de</strong>lante hasta que el robot está en p5. Elpuntero <strong>de</strong> movimiento indicará p5 y el puntero <strong>de</strong> programa indicará la siguienteinstrucción <strong>de</strong> movimiento (MoveL p6).2 La primera vez que se presiona el botón Atrás, el robot no se mueve pero el puntero<strong>de</strong> programa se mueve hasta la instrucción anterior (MoveC p3, p4). Así se indicaque ésta es la instrucción que se ejecuta la próxima vez que se presione Atrás.3 La segunda vez que se presione el botón Atrás, el robot se mueve linealmente hastap4 con la velocidad v300. El objetivo <strong>de</strong> este movimiento (p4) se toma <strong>de</strong> lainstrucción MoveC. El tipo <strong>de</strong> movimiento (lineal) y la velocidad se toman <strong>de</strong> lainstrucción anterior (MoveL p5). El puntero <strong>de</strong> movimiento apunta a p4 y elpuntero <strong>de</strong> programa se mueve hasta MoveL p2.4 La tercera vez que se presiona el botón Atrás, el robot se mueve circularmentehasta p2 pasando por p3 y con la velocidad v100. El objetivo p2 se toma <strong>de</strong> lainstrucción MoveL p2. El tipo <strong>de</strong> movimiento (circular), el punto circular (p3) y lavelocidad se toman <strong>de</strong> la instrucción MoveC. El puntero <strong>de</strong> movimiento apunta ap2 y el puntero <strong>de</strong> programa se mueve hasta MoveL p1.132 Descripción general <strong>de</strong> <strong>RAPID</strong>


Ejecución hacia atrás5 La cuarta vez que se presiona el botón Atrás, el robot se mueve linealmente hastap1 con la velocidad v200. El puntero <strong>de</strong> movimiento apunta a p1 y el puntero <strong>de</strong>programa se mueve hasta MoveJ p0.6 La primera vez que se presiona el botón A<strong>de</strong>lante el robot no se mueve, pero elpuntero <strong>de</strong> programa se mueve hasta la siguiente instrucción (MoveL p2).7 La segunda vez que se presione el botón A<strong>de</strong>lante, el robot se mueve hasta p2 conla velocidad v200.Descripción general <strong>de</strong> <strong>RAPID</strong> 133


Ejecución hacia atrás134 Descripción general <strong>de</strong> <strong>RAPID</strong>


Multitarea31 MultitareaLos eventos <strong>de</strong> una célula <strong>de</strong> robot suelen producirse en paralelo. Entonces, ¿por quélos programas no funcionan en paralelo?<strong>RAPID</strong> en modo multitarea es una forma <strong>de</strong> ejecutar los programas en(seudo)paralelo con la ejecución normal. La ejecución se inicia en el momento <strong>de</strong>larranque y continúa <strong>de</strong> forma in<strong>de</strong>finida, a no ser que se produzcan errores en elprograma. Un programa en paralelo pue<strong>de</strong> situarse en segundo plano o en primer planorespecto <strong>de</strong> otro programa. También pue<strong>de</strong> situarse en el mismo nivel que otroprograma.Para usar esta función, es necesario configurar el robot con una TAREA adicional paracada programa en segundo plano.Es posible ejecutar hasta 10 tareas diferentes en seudoparalelo. Cada tarea se compone<strong>de</strong> un conjunto <strong>de</strong> módulos, <strong>de</strong> forma muy parecida al programa normal. Todos losmódulos se consi<strong>de</strong>ran locales <strong>de</strong>ntro <strong>de</strong> cada tarea.Las variables y constantes se consi<strong>de</strong>ran locales <strong>de</strong>ntro <strong>de</strong> cada tarea, al contrario <strong>de</strong> loque ocurre con las variables persistentes. Las variables persistentes que tienen elmismo nombre y tipo pue<strong>de</strong>n utilizarse en todas las tareas. Si existen dos variablespersistentes con el mismo nombre pero tienen un tipo o un tamaño (un número <strong>de</strong>elementos <strong>de</strong> matriz) diferente, se produce un error <strong>de</strong> tiempo <strong>de</strong> ejecución.Las tareas tienen su propia gestión <strong>de</strong> traps y las rutinas <strong>de</strong> eventos sólo se disparan silo indica el propio sistema <strong>de</strong> tarea (por ejemplo, iniciar, <strong>de</strong>tener, reiniciar....).Existen <strong>de</strong>terminadas restricciones en el uso <strong>de</strong> <strong>RAPID</strong> en multitarea.- No combine programas en paralelo con un PLC. El tiempo <strong>de</strong> respuesta es elmismo que el tiempo <strong>de</strong> respuesta a interrupciones <strong>de</strong> una tarea. Obviamente,esto es cierto cuando la tarea no se encuentra en segundo plano <strong>de</strong> otroprograma ocupado.- Sólo existe una unidad <strong>de</strong> programación, <strong>de</strong> modo que tenga cuidado para quelas peticiones TPWrite no se mezclen en la ventana <strong>de</strong>l usuario <strong>de</strong> otras tareas.- Cuando se ejecuta una instrucción Wait en el modo manual, aparece un cuadro<strong>de</strong> simulación <strong>de</strong>spués <strong>de</strong> 3 segundos. Esto sólo se produce en la tarea principal.- Las instrucciones <strong>de</strong> movimiento sólo pue<strong>de</strong>n ejecutarse en la tarea principal(la tarea enlazada con la instancia 0 <strong>de</strong> programa, consulte el <strong>Manual</strong> <strong>de</strong><strong>referencia</strong> técnica - Parámetros <strong>de</strong>l sistema).- La ejecución <strong>de</strong> una tarea se <strong>de</strong>tiene durante el tiempo en el que otras tareasestán utilizando el sistema <strong>de</strong> archivos, es <strong>de</strong>cir, cuando el usuario <strong>de</strong>ci<strong>de</strong>guardar o abrir un programa o si el programa <strong>de</strong> una tarea utiliza lasinstrucciones load/erase/read/write.- La unidad <strong>de</strong> programación no tiene acceso a tareas distintas <strong>de</strong> la tareaprincipal. Por ello, el <strong>de</strong>sarrollo <strong>de</strong> programas <strong>de</strong> <strong>RAPID</strong> para otras tareas sólose permite si se carga el código en la tarea principal, o bien fuera <strong>de</strong> línea.Para conocer todos los parámetros, consulte el <strong>Manual</strong> <strong>de</strong> <strong>referencia</strong> técnica -Parámetros <strong>de</strong>l sistema.Descripción general <strong>de</strong> <strong>RAPID</strong> 135


Multitarea31.1 Sincronización <strong>de</strong> tareasEn muchas aplicaciones, una tarea en paralelo sólo supervisa alguna unidad <strong>de</strong> célula,<strong>de</strong> una forma bastante in<strong>de</strong>pendiente <strong>de</strong> las <strong>de</strong>más tareas que se están ejecutando. Enestos casos, no se necesita ningún mecanismo <strong>de</strong> sincronización. Sin embargo, existenotras aplicaciones que necesitan saber qué está ocurriendo en la tarea principal, porejemplo.Sincronización mediante consultaEsta forma es la más sencilla, pero la que presenta un peor rendimiento.En este caso, se utilizan variables persistentes con las instrucciones WaitUntil, IF,WHILE o GOTO.Si se utiliza la instrucción WaitUntil, ésta realiza una consulta interna cada 100 ms. Norealice consultas con frecuencias mayores en otras aplicaciones.EjemploTASK 0MODULE module1PERS bool startsync:=FALSE;PROC main()startsync:= TRUE;.ENDPROCENDMODULETASK 1MODULE module2PERS bool startsync:=FALSE;PROC main()WaitUntil startsync;.ENDPROCENDMODULE136 Descripción general <strong>de</strong> <strong>RAPID</strong>


MultitareaSincronización mediante una interrupciónSe utilizan las instrucciones SetDO y ISignalDO.EjemploTASK 0MODULE module1PROC main()SetDO do1,1;.ENDPROCENDMODULETASK 1MODULE module2VAR intnum isiint1;PROC main()CONNECT isiint1 WITH isi_trap;ISignalDO do1, 1, isiint1;WHILE TRUE DOWaitTime 200;ENDWHILEIDelete isiint1;ENDPROCTRAP isi_trap.ENDTRAPENDMODULE31.2 Comunicación entre tareasEs posible utilizar variables persistentes para enviar cualquier tipo <strong>de</strong> datos entre dos(o más) tareas.Las variables persistentes se consi<strong>de</strong>ran globales en todas las tareas. La variablepersistente <strong>de</strong>be ser <strong>de</strong>l mismo tipo y tamaño (las mismas dimensiones <strong>de</strong> matriz) entodas las tareas en las que se <strong>de</strong>clare. De lo contrario, se producirán errores <strong>de</strong> tiempo<strong>de</strong> ejecución.Todas las <strong>de</strong>claraciones <strong>de</strong>ben especificar un valor inicial para la variable persistente,pero sólo se utiliza con el primer módulo cargado con la <strong>de</strong>claración.Descripción general <strong>de</strong> <strong>RAPID</strong> 137


MultitareaEjemploTASK 0MODULE module1PERS bool startsync:=FALSE;PERS string stringtosend:=””;PROC main()stringtosend:=”Esto es una prueba”;startsync:= TRUEENDPROCENDMODULETASK 1MODULE module2PERS bool startsync:=FALSE;PERS string stringtosend:=””;PROC main()WaitUntil startsync;! Leer la ca<strong>de</strong>na <strong>de</strong> caracteresIF stringtosend = “Esto es una prueba” THENENDPROCENDMODULE31.3 Tipo <strong>de</strong> tareaCada tarea adicional (distinta <strong>de</strong> 0) se pone en marcha con la secuencia <strong>de</strong> arranque <strong>de</strong>lsistema. Si la tarea es <strong>de</strong> tipo STATIC, se reiniciará en la posición actual (en la que seencontraba el puntero <strong>de</strong> programa al apagar el sistema). Si, por el contrario, su tipo esSEMISTATIC, se reiniciará <strong>de</strong>s<strong>de</strong> el principio cada vez que se encien<strong>de</strong> el sistema.Las tareas <strong>de</strong> tipo SEMISTATIC también inician la recarga <strong>de</strong> módulos <strong>de</strong> la secuencia<strong>de</strong> arranque, especificados en los parámetros <strong>de</strong> sistema, si el archivo <strong>de</strong>l módulo esmás reciente que el módulo cargado.También es posible utilizar NORMAL como tipo <strong>de</strong> la tarea, en cuyo caso ésta secomportará <strong>de</strong> la misma forma que la tarea 0 (la tarea principal que controla elmovimiento <strong>de</strong>l programa). La unidad <strong>de</strong> programación sólo pue<strong>de</strong> usarse para iniciarla tarea 0, <strong>de</strong> manera que la única forma <strong>de</strong> iniciar otras tareas <strong>de</strong> tipo NORMAL esusar CommunicationWare.138 Descripción general <strong>de</strong> <strong>RAPID</strong>


Multitarea31.4 Priorida<strong>de</strong>sLa forma pre<strong>de</strong>terminada <strong>de</strong> ejecutar las tareas es ejecutar todas ellas en el mismonivel y por turnos (un paso básico en cada instancia). Sin embargo, es posiblecambiar la prioridad <strong>de</strong> una tarea, poniéndola en segundo plano <strong>de</strong> otra. En este caso,la tarea en segundo plano sólo se ejecuta cuando la tarea en primer plano estáesperando <strong>de</strong>terminados eventos o cuando se haya <strong>de</strong>tenido su ejecución (en espera).Los programas <strong>de</strong> robot que contienen instrucciones <strong>de</strong> movimiento están en esperala mayor parte <strong>de</strong>l tiempo.El ejemplo siguiente <strong>de</strong>scribe algunas situaciones en las que el sistema tiene 10 tareas(consulte la Figura 5)Ca<strong>de</strong>na <strong>de</strong> ciclo 1:Ca<strong>de</strong>na <strong>de</strong> ciclo 2:Ca<strong>de</strong>na <strong>de</strong> ciclo 3:Ca<strong>de</strong>na <strong>de</strong> ciclo 4:Tareas 0, 1 y 8 ocupadasTareas 0, 3, 4, 5 y 8 ocupadasTareas 1 y 2 en esperaTareas 2, 4 y 5 ocupadasTareas 0, 1, 8 y 9 en esperaTareas 6 y 7 ocupadasTareas 0, 1, 2, 3, 4, 5, 8 y 9 en esperaDescripción general <strong>de</strong> <strong>RAPID</strong> 139


MultitareaTarea 0Ca<strong>de</strong>na 1Ca<strong>de</strong>na 2Tarea 1Tarea 2Tarea 3Tarea 4Tarea 5Tarea 6Ca<strong>de</strong>na 3Tarea 7Ca<strong>de</strong>na 4Tarea 8Tarea 9Figura 5Las tareas pue<strong>de</strong>n tener priorida<strong>de</strong>s diferentes.31.5 Nivel <strong>de</strong> confianzaEl nivel <strong>de</strong> confianza controla el comportamiento <strong>de</strong>l sistema cuando se <strong>de</strong>tiene unatarea <strong>de</strong> tipo SEMISTATIC o STATIC por algún motivo o cuando no es posibleejecutarla.SysFail: Éste es el comportamiento pre<strong>de</strong>terminado. Todas las <strong>de</strong>más tareas <strong>de</strong> tipoNORMAL (por ejemplo la tarea MAIN) se <strong>de</strong>tienen también y el sistema pasa alestado SYS_FAIL. Se rechazan todas las peticiones <strong>de</strong> movimiento y <strong>de</strong> inicio <strong>de</strong>programas. Sólo un nuevo arranque en caliente permite restablecer el sistema. Esto<strong>de</strong>be utilizarse cuando la tarea tiene <strong>de</strong>terminadas supervisiones <strong>de</strong> seguridad.SysHalt: Todas las tareas <strong>de</strong> tipo NORMAL se <strong>de</strong>tienen (normalmente, sólo la tareaprincipal). El sistema pasa forzosamente al modo “Motores OFF”. Cuando se cambiael sistema al modo “Motores ON”, es posible mover el motor, pero se rechazan losnuevos intentos <strong>de</strong> iniciar el programa. Un nuevo arranque en caliente restablece elsistema.140 Descripción general <strong>de</strong> <strong>RAPID</strong>


MultitareaSysStop: Se <strong>de</strong>tienen todas las tareas <strong>de</strong> tipo NORMAL (por ejemplo la tareaprincipal), pero es posible ponerlas en marcha <strong>de</strong> nuevo. También se permite hacermovimientos.NoSafety: Sólo se <strong>de</strong>tiene la tarea actual.Consulte Parámetros <strong>de</strong>l sistema - Controlador/tarea.31.6 Una consi<strong>de</strong>ración a tener en cuentaCuando especifique priorida<strong>de</strong>s para las tareas, <strong>de</strong>be tener en cuenta lo siguiente:- Utilice siempre el mecanismo <strong>de</strong> interrupción o bucles con retardo en las tareas<strong>de</strong> supervisión. De lo contrario, la unidad <strong>de</strong> programación no tendrá nuncatiempo suficiente para interactuar con el usuario. A<strong>de</strong>más, si la tarea <strong>de</strong>supervisión se ejecuta en primer plano, nunca permitirá la ejecución <strong>de</strong> otrastareas en segundo plano.31.7 Esquema <strong>de</strong> programaciónPrimera vez1. Defina la nueva tarea <strong>de</strong>ntro <strong>de</strong> los parámetros <strong>de</strong>l sistema (controlador/tarea).Cambie el valor <strong>de</strong> type a NORMAL y el valor <strong>de</strong> TrustLevel a NoSafety.2. Especifique todos los módulos que <strong>de</strong>ben cargarse previamente con estanueva tarea, también <strong>de</strong>ntro <strong>de</strong> los parámetros <strong>de</strong>l sistema (controlador/módulos <strong>de</strong> la tarea).3. Cree con el FlexPendant los módulos que <strong>de</strong>ben encontrarse en la tarea (en latarea MAIN) o créelos fuera <strong>de</strong> línea.4. Pruebe y <strong>de</strong>pure los módulos en la tarea MAIN hasta que la funcionalidad seala a<strong>de</strong>cuada. Nota: esto sólo pue<strong>de</strong> hacerse en el modo con motoresactivados.5. Cambie el valor <strong>de</strong> type <strong>de</strong> la tarea a SEMISTATIC (o STATIC).6. Reinicie el sistema.Fase <strong>de</strong> iteraciónEn muchos casos, es suficiente con una iteración acor<strong>de</strong> con los puntos 3 y 5siguientes. Sólo si es necesario probar el programa en la tarea MAIN y ejecutar elcódigo <strong>de</strong> <strong>RAPID</strong> en dos tareas simultáneas, lo cual podría confundir al usuario, <strong>de</strong>benusarse todos los puntos. Nota: Si se utiliza una tarea STATIC, es necesario forzar a latarea a recargar el nuevo módulo cambiado y reiniciarlo <strong>de</strong>s<strong>de</strong> el principio. Si se siguentodos los puntos siguientes, esto ocurrirá automáticamente.Descripción general <strong>de</strong> <strong>RAPID</strong> 141


Multitarea1. Cambie el tipo <strong>de</strong> la tarea a NORMAL para inhibir la tarea. Las tareas <strong>de</strong> tipoNORMAL no se inician al reiniciar el sistema y, si no son una tareaNORMAL, no se ven afectadas por el botón <strong>de</strong> inicio/<strong>de</strong>tención <strong>de</strong>lFlexPendant.2. Reinicie el sistema.3. Cargue los módulos en la tarea MAIN, pruebe, cambie y guar<strong>de</strong> los módulos.Nota: No guar<strong>de</strong> la tarea, pero guar<strong>de</strong> los distintos módulos acor<strong>de</strong> con losparámetros <strong>de</strong>l sistema.4. Devuelva el valor <strong>de</strong> type <strong>de</strong> la tarea a SEMISTATIC (o STATIC).5. Reinicie el sistema.Fase <strong>de</strong> finalización1. Cambie el valor <strong>de</strong> TrustLevel al nivel <strong>de</strong>seado, por ejemplo SysFail.2. Reinicie el sistema.142 Descripción general <strong>de</strong> <strong>RAPID</strong>


Sistemas <strong>de</strong> coor<strong>de</strong>nadas32 Sistemas <strong>de</strong> coor<strong>de</strong>nadas32.1 El punto central <strong>de</strong> la herramienta <strong>de</strong>l robot (TCP)La posición <strong>de</strong>l robot y sus movimientos están relacionados en todo momento con elpunto central <strong>de</strong> la herramienta. Este punto suele <strong>de</strong>finirse como una parte <strong>de</strong>terminada<strong>de</strong> la herramienta, por ejemplo, la boquilla <strong>de</strong> una pistola <strong>de</strong> adhesivo, el centro <strong>de</strong> unapinza o el extremo <strong>de</strong> una herramienta rectificadora.Es posible <strong>de</strong>finir varios TCPs (varias herramientas), pero sólo una está activa en cadamomento. Cuando se registra una posición, la información registrada correspon<strong>de</strong> alTCP. Éste es también el punto que se <strong>de</strong>splaza a lo largo <strong>de</strong> una trayectoria <strong>de</strong>terminaday a una velocidad especificada.Si el robot está sosteniendo un objeto <strong>de</strong> trabajo y trabajando con una herramientaestacionaria, se utiliza un TCP fijo. Si dicha herramienta está activa, la trayectoriaprogramada y la velocidad son las <strong>de</strong>l objeto <strong>de</strong> trabajo. Consulte TCPs estacionariosen la página 150.32.2 Sistemas <strong>de</strong> coor<strong>de</strong>nadas utilizados para <strong>de</strong>terminar la posición <strong>de</strong>l TCPLa posición <strong>de</strong>l (TCP) pue<strong>de</strong> especificarse con distintos sistemas <strong>de</strong> coor<strong>de</strong>nadas parafacilitar la programación y el reajuste <strong>de</strong> los programas.El sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong>finido <strong>de</strong>pen<strong>de</strong> <strong>de</strong> lo que se espera que haga el robot. Sino hay ningún sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong>finido, las posiciones <strong>de</strong>l robot se <strong>de</strong>finen conel sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> la base.Sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> la baseEn una aplicación sencilla, la programación pue<strong>de</strong> realizarse a partir <strong>de</strong>l sistema <strong>de</strong>coor<strong>de</strong>nadas <strong>de</strong> la base, en la que el eje z coinci<strong>de</strong> con el eje 1 <strong>de</strong>l robot (consulte laFigura 6).ZYFigura 6El sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> la base.XDescripción general <strong>de</strong> <strong>RAPID</strong> 143


Sistemas <strong>de</strong> coor<strong>de</strong>nadasEl sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> la base se encuentra en la base <strong>de</strong>l robot:- El origen está situado en la intersección <strong>de</strong>l eje 1 con la superficie <strong>de</strong> montaje<strong>de</strong> la base.- El plano xy coinci<strong>de</strong> con el <strong>de</strong> la superficie <strong>de</strong> montaje <strong>de</strong> la base.- El eje x apunta hacia <strong>de</strong>lante.- El eje y apunta hacia la izquierda (<strong>de</strong>s<strong>de</strong> la perspectiva <strong>de</strong>l robot).- El eje z apunta hacia arriba.Sistema <strong>de</strong> coor<strong>de</strong>nadas mundoSi el robot está montado en el suelo, la programación con el sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong>la base resulta sencillo. Sin embargo, si está montado en posición invertida(suspendido), la programación con el sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> la base resulta másdifícil porque las direcciones <strong>de</strong> los ejes no son las mismas que las direccionesprincipales <strong>de</strong>l espacio <strong>de</strong> trabajo. En estos casos, resulta útil <strong>de</strong>finir un sistema <strong>de</strong>coor<strong>de</strong>nadas mundo. Si no se <strong>de</strong>fine específicamente un sistema <strong>de</strong> coor<strong>de</strong>nadasmundo, éste coinci<strong>de</strong> con el sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> la base.En ocasiones, varios robots trabajan <strong>de</strong>ntro <strong>de</strong> un mismo espacio <strong>de</strong> trabajo <strong>de</strong> uncentro <strong>de</strong> producción. En este caso, se utiliza un mismo sistema <strong>de</strong> coor<strong>de</strong>nadas mundopara que los programas <strong>de</strong> los robots puedan comunicarse unos con otros. Tambiénpue<strong>de</strong> resultar ventajoso utilizar este tipo <strong>de</strong> sistemas si las posiciones parten <strong>de</strong> unpunto fijo <strong>de</strong>l taller. Consulte el ejemplo <strong>de</strong> la Figura 7.Sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> la base <strong>de</strong>l robot 2XZYZYXSistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> la base <strong>de</strong>l robot 1zySistema <strong>de</strong> coor<strong>de</strong>nadas mundoFigura 7Dos robots (uno <strong>de</strong> los cuales está suspendido) con un mismo sistema <strong>de</strong> coor<strong>de</strong>nadasmundo.x144 Descripción general <strong>de</strong> <strong>RAPID</strong>


Sistemas <strong>de</strong> coor<strong>de</strong>nadasSistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong>l usuarioUn mismo robot pue<strong>de</strong> trabajar con distintos útiles o superficies <strong>de</strong> trabajo que pue<strong>de</strong>ntener posiciones y orientaciones diferentes. Es posible <strong>de</strong>finir un sistema <strong>de</strong>coor<strong>de</strong>nadas <strong>de</strong>l usuario para cada útil. Si se almacenan todas las posiciones encoor<strong>de</strong>nadas <strong>de</strong> objetos, <strong>de</strong>ja <strong>de</strong> ser necesario reprogramar el robot si necesita mover ogirar un útil. Al mover o girar el sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong>l usuario en la mismamagnitud que el útil, todas las posiciones programadas siguen al accesorio y no esnecesario modificar la programación.La <strong>de</strong>finición <strong>de</strong>l sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong>l usuario se basa en el sistema <strong>de</strong> coor<strong>de</strong>nadasmundo (consulte la Figura 3).ZSistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong>l usuario 1YXZSistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong>l usuario 2YXZYzXSistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> la baseySistema <strong>de</strong> coor<strong>de</strong>nadas mundoFigura 8Dos sistemas <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> usuario <strong>de</strong>scriben la posición <strong>de</strong> dos útiles diferentes.xSistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> objetoEl sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong>l usuario se utiliza para conseguir distintos sistemas <strong>de</strong>coor<strong>de</strong>nadas para distintos útiles o superficies <strong>de</strong> trabajo. Sin embargo, cada útil pue<strong>de</strong> tenervarios objetos <strong>de</strong> trabajo que <strong>de</strong>ben ser procesados o manipulados por el robot. Por tanto,con frecuencia resulta útil <strong>de</strong>finir un sistema <strong>de</strong> coor<strong>de</strong>nadas para cada objeto con el fin <strong>de</strong>facilitar el ajuste <strong>de</strong>l programa si se mueve el objeto o si es necesario programar en otraposición un objeto nuevo idéntico al anterior. El sistema <strong>de</strong> coor<strong>de</strong>nadas que se refiere a unobjeto se conoce como sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> objeto. Este sistema <strong>de</strong> coor<strong>de</strong>nadastambién resulta muy a<strong>de</strong>cuado durante la programación fuera <strong>de</strong> línea, dado que suele serposible tomar directamente las posiciones <strong>de</strong> un plano <strong>de</strong>l objeto <strong>de</strong> trabajo. El sistema <strong>de</strong>coor<strong>de</strong>nadas <strong>de</strong>l usuario también pue<strong>de</strong> usarse al mover el robot.Descripción general <strong>de</strong> <strong>RAPID</strong> 145


Sistemas <strong>de</strong> coor<strong>de</strong>nadasEl sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> objeto se <strong>de</strong>fine a partir <strong>de</strong>l sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong>lusuario (consulte la Figura 9).zzzSistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> objeto 1Sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong>l usuarioyyxyxxSistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> objeto 2zySistema <strong>de</strong> coor<strong>de</strong>nadas mundoxFigura 9Dos sistemas <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> objeto <strong>de</strong>scriben la posición <strong>de</strong> dos objetos <strong>de</strong> trabajodiferentes situados en el mismo útil.Las posiciones programadas se <strong>de</strong>finen en todo caso <strong>de</strong> forma relativa a un sistema <strong>de</strong>coor<strong>de</strong>nadas <strong>de</strong> objeto. Si se mueve o gira un útil, este cambio pue<strong>de</strong> compensarsemediante el movimiento o el giro <strong>de</strong>l sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong>l usuario. No esnecesario modificar las posiciones programadas ni los sistemas <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong>objetos que se hayan <strong>de</strong>finido. Si se mueve o gira el objeto <strong>de</strong> trabajo, este cambiopue<strong>de</strong> compensarse mediante el movimiento o el giro <strong>de</strong>l sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong>objeto.Si el sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong>l usuario es móvil, es <strong>de</strong>cir, que se utilizan ejes externoscoordinados, el sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> objeto se mueve junto con el sistema <strong>de</strong>coor<strong>de</strong>nadas <strong>de</strong>l usuario. Esto hace posible mover el robot en relación con el objetoaunque se esté manipulando el útil <strong>de</strong> trabajo.Sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> <strong>de</strong>splazamientoEn ocasiones, es necesario realizar una misma trayectoria en varios lugares <strong>de</strong> unmismo objeto. Para evitar tener que reprogramar todas las posiciones cada vez, se<strong>de</strong>fine un sistema <strong>de</strong> coor<strong>de</strong>nadas conocido como el sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong><strong>de</strong>splazamiento. Este sistema <strong>de</strong> coor<strong>de</strong>nadas también pue<strong>de</strong> usarse junto con lasbúsquedas, para compensar las diferencias existentes entre las posiciones <strong>de</strong> lasdistintas piezas.146 Descripción general <strong>de</strong> <strong>RAPID</strong>


Sistemas <strong>de</strong> coor<strong>de</strong>nadasEl sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> <strong>de</strong>splazamiento se <strong>de</strong>fine a partir <strong>de</strong>l sistema <strong>de</strong>coor<strong>de</strong>nadas <strong>de</strong> objeto (consulte la Figura 10).yPosición originalyNueva posiciónxSistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> <strong>de</strong>splazamientoSistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> objetoFigura 10Si está activado el <strong>de</strong>splazamiento <strong>de</strong>l programa, se <strong>de</strong>splazan todas las posiciones.Ejes externos coordinadosxCoordinación <strong>de</strong>l sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong>l usuarioSi se sitúa un objeto <strong>de</strong> trabajo sobre una unidad mecánica externa que se muevemientras el robot está siguiendo la trayectoria <strong>de</strong>finida con el sistema <strong>de</strong> coor<strong>de</strong>nadas<strong>de</strong> objeto, es posible <strong>de</strong>finir un sistema móvil <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong>l usuario. En este caso,la posición y la orientación <strong>de</strong>l sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong>l usuario <strong>de</strong>pen<strong>de</strong>rán <strong>de</strong> larotación <strong>de</strong> los ejes <strong>de</strong> la unidad externos. Por tanto, la trayectoria y la velocidadprogramadas <strong>de</strong>pen<strong>de</strong>rán <strong>de</strong>l objeto <strong>de</strong> trabajo (consulte la Figura 11) y no es necesariotener en cuenta el hecho <strong>de</strong> que el objeto sea movido por la unidad externa.Sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong>l usuariozyxEje 2 Eje 3Eje 1zySistema <strong>de</strong> coor<strong>de</strong>nadas mundoFigura 11Un sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong>l usuario, <strong>de</strong>finido <strong>de</strong> forma que siga los movimientos<strong>de</strong> una unidad mecánica externa con 3 ejes.Descripción general <strong>de</strong> <strong>RAPID</strong> 147x


Sistemas <strong>de</strong> coor<strong>de</strong>nadasCoordinación <strong>de</strong>l sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> la baseTambién es posible <strong>de</strong>finir un sistema móvil <strong>de</strong> coor<strong>de</strong>nadas para la base <strong>de</strong>l robot. Estoresulta interesante en la instalación, por ejemplo si el robot se monta sobre un track oun pórtico. Al igual que el sistema móvil <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong>l usuario, la posición y laorientación <strong>de</strong>l sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> la base <strong>de</strong>pen<strong>de</strong>rán <strong>de</strong> los movimientos <strong>de</strong>la unidad externa. La trayectoria y la velocidad programadas <strong>de</strong>pen<strong>de</strong>rán <strong>de</strong>l sistema<strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> objeto (Figura 12) y no es necesario tener en cuenta el hecho <strong>de</strong> quela base <strong>de</strong>l robot es movida por una unidad externa. Es posible tener <strong>de</strong>finidossimultáneamente un sistema coordinado <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong>l usuario y un sistemacoordinado <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> la base.Sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong>l usuarioSistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong>objetoSistema <strong>de</strong>coor<strong>de</strong>nadas mundoTrackSistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> la baseFigura 12Interpolación <strong>de</strong> coor<strong>de</strong>nadas con un track por el que se mueve el sistema <strong>de</strong>coor<strong>de</strong>nadas <strong>de</strong> la base <strong>de</strong>l robot.Para po<strong>de</strong>r calcular los sistemas <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong>l usuario y <strong>de</strong> la base cuando lasunida<strong>de</strong>s utilizadas están en movimiento, el robot <strong>de</strong>be tener en cuenta lo siguiente:- Las posiciones <strong>de</strong> calibración <strong>de</strong> los sistemas <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong>l usuario y <strong>de</strong>la base- Las relaciones existentes entre los ángulos <strong>de</strong> los ejes externos y la traslación/rotación <strong>de</strong> los sistemas <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong>l usuario y <strong>de</strong> la base.Estas relaciones se <strong>de</strong>finen a través <strong>de</strong> los parámetros <strong>de</strong>l sistema.32.3 Sistemas <strong>de</strong> coor<strong>de</strong>nadas utilizados para <strong>de</strong>terminar la dirección <strong>de</strong> laherramientaLa orientación <strong>de</strong> una herramienta en una posición programada <strong>de</strong>pen<strong>de</strong> <strong>de</strong> laorientación <strong>de</strong>l sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> la herramienta. El sistema <strong>de</strong> coor<strong>de</strong>nadas<strong>de</strong> la herramienta <strong>de</strong>pen<strong>de</strong> <strong>de</strong>l sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> la muñeca, <strong>de</strong>finido en labrida <strong>de</strong> montaje <strong>de</strong> la muñeca <strong>de</strong>l robot.148 Descripción general <strong>de</strong> <strong>RAPID</strong>


Sistemas <strong>de</strong> coor<strong>de</strong>nadasSistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> la muñecaEn una aplicación sencilla, el sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> la muñeca pue<strong>de</strong> usarse para<strong>de</strong>finir la orientación <strong>de</strong> la herramienta. En este caso, el eje z coinci<strong>de</strong> con el eje 6 <strong>de</strong>lrobot (consulte la Figura 13).yFigura 13El sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> la muñeca.xzEl sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> la muñeca no pue<strong>de</strong> cambiarse y es siempre el mismoque el <strong>de</strong> la brida <strong>de</strong> montaje <strong>de</strong>l robot en los aspectos siguientes:- El origen está situado en el centro <strong>de</strong> la brida <strong>de</strong> montaje (en la superficie <strong>de</strong>montaje).- El eje x apunta en el sentido opuesto, hacia el orificio <strong>de</strong> control <strong>de</strong> la brida <strong>de</strong>montaje.- El eje z apunta hacia fuera, en ángulo recto respecto <strong>de</strong> la brida <strong>de</strong> montaje.Sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> la herramientaLa herramienta montada en la brida <strong>de</strong> montaje <strong>de</strong>l robot requiere con frecuencia supropio sistema <strong>de</strong> coor<strong>de</strong>nadas para la <strong>de</strong>finición <strong>de</strong> su TCP, que es el origen <strong>de</strong>lsistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> la herramienta. El sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> la herramientatambién pue<strong>de</strong> usarse para obtener los sentidos <strong>de</strong> movimiento a<strong>de</strong>cuados durante los<strong>de</strong>splazamientos <strong>de</strong>l robot.Si se daña o sustituye una herramienta, lo único que es necesario hacer es re<strong>de</strong>finir elsistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> la herramienta. Normalmente, no es necesario sustituir elprograma.El TCP (origen) se selecciona como el punto <strong>de</strong> la herramienta que <strong>de</strong>be posicionarsecorrectamente, por ejemplo, la boquilla <strong>de</strong> una pistola <strong>de</strong> adhesivo. Los ejes <strong>de</strong>coor<strong>de</strong>nadas <strong>de</strong> la herramienta se <strong>de</strong>finen como los naturales para la herramientacorrespondiente.Descripción general <strong>de</strong> <strong>RAPID</strong> 149


Sistemas <strong>de</strong> coor<strong>de</strong>nadasxArribaxArribazzFigura 14Sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> la herramienta <strong>de</strong>finido habitualmente para una pistola <strong>de</strong>soldadura al arco (izquierda) y una pistola <strong>de</strong> soldadura por puntos (<strong>de</strong>recha).El sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> la herramienta se <strong>de</strong>fine a partir <strong>de</strong>l sistema <strong>de</strong>coor<strong>de</strong>nadas <strong>de</strong> la muñeca (consulte la Figura 15).ySistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> la herramientaxzFigura 15El sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> la herramienta se <strong>de</strong>fine a partir <strong>de</strong>l sistema <strong>de</strong>coor<strong>de</strong>nadas <strong>de</strong> la muñeca. En este caso correspon<strong>de</strong> a una pinza.TCPs estacionariosSi el robot está sosteniendo un objeto <strong>de</strong> trabajo y trabajando con una herramientaestacionaria, se utiliza un TCP fijo. Si dicha herramienta está activa, la trayectoriaprogramada y la velocidad son las <strong>de</strong>l objeto <strong>de</strong> trabajo sostenido por el robot.Esto significa que los sistemas <strong>de</strong> coor<strong>de</strong>nadas se invierten, como en la Figura 16.150 Descripción general <strong>de</strong> <strong>RAPID</strong>


Sistemas <strong>de</strong> coor<strong>de</strong>nadasZSistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> objetoXYZYXSistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> laherramientaZYzXSistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> la baseySistema <strong>de</strong> coor<strong>de</strong>nadas mundoFigura 16Si se utiliza un TCP estacionario, el sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> objeto suele basarseen el sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> la muñeca.En el ejemplo <strong>de</strong> la Figura 16, no se utiliza ni el sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong>l usuario niel <strong>de</strong>splazamiento <strong>de</strong> programa. Sin embargo, es posible utilizarlos y, si se usan,<strong>de</strong>pen<strong>de</strong>rán el uno <strong>de</strong>l otro como se muestra en la Figura 17.xzyzSistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong>objetozzxyxySistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong>l usuarioySistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong><strong>de</strong>splazamientoxSistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> la muñecaxFigura 17El <strong>de</strong>splazamiento <strong>de</strong>l programa también pue<strong>de</strong> usarse con TCPs estacionarios.Descripción general <strong>de</strong> <strong>RAPID</strong> 151


Sistemas <strong>de</strong> coor<strong>de</strong>nadas32.4 Información relacionadaDescrito en:Definición <strong>de</strong>l sistema <strong>de</strong> coor<strong>de</strong>nadas mundo <strong>Manual</strong> <strong>de</strong> <strong>referencia</strong> técnica -Parámetros <strong>de</strong>l sistemaDefinición <strong>de</strong>l sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong>l usuario<strong>Manual</strong> <strong>de</strong>l operador - IRC5 conFlexPendant - Calibración, Tipos <strong>de</strong>datos - wobjdataDefinición <strong>de</strong>l sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong>l objeto <strong>Manual</strong> <strong>de</strong>l operador - IRC5 conFlexPendant - Calibración, Tipos <strong>de</strong>datos - wobjdataDefinición <strong>de</strong>l sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> la herramienta<strong>Manual</strong> <strong>de</strong>l operador - IRC5 conFlexPendant - Calibración, Tipos <strong>de</strong>datos - tooldataDefinición <strong>de</strong>l punto central <strong>de</strong> la herramienta <strong>Manual</strong> <strong>de</strong>l operador - IRC5 conFlexPendant - Calibración, Tipos <strong>de</strong>datos - tooldataDefinición <strong>de</strong> la base <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> <strong>de</strong>splazamiento <strong>Manual</strong> <strong>de</strong>l operador - IRC5 conFlexPendant - Calibración, Resumensobre <strong>RAPID</strong> - Parámetros <strong>de</strong>movimientoMovimiento en sistemas <strong>de</strong> coor<strong>de</strong>nadas distintos <strong>Manual</strong> <strong>de</strong>l operador - IRC5 conFlexPendant - Movimiento152 Descripción general <strong>de</strong> <strong>RAPID</strong>


Posicionamiento durante la ejecución <strong>de</strong>l programa33 Posicionamiento durante la ejecución <strong>de</strong>l programa33.1 Consi<strong>de</strong>raciones generalesDurante la ejecución <strong>de</strong>l programa, las instrucciones <strong>de</strong> posicionamiento <strong>de</strong>l programa<strong>de</strong>l robot controlan todos los movimientos. La tarea principal <strong>de</strong> las instrucciones <strong>de</strong>posicionamiento es ofrecer la información siguiente acerca <strong>de</strong> cómo realizar losmovimientos:- El punto <strong>de</strong> <strong>de</strong>stino <strong>de</strong>l movimiento (<strong>de</strong>finido como la posición <strong>de</strong>l puntocentral <strong>de</strong> la herramienta, la orientación <strong>de</strong> la herramienta, la configuración <strong>de</strong>lrobot y la posición <strong>de</strong> los ejes externos)- El método <strong>de</strong> interpolación utilizado para llegar al punto <strong>de</strong> <strong>de</strong>stino, porejemplo, la interpolación <strong>de</strong> los ejes, la interpolación lineal o la interpolacióncircular.- La velocidad <strong>de</strong> los ejes <strong>de</strong>l robot y <strong>de</strong> los ejes externos- Los datos <strong>de</strong> zona (<strong>de</strong>finen cómo <strong>de</strong>ben atravesar el punto <strong>de</strong> <strong>de</strong>stino tanto elrobot como los ejes externos)- Los sistemas <strong>de</strong> coor<strong>de</strong>nadas (herramienta, usuario y objeto) utilizados para elmovimiento.Como alternativa para la <strong>de</strong>finición <strong>de</strong> la velocidad <strong>de</strong>l robot y <strong>de</strong> los ejes externos, esposible programar el tiempo <strong>de</strong>l movimiento. Sin embargo, <strong>de</strong>be evitarlo si utiliza lafunción <strong>de</strong> oscilación. En su lugar, <strong>de</strong>be utilizar las velocida<strong>de</strong>s <strong>de</strong> los ejes <strong>de</strong>orientación y los ejes externos para limitar la velocidad cuando se hacen movimientospequeños <strong>de</strong>l TCP o éste no se mueve.En aplicaciones <strong>de</strong> manipulación <strong>de</strong> materiales y palés con movimientosintensivos y frecuentes, la supervisión <strong>de</strong>l sistema <strong>de</strong> accionamiento pue<strong>de</strong> saltary <strong>de</strong>tener el robot para impedir el sobrecalentamiento <strong>de</strong> las unida<strong>de</strong>s <strong>de</strong>accionamiento o los motores. Si esto se produce, es necesario aumentarligeramente el tiempo <strong>de</strong> ciclo mediante la reducción <strong>de</strong> la velocidad o laaceleración programadas.33.2 Interpolación <strong>de</strong> la posición y la orientación <strong>de</strong> la herramientaInterpolación <strong>de</strong> ejesSi la exactitud <strong>de</strong> la trayectoria no es primordial, este tipo <strong>de</strong> movimiento se utiliza paramover rápidamente la herramienta <strong>de</strong> una posición a otra. La interpolación <strong>de</strong> ejestambién permite el movimiento <strong>de</strong> un eje <strong>de</strong>s<strong>de</strong> cualquier posición hasta otra <strong>de</strong>ntro <strong>de</strong>su mismo espacio <strong>de</strong> trabajo con un solo movimiento.Todos los ejes se mueven <strong>de</strong>s<strong>de</strong> el punto <strong>de</strong> partida hasta el punto <strong>de</strong> <strong>de</strong>stino con unavelocidad constante <strong>de</strong> los ejes (consulte la Figura 18).Descripción general <strong>de</strong> <strong>RAPID</strong> 153


Posicionamiento durante la ejecución <strong>de</strong>l programaPunto <strong>de</strong> inicioTrayectoria <strong>de</strong> ejesinterpoladaPunto <strong>de</strong> <strong>de</strong>stinoFigura 18La interpolación suele ser la forma más rápida <strong>de</strong> trasladarse <strong>de</strong> un punto a otro,<strong>de</strong>bido a que los ejes <strong>de</strong>l robot siguen la trayectoria más próxima entre el punto <strong>de</strong>inicio y el punto <strong>de</strong> <strong>de</strong>stino (<strong>de</strong>s<strong>de</strong> la perspectiva <strong>de</strong> los ángulos <strong>de</strong> los ejes).La velocidad <strong>de</strong>l punto central <strong>de</strong> la herramienta se expresa en mm/seg (en el sistema<strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> objeto). Dado que la interpolación se realiza eje por eje, la velocidadno será exactamente el valor programado.Durante la interpolación, se <strong>de</strong>termina la velocidad <strong>de</strong>l eje <strong>de</strong>limitador, es <strong>de</strong>cir, el ejeque se <strong>de</strong>splaza con mayor rapi<strong>de</strong>z respecto <strong>de</strong> su velocidad máxima para conseguir elmovimiento. A continuación, se calculan las velocida<strong>de</strong>s <strong>de</strong> los <strong>de</strong>más ejes <strong>de</strong> formaque todos ellos alcancen el punto <strong>de</strong> <strong>de</strong>stino al mismo tiempo.Todos los ejes están coordinados, con el fin <strong>de</strong> conseguir una trayectoria in<strong>de</strong>pendiente<strong>de</strong> la velocidad. La aceleración se optimiza automáticamente para conseguir el máximorendimiento <strong>de</strong>l robot.Interpolación linealDurante la interpolación lineal el TCP se <strong>de</strong>splaza a lo largo <strong>de</strong> una línea recta entre lospuntos <strong>de</strong> inicio y <strong>de</strong>stino (consulte la Figura 19).ePunto <strong>de</strong> inicioFigura 19Interpolación lineal sin reorientar la herramienta.Para obtener una trayectoria en el sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> objeto, los ejes <strong>de</strong>l robot<strong>de</strong>ben seguir una trayectoria no lineal en el espacio <strong>de</strong>l eje. Cuanto menos lineal es laconfiguración <strong>de</strong>l robot, mayores son las aceleraciones y <strong>de</strong>celeraciones que serequieren para hacer que la herramienta se mueva en una línea recta y consiga laorientación <strong>de</strong>seada para la herramienta. Si la configuración es extremadamente nolineal (por ejemplo, cerca <strong>de</strong> singularida<strong>de</strong>s <strong>de</strong> la muñeca y <strong>de</strong>l brazo), uno o varios <strong>de</strong>los ejes requerirán más par <strong>de</strong>l que pue<strong>de</strong>n generar los motores. En este caso, se reduceautomáticamente la velocidad <strong>de</strong> todos los ejes.154 Descripción general <strong>de</strong> <strong>RAPID</strong>


Posicionamiento durante la ejecución <strong>de</strong>l programaLa orientación <strong>de</strong> la herramienta permanece constante durante todo el movimiento, a noser que se haya programado una reorientación. Si se reorienta la herramienta, ésta gira auna velocidad constante.Es posible especificar una velocidad máxima <strong>de</strong> rotación (en grados por segundo)durante la rotación <strong>de</strong> la herramienta. Si se utiliza en este caso un valor bajo, lareorientación resultará suave, in<strong>de</strong>pendientemente <strong>de</strong> la velocidad <strong>de</strong>finida para el puntocentral <strong>de</strong> la herramienta. Si se utiliza un valor elevado, la velocidad <strong>de</strong> reorientación sóloestá limitada por las velocida<strong>de</strong>s máximas <strong>de</strong> los motores. Siempre y cuando ninguno <strong>de</strong>los motores supere el límite <strong>de</strong> par, se mantiene la velocidad <strong>de</strong>finida. Por otro lado, siuno <strong>de</strong> los motores supera el límite actual, se reduce la velocidad <strong>de</strong> todo el movimiento(tanto respecto <strong>de</strong> la posición como respecto <strong>de</strong> la orientación).Todos los ejes están coordinados, con el fin <strong>de</strong> conseguir una trayectoria in<strong>de</strong>pendiente<strong>de</strong> la velocidad. La aceleración se optimiza automáticamente.Interpolación circularLas trayectorias circulares se <strong>de</strong>finen mediante tres posiciones programadas que<strong>de</strong>finen un segmento <strong>de</strong> círculo. El primer punto que <strong>de</strong>be programarse es el inicio <strong>de</strong>lsegmento <strong>de</strong> círculo. El punto siguiente es un punto <strong>de</strong> apoyo (un punto <strong>de</strong> círculo)utilizado para <strong>de</strong>finir la curvatura <strong>de</strong>l círculo. El tercer punto indica el final <strong>de</strong>l círculo(consulte la Figura 20).Los tres puntos programados <strong>de</strong>ben estar repartidos en intervalos regulares a lo largo<strong>de</strong>l arco <strong>de</strong>l círculo, para conseguir que éste sea lo más exacto posible.La orientación <strong>de</strong>finida para el punto <strong>de</strong> apoyo se utiliza para elegir entre un giro cortoy largo para la orientación, <strong>de</strong>s<strong>de</strong> el punto <strong>de</strong> inicio hasta el punto <strong>de</strong> <strong>de</strong>stino.Si la orientación programada es la misma respecto <strong>de</strong>l círculo en los puntos <strong>de</strong> inicioy <strong>de</strong> <strong>de</strong>stino y la orientación <strong>de</strong>l punto <strong>de</strong> apoyo se acerca a la misma orientaciónrespecto <strong>de</strong>l círculo, la orientación <strong>de</strong> la herramienta permanece constante respecto <strong>de</strong>la trayectoria.Punto <strong>de</strong> círculoPunto <strong>de</strong> <strong>de</strong>stinoPunto <strong>de</strong> inicioFigura 20Interpolación circular con un breve giro para parte <strong>de</strong> un círculo (segmento <strong>de</strong>círculo), con un punto <strong>de</strong> inicio, un punto <strong>de</strong> círculo y un punto <strong>de</strong> <strong>de</strong>stino.Sin embargo, si se programa para el punto <strong>de</strong> apoyo una orientación más cercana a laorientación girada 180º, se selecciona el giro alternativo (consulte la Figura 21).Descripción general <strong>de</strong> <strong>RAPID</strong> 155


Posicionamiento durante la ejecución <strong>de</strong>l programaPunto <strong>de</strong> círculoPunto <strong>de</strong> inicioPunto <strong>de</strong> <strong>de</strong>stinoFigura 21La interpolación circular con un giro largo para la orientación se consigue <strong>de</strong>finiendola orientación en el punto <strong>de</strong> círculo en el sentido opuesto respecto <strong>de</strong>l punto <strong>de</strong> inicio.Siempre y cuando los pares <strong>de</strong> los motores no sobrepasen los valores permitidos, laherramienta se mueve a la velocidad programada a lo largo <strong>de</strong>l arco <strong>de</strong>l círculo. Si elpar <strong>de</strong> cualquiera <strong>de</strong> los motores es insuficiente, la velocidad se reduceautomáticamente en las partes <strong>de</strong> la trayectoria circular en las que el rendimiento <strong>de</strong>lmotor no es suficiente.Todos los ejes están coordinados, con el fin <strong>de</strong> conseguir una trayectoria in<strong>de</strong>pendiente<strong>de</strong> la velocidad. La aceleración se optimiza automáticamente.SingArea\WristDurante la ejecución en las proximida<strong>de</strong>s <strong>de</strong> un punto singular, la interpolación linealo circular pue<strong>de</strong>n ser problemáticas. En este caso, la mejor opción es utilizar lainterpolación modificada, lo que significa que los ejes <strong>de</strong> la muñeca se interpolan ejepor eje, con el TCP siguiendo una trayectoria lineal o circular. Sin embargo, laorientación <strong>de</strong> la herramienta será algo diferente <strong>de</strong> la orientación programada. Laorientación resultante en el punto programado también pue<strong>de</strong> ser distinta <strong>de</strong> laorientación programada, <strong>de</strong>bido a dos singularida<strong>de</strong>s (consulte la informaciónsiguiente).z1a2moverTCPABBWCPLa primera singularidad se produce cuando el TCP está justo <strong>de</strong>lante en línea recta <strong>de</strong>leje 2 (a2 en la figura anterior). El TCP no pue<strong>de</strong> pasar al otro lado <strong>de</strong>l eje 2. En su lugar,los ejes 2 y 3 se doblan un poco más para mantener el TCP en el mismo lado y en laorientación final <strong>de</strong>l movimiento. A continuación, se alejan <strong>de</strong> la orientaciónprogramada con el mismo tamaño.156 Descripción general <strong>de</strong> <strong>RAPID</strong>


Posicionamiento durante la ejecución <strong>de</strong>l programaLa segunda singularidad se produce cuando se prevé que el TCP pase cerca <strong>de</strong>l eje z<strong>de</strong>l eje 1 (z1 en la figura anterior). En este caso, el eje 1 se da la vuelta a la máximavelocidad y la reorientación <strong>de</strong> la herramienta se realiza a continuación <strong>de</strong> la mismaforma. El sentido <strong>de</strong> giro <strong>de</strong>pen<strong>de</strong> <strong>de</strong> hacia qué lado se dirige el TCP. Se recomiendacambiar a la interpolación <strong>de</strong> ejes (MoveJ) cerca <strong>de</strong>l eje z. Recuer<strong>de</strong> que el elementoque causa la singularidad es el TCP, no el WCP como cuando se usan los parámetrosSingArea\Off.En el caso <strong>de</strong> SingArea\Wrist, la orientación en el punto <strong>de</strong> apoyo <strong>de</strong>l círculo será lamisma que la programada. Sin embargo, la herramienta no tendrá una direcciónconstante respecto <strong>de</strong>l plano <strong>de</strong> círculo como en el caso <strong>de</strong> la interpolación circularnormal. Si la trayectoria circular atraviesa una singularidad, la orientación <strong>de</strong> lasposiciones programadas requiere en ocasiones una modificación para evitar losgran<strong>de</strong>s movimientos <strong>de</strong> la muñeca que pue<strong>de</strong>n producirse si se genera unareconfiguración total <strong>de</strong> la muñeca cuando se ejecuta el círculo (los ejes 4 y 6 semueven 180 grados cada uno).33.3 Interpolación <strong>de</strong> trayectorias <strong>de</strong> esquinaEl punto <strong>de</strong> <strong>de</strong>stino se <strong>de</strong>fine como un punto <strong>de</strong> paro para conseguir el movimiento <strong>de</strong>un punto a otro. Esto significa que el robot y todos los ejes externos se <strong>de</strong>tienen y queno será posible continuar con el posicionamiento hasta que las velocida<strong>de</strong>s <strong>de</strong> todos losejes sean cero y los ejes estén cerca <strong>de</strong> sus <strong>de</strong>stinos.Se utilizan puntos <strong>de</strong> paso para conseguir un movimiento continuo más allá <strong>de</strong> lasposiciones programadas. De esta forma, es posible atravesar las posiciones a alta velocidadsin necesidad <strong>de</strong> reducir innecesariamente la velocidad. Los puntos <strong>de</strong> paso generan unatrayectoria <strong>de</strong> esquina (trayectoria <strong>de</strong> parábola) más allá <strong>de</strong> la posición programada, lo quesuele implicar que la posición programada nunca se alcanza realmente. El inicio y el final<strong>de</strong> esta trayectoria <strong>de</strong> esquina se <strong>de</strong>finen mediante una zona alre<strong>de</strong>dor <strong>de</strong> la posiciónprogramada (consulte la Figura 22).La zona para latrayectoria <strong>de</strong>l TCPPosiciónprogramadaTrayectoria <strong>de</strong>esquinaFigura 22Los puntos <strong>de</strong> paso generan una trayectoria <strong>de</strong> esquina para pasar la posiciónprogramada.Todos los ejes están coordinados, con el fin <strong>de</strong> conseguir una trayectoria in<strong>de</strong>pendiente<strong>de</strong> la velocidad. La aceleración se optimiza automáticamente.Descripción general <strong>de</strong> <strong>RAPID</strong> 157


Posicionamiento durante la ejecución <strong>de</strong>l programaInterpolación <strong>de</strong> ejes en trayectorias <strong>de</strong> esquinaEl tamaño <strong>de</strong> las trayectorias <strong>de</strong> esquina (zonas) <strong>de</strong>l movimiento <strong>de</strong>l TCP se expresanen mm (consulte la Figura 23). Dado que la interpolación se realiza eje por eje, eltamaño <strong>de</strong> las zonas (en mm) <strong>de</strong>be recalcularse en ángulos <strong>de</strong> eje (radianes). Estecálculo tiene un factor <strong>de</strong> error (normalmente un 10% como máximo), lo que significaque la zona real se <strong>de</strong>sviará hasta cierto punto <strong>de</strong> la programada.Si se han programado distintas velocida<strong>de</strong>s antes o <strong>de</strong>spués <strong>de</strong> la posición, la transición<strong>de</strong> una velocidad a otra será suave y se realizará <strong>de</strong>ntro <strong>de</strong> la trayectoria <strong>de</strong> esquina sinafectar a la trayectoria real.Punto <strong>de</strong> pasoprogramadoZonePunto <strong>de</strong> inicioVelocidad <strong>de</strong>l TCPTrayectoria <strong>de</strong> esquinaFigura 23Durante la interpolación <strong>de</strong> ejes, se genera una trayectoria <strong>de</strong> esquina para atravesarun punto <strong>de</strong> paso.Interpolación lineal <strong>de</strong> una posición en trayectorias <strong>de</strong> esquinaEl tamaño <strong>de</strong> las trayectorias <strong>de</strong> esquina (zonas) <strong>de</strong>l movimiento <strong>de</strong>l TCP se expresanen mm (consulte la Figura 24).Posición <strong>de</strong> esquinaprogramadaZonePunto <strong>de</strong> inicioTrayectoria <strong>de</strong> esquinaFigura 24Durante la interpolación lineal, se genera una trayectoria <strong>de</strong> esquina para atravesarun punto <strong>de</strong> paso.158 Descripción general <strong>de</strong> <strong>RAPID</strong>


Posicionamiento durante la ejecución <strong>de</strong>l programaSi se han programado velocida<strong>de</strong>s distintas antes o <strong>de</strong>spués <strong>de</strong> la posición <strong>de</strong> la esquina,la transición será suave y se realiza <strong>de</strong>ntro <strong>de</strong> la trayectoria <strong>de</strong> la esquina sin afectar ala trayectoria real.Si la herramienta <strong>de</strong>be realizar un proceso (como soldar por arco, aplicar adhesivo ocortar con agua) a lo largo <strong>de</strong> la trayectoria <strong>de</strong> esquina, es posible ajustar el tamaño <strong>de</strong>la zona para conseguir la trayectoria <strong>de</strong>seada. Si la forma <strong>de</strong> la trayectoria parabólica<strong>de</strong> esquina no se correspon<strong>de</strong> con la geometría <strong>de</strong>l objeto, es posible situar lasposiciones programadas más cerca unas <strong>de</strong> otras, lo que permite aproximarse a latrayectoria <strong>de</strong>seada mediante dos o más trayectorias parabólicas más pequeñas.Interpolación lineal <strong>de</strong> la orientación en trayectorias <strong>de</strong> esquinaEs posible <strong>de</strong>finir zonas para las orientaciones <strong>de</strong> las herramientas, <strong>de</strong>l mismo modoque es posible <strong>de</strong>finir zonas para las posiciones <strong>de</strong> las herramientas. La zona <strong>de</strong>orientación suele <strong>de</strong>finirse con un tamaño mayor que la zona <strong>de</strong> posición. En este caso,la reorientación empezará la interpolación hacia la orientación <strong>de</strong> la siguiente posiciónantes <strong>de</strong> que comience la trayectoria <strong>de</strong> la esquina. En este caso, la reorientación serámás suave y lo más probable es que no sea necesario reducir la velocidad para realizarla reorientación.La herramienta se reorienta <strong>de</strong> forma que la orientación al final <strong>de</strong> la zona sea la mismaque si se hubiera programado un punto <strong>de</strong> paro (consulte la Figura25a-c).Figura25aForma <strong>de</strong> programar tres posiciones con diferentes orientaciones <strong>de</strong> herramienta.Figura25bSi todas las posiciones fueran puntos <strong>de</strong> paro, la ejecución <strong>de</strong>l programa tendría elaspecto siguiente.Tamaño <strong>de</strong> la zona <strong>de</strong> operacionesFigura25cSi el punto intermedio fuera un punto <strong>de</strong> paso, la ejecución <strong>de</strong>l programa tendría elaspecto siguiente.La zona <strong>de</strong> orientación <strong>de</strong>l movimiento <strong>de</strong> la herramienta suele expresarse en mm. Deesta forma, es posible <strong>de</strong>terminar directamente en qué parte <strong>de</strong> la trayectoria comienzay termina la zona <strong>de</strong> orientación. Si la herramienta no se mueve, el tamaño <strong>de</strong> la zonase expresa con grados <strong>de</strong> ángulo <strong>de</strong> rotación en lugar <strong>de</strong> mm <strong>de</strong>l TCP.Si se programan distintas velocida<strong>de</strong>s <strong>de</strong> reorientación antes y <strong>de</strong>spués <strong>de</strong>l punto <strong>de</strong>paso y si las velocida<strong>de</strong>s <strong>de</strong> reorientación limitan el movimiento, la transición <strong>de</strong> unavelocidad a otra se realizará suavemente <strong>de</strong>ntro <strong>de</strong> la trayectoria <strong>de</strong> esquina.Descripción general <strong>de</strong> <strong>RAPID</strong> 159


Posicionamiento durante la ejecución <strong>de</strong>l programaInterpolación <strong>de</strong> ejes externos en trayectorias <strong>de</strong> esquinaTambién es posible <strong>de</strong>finir zonas para los ejes externos, <strong>de</strong> la misma forma que para laorientación. Si la zona <strong>de</strong>l eje externo <strong>de</strong>finida es más gran<strong>de</strong> que la zona <strong>de</strong>l TCP, lainterpolación <strong>de</strong> los ejes externos hacia el <strong>de</strong>stino <strong>de</strong> la siguiente posición programadacomenzará antes <strong>de</strong> que comience la trayectoria <strong>de</strong> la esquina <strong>de</strong>l TCP. Esto pue<strong>de</strong>usarse para suavizar los movimientos <strong>de</strong> los ejes externos, <strong>de</strong>l mismo modo que la zona<strong>de</strong> orientación se utiliza para suavizar los movimientos <strong>de</strong> la muñeca.Trayectorias <strong>de</strong> esquina al cambiar <strong>de</strong> método <strong>de</strong> interpolaciónLas trayectorias <strong>de</strong> esquina también se generan cuando se sustituye un método <strong>de</strong>interpolación por otro. El método <strong>de</strong> interpolación utilizado en las trayectorias <strong>de</strong>esquina reales se elige <strong>de</strong> tal forma que la transición <strong>de</strong> un método a otro sea lo mássuave posible. Si las zonas <strong>de</strong> orientación y posición <strong>de</strong> la trayectoria <strong>de</strong> esquina no son<strong>de</strong>l mismo tamaño, es posible utilizar más <strong>de</strong> un método <strong>de</strong> interpolación en latrayectoria <strong>de</strong> esquina (consulte la Figura 26).p1Interpolación linealInterpolaciónSing Area\WristInterpolación <strong>de</strong> ejesp4p2p3Interpolación SingArea\WristZona <strong>de</strong> posiciónZona <strong>de</strong> orientaciónFigura 26Interpolación al cambiar <strong>de</strong> un método <strong>de</strong> interpolación a otro. La interpolación se haprogramado entre p1 y p2; interpolación <strong>de</strong> ejes entre p2 y p3; e interpolación <strong>de</strong>área singular y muñeca entre p3 y p4.Si se cambia la interpolación <strong>de</strong> un movimiento normal <strong>de</strong> TCP a una reorientación sinmovimiento <strong>de</strong> TCP o viceversa, no se genera ninguna zona <strong>de</strong> esquina. Lo mismo seproduce si se cambia la interpolación a o <strong>de</strong> un movimiento <strong>de</strong> ejes externos sinmovimiento <strong>de</strong> TCP.Interpolación al cambiar <strong>de</strong> sistema <strong>de</strong> coor<strong>de</strong>nadasCuando se produce un cambio <strong>de</strong> sistema <strong>de</strong> coor<strong>de</strong>nadas en una trayectoria <strong>de</strong> esquina,por ejemplo, con un nuevo TCP o un nuevo objeto <strong>de</strong> trabajo, se utiliza la interpolación<strong>de</strong> la trayectoria <strong>de</strong> esquina. Esto también se aplica al cambiar <strong>de</strong> una operacióncoordinada a una operación no coordinada y viceversa.160 Descripción general <strong>de</strong> <strong>RAPID</strong>


Posicionamiento durante la ejecución <strong>de</strong>l programaTrayectorias <strong>de</strong> esquina con zonas superpuestasSi las posiciones programadas se encuentran muy cerca la una <strong>de</strong> la otra, no es inusualque las zonas programadas se solapen. Para obtener una trayectoria bien <strong>de</strong>finida ypara conseguir la velocidad óptima en todo momento, el robot reduce el tamaño <strong>de</strong> lazona a la mitad <strong>de</strong> la distancia existente <strong>de</strong> una posición solapada a otra (consulte laFigura 27). El mismo radio <strong>de</strong> zona se utiliza siempre para las entradas y salidas <strong>de</strong>s<strong>de</strong>una posición programada, con el fin <strong>de</strong> obtener trayectorias <strong>de</strong> esquina simétricas.Trayectoriageneradap4p2p1Zonas <strong>de</strong> posiciónprogramadasp3Zonas <strong>de</strong> esquinacalculadas por el robotFigura 27Interpolación con zonas <strong>de</strong> posición superpuestas. Las zonas alre<strong>de</strong>dor <strong>de</strong> p2 y p3 sonmás gran<strong>de</strong>s que la mitad <strong>de</strong> la diferencia existente entre p2 y p3. Por tanto, el robotreduce el tamaño <strong>de</strong> las zonas para que sean iguales a la mitad <strong>de</strong> la distanciaexistente <strong>de</strong> p2 a p3, generando con ello trayectorias <strong>de</strong> esquina simétricas <strong>de</strong>ntro <strong>de</strong>las zonas.Tanto la posición como la orientación <strong>de</strong> las zonas <strong>de</strong> las trayectorias <strong>de</strong> esquinapue<strong>de</strong>n quedar superpuestas. Tan pronto como una <strong>de</strong> estas zonas <strong>de</strong> trayectoria sesuperpone, la zona se reduce (consulte la Figura 28).Zona <strong>de</strong> orientaciónprogramadaZona <strong>de</strong> orientacióngeneradap2Trayectoriageneradap4p1Zonas <strong>de</strong> posiciónp3Zona <strong>de</strong> orientaciónFigura 28Interpolación con zonas <strong>de</strong> orientación superpuestas. La zona <strong>de</strong> orientación <strong>de</strong> p2 esmayor que la mitad <strong>de</strong> la distancia existente entre p2 y p3 y por tanto se reduce a lamitad <strong>de</strong> la distancia existente entre p2 y p3. Las zonas <strong>de</strong> posición no se superponeny por tanto no se reducen. La zona <strong>de</strong> orientación <strong>de</strong> p3 no se reduce tampoco.Descripción general <strong>de</strong> <strong>RAPID</strong> 161


Posicionamiento durante la ejecución <strong>de</strong>l programaPlanificación <strong>de</strong> tiempo para los puntos <strong>de</strong> pasoOcasionalmente, si el siguiente movimiento no está planificado en el tiempo, los puntos<strong>de</strong> paso programados pue<strong>de</strong>n dar lugar a un punto <strong>de</strong> paro. Esto pue<strong>de</strong> ocurrir en lassituaciones siguientes:- Cuando se programa un conjunto <strong>de</strong> instrucciones lógicas con tiempos <strong>de</strong>ejecución largos entre dos movimientos cortos.- Cuando los puntos están muy cercanos entre sí y se trabaja a velocida<strong>de</strong>selevadas.Si los puntos <strong>de</strong> paro son un problema, utilice la ejecución simultánea <strong>de</strong> programas.33.4 Ejes in<strong>de</strong>pendientesLos ejes in<strong>de</strong>pendientes son ejes que se mueven in<strong>de</strong>pendientemente <strong>de</strong> los <strong>de</strong>más ejes<strong>de</strong>l sistema <strong>de</strong> robot. Es posible cambiar un eje al modo in<strong>de</strong>pendiente y <strong>de</strong>volver mástar<strong>de</strong> al modo normal.Un conjunto especial <strong>de</strong> instrucciones se encarga <strong>de</strong> los ejes in<strong>de</strong>pendientes. Cuatroinstrucciones <strong>de</strong> movimiento diferentes especifican el movimiento <strong>de</strong>l eje. Porejemplo, la instrucción IndCMove pone en marcha el eje para un movimiento continuo.A partir <strong>de</strong> ese momento, el eje se mantiene en movimiento a una velocidad constante(in<strong>de</strong>pendientemente <strong>de</strong> lo que haga el robot) hasta que se ejecuta una nuevainstrucción <strong>de</strong> eje in<strong>de</strong>pendiente.Para volver al modo normal se utiliza una instrucción <strong>de</strong> restablecimiento, IndReset.Esta instrucción <strong>de</strong> restablecimiento también pue<strong>de</strong> establecer una nueva <strong>referencia</strong> <strong>de</strong>medición (un tipo <strong>de</strong> nueva sincronización para el eje). Una vez que el eje ha vuelto almodo normal, es posible utilizarlo como un eje normal.Ejecución <strong>de</strong> programasUn eje cambia inmediatamente el modo in<strong>de</strong>pendiente cuando se ejecuta unainstrucción Ind_Move. Esto se produce incluso si se está moviendo el eje en esemomento, por ejemplo, cuando se ha programado como punto <strong>de</strong> paso un puntoanterior o cuando se utiliza la ejecución simultánea <strong>de</strong> programas.Si se ejecuta una nueva instrucción Ind_Move antes <strong>de</strong> que finalice la última, la nuevainstrucción sustituye inmediatamente a la anterior.Si se <strong>de</strong>tiene la ejecución <strong>de</strong> un programa mientras se está moviendo un ejein<strong>de</strong>pendiente, dicho eje se <strong>de</strong>tiene. Cuando se reinicia el programa, el ejein<strong>de</strong>pendiente se pone en movimiento inmediatamente. No se realiza ningunacoordinación activa entre los ejes in<strong>de</strong>pendientes y los <strong>de</strong>más ejes en modo normal.Si se produce una caída <strong>de</strong> alimentación mientras hay un eje en modo in<strong>de</strong>pendiente,no es posible reanudar el programa. En este caso aparece un mensaje <strong>de</strong> error y esnecesario reiniciar un programa <strong>de</strong>s<strong>de</strong> el principio.Recuer<strong>de</strong> que las unida<strong>de</strong>s mecánicas no pue<strong>de</strong>n ser <strong>de</strong>sactivadas cuando uno <strong>de</strong> susejes está en modo in<strong>de</strong>pendiente.162 Descripción general <strong>de</strong> <strong>RAPID</strong>


Posicionamiento durante la ejecución <strong>de</strong>l programaEjecución paso a pasoDurante la ejecución paso a paso, un eje in<strong>de</strong>pendiente se ejecuta sólo cuando se estáejecutando otra instrucción. El movimiento <strong>de</strong>l eje también se produce paso a paso, enlínea con la ejecución <strong>de</strong> otros instrumentos, como se muestra en la Figura 29.IndAMove WaitTime 10Velocidad <strong>de</strong>l ejein<strong>de</strong>pendiente10 segMoveLEl eje in<strong>de</strong>pendientealcanza la posición finalMoveLVelocidad <strong>de</strong>l eje normalFigura 29Ejecución paso a paso <strong>de</strong> ejes in<strong>de</strong>pendientes.MovimientoLos ejes en el modo in<strong>de</strong>pendiente no pue<strong>de</strong>n tener movimientos asignados. Si seintenta ejecutar el eje manualmente, éste no se mueve y se muestra un mensaje <strong>de</strong> error.Ejecute una instrucción IndReset o mueva el puntero <strong>de</strong>l programa a main para po<strong>de</strong>rsalir <strong>de</strong>l modo in<strong>de</strong>pendiente.Área <strong>de</strong> trabajoEl área <strong>de</strong> trabajo físico es el movimiento total <strong>de</strong>l eje.El área <strong>de</strong> trabajo lógico es el área utilizada por las instrucciones <strong>de</strong> <strong>RAPID</strong> y que selee en la ventana <strong>de</strong> movimientos.Después <strong>de</strong> la sincronización (contador <strong>de</strong> revoluciones actualizado), las áreas <strong>de</strong>trabajo físico y lógico coinci<strong>de</strong>n. La instrucción IndReset permite trasladar el área <strong>de</strong>trabajo lógica, como se muestra en la Figura 30.Descripción general <strong>de</strong> <strong>RAPID</strong> 163


Posicionamiento durante la ejecución <strong>de</strong>l programaÁrea <strong>de</strong> trabajo lógicotras la sincronización00Área <strong>de</strong> trabajo lógicotras IndReset0Área <strong>de</strong> trabajo físicoFigura 30El área <strong>de</strong> trabajo lógico pue<strong>de</strong> trasladarse mediante la instrucción IndReset.La resolución <strong>de</strong> las posiciones se reduce cuando se alejan <strong>de</strong> la posición lógica 0. Unaresolución baja unida a un controlador <strong>de</strong>masiado apretado pue<strong>de</strong> dar lugar a un parinaceptable, a ruidos y a inestabilidad <strong>de</strong>l controlador. Compruebe durante lainstalación el ajuste <strong>de</strong>l controlador y el rendimiento <strong>de</strong>l eje cerca <strong>de</strong>l límite <strong>de</strong>l área <strong>de</strong>trabajo. Compruebe también si la resolución <strong>de</strong> las posiciones y el rendimiento <strong>de</strong> latrayectoria son aceptables.Velocidad y aceleraciónEn el modo manual con velocidad reducida, la velocidad se reduce al mismo nivel quesi el eje estuviera funcionando <strong>de</strong> modo no in<strong>de</strong>pendiente. Recuer<strong>de</strong> que la funciónIndSpeed\InSpeed no <strong>de</strong>vuelve un valor TRUE si se reduce la velocidad <strong>de</strong>l eje.La instrucción VelSet y la corrección <strong>de</strong> velocidad en porcentaje a través <strong>de</strong> la ventana<strong>de</strong> producción se siguen aplicando cuando se usa el movimiento in<strong>de</strong>pendiente.Recuer<strong>de</strong> que la corrección a través <strong>de</strong> la ventana <strong>de</strong> producción inhibe el valor TRUEgenerado por la función IndSpeed\InSpeed.En el modo in<strong>de</strong>pendiente, el valor más bajo <strong>de</strong> aceleración y <strong>de</strong>celeración,especificado en el archivo <strong>de</strong> configuración, se utiliza tanto para la aceleración comola <strong>de</strong>celeración. Este valor pue<strong>de</strong> reducirse con un valor <strong>de</strong> pendiente en la instrucción(1 - 100%). La instrucción AccSet no afecta a los ejes en el modo in<strong>de</strong>pendiente.Ejes <strong>de</strong>l robotÁrea <strong>de</strong> trabajo lógicoEl único eje <strong>de</strong>l robot que pue<strong>de</strong> usarse como eje in<strong>de</strong>pendiente es el eje 6.Normalmente, junto con ese eje se utiliza la instrucción IndReset. Sin embargo,también pue<strong>de</strong> usarse la instrucción IndReset con el eje 4 <strong>de</strong> los mo<strong>de</strong>los IRB 2400 y4400. Si se utiliza IndReset con el eje 4 <strong>de</strong>l robot, el eje 6 no <strong>de</strong>be estar en el modoin<strong>de</strong>pendiente.Si se utiliza el eje 6 como eje in<strong>de</strong>pendiente, pue<strong>de</strong>n producirse problemas <strong>de</strong>singularidad porque se sigue utilizando la funcional normal <strong>de</strong> transformación <strong>de</strong>coor<strong>de</strong>nadas para 6 ejes. Si aparece algún problema, ejecute el mismo programa con eleje 6 en el modo normal. Modifique los puntos o utilice las instruccionesSingArea\Wrist o MoveJ.El eje 6 también está activo internamente en el cálculo <strong>de</strong> rendimiento <strong>de</strong> la trayectoria.Como resultado, un movimiento interno <strong>de</strong>l eje 6 pue<strong>de</strong> reducir la velocidad <strong>de</strong> los<strong>de</strong>más ejes <strong>de</strong>l sistema.164 Descripción general <strong>de</strong> <strong>RAPID</strong>


Posicionamiento durante la ejecución <strong>de</strong>l programaEl área <strong>de</strong> trabajo in<strong>de</strong>pendiente <strong>de</strong>l eje 6 se <strong>de</strong>fine con los ejes 4 y 5 en la posicióninicial. Si el eje 4 ó 5 están fuera <strong>de</strong> la posición inicial, el área <strong>de</strong> trabajo <strong>de</strong>l eje 6 semueve <strong>de</strong>bido al acoplamiento <strong>de</strong> los engranajes. Sin embargo, la posición leída <strong>de</strong>s<strong>de</strong>el FlexPendant para el eje 6 se compensa con las posiciones <strong>de</strong> los ejes 4 y 5 a través<strong>de</strong>l acoplamiento <strong>de</strong> los engranajes.33.5 Servo suaveEn algunas aplicaciones se requiere un servo, que actúa como un resorte mecánico.Esto significa que la fuerza <strong>de</strong>l robot sobre el objeto <strong>de</strong> trabajo aumenta en función <strong>de</strong>la distancia existente entre la posición programada (más allá <strong>de</strong>l objeto <strong>de</strong> trabajo) y laposición <strong>de</strong> contacto (entre la herramienta <strong>de</strong>l robot y el objeto <strong>de</strong> trabajo).La relación entre la <strong>de</strong>sviación <strong>de</strong> la posición y la fuerza se <strong>de</strong>fine por un parámetroconocido como suavidad. Cuanto mayor es el valor <strong>de</strong>l parámetro <strong>de</strong> suavidad, mayores la <strong>de</strong>sviación <strong>de</strong> posición que se requiere para conseguir la misma fuerza.El parámetro <strong>de</strong> suavidad se ajusta en el programa y es posible cambiar valores <strong>de</strong>suavidad <strong>de</strong>s<strong>de</strong> cualquier parte <strong>de</strong>l programa. Es posible establecer distintos valores <strong>de</strong>suavidad para los distintos ejes, a<strong>de</strong>más <strong>de</strong> combinar ejes que tienen un servo normalcon ejes que tienen un servo suave.La activación y <strong>de</strong>sactivación <strong>de</strong>l servo suave, así como la modificación <strong>de</strong> valores <strong>de</strong>suavidad, pue<strong>de</strong>n hacerse con el robot en movimiento. Si se hace, se realizará un ajusteentre los distintos modos <strong>de</strong> servo y entre los distintos valores <strong>de</strong> suavidad, paraconseguir unas transiciones suaves. El tiempo <strong>de</strong> ajuste pue<strong>de</strong> configurarse <strong>de</strong>s<strong>de</strong> elprograma con el parámetro “ramp”. ConCon ramp = 1, las transiciones requieren 0,5 segundos y por lo general el tiempo será rampx 0,5 en segundos.Recuer<strong>de</strong> que la <strong>de</strong>sactivación <strong>de</strong>l servo suave no <strong>de</strong>be realizarse si existe fuerza entreel robot y el objeto <strong>de</strong> trabajo.Con valores <strong>de</strong> suavizado elevados, existe el riesgo <strong>de</strong> que las <strong>de</strong>sviaciones <strong>de</strong> posición<strong>de</strong>l servo sean tan gran<strong>de</strong>s que los ejes se muevan más allá <strong>de</strong>l área <strong>de</strong> trabajo <strong>de</strong>l robot.33.6 Paro y reanudaciónEs posible <strong>de</strong>tener un movimiento <strong>de</strong> tres formas diferentes:1. Con un paro normal, el robot se <strong>de</strong>tiene sin abandonar la trayectoria, lo que hace quela reanudación <strong>de</strong>l movimiento sea sencilla.2. Con un paro rígido, el robot se <strong>de</strong>tiene en un plazo más breve que el <strong>de</strong> un paronormal, pero la trayectoria <strong>de</strong> <strong>de</strong>celeración no sigue la trayectoria programada. Porejemplo, se utiliza este método <strong>de</strong> paro para paros <strong>de</strong> búsqueda en las que es importante<strong>de</strong>tener el movimiento lo antes posible.3. Con un paro rápido, se utilizan los frenos mecánicos para conseguir una distancia<strong>de</strong> <strong>de</strong>celeración, que pue<strong>de</strong> ser tan breve como se especifique para garantizar laseguridad. Normalmente, la <strong>de</strong>sviación <strong>de</strong> la trayectoria es mayor en los paros rápidosque en los paros rígidos.Descripción general <strong>de</strong> <strong>RAPID</strong> 165


Posicionamiento durante la ejecución <strong>de</strong>l programaDespués <strong>de</strong> un paro (<strong>de</strong> cualquiera <strong>de</strong> los tipos indicados), la reanudación pue<strong>de</strong>hacerse siempre sobre la trayectoria interrumpida. Si el robot se ha <strong>de</strong>tenido fuera <strong>de</strong> latrayectoria programada, la reanudación comenzará con el regreso a la posición <strong>de</strong> latrayectoria en la que <strong>de</strong>bería haberse <strong>de</strong>tenido el robot.La reanudación <strong>de</strong>spués <strong>de</strong> una caída <strong>de</strong> alimentación equivale a una reanudación trasun paro rápido. Debe recordar que el robot vuelve siempre a la trayectoria antes <strong>de</strong> quese reanu<strong>de</strong> el funcionamiento <strong>de</strong>l programa interrumpido, incluso en los casos en quela caída <strong>de</strong> alimentación se ha producido mientras se estaba ejecutando una instrucciónlógica. Durante la reanudación, todos los tiempos se cuentan <strong>de</strong>s<strong>de</strong> el principio, porejemplo, al realizar el posicionamiento por tiempo o con una interrupción con lainstrucción WaitTime.33.7 Información relacionadaDescrito en:Definición <strong>de</strong> velocidadTipos <strong>de</strong> datos - speeddataDefinición <strong>de</strong> zonas (trayectorias <strong>de</strong> esquina) Tipos <strong>de</strong> datos - zonedataInstrucción para la interpolación <strong>de</strong> ejes Instrucciones - MoveJInstrucción para la interpolación lineal Instrucciones - MoveLInstrucción para la interpolación circular Instrucciones - MoveCInstrucción para la interpolación modificada Instrucciones - SingAreaSingularidad Principios <strong>de</strong> movimiento y E/S -SingularidadEjecución simultánea <strong>de</strong> programas Principios <strong>de</strong> movimiento y E/S -Sincronización con instruccioneslógicasOptimización <strong>de</strong> la CPU <strong>Manual</strong> <strong>de</strong> <strong>referencia</strong> técnica -Parámetros <strong>de</strong>l sistema166 Descripción general <strong>de</strong> <strong>RAPID</strong>


Sincronización con instrucciones lógicas34 Sincronización con instrucciones lógicasNormalmente, las instrucciones se ejecutan secuencialmente en el programa. Noobstante, las instrucciones lógicas también pue<strong>de</strong>n ejecutarse en posiciones concretaso durante un movimiento continuo.Una instrucción lógica es cualquier instrucción que no genere un movimiento <strong>de</strong>l robotni un movimiento <strong>de</strong> ningún eje externo, es <strong>de</strong>cir, una instrucción <strong>de</strong> E/S.34.1 Ejecución secuencial <strong>de</strong>l programa en puntos <strong>de</strong> paroSi se ha programado una instrucción <strong>de</strong> posicionamiento como punto <strong>de</strong> paro, lainstrucción posterior <strong>de</strong>l programa no se ejecuta hasta que tanto el robot como los ejesexternos se han parado, es <strong>de</strong>cir, cuando es posible conseguir la posición programada(consulte la Figura 31).p1MoveL p1, v1000, fine, tool1;SetDO do1, on;MoveL p2, v1000, z30, tool1;Ejecución <strong>de</strong> SetDOFigura 31Las instrucciones lógicas posteriores a los puntos <strong>de</strong> paro no se ejecutan hasta que sealcanza la posición <strong>de</strong> <strong>de</strong>stino.34.2 Ejecución secuencial <strong>de</strong> programas en puntos <strong>de</strong> pasoSi se programa una instrucción como punto <strong>de</strong> paso, las instrucciones lógicassiguientes se ejecutan algún tiempo antes <strong>de</strong> llegar a la zona más gran<strong>de</strong> (para los ejes<strong>de</strong> posición, orientación o externos). Consulte la Figura 32 y la Figura 33. Estasinstrucciones se ejecutan en or<strong>de</strong>n.Ejecución <strong>de</strong> SetDODTp1MoveL p1, v1000, z30, tool1;SetDO do1, on;MoveL p2, v1000, z30, tool1;Zona <strong>de</strong>posiciónZona <strong>de</strong>orientaciónFigura 32Una instrucción lógica a continuación <strong>de</strong> un punto <strong>de</strong> paso se ejecuta antes <strong>de</strong> alcanzar lazona más gran<strong>de</strong>.Descripción general <strong>de</strong> <strong>RAPID</strong> 167


Sincronización con instrucciones lógicasEjecución<strong>de</strong> SetDOZona <strong>de</strong> posiciónDTp1p2MoveL p1, v1000, z30, tool1;MoveL p2, v1000, z30, tool1;SetDO do1, on;MoveL p3, v1000, z30, tool1;Zona <strong>de</strong>orientaciónFigura 33Una instrucción lógica a continuación <strong>de</strong> un punto <strong>de</strong> paso se ejecuta antes <strong>de</strong> alcanzar lazona más gran<strong>de</strong>.El tiempo en el que se ejecutan (DT) compren<strong>de</strong> los siguientes componentes <strong>de</strong> tiempo:- El tiempo que necesita el robot para planificar el siguiente movimiento:aproximadamente 0,1 segundos.- El retardo <strong>de</strong>l robot (retardo <strong>de</strong> servo) en segundos: De 0 a 1,0 segundos enfunción <strong>de</strong> la velocidad y el rendimiento real <strong>de</strong> <strong>de</strong>celeración <strong>de</strong>l robot.34.3 Ejecución simultánea <strong>de</strong> programasLa ejecución simultánea <strong>de</strong> programas pue<strong>de</strong> programarse mediante el argumento\Conc en la instrucción <strong>de</strong> posicionamiento. Este argumento se utiliza para:- Ejecutar una o varias instrucciones lógicas al mismo tiempo que el robot se mueve,para reducir el tiempo <strong>de</strong> ciclo (por ejemplo, se utiliza al comunicarse a través <strong>de</strong>canales serie).168 Descripción general <strong>de</strong> <strong>RAPID</strong>


Sincronización con instrucciones lógicasCuando se ejecuta una instrucción <strong>de</strong> posicionamiento con el argumento \Conc, seejecutan también las instrucciones lógicas siguientes (en secuencia):- Si el robot no se mueve o si la instrucción <strong>de</strong> posicionamiento anterior termina conun punto <strong>de</strong> paro, las instrucciones lógicas se ejecutan tan pronto como comienzala instrucción <strong>de</strong> posicionamiento actual (al mismo tiempo que el movimiento).Consulte la Figura 34.- Si la instrucción <strong>de</strong> posicionamiento anterior termina en un punto <strong>de</strong> paso, lasinstrucciones lógicas se ejecutan en un tiempo <strong>de</strong>terminado (DT) antes <strong>de</strong>alcanzar la zona más gran<strong>de</strong> (para los ejes <strong>de</strong> posicionamiento, orientación oexternos). Consulte la Figura 35.Ejecución <strong>de</strong> SetDOp1p2MoveL p1, v1000, fine, tool1;MoveL \Conc, p2, v1000, z30, tool1;SetDO do1, on;MoveL p3, v1000, z30, tool1;Figura 34En el caso <strong>de</strong> la ejecución simultánea <strong>de</strong> programas <strong>de</strong>spués <strong>de</strong> un punto <strong>de</strong> paro, lasinstrucciones <strong>de</strong> posicionamiento y las instrucciones lógicas siguientes comienzan almismo tiempo.Descripción general <strong>de</strong> <strong>RAPID</strong> 169


Sincronización con instrucciones lógicasEjecución<strong>de</strong> SetDODTZona más gran<strong>de</strong>p1p2MoveL p1, v1000, z30, tool1;MoveL \Conc, p2, v1000, z30, tool1;SetDO do1, on;MoveL p3, v1000, z30, tool1;Figura 35En el caso <strong>de</strong> la ejecución simultánea <strong>de</strong> programas <strong>de</strong>spués <strong>de</strong> un punto <strong>de</strong> paso, lasinstrucciones lógicas empiezan a ejecutarse antes <strong>de</strong> que comiencen a ejecutarse lasinstrucciones <strong>de</strong> posicionamiento que presentan el argumento \Conc.Las instrucciones que afectan indirectamente a los movimientos, como ConfL ySingArea, se ejecutan <strong>de</strong> la misma forma que otras instrucciones lógicas. Sin embargo,no afectan a los movimientos solicitados por instrucciones <strong>de</strong> posicionamientoanteriores.Si se mezclan varias instrucciones <strong>de</strong> posicionamiento que tienen el argumento \Concy varias instrucciones lógicas en una secuencia larga, se aplica lo siguiente:- Las instrucciones lógicas se ejecutan directamente en el or<strong>de</strong>n en el que seprogramaron. Esto se realiza al mismo tiempo que el movimiento (consulte la Figura 36), loque significa que las instrucciones lógicas se ejecutan en una fase anterior <strong>de</strong> latrayectoria, en lugar <strong>de</strong> en el momento en que se programaron.170 Descripción general <strong>de</strong> <strong>RAPID</strong>


Sincronización con instrucciones lógicasEjecución <strong>de</strong>SetDO y SetAODTZona más gran<strong>de</strong>p1p2MoveL p1, v1000, z30, tool1;MoveL \Conc, p2, v1000, z30, tool1;SetDO do1, on;MoveL \Conc, p3, v1000, z30, tool1;SetAO ao2, 5;Figura 36Si se programan en secuencia varias instrucciones <strong>de</strong> posicionamiento con elargumento \Conc, todas las instrucciones lógicas conectadas se ejecutan en el mismomomento en que se ejecuta la primera posición.Durante la ejecución simultánea <strong>de</strong> programas, las instrucciones siguientes seprograman para finalizar la secuencia y por tanto resincronizan las instrucciones <strong>de</strong>posicionamiento y las instrucciones lógicas:- Una instrucción <strong>de</strong> posicionamiento hacia un punto <strong>de</strong> paro sin el argumento\Conc- La instrucción WaitTime o WaitUntil con el argumento \Inpos34.4 Sincronización <strong>de</strong> trayectoriasPara po<strong>de</strong>r sincronizar los equipos <strong>de</strong> procesamiento (para aplicaciones comoaplicación <strong>de</strong> adhesivo, pintado y soldadura al arco) con los movimientos <strong>de</strong>l robot, esposible generar distintos tipos <strong>de</strong> señales <strong>de</strong> sincronización.Con los así <strong>de</strong>nominados eventos <strong>de</strong> posición, se genera una señal <strong>de</strong> disparo cuandoel robot atraviesa una posición pre<strong>de</strong>finida <strong>de</strong> la trayectoria. Con los eventos <strong>de</strong>tiempo, se genera una señal en un tiempo pre<strong>de</strong>finido antes <strong>de</strong> que el robot se <strong>de</strong>tengaen la posición <strong>de</strong> paro. A<strong>de</strong>más, el sistema <strong>de</strong> control también gestiona eventos <strong>de</strong>oscilación, lo que genera pulsos en ángulos <strong>de</strong> fase pre<strong>de</strong>finidos <strong>de</strong> un movimiento <strong>de</strong>oscilación.Descripción general <strong>de</strong> <strong>RAPID</strong> 171


Sincronización con instrucciones lógicasTodas las señales <strong>de</strong> posicionamiento sincronizadas pue<strong>de</strong>n conseguirse tanto antes(tiempo <strong>de</strong> avance) o <strong>de</strong>spués (tiempo <strong>de</strong> retardo) <strong>de</strong>l momento en que el robotatraviesa la posición pre<strong>de</strong>finida. La posición se <strong>de</strong>fine mediante una posiciónprogramada y pue<strong>de</strong> ajustarse como una distancia <strong>de</strong> trayectoria antes <strong>de</strong> la posiciónprogramada.La exactitud <strong>de</strong> repetición habitual <strong>de</strong> un conjunto <strong>de</strong> salidas digitales en la trayectoriaes <strong>de</strong> +/- 2ms.En caso <strong>de</strong> una caída <strong>de</strong> alimentación y un reinicio con la instrucción Trigg, todos loseventos <strong>de</strong> disparo se generan <strong>de</strong> nuevo en la trayectoria <strong>de</strong> movimiento restante <strong>de</strong> lainstrucción Trigg.34.5 Información relacionadaInstrucciones <strong>de</strong> posicionamientoDefinición <strong>de</strong> tamaños <strong>de</strong> zonaDescrito en:Resumen sobre <strong>RAPID</strong> - MovimientoTipos <strong>de</strong> datos - zonedata172 Descripción general <strong>de</strong> <strong>RAPID</strong>


Configuración <strong>de</strong>l robot35 Configuración <strong>de</strong>l robot35.1 Distintos tipos <strong>de</strong> configuraciones <strong>de</strong> robotNormalmente, es posible conseguir una misma posición y orientación <strong>de</strong> la herramienta <strong>de</strong>varias formas diferentes, utilizando distintos conjuntos <strong>de</strong> ángulos <strong>de</strong> ejes. Estos distintosconjuntos se <strong>de</strong>nominan configuraciones <strong>de</strong> robot.Por ejemplo, si una posición se encuentra aproximadamente en el centro <strong>de</strong> una célula <strong>de</strong>trabajo, algunos robots pue<strong>de</strong>n llegar hasta la misma posición <strong>de</strong>s<strong>de</strong> arriba y <strong>de</strong>s<strong>de</strong> abajo,utilizando distintos sentidos <strong>de</strong>l eje 1 (consulte la Figura 37).Figura 37Se utilizan dos configuraciones <strong>de</strong> brazo diferentes para conseguir la misma posicióny orientación. La configuración <strong>de</strong>l lado <strong>de</strong>recho se consigue haciendo girar el brazohacia atrás. El eje 1 gira 180 grados.Algunos robots también pue<strong>de</strong>n llegar a la posición <strong>de</strong>s<strong>de</strong> arriba y abajo mientras utilizan elmismo sentido en el eje 1. Esto es posible con los robots que tienen un área <strong>de</strong> trabajoampliada en el eje 3 (consulte la Figura 38).Descripción general <strong>de</strong> <strong>RAPID</strong> 173


Configuración <strong>de</strong>l robotABBABBFigura 38IRB140 con dos configuraciones <strong>de</strong> brazo diferentes para conseguir la misma posicióny orientación. El ángulo <strong>de</strong>l eje 1 es el mismo en las dos configuraciones. Laconfiguración <strong>de</strong>l lado <strong>de</strong>recho se consigue girando el brazo inferior hacia <strong>de</strong>lante yel brazo inferior hacia atrás.Esto también es posible haciendo girar la parte <strong>de</strong>lantera <strong>de</strong>l brazo superior <strong>de</strong>l robot (eje 4)hacia la posición invertida a la vez que los ejes 5 y 6 giran hasta la posición y la orientación<strong>de</strong>seadas (consulte la Figura 39).Eje 6Eje 4Eje 5Figura 39Se utilizan dos configuraciones <strong>de</strong> muñeca diferentes para conseguir la misma posicióny orientación. En la configuración en la que la parte <strong>de</strong>lantera <strong>de</strong>l brazo superiorapunta hacia arriba (inferior), el eje 4 ha girado 180 grados, el eje 5 180 grados y eleje 6 180 grados para po<strong>de</strong>r conseguir la configuración en la que la parte <strong>de</strong>lantera<strong>de</strong>l brazo superior apunta hacia abajo (superior).174 Descripción general <strong>de</strong> <strong>RAPID</strong>


Configuración <strong>de</strong>l robot35.2 Especificación <strong>de</strong> la configuración <strong>de</strong>l robotAl programar una posición <strong>de</strong>l robot, se especifica también una configuración <strong>de</strong> robot.La forma <strong>de</strong> especificar la configuración <strong>de</strong>l robot es distinta con los distintos tipos <strong>de</strong>robots (consulte Tipos <strong>de</strong> datos y datos <strong>de</strong>l sistema - confdata para obtener una<strong>de</strong>scripción completa). Sin embargo, con la mayoría <strong>de</strong> los tipos <strong>de</strong> robots, esto incluyela <strong>de</strong>finición <strong>de</strong> los cuartos <strong>de</strong> revolución a<strong>de</strong>cuados para los ejes 1, 4 y 6.102 3angleFigura 40Cuarto <strong>de</strong> revolución para un ángulo <strong>de</strong> eje positivo. int joint – ------------- .© § S e 2 ¹·-3-4-2 -1angleFigura 41Cuarto <strong>de</strong> revolución para un ángulo <strong>de</strong> eje negativo. int joint – ------------- – 1 .© § S e 2 ¹·35.3 Comprobación <strong>de</strong> la configuraciónNormalmente, <strong>de</strong>seará que el robot tenga la misma configuración durante la ejecución <strong>de</strong>lprograma que la que programó. Para ello, pue<strong>de</strong> hacer que el robot compruebe laconfiguración y, si no se consigue la configuración correcta, <strong>de</strong>tener la ejecución <strong>de</strong>lrobot. Si la configuración no se ha comprobado, el robot pue<strong>de</strong> empezar a moverinesperadamente sus brazos y muñecas, lo que podría hacer que colisione con equiposperiféricos.La comprobación <strong>de</strong> la configuración implica la comparación <strong>de</strong> la posiciónprogramada con la <strong>de</strong>l robot.Descripción general <strong>de</strong> <strong>RAPID</strong> 175


Configuración <strong>de</strong>l robotDurante un movimiento lineal, el robot se mueve siempre hacia la posición posible máscercana. Sin embargo, si la comprobación <strong>de</strong> la configuración está activada, laejecución <strong>de</strong>l programa se <strong>de</strong>tiene tan pronto como cualquiera <strong>de</strong> los ejes se <strong>de</strong>svía unnúmero <strong>de</strong> grados superior al especificado.Durante el movimiento eje por eje o lineal modificado con comprobación <strong>de</strong>configuración, el robot se mueve siempre hacia la configuración <strong>de</strong> ejes programada.Si no es posible conseguir la posición y la orientación programadas, la ejecución <strong>de</strong>lprograma se <strong>de</strong>tiene antes <strong>de</strong> empezar el movimiento. Si la comprobación <strong>de</strong>configuración no está activada, el robot se traslada a la posición y la orientaciónespecificadas, con la configuración más cercana.Cuando se <strong>de</strong>tiene la ejecución <strong>de</strong> una posición programada a causa <strong>de</strong> un error <strong>de</strong>configuración, con frecuencia pue<strong>de</strong> <strong>de</strong>berse a uno <strong>de</strong> los motivos siguientes:• La posición está programada fuera <strong>de</strong> línea con una configuración <strong>de</strong>fectuosa.• Se ha cambiado la herramienta <strong>de</strong>l robot, haciendo que el robot tome unaconfiguración distinta <strong>de</strong> la programada.• La posición está sujeta a un funcionamiento con base <strong>de</strong> coor<strong>de</strong>nadas activa(<strong>de</strong>splazamiento, usuario, objeto, base).La configuración correcta en el punto <strong>de</strong> <strong>de</strong>stino pue<strong>de</strong> <strong>de</strong>terminarse posicionando elrobot cerca <strong>de</strong> él y leyendo la configuración en el FlexPendant.Si los parámetros <strong>de</strong> configuración cambian a causa <strong>de</strong>l uso <strong>de</strong> una base <strong>de</strong> coor<strong>de</strong>nadasactiva, es posible <strong>de</strong>sactivar la comprobación <strong>de</strong> la configuración.35.4 Información relacionadaDescrito en:Definición <strong>de</strong> la configuración <strong>de</strong>l robot Tipos <strong>de</strong> datos y datos <strong>de</strong> sistema - confdataActivación/<strong>de</strong>sactivación <strong>de</strong> laconfiguraciónResumen sobre <strong>RAPID</strong> - Parámetros <strong>de</strong>movimiento176 Descripción general <strong>de</strong> <strong>RAPID</strong>


Mo<strong>de</strong>los cinemáticos <strong>de</strong>l robot36 Mo<strong>de</strong>los cinemáticos <strong>de</strong>l robot36.1 Cinemática <strong>de</strong>l robotLa posición y la orientación <strong>de</strong> un robot se <strong>de</strong>terminan a partir <strong>de</strong>l mo<strong>de</strong>lo cinemático<strong>de</strong> su estructura mecánica. Es necesario <strong>de</strong>finir los mo<strong>de</strong>los específicos <strong>de</strong> la unidadmecánica en cada instalación. En el caso <strong>de</strong> los robots principales y exteriores ABBestándar, estos mo<strong>de</strong>los están pre<strong>de</strong>finidos en el controlador.Robot principalEl mo<strong>de</strong>lo cinemático <strong>de</strong>l robot principal mo<strong>de</strong>la la posición y la orientación <strong>de</strong> laherramienta <strong>de</strong>l robot respecto <strong>de</strong> su base, en función <strong>de</strong> los ángulos <strong>de</strong> los ejes <strong>de</strong>lrobot.Los parámetros cinemáticos que especifican las longitu<strong>de</strong>s <strong>de</strong> los brazos, los offsets ylas actitu<strong>de</strong>s <strong>de</strong> los ejes se pre<strong>de</strong>finen en el archivo <strong>de</strong> configuración <strong>de</strong> cada tipo <strong>de</strong>robot.length_of_upper_arm length_of_wristEje 5Z6Eje 4 Eje 6offset_of_joint_3Z Eje 3X6length_of_lower_armoffset_of_joint_2height_of_footEje 1Eje 2XFigura 42Estructura cinemática <strong>de</strong> un robot IRB1400Un procedimiento <strong>de</strong> calibración apoya la <strong>de</strong>finición <strong>de</strong> la base <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> labase <strong>de</strong>l robot principal respecto <strong>de</strong> la base <strong>de</strong> coor<strong>de</strong>nadas mundo.Descripción general <strong>de</strong> <strong>RAPID</strong> 177


Mo<strong>de</strong>los cinemáticos <strong>de</strong>l robotZ6X6ZYXBase <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> labase <strong>de</strong>l robot principalBase <strong>de</strong> coor<strong>de</strong>nadas mundoFigura 43Base <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> la base <strong>de</strong>l robot principalRobot externoLa coordinación con un robot externo requiere también un mo<strong>de</strong>lo cinemático para elrobot externo. Se admite un conjunto <strong>de</strong> clases pre<strong>de</strong>finidas <strong>de</strong> estructuras mecánicasbidimensionales y tridimensionales.Z2Z0length_of_lower_armoffset_of_upper_armattitu<strong>de</strong>_of_joint1Eje 2X2Eje 1turn_tableoffset_of_joint1_xattitu<strong>de</strong>_of_jointheight_of_footX0Figura 44Estructura cinemática <strong>de</strong> un robot ORBIT 160B con un mo<strong>de</strong>lo pre<strong>de</strong>finidoSe suministran procedimientos <strong>de</strong> calibración para <strong>de</strong>finir la base <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> labase respecto <strong>de</strong> la base <strong>de</strong> coor<strong>de</strong>nadas mundo para cada clase <strong>de</strong> estructura.178 Descripción general <strong>de</strong> <strong>RAPID</strong>


Mo<strong>de</strong>los cinemáticos <strong>de</strong>l robotZ0Z2Cuerpo CX2Cuerpo BCuerpo ABase <strong>de</strong> coor<strong>de</strong>nadas mundoX0Base <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> labase <strong>de</strong>l robot externoFigura 45Base <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> la base <strong>de</strong> un robot ORBIT_160BY0Y2X0y1X2x1x2Figura 46Puntos <strong>de</strong> <strong>referencia</strong> en la mesa giratoria para la calibración <strong>de</strong> la base <strong>de</strong>coor<strong>de</strong>nadas <strong>de</strong> la base <strong>de</strong> un robot ORBIT_160B, en la posición inicial utilizando un mo<strong>de</strong>lopre<strong>de</strong>finido36.2 Cinemática generalLas estructuras mecánicas no compatibles con las estructuras pre<strong>de</strong>finidas pue<strong>de</strong>nmo<strong>de</strong>larse utilizando un mo<strong>de</strong>lo cinemático general. Esto se permite en el caso <strong>de</strong> losrobots externos.Descripción general <strong>de</strong> <strong>RAPID</strong> 179


Mo<strong>de</strong>los cinemáticos <strong>de</strong>l robotEl mo<strong>de</strong>lado se basa en la convención Denavit-Hartenberg y según el libro Introductionto Robotics, Mechanics & Control (Introducción a la robótica, la mecánica y el control)<strong>de</strong> John J. Craigh (Addison-Wesley 1986).d1Z2d2Z0Y2turn_tablea1 = 0a2 = 0alfa1 = 0X0alfa2Figura 47Estructura cinemática <strong>de</strong> un robot ORBIT 160B con un mo<strong>de</strong>lo cinemático generalUn procedimiento <strong>de</strong> calibración apoya la <strong>de</strong>finición <strong>de</strong> la base <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> labase <strong>de</strong>l robot externo respecto <strong>de</strong> la base <strong>de</strong> coor<strong>de</strong>nadas mundo.Z0Y2Z2X0Base <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> labase <strong>de</strong>l robot externoBase <strong>de</strong> coor<strong>de</strong>nadas mundoFigura 48Base <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> la base <strong>de</strong> un robot ORBIT_160B con un mo<strong>de</strong>lo cinemáticogeneral180 Descripción general <strong>de</strong> <strong>RAPID</strong>


Mo<strong>de</strong>los cinemáticos <strong>de</strong>l robotY0X0x1y1x2Y2X2Figura 49Puntos <strong>de</strong> <strong>referencia</strong> en la mesa giratoria para la calibración <strong>de</strong> la base <strong>de</strong>coor<strong>de</strong>nadas <strong>de</strong> la base <strong>de</strong> un robot ORBIT_160B, en la posición inicial (ejes = 0 grados)36.3 Información relacionadaDefinición <strong>de</strong> la cinemática general <strong>de</strong>un robot externoDescrito en:<strong>Manual</strong> <strong>de</strong> <strong>referencia</strong> técnica - Parámetros <strong>de</strong>lsistemaDescripción general <strong>de</strong> <strong>RAPID</strong> 181


Mo<strong>de</strong>los cinemáticos <strong>de</strong>l robot182 Descripción general <strong>de</strong> <strong>RAPID</strong>


Supervisión <strong>de</strong>l movimiento y <strong>de</strong>tección <strong>de</strong> colisiones37 Supervisión <strong>de</strong>l movimiento y <strong>de</strong>tección <strong>de</strong> colisionesSe conoce como supervisión <strong>de</strong> movimiento a un conjunto <strong>de</strong> funciones que permitensupervisar los movimientos <strong>de</strong>l robot con una alta sensibilidad y con bases <strong>de</strong>coor<strong>de</strong>nadas. La supervisión <strong>de</strong>l movimiento incluye funciones <strong>de</strong> <strong>de</strong>tección <strong>de</strong>colisiones, bloqueos y cargas incorrectas. Estas funciones se conocen como funciones<strong>de</strong> <strong>de</strong>tección <strong>de</strong> colisión.37.1 IntroducciónLa <strong>de</strong>tección <strong>de</strong> colisión pue<strong>de</strong> dispararse si los datos <strong>de</strong> las cargas montadas en elrobot no son correctos. Esto incluye a los datos <strong>de</strong> carga <strong>de</strong> herramientas, cargas útilesy cargas <strong>de</strong> brazo. Si los datos <strong>de</strong> las herramientas o los datos <strong>de</strong> carga útil son<strong>de</strong>sconocidos, pue<strong>de</strong> usarse la función <strong>de</strong> i<strong>de</strong>ntificación <strong>de</strong> cargas para <strong>de</strong>finirlos. Noes posible i<strong>de</strong>ntificar los datos <strong>de</strong> carga <strong>de</strong>l brazo.Cuando se dispara la <strong>de</strong>tección <strong>de</strong> colisión, se invierten los pares <strong>de</strong> motor y se aplicanlos frenos mecánicos para <strong>de</strong>tener el robot. A continuación, el robot retroce<strong>de</strong> un pocoa lo largo <strong>de</strong> la trayectoria para neutralizar las fuerzas residuales que pue<strong>de</strong>n estarpresentes si se ha producido una colisión o un bloqueo. A continuación, el robot se<strong>de</strong>tiene <strong>de</strong> nuevo y permanece en el estado MOTORES ON. En la figura siguiente seilustra una colisión típica.La supervisión <strong>de</strong> movimiento sólo está activa si al menos un eje (incluidos los ejesexternos) está en movimiento. Si todos los ejes están parados, la función se <strong>de</strong>sactiva.Esto es así para evitar disparos innecesarios <strong>de</strong>bidos a fuerzas externas <strong>de</strong>l proceso.37.2 Ajuste <strong>de</strong> los niveles <strong>de</strong> <strong>de</strong>tección <strong>de</strong> colisionesLa <strong>de</strong>tección <strong>de</strong> colisiones utiliza un nivel <strong>de</strong> supervisión variable. Es más sensible avelocida<strong>de</strong>s bajas que a velocida<strong>de</strong>s altas. Por ello, no <strong>de</strong>be ser necesario ningún ajuste<strong>de</strong> la función por parte <strong>de</strong>l usuario en condiciones <strong>de</strong> funcionamiento normales. Sinembargo, es posible activar y <strong>de</strong>sactivar la función para ajustar los niveles <strong>de</strong>supervisión. Están disponibles parámetros <strong>de</strong> ajuste diferentes para el movimiento ypara la ejecución <strong>de</strong>l programa. Los distintos parámetros <strong>de</strong> ajuste se <strong>de</strong>scriben en más<strong>de</strong>talle en el <strong>Manual</strong> <strong>de</strong> <strong>referencia</strong> técnica - Parámetros <strong>de</strong>l sistema <strong>de</strong>ntro <strong>de</strong>Manipulador.<strong>RAPID</strong> cuenta con una instrucción llamada MotionSup que se usa para activar y<strong>de</strong>sactivar la función y modificar el nivel <strong>de</strong> supervisión. Esta función resulta útil enlos casos en que el proceso presenta fuerzas externas que actúan sobre el robot en<strong>de</strong>terminadas partes <strong>de</strong>l ciclo. La instrucción MotionSup se <strong>de</strong>scribe con más <strong>de</strong>talleen el <strong>Manual</strong> <strong>de</strong> <strong>referencia</strong> <strong>de</strong> <strong>RAPID</strong>.Los valores <strong>de</strong> ajuste se establecen como un porcentaje <strong>de</strong>l ajuste básico. El uso <strong>de</strong>l100% supone el uso <strong>de</strong> los valores básicos. Cuando se aumenta el porcentaje, seconsigue un sistema menos sensible. Al aumentarlo se consigue el efecto opuesto. Esimportante recordar que si se establecen valores <strong>de</strong> ajuste en los parámetros <strong>de</strong>l sistemay en la instrucción <strong>de</strong> <strong>RAPID</strong>, se tienen en cuenta los dos valores. Ejemplo: Si seestablece un valor <strong>de</strong> ajuste <strong>de</strong>l 150% en los parámetros <strong>de</strong>l sistema y se establece unvalor <strong>de</strong> ajuste <strong>de</strong>l 200% en la instrucción <strong>de</strong> <strong>RAPID</strong>, el nivel <strong>de</strong> ajuste resultante será<strong>de</strong>l 300%.Descripción general <strong>de</strong> <strong>RAPID</strong> 183


Supervisión <strong>de</strong>l movimiento y <strong>de</strong>tección <strong>de</strong> colisionesFigura: Colisión típicaFase 1 - Se invierte el par <strong>de</strong>lmotor para <strong>de</strong>tener el robot.Fase 2 - Se invierte la velocidad<strong>de</strong>l motor para neutralizar lasfuerzas residuales <strong>de</strong> laherramienta y el motor.velocidad<strong>de</strong>l motorhora <strong>de</strong>colisióncolisión<strong>de</strong>tectadarobot<strong>de</strong>tenidofuerzas residualesneutralizadastiempopar <strong>de</strong>motorvelocidadinvertidatiempoparinvertido184 Descripción general <strong>de</strong> <strong>RAPID</strong>


Supervisión <strong>de</strong>l movimiento y <strong>de</strong>tección <strong>de</strong> colisionesExiste un nivel máximo como valor total <strong>de</strong> ajuste <strong>de</strong> la <strong>de</strong>tección <strong>de</strong> colisiones quepue<strong>de</strong> modificarse. Este valor es el 300% <strong>de</strong> forma pre<strong>de</strong>terminada, pero pue<strong>de</strong>modificarse a través <strong>de</strong>l parámetro <strong>de</strong>l sistema motion_sup_max_level, que sólo estádisponible si el sistema se instala en el modo <strong>de</strong> servicio.37.3 Ventana <strong>de</strong> diálogo Supervisión <strong>de</strong>l MovimientoSeleccione Supervisión <strong>de</strong>l Movimiento en el menú Espec. <strong>de</strong> la ventana <strong>de</strong>movimientos. Esta opción muestra una ventana <strong>de</strong> diálogo que permite la activación yla <strong>de</strong>sactivación <strong>de</strong> la supervisión <strong>de</strong>l movimiento. Esto sólo afectará al robotdurante el movimiento. Si la supervisión <strong>de</strong> movimiento está <strong>de</strong>sactivada en laventana <strong>de</strong> diálogo y se ejecuta un programa, la <strong>de</strong>tección <strong>de</strong> colisiones pue<strong>de</strong> seguiractivada durante la ejecución <strong>de</strong>l programa. Si a continuación se <strong>de</strong>tiene el programay el robot se <strong>de</strong>splaza, el flag <strong>de</strong> estado <strong>de</strong> la ventana <strong>de</strong> diálogo se activa <strong>de</strong> nuevo.Esto se hace como medida <strong>de</strong> seguridad, para evitar la <strong>de</strong>sactivación acci<strong>de</strong>ntal <strong>de</strong> lafunción.37.4 Salidas digitalesLa salida digital MotSupOn está activada cuando la función <strong>de</strong> <strong>de</strong>tección <strong>de</strong> colisionesestá activada y <strong>de</strong>sactivada cuando ésta no está activada. Recuer<strong>de</strong> que el cambio <strong>de</strong>estado <strong>de</strong> la función entra en vigor cuando comienza el movimiento. Por tanto, si la<strong>de</strong>tección <strong>de</strong> colisiones está activada y el robot está en movimiento, MotSupOn estáactivada. Si se <strong>de</strong>tiene el robot y se <strong>de</strong>sactiva la función, MotSupOn sigue activada.Cuando el robot comienza a moverse, MotSupOn se <strong>de</strong>sactiva.La salida digital MotSupTrigg se activa cuando se dispara la <strong>de</strong>tección <strong>de</strong> colisiones.Permanece activada hasta que se confirma el código <strong>de</strong> error, ya sea <strong>de</strong>s<strong>de</strong> elFlexPendant o a través <strong>de</strong> la entrada digital AckErrDialog.Las salidas digitales se <strong>de</strong>scriben en más <strong>de</strong>talle en el <strong>Manual</strong> <strong>de</strong>l operador - IRC5 conFlexPendant <strong>de</strong>ntro <strong>de</strong> Señales <strong>de</strong> E/S.37.5 LimitacionesLa supervisión <strong>de</strong>l movimiento sólo está disponible para los ejes <strong>de</strong>l robot. No estádisponible para movimientos por un track, estaciones Orbit ni manipuladores externos.La <strong>de</strong>tección <strong>de</strong> colisiones está <strong>de</strong>sactivada cuando al menos un eje funciona en elmodo <strong>de</strong> eje in<strong>de</strong>pendiente. Éste es también el caso incluso si el eje que funciona comoeje in<strong>de</strong>pendiente es un eje externo.La <strong>de</strong>tección <strong>de</strong> colisiones pue<strong>de</strong> dispararse cuando el robot se utiliza en el modo <strong>de</strong>servo suave. Por tanto, resulta aconsejable <strong>de</strong>sactivar la <strong>de</strong>tección <strong>de</strong> colisiones si seutiliza el robot en el modo <strong>de</strong> servo suave.Si se utiliza la instrucción <strong>de</strong> <strong>RAPID</strong> MotionSup para <strong>de</strong>sactivar la <strong>de</strong>tección <strong>de</strong>colisiones, el cambio sólo se aplica cuando el robot comienza a moverse. Por tanto, lasalida digital MotSupOn pue<strong>de</strong> permanecer activada temporalmente al iniciar elprograma, antes <strong>de</strong> que el robot comience a moverse.Descripción general <strong>de</strong> <strong>RAPID</strong> 185


Supervisión <strong>de</strong>l movimiento y <strong>de</strong>tección <strong>de</strong> colisionesLa distancia que retroce<strong>de</strong> el robot <strong>de</strong>spués <strong>de</strong> la colisión es proporcional a la velocidad<strong>de</strong>l movimiento que se realizó antes <strong>de</strong> la colisión. Si se producen colisiones repetidasa baja velocidad, es posible que el robot no retroceda lo suficiente para anular la presión<strong>de</strong> la colisión. Como resultado, quizá no sea posible mover el robot sin el disparo <strong>de</strong>supervisión. En este caso, utilice el menú <strong>de</strong> movimientos para <strong>de</strong>sactivartemporalmente la <strong>de</strong>tección <strong>de</strong> colisiones y alejar el robot <strong>de</strong>l obstáculo.En caso <strong>de</strong> una colisión rígida durante la ejecución <strong>de</strong>l programa, pue<strong>de</strong>n ser necesariosvarios segundos antes <strong>de</strong> que el robot comience a retroce<strong>de</strong>r.Si el robot está montado sobre un track, <strong>de</strong>be <strong>de</strong>sactivarse la <strong>de</strong>tección <strong>de</strong> colisionesmientras se mueve la base sobre el track. Si no está <strong>de</strong>sactivada, la <strong>de</strong>tección <strong>de</strong>colisiones pue<strong>de</strong> dispararse cuando el robot se mueve sobre el track, incluso si no seproduce ninguna colisión.37.6 Información relacionadaDescrito en:Instrucción MotionSup <strong>de</strong> <strong>RAPID</strong> Resumen sobre <strong>RAPID</strong> - MovimientoParámetros <strong>de</strong>l sistema para ajustes Parámetros <strong>de</strong>l sistema - ManipuladorSeñales <strong>de</strong> E/S <strong>de</strong> supervisión <strong>de</strong> movimiento Parámetros <strong>de</strong>l sistema - Señales <strong>de</strong> E/SI<strong>de</strong>ntificación <strong>de</strong> cargasPrincipios <strong>de</strong> movimiento y E/S186 Descripción general <strong>de</strong> <strong>RAPID</strong>


Singularida<strong>de</strong>s38 Singularida<strong>de</strong>sAlgunas posiciones <strong>de</strong>l espacio <strong>de</strong> trabajo <strong>de</strong>l robot pue<strong>de</strong>n alcanzarse mediante unnúmero infinito <strong>de</strong> configuraciones <strong>de</strong> robot en cuanto al posicionamiento y laorientación <strong>de</strong> la herramienta. Estas posiciones, conocidas como puntos singulares(singularida<strong>de</strong>s), constituyen un problema a la hora <strong>de</strong> calcular los ángulos <strong>de</strong>l brazo<strong>de</strong>l robot a partir <strong>de</strong> la posición y la orientación <strong>de</strong> la herramienta.En general, los robots presentan dos tipos <strong>de</strong> singularida<strong>de</strong>s: singularida<strong>de</strong>s <strong>de</strong> brazo ysingularida<strong>de</strong>s <strong>de</strong> muñeca. Las singularida<strong>de</strong>s <strong>de</strong> brazo son todas las configuracionesen las que el centro <strong>de</strong> la muñeca (la intersección <strong>de</strong> los ejes 4, 5 y 6) terminadirectamente sobre el eje 1 (consulte la Figura 50). Las singularida<strong>de</strong>s <strong>de</strong> muñeca sonconfiguraciones en las que los ejes 4 y 6 quedan en la misma línea, es <strong>de</strong>cir, que el eje 5tiene un ángulo igual a 0 (consulte la Figura 51).Singularidad <strong>de</strong> la intersección <strong>de</strong>lcentro <strong>de</strong> la muñeca y el eje 1Centro <strong>de</strong> rotación <strong>de</strong>l eje 1Z baseX baseFigura 50La singularidad <strong>de</strong>l brazo se produce cuando el centro <strong>de</strong> la muñeca y el eje 1 secortan.Eje 5 con un ángulo <strong>de</strong> 0 gradosEje 6 paralelo aleje 4Figura 51La singularidad <strong>de</strong> la muñeca se produce cuando el eje 5 se encuentra a 0 grados.Descripción general <strong>de</strong> <strong>RAPID</strong> 187


Singularida<strong>de</strong>sPuntos <strong>de</strong> singularidad <strong>de</strong>l robot IRB140Este robot tiene una singularidad <strong>de</strong> muñeca y <strong>de</strong> brazo. También existe un tercer tipo<strong>de</strong> singularidad. Esta singularidad se produce en las posiciones <strong>de</strong> robot en las que elcentro <strong>de</strong> la muñeca y los centros <strong>de</strong> rotación <strong>de</strong> los ejes 2 y 3 se encuentran en línearecta (consulte la figura siguiente).ABBFigura 52El punto singular adicional <strong>de</strong>l robot IRB140.38.1 Ejecución <strong>de</strong>l programa a través <strong>de</strong> singularida<strong>de</strong>sDurante la interpolación <strong>de</strong> ejes, no se produce ningún problema cuando el robotatraviesa los puntos singulares.Al ejecutar una trayectoria lineal o circular cerca <strong>de</strong> una singularidad, las velocida<strong>de</strong>s<strong>de</strong> algunos ejes (1 y 6/4 y 6) pue<strong>de</strong>n ser muy elevadas. Para no superar las velocida<strong>de</strong>smáximas <strong>de</strong> los ejes, se reduce la velocidad <strong>de</strong> la trayectoria lineal.Es posible reducir las altas velocida<strong>de</strong>s <strong>de</strong> los ejes mediante el modo (Sing Area\Wrist)cuando los ejes <strong>de</strong> la muñeca están interpolados en ángulos <strong>de</strong> eje, a la vez que semantiene la trayectoria lineal <strong>de</strong> la herramienta <strong>de</strong>l robot. Sin embargo, se introduce unerror <strong>de</strong> orientación en comparación con una interpolación lineal completa.Recuer<strong>de</strong> que la configuración <strong>de</strong>l robot cambia drásticamente cuando éste pasa cerca<strong>de</strong> una singularidad en una interpolación lineal o circular. Para evitar lareconfiguración, la primera posición <strong>de</strong>l otro lado <strong>de</strong> la singularidad <strong>de</strong>be programarsecon una orientación que haga que la reconfiguración resulte innecesaria.A<strong>de</strong>más, <strong>de</strong>be recordar que el robot no <strong>de</strong>be encontrarse en esta singularidad cuandosólo se mueven los ejes externos. Si ocurre, es posible que los ejes <strong>de</strong>l robot haganmovimientos innecesarios.38.2 Movimiento a través <strong>de</strong> singularida<strong>de</strong>sDurante la interpolación <strong>de</strong> ejes, no se produce ningún problema cuando el robotatraviesa los puntos singularesDurante la interpolación lineal, el robot pue<strong>de</strong> atravesar puntos singulares, pero conuna velocidad reducida.188 Descripción general <strong>de</strong> <strong>RAPID</strong>


Singularida<strong>de</strong>s38.3 Información relacionadaControl <strong>de</strong> cómo <strong>de</strong>be actuar el robot en laejecución cerca <strong>de</strong> puntos singularesDescrito en:Instrucciones - SingAreaDescripción general <strong>de</strong> <strong>RAPID</strong> 189


Singularida<strong>de</strong>s190 Descripción general <strong>de</strong> <strong>RAPID</strong>


Limitación optimizada <strong>de</strong> la aceleración39 Limitación optimizada <strong>de</strong> la aceleraciónLa aceleración y la velocidad <strong>de</strong>l robot se controlan continuamente <strong>de</strong> forma que no sesuperen los límites <strong>de</strong>finidos.Estos límites están <strong>de</strong>finidos por el programa <strong>de</strong>l usuario (por ejemplo, velocidadprogramada o AccSet) o <strong>de</strong>finidos por el propio sistema (por ejemplo, par máximo <strong>de</strong>la caja <strong>de</strong> engranajes o <strong>de</strong>l motor, par máximo o fuerza <strong>de</strong> la estructura <strong>de</strong>l robot).Siempre y cuando los datos <strong>de</strong> carga (masa, centro <strong>de</strong> gravedad e inercia) se encuentren<strong>de</strong>ntro <strong>de</strong> los límites <strong>de</strong>l diagrama <strong>de</strong> carga y la introducción <strong>de</strong> los datos <strong>de</strong> lasherramientas se realice correctamente, no se requiere ningún límite <strong>de</strong> aceleración<strong>de</strong>finido por el usuario y la vida útil <strong>de</strong>l robot se garantiza automáticamente.Si los datos <strong>de</strong> carga están fuera <strong>de</strong> los límites <strong>de</strong>l diagrama <strong>de</strong> carga, es posible que serequieran restricciones especiales, es <strong>de</strong>cir un valor <strong>de</strong> AccSet o una velocidad menor,si ABB especifica que es necesario.La aceleración y la velocidad <strong>de</strong>l TCP se controlan mediante el planificador <strong>de</strong>trayectorias con la ayuda <strong>de</strong> un mo<strong>de</strong>lo dinámico completo <strong>de</strong> los brazos <strong>de</strong>l robot,incluidas las cargas <strong>de</strong>finidas por el usuario.La aceleración y la velocidad <strong>de</strong>l TCP <strong>de</strong>pen<strong>de</strong>n <strong>de</strong> la posición, la velocidad y laaceleración <strong>de</strong> todos los ejes en cualquier instante y por tanto la aceleración real varíacontinuamente. De esta forma, se obtiene el tiempo <strong>de</strong> ciclo óptimo, es <strong>de</strong>cir, que unoo varios <strong>de</strong> los límites se encuentran en su valor máximo en todo momento. Estosignifica que los motores y la estructura <strong>de</strong>l robot se utilizan a su máxima capacida<strong>de</strong>n todo momento.Descripción general <strong>de</strong> <strong>RAPID</strong> 191


Limitación optimizada <strong>de</strong> la aceleración192 Descripción general <strong>de</strong> <strong>RAPID</strong>


Zonas mundo40 Zonas mundo40.1 Utilización <strong>de</strong> zonas globalesCuando se utiliza esta función, el robot se <strong>de</strong>tiene o se activa automáticamente unasalida si el robot se encuentra <strong>de</strong>ntro <strong>de</strong> un área especial <strong>de</strong>finida por el usuario. Éstasson algunas aplicaciones posibles:- Cuando dos robots comparten una parte <strong>de</strong> sus áreas <strong>de</strong> trabajo respectivas. Laposibilidad <strong>de</strong> que dos robots colisionen pue<strong>de</strong> eliminarse con seguridadmediante la supervisión <strong>de</strong> estas señales.- Cuando hay equipos externos situados <strong>de</strong>ntro <strong>de</strong>l área <strong>de</strong> trabajo <strong>de</strong>l robot. Esposible crear un área <strong>de</strong> trabajo prohibida para impedir que el robot colisionecon este equipo.- Indicación <strong>de</strong> que el robot se encuentra en una posición en la que se permiteiniciar la ejecución <strong>de</strong>l programa <strong>de</strong>s<strong>de</strong> un PCL.40.2 Utilización <strong>de</strong> zonas mundoPara indicar que el punto central <strong>de</strong> la herramienta se encuentra en una parte concreta<strong>de</strong>l área <strong>de</strong> trabajo.Para limitar el área <strong>de</strong> trabajo <strong>de</strong>l robot para evitar colisiones con la herramienta.Para crear un área <strong>de</strong> trabajo común para dos robots, disponibles sólo para un robotcada vez.40.3 Definición <strong>de</strong> zonas mundo en el sistema <strong>de</strong> coor<strong>de</strong>nadas mundoTodas las zonas mundo <strong>de</strong>ben <strong>de</strong>finirse <strong>de</strong>ntro <strong>de</strong>l sistema <strong>de</strong> coor<strong>de</strong>nadas mundo. Loslados <strong>de</strong> los cuadros son paralelos a los ejes <strong>de</strong> coor<strong>de</strong>nadas y el eje <strong>de</strong> cilindro esparalelo al eje Z <strong>de</strong>l sistema <strong>de</strong> coor<strong>de</strong>nadas mundo.Descripción general <strong>de</strong> <strong>RAPID</strong> 193


Zonas mundoRobot con el sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> la baseXZYEsferaRadioTCPCilindrozAlturaRadioPrismaySistema <strong>de</strong> coor<strong>de</strong>nadasmundoxEs posible <strong>de</strong>finir una zona mundo <strong>de</strong> forma que esté <strong>de</strong>ntro o fuera <strong>de</strong> la forma <strong>de</strong>lcontorno <strong>de</strong>l cuadro, la esfera o el cilindro.40.4 Supervisión <strong>de</strong>l TCP <strong>de</strong>l robotNo se supervisaTCPSe supervisa el movimiento <strong>de</strong>l puntocentral <strong>de</strong> la herramienta, no ningunaotra parte <strong>de</strong>l robot.El TCP se supervisa siempre conin<strong>de</strong>pen<strong>de</strong>ncia <strong>de</strong>l modo <strong>de</strong>funcionamiento, por ejemplo, laejecución <strong>de</strong> programas y el<strong>de</strong>splazamiento.TCPs estacionariosSi el robot está sosteniendo un objeto <strong>de</strong> trabajo y trabajando con una herramientaestacionaria, se utiliza un TCP fijo. Si la herramienta está activada, no se mueve y, sise encuentra <strong>de</strong>ntro <strong>de</strong> una zona mundo, permanecerá <strong>de</strong>ntro <strong>de</strong> dicha zona en todomomento.194 Descripción general <strong>de</strong> <strong>RAPID</strong>


Zonas mundo40.5 AccionesActivar una salida digital cuando el TCP se encuentra <strong>de</strong>ntro <strong>de</strong> una zona mundo.Esta acción activa una señal digital cuando el TCP se encuentra <strong>de</strong>ntro <strong>de</strong> una zona mundo.Resulta útil a la hora <strong>de</strong> indicar que el robot se ha <strong>de</strong>tenido <strong>de</strong>ntro un área específica.Tiempo entre comprobaciones Zona mundorespecto <strong>de</strong> las zonas mundoMovimiento <strong>de</strong>l TCPEstado <strong>de</strong> la salida digitalActivar una salida digital antes <strong>de</strong> que el TCP alcance una zona mundo.Esta acción activa una salida digital antes <strong>de</strong> que el TCP alcance una zona mundo.Pue<strong>de</strong> usarse para <strong>de</strong>tener el robot en cuanto entra en una zona mundo.Movimiento <strong>de</strong>l TCPTiempo <strong>de</strong> paro <strong>de</strong>l robotZona mundoEstado <strong>de</strong> la salida digitalDetener el robot antes <strong>de</strong> que el TCP alcance una zona mundo.Es posible <strong>de</strong>finir una zona mundo <strong>de</strong> forma que que<strong>de</strong> fuera el área <strong>de</strong> trabajo. Acontinuación, el robot <strong>de</strong>tendrá el punto central <strong>de</strong> la herramienta inmediatamenteantes <strong>de</strong> entrar en la zona mundo en su movimiento hacia la zona mundo.Movimiento <strong>de</strong>l TCPTiempo <strong>de</strong> paro <strong>de</strong>l robotTiempo entre comprobacionesrespecto <strong>de</strong> las zonas mundoCuando el robot ha entrado en una zona mundo <strong>de</strong>finida como un área <strong>de</strong> trabajoexterior, por ejemplo, cuando se liberan los frenos y se presiona manualmente, la únicaforma <strong>de</strong> salir <strong>de</strong> la zona es con un movimiento o presionando manualmente con losfrenos no aplicados.Descripción general <strong>de</strong> <strong>RAPID</strong> 195


Zonas mundo40.6 Tamaño mínimo <strong>de</strong> las zonas mundoLa supervisión <strong>de</strong>l movimiento <strong>de</strong> los puntos centrales <strong>de</strong> las herramientas se realizaen puntos discretos con un intervalo <strong>de</strong> tiempo entre ellos, acor<strong>de</strong> con la resolución<strong>de</strong> la trayectoria. El usuario es el responsable <strong>de</strong> hacer que las zonas tengan un tamañosuficiente como para que el robot no pueda atravesar una zona sin que se compruebesu posición <strong>de</strong>ntro <strong>de</strong> ella.Tamaño mínimo <strong>de</strong> la zonapara el valor usado <strong>de</strong>path_resolution y la velocidad máximaVelocidadResol.1000 mm/seg 2000 mm/seg 4000 mm/seg125 mm50 mm100 mm250 mm100 mm200 mm375 mm150 mm300 mmSi se utiliza la misma salida digital para más <strong>de</strong> una zona mundo, la distancia entrelas zonas <strong>de</strong>be superar al tamaño mínimo indicado en la tabla anterior, con el fin <strong>de</strong>evitar un estado incorrecto <strong>de</strong> la salida.Tiempo entre comprobacionesrespecto <strong>de</strong> las zonas mundoSi el robot permanece <strong>de</strong>ntro <strong>de</strong> la zona untiempo <strong>de</strong>masiado breve, es posible queatraviese una esquina <strong>de</strong> la zona sin ser<strong>de</strong>tectado. Por tanto, haga que la zona tengaun tamaño mayor que el área <strong>de</strong> riesgo.40.7 Número máximo <strong>de</strong> zonas mundoEs posible tener <strong>de</strong>finido un máximo <strong>de</strong> diez zonas mundo en un momento<strong>de</strong>terminado.40.8 Caídas <strong>de</strong> alimentación, reinicio y reanudaciónLas zonas mundo estacionarias se eliminan al apagar el sistema y es necesarioinsertarlas <strong>de</strong> nuevo al encen<strong>de</strong>r el sistema, mediante una rutina <strong>de</strong> evento conectada alevento POWER ON.Las zonas mundo temporales sobreviven a las caídas <strong>de</strong> alimentación pero se eliminancuando se carga un nuevo programa o cuando un programa se inicia <strong>de</strong>s<strong>de</strong> el programaprincipal.Las salidas digitales <strong>de</strong> las zonas mundo se actualizan en primer lugar al poner enmarcha los motores.196 Descripción general <strong>de</strong> <strong>RAPID</strong>


Zonas mundo40.9 Información relacionada<strong>Manual</strong> <strong>de</strong> <strong>referencia</strong> <strong>de</strong> <strong>RAPID</strong>Principios <strong>de</strong> movimiento y E/S:Tipos <strong>de</strong> datos:Instrucciones:Sistemas <strong>de</strong> coor<strong>de</strong>nadaswztemporarywzstationaryshapedataWZBoxDefWZSphDefWZCylDefWZLimSupWZDOSetWZDisableWZEnableWZFreeDescripción general <strong>de</strong> <strong>RAPID</strong> 197


Zonas mundo198 Descripción general <strong>de</strong> <strong>RAPID</strong>


Principios <strong>de</strong> E/S41 Principios <strong>de</strong> E/SNormalmente, el robot cuenta con una o varias placas <strong>de</strong> E/S. Cada una <strong>de</strong> las placastiene varios canales digitales y/o analógicos que <strong>de</strong>ben conectarse a señales lógicaspara po<strong>de</strong>r usarlos. Esto se realiza en los parámetros <strong>de</strong>l sistema y suele estar ya hechocon nombres estándar antes <strong>de</strong> la entrega <strong>de</strong>l robot. Siempre <strong>de</strong>ben usarse nombreslógicos durante la programación.Un mismo canal físico pue<strong>de</strong> conectarse a varios nombres lógicos, pero también pue<strong>de</strong>quedar sin ninguna conexión lógica (consulte la Figura 53).Canal físicoSeñal lógicaIN1IN2IN16....do1alimentadorOUT1OUT2OUT16....Placa <strong>de</strong> E/Spinzado2alimentador2do16Figura 53Para po<strong>de</strong>r usar una placa <strong>de</strong> E/S, sus canales <strong>de</strong>ben tener asignados nombreslógicos. En el ejemplo anterior, la salida física 2 está conectada a dos nombreslógicos diferentes. Por otro lado, IN16 no tiene ningún nombre lógico y por tanto nopue<strong>de</strong> usarse.41.1 Características <strong>de</strong> las señalesLas características <strong>de</strong> una señal <strong>de</strong>pen<strong>de</strong>n <strong>de</strong>l canal físico utilizado, así como <strong>de</strong> laforma <strong>de</strong> <strong>de</strong>finir el canal en los parámetros <strong>de</strong>l sistema. El canal físico <strong>de</strong>termina losretardos <strong>de</strong> tiempo y los niveles <strong>de</strong> voltaje (consulte la especificación <strong>de</strong>l producto).Las características, los tiempos <strong>de</strong> filtro y la escala entre los valores programados y losfísicos se <strong>de</strong>finen mediante parámetros <strong>de</strong>l sistema.Cuando se encien<strong>de</strong> la fuente <strong>de</strong> alimentación <strong>de</strong>l robot, todas las señales tienen elvalor cero. Sin embargo, no se ven afectadas por paros <strong>de</strong> emergencia o eventossimilares.Descripción general <strong>de</strong> <strong>RAPID</strong> 199


Principios <strong>de</strong> E/SLas salidas pue<strong>de</strong>n recibir el valor uno o cero <strong>de</strong>s<strong>de</strong> <strong>de</strong>ntro <strong>de</strong>l programa. Esto tambiénpue<strong>de</strong> hacerse utilizando un retardo o en forma <strong>de</strong> un pulso. Si se solicita un pulso o uncambio retardado para una salida, la ejecución <strong>de</strong>l programa continúa. A continuación, elcambio se implementa sin que el resto <strong>de</strong> la ejecución <strong>de</strong>l programa se vea afectada. Si porotro lado se solicita un nuevo cambio para la misma salida antes <strong>de</strong> que transcurra eltiempo especificado, no se realiza el primer cambio (consulte la Figura 54).1SetDO \SDelay:=1, do1;WaitTime 0.5;PulseDO do1;Valor <strong>de</strong> la señal0 0.5 1HoraFigura 54La instrucción SetDO no llega a realizarse porque se emite un nuevo comando antes<strong>de</strong> que transcurra el retardo especificado.41.2 Señales conectadas a interrupcionesLas funciones <strong>de</strong> interrupciones <strong>de</strong> <strong>RAPID</strong> pue<strong>de</strong>n conectarse a cambios <strong>de</strong> señalesdigitales. La llamada a la función pue<strong>de</strong> producirse en el momento <strong>de</strong> activar o<strong>de</strong>sactivar una señal. Sin embargo, si la señal digital cambia con mucha rapi<strong>de</strong>z, esposible que la interrupción no se procese.Por ejemplo:Si se conecta una función a una señal <strong>de</strong>nominada do1 y se crea un programa como elsiguiente:SetDO do1,1;SetDO do1,0;La señal se activa y se <strong>de</strong>sactiva a continuación en unos pocos milisegundos. En estecaso, es posible que la interrupción se pierda. Para asegurarse <strong>de</strong> que se <strong>de</strong>tecte lainterrupción, asegúrese <strong>de</strong> que la salida está activada antes <strong>de</strong> ponerla a cero.Por ejemplo:SetDO do1,1;WaitDO do1 ,1;SetDO do1,0;De esta forma, la interrupción no se pier<strong>de</strong> en ningún caso.200 Descripción general <strong>de</strong> <strong>RAPID</strong>


Principios <strong>de</strong> E/S41.3 Señales <strong>de</strong>l sistemaEs posible conectar entre sí las señales lógicas mediante funciones especiales <strong>de</strong>lsistema. Por ejemplo, si se conecta una entrada a la función Start <strong>de</strong>l sistema, se generaautomáticamente un inicio <strong>de</strong> programa tan pronto como se activa esta entrada.Normalmente, estas funciones <strong>de</strong> sistema sólo están activadas en el modo automático.Para obtener más información, consulte el Capítulo 9, Parámetros <strong>de</strong>l sistema, o elcapítulo Instalación y validación <strong>de</strong> la instalación - Comunicación con un PCL <strong>de</strong>lmanual <strong>de</strong>l producto.41.4 Conexiones cruzadasLas señales digitales pue<strong>de</strong>n conectarse entre sí <strong>de</strong> forma que una afecteautomáticamente a la otra.Ejemplos:- Es posible conectar una señal <strong>de</strong> salida a una o varias señales <strong>de</strong> entrada osalida.- Es posible conectar una señal <strong>de</strong> entrada a una o varias señales <strong>de</strong> entrada osalida.- Si se utiliza la misma señal en varias conexiones cruzadas, el valor <strong>de</strong> la señales el mismo que el valor que se activó (modificó) en último lugar.- Las conexiones cruzadas pue<strong>de</strong>n estar vinculadas entre sí. En otras palabras,una conexión cruzada pue<strong>de</strong> actuar sobre otra. Sin embargo, no <strong>de</strong>ben estarconectadas <strong>de</strong> forma que creen un “círculo vicioso”, por ejemplo si se hace unaconexión cruzada <strong>de</strong> di1 a di2 mientras di2 tiene una conexión cruzada a di1.- Si existe una conexión cruzada con una señal <strong>de</strong> entrada, la conexión físicacorrespondiente se <strong>de</strong>sactiva automáticamente. Por tanto, no se <strong>de</strong>tectaráningún cambio que se haga en el canal físico.- Ni los pulsos ni los retardos se transmiten a través <strong>de</strong> las conexiones cruzadas.- Es posible <strong>de</strong>finir condiciones lógicas mediante NOT, AND y OR (opción:Advanced functions).- di2=di1- di3=di2- do4=di2Si di1 cambia, di2, di3 y do4 cambiarán al valor correspondiente.- do8=do7- do8=di5Si se cambia el valor <strong>de</strong> do7 a 1, do8 también pasa a tener el valor 1. Si acontinuación se cambia el valor <strong>de</strong> di5 a 0, se cambia también el valor <strong>de</strong> do8 (apesar <strong>de</strong> que do7 sigue teniendo el valor 1).- do5=di6 y do1Do5 cambia a 1 si tanto di6 como do1 cambian a 1.Descripción general <strong>de</strong> <strong>RAPID</strong> 201


Principios <strong>de</strong> E/S41.5 LimitacionesEs posible utilizar pulsos con un máximo <strong>de</strong> 10 señales y retardos con un máximo <strong>de</strong>20 señales en un momento <strong>de</strong>terminado.41.6 Información relacionadaDescrito en:Definición <strong>de</strong> placas y señales <strong>de</strong> E/S <strong>Manual</strong> <strong>de</strong> <strong>referencia</strong> técnica -Parámetros <strong>de</strong>l sistemaInstrucciones para la gestión <strong>de</strong> E/SResumen sobre <strong>RAPID</strong> - Señales <strong>de</strong>entrada y salidaManipulación manual <strong>de</strong> E/S<strong>Manual</strong> <strong>de</strong>l operador - IRC5 conFlexPendant - Entradas y salidas202 Descripción general <strong>de</strong> <strong>RAPID</strong>


Programación fuera <strong>de</strong> línea42 Programación fuera <strong>de</strong> líneaLos programas <strong>de</strong> <strong>RAPID</strong> pue<strong>de</strong>n crearse, mantenerse y almacenarse fácilmente en unor<strong>de</strong>nador normal <strong>de</strong> oficina. Toda la información pue<strong>de</strong> leerse y modificarsedirectamente mediante un editor <strong>de</strong> textos convencional. En este capítulo se explica elprocedimiento <strong>de</strong> trabajo para hacerlo. A<strong>de</strong>más <strong>de</strong> la programación fuera <strong>de</strong> línea,pue<strong>de</strong> usar la herramienta asistida por or<strong>de</strong>nador, QuickTeach.42.1 Formato <strong>de</strong> archivoEl robot almacena y lee los programas <strong>de</strong> <strong>RAPID</strong> en formato <strong>de</strong> texto (ASCII) y escompatible con los formatos <strong>de</strong> texto <strong>de</strong> DOS y UNIX. Si utiliza un procesador <strong>de</strong>textos para editar los programas, <strong>de</strong>be guardarlos con el formato <strong>de</strong> texto (ASCII) antes<strong>de</strong> usarlos en el robot.42.2 EdiciónCuando se crea o modifica un programa en un procesador <strong>de</strong> textos, toda lainformación se maneja en forma <strong>de</strong> texto. Esto significa que la información acerca <strong>de</strong>datos y rutinas será algo distinta <strong>de</strong> la que se muestra en el FlexPendant.Recuer<strong>de</strong> que el valor <strong>de</strong> una posición almacenada sólo se muestra como un asterisco(*) en el FlexPendant, mientras que el archivo <strong>de</strong> texto contendrá el valor real <strong>de</strong> laposición (x, y, z, etc.).Para reducir al mínimo el riesgo <strong>de</strong> cometer errores en la sintaxis (programas confallos), <strong>de</strong>be utilizar una plantilla. Las plantillas pue<strong>de</strong>n tener la forma <strong>de</strong> un programacreado anteriormente con el robot o utilizando QuickTeach. Estos programas pue<strong>de</strong>nabrirse directamente <strong>de</strong>s<strong>de</strong> un procesador <strong>de</strong> textos sin necesidad <strong>de</strong> convertirlos.42.3 Comprobación <strong>de</strong> la sintaxisLos programas <strong>de</strong>ben ser correctos sintácticamente antes <strong>de</strong> cargarlos en el robot. Conello se indica que el texto <strong>de</strong>be cumplir las reglas fundamentales <strong>de</strong>l lenguaje <strong>RAPID</strong>.Debe utilizar uno <strong>de</strong> los métodos siguientes para <strong>de</strong>tectar errores en el texto:• Guar<strong>de</strong> el archivo en un disquete e intente abrirlo en el robot. Si existen errores <strong>de</strong>sintaxis, el programa no será aceptado y se mostrará un mensaje <strong>de</strong> error. Para obtenerinformación acerca <strong>de</strong>l tipo <strong>de</strong> error, el robot almacena un archivo <strong>de</strong> registro<strong>de</strong>nominado PGMCPL1.LOG en el disco RAM interno. Copie el archivo <strong>de</strong> registroa un disquete utilizando el Administrador <strong>de</strong> archivos <strong>de</strong>l robot. Abra el archivo <strong>de</strong>registro en un procesador <strong>de</strong> textos, don<strong>de</strong> podrá ver qué líneas eran incorrectas,a<strong>de</strong>más <strong>de</strong> una <strong>de</strong>scripción <strong>de</strong>l error.• Abra el archivo en QuickTeach o ProgramMaker.• Utilice un programa <strong>de</strong> comprobación <strong>de</strong> sintaxis <strong>de</strong> <strong>RAPID</strong> para PC.Descripción general <strong>de</strong> <strong>RAPID</strong> 203


Programación fuera <strong>de</strong> líneaUna vez que el programa es correcto sintácticamente, pue<strong>de</strong> comprobarlo y editarlo enel robot. Para asegurarse <strong>de</strong> que todas las <strong>referencia</strong>s a rutinas y datos sean correctas,utilice el comando Archivo: Verificar Programa. Si se ha modificado el programa enel robot, pue<strong>de</strong> almacenarlo <strong>de</strong> nuevo en el disquete y procesarlo o almacenarlo en unPC.42.4 EjemplosA continuación aparecen algunos ejemplos <strong>de</strong>l aspecto que tienen las rutinas enformato <strong>de</strong> texto.%%%VERSION: 1LANGUAGE: ENGLISH%%%MODULE mainVAR intnum process_int ;! Demostración <strong>de</strong> un programa <strong>de</strong> <strong>RAPID</strong>PROC main()MoveL p1, v200, fine, gun1;ENDPROCTRAP InvertDo12! Rutina TRAP para TriggIntTEST INTNOCASE process_int:InvertDO do12;DEFAULT:TPWrite “TRAP <strong>de</strong>sconocido,número=”\Num:=INTNO;ENDTESTENDTRAPLOCAL FUNC num MaxNum(num t1, num t2)IF t1 > t2 THENRETURN t1;ELSERETURN t2;ENDIFENDFUNCENDMODULE204 Descripción general <strong>de</strong> <strong>RAPID</strong>


Programación fuera <strong>de</strong> línea42.5 Creación <strong>de</strong> instrucciones propiasPara facilitar la programación, pue<strong>de</strong> personalizar sus propias instrucciones. Se creancon la forma <strong>de</strong> rutinas nuevas, pero funcionan como instrucciones a la hora <strong>de</strong>programar y realizar ejecuciones <strong>de</strong> test:- Pue<strong>de</strong> tomarlas <strong>de</strong> la lista <strong>de</strong> selección <strong>de</strong> instrucciones y programarlas comoinstrucciones normales.- Durante la ejecución paso a paso, se ejecuta la rutina completa.• Cree un nuevo módulo <strong>de</strong> sistema. En él pue<strong>de</strong> almacenar las rutinas que se usaráncomo instrucciones. También pue<strong>de</strong> situarlas en el módulo <strong>de</strong> sistema USER.• Cree una rutina en este sistema con el nombre que <strong>de</strong>sea asignar a la nuevainstrucción. Los argumentos <strong>de</strong> la instrucción se <strong>de</strong>finen en forma <strong>de</strong> parámetros <strong>de</strong>rutina. Observe que el nombre <strong>de</strong> los parámetros se mostrará en la ventana durante laprogramación y por tanto <strong>de</strong>be usar nombres fácilmente comprensibles para elusuario.• Sitúe la rutina en una <strong>de</strong> las listas <strong>de</strong> selección <strong>de</strong> instrucciones habituales.• Si <strong>de</strong>sea que la instrucción se comporte <strong>de</strong> una forma <strong>de</strong>terminada durante laejecución hacia atrás, pue<strong>de</strong> hacerlo en forma <strong>de</strong> un gestor <strong>de</strong> ejecución hacia atrás.Si no utiliza un gestor <strong>de</strong> este tipo, no podrá ir más allá <strong>de</strong> la instrucción durante laejecución <strong>de</strong>l programa hacia atrás (consulte el Capítulo 13 <strong>de</strong> este manual,Características básicas). Pue<strong>de</strong> introducir un gestor <strong>de</strong> ejecución hacia atrás medianteel comando Rutina: Añadir Gestor Atrás en la ventana Rutinas <strong>de</strong> Programa.• Pruebe la rutina <strong>de</strong>talladamente, <strong>de</strong> forma que funcione con distintos tipos <strong>de</strong> datos<strong>de</strong> entrada (argumentos).• Cambie el atributo <strong>de</strong>l módulo a NOSTEPIN. A partir <strong>de</strong> ese momento, durante laejecución paso a paso se ejecuta la rutina completa. Sin embargo, <strong>de</strong>be introducir esteatributo fuera <strong>de</strong> línea.Ejemplo: Para facilitar el manejo <strong>de</strong> la pinza, se crean dos instrucciones nuevas,GripOpen y GripClose. El nombre <strong>de</strong> la señal <strong>de</strong> salida se asigna al argumento <strong>de</strong> lainstrucción, por ejemplo GripOpen gripper1.MODULE My_instr (SYSMODULE, NOSTEPIN)PROC GripOpen (VAR signaldoGripper)Set Gripper;WaitTime 0.2;ENDPROCPROC GripClose (VAR signaldo Gripper)Reset Gripper;WaitTime 0.2;ENDPROCENDMODULEDescripción general <strong>de</strong> <strong>RAPID</strong> 205


Programación fuera <strong>de</strong> línea206 Descripción general <strong>de</strong> <strong>RAPID</strong>


Módulo <strong>de</strong> sistema User43 Módulo <strong>de</strong> sistema UserCon el fin <strong>de</strong> facilitar la programación, el robot se suministra con datos pre<strong>de</strong>finidos.No es necesario crear estos datos y, por tanto, pue<strong>de</strong>n usarse directamente.Si se utilizan estos datos, la programación inicial resulta más sencilla. Sin embargo,suele ser buena i<strong>de</strong>a asignar sus propios nombres a los datos que use, con el fin <strong>de</strong>facilitar la lectura <strong>de</strong>l programa.43.1 ContenidoUser compren<strong>de</strong> cinco datos numéricos (registros), un dato <strong>de</strong> objetos <strong>de</strong> trabajo, unreloj y dos valores simbólicos para señales digitales.Nombre Tipo <strong>de</strong> datos Declaraciónreg1 num VAR num reg1:=0reg2 . .reg3 . .reg4 . .reg5 num VAR num reg5:=0wobj1 wobjdata PERS wobjdatawobj1:=wobj0clock1 clock VAR clock clock1User es un módulo <strong>de</strong> sistema, lo que significa que siempre está presente en la memoria<strong>de</strong>l robot, con in<strong>de</strong>pen<strong>de</strong>ncia <strong>de</strong> qué programa esté cargado.43.2 Creación <strong>de</strong> nuevos datos en este móduloPue<strong>de</strong> usar este módulo para crear datos y rutinas que <strong>de</strong>ban estar siempre presentes enla memoria <strong>de</strong> programas, in<strong>de</strong>pendientemente <strong>de</strong> qué programa esté cargado. Porejemplo, pue<strong>de</strong> cargar rutinas <strong>de</strong> herramientas y servicios.• Seleccione Ver: Módulos en la ventana Programa.• Seleccione el módulo <strong>de</strong> sistema User y presione Intro .• Modifique y cree sus datos y rutinas <strong>de</strong> la forma normal (consulte Programación ytesting).Descripción general <strong>de</strong> <strong>RAPID</strong> 207


Módulo <strong>de</strong> sistema User43.3 Eliminación <strong>de</strong> esta informaciónAviso: Si elimina el módulo, la instrucción CallByVar no funcionará.Para eliminar toda la información (es <strong>de</strong>cir, todo el módulo)• Seleccione Ver: Módulos en la ventana Programa.• Seleccione el módulo User.• Presione Borrar .Para modificar o eliminar datos concretos• Seleccione Ver: Datos en la ventana Programa.• Seleccione Datos: En todos los módulos.• Seleccione el dato <strong>de</strong>seado. Si no aparecen, presione la tecla <strong>de</strong> función Tipos paraseleccionar el tipo <strong>de</strong> dato correcto.• Modifique o elimine los datos <strong>de</strong> la forma normal (consulte Programación y testing).208 Descripción general <strong>de</strong> <strong>RAPID</strong>


Glosario44 GlosarioArgumentoModo automáticoComponenteConfiguraciónConstanteLas partes <strong>de</strong> una instrucción que pue<strong>de</strong>n cambiarse, es <strong>de</strong>cir,todo menos el nombre <strong>de</strong> la instrucción.El modo aplicable cuando se cambia el selector <strong>de</strong> modo a.Una parte <strong>de</strong> un registro.La posición <strong>de</strong> los ejes <strong>de</strong>l robot en un punto <strong>de</strong>terminado.Un dato cuyo valor sólo pue<strong>de</strong> cambiarse manualmente.Trayectoria <strong>de</strong> esquinaLa trayectoria generada al atravesar un punto <strong>de</strong> paso.DeclaraciónLa parte <strong>de</strong> una rutina o <strong>de</strong> un dato en la que se <strong>de</strong>finen suspropieda<strong>de</strong>s.Diálogo/ventana <strong>de</strong> diálogoSiempre es necesario cerrar las ventanas <strong>de</strong> diálogo queaparecen en la pantalla <strong>de</strong>l FlexPendant (normalmentepresionando OK o Cancelar antes <strong>de</strong> continuar.Gestor <strong>de</strong> erroresExpresiónPunto <strong>de</strong> pasoFunciónGrupo <strong>de</strong> señalesInterrupciónE/SRutina MainModo manualDentro <strong>de</strong> una rutina, la parte separada en la que se gestiona unerror. Después <strong>de</strong>l gestor, la ejecución se reanudaautomáticamente.Una secuencia <strong>de</strong> datos y operandos asociados, por ejemploreg1+5 o reg1>5.Un punto al que se acerca el robot en su avance, pero sin<strong>de</strong>tenerse en él. La distancia existente hasta el punto <strong>de</strong>pen<strong>de</strong><strong>de</strong>l tamaño <strong>de</strong> la zona programada.Una rutina que <strong>de</strong>vuelve un valor.Un número <strong>de</strong> señales digitales que se agrupan y se gestionancomo una sola señal.Un evento que interrumpe temporalmente la ejecución <strong>de</strong>lprograma y ejecuta una rutina TRAP.Entradas y salidas eléctricas.La rutina que suele ponerse en marcha cuando se presiona latecla Arranca.El modo aplicable cuando se cambia el selector <strong>de</strong> modo a.Descripción general <strong>de</strong> <strong>RAPID</strong> 209


GlosarioUnidad mecánicaMóduloMotores On/OffPanel <strong>de</strong> controlOrientaciónParámetroVariable persistenteProcedimientoProgramaDatos <strong>de</strong> programaUn grupo <strong>de</strong> ejes externos.Un grupo <strong>de</strong> rutinas y datos, es <strong>de</strong>cir, una parte <strong>de</strong>l programa.El estado <strong>de</strong>l robot, es <strong>de</strong>cir, si la fuente <strong>de</strong> alimentación <strong>de</strong> losmotores está activada.El panel situado en la parte <strong>de</strong>lantera <strong>de</strong>l sistema <strong>de</strong> control.Por ejemplo, la dirección <strong>de</strong> un elemento terminal.El dato <strong>de</strong> entrada <strong>de</strong> una rutina, enviado con la llamada a larutina. Correspon<strong>de</strong> al argumento <strong>de</strong> una instrucción.Una variable cuyo valor es persistente.Una rutina que pue<strong>de</strong> formar in<strong>de</strong>pendientemente unainstrucción cuando se la llama.El conjunto <strong>de</strong> instrucciones y datos que <strong>de</strong>finen la tarea <strong>de</strong>lrobot. Sin embargo, los programas no contienen módulos <strong>de</strong>sistema.Los datos que están disponibles en todo un módulo o en elprograma completo.Módulo <strong>de</strong> programa Un módulo incluido en el programa <strong>de</strong>l robot y que setransfiere al copiar el programa a un disquete, por ejemplo.RegistroRutinaDatos <strong>de</strong> rutinaPunto <strong>de</strong> inicioPunto <strong>de</strong> paroMódulo <strong>de</strong> sistemaUn tipo <strong>de</strong> datos compuesto.Un subprograma.Datos locales que sólo pue<strong>de</strong>n usarse en una rutina.La instrucción que se ejecuta en primer lugar cuando comienzala ejecución <strong>de</strong>l programa.Un punto en el que el robot se <strong>de</strong>tiene antes <strong>de</strong> continuar alpunto siguiente.Un módulo que está siempre presente en la memoria <strong>de</strong>programas. Cuando se lee un nuevo programa, los módulos <strong>de</strong>sistema permanecen en la memoria <strong>de</strong> programas.Parámetros <strong>de</strong>l sistemaLos parámetros que <strong>de</strong>finen el equipo y las propieda<strong>de</strong>s <strong>de</strong>lrobot, o los datos <strong>de</strong> configuración, en otras palabras.Punto central <strong>de</strong> la herramienta (TCP)El punto, normalmente en la punta <strong>de</strong> una herramienta, que semueve siguiendo una trayectoria programada y a la velocidadprogramada.210 Descripción general <strong>de</strong> <strong>RAPID</strong>


GlosarioRutina TRAPVariableVentanaZonaLa rutina que <strong>de</strong>fine qué <strong>de</strong>be ocurrir cuando se produce unainterrupción <strong>de</strong>terminada.Un dato cuyo valor pue<strong>de</strong> cambiarse <strong>de</strong>s<strong>de</strong> un programa peroque pier<strong>de</strong> su valor (vuelve a su valor inicial) cuando se poneen marcha un programa <strong>de</strong>s<strong>de</strong> el principio.El robot se programa y utiliza por medio <strong>de</strong> un conjunto <strong>de</strong>ventanas, por ejemplo, la ventana Programa y la ventanaServicio. Para salir <strong>de</strong> una ventana, sólo tiene que seleccionarotra ventana.El espacio esférico que ro<strong>de</strong>a a un punto <strong>de</strong> paso. Tan prontocomo el robot entra en esta zona, comienza a trasladarse haciala siguiente posición.Descripción general <strong>de</strong> <strong>RAPID</strong> 211


Glosario212 Descripción general <strong>de</strong> <strong>RAPID</strong>


Índice alfabéticoAagregado 103alias, tipo <strong>de</strong> dato 104ámbitoámbito <strong>de</strong> una rutina 95dato, ámbito 105AND 114archivo, instrucciones 33argumentocondicional 117argumento condicional 117aritmética, expresión 113asignar un valor a un dato 9Bbase <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> <strong>de</strong>splazamiento 146búsqueda, instrucciones 20Cca<strong>de</strong>na 86comentario 9, 87componente <strong>de</strong> un registro 103comunicación 51comunicación, instrucciones 33conexiones cruzadas 201configuración <strong>de</strong> ejes 173configuración <strong>de</strong>l robot 173CONST 107constante 105convenciones tipográficas 2Ddatos 105utilizados en expresiones 115datos <strong>de</strong> programa 105datos <strong>de</strong> rutina 105<strong>de</strong>claraciónconstante 107módulo 92persistente 107rutina 97variable 106<strong>de</strong>tener la ejecución <strong>de</strong>l programa 8DIV 113EE/S <strong>de</strong> posición fija 171E/S, sincronización 167ejecución hacia atrás 129ejecución simultánea 168, 185ejes externoscoordinados 147ejes externos coordinados 147encabezado <strong>de</strong>l archivo 88entrada, instrucciones 29ERRNO 121expresión 113expresión <strong>de</strong> ca<strong>de</strong>na <strong>de</strong> caracteres 115Fflujo <strong>de</strong> programa, instrucciones 7fuera <strong>de</strong> línea, programar 203función 95Ggestor <strong>de</strong> ejecución hacia atrás 97, 129, 136,205gestor <strong>de</strong> errores 121globaldatos 105rutina 95Ii<strong>de</strong>ntificador 85igualdad, tipo <strong>de</strong> dato 104instrucciones <strong>de</strong> espera 9instrucciones matemáticas 47, 61interpolación 153interpolación lineal modificada 156interrupción 37, 123Lllamada a función 116localdatos 105rutina 95lógica, expresión 114Mmarcador <strong>de</strong> sustitución 87matriz 106, 107Descripción general <strong>de</strong> <strong>RAPID</strong> 213


MOD 113módulo 91<strong>de</strong>claración 92módulo <strong>de</strong> programa 91módulo <strong>de</strong> sistema 92movimiento circular 155movimiento <strong>de</strong> ejes 153movimiento lineal 154movimiento, instrucciones 20movimiento, instrucciones para parámetros 13multitarea 63, 135NNOT 114número <strong>de</strong> error 121Ooperadorprioridad 117OR 114Ppalabras reservadas 85parámetro 96parámetro opcional 96PERS 107persistente 105posicióninstrucción 20Principios <strong>de</strong> E/S 199procedimiento 95programa 91programar 203punto central <strong>de</strong> la herramienta 143, 177Rsemivalor, tipo <strong>de</strong> datos 103servo suave 165singularidad 187, 191sistema <strong>de</strong> coor<strong>de</strong>nadas 143, 177sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> la base 143sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> la herramienta 149sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> la muñeca 149sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> objeto 145sistema <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong>l usuario 145sistema <strong>de</strong> coor<strong>de</strong>nadas mundo 144switch 96TTCP 143, 177estacionario 150TCP estacionario 150tiempo, instrucciones 45tipo <strong>de</strong> datos 103tipos <strong>de</strong> datos sin valores 103TRAP, rutina 95, 123trayectoria <strong>de</strong> esquina 157trayectoria, sincronización 171UUser, módulo <strong>de</strong> sistema 207Vvalor lógico 86valor numérico 86VAR 106variable 105XXOR 114Recuperación en caso <strong>de</strong> error 125recuperación en caso <strong>de</strong> error 121registro 103reglas <strong>de</strong> sintaxis 2rutina 95<strong>de</strong>claración 97rutina principal 91Ssalida, instrucciones 29214 Descripción general <strong>de</strong> <strong>RAPID</strong>


ABB Automation Technologies ABRoboticsSE-721 68 VästeråsSUECIATeléfono: +46 (0) 21-34 40 00Fax: +46 (0) 21-13 25 923HAC16580-5, Revisión A , Es

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!