Está en la página 1de 52

6 6

Robótica
DIDÁCTICA
UNIDAD

6. Lenguaje Rapid
6. Lenguaje Rapid

ÍNDICE
OBJETIVOS................................................................................................................................................................ 187
INTRODUCCIÓN....................................................................................................................................................... 188
6.1. Definición del lenguaje RAPID............................................................................................................................ 189
6.2. Estructura de un programa de robot.................................................................................................................. 190
6.3. Instrucciones Rapid............................................................................................................................................. 191
6.3.1. Tabla de instrucciones Rapid................................................................................................................................ 191
6.4. Instrucciones de Movimiento.............................................................................................................................. 194
6.4.1. MoveL movimiento Lineal.................................................................................................................................... 194
6.4.2. MoveJ movimiento articular o de ejes.................................................................................................................... 196
6.4.3. MoveC movimiento circular del TCP...................................................................................................................... 197
6.4.4. MoveAbsJ movimiento absoluto de ejes................................................................................................................ 199
6.4.5. MoveLDO, MoveJDO Movimiento lineal y joint y activación de una salida digital .......................................................... 201
6.5. Instrucciones Lógicas......................................................................................................................................... 202
6.5.1. Instrucción “:=”.................................................................................................................................................. 202
6.5.2. Instrucción Procall.............................................................................................................................................. 202
6.5.3. Instrucción ClKStart y ClkStop arranque y paro de un cronometro.............................................................................. 203
6.5.4. Add, Incr, Decr y Clear de un registro numérico....................................................................................................... 204
6.5.5. Exit Fin de ejecución de un programa.................................................................................................................... 205
6.5.6. For Repetición de un número dado de veces......................................................................................................... 205
6.5.7. IF, si se cumple la condición................................................................................................................................. 207
6.5.8. TEST Dependiendo del valor de una expresión....................................................................................................... 208
6.5.9. RETURN Fin de ejecución de una rutina................................................................................................................. 208
6.5.10. Stop. Paro de la ejecución del programa.............................................................................................................. 210
6.6. Instrucciones de espera...................................................................................................................................... 212
6.6.1. WaitDi Espera la activación de una señal de entrada digital....................................................................................... 212
6.6.2. WaitDO Espera la activación de una señal una salida digital....................................................................................... 213
6.6.3. WaitUntil Esperar hasta el cumplimiento de una condición........................................................................................ 213
6.6.4. WaitTime Espera durante un tiempo especificado.................................................................................................... 214
6.6.5. WHILE Repetición de una instrucción mientras….................................................................................................... 214
6.7. Instrucciones de control o cambio de registros................................................................................................ 216
6.7.1. TPErase Borrado del texto en la unidad de programación......................................................................................... 216
6.7.2. TPWrite Escritura en la unidad de programación..................................................................................................... 216
6.7.3. TPReadNum Lectura de número en la TPU............................................................................................................ 217
6.7.4. TPReadFK Lectura de las teclas de función............................................................................................................ 218

185
Robótica

6.8. Instrucciones de activación y desactivación de E&S........................................................................................ 220


6.8.1. Creación de entradas y salidas............................................................................................................................. 220
6.8.2. Instrucción Set, activación de una salida digital ...................................................................................................... 222
6.8.3. Instrucción SetAO, activación de una salida digital analógica..................................................................................... 222
6.8.4. Instrucción SetDO, cambio del valor de una señal de salida digital.............................................................................. 223
6.8.5. Instrucción SetGO, cambio de un grupo de salidas digitales...................................................................................... 224
6.8.6. Reset Puesta a cero de una señal de salida digital................................................................................................... 224
6.8.7. PulseDo, generación de un pulso en una salida digital.............................................................................................. 224
6.9. Tipos de datos..................................................................................................................................................... 226
6.9.1. Bool, valores lógicos........................................................................................................................................... 226
6.9.2. Clock, medida del tiempo.................................................................................................................................... 227
6.9.3. Num, valores numéricos (registros)....................................................................................................................... 227
6.9.4. Robtarget, datos de posición............................................................................................................................... 228
6.9.5. Tooldata, datos de herramienta............................................................................................................................. 229

RESUMEN................................................................................................................................................................... 233

186
6. Lenguaje Rapid

OBJETIVOS
■ El principal objetivo de esta unidad es conocer el lenguaje RAPID.

■ Definiciones y estructuración de distintas instrucciones RAPID.

■ Tener localizadas todas o por lo menos las instrucciones más usuales en robótica industrial.


Conocer instrucciones lógicas, de control o cambio de parámetros, controlar la estructura
de un reloj lógico, activar y desactivar señales analógicas digitales o de grupos.


Estructurar unas instrucciones para ejecutar una trayectoria, para ejecutar un proceso
productivo real.

■ Controlar mensajes por pantalla.

■ Realizar distintas operaciones determinando condiciones.

■ Saber distinguir los distintos tipos de datos que aparezcan en programación.

187
Robótica

INTRODUCCIÓN

En este capítulo daremos a conocer los fundamentos Veremos las instrucciones de movimiento, lógica, de
de la robótica actual, sus antecedentes y sus espera, los registros, las instrucciones de control de
posibilidades. Estudiaremos en este capítulo el porqué entradas y activación de salidas digitales.
y el cómo de la aparición de los robots… También veremos los diferentes tipos de datos más
Para poder comprender el manejo de los robots usados y los ejemplos de cómo podemos usarlos.
hemos de comprender el lenguaje de programación, el
lenguaje RAPID es un lenguaje estructurado parecido
al Cobol o al Pascal.

188
6. Lenguaje Rapid

6.1. Definición del lenguaje RAPID


RAPID es un lenguaje de programación de uno de los más importantes fabricantes a
nivel mundial de robótica, nosotros estudiaremos este lenguaje, ya que es muy sencillo
de comprender y uno de los más completos a la hora de trabajar en la industria,
el lenguaje RAPID abarca un gran número de posibilidades a la hora de realizar un
proceso productivo, un proceso repetitivo.

Se recomienda utilizar la documentación que adquiriremos al comprar un


robot industrial cuando se desee empezar a programar el robot, hasta haber
adquirido cierta familiaridad con el sistema.
En nuestro caso tendremos especial recordatorio al tema anterior a esta
actividad, donde se conoce el funcionamiento básico del sistema robotizado,
su panel de control y muy especialmente el funcionamiento de la unidad de
programación y sus menús.

189
Robótica

6.2. Estructura de un programa de robot

Figura 6.1. Estructura programa de robot.

190
6. Lenguaje Rapid

6.3. Instrucciones Rapid


Vamos a presentar una lista amplia de las instrucciones que el lenguaje RAPID
nos relata. Como se podrá observar son múltiples las instrucciones que podemos
encontrarnos, nosotros veremos un gran número de instrucciones, las más comunes y
empleadas para poder realizar programas de un nivel avanzado, empezaremos poco a
poco a complicar los programas hasta alcanzar un nivel óptimo para poder programar
cualquier tipo de robot industrial con tan solo realizar los cambios pertinentes de
conceptos de programación.

Empecemos presentando todas las instrucciones de programación RAPID.

6.3.1. Tabla de instrucciones Rapid


Como podrás ver en la siguiente tabla, en la parte izquierda aparece la instrucción
Rapid, a la derecha la denominación de lo que significa dicha instrucción, la definición:

La instrucción está escrita tal y como debemos escribirla en nuestro


programa, si nuestro programa lo editamos o lo crearemos, en un editor
de texto, si te confundes a la hora de escribir la instrucción, en el editor de
texto, el robot te lanzará por pantalla, un mensaje de error de sintaxis y te
indicará con exactitud donde se ha cometido el error, línea y columna de
programa.
Si nosotros programamos el robot mediante la unidad de programación, los
errores de sintaxis los eliminaremos, ya que es el robot, quien escribe las
líneas de programa automáticamente, al elegir nosotros la o las instrucciones
deseadas y necesarias para nuestro proceso de programación.

Veamos entonces en las siguientes páginas, todas las instrucciones del lenguaje de
programación Rapid más usadas y la denominación de cada una de las instrucciones.
Serán explicada cada una de ellas mediante vídeos y mediante la unidad de
programación.

Instrucción Denominación
MoveL Movimiento lineal del TCP.
MoveJ Movimiento articular del TCP.
MoveC Movimiento circular del TCP.
MoveAbsJ Movimiento de los ejes del robot a una posición de ejes absoluta.
MoveLDo Movimiento Lineal del TCP y activación de una salida digital a la finalización del
movimiento.
MoveJDo Movimiento articular del TCP y activación de una salida digital a la finalización del
movimiento.
SearchL Búsqueda de un punto de manera lineal mediante la activación de una entrada.

191
Robótica

Instrucción Denominación
Set Activación de una salida digital a través de la TPU.
Reset Puesta a cero de una salida digital.
SetDo Cambio de valor de una salida digital.
SetAO Cambio de una señal de salida analógica.
SetGo Cambio del valor de un grupo de salidas digitales.
PulseDo Activación de una salida digital durante un tiempo.
InvertDo Invierte el valor de una salida digital.
IODisable Inhabilita la unidad de E&S.
IOEnable Habilita la unidad de E&S.
:= Asigna un valor a un dato.
Add Suma en una unidad a un dato de tipo numérico.
Clear Borra el valor de un dato de tipo numérico.
Decr Resta en una unidad el valor de un tipo de dato numérico.
Incr Incrementa un registro en una unidad.
Comment comentarios.
ActUnit Activación de una unidad mecánica.
DeactUnit Desactivación de una unidad mecánica.
ProCall Llamada a un procedimiento.
Stop Paro de ejecución del programa.
StopMove Paro del movimiento del robot.
StartMove Rearranque del movimiento del robot.
CLkStop Paro del reloj de cronometraje.
ClkStart Arranque de un reloj de conometraje.
IF Si se cumple una condición, entonces….., si no……
Compact IF IF compacto, Si se cumple una condición, entonces….(una instrucción).
Exit Fin de ejecución del programa.
ExitCycle Interrupción del ciclo actual y arranque del siguiente.
GOTO Ira a una instrucción nueva identificada por una etiqueta (label).
FOR Repetición de un número dado de veces.
GripLoad Definición de la carga útil del robot en el TCP.
TEST Dependiendo del valor de una expresión…
TPErase Borrado del texto impreso en la unidad de programación.
TpReadFk Lectura de las teclas de función.
TPReadNum Lectura de un número en la unidad de programación.
TPShow Cambio de ventana de la unidad de programación.

192
6. Lenguaje Rapid

Instrucción Denominación
TPWrite Escritura en la unidad de programación.
TRYNEXT Salto de una instrucción que ha causado un error.
WaitDI Espera hasta la activación de una entrada digital.
WaitDO Espera hasta la activación de una salida digital.
WHILE Repetición de una instrucción mientras…
WaitTime Espera durante un tiempo especificado.
WaitUntil Espera durante un tiempo especificado.
ISignalDI Orden de interrupción a partir de una señal de entrada digital.
ISignalDO Orden de interrupción a partir de una señal de salida digital.
IDelete Anulación de una interrupción.
IDisable Inhabilitación de las interrupciones.
IEnable Habilitación de las interrupciones.
TriggInt Definición de una interrupción relativa a una posición.
TriggIO Definición de un evento de E&S de posición fija.
TriggC Movimiento circular del robot con eventos.
TriggJ Movimientos de los ejes del robot con eventos.
TriggL Movimientos lineales del robot con eventos.

Figura 6.2. Instrucciones Rapid.

No te preocupes por la cantidad de instrucciones que aparecen en la tabla


de Instrucciones, veremos las más importantes y precisas para poder
ejecutar o crear un programa real y de un nivel alto.

Se recomienda copiar en uno o dos folios todas las instrucciones para que
cuando tengas que deducir un programa tengas todas las instrucciones a
mano y cercanas para realizar tu programa.

Entraremos a continuación en definir con exactitud las instrucciones más importantes


y elementales.

193
Robótica

6.4. Instrucciones de Movimiento


Explicaremos a continuación todas aquellas instrucciones que están directamente
relacionadas con el movimiento del manipulador, son instrucciones que ejecutan un
movimiento previamente guardado.

Un conjunto de instrucciones de movimiento en un robot se denomina


Trayectoria.
Básicamente se debe de tener en cuenta que para generar al menos una
trayectoria se necesitan dos puntos de posición.

6.4.1. MoveL movimiento Lineal


MoveL (Move Lineal), sirve para mover le TCP del robot desde un punto a otro punto
describiendo una línea recta.

Todos los ejes del robot alcanzaran el punto final al mismo tiempo.

MoveL p10, vmax, z30, herramienta1;


MoveL p20, vmax, z30, herramienta1;

El punto central de la herramienta o TCP (herramienta1) se moverá siguiendo una


trayectoria lineal desde el punto 10 al punto 20, con una velocidad máxima y con una
zona de 30 mm.

Figura 6.3. Movimiento lineal.

A continuación, te explicamos los argumentos que creemos más importantes en esta


instrucción de RAPID, no obstante, en el manual de referencia RAPID aparecen más
instrucciones y más argumentos, lo podrás descargar en la agenda de esta unidad.

194
6. Lenguaje Rapid

Argumentos
MoveL ToPoint [\ID] Speed, Zone, \Tool [\WObj];

■■ MoveL.

Este argumento nos indica el tipo de instrucción de movimiento, en este caso


nos indica que es de tipo lineal, la TPU en el menú de edición nos permite
cambiar a MoveJ sin tener que borrar la instrucción.

■■ ToPoint Tipo de dato: robtarget.

Es el punto de destino del robot y de los ejes externos. Está definido como una
posición nombrada o es almacenado directamente en la instrucción (marcado
con un asterisco * en la instrucción). Para cambiar la posición en la TPU se debe
de seleccionar toda la instrucción y pulsar el botón de “Modificar Posición”

■■ [\ID].

Este argumento es usado en la aplicación de Multimove si esta sincronizado y no


puede usarse de ninguna otra manera. El número de identificación especificado
debe ser el mismo en todas las tareas del programa.

El número de identificación garantiza que los movimientos no están mezclados


en tiempo de ejecución.

■■ Speed Tipo de dato: speeddata.

Son los datos de velocidad que se aplican a los movimientos. Los datos de
velocidad definen la velocidad del TCP, la reorientación de la herramienta y los
ejes externos. El tipo de dato es en mm/s.

■■ Zone tipo de dato: zonedata.

Son los datos de zona para el movimiento o zona de precisión. Los datos de
zona describen el tamaño de la trayectoria esquina generada. El dato es en mm.

■■ Tool tipo de dato: tooldata.

Es la herramienta en uso cuando el robot se mueve. El TCP es el punto que se


mueve al punto de destino específico.

■■ [\Wobj] Objeto de trabajo tipo de dato: wobjdata.

Es el objeto de trabajo (sistema de coordenadas) al que se refiere la posición del


robot en la instrucción.

Este argumento puede omitirse, y en el caso en que se omita, la posición se


referirá al sistema de coordenadas mundo. Si, por otra parte, se utiliza un
TCP estacionario o ejes externos coordinados, este argumento deberá ser
especificado.

195
Robótica

Las zonas de precisión determinan el tipo de enlace entre trayectorias o cuando acaba
o empieza un movimiento, cuanto menor es la zona, mayor es la precisión entre el
enlace entre trayectorias, obligando al TCP a llegar al punto final. Cuanto mayor es
la zona se reduce la precisión entre trayectorias, básicamente recorta la trayectoria
uniéndola con una curva, tal y como muestra la siguiente figura.

Figura 6.4. Trayectoria en esquina con zona 200 mm.

Existe un rango de zonas que van desde la zona fine (valor 0 mm) a una zona z200
(zona 200 mm), seleccionables en la TPU.

Esta instrucción de movimiento es sin lugar a duda es la más usada a la hora


de programar un robot ya que es la que más precisión aporta.

6.4.2. MoveJ movimiento articular o de ejes.


MoveJ (Move Joint) sirve para mover el robot rápidamente desde un punto a otro
punto cuando este movimiento no tiene que seguir una línea recta.

El robot y los ejes externos se moverán a la posición de destino siguiendo una


trayectoria que no es lineal. Todos los ejes alcanzarán la posición de destino al mismo
tiempo. Se podría decir que el controlador le da libertad cinemática para que llegue al
punto final por el camino más corto.

196
6. Lenguaje Rapid

MoveJ p10, vmax, z30, herramienta1;


MoveJ p20, vmax, z30, herramienta1;

El punto central de la herramienta o TCP (herramienta1) se moverá siguiendo una


trayectoria no lineal desde el punto 10 al punto 20, con una velocidad máxima y con
una zona de 30 mm.

Figura 6.5. Movimiento de ejes o Joint.

Los argumentos de esta instrucción son los mismos que en la instrucción MoveL, los
puedes examinar en la agenda.

6.4.3. MoveC movimiento circular del TCP


MoveC (Move Circular) sirve para mover el punto central de la herramienta (TCP) de
forma circular a un destino específico. Durante el movimiento, la orientación suele
permanecer constante respecto al círculo.

MoveC p10, p20 v500, fine, herramienta1;

El TCP de la herramienta, herram2, se moverá de forma circular a la posición p2, con


un dato de velocidad de v500 y un dato de zona de z30. El círculo se define a partir de
la posición de arranque, el punto de círculo p1 y el punto de destino p2

Debemos de tener claro que el TCP no genera un circulo como un compas y que
realmente cuando se programa las posiciones de los puntos ha de haber diferencia
entre al menos dos ejes de coordenadas. El arco empezará a trazarse desde un punto
inicial lineal y luego continuará con al menos dos instrucciones MoveC.

197
Robótica

Figura 6.6. MoveC.

Trayectorias necesarias para realizar un circulo completo


MoveL p10, v500, fine, herram1;
MoveC p20, p30, v500, z20, herram1;
MoveC p40, p10, v500, fine, herram1;
Cada instrucción MoveC consta de dos puntos de posición y genera medio
circulo.

Figura 6.7. Circulo completo.

A continuación, detallamos las diferencias de argumentos con respecto a la instrucción


MoveL.

Argumentos
MoveC CirPoint ToPoint [\ID] Speed, Zone\Tool [\WObj]

CirPoint Tipo de dato: robtarget.

El punto del círculo es una posición en el círculo entre el punto de inicio y el punto de
destino. Para obtener la mejor precisión, debe ser colocado a mitad de camino entre
los puntos de inicio y destino. Si se coloca también cerca del punto de inicio o destino,
el robot puede dar una advertencia. La posición de los ejes externos no se usa.

198
6. Lenguaje Rapid

ToPoint Tipo de dato: robtarget.

El punto de destino del robot y los ejes externos. Se define como una posición
nombrada o almacenado directamente en la instrucción (marcado con un * en la
instrucción).

Ejecución del programa


El robot y las unidades externas se moverán al punto de destino de la siguiente manera:

El TCP de la herramienta se moverá de forma circular a la velocidad constante


programada.

■■ La herramienta es reorientada a una velocidad constante desde la orientación de


la posición de arranque a la orientación del punto de destino.

■■ La reorientación se lleva a cabo respecto a la trayectoria circular. Así, si la


orientación respecto a la trayectoria es la misma en el punto de arranque y en
el punto de destino, la respectiva orientación permanecerá constante durante el
movimiento.

■■ La orientación en el punto de círculo no es crítica; sirve únicamente para distinguir


entre dos direcciones posibles de reorientación. La precisión de la reorientación
sobre la trayectoria dependerá únicamente de la orientación en el punto de
arranque y en el punto de destino.

■■ Los ejes externos no coordinados se ejecutan a una velocidad constante para


que puedan llegar al punto de destino al mismo tiempo que los ejes del robot. La
posición en el círculo no es utilizada.

En el caso en que la reorientación o los ejes externos no puedan alcanzar la velocidad


programada, la velocidad del TCP será reducida.

Una trayectoria esquina suele ser generada cuando el movimiento es transferido a la


sección siguiente de una trayectoria. Si se especifica un punto de paro en los datos
de zona, la ejecución del programa únicamente continuará cuando el robot y los ejes
externos hayan alcanzado la posición adecuada.

6.4.4. MoveAbsJ movimiento absoluto de ejes


MoveAbsJ (Move Absolute Joint) sirve para mover el robot a una posición absoluta,
definida en las posiciones de los ejes.

Se recomienda utilizar esta instrucción únicamente en los siguientes casos:

■■ Cuando el punto final es un punto singular.

■■ Para posiciones ambiguas en el IRB 6400C, por ejemplo, para movimientos


realizados con la herramienta por encima del robot.

199
Robótica

La posición final del robot, durante un movimiento realizado con MoveAbsJ, no


se verá afectada por la herramienta ni el objeto de trabajo determinado ni por un
desplazamiento del programa activo.

No obstante, el robot utiliza estos datos para calcular la carga, la velocidad del TCP, y
la trayectoria esquina. Se podrán utilizar las mismas herramientas que las utilizadas en
instrucciones de movimiento adyacentes.

El robot y los ejes externos se mueven a la posición de destino siguiendo


una trayectoria que no es lineal. Todos los ejes alcanzan la posición de
destino al mismo tiempo.

El robot y los ejes externos se mueven a la posición de destino siguiendo


una trayectoria que no es lineal. Todos los ejes alcanzan la posición de
destino al mismo tiempo.

MoveAbsJ p50, v1000, z50, herram2;

Argumentos
MoveAbsJ ToJointPos Speed Zone\Tool [\WObj].

ToJointPos Tipo de dato: JoinTarget.

Es la posición de ejes absoluta de destino del robot y de los ejes externos. Es definida
como una posición nombrada o almacenada directamente en la instrucción (marcada
con un asterisco * en la instrucción).

200
6. Lenguaje Rapid

6.4.5. MoveLDO, MoveJDO Movimiento lineal y joint y


activación de una salida digital
MoveLDO (Move Linearly Digital Output) sirve para mover el punto central de la
herramienta (TCP) de forma lineal hasta un destino específico. La señal de salida digital
especificada será activada/reinicializada en el medio de la trayectoria esquina.

Cuando el TCP debe permanecer estacionario, esta instrucción podrá utilizarse para
reorientar la herramienta.

MoveJDO (Move Joint Digital Output) sirve para mover el robot rápidamente de un
punto a otro cuando dicho movimiento no tiene que ser en línea recta. La señal de
salida digital especificada es activada/reinicializada en el medio de la trayectoria
esquina.

MoveLDO p10, vmax, z30, Therramienta1, do1, 1;


MoveLDO p20, v2000, fine, Therramienta1, do1, 0;
MoveJDO p10, v1500, z30, Therramienta1, do1, 1;
MoveJDO p20, v500, z30, Therramienta1, do1, 0;

Argumentos
MoveLDO ToPoint [\ID] Speed Zone Tool [\WObj] Signal Value.

MoveJDO ToPoint [\ID] Speed Zone Tool [\WObj] Signal Value.

Signal Value: signaldo.

Es el nombre de la señal de salida digital que se debe cambiar.

Valor Tipo de dato: dionum

Es el valor deseado de la señal (0 o 1).

201
Robótica

6.5. Instrucciones Lógicas


Empezaremos a estudiar las instrucciones lógicas más usadas de la tabla 6.1

6.5.1. Instrucción “:=”


La instrucción “:=” sirve para asignar un valor a un dato, estos datos pueden ser desde
valores numéricos, booleanos, de posición, etc.

Este valor puede ser cualquier valor constante, variable o persistente contenido en una
expresión aritmética, por ejemplo:

reg1 := 5;
reg1 tiene asignado el valor 5.
reg1 := reg2 - reg3;
reg1 tiene asignado el valor resultante del cálculo reg2-reg3.
contador: = contador + 1;
contador ha sido incrementado en1

Argumentos
Dato:= Valor Dato Tipos de dato: Todos

El dato al que se desea asignar un Valor Tipo de dato:

Igual que Dato El valor deseado.

Limitaciones
El dato cuyo valor va a ser cambiado no poder ser:

■■ Una constante.

■■ Un tipo de dato sin valor.

Los datos y valores deben de tener tipos de datos similares (los mismos o equivalentes)

6.5.2. Instrucción Procall


Esta instrucción es una llamada a un procedimiento, sirve para transferir la ejecución
del programa de un procedimiento a otro.

Cuando el procedimiento ha sido ejecutado completamente, la ejecución continua


con la instrucción siguiente a la llamada al procedimiento.

202
6. Lenguaje Rapid

weldpipe1; ¡Llamada del procedimiento weldpipe1.


errormessage; ¡llamada al procedimiento errormessage
Set do1;
PROC errormessage()
TPWrite “ERROR”;
ENDPROC

El procedimiento errormessage será llamado. Cuando este procedimiento esté listo,


la ejecución del programa regresará a la instrucción que sigue la llamada de procedi-
miento, Set do1.

6.5.3. Instrucción ClKStart y ClkStop arranque y paro de un


cronometro
ClkStart arranca un reloj que funciona como un cronometro. Utiliza un tipo de dato
Clock.

ClkStart clock1:
El reloj es arrancado.

ClkStop para el reloj que funciona como un cronometro. Utiliza un tipo de dato Clock.

Para poner a cero el reloj usaremos la instrucción “ClkReset”.

ClkStop clock1:
El reloj es parado.

203
Robótica

Veamos un ejemplo de un programa de cronometrado.

VAR clock clock2; ¡declaración del dato reloj, es creada automáticamente


ClkReset clock2; ¡Reseteo del reloj
ClkStart clock2; ¡arranco el reloj
WaitUntil DInput(di1) = 1; ¡espero a que la entrada di1 tenga valor “1”
ClkStop clock2; ¡paro el reloj
time:=ClkRead(clock2); ¡paso el valor del reloj al dato numérico time
TpWrite “”\:=Time; ¡ muestro por pantalla el valor del reloj

6.5.4. Add, Incr, Decr y Clear de un registro numérico


Add sirve para añadir un valor a un tipo de dato numérico, siendo estos valores,
positivos, negativos o decimales.

Add reg1, 3;
3 es añadido al reg1, también de esta manera reg1:=reg1+3.
Add reg1, -reg2;
El valor de reg2 es restado al reg1, o de esta manera reg1:=reg1-reg2.

Incr sirve para incrementar en una unidad el valor a un tipo de dato numérico.

Incr reg1;
1 es añadido al reg1, también de esta manera reg1:=1.

Decr sirve para decrementar en una unidad el valor a un tipo de dato numérico.

Decr reg1;
1 es restado al reg1, también de esta manera reg1:=-1.

204
6. Lenguaje Rapid

Clear sirve para borrar cualquier valor de un dato numérico.

Clear reg1;
El valor de reg1 es sustituido por 0, también de esta manera reg1:=0.

6.5.5. Exit Fin de ejecución de un programa


EXIT sirve para finalizar la ejecución del programa. El rearranque del programa se
bloquea, es decir, que el programa sólo podrá ser re-arrancado únicamente llevando
el puntero de programa por el operador.

La instrucción EXIT deberá utilizarse cuando ocurren errores muy graves o cuando
se desea parar la ejecución del programa definitivamente. La instrucción Stop se usa
para parar de forma temporal la ejecución del programa.

ErrWrite “Fatal error”, “Illegal state”;


EXIT;

La ejecución del programa se para y no puede ser rearrancada a partir de esta posición
en el programa.

6.5.6. For Repetición de un número dado de veces


FOR se usa cuando una o varias instrucciones deben repetirse un número dado de
veces.

FOR i FROM 1 TO 10 DO
rutina1;
ENDFOR

205
Robótica

Argumentos
FOR contador bucle FROM Valor inicial TO Valor final.

[STEP incremetento] DO….. ENDFOR

■■ El nombre del dato que contendrá el valor del contador de bucle actual. El dato
es declarado automáticamente y su nombre no podrá coincidir con ningún otro
nombre de ningún dato ya existente.

Valor inicial Tipo de dato: Num

■■ El valor inicial deseado del contador de bucle. (suelen ser números enteros).

Valor final Tipo de dato: Num

■■ El valor final deseado del contador de bucle. (suelen ser números enteros).

Incremento Tipo de dato: Num

■■ El valor con el que el contador de bucle deberá ser incrementado (o disminuido),


(suelen ser números enteros).

Si este valor no está especificado, el valor de incremento será automáticamente 1 (o


-1 si el valor inicial es mayor que el valor final).

FOR Instrucciones Ejemplo


FOR i FROM 10 TO 2 STEP -1 DO
a{i} := a{i-1};
ENDFOR

Limitaciones
Solo se podrá acceder al contador de bucle (del tipo de dato num) desde dentro del
bucle FOR y por consiguiente esconderá los demás datos y rutinas que tengan el
mismo nombre.

206
6. Lenguaje Rapid

6.5.7. IF, si se cumple la condición


IF sirve cuando diferentes instrucciones deben cumplirse según se cumpla o no una
condición.

IF reg1 > 5 THEN


Set do1;
Set do2;
ENDIF

Las señales do1 y do2 solo se activarán si el registro 1 es mayor de 5.

IF reg1 > 5 THEN


Set do1;
Set do2;
ELSE
Reset do1;
Reset do2;
ENDIF

Las señales do1 y do2 son activadas si el reg1 es mayor que cinco y son desactivadas
si no lo es.

Argumentos
IF Condición THEN ...

[ELSEIF Condición THEN]

[ELSE]

ENDIF

Condición Tipo de dato: bool, num, signaldi, etc..

La condición que debe cumplirse para que las instrucciones entre THEN y ELSE/.

ELSEIF puedan ejecutarse.

207
Robótica

6.5.8. TEST Dependiendo del valor de una expresión


TEST sirve cuando diferentes instrucciones deben ser ejecutadas dependiendo
del valor de una expresión o de un dato. En el caso en que no haya demasiadas
alternativas, se podrá usar también la instrucción IF..ELSE.

TEST reg1
CASE 1,2,3 :
rutina1;
CASE 4 :
rutina2;
DEFAULT :
TPWrite “Elección ilegal”;
Stop;
ENDTEST

Diferentes instrucciones serán ejecutadas dependiendo del valor de reg1. En el caso


en que el valor sea 1-3, la rutina1 será ejecutada. Si el valor es 4, la rutina2 será
ejecutada. De lo contrario, aparecerá un mensaje de error visualizado y la ejecución se
detendrá. Para poder insertar más CASES habrá que seleccionar uno de ellos copiarlo
y pegarlo.

6.5.9. RETURN Fin de ejecución de una rutina


RETURN sirve para finalizar la ejecución de una rutina. Si la rutina es una función, el
valor de la función será devuelto.

mensajerror;
Set do1;
PROC mensajerror()
TPWrite “ERROR”;
RETURN;
ENDPROC

El procedimiento “mensajerror” será llamado. Cuando el procedimiento llega a la


instrucción RETURN, la ejecución del programa continúa en la instrucción que sigue
la llamada del procedimiento, Set do1.

208
6. Lenguaje Rapid

FUNC num valor_abs (num valor)


IF valor<0 THEN
RETURN -valor;
ELSE
RETURN valor;
ENDIF
ENDFUNC

Argumentos
RETURN [ Valor devuelto]

Valor devuelto Tipo de dato: Según la declaración de la función.

El valor devuelto de una función.

El valor devuelto debe ser especificado en una instrucción RETURN presente en la


función.

Si la instrucción está en un procedimiento o en una rutina de tratamiento de


interrupciones, puede ocurrir que un valor devuelto no esté especificado.

Ejecución del programa


El resultado de la instrucción RETURN podrá variar, dependiendo del tipo de rutina en
la que está utilizada:

■■ Rutina principal: en el caso en que el arranque del programa haya sido ordenado
al final del ciclo, el programa se para. De lo contrario, la ejecución del programa
continúa con la primera instrucción de la rutina principal.

■■ Procedimiento: la ejecución del programa continúa con la instrucción que sigue


a la llamada del procedimiento.

■■ Función: devuelve el valor de la función.

Rutina tratamiento de interrupciones:

■■ La ejecución del programa continúa a partir de donde se ha producido la


interrupción.

Gestor de errores:

■■ En un procedimiento: la ejecución del programa continúa con la rutina que


llamó la rutina con el gestor de error (con la instrucción que sigue la llamada del
procedimiento).

209
Robótica

En una función:

■■ El valor de la función es devuelto.

6.5.10. Stop. Paro de la ejecución del programa


Stop sirve para detener temporalmente la ejecución del programa.

La ejecución del programa también podrá ser detenida utilizando la instrucción EXIT.

Esto, no obstante, solo deberá realizarse si se ha terminado una tarea, o si se produce


un error muy grave, ya que la ejecución del programa no podrá ser re-arrancada con
EXIT.

TPWrite “La línea con el computador principal se ha interrumpido”;


Stop;
La ejecución del programa será detenida después de que aparezca un
mensaje en la unidad de programación.

Argumentos
[\NoRegain] Tipo de dato: switch

Este argumento específico para el siguiente arranque del programa en el modo manual,
si el robot y los ejes externos deben o no regresar a la posición de paro.

En el modo automático el robot y los ejes externos siempre regresan a la posición de


paro.

En el caso en que el argumento NoRegain esté activado, el robot y los ejes externos
no regresarán a la posición de paro (si han sido desviados de dicha posición).

En el caso en que se omita el argumento y que el robot o los ejes externos hayan sido
desviados de la posición de paro, el robot visualizará una pregunta en la unidad de
programación. Entonces, el usuario deberá contestar a la pregunta especificando si
desea que el robot regrese a la posición de paro o no.

MoveL p1, v500, fine, tool1;


TPWrite “Mover el robot a la posición para esquina pallet 1”;
Stop \NoRegain;
p1_read := CRobT();
MoveL p2, v500, z50, tool1

210
6. Lenguaje Rapid

La ejecución del programa se detiene con el robot situado en la posición p1. El


operador mueve el robot a p1_read. Para el siguiente arranque de programa, el robot
no regresará a p1, ya que la posición p1_read puede ser almacenada en el programa.

Limitaciones
La instrucción de movimiento que precede esta instrucción deberá terminar con un
punto de paro para que en esta instrucción sea posible realizar un rearranque después
de un corte de potencia.

211
Robótica

6.6. Instrucciones de espera


Las siguientes Instrucciones que vamos a ver en este apartado, presentan funciones
de espera hasta que se cumpla la activación de una señal de un tiempo.

6.6.1. WaitDi Espera la activación de una señal de entrada


digital
WaitDI (Wait Digital Input) sirve para esperar hasta que se active una señal de entrada
digital.

WaitDI di4, 1;
La ejecución del programa continuará sólo después de que la entrada di4
haya sido activada.

Argumentos WaitDI Señal Valor [\MaxTime] [\TimeFlag]


Señal Tipo de dato: signaldi, es el nombre de la señal.

Valor Tipo de dato: diomun, es el valor deseado de la señal.

[MaxTime] (Tiempo máximo) Tipo de dato: num, es el intervalo de tiempo de espera


máximo permitido, expresado en segundos.

En el caso en que este intervalo de tiempo haya transcurrido antes de que la condición
se haya cumplido, el sistema llamará al gestor de errores, siempre y cuando disponga
de uno, con el código de error ERR_WAIT_MAXTIME. Si el sistema no dispone de
ningún gestor de error, la ejecución del robot se detendrá.

[\TimeFlag] (Bandera Tiempo Excedido) Tipo de dato: bool, es el parámetro de


salida que contiene el valor TRUE cuando el tiempo máximo de espera permitido ha
transcurrido antes de que la condición se haya cumplido

Este argumento será ignorado si el argumento MaxTime no está incluido en la


instrucción.

212
6. Lenguaje Rapid

6.6.2. WaitDO Espera la activación de una señal una salida


digital
WaitDO (Wait Digital Output) sirve para esperar hasta que se active una señal de salida
digital.

WaitDO do4, 1;
La ejecución del programa continuará sólo después de que la salida do4
haya sido activada.

Dispone de los mismos argumentos que la instrucción WaitDI y funciona de la misma


manera.

6.6.3. WaitUntil Esperar hasta el cumplimiento de una condición


WaitUntil sirve para esperar hasta que se cumpla una condición lógica; por ejemplo, el
sistema podrá esperar hasta que se haya activado una o varias entradas.

WaitUntil di4 = 1;
La ejecución del programa continuará sólo después de que la entrada di4
haya sido activada.
WaitUntil di4= 1 OR di5= 1;
La ejecución del programa continuará sólo después de que la entrada di4
o la entrada di5 este activa.

Argumentos WaitUntil [\InPos] Cond [\MaxTime] [\TimeFlag]


[\InPos] Tipo de dato: switch, en el caso de que se utilice este argumento, tanto el
robot como los ejes externos deberán haberse detenido antes de que la condición
empiece a ser evaluada.

Cond Tipo de dato: bool, num, signal es la expresión lógica que debe de cumplirse.

[\MaxTime] Tipo de dato: num, es el intervalo de tiempo de espera máximo permitido


y expresado en segundos.

En el caso en que este tiempo haya transcurrido antes de que se haya cumplido la
condición, el sistema llamará el gestor de errores, siempre y cuando haya uno, con el
código de error ERR_WAIT_MAXTIME. En el caso en que el sistema no disponga de
gestor de errores la ejecución del programa se detendrá.

213
Robótica

[\TimeFlag] Tipo de dato: bool, es el parámetro de salida que contiene el valor TRUE
en el caso en que el tiempo de espera máximo permitido haya transcurrido antes de
que se haya cumplido la condición. Si este parámetro está incluido en la instrucción, el
hecho de que el tiempo máximo haya transcurrido no será considerado como un error.
Este argumento será ignorado siempre que el argumento MaxTime no esté incluido
en la instrucción.

6.6.4. WaitTime Espera durante un tiempo especificado


WaitTime sirve para esperar durante un tiempo específico. Esta instrucción puede
utilizarse también para esperar hasta que el robot y los ejes externos se hayan
inmovilizado.

WaitTime 0.5;
La ejecución del programa espera 0,5 segundos.

Argumentos WaitTime [\InPos] Tiempo


[\InPos] Tipo de dato: switch No adelantara la lógica

En el caso en que se utilice este argumento, tanto el robot como los ejes externos
deberán haberse detenido antes de que el tiempo de espera empiece a contar.

Tiempo Tipo de dato: num

El tiempo, expresado en segundos, que la ejecución del programa debe esperar

6.6.5. WHILE Repetición de una instrucción mientras….


WHILE se utiliza cuando una serie de instrucciones deben ser repetidas mientras una
condición específica se vaya cumpliendo.

En el caso en que sea posible determinar por adelantado el número de repeticiones,


se podrá utilizar la instrucción FOR

WHILE reg1 < reg2 DO


reg1 := reg1 +1;
ENDWHILE

214
6. Lenguaje Rapid

WHILE reg1 < reg2 DO


reg1 := reg1 +1;
ENDWHILE

Repite las instrucciones del bucle WHILE mientras reg1 < reg2.

Argumentos WHILE Condición DO ... ENDWHILE


Condición Tipo de dato: bool

La condición que debe ser cumplida para que las instrucciones del bucle WHILE
puedan ejecutarse.

215
Robótica

6.7. Instrucciones de control o cambio de registros


Las siguientes Instrucciones que vamos a ver en este apartado, son instrucciones
donde controlaremos o escribiremos diferentes textos por pantalla.

6.7.1. TPErase Borrado del texto en la unidad de programación


TPErase (Teach Pendant Erase) sirve para borrar el contenido del visualizador de la
unidad de programación.

TPErase;
TPWrite “Ejecución iniciada”;
El contenido del visualizador de la unidad de programación será borrado
antes de que aparezca Ejecución iniciada.

6.7.2. TPWrite Escritura en la unidad de programación


TPWrite (Teach Pendant Write) sirve para escribir un texto en la unidad de programación.

El valor de ciertos datos, así como texto podrán ser introducidos.

TPWrite “Ejecución iniciada”;


El texto Ejecución iniciada aparecerá visualizada en la unidad de
programación.
TPWrite “Nº de piezas producidas=”\Num:=reg1;
Por ejemplo, a la respuesta a Nº de piezas producidas= 5, se deberá
introducir, 5 en vez de reg1 en la unidad de programación.

Argumentos TPWrite String [\Num] | [\Bool] | [\Pos] | [\Orient]


■■ String Data Type: String, la cadena de texto que se escribirá (un máximo de 80
caracteres).

■■ [\Num] Data type: num, los datos cuyo valor numérico debe escribirse después
de la cadena de texto.

■■ [\Bool] Data type: bool, los datos cuyo valor lógico debe escribirse después de
la cadena de texto.

■■ [\Pos] Data type: pos, los datos cuya posición debe escribirse después de la
cadena de texto.

216
6. Lenguaje Rapid

■■ [\Orient] Data type: pos, los datos cuya orientación debe escribirse después de
la cadena de texto.

6.7.3. TPReadNum Lectura de número en la TPU


TPReadNum (Teach Pendant Read Numerical) sirve para la lectura de un número en
la unidad de programación.

TPReadNum reg1, “¿Cuántas unidades deben producirse? “;

El texto “¿Cuántas unidades deben producirse?” aparece en el visualizador de la unidad


de programación. La ejecución del programa espera hasta que se haya introducido un
número a partir del teclado numérico de la unidad de programación.

Este número quedará almacenado en reg1.

Argumentos TPReadNum Contestación Texto [\MaxTime] [DIBreak]


■■ [\BreakFlag]
Contestación Tipo de dato: num
Es la variable que es devuelta para el número introducido en la unidad de
programación.
Texto Tipo de dato: string
Es el texto de información que se desea introducir en la unidad de programación
(de 80 caracteres como máximo).
■■ [\MaxTime] Tipo de dato: num
Es el intervalo máximo de tiempo que la ejecución del programa espera. Si
no se introduce ningún número durante este tiempo, el programa continúa a
ejecutarse en el gestor de errores a menos que se haya utilizado BreakFlag
(véase a continuación).
La constante ERR_TP_MAXTIME podrá ser utilizada para comprobar si el
intervalo máximo de tiempo ha transcurrido o no.
■■ [\DIBreak] (Interrupción Entrada Digital) Tipo de dato: signaldi
Es la señal digital que podría interrumpir el diálogo del usuario. Si no se introduce
ningún número cuando la señal se activa en 1 (o si ya está activada en 1), el
programa continúa ejecutándose en el gestor de errores a menos que se haya
utilizado BreakFlag (véase a continuación). La constante ERR_TP_DIBREAK
podrá ser utilizada para comprobar si ello ha ocurrido o no.

217
Robótica

■■ [\BreakFlag] Tipo de dato: errnum

Es una variable que mantiene el código de error si se ha utilizado maxtime o


dibreak.

Si se omite esta variable opcional, el gestor de error será ejecutado. Las


constantes

ERR_TP_MAXTIME y ERR_TP_ DIBREAK podrán utilizarse para seleccionar el


motivo.

6.7.4. TPReadFK Lectura de las teclas de función


■■ TPReadFK (Teach Pendant Read Function Key) sirve para introducir texto encima
de las teclas de función y para descubrir la tecla que ha sido pulsada

TPReadFK reg1, “Más ?”, stEmpty, stEmpty, stEmpty, “Sí”, “No”;

¿El texto Más? aparecerá en el visualizador de la unidad de programación y las teclas


de función 4 y 5 se activarán mediante las cadenas de texto Sí y No respectivamente.
La ejecución del programa esperará hasta que se pulse una de las teclas de función,
4 o 5. En otras palabras, reg1 tendrá asignado el 4 o el 5 dependiendo de la tecla que
se pulse.

Argumentos TPReadFK Contestación Texto FK1 FK2 FK3 FK4 FK5 [\Max-
Time] [DIBreak] [\BreakFlag]
■■ Contestación Tipo de dato: num

La variable para la cual, dependiendo de la tecla que se pulse, se obtiene el valor


numérico 1.5. Si se pulsa la tecla de función 1, se obtendrá 1 y así sucesivamente.

Texto Tipo de dato: string

El texto informativo que se desea introducir en el visualizador (de 80 caracteres


como máximo).

■■ FKx (Texto de la tecla de función) Tipo de dato: string

El texto que se desea introducir como indicación propia de la tecla de función (de
7 caracteres como máximo). FK1 es la tecla situada más a la izquierda.

218
6. Lenguaje Rapid

Las teclas de función desprovistas de cualquier indicación están especificadas


con la constante de cadena predefinida stEmpty con un valor de cadena vacío
(’’’’).

[\MaxTime] Tipo de dato: num

Es el intervalo máximo de tiempo [s] que la ejecución del programa espera. Si


no se pulsa ninguna tecla de función durante este tiempo, el programa continuo
a ejecutarse en el gestor de errores, a menos que se utilice BreakFlag (véase a
continuación).

La constante ERR_TP_MAXTIME podrá ser utilizada para comprobar si el


intervalo máximo de tiempo ha transcurrido o no.

■■ [\DIBreak] (Interrupción Entrada Digital) Tipo de dato: signaldi

Es la señal digital que podría interrumpir el diálogo del usuario. Si no se pulsa


ninguna tecla de función cuando la señal se activa en el valor 1 (o si ya está
activada en 1), el programa continuará a ejecutarse en el gestor de errores, a
menos que se utilice BreakFlag (véase a continuación). La constante ERR_TP_
DIBREAK podrá ser utilizada para comprobar si esto ha ocurrido o no.

■■ [\BreakFlag] Tipo de dato: errnum

Es una variable que mantiene el código de error si se utiliza maxtime o dibreak.


Si se omite esta variable opcional, el gestor de errores será ejecutado. Las
constantes ERR_TP_MAXTIME y ERR_TP_ DIBREAK podrán utilizarse para
seleccionar el motivo.

219
Robótica

6.8. Instrucciones de activación y desactivación de


E&S
Las siguientes Instrucciones que vamos a ver en este apartado, son instrucciones
donde controlaremos o cambiaremos el estado lógico de señales eléctricas, además
de ver como se generan las diferentes entradas y salidas.

6.8.1. Creación de entradas y salidas


En este apartado explicaremos como crear de una manera sencilla las entradas y
salidas. Hemos de tener en cuenta que, si no usamos un controlador real, las E&S
serán todas virtuales y que no hará falta definir las tarjetas de entradas y salidas,
siendo más fácil su creación y manejo.

Diferenciaremos entre varios tipos:

■■ Digitales de entrada y salida. Toman valor lógico “1” o “0”.

■■ Analógicas de entrada y salida. Toman un rango de valores de tensión o


intensidad.

■■ Grupos de entrada y salida. No dejan de ser conjuntos de bits agrupados de


manera decimal.

Para crear cualesquiera de ellas, podemos realizarlo de dos maneras, mediante la TPU
y mediante el Menú Controlador del propio simulador.

Podremos realizar diferentes opciones a la hora de configurar las I/O, detallamos las
más usadas.

■■ Crear I/O. Crear entradas y salidas.

■■ Cross Connection. Conexiones cruzadas de entradas con salidas realizando


enlaces lógicos.

■■ System Imput and Output. Entradas y salidas de sistema explicados en el tema


de seguridad.

TPU
Realizarlo en la TPU en la vida real puede ser tedioso, ya que, aunque la TPU es táctil y
intuitiva, cuesta más realizarlo, pero debemos de saber realizarlo. Deberemos realizar
los siguientes pasos.

■■ E&S digitales, Grupos, Analógicas. Con la TPU en manual deberemos ir al


menú ABB, después al menú Panel de control, Configuración, seleccionaremos
en temas “I/O System”, Sygnal y pulsaremos en el botón añadir.

220
6. Lenguaje Rapid

Figura 6.8. Creación de entradas y salidas digitales en TPU.

Como se puede ver la creación esta agrupada en un solo botón, facilitando su creación
y modificación. Hay que rellenar cada uno de los campos y tener un orden lógico para
cada entrada y salida. Para poder seleccionar el tipo que vamos a crear deberemos
pulsar en “Type of Sygnal”.

En la creación de todas las E&S de todo tipo cuando no se utiliza un robot real o
tarjetas reales de E&S, no hace falta asignar una tarjeta a la entrada o salida, en
la creación de los grupos, tampoco hace falta asignar el mapeo de las entradas o
salidas, es decir no hace falta indicar en que bit comienza el grupo.

Controlador
Para crearlo en el controlador, no hace falta que el robot este en automático o en
manual, realizaremos los siguientes pasos:

■■ Iremos a la pestaña controlador que esta en la vista vertical y pulsaremos sobre


configuración, I/O System. Se nos abrirá una nueva ventana con el listado de
todas las I/O que hay creadas, además de una columna denominada “Tipo” en
donde podremos seleccionar lo que queremos crear.

■■ La creación de las I/O se realizarán de la misma manera que en la TPU, mientras


sean virtuales no hará falta asignar tarjeta de donde cuelga la E&S, ni mapeado
de las señales.

221
Robótica

Figura 6.9. Creación de entradas y salidas digitales controlador.

6.8.2. Instrucción Set, activación de una salida digital


Set sirve para colocar el valor de la señal de salida digital a uno.

Set do15;
La señal do15 se pondrá en 1.

La señal se pondrá a 1 cuando sea leída por el puntero de ejecución, el valor verdadero
dependerá de la configuración de la señal. En caso en que la señal haya sido invertida
en los parámetros del sistema, la instrucción hará que el canal físico se ponga a cero.

6.8.3. Instrucción SetAO, activación de una salida digital


analógica
SetAO sirve para cambiar el valor de una señal de salida analógica.

SetAO ao2, 5.5;


La señal ao2 se pone a 5,5.

El valor programado es escalado de acuerdo con los parámetros del sistema antes de
ser enviado a un canal físico.

222
6. Lenguaje Rapid

6.8.4. Instrucción SetDO, cambio del valor de una señal de


salida digital
SetDO sirve para cambiar el valor de una señal de salida digital, con o sin un retraso.

SetDO do15, 1; La señal do15 se activará en 1.


SetDO sold, off; La señal sold pasará a off.
SetDO \SDelay := 0,2, sold, alto;
La señal sold se activará en alto con un retraso de 0,2 s. La ejecución del
programa continuará, sin embargo, con la instrucción siguiente.

Argumentos SetDO [\SDelay] Señal Valor


[ \SDelay ] (Retraso de la Señal) Tipo de dato: num, retrasa el cambio del tiempo
especificado en segundos (0,1 - 32 seg.).

La ejecución del programa continúa directamente con la instrucción siguiente.

Una vez transcurrido el tiempo de retraso, la señal cambia sin afectar por ello el resto
de la ejecución del programa.

Si se omite el argumento, el valor de la señal cambia directamente.

Señal Tipo de dato: signaldo, el nombre de la señal que se desea cambiar.

Valor Tipo de dato: dionum, el valor deseado de la señal.

El valor se especifica a 0 o a 1.

223
Robótica

6.8.5. Instrucción SetGO, cambio de un grupo de salidas


digitales
SetGO sirve para cambiar el valor de un grupo de señales de salidas digitales, con o
sin un retraso de tiempo.

SetGO grup2, 12;


La señal grup2 se activará en 12. Si grup2 comprende 4 señales, por
ejemplo, las salidas 6-9, las salidas 6 y 7 se pondrán a cero, mientras que la
8 y la 9 se activarán en 1.
SetGO \SDelay :=0,4, grup2, 10;
La señal grup2 se activará en 10. Si grup2 comprende 4 señales, por
ejemplo, las salidas 6-9, las salidas 6 y 8 se pondrán a cero, mientras que la
7 y la 9 se activarán en 1, con un retraso de 0,4s. La ejecución del programa
continuará con la instrucción siguiente.

6.8.6. Reset Puesta a cero de una señal de salida digital


Reset sirve para poner una salida digital a cero.

Reset do15; La señal do15 se pondrá a 0.


Reset sold; La señal sold se pondrá a 0.

El valor verdadero depende de la configuración de la señal. Si la señal ha sido invertida


en los parámetros del sistema, la instrucción hará que el canal físico se ponga en 1.

6.8.7. PulseDo, generación de un pulso en una salida digital


PulseDO sirve para generar un pulso en una señal de salida digital.

PulseDO do15;
Se generará un pulso de 0,2 s en la señal de salida do15.
PulseDO \PLength:=1.0, conexión;
Se generará un pulso de 1,0 s en la señal conexión

224
6. Lenguaje Rapid

Argumentos PulseDO [ \PLength ] Señal


[ \PLength ] (Duración del pulso) Tipo de dato: num, la duración del pulso en segundos
(0,1 - 32 seg.).

Si se omite el argumento, se generará un pulso de 0,2 segundos.

Señal Tipo de dato: signaldo, el nombre de la señal en la que deberá generarse un


pulso.

Ejecución
Se generará un pulso con una longitud de pulso específica.

Figura 6.10. Ejecución del pulso.

225
Robótica

6.9. Tipos de datos


En este apartado vamos a mostrar los diferentes tipos de datos más usados asociados
a las instrucciones RAPID, hay más tipos de datos, que podrás ampliar en el manual
de referencia RAPID que te puedes descargar en el apartado 6.1 del paso de agenda.

Instrucción Denominación
bool Valores lógicos, TRUE/FALSE verdadero o falso.
Clock Medida de tiempo.
jointtarget Datos de posición de los ejes.
loaddata Datos de carga.
num Registros numéricos.
robtarget Datos de posición.
speedata Datos de velocidad.
zonedata Datos de zona.
string Cadena de caracteres.
tooldata Datos de herramienta.
wobjdata Datos dl objeto de trabajo.
pos Datos de posición (solo X,Y y Z).
errnum Datos de error.
exjoint Posición de los ejes externos.

6.9.1. Bool, valores lógicos


Bool se usa para los valores lógicos true/false (verdadero/false). No es posible otro
valor.

Flag tiene asignado el valor TRUE.


VAR bool valor1;
VAR num reg1;
valor1:= reg1 > 100;
Valor1 tiene asignado el valor TRUE si reg1 es mayor que 100; de lo contrario,
le será asignado FALSE.
IF valor1 Set do1;
La señal do1 será activada si valor1 es TRUE.
valor1 := reg1 > 100;
valor2 := reg1 > 20 AND NOT valor1;
Valor2 tiene asignado el valor TRUE si reg1 se encuentra entre 20 y 100.

226
6. Lenguaje Rapid

6.9.2. Clock, medida del tiempo


Clock se usa para la medida del tiempo. Las funciones clock se utilizan como un
cronómetro. Los datos del tipo clock almacenan una medida del tiempo en segundos
y tienen una resolución de 0,01 segundos.

6.9.3. Num, valores numéricos (registros)


Num, se usa para los valores numéricos, por ejemplo, para los contadores.

Descripción
El valor de un tipo de dato num puede ser

■■ Un número entero; por ejemplo, -5,

■■ Un número decimal; por ejemplo, 3,45.

También puede estar escrito de forma exponencial; por ejemplo, 2E3 (= 2*103 =2000),
2,5E-2 (= 0,025).

Los números enteros entre -8388607 y +8388608 son siempre almacenados como
números enteros exactos.

Los números decimales no son más que números aproximados y no deberán, por ello,
ser utilizados en comparaciones del tipo es igual a o no es igual a.

VAR num reg1;


reg1 := 3;
reg1 tiene asignado el valor 3.
a := 10 DIV 3;
b := 10 MOD 3;
División entera donde a tiene asignado un número entero (=3) y b tiene
asignado al resto (=1).

227
Robótica

6.9.4. Robtarget, datos de posición


Robtarget sirve para definir la posición del robot y de los ejes externos.

Descripción
El valor de un tipo de dato num puede ser:

■■ Los datos de posición sirven para definir la posición en las instrucciones de


posicionamiento a las que el robot y los ejes externos deben moverse. Dado que
el robot es capaz de alcanzar una misma posición de varias formas diferentes,
se deberá especificar la configuración de los ejes. Esto servirá para definir los
valores de los ejes en el caso de que sean ambiguos.

■■ La posición será definida basándose en el sistema de coordenadas del objeto de


trabajo y el tcp, incluyendo cualquier desplazamiento de programa.

■■ Si la posición es programada con cualquier otro objeto de trabajo que el utilizado


en la instrucción, el robot no se moverá de la forma esperada. Asegurarse de
que se está utilizando el mismo objeto de trabajo que el que se ha utilizado
al programar las instrucciones de posicionamiento. Una utilización incorrecta
puede provocar daños al personal o al equipo.

Componentes
■■ trans (traslación) Tipo de dato: pos, la posición (x, y, z) del punto central de la
herramienta expresada en mm.

La posición se especifica respecto al sistema de coordenadas del objeto


utilizado, incluyendo el desplazamiento del programa. Si no se especifica ningún
objeto de trabajo, se usará el sistema de coordenadas mundo.

■■ rot (rotación) Tipo de dato: orient, la orientación de la herramienta expresada bajo


la forma de un quaternion (q1, q2, q3 y q4). La orientación se especifica respecto
al sistema de coordenadas del objeto utilizado, incluyendo el desplazamiento del
programa. Si no se especifica ningún objeto de trabajo, se usará el sistema de
coordenadas mundo.

1-robtarget-66 Tipos de Datos del Sistema y Rutinas

■■ robconf (configuración del robot) Tipo de dato: confdata

La configuración de los ejes del robot (cf1, cf4, cf6 y cfx). Esto se define bajo la
forma del cuarto utilizado del eje 1, del eje 4 y del eje 6. El primer cuarto positivo
0-90 o está definido como 0. El componente cfx se utiliza únicamente para el
modelo de robot IRB5400. extax (ejes externos)

■■ Tipo de dato: extjoint, l posición de los ejes externos.

228
6. Lenguaje Rapid

La posición será definida como se indica a continuación para cada eje individual
(eax_a, eax_b ... eax_f):

■■ Para los ejes rotativos, la posición será definida como la rotación en grados a
partir de la posición de calibración.

■■ Para los ejes lineales, la posición será definida como la distancia en mm a partir
de la posición de calibración.

El valor 9E9 será definido para los ejes que “no están conectados”. Si los ejes definidos
en los datos de posición difieren de los ejes que están conectados en realidad para la
ejecución del programa.

CONST robtarget p15 := [ [600, 500, 225,3], [1, 0, 0, 0], [1, 1, 0, 0], [ 11,
12.3, 9E9, 9E9, 9E9, 9E9] ];

Una posición p15 será definida de la siguiente manera:

■■ La posición del robot: x = 600, y = 500, z = 225,3 mm en el sistema de


coordenadas del objeto.

■■ La orientación de la herramienta en la misma dirección que el sistema de


coordenadas del objeto.

■■ La configuración del eje del robot: eje 1 y 4 en la posición 90-180º, el eje 6 en la


posición 0-90º.

■■ La posición de los ejes externos lógicos, a y b, expresada en grados o en mm.


(dependiendo del tipo de ejes). Los ejes c y f no están definidos.

6.9.5. Tooldata, datos de herramienta


Tooldata sirve para describir las características de una herramienta, como, por ejemplo,
una boquilla de soldadura o una pinza. Si la herramienta está fija en el espacio (si se
trata de una herramienta estacionaria), se definirán los datos de herramienta normales
correspondientes, así como la pinza que sujeta el objeto de trabajo.

Descripción
Los datos de herramienta afectarán a los movimientos del robot en la siguiente medida:

■■ El punto central de la herramienta (TCP) se refiere a un punto que cumplirá con


la trayectoria especificada y con la exigencia de velocidad. En el caso en que se
reoriente la herramienta o si se usan ejes externos coordinados, solamente este
punto seguirá la trayectoria deseada a la velocidad programada.

229
Robótica

■■ En el caso en que se use una herramienta estacionaria, tanto la velocidad como


la trayectoria programadas se referirán al objeto de trabajo.

■■ Las posiciones programadas se refieren a la posición del TCP utilizado y a la


orientación respecto al sistema de coordenadas de la herramienta. Ello significa
que si, por ejemplo, se ha reemplazado una herramienta porque está dañada,
se podrá todavía utilizar el programa antiguo si se vuelve a definir el sistema de
coordenadas de la herramienta.

Los datos de herramienta también se usan al mover el robot para:

■■ Definir el TCP que no debe moverse cuando se reorienta la muñeca.

■■ Definir el sistema de coordenadas de la herramienta con vistas a facilitar el


movimiento o rotación de las direcciones de la herramienta.

Es muy importante definir siempre la carga utilizada de la herramienta, y


cuando procede, también la carga útil utilizada. Tener en cuenta que
definiciones incorrectas de los datos de carga pueden provocar una
sobrecarga de la estructura mecánica del robot.

Cuando se especifican datos incorrectos de carga de la herramienta, se pueden


originar las siguientes consecuencias:

Si el valor de la carga especificada es mayor que la del valor real de la carga:

■■ El robot no será utilizado a su capacidad máxima.

■■ La precisión de trayectoria es incorrecta incluyendo el riesgo de vibraciones.

Si el valor de los datos de carga especificados es menor que el valor real de la carga:

■■ La precisión de trayectoria es incorrecta incluyendo el riesgo de vibraciones.

■■ Existe un riesgo de sobrecarga de la estructura mecánica.

Componentes
■■ robhold (en el robot) Tipo de datos: bool, define si el robot está sujetando o no
la herramienta:

■■ TRUE -> El robot está sujetando la herramienta.

■■ FALSE -> El robot no está sujetando la herramienta, es decir, se trata de una


herramienta estacionaria.

230
6. Lenguaje Rapid

■■ tframe (coordenadas de la herramienta) Tipo de dato: pose, el sistema de


coordenadas de la herramienta, es decir:

□□ La posición del TCP (x, y, z) en mm, expresada en el sistema de coordenadas


de la muñeca.

□□ La orientación del sistema de coordenadas de la herramienta, expresada en


el sistema de coordenadas de la muñeca bajo la forma de un cuaterno (q1,
q2, q3 y q4).

a. Si se desea utilizar una herramienta estacionaria, la definición se realizará


respecto al sistema de coordenadas del mundo.

b. Si la dirección de la herramienta no está especificada, el sistema de


coordenadas de la herramienta y el sistema de coordenadas de la
muñeca coincidirán.

c. Si la dirección de la herramienta no está especificada, el sistema de


coordenadas de la herramienta y el sistema de coordenadas de la
muñeca coincidirán.

Figura 6.11. Ejemplo definición TCP.

■■ tooload (carga de la herramienta) Tipo de dato: loaddata, la carga de la


herramienta, es decir:

□□ El peso de la herramienta en kg.

□□ El centro de gravedad de la herramienta (x, y, z) en mm, expresado en el


sistema de coordenadas de la muñeca.

□□ La orientación del sistema de coordenadas de la carga de la herramienta,


expresada en el sistema de coordenadas de la muñeca, para la definición de
los ejes de inercia de la herramienta. La orientación del sistema de coordenadas
de la carga de la herramienta deberá coincidir con la orientación del sistema
de coordenadas de la muñeca. Deberá estar siempre activado en 1, 0, 0, 0.

231
Robótica

□□ Los momentos de inercia de la herramienta respecto a su centro de masa en


torno a los ejes de coordenadas de la carga de la herramienta, expresado en
kgm2.

Si todos los componentes de inercia han sido definidos como 0 kgm2, la herramienta
será considerada como si se tratara de una carga puntual.

Presta especial atención al siguiente ejemplo:


PERS tooldata pinza := [ TRUE, [[97.4, 0, 223.1], [0.924, 0, 0.383 ,0]], [5,
[23, 0, 75], [1, 0, 0, 0], 0, 0, 0]];

■■ El robot está sujetando la herramienta.

■■ El TCP está situado en el punto 223,1 mm en línea recta a partir del eje 6 y 97,4
mm a lo largo del eje X del sistema de coordenadas de la muñeca.

■■ Las direcciones X y Z de la herramienta deberán ser giradas de 45º respecto al


sistema de coordenadas de la muñeca.

Recuerda repasar los conceptos básicos del tema 1 y los manuales de referencia
RAPID para repasar más tipos de datos y instrucciones RAPID

232
6. Lenguaje Rapid

RESUMEN
Estructura de programación:

■ Posteriormente y de forma escalonada o de pirámide aparecen los datos creados por


el usuario, las declaraciones de los datos, herramientas empleadas (TCP), movimientos
o las posiciones de los movimientos en el espacio realizadas automáticamente por el
robot dependiendo del resultado de sus operaciones matemáticas a la hora de realizar
o memorizar una posición de movimiento, y demás datos que continuación y en este
tema podremos observar.

■ Seguidamente pasamos a la rutina principal o también denominada como MAIN, Es


definida automáticamente por el sistema del robot al crear el programa. Es la rutina a
partir de la cual se inicia la ejecución de programa que nosotros poco a poco vamos
creando.

■ Finalmente, en nuestro programa tipo o básico, nos queda por completar las rutinas,
son pequeños programas que se adjuntan o se llaman desde nuestro programa
principal (MAIN) que el sistema crea desde un inicio. Rutinas tales como limpieza de
útil, abrir y cerrar garras, etc.

■ La instrucción está escrita tal y como debemos escribirla en nuestro programa, si


nuestro programa lo editamos o lo crearemos, en un editor de texto, si te confundes a
la hora de escribir la instrucción, en el editor de texto, el robot te lanzará por pantalla,
un mensaje de error de sintaxis y te indicará con exactitud donde se ha cometido el
error, línea y columna de programa.

■ Si nosotros programamos el robot mediante la unidad de programación, los errores


de Sintaxis los eliminaremos, ya que es el robot, quien escribe las líneas de programa
automáticamente, al elegir nosotros la o las instrucciones deseadas y necesarias para
nuestro proceso de programación.

■ Tabla de Instrucciones RAPID.

■ Instrucciones lógicas.

■ Instrucciones de control o cambio de registros.

■ Instrucciones de control o escritura en pantalla.

■ Instrucciones de activación y desactivación de señales.

■ Instrucciones de control de tiempo. Instrucciones de espera.

■ Instrucciones de movimiento.

233

También podría gustarte