Está en la página 1de 31

UVA - CARTIF Manual Básico de Programación.

Lenguaje RAPID

J. M. Vázquez Pag.: 3
Manual Básico de Programación. Lenguaje RAPID UVA - CARTIF

MANUAL BÁSICO DE PROGRAMACIÓN


LENGUAJE RAPID

J.C. Fraile
J. López Cruzado
J.M. Vázquez

Valladolid, Octubre 2003

J.M. Vázquez Pag.: 4


UVA - CARTIF Manual Básico de Programación. Lenguaje RAPID

J. M. Vázquez Pag.: 5
Manual Básico de Programación. Lenguaje RAPID UVA - CARTIF

Índice
1. CARACTERÍSTICAS GENERALES DEL LENGUAJE RAPID 8

2. ELEMENTOS BASICOS DEL LENGUAJE 9

2.1 IDENTIFICADORES 9
2.2 SEPARADORES 9
2.3 VALORES NUMÉRICOS, LÓGICOS Y DE CADENA 9
2.4 COMENTARIOS 9
2.5 COMODINES 9
2.6 ENCABEZADO DE ARCHIVO 10
2.7 CONTROL DEL FLUJO DEL PROGRAMA 10
2.8 INSTRUCCIONES Y ARGUMENTOS 10

3. MODULOS Y RUTINAS 12

3.1 ESTRUCTURA DE UNA APLICACIÓN 12


3.2 MÓDULOS 12
3.2.1 DECLARACIÓN DE LOS MÓDULOS 12
3.2.2 MÓDULOS DE SISTEMA 13
3.3 RUTINAS 13
3.3.1 TIPOS DE RUTINAS 13
3.3.2 ALCANCE DE UNA RUTINA 13
3.3.3 DECLARACIÓN DE UNA RUTINA 13
3.3.4 PARÁMETROS DE UNA RUTINA 14

4. DATOS 15

4.1 INTRODUCCIÓN 15
4.2 CARACTERÍSTICAS DE LOS DATOS 15
4.2.1 ALCANCE DE LOS DATOS 15
4.2.2 DECLARACIÓN DE LOS DATOS 15
4.3 TIPOS DE DATOS 15
4.4 LISTA DE LOS DIFERENTES TIPOS DE DATOS 16
4.5 DESCRIPCIÓN DE ALGUNOS DE LOS TIPOS DE DATOS MÁS USUALES 16
4.5.1 POS 16
4.5.2 ORIENT 17
4.5.3 POSE 17
4.5.4 CONFDATA 18
4.5.5 LOADDATA 18
4.5.6 SPEEDDATA 19
4.5.7 ZONEDATA 19
4.5.8 EXTJOINT 20
4.5.9 ROBTARGET 20
4.5.10 TOOLDATA 20

J.M. Vázquez Pag.: 6


UVA - CARTIF Manual Básico de Programación. Lenguaje RAPID

4.5.11 WOBJDATA 21

5. MOVIMIENTOS 22

5.1 CARACTERÍSTICAS DE MOVIMIENTO 22


5.1.1 DEFINICIÓN DE LA VELOCIDAD 22
5.1.2 DEFINICIÓN DE LA ACELERACIÓN 22
5.1.3 DEFINICIÓN DE LA GESTIÓN DE LA CONFIGURACIÓN 22
5.1.4 DEFINICIÓN DE LA CARGA ÚTIL 23
5.1.5 DEFINICIÓN DEL COMPORTAMIENTO DEL ROBOT CERCA DE UN PUNTO SINGULAR 23
5.1.6 DESPLAZAMIENTO DE UN PROGRAMA 23
5.1.7 SERVO SUAVE 24
5.1.8 VALORES DE AJUSTE DEL ROBOT 24
5.2 INSTRUCCIONES DE POSICIONAMIENTO MÁS USUALES 25
5.3 OTRAS INSTRUCCIONES Y FUNCIONES RELACIONADAS 27

6. ENTRADAS Y SALIDAS 28

6.1 INSTRUCCIONES DE E/S MÁS USUALES 28


6.1.1 SET 28
6.1.2 RESET 28
6.1.3 SETAO 28
6.1.4 SETDO 28
6.1.5 SETGO 28
6.1.6 WAITDI 29
6.1.7 WAITDO 29
6.2 OTRAS INSTRUCCIONES Y FUNCIONES RELACIONADAS 29

7. DIALOGO CON EL OPERADOR ¡Error!Marcador no definido.

7.1 INSTRUCCIONES DE COMUNICACIÓN MÁS USUALES 30


7.1.1 TPWRITE 30
7.1.2 TPREADFK 30
7.2 OTRAS INSTRUCCIONES Y FUNCIONES RELACIONADAS 31

8. INSTRUCCIONES VARIAS 32

8.1 INSTRUCCIONES DE ESPERA 32


8.2 FECHA Y HORA 32
8.3 MATEMÁTICAS 32
8.4 INSTRUCCIONES DE SERVICIO 33
8.5 FUNCIONES DE CADENA 33
8.6 FUNCIONES VARIAS 33

J. M. Vázquez Pag.: 7
Manual Básico de Programación. Lenguaje RAPID UVA - CARTIF

1. CARACTERÍSTICAS GENERALES DEL LENGUAJE RAPID

RAPID = Robotics Application Programming Interactive Dialogue

∗ Lenguaje estructurado de alto nivel.


∗ Procedimientos y funciones.
∗ Programas modulares.
∗ Datos y rutinas locales y globales.
∗ Interrupciones.
∗ Gestión automática de errores.
∗ Gestión de ejecución hacia atrás.
∗ Expresiones aritméticas y lógicas.
∗ Multitarea: varios programas ejecutándose a la vez.
∗ Librerías de módulos de programas para rutinas específicas.
∗ El programa robot y los datos definidos por el usuario se almacenan en formato texto PC
DOS.
∗ Los programas se escriben de una manera fácil usando ventanas que contienen las
instrucciones.
∗ Puede ser ampliado por el usuario generando sus propias instrucciones.
∗ “ProcessWare”: colección de módulos de software que proporcionan herramientas para los
distintos procesos. Ejemplos: ArcWare (para soldadura de arco) y SpotWare (para soldadura
por puntos).
∗ Programación “OFF-LINE” y transmisión de los programas al robot desde disquete o PC (vía
puerto serie)

J.M. Vázquez Pag.: 8


UVA - CARTIF Manual Básico de Programación. Lenguaje RAPID

2. ELEMENTOS BÁSICOS DEL LENGUAJE

2.1 Identificadores
Los identificadores sirven para nombrar módulos, rutinas, datos y etiquetas.
∗ El primer carácter de un identificador debe ser una letra.
∗ El resto de caracteres pueden ser letras, números o el carácter de subrayado “_”.
∗ La longitud máxima de cualquier identificador es de 16 caracteres.
∗ El tamaño de la letra (mayúscula o minúscula) no diferencia los identificadores.
Hay una serie de palabras que no se pueden utilizar como identificadores:
∗ Palabras reservadas del lenguaje RAPID (ej.: AND, IF, MODULE, LOCAL, etc.)
∗ Nombres predefinidos para tipos de datos, datos del sistema, instrucciones y funciones.
2.2 Separadores
El lenguaje RAPID es un lenguaje sin formatos, lo que significa que los espacios pueden utilizarse en
cualquier parte excepto en : identificadores, palabras reservadas, valores numéricos y comodines.
Los caracteres fin de línea, tabuladores y fin de página se pueden usar donde se pueda usar un espacio,
excepto dentro de comentarios.
Las instrucciones se separan entre sí mediante “ ; “.
Los identificadores, palabras reservadas y valores numéricos deberán estar separados entre sí por un
espacio, un carácter fin de línea o un tabulador.
Los espacios innecesarios y los caracteres de fin de línea serán automáticamente borrados al cargar un
programa en la memoria. Esto implica que un programa cargado desde un disquete (programa realizado
OFF-LINE) y luego almacenado de nuevo, puede diferir del original.

2.3 Valores numéricos, lógicos y de cadena


Un valor numérico (entero o coma flotante) deberá estar dentro de los límites especificados por el
estándar ANSI de coma flotante simple precisión.
Un valor lógico podrá expresarse como TRUE (verdadero) o FALSE (falso).
Un valor de cadena es una secuencia de caracteres (ISO 8859-1) y de caracteres de control. Se pueden
incluir códigos de caracteres (precedidos por \) y caracteres no imprimibles. Una cadena va siempre
entre comillas “ “ . En el caso de tener que incluir dentro de una cadena los caracteres \ o “, se deben
escribir dos veces.
Ejemplo:
“Esta cadena termina con el código de control BEL \07”
“Esta cadena contiene un carácter “” comillas”

2.4 Comentarios
Los comentarios se incluyen para facilitar la comprensión del programa y no afectan en modo alguno al
funcionamiento del mismo. Un comentario empieza siempre con el símbolo ! y acaba con el carácter de
fin de línea. Siempre ocupa una línea entera.
Ejemplo:
...
! Esto es un comentario
...

2.5 Comodines
Los comodines se utilizan para representar de forma temporal ciertas partes del programa que todavía
no han sido definidas.

J. M. Vázquez Pag.: 9
Manual Básico de Programación. Lenguaje RAPID UVA - CARTIF

Comodín Representa
<DDN> Una declaración de datos
<RDN> Una declaración de rutina
<PAR> Un parámetro alternativo opcional
<ALT> Un parámetro opcional
<DIM> Una definición de la dimensión de una matriz
<SMT> Una instrucción
<VAR> Una referencia (variable, persistente o parámetro) a un dato
<EIT> La cláusula ELSE de una instrucción IF
<CSE> La cláusula CASE de una instrucción TEST
<EXP> Una expresión
<ARG> Un argumento de llamada de procedimiento
<ID> Un identificador

2.6 Encabezado de archivo


Un archivo de programa empieza siempre con el siguiente encabezado:
%%%
VERSION: 1 Versión del sistema
LANGUAGE: ENGLISH Idioma
%%%

2.7 Control del flujo del programa


En algunos casos es necesario interrumpir la ejecución secuencial de las instrucciones del programa. El
flujo del programa se puede controlar mediante:
• Llamadas a rutinas
− ProcCall: llamada (salto) a otra rutina.
− CallByVar: llamada a un procedimiento con nombre específico.
− RETURN: regreso a la rutina original.
• Instrucciones de evaluación de condición:
− CompactIF: ejecuta una instrucción sólo si se cumple una condición.
− IF: ejecuta una parte de programa u otra según una condición.
− WHILE: repite una parte del programa hasta que se cumpla una condición.
− TEST: ejecuta diferentes partes de programa según el valor de una expresión.
• Instrucciones de repetición de una secuencia:
− FOR: repite una parte de programa un cierto número de veces.
• Salto a una etiqueta dentro de una rutina:
− GOTO: salta a una etiqueta.
• Parada de la ejecución del programa:
− STOP: detiene la ejecución del programa.
− EXIT: para la ejecución de un programa cuando el rearranque de un programa no es
permitido.
− BREAK: para la ejecución de un programa temporalmente para el diagnóstico y
solución de averías.
2.8 Instrucciones y argumentos
Un programa robot está formado por una serie de instrucciones que describen el trabajo del mismo:
instrucciones de movimiento, de entradas y salidas, de comunicación, etc.
Las instrucciones contienen argumentos asociados que definen lo que va a producir la ejecución de la
instrucción. Los argumentos se pueden especificar de alguna de las siguientes maneras:
∗ Valor numérico: 4, 1E4, 2.5, etc.

J.M. Vázquez Pag.: 10


UVA - CARTIF Manual Básico de Programación. Lenguaje RAPID

∗ Referencia a un dato: reg1 (num), posición3 (robtarget), etc.


∗ Expresión. ej.:5+reg1*2.
∗ Llamada a una función. ej.: Abs(reg1).
∗ Valor de cadena. ej.: “Número de piezas”.

J. M. Vázquez Pag.: 11
Manual Básico de Programación. Lenguaje RAPID UVA - CARTIF

3. MÓDULOS Y RUTINAS

3.1 Estructura de una Aplicación

MEMORIA DE PROGRAMA

MÓDULO PRINCIPAL MÓDULO 1 MÓDULO N


DATOS DATOS DATOS

RUTINA PRINCIPAL ...


RUTINAS RUTINAS
RUTINAS

PROGRAMA

MÓDULO MÓDULO MÓDULO


de de de
SISTEMA SISTEMA
... SISTEMA

Una Aplicación consta de un programa y una serie de módulos de sistema. A su vez el programa puede
estar dividido en varios módulos.

3.2 Módulos
Un módulo de programa está compuesto por DATOS y RUTINAS. Cada módulo puede ser cargado o
salvado independientemente.
Uno de los módulos del programa contendrá la rutina principal o MAIN, que es el punto de arranque del
programa.

3.2.1 Declaración de los módulos


Al declarar un módulo hay que especificar un nombre y unos atributos (los atributos sólo se pueden
añadir OFF-LINE).
Tipos de atributos:
• SYSMODULE: se trata de un módulo de sistema.
• NOSTEPIN: no permite la entrada en el módulo durante la ejecución paso a paso.
• VIEWONLY: el módulo no puede ser modificado.
• READONLY: el módulo no puede ser modificado pero sus atributos pueden ser eliminados.
• NOVIEW: no puede ser visualizado; sólo ejecutado. Un programa que contiene un módulo
NOVIEW no puede ser salvado. NOVIEW se utiliza sobre todo para los módulos de sistema.
Ejemplo:
MODULE modulo1 (SYSMODULE, NOVIEW) Módulo de sistema no visible
! Declaraciones
! Instrucciones
ENDMODULE

J.M. Vázquez Pag.: 12


UVA - CARTIF Manual Básico de Programación. Lenguaje RAPID

3.2.2 Módulos de Sistema


Sirven para la definición de los datos y rutinas específicas del sistema, como por ejemplo las
herramientas. No serán incluidos cuando se salva un programa, lo que significa que una modificación
realizada en un módulo de sistema afectará a todos los programas.
Los módulos de sistema residen siempre en memoria (se cargan durante el arranque en frío del sistema)
y pueden ser utilizados siempre.

3.3 Rutinas
Una rutina típica tiene la siguiente estructura:

DECLARACIONES

DATOS

INSTRUCCIONES

RUTINA de TRATAMIENTO
de ERRORES

3.3.1 Tipos de rutinas


Existen tres tipos de rutinas:
• PROCEDIMIENTOS: rutinas que no devuelven ningún valor.
• FUNCIONES: devuelven un valor de un tipo determinado.
• RUTINAS DE TRATAMIENTO DE INTERRUPCIONES: para el tratamiento de las
interrupciones. Nunca pueden ser llamadas explícitamente desde el programa.
3.3.2 Alcance de una rutina
El alcance de una rutina hace referencia a desde dónde se puede acceder a dicha rutina. Desde este
punto de vista hay dos tipos de rutinas:
• LOCALES: sólo se puede acceder desde el módulo que la contiene. Se deben declarar
añadiendo al principio la palabra reservada LOCAL.
• GLOBALES: puede ser llamada desde cualquier módulo. Las rutinas son globales por
defecto.
3.3.3 Declaración de una rutina
• Declaración de un procedimiento:
PROC nombre_proc ( ...argumentos... )
...
ENDPROC
El final de un procedimiento está indicado por ENDPROC, BACKWARD o ERROR, pero
también se puede forzar con la instrucción RETURN.
• Declaración de una función:
FUNC tipo_devuelto nombre_func ( ...argumentos... )
...
RETURN(...);
...
ENDFUNC

J. M. Vázquez Pag.: 13
Manual Básico de Programación. Lenguaje RAPID UVA - CARTIF

La evaluación de una función debe terminar con una instrucción RETURN.


• Declaración de una rutina de tratamiento de interrupciones:
TRAP nombre_rut_trat_int
...
RETURN
...
ENDTRAP
El final de una rutina de interrupción está indicado por ENDTRAP o ERROR, pero también
se puede forzar con la instrucción RETURN.

3.3.4 Parámetros de una rutina


Son los argumentos que se deben suministrar a dicha rutina cuando se la llama. Tipos de parámetros:
• NORMALES: se utilizan como entradas a la rutina y son procesados como variables de la
rutina. El cambio de esta variable en la rutina no cambia el valor del argumento.
• INOUT: el argumento correspondiente debe ser una variable o un entero persistente y su
valor puede ser cambiado por la rutina.
• VAR: el argumento correspondiente debe ser una variable que puede ser cambiada por la
rutina.
• PERS: el argumento correspondiente debe ser un persistente entero que puede ser cambiado
por la rutina.
Un parámetro puede ser opcional. En ese caso se antepone un \ en la declaración. Si hay varios
parámetros opcionales mutuamente excluyentes entre sí se deben separar por |.
Ejemplo:
PROC rutina1 (num par_in, INOUT num par_inout, VAR num par_var, PERS num
par_pers, num par_obligat, \num par_opcional, \num
par_opc_1 | num par_opc_2)
El tipo especial switch sólo puede ser asignado a parámetros opcionales y proporciona una forma de
utilizar argumentos especificados por los nombres y no por los valores.
Ejemplo:
PROC rutina2 (\switch on | \switch off)
...
IF present(off) THEN
...
ENDPROC
Las matrices también pueden utilizarse como argumento. La dimensión de la matriz será determinada
por el parámetro.
Ejemplo:
PROC rutina3 (VAR num matriz1{*,*})

J.M. Vázquez Pag.: 14


UVA - CARTIF Manual Básico de Programación. Lenguaje RAPID

4. DATOS

4.1 Introducción
Existen 3 tipos de datos:
• VARIABLES: se les puede asignar un nuevo valor durante la ejecución del programa.
• PERSISTENTES: es una variable que tiene la particularidad de que su valor de inicialización
se actualiza a medida que va cambiando. Cuando se guarda un programa, el valor de
inicialización de cualquier declaración de persistente refleja el último valor que ha tomado el
dato persistente.
• CONSTANTES: representan un valor estático que no podrá cambiar.
Siempre que se declara un dato es necesario asignarle un tipo de dato, excepto los datos predefinidos y
las variables de bucle.
No hay limitación en cuanto al número de datos que se pueden definir de cada tipo, excepto las
limitaciones impuestas por la memoria del sistema.

4.2 Características de los datos

4.2.1 Alcance de los datos


El alcance de un dato hace referencia a desde donde se puede acceder a dicho dato. Según dónde se
declaren los datos, éstos pueden ser:
• DATOS DE PROGRAMA: datos declarados fuera de una rutina. Estos datos a su vez pueden
ser :
∗ LOCALES: sólo se pueden usar en el módulo que los contiene. Se deben declarar
añadiendo al principio la palabra reservada LOCAL.
∗ GLOBALES: puede ser llamada desde cualquier módulo. Las rutinas son globales por
defecto.
• DATOS DE RUTINA: datos declarados dentro de una rutina. Sólo se pueden usar en la rutina
en que se encuentran.
4.2.2 Declaración de los datos
• Declaración de un dato variable:
[LOCAL] VAR tipo_dato nombre_dato
Los datos de variable con tipo de valor podrán ser inicializados en la declaración:
VAR num matriz{10}:=[1,2,3,4,5,6,7,8,9,0]
VAR string nombre:=“JUAN”
• Declaración de un dato persistente:
PERS num reg1:=0
Los datos persistentes sólo pueden declararse en el nivel de módulo (fuera de las rutinas)
y deben tener obligatoriamente un valor inicial. Si un dato persistente es actualizado, se
actualizará automáticamente su valor de inicialización.
• Declaración de un dato constante:
CONS num pi:= 3.1415

4.3 Tipos de datos


Atendiendo a su descomposición, existen 2 grandes grupos de tipos de datos:
• ATÓMICOS: datos cuya definición no está basada en otro tipo y que no puede ser dividido en
partes ni componentes. Ej.: num.
• REGISTRO: tipo de datos formado por componentes ordenados y nombrados. Ej.: pos.
Atendiendo a su valor, hay dos grandes grupos de tipos de datos:

J. M. Vázquez Pag.: 15
Manual Básico de Programación. Lenguaje RAPID UVA - CARTIF

• CON VALOR: representan de alguna forma un valor. Pueden ser utilizados en operaciones
que tratan con valores: inicialización, asignación, comparación , etc.
• SIN VALOR: no representan un valor.
4.4 Lista de los diferentes tipos de datos
bool Valores lógicos
clock Medida del tiempo
confdata Datos de configuración del robot
dionum Valores digitales (0,1)
errnum Número de error
extjoint Posición de los ejes externos
intnum Identificación de una interrupción
iodev Canales y archivos de comunicación serie
jointtarget Datos de posición de los ejes
loaddata Datos de carga
mecunit Unidad mecánica
motsetdata Datos de movimiento
num Valores numéricos (registros)
orient Orientación
o_lointtarget Dato de posición original de un eje
o_robtarget Datos de posición original
pos Posiciones (X,Y,Z) sin orientación
pose Transformación de coordenadas
progdisp Desplazamiento de programa
robjoint Posición de los ejes del robot
robtarget Datos de posición (completos)
signalai Señales de entrada analógicas
signalao Señales de salida analógicas
signaldi Señales de entrada digitales
signaldo Señales de salida digitales
signalgi Grupo de señales de entrada digitales
signalgo Grupo de señales de salida digitales
speeddata Datos de velocidad
string Cadena de caracteres
symnum Número simbólico
tooldata Datos de herramienta
triggdata Eventos de posicionamiento (disparo)
tunetype Tipo de ajuste servo
wobjdata Datos del objeto de trabajo
zonedata Datos de zona de ajuste
Datos del sistema

4.5 Descripción de algunos de los tipos de datos más usuales

4.5.1 Pos
Se usa para almacenar la posición del robot (Solo X,Y,Z)
Componentes:

J.M. Vázquez Pag.: 16


UVA - CARTIF Manual Básico de Programación. Lenguaje RAPID

x Coordenada X num
y Coordenada Y num
z Coordenada Z num
Ejemplo:
VAR pos posicion1:= [600,500,400];

4.5.2 Orient
El tipo de datos Orient se utiliza para almacenar la orientación de un sistema de coordenadas.
Componentes:
q1 Cuaternio 1 num
q2 Cuaternio 2 num
q3 Cuaternio 3 num
q4 Cuaternio 4 num
La orientación de un sistema de coordenadas respecto a uno de referencia se puede describir mediante
una matriz de rotación. Esta matriz tendrá por columnas los vectores normalizados que representan las
direcciones de los ejes X, Y y Z respecto al sistema de coordenadas de referencia. Necesitamos, por
tanto, 9 valores para representar una orientación.

x = ( x1, x 2, x 3)  x1 y1 z1
y = ( y1, y 2, y 3)  x 2 y 2 z2
 
z = ( z1, z 2, z 3)  x 3 y 3 z 3
Mediante los cuaternios podemos representar la orientación con sólo 4 valores. Los cuaternios se
calculan en función de los componentes de la matriz de rotación de la siguiente forma:

x1 + y 2 + z 3 + 1
q1 =
2
x1 − y 2 − z 3 + 1
q2 = sign q 2 = sign( y 3 − z 2)
2
y 2 − x1 − z 3 + 1
q3 = sign q 3 = sign( z1 − x 3)
2
z 3 − x1 − y 2 + 1
q4 = sign q 4 = sign( x 2 − y1)
2
Siempre se cumple que q12 + q 2 2 + q 32 + q 4 = 1
Ejemplo:
VAR orient orient1:= [1,0,0,0]; Orientación del sistema de coordenadas de la muñeca

4.5.3 Pose
Se usa para definir un sistema de coordenadas respecto a otro, por ejemplo, el sistema de coordenadas
de la herramienta respecto al sistema de la muñeca
Componentes:
trans Desplazamiento (x,y,z) del sistema de coordenadas pos
rot Rotación del sistema de coordenadas orient
Ejemplo:
VAR pose pose1:= [[50,0,40], [1,0,0,0] ];

J. M. Vázquez Pag.: 17
Manual Básico de Programación. Lenguaje RAPID UVA - CARTIF

4.5.4 Confdata
Sirve para definir las configuraciones de los ejes del robot. A veces el robot es capaz de alcanzar la
misma posición y orientación de la herramienta mediante varias configuraciones de ejes diferentes. Para
evitar esta ambigüedad se utilizará este tipo de dato.
Componentes:
cf1 Indica el cuadrante en el que se encuentra el eje 1 (entre -4 y +3) num
cf4 Indica el cuadrante en el que se encuentra el eje 4 (entre -4 y +3) num
cf6 Indica el cuadrante en el que se encuentra el eje 6 (entre -4 y +3) num
cfx No se utiliza de momento num
El cuadrante 0 corresponde a un ángulo entre 0º y 90º, el 1 entre 90º y 180º, el -1 entre 0º y -90º, y así
sucesivamente.
Ejemplo:
VAR confdata config1:= [1,-1,0,0];

4.5.5 Loaddata
Sirve para definir las cargas instaladas en la brida de montaje del robot. Las cargas definidas sirven para
determinar un modelo de dinámica del robot, de forma que los movimientos puedan ser controlados de la
mejor forma posible.
NOTA: la carga útil que manipula la pinza del robot es de tipo Loaddata. La carga de la propia
herramienta es también de este tipo pero está definida dentro de la herramienta.
Si la carga declarada es mayor que la real, el robot no será utilizado a su capacidad máxima, la precisión
será incorrecta y habrá riesgo de vibraciones. Si la carga declarada es menor que la instalada, la
precisión será incorrecta y habrá también riesgo de vibraciones.
Componentes:
mass El peso de la carga en Kg. num
cog El centro de gravedad de la carga (x,y,z) en mm pos
aom La orientación de los ejes del momento de la carga en el centro de orient
gravedad.
ix El momento de inercia de la carga alrededor del eje X en Kgm2 num
2
iy El momento de inercia de la carga alrededor del eje Y en Kgm num
2
iz El momento de inercia de la carga alrededor del eje Z en Kgm num
La orientación de los ejes de momento y de los momentos de inercia, normalmente no necesitan ser
definidos. Si ix, iy e iz son 0 kgm2, se considera una carga puntual. Normalmente, sólo se definirá el
momento de inercia cuando la distancia entre la brida de montaje y el centro de gravedad sea menor que
la dimensión de la carga.
La carga útil debe ser definida sólo como persistente y no dentro de una rutina.
La carga load0 define una carga útil de un peso de 0 kg. Siempre se puede acceder a la carga load0
desde el programa, pero no se puede cambiar (se almacena en el módulo de sistema BASE).
PERS loaddata load0:= [0, [0,0,0], [1,0,0,0],0,0,0];
Ejemplo:
PERS loaddata pieza1:= [5, [50,0,50], [1,0,0,0],0,0,0];
Set pinza;
WaitTime 0.3;
GripLoad pieza1; La conexión de la carga útil pieza1 se especifica en el momento en que el
robot coge la pieza1
Reset pinza;
WaitTime 0.3;
GripLoad load0; La desconexión de la carga útil pieza1 se especifica en el momento en que el
robot deja la pieza1

J.M. Vázquez Pag.: 18


UVA - CARTIF Manual Básico de Programación. Lenguaje RAPID

4.5.6 Speeddata
Sirve para especificar la velocidad del robot: TCP, reorientación de la herramienta y de los ejes externos.
Cuando se combinan diferentes tipos de movimientos hay una velocidad que limita todos los
movimientos. La velocidad del resto de movimientos será reducida para que los movimientos acaben su
ejecución al mismo tiempo. La velocidad también será restringida por la capacidad del robot.
Componentes:
v_tcp Velocidad del TCP en mm/s num
v_ori Velocidad de la reorientación de la herramienta en grados/segundo num
v_leax Velocidad de los ejes externos lineales en mm/s num
v_reax Velocidad de los ejes externos rotativos en mm/s num
Hay una serie de datos de velocidad ya definidos en el módulo de sistema BASE: v5, v10, v20, ..., v3000
y vmax.
Ejemplo:
VAR speeddata vel_alta:= [2000,30,200,15];

4.5.7 Zonedata
Una posición puede terminarse en un punto de paro o en un punto de paso. Un punto de paro significa
que el robot debe alcanzar la posición programada. En un punto de paso, el robot nunca alcanza la
posición programada sino que comenzará o moverse hacia el siguiente punto cuando entre en la “zona”
que se haya definido.
Para cada posición se pueden definir 2 zonas distintas:
∗ Zona de la trayectoria del TCP
∗ Zona extendida de reorientación de la herramienta y ejes externos.
El tamaño de la zona nunca podrá ser mayor que la mitad de la distancia a la posición anterior o
siguiente más cercana. Si se especifica una zona mayor, el robot la reducirá automáticamente.
Zona extendida Zona del TCP
(reorientación y ejes externos)

Inicio del cambio de


Punto Programa
reorientación
Inicio del cambio de
trayectoria del TCP

Componentes:
finep TRUE: el movimiento termina en un punto de paro bool
FALSE: el movimiento termina en un punto de paso
pzone_tcp Radio de la zona del TCP en mm num
pzone_ori Radio de la zona de reorientación de la herramienta en mm (debe ser num
mayor que pzonetcp)
pzone_eax Radio de la zona de los ejes externos (debe ser mayor que pzonetcp) num
zone_ori Tamaño de la zona de reorientación de herramienta en grados num
zone_leax Tamaño de zona de los ejes externos lineales en mm num
zone_reax Tamaño de la zona de los ejes externos rotativos en grados num
Hay una serie de datos de zona ya definidos en el módulo de sistema BASE: z1, z5, z10, z15, ..., z200 y
fine (punto de paro).

J. M. Vázquez Pag.: 19
Manual Básico de Programación. Lenguaje RAPID UVA - CARTIF

Ejemplo:
VAR zonedata zona1:= [FALSE,25,40,40,10,35,5];

4.5.8 Extjoint
Se utiliza para almacenar la posición de los ejes externos. Los 6 ejes externos que puede controlar el
robot se denominan a,b,c,d,e y f. Cada uno de estos ejes lógicos podrá ser conectado a una eje físico
mediante un parámetro de sistema. En el caso de que un eje lógico no esté conectado a un eje físico, se
indicará 9E9 como valor de posición.
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.
Componentes:
eax_a Posición del eje externo a (en grados o mm según el tipo de eje) num
eax_b Posición del eje externo b (en grados o mm según el tipo de eje) num
eax_c Posición del eje externo c (en grados o mm según el tipo de eje) num
eax_d Posición del eje externo d (en grados o mm según el tipo de eje) num
eax_e Posición del eje externo e (en grados o mm según el tipo de eje) num
eax_f Posición del eje externo f (en grados o mm según el tipo de eje) num
Ejemplo:
VAR extjoint pos_ejes_ext1:= [11,25.2,9E9,9E9,9E9,9E9];

4.5.9 Robtarget
Sirve para definir la posición del robot y los ejes externos. 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.
Componentes:
trans Posición XYZ del TCP en mm respecto al sistema de coordenadas pos
objeto incluyendo desplazamiento si lo hay.
rot Orientación de la herramienta expresada en cuaternios orient
robconf Configuración de los ejes del robot (cf1, cf4, cf6 y cfx) confdata
extax Posición de los ejes externos extjoint
Ejemplo:
CONST robtarget punto1:= [[600,500,400], [1,0,0,0], [1,1,0,0],
[15,20.3,9E9,9E9,9E9,9E9];

4.5.10 Tooldata
Se utiliza para describir las características de una herramienta: TCP, carga, etc. Los datos de
herramienta deberán ser definidos únicamente como persistentes y no deberán ser definidos dentro de
una rutina.
Componentes:
robhold TRUE: el robot está sujetando la herramienta. bool
FALSE: se trata de una herramienta estacionaria.
tframe Sistema de coordenadas de la herramienta: posición del TCP y pose
orientación.
tload Define la carga de la herramienta loaddata
La herramienta tool0 define el sistema de coordenadas de la muñeca. Los datos de tool0 no pueden ser
cambiados (están almacenados en el módulo de sistema BASE).
PERS tooldata tool0:= [TRUE,[ [0,0,0], [1,0,0,0] ], [0,[0,0,0],
[1,0,0,0],0,0,0] ];
Ejemplo:

J.M. Vázquez Pag.: 20


UVA - CARTIF Manual Básico de Programación. Lenguaje RAPID

PERS tooldata herram1:= [TRUE,[ [58,26.3,0], [0.924,0,0.383,0] ],


[5,[23,0,75], [1,0,0,0],0,0,0] ];

4.5.11 Wobjdata
Se utiliza para definir el objeto de trabajo del robot. Si se utiliza una herramienta estacionaria o ejes
externos coordinados se deberá definir el objeto de trabajo, ya que la trayectoria y la velocidad se
referirán al objeto de trabajo y no al TCP.
Componentes:
robhold TRUE: el robot está sujetando el objeto de trabajo. bool
FALSE: el robot está sujetando la herramienta.
ufprog TRUE: sistema de coordenadas fijo del usuario. bool
FALSE: sistema de coordenadas móvil de usuario (ejes externos
coordinados)
ufmec La unidad mecánica con la que los movimientos del robot están string
coordinados.
uframe Sistemas de coordenadas del usuario pose
oframe Sistema de coordenadas del objeto pose
Los datos de objeto deberán ser definidos únicamente como persistentes y no deberán ser definidos
dentro de una rutina.
El objeto wobj0 coincide con el sistema de coordenadas mundo. Los datos de wobj0 no pueden ser
cambiados (están almacenados en el módulo de sistema BASE).
PERS wobjdata wobj0:= [FALSE,TRUE,””,[ [0,0,0], [1,0,0,0] ], [[0,0,0],
[1,0,0,0]]];
Ejemplo:
PERS wobjdata objeto1:= [FALSE,TRUE,””,[ [300,600,200], [1,0,0,0] ],
[[0,200,30], [1,0,0,0]]];

NOTA: para más información sobre el resto de tipos de datos, consultar el capítulo “Tipos de datos” de la
GUIA DE REFERENCIA RAPID.

J. M. Vázquez Pag.: 21
Manual Básico de Programación. Lenguaje RAPID UVA - CARTIF

5. MOVIMIENTOS

5.1 Características de movimiento


Las características básicas del movimiento del robot están especificadas en los argumentos de las
instrucciones de movimiento. Sin embargo hay algunas que se especifican en instrucciones separadas y
se aplican a todos los movimientos hasta que estas cambian.
Las características generales de movimiento del robot están especificadas mediante una serie de
instrucciones, pero también pueden leerse mediante las variables de sistema C_MOTSET
(características de movimiento excepto desplazamientos de programa) y C_PROGDISP (desplazamiento
de programa).
Los valores por defecto de estas características quedan activados automáticamente (mediante la
ejecución de la rutina SYS_RESET del módulo de sistema BASE) al arrancar el programa, cargar un
programa nuevo o arrancar un programa desde el principio.
Veamos a continuación estas características:

5.1.1 Definición de la velocidad


Además de la velocidad absoluta especificada en cada instrucción se puede definir una velocidad
máxima y un ajuste de velocidad con la instrucción VelSet.
VelSet ajuste Max
Sirve para definir la velocidad máxima y el ajuste de velocidad.
ajuste Es la velocidad deseada expresada en un % de la velocidad programada. num
Valor por defecto = 100%
Max Velocidad máxima del TCP en mm/s. num
Valor por defecto = 5000 mm/s.
Ejemplo:
VelSet 200, 1000
Todas las velocidades programadas se duplican pero sin pasar nunca de 1000.

5.1.2 Definición de la aceleración


Cuando se manipulan piezas frágiles, por ejemplo, se puede reducir la aceleración en una parte del
programa, para que los movimientos del robot sean más suaves.
AccSet Acc Rampa
Sirve para ajustar la aceleración del robot.
Acc Limita la aceleración, mediante un porcentaje de la aceleración máxima. num
Valor máximo =100%. Un valor <20% se toma como 20%.
Rampa Limita la rampa de aceleración, mediante un porcentaje del valor normal. num
Valor máximo=100%. Un valor <10% se toma como 10%.
Ejemplo:
AccSet 30, 50
La aceleración se limita al 30% de la máxima y la rampa al 50%.

5.1.3 Definición de la gestión de la configuración


Las instrucciones ConfJ y ConfL permiten gestionar el control de la configuración de los ejes durante un
movimiento eje a eje o lineal respectivamente. Hay que tener en cuenta que a veces es posible alcanzar
la misma posición y orientación con diferentes configuraciones de ejes.
ConfJ [\On] | [\Off]
Activa o desactiva el control de la configuración de los ejes en los movimientos de tipo MOVEJ.

J.M. Vázquez Pag.: 22


UVA - CARTIF Manual Básico de Programación. Lenguaje RAPID

[\On] El robot siempre se mueve a la configuración de ejes programada. Si ello no switch


es posible la ejecución del programa se detiene. Opción activa por defecto.
[\Off] En el caso en que la posición y orientación programadas se pueda alcanzar switch
de varias maneras diferentes, con distintas configuraciones de ejes, el
sistema escogerá la más cercana posible.

ConfL [\On] | [\Off]


Activa o desactiva el control de la configuración de los ejes en los movimientos de tipo MOVEL o
MOVEC.
[\On] El robot siempre se mueve a la configuración de ejes programada. Si ello no switch
es posible la ejecución del programa se detiene. Opción activa por defecto.
[\Off] En el caso en que la posición y orientación programadas se pueda alcanzar switch
de varias maneras diferentes, con distintas configuraciones de ejes, el
sistema escogerá la más cercana posible.

5.1.4 Definición de la carga útil


Se deberá definir la carga útil correcta del robot para optimizar el funcionamiento del mismo.
GripLoad carga
Define la carga útil que el robot sujeta con su pinza.
carga Carga útil utilizada. Por defecto es load0 (de 0 Kg). loaddata

5.1.5 Definición del comportamiento del robot cerca de un punto singular


Se puede programar el robot para que evite los puntos singulares cambiando la orientación de la
herramienta automáticamente.
SingArea [\Wrist] | [\Arm] | [\Off]
Define cómo el robot debe moverse en la proximidad de los puntos singulares.
[\Wrist] Se tolera una pequeña diferencia en la orientación de la herramienta a fin de switch
evitar la singularidad de la muñeca. Se usa cuando los ejes 4 y 6 están
alineados.
[\Arm] Se tolera una pequeña diferencia en la orientación de la herramienta a fin de switch
evitar la singularidad del brazo. Se usa cuando el centro de la muñeca
coincide con la extensión del eje 1.
[\Off] No se permite cambiar la orientación en los puntos singulares. Argumento switch
por defecto.

5.1.6 Desplazamiento de un programa


Permite desplazar todos los puntos de un programa en una dirección determinada. Se utilizará cuando
se repitan estructuras de movimientos en diferentes lugares del programa. Un desplazamiento de
programa consiste en una traslación y una rotación respecto al sistema de coordenadas objeto.
PDispSet BaseDesp
Define y activa un desplazamiento de programa utilizando valores.
BaseDesp Dato que define el desplazamiento. pose
Ejemplo:
VAR pose desp1:= [[100,-50,0],[1,0,0,0]];
PDispSet desp1;
El sistema de coordenadas de desplazamiento de programa será desplazado 100 mm del sistema de
coordenadas objeto en la dirección positiva del eje X y 50 en la negativa del eje y. La orientación no
cambia.
Otras instrucciones relacionadas:

J. M. Vázquez Pag.: 23
Manual Básico de Programación. Lenguaje RAPID UVA - CARTIF

PDispOn Activa el desplazamiento de programa


PDispOff Desactiva el desplazamiento de programa
EOffsOn Activar un offset de un eje externo
EOffsSet Activar un offset de un eje externo especificando un valor
EOffsOff Desactivar un offset de un eje externo
Funciones relacionadas:
DefDFrame Calcula un desplazamiento de programa a partir de 3 posiciones
DefFrame Calcula un desplazamiento de programa a partir de 6 posiciones
ORobT Elimina un desplazamiento de programa a partir de 1 posición

5.1.7 Servo suave


Esta función puede aplicarse a uno o varios ejes del robot, proporcionándole una gran flexibilidad.
SoftAct Eje Suavidad [\Rampa]
Activa el “servo suave” en cualquiera de los ejes del robot.
Eje Eje del robot (1 a 6). num
Suavidad Valor de suavidad en porcentaje (0-100%)En el caso en que la posición y num
orientación programadas se pueda alcanzar de varias maneras diferentes,
con distintas configuraciones de ejes, el sistema escogerá la más cercana
posible.
[\Rampa] Factor de rampa en % (>100%). Cuanto más elevado sea el valor, el servo num
funcionará más lentamente. (rampa más larga)

SoftDeact
Desactiva el “servo suave” en todos los ejes del robot.

5.1.8 Valores de ajuste del robot


En el caso de desajuste del robot, se podrán ajustar determinados valores para conseguir siempre el
máximo rendimiento del robot.
TuneServo Unidadmec Eje Valorajuste [\Tipo]
Ajusta el comportamiento dinámico de los ejes del robot.
Unidadmec Unidad mecánica (ej.: IRB) del robot (1 a 6). mecunit
Eje Número de eje (1 a 6) num
Valorajuste Valor de ajuste en % (1 a 200%). 100 es el valor normal. num
[\Tipo] Tipo de ajuste servo: TUNE_DF, TUNE_KP, TUNE_KV y TUNE_TI. tunetype

TuneReset
Reinicializa el comportamiento dinámico del todos los ejes del robot a sus valores normales.

J.M. Vázquez Pag.: 24


UVA - CARTIF Manual Básico de Programación. Lenguaje RAPID

5.2 Instrucciones de posicionamiento más usuales


MoveJ [\Conc] Alpunto Velocidad [\V] [\T] Zona [\Z] Herramienta [\WObj]
Sirve para mover rápidamente el robot de un punto a otro punto cuando este movimiento no tiene que
realizarse necesariamente en línea recta. Todos los ejes se mueven a una velocidad constante y
alcanzan su posición final a la vez. La herramienta será orientada y los ejes externos se moverán, al
mismo tiempo que se mueve el TCP. En el caso en que la reorientación o los ejes externos no puedan
alcanzar la velocidad programada, la velocidad de TCP será reducida.
[\Conc] Con esta opción, las instrucciones lógicas siguientes se ejecutarán switch
mientras el robot está en movimiento. Acorta tiempo de ciclo.
Alpunto Coordenadas y orientación del punto destino. robtarget
Velocidad Velocidad del TCP, reorientación de la herramienta y ejes externos. speeddata
[\V] Sirve para especificar la velocidad del TCP en mm/s directamente en la num
instrucción.
[\T] Sirve para especificar el tiempo total del movimiento en segundos. num
Zona Tamaño de la “zona cero” del movimiento. zonedata
[\Z] Sirve para especificar el tamaño en mm. de la “zona cero” directamente en num
la instrucción
Herramienta Es la herramienta activa durante el movimiento. El TCP de la misma es el tooldata
punto que se mueve.
[\WObj] Es el objeto de trabajo (sistema de coordenadas) al que se refiere la wobjdata
posición del robot en la instrucción. Si se omite este argumento, se refiere
al sistema de coordenadas mundo.
Ejemplo:
MoveJ punto1, v200, z40, pinza3;

MoveL [\Conc] Alpunto Velocidad [\V] [\T] Zona [\Z] Herramienta [\WObj]
Sirve para mover el TCP de la herramienta de forma lineal al punto destino. La herramienta es orientada
a intervalos iguales sobre la trayectoria y los ejes externos (no coordinados) se moverán a un a
velocidad constante para que puedan llegar al punto de destino al mismo tiempo que los ejes del robot.
En el caso en que la reorientación o los ejes externos no puedan alcanzar la velocidad programada, la
velocidad de TCP será reducida.
[\Conc] Con esta opción, las instrucciones lógicas siguientes se ejecutarán switch
mientras el robot está en movimiento. Acorta tiempo de ciclo.
Alpunto Coordenadas y orientación del punto destino. robtarget
Velocidad Velocidad del TCP, reorientación de la herramienta y ejes externos. speeddata
[\V] Sirve para especificar la velocidad del TCP en mm/s directamente en la num
instrucción.
[\T] Sirve para especificar el tiempo total del movimiento en segundos. num
Zona Tamaño de la “zona cero” del movimiento. zonedata
[\Z] Sirve para especificar el tamaño en mm. de la “zona cero” directamente en num
la instrucción
Herramienta Es la herramienta activa durante el movimiento. El TCP de la misma es el tooldata
punto que se mueve.
[\WObj] Es el objeto de trabajo (sistema de coordenadas) al que se refiere la wobjdata
posición del robot en la instrucción. Si se omite este argumento, se refiere
al sistema de coordenadas mundo.
Ejemplo:
MoveL punto1, v200, z40, pinza3;

J. M. Vázquez Pag.: 25
Manual Básico de Programación. Lenguaje RAPID UVA - CARTIF

MoveC [\Conc] PuntoCirculo Alpunto Velocidad [\V] [\T] Zona [\Z] Herramienta
[\WObj]
Sirve para mover el TCP de la herramienta de forma circular. La herramienta es reorientada a velocidad
constante desde la orientación de la posición de arranque hasta la del punto destino. La reorientación
se lleva a cabo respecto a la trayectoria circular. En el caso en que la reorientación o los ejes externos
no puedan alcanzar la velocidad programada, la velocidad de TCP será reducida.
[\Conc] Con esta opción, las instrucciones lógicas siguientes se ejecutarán switch
mientras el robot está en movimiento. Acorta tiempo de ciclo.
PuntoCirculo Es la posición en el círculo entre el punto de arranque y de destino. No robtarget
debe estar situado demasiado cerca del punto de arranque o destino.
Alpunto Coordenadas y orientación del punto destino. robtarget
Velocidad Velocidad del TCP, reorientación de la herramienta y ejes externos. speeddata
[\V] Sirve para especificar la velocidad del TCP en mm/s directamente en la num
instrucción.
[\T] Sirve para especificar el tiempo total del movimiento en segundos. num
Zona Tamaño de la “zona cero” del movimiento. zonedata
[\Z] Sirve para especificar el tamaño en mm. de la “zona cero” directamente en num
la instrucción
Herramienta Es la herramienta activa durante el movimiento. El TCP de la misma es el tooldata
punto que se mueve.
[\WObj] Es el objeto de trabajo (sistema de coordenadas) al que se refiere la wobjdata
posición del robot en la instrucción. Si se omite este argumento, se refiere
al sistema de coordenadas mundo.
Ejemplo:
MoveC punto2,punto3, v200, z40, pinza3;

MoveAbsJ [\Conc] APosEje Velocidad [\V] [\T] Zona [\Z] Herramienta [\WObj]
Sirve para mover el TCP de la herramienta a una posición absoluta. Se debe utilizar esta instrucción
sólo en los siguientes casos: cuando el punto final es un punto singular o para posiciones ambiguas en
el 6400C.
[\Conc] Con esta opción, las instrucciones lógicas siguientes se ejecutarán switch
mientras el robot está en movimiento. Acorta tiempo de ciclo.
APosEje Posición absoluta de destino del robot y de los ejes externos. jointtarget
Velocidad Velocidad del TCP, reorientación de la herramienta y ejes externos. speeddata
[\V] Sirve para especificar la velocidad del TCP en mm/s directamente en la num
instrucción.
[\T] Sirve para especificar el tiempo total del movimiento en segundos. num
Zona Tamaño de la “zona cero” del movimiento. zonedata
[\Z] Sirve para especificar el tamaño en mm. de la “zona cero” directamente en num
la instrucción
Herramienta Es la herramienta activa durante el movimiento. El TCP de la misma es el tooldata
punto que se mueve.
[\WObj] Es el objeto de trabajo (sistema de coordenadas) al que se refiere la wobjdata
posición del robot en la instrucción. Si se omite este argumento, se refiere
al sistema de coordenadas mundo.
Ejemplo:
MoveAbsJ punto2, v200, z40, pinza3;

J.M. Vázquez Pag.: 26


UVA - CARTIF Manual Básico de Programación. Lenguaje RAPID

5.3 Otras instrucciones y funciones relacionadas


Instrucciones de búsqueda:
SearchC Búsqueda a lo largo de una trayectoria circular
SearchL Búsqueda a lo largo de una trayectoria lineal
Activación de salidas o interrupciones específicas:
TriggIO Define una condición de disparo para la activación de una salida en una posición
determinada.
TriggInt Define una condición de disparo para la ejecución de una rutina de tratamiento de
interrupciones en una posición determinada
TriggEquip Define una condición de disparo para la activación de una salida en una posición
específica con la posibilidad de incluir una compensación de tiempo por el retraso
en el equipo externo.
TriggC Hacer funcionar el robot de forma circular con una condición de disparo activada
TriggJ Hacer funcionar el robot eje a eje con una condición de disparo activada
TriggL Hacer funcionar el robot de forma lineal con una condición de disparo activada
Control del movimiento en caso de error o interrupción:
StopMove Parar los movimientos del robot
StartMove Rearrancar los movimientos del robot
StorePath Almacenar la última trayectoria generada
RestoPath Volver a generar una trayectoria almacenada con anterioridad
Control de los ejes externos:
DeactUnit Desactivar una unidad mecánica externa
ActUnit Activar una unidad mecánica externa
Ejes independientes:
IndAMove Cambiar un eje a modo independiente y mover el eje a una posición absoluta
IndCMove Cambiar un eje a modo independiente y arrancar un movimiento continuo del eje
IndDMove Cambiar un eje a modo independiente y mover el eje una distancia delta
IndRMove Cambiar un eje a modo independiente y mover el eje a una posición relativa
IndReset Cambiar un eje a modo dependiente y/o reinicializar el área de trabajo
IndInpos Comprobar si un eje independiente está en su posición
IndSpeed Comprobar si un eje independiente ha alcanzado la velocidad programada.
Funciones de posición
Offs Añadir un offset a una posición del robot, expresado respecto al objeto de trabajo
RelTool Añadir un offset, expresado en el sistema de coordenadas de la herramienta
CPos Lee la posición del robot (sólo X,Y,Z)
CRobT Lee la posición del robot (el robtarget completo)
CJointT Lee los ángulos de los ejes
ReadMotor Lee los ángulos del motor
CTool Lee los datos de la herramienta
CWObj Lee los datos del objeto de trabajo
ORobT Eliminar un desplazamiento de programa
MirPos Realizar una copia espejo de una posición

J. M. Vázquez Pag.: 27
Manual Básico de Programación. Lenguaje RAPID UVA - CARTIF

6. ENTRADAS Y SALIDAS
El robot está equipado con una serie de cartas de entradas y salidas. Los nombres de las señales de
estas cartas se declaran en los parámetros de configuración del sistema, y mediante estos nombres se
pueden utilizan estas señales en el programa.
El valor de una señal analógica o un grupo de señales digitales está especificado como un valor
numérico.

6.1 Instrucciones de E/S más usuales

6.1.1 Set
Set sal_dig
Sirve para activar (poner a 1) una salida digital.
sal_dig El nombre de la señal a activar signaldo
Ejemplo:
Set do12

6.1.2 Reset
Reset sal_dig
Sirve para desactivar (poner a 0) una salida digital.
sal_dig El nombre de la señal a desactivar signaldo
Ejemplo:
Reset do12

6.1.3 SetAO
SetAO sal_analog valor
Sirve para cambiar el valor de una salida analógica.
sal_analog El nombre de la salida analógica a cambiar signalao
valor El valor deseado de la señal num

6.1.4 SetDO
SetDO [\Sdelay] sal_dig valor
Sirve para cambiar el valor de una salida digital con posible retraso.
[\Sdelay] Retrasa el cambio los segundos especificados (de 0.1 a 32 segundos con num
una resolución de 0.01 seg.). El programa continúa con la instrucción
siguiente.
sal_dig El nombre de la salida digital a cambiar signaldo
valor El valor deseado de la señal (0,1) dionum
Ejemplo:
SetDO \Sdelay:=0.2 , do15 , 1
La salida digital 15 pasara a 1 al cabo de 0.2 segundos.

6.1.5 SetGO
SetGO grup_sal valor
Sirve para cambiar el valor de un grupo de salidas digitales.
grup_sal El nombre del grupo de salidas digitales que se desea cambiar signalgo
valor El valor deseado de la señal (entero positivo): Depende del número de num

J.M. Vázquez Pag.: 28


UVA - CARTIF Manual Básico de Programación. Lenguaje RAPID

señales que formen el grupo: de 0 a 2numero señales grupo - 1


Ejemplo:
SetGO grupo_1 , 12

6.1.6 WaitDI
WaitDI ent_dig valor [\MaxTime] [\TimeFlag]
Espera hasta que se active una señal de entrada digital.
ent_dig Nombre de la señal signaldi
valor El valor deseado de la señal (0,1) dionum
[\MaxTime] Es el intervalo de tiempo de espera máximo en seg. Si transcurrido ese num
tiempo la condición no se ha cumplido, se genera el error
ERR_WAIT_MAXTIME.
[\TimeFlag] Es el parámetro de salida que contiene el valor TRUE cuando el tiempo de bool
espera máximo permitido ha transcurrido sin que se haya cumplido la
condición. En este caso no se produce error.
Ejemplo:
WaitDI di12 , 1
El programa espera hasta que la entrada digital 12 pase a valer 1.

6.1.7 WaitDO
WaitDO sal_dig valor [\MaxTime] [\TimeFlag]
Espera hasta que se active una señal de salida digital.
sal_dig Nombre de la señal signaldo
valor El valor deseado de la señal (0,1) dionum
[\MaxTime] Es el intervalo de tiempo de espera máximo en seg. Si transcurrido ese num
tiempo la condición no se ha cumplido, se genera el error
ERR_WAIT_MAXTIME.
[\TimeFlag] Es el parámetro de salida que contiene el valor TRUE cuando el tiempo de bool
espera máximo permitido ha transcurrido sin que se haya cumplido la
condición. En este caso no se produce error.
Ejemplo:
WaitDO do12 , 0
El programa espera hasta que la salida digital 12 pase a valer 0.

6.2 Otras instrucciones y funciones relacionadas


Instrucciones:
InvertDO Invierte el valor de una salida digital
PulseDO Genera un pulso en una señal de salida digital
Doutput Para leer el valor de una salida digital
Goutput Para leer el valor de un grupo de salidas digitales
Funciones:
TestDI Comprueba si se ha activado una entrada digital

J. M. Vázquez Pag.: 29
Manual Básico de Programación. Lenguaje RAPID UVA - CARTIF

7. DIALOGO CON EL OPERADOR


Existen cuatro formas distintas de comunicar a través de los canales serie:
• Mostrar mensajes que se pueden en el visualizador del pupitre y que pueden solicitar una
respuesta del usuario.
• Leer o escribir en la memoria másica del sistema (archivos de texto).
• Transferir información binaria entre el robot y un sensor, por ejemplo.
• Transferir información binaria entre el robot y otro computador, por ejemplo un protocolo de
enlace.
Si se requiere una comunicación en ambos sentidos de forma simultánea, se necesitará un tipo de
transmisión binaria.
Cada canal serie o archivo deberá en primer lugar ser abierto. Al hacerlo, recibirá un nombre que se
utilizará posteriormente como referencia en el momento de leer o escribir. La unidad de programación
está siempre abierta y se puede utilizar en cualquier momento.

7.1 Instrucciones de comunicación más usuales

7.1.1 TPWrite
TPWrite texto [\Num] | [\Bool] | [\Pos] | [\Orient]
Escribe un texto en el visualizador del pupitre móvil.
texto Cadena de texto de menos de 80 caracteres string
[\Num] Dato numérico a añadir a la cadena num
[\Bool] Dato lógico a añadir a la cadena bool
[\Pos] Dato de posición del robot a añadir a la cadena pos
[\Orient] Dato de orientación del robot a añadir a la cadena orient
El texto empieza siempre en una línea nueva del visualizador. Cuando éste se llena, el texto se mueve
hacia arriba.
Ejemplo:
TPWrite “El Nº de piezas producidas es “ \NUM:= num_piezas

7.1.2 TPReadFK
TPReadFK contestación texto FK1 FK2 FK3 KF4 FK5 [\MaxTime] [\DIBreak]
[\BreakFlag]
Escribe una etiqueta sobre cada tecla de función y lee qué tecla ha sido pulsada.
contestación Variable que contendrá 1,2,3,4 o 5 según la tecla pulsada num
texto Texto informativo que aparecerá en el visualizador string
FKx Texto que aparece sobre las teclas de función. Máximo 7 caracteres string
[\MaxTime] Intervalo máximo de tiempo (en seg) que la ejecución del programa espera. num
Si no se pulsa ninguna tecla en ese tiempo se genera el error
ERR_TP_MAXTIME
[\DIBreak] Entrada digital que podría interrumpir el diálogo. Si no se pulsa ninguna signaldi
tecla antes de que esta señal pase a 1 se genera el error
ERR_TP_DIBREAK
[\BreakFlag] Variable de salida que contiene el código de error si se utiliza MaxTime o errnum
DIBreak. Si esta variable está presente no se produce el error.
El texto empieza siempre en una línea nueva del visualizador. Cuando éste se llena el texto se mueve
hacia arriba. Las teclas de función que no tengan indicador serán desactivadas.
Ejemplo:
VAR errnum error;

J.M. Vázquez Pag.: 30


UVA - CARTIF Manual Básico de Programación. Lenguaje RAPID

...
TPReadFK reg1 “¿Ir a la posición de REPLIEGUE?”, “”, “”, “”, “Si”, “No”
\Maxtime:=600 \DIBreak:=di5 \BreakFlag:=error;
IF reg1=4 or error=ERR_TP_DIBREAK THEN
MoveL repli, v500, fine, tool1;
Stop;
ENDIF
IF error=ERR_TP_MAXTIME EXIT
El robot se mueve a la posición repli si se pulsa la tecla “Si” o si se activa la entrada 5. Si no hay
respuesta en 10 minutos, la ejecución termina.

7.2 Otras instrucciones y funciones relacionadas


Instrucciones:
TPErase Borra la información del visualizador de la unidad de programación
ErrWrite Escribe un texto en el visualizador y lo almacena en el registro de errores
TPReadNum Lee un valor numérico de la unidad de programación
Open Abrir un canal o archivo para lectura o escritura
Write Escribir texto en un canal o archivo
Close Cerrar un canal o archivo
WriteBin Escribir en un canal serie binario
Funciones:
ReadNum Lee un valor numérico de un canal o archivo
ReadStr Lee una cadena de texto de un canal o archivo
ReadBin Lee desde un canal serie binario.

J. M. Vázquez Pag.: 31
Manual Básico de Programación. Lenguaje RAPID UVA - CARTIF

8. INSTRUCCIONES VARIAS

8.1 Instrucciones de espera


Se puede programar el robot para que espere un cierto tiempo o hasta que se cumpla un acierta
condición.
Instrucciones:
WaitTime Esperar un cierto tiempo o esperar hasta que el robot se detenga
WaitUntil Esperar hasta que se cumpla una condición
WaitDI Esperar hasta que se active una entrada digital (Ver cap. entradas y salidas).
WaitDO Esperar hasta que se active una salida digital (Ver cap. entradas y salidas).

8.2 Fecha y hora


Las instrucciones de reloj permiten al usuario contar, controlar y registrar el tiempo, utilizando relojes
(clock) que funcionan como cronómetros. La hora o fecha actual se registra en una cadena. Pero existen
la posibilidad de registrar algunos de los componentes de la hora del sistema como valor numérico. Esto
permite al programa realizar una actividad a una hora o un día determinado.
Instrucciones:
ClkReset Pone a 0 un reloj para cronometraje
ClkStart Arranca un reloj para el cronometraje
ClkStop Parar un reloj para el cronometraje
Funciones:
ClkRead Leer el reloj del cronometraje
CDate Leer la fecha actual como una cadena
CTime Leer la hora actual como una cadena
GetTime Leer la hora actual como un valor numérico

8.3 Matemáticas
Las instrucciones y funciones matemáticas sirven para calcular y cambiar el valor de los datos. El
resultado de los cálculos se suele asignar a un nuevo dato mediante la instrucción de asignación: “ := “.
Instrucciones:
Clear Poner a 0 un valor
Add Sumar o restar un valor
Incr Incrementar en 1
Decr Decrementar en 1
Funciones:
Abs Calcula el valor absoluto
Round Redondea un valor numérico
Trunc Trunca un valor numérico
Sqrt Calculo la raíz cuadrada
Exp Calcula la exponencial de “e”
Pow Calcula la exponencial con cualquier base
ACos Calcula el arco coseno
ASin Calcula el arco seno
ATan Calcula el arco tangente (entre -90 y 90)
ATan2 Calcula el arco tangente (entre -180 y 180)

J.M. Vázquez Pag.: 32


UVA - CARTIF Manual Básico de Programación. Lenguaje RAPID

Cos Calcula el coseno


Sin Calcula el seno
Tan Calcula la tangente
EulerZYX Calcula los ángulos de Euler a partir de una orientación (cuaternios)
OrientZYX Calcula la orientación (cuaternios) a partir de los ángulos de Euler
PoseInv Invertir una posición
PoseMult Multiplicar una posición
PoseVect Multiplicar una posición y un vector

8.4 Instrucciones de servicio


El sistema dispone de una serie de instrucciones que sirven para hacer el test del sistema robot. Se
puede direccionar una señal de referencia (por ejemplo la velocidad de un motor) a una salida analógica
del robot
Funciones:
TestSign Definir y activar una señal de test

8.5 Funciones de cadena


Permiten realizar operaciones con cadenas como: copia, concatenación, comparación, búsqueda,
conversión, etc.
Operadores:
:= Asignar un valor a una cadena
+ Concatenación de cadenas
= Comprobar si es igual a
<> Comprobar si no es igual a
Funciones:
StrLen Calcula la longitud de una cadena
StrPart Tomar parte de una cadena
StrMemb Comprobar si un carácter pertenece a una cadena
StrFind Buscar un carácter dentro de una cadena
StrMatch Buscar una estructura de caracteres en una cadena
StrOrder Comprobar si las cadenas están ordenadas
NumToStr Convertir un valor numérico en cadena
ValToStr Convertir un valor en una cadena
StrToVal Convertir una cadena en un valor
StrMap Realizar un mapa de la cadena

8.6 Funciones varias


OpMode Lee el modo de funcionamiento actual del robot
RunMode Lee el modo de ejecución de programa que está usando actualmente el robot
Dim Obtiene las dimensiones de una matriz
Present Descubrir si un parámetro opcional estaba presente en la llamada a la rutina
IsPers Comprobar si un parámetro es un dato persistente
IsVar Comprobar si un parámetro es un dato variable
Load Carga un módulo de programa en la memoria de programa
UnLoad Descarga un módulo de programa en la memoria de programa

J. M. Vázquez Pag.: 33

También podría gustarte