Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Manual Rapid Abb s4 PDF
Manual Rapid Abb s4 PDF
Lenguaje RAPID
J. M. Vázquez Pag.: 3
Manual Básico de Programación. Lenguaje RAPID UVA - CARTIF
J.C. Fraile
J. López Cruzado
J.M. Vázquez
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.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
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
4.5.11 WOBJDATA 21
5. MOVIMIENTOS 22
6. ENTRADAS Y SALIDAS 28
8. INSTRUCCIONES VARIAS 32
J. M. Vázquez Pag.: 7
Manual Básico de Programación. Lenguaje RAPID UVA - CARTIF
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.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
J. M. Vázquez Pag.: 11
Manual Básico de Programación. Lenguaje RAPID UVA - CARTIF
3. MÓDULOS Y RUTINAS
MEMORIA DE PROGRAMA
PROGRAMA
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.3 Rutinas
Una rutina típica tiene la siguiente estructura:
DECLARACIONES
DATOS
INSTRUCCIONES
RUTINA de TRATAMIENTO
de ERRORES
J. M. Vázquez Pag.: 13
Manual Básico de Programación. Lenguaje RAPID UVA - CARTIF
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.
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.1 Pos
Se usa para almacenar la posición del robot (Solo X,Y,Z)
Componentes:
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
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)
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:
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
J. M. Vázquez Pag.: 23
Manual Básico de Programación. Lenguaje RAPID UVA - CARTIF
SoftDeact
Desactiva el “servo suave” en todos los ejes del robot.
TuneReset
Reinicializa el comportamiento dinámico del todos los ejes del robot a sus valores normales.
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.: 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.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
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.
J. M. Vázquez Pag.: 29
Manual Básico de Programación. Lenguaje RAPID UVA - CARTIF
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;
...
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.
J. M. Vázquez Pag.: 31
Manual Básico de Programación. Lenguaje RAPID UVA - CARTIF
8. INSTRUCCIONES VARIAS
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.: 33