Documentos de Académico
Documentos de Profesional
Documentos de Cultura
t.6 Lenguaje Rapid
t.6 Lenguaje Rapid
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
RESUMEN................................................................................................................................................................... 233
186
6. Lenguaje Rapid
OBJETIVOS
■ El principal objetivo de esta unidad es conocer el lenguaje 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.
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
189
Robótica
190
6. Lenguaje Rapid
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.
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.
193
Robótica
Todos los ejes del robot alcanzaran el punto final al mismo tiempo.
194
6. Lenguaje Rapid
Argumentos
MoveL ToPoint [\ID] Speed, Zone, \Tool [\WObj];
■■ MoveL.
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].
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.
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.
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.
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.
196
6. Lenguaje Rapid
Los argumentos de esta instrucción son los mismos que en la instrucción MoveL, los
puedes examinar en la agenda.
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
Argumentos
MoveC CirPoint ToPoint [\ID] Speed, Zone\Tool [\WObj]
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
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).
199
Robótica
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.
Argumentos
MoveAbsJ ToJointPos Speed Zone\Tool [\WObj].
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
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.
Argumentos
MoveLDO ToPoint [\ID] Speed Zone Tool [\WObj] Signal Value.
201
Robótica
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
Limitaciones
El dato cuyo valor va a ser cambiado no poder ser:
■■ Una constante.
Los datos y valores deben de tener tipos de datos similares (los mismos o equivalentes)
202
6. Lenguaje Rapid
ClkStart clock1:
El reloj es arrancado.
ClkStop para el reloj que funciona como un cronometro. Utiliza un tipo de dato Clock.
ClkStop clock1:
El reloj es parado.
203
Robótica
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 reg1;
El valor de reg1 es sustituido por 0, también de esta manera reg1:=0.
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.
La ejecución del programa se para y no puede ser rearrancada a partir de esta posición
en el programa.
FOR i FROM 1 TO 10 DO
rutina1;
ENDFOR
205
Robótica
Argumentos
FOR contador bucle FROM Valor inicial TO Valor final.
■■ 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.
■■ El valor inicial deseado del contador de bucle. (suelen ser números enteros).
■■ El valor final deseado del contador de bucle. (suelen ser números enteros).
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
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 ...
[ELSE]
ENDIF
La condición que debe cumplirse para que las instrucciones entre THEN y ELSE/.
207
Robótica
TEST reg1
CASE 1,2,3 :
rutina1;
CASE 4 :
rutina2;
DEFAULT :
TPWrite “Elección ilegal”;
Stop;
ENDTEST
mensajerror;
Set do1;
PROC mensajerror()
TPWrite “ERROR”;
RETURN;
ENDPROC
208
6. Lenguaje Rapid
Argumentos
RETURN [ Valor devuelto]
■■ 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.
Gestor de errores:
209
Robótica
En una función:
La ejecución del programa también podrá ser detenida utilizando la instrucción EXIT.
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 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.
210
6. Lenguaje Rapid
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
WaitDI di4, 1;
La ejecución del programa continuará sólo después de que la entrada di4
haya sido activada.
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á.
212
6. Lenguaje Rapid
WaitDO do4, 1;
La ejecución del programa continuará sólo después de que la salida do4
haya sido activada.
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.
Cond Tipo de dato: bool, num, signal es la expresión lógica que debe de cumplirse.
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.
WaitTime 0.5;
La ejecución del programa espera 0,5 segundos.
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.
214
6. Lenguaje Rapid
Repite las instrucciones del bucle WHILE mientras reg1 < reg2.
La condición que debe ser cumplida para que las instrucciones del bucle WHILE
puedan ejecutarse.
215
Robótica
TPErase;
TPWrite “Ejecución iniciada”;
El contenido del visualizador de la unidad de programación será borrado
antes de que aparezca Ejecución iniciada.
■■ [\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.
217
Robótica
Argumentos TPReadFK Contestación Texto FK1 FK2 FK3 FK4 FK5 [\Max-
Time] [DIBreak] [\BreakFlag]
■■ Contestación Tipo de dato: num
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
219
Robótica
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.
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.
220
6. Lenguaje Rapid
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:
221
Robótica
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.
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
Una vez transcurrido el tiempo de retraso, la señal cambia sin afectar por ello el resto
de la ejecución del programa.
El valor se especifica a 0 o a 1.
223
Robótica
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
Ejecución
Se generará un pulso con una longitud de pulso específica.
225
Robótica
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.
226
6. Lenguaje Rapid
Descripción
El valor de un tipo de dato num puede ser
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.
227
Robótica
Descripción
El valor de un tipo de dato num puede ser:
Componentes
■■ trans (traslación) Tipo de dato: pos, la posición (x, y, z) del punto central de la
herramienta expresada en mm.
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)
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] ];
Descripción
Los datos de herramienta afectarán a los movimientos del robot en la siguiente medida:
229
Robótica
Si el valor de los datos de carga especificados es menor que el valor real de la carga:
Componentes
■■ robhold (en el robot) Tipo de datos: bool, define si el robot está sujetando o no
la herramienta:
230
6. Lenguaje Rapid
231
Robótica
Si todos los componentes de inercia han sido definidos como 0 kgm2, la herramienta
será considerada como si se tratara de una carga puntual.
■■ 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.
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:
■ 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.
■ Instrucciones lógicas.
■ Instrucciones de movimiento.
233