Manual Rapid Abb s4

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

Transcript of Manual Rapid Abb s4

Page 1: Manual Rapid Abb s4

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

J. M. Vázquez Pag.: 3

Page 2: Manual Rapid Abb s4

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

J.M. Vázquez Pag.: 4

MANUAL BÁSICO DE PROGRAMACIÓN

LENGUAJE RAPID

J.C. FraileJ. López Cruzado

J.M. Vázquez

Valladolid, Octubre 2003

Page 3: Manual Rapid Abb s4

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

J. M. Vázquez Pag.: 5

Page 4: Manual Rapid Abb s4

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

J.M. Vázquez Pag.: 6

Índice1. CARACTERÍSTICAS GENERALES DEL LENGUAJE RAPID 8

2. ELEMENTOS BASICOS DEL LENGUAJE 9

2.1 IDENTIFICADORES 92.2 SEPARADORES 92.3 VALORES NUMÉRICOS, LÓGICOS Y DE CADENA 92.4 COMENTARIOS 92.5 COMODINES 92.6 ENCABEZADO DE ARCHIVO 102.7 CONTROL DEL FLUJO DEL PROGRAMA 102.8 INSTRUCCIONES Y ARGUMENTOS 10

3. MODULOS Y RUTINAS 12

3.1 ESTRUCTURA DE UNA APLICACIÓN 123.2 MÓDULOS 12

3.2.1 DECLARACIÓN DE LOS MÓDULOS 123.2.2 MÓDULOS DE SISTEMA 13

3.3 RUTINAS 133.3.1 TIPOS DE RUTINAS 133.3.2 ALCANCE DE UNA RUTINA 133.3.3 DECLARACIÓN DE UNA RUTINA 133.3.4 PARÁMETROS DE UNA RUTINA 14

4. DATOS 15

4.1 INTRODUCCIÓN 154.2 CARACTERÍSTICAS DE LOS DATOS 15

4.2.1 ALCANCE DE LOS DATOS 154.2.2 DECLARACIÓN DE LOS DATOS 15

4.3 TIPOS DE DATOS 154.4 LISTA DE LOS DIFERENTES TIPOS DE DATOS 164.5 DESCRIPCIÓN DE ALGUNOS DE LOS TIPOS DE DATOS MÁS USUALES 16

4.5.1 POS 164.5.2 ORIENT 174.5.3 POSE 174.5.4 CONFDATA 184.5.5 LOADDATA 184.5.6 SPEEDDATA 194.5.7 ZONEDATA 194.5.8 EXTJOINT 204.5.9 ROBTARGET 204.5.10 TOOLDATA 20

Page 5: Manual Rapid Abb s4

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

J. M. Vázquez Pag.: 7

4.5.11 WOBJDATA 21

5. MOVIMIENTOS 22

5.1 CARACTERÍSTICAS DE MOVIMIENTO 225.1.1 DEFINICIÓN DE LA VELOCIDAD 225.1.2 DEFINICIÓN DE LA ACELERACIÓN 225.1.3 DEFINICIÓN DE LA GESTIÓN DE LA CONFIGURACIÓN 225.1.4 DEFINICIÓN DE LA CARGA ÚTIL 235.1.5 DEFINICIÓN DEL COMPORTAMIENTO DEL ROBOT CERCA DE UN PUNTO SINGULAR 235.1.6 DESPLAZAMIENTO DE UN PROGRAMA 235.1.7 SERVO SUAVE 245.1.8 VALORES DE AJUSTE DEL ROBOT 24

5.2 INSTRUCCIONES DE POSICIONAMIENTO MÁS USUALES 255.3 OTRAS INSTRUCCIONES Y FUNCIONES RELACIONADAS 27

6. ENTRADAS Y SALIDAS 28

6.1 INSTRUCCIONES DE E/S MÁS USUALES 286.1.1 SET 286.1.2 RESET 286.1.3 SETAO 286.1.4 SETDO 286.1.5 SETGO 286.1.6 WAITDI 296.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 307.1.1 TPWRITE 307.1.2 TPREADFK 30

7.2 OTRAS INSTRUCCIONES Y FUNCIONES RELACIONADAS 31

8. INSTRUCCIONES VARIAS 32

8.1 INSTRUCCIONES DE ESPERA 328.2 FECHA Y HORA 328.3 MATEMÁTICAS 328.4 INSTRUCCIONES DE SERVICIO 338.5 FUNCIONES DE CADENA 338.6 FUNCIONES VARIAS 33

Page 6: Manual Rapid Abb s4

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

J.M. Vázquez Pag.: 8

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 soldadurapor puntos).

∗ Programación “OFF-LINE” y transmisión de los programas al robot desde disquete o PC (víapuerto serie)

Page 7: Manual Rapid Abb s4

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

J. M. Vázquez Pag.: 9

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 encualquier 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 unespacio, 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 unprograma en la memoria. Esto implica que un programa cargado desde un disquete (programa realizadoOFF-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 elestá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 puedenincluir códigos de caracteres (precedidos por \) y caracteres no imprimibles. Una cadena va siempreentre comillas “ “ . En el caso de tener que incluir dentro de una cadena los caracteres \ o “, se debenescribir 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 alfuncionamiento del mismo. Un comentario empieza siempre con el símbolo ! y acaba con el carácter defin 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íano han sido definidas.

Page 8: Manual Rapid Abb s4

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

J.M. Vázquez Pag.: 10

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 sistemaLANGUAGE: ENGLISH Idioma%%%

2.7 Control del flujo del programa

En algunos casos es necesario interrumpir la ejecución secuencial de las instrucciones del programa. Elflujo 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 lainstrucción. Los argumentos se pueden especificar de alguna de las siguientes maneras:

∗ Valor numérico: 4, 1E4, 2.5, etc.

Page 9: Manual Rapid Abb s4

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

J. M. Vázquez Pag.: 11

∗ 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”.

Page 10: Manual Rapid Abb s4

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

J.M. Vázquez Pag.: 12

3. MÓDULOS Y RUTINAS

3.1 Estructura de una Aplicación

Una Aplicación consta de un programa y una serie de módulos de sistema. A su vez el programa puedeestar 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 osalvado independientemente.

Uno de los módulos del programa contendrá la rutina principal o MAIN, que es el punto de arranque delprograma.

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 puedenañ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! InstruccionesENDMODULE

PROGRAMA

MÓDULO PRINCIPALDATOS

RUTINA PRINCIPAL

RUTINAS

MÓDULO 1DATOS

RUTINAS

MÓDULO NDATOS

RUTINAS...

MÓDULOde

SISTEMA

MÓDULOde

SISTEMA

MÓDULOde

SISTEMA...

MEMORIA DE PROGRAMA

Page 11: Manual Rapid Abb s4

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

J. M. Vázquez Pag.: 13

3.2.2 Módulos de Sistema

Sirven para la definición de los datos y rutinas específicas del sistema, como por ejemplo lasherramientas. No serán incluidos cuando se salva un programa, lo que significa que una modificaciónrealizada 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:

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 estepunto de vista hay dos tipos de rutinas:

• LOCALES: sólo se puede acceder desde el módulo que la contiene. Se deben declararañadiendo al principio la palabra reservada LOCAL.

• GLOBALES: puede ser llamada desde cualquier módulo. Las rutinas son globales pordefecto.

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, perotambién se puede forzar con la instrucción RETURN.

• Declaración de una función:FUNC tipo_devuelto nombre_func ( ...argumentos... ) ... RETURN(...); ...ENDFUNC

DECLARACIONES

DATOS

INSTRUCCIONES

RUTINA de TRATAMIENTOde ERRORES

Page 12: Manual Rapid Abb s4

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

J.M. Vázquez Pag.: 14

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énse 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 variospará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, \numpar_opc_1 | num par_opc_2)

El tipo especial switch sólo puede ser asignado a parámetros opcionales y proporciona una forma deutilizar 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á determinadapor el parámetro.

Ejemplo:PROC rutina3 (VAR num matriz1{*,*})

Page 13: Manual Rapid Abb s4

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

J. M. Vázquez Pag.: 15

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 deinicialización de cualquier declaración de persistente refleja el último valor que ha tomado eldato 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 ylas variables de bucle.

No hay limitación en cuanto al número de datos que se pueden definir de cada tipo, excepto laslimitaciones 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 sedeclaren los datos, éstos pueden ser:

• DATOS DE PROGRAMA: datos declarados fuera de una rutina. Estos datos a su vez puedenser :

∗ LOCALES: sólo se pueden usar en el módulo que los contiene. Se deben declararañadiendo al principio la palabra reservada LOCAL.

∗ GLOBALES: puede ser llamada desde cualquier módulo. Las rutinas son globales pordefecto.

• DATOS DE RUTINA: datos declarados dentro de una rutina. Sólo se pueden usar en la rutinaen 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, seactualizará 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:

Page 14: Manual Rapid Abb s4

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

J.M. Vázquez Pag.: 16

• CON VALOR: representan de alguna forma un valor. Pueden ser utilizados en operacionesque 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ógicosclock Medida del tiempoconfdata Datos de configuración del robotdionum Valores digitales (0,1)errnum Número de errorextjoint Posición de los ejes externosintnum Identificación de una interrupcióniodev Canales y archivos de comunicación seriejointtarget Datos de posición de los ejesloaddata Datos de cargamecunit Unidad mecánicamotsetdata Datos de movimientonum Valores numéricos (registros)orient Orientacióno_lointtarget Dato de posición original de un ejeo_robtarget Datos de posición originalpos Posiciones (X,Y,Z) sin orientaciónpose Transformación de coordenadasprogdisp Desplazamiento de programarobjoint Posición de los ejes del robotrobtarget Datos de posición (completos)signalai Señales de entrada analógicassignalao Señales de salida analógicassignaldi Señales de entrada digitalessignaldo Señales de salida digitalessignalgi Grupo de señales de entrada digitalessignalgo Grupo de señales de salida digitalesspeeddata Datos de velocidadstring Cadena de caracteressymnum Número simbólicotooldata Datos de herramientatriggdata Eventos de posicionamiento (disparo)tunetype Tipo de ajuste servowobjdata Datos del objeto de trabajozonedata Datos de zona de ajusteDatos 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:

Page 15: Manual Rapid Abb s4

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

J. M. Vázquez Pag.: 17

x Coordenada X numy Coordenada Y numz 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 numq2 Cuaternio 2 numq3 Cuaternio 3 numq4 Cuaternio 4 num

La orientación de un sistema de coordenadas respecto a uno de referencia se puede describir medianteuna matriz de rotación. Esta matriz tendrá por columnas los vectores normalizados que representan lasdirecciones de los ejes X, Y y Z respecto al sistema de coordenadas de referencia. Necesitamos, portanto, 9 valores para representar una orientación.

x x x xy y y yz z z z

===

( , , )( , , )( , , )

1 2 31 2 31 2 3

x y zx y zx y z

1 1 12 2 23 3 3

Mediante los cuaternios podemos representar la orientación con sólo 4 valores. Los cuaternios secalculan en función de los componentes de la matriz de rotación de la siguiente forma:

qx y z

qx y z

sign q sign y z

qy x z

sign q sign z x

qz x y

sign q sign x y

11 2 3 1

2

21 2 3 1

22 3 2

32 1 3 1

23 1 3

43 1 2 1

24 2 1

=+ + +

=− − +

= −

=− − +

= −

=− − +

= −

( )

( )

( )

Siempre se cumple que q q q q1 2 3 4 12 2 2+ + + =

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 coordenadasde la herramienta respecto al sistema de la muñeca

Componentes:trans Desplazamiento (x,y,z) del sistema de coordenadas posrot Rotación del sistema de coordenadas orient

Ejemplo:VAR pose pose1:= [[50,0,40], [1,0,0,0] ];

Page 16: Manual Rapid Abb s4

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

J.M. Vázquez Pag.: 18

4.5.4 Confdata

Sirve para definir las configuraciones de los ejes del robot. A veces el robot es capaz de alcanzar lamisma posición y orientación de la herramienta mediante varias configuraciones de ejes diferentes. Paraevitar 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) numcf4 Indica el cuadrante en el que se encuentra el eje 4 (entre -4 y +3) numcf6 Indica el cuadrante en el que se encuentra el eje 6 (entre -4 y +3) numcfx 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 paradeterminar un modelo de dinámica del robot, de forma que los movimientos puedan ser controlados de lamejor forma posible.

NOTA: la carga útil que manipula la pinza del robot es de tipo Loaddata. La carga de la propiaherramienta 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ónserá incorrecta y habrá riesgo de vibraciones. Si la carga declarada es menor que la instalada, laprecisión será incorrecta y habrá también riesgo de vibraciones.

Componentes:mass El peso de la carga en Kg. numcog El centro de gravedad de la carga (x,y,z) en mm posaom La orientación de los ejes del momento de la carga en el centro de

gravedad.orient

ix El momento de inercia de la carga alrededor del eje X en Kgm2 numiy El momento de inercia de la carga alrededor del eje Y en Kgm2 numiz El momento de inercia de la carga alrededor del eje Z en Kgm2 num

La orientación de los ejes de momento y de los momentos de inercia, normalmente no necesitan serdefinidos. Si ix, iy e iz son 0 kgm2, se considera una carga puntual. Normalmente, sólo se definirá elmomento de inercia cuando la distancia entre la brida de montaje y el centro de gravedad sea menor quela 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 load0desde 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 pieza1Reset 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

Page 17: Manual Rapid Abb s4

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

J. M. Vázquez Pag.: 19

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 losmovimientos. La velocidad del resto de movimientos será reducida para que los movimientos acaben suejecución al mismo tiempo. La velocidad también será restringida por la capacidad del robot.

Componentes:v_tcp Velocidad del TCP en mm/s numv_ori Velocidad de la reorientación de la herramienta en grados/segundo numv_leax Velocidad de los ejes externos lineales en mm/s numv_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, ..., v3000y 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 significaque el robot debe alcanzar la posición programada. En un punto de paso, el robot nunca alcanza laposició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 osiguiente más cercana. Si se especifica una zona mayor, el robot la reducirá automáticamente.

Punto Programa

Zona del TCPZona extendida(reorientación y ejes externos)

Inicio del cambio de reorientación

Inicio del cambio de trayectoria del TCP

Componentes:finep TRUE: el movimiento termina en un punto de paro

FALSE: el movimiento termina en un punto de pasobool

pzone_tcp Radio de la zona del TCP en mm numpzone_ori Radio de la zona de reorientación de la herramienta en mm (debe ser

mayor que pzonetcp)num

pzone_eax Radio de la zona de los ejes externos (debe ser mayor que pzonetcp) numzone_ori Tamaño de la zona de reorientación de herramienta en grados numzone_leax Tamaño de zona de los ejes externos lineales en mm numzone_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 yfine (punto de paro).

Page 18: Manual Rapid Abb s4

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

J.M. Vázquez Pag.: 20

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 elrobot se denominan a,b,c,d,e y f. Cada uno de estos ejes lógicos podrá ser conectado a una eje físicomediante un parámetro de sistema. En el caso de que un eje lógico no esté conectado a un eje físico, seindicará 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 decalibración. Para los ejes lineales, la posición será definida como la distancia en mm a partir de laposición de calibración.

Componentes:eax_a Posición del eje externo a (en grados o mm según el tipo de eje) numeax_b Posición del eje externo b (en grados o mm según el tipo de eje) numeax_c Posición del eje externo c (en grados o mm según el tipo de eje) numeax_d Posición del eje externo d (en grados o mm según el tipo de eje) numeax_e Posición del eje externo e (en grados o mm según el tipo de eje) numeax_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 unamisma 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

objeto incluyendo desplazamiento si lo hay.pos

rot Orientación de la herramienta expresada en cuaternios orientrobconf Configuración de los ejes del robot (cf1, cf4, cf6 y cfx) confdataextax 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 deherramienta deberán ser definidos únicamente como persistentes y no deberán ser definidos dentro deuna rutina.

Componentes:robhold TRUE: el robot está sujetando la herramienta.

FALSE: se trata de una herramienta estacionaria.bool

tframe Sistema de coordenadas de la herramienta: posición del TCP yorientación.

pose

tload Define la carga de la herramienta loaddataLa herramienta tool0 define el sistema de coordenadas de la muñeca. Los datos de tool0 no pueden sercambiados (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:

Page 19: Manual Rapid Abb s4

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

J. M. Vázquez Pag.: 21

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 ejesexternos coordinados se deberá definir el objeto de trabajo, ya que la trayectoria y la velocidad sereferirán al objeto de trabajo y no al TCP.

Componentes:robhold TRUE: el robot está sujetando el objeto de trabajo.

FALSE: el robot está sujetando la herramienta.bool

ufprog TRUE: sistema de coordenadas fijo del usuario.FALSE: sistema de coordenadas móvil de usuario (ejes externoscoordinados)

bool

ufmec La unidad mecánica con la que los movimientos del robot estáncoordinados.

string

uframe Sistemas de coordenadas del usuario poseoframe Sistema de coordenadas del objeto pose

Los datos de objeto deberán ser definidos únicamente como persistentes y no deberán ser definidosdentro de una rutina.

El objeto wobj0 coincide con el sistema de coordenadas mundo. Los datos de wobj0 no pueden sercambiados (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 laGUIA DE REFERENCIA RAPID.

Page 20: Manual Rapid Abb s4

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

J.M. Vázquez Pag.: 22

5. MOVIMIENTOS

5.1 Características de movimiento

Las características básicas del movimiento del robot están especificadas en los argumentos de lasinstrucciones de movimiento. Sin embargo hay algunas que se especifican en instrucciones separadas yse aplican a todos los movimientos hasta que estas cambian.

Las características generales de movimiento del robot están especificadas mediante una serie deinstrucciones, pero también pueden leerse mediante las variables de sistema C_MOTSET(características de movimiento excepto desplazamientos de programa) y C_PROGDISP (desplazamientode programa).

Los valores por defecto de estas características quedan activados automáticamente (mediante laejecución de la rutina SYS_RESET del módulo de sistema BASE) al arrancar el programa, cargar unprograma 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 velocidadmáxima y un ajuste de velocidad con la instrucción VelSet.

VelSet ajuste MaxSirve para definir la velocidad máxima y el ajuste de velocidad.ajuste Es la velocidad deseada expresada en un % de la velocidad programada.

Valor por defecto = 100%num

Max Velocidad máxima del TCP en mm/s.Valor por defecto = 5000 mm/s.

num

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 delprograma, para que los movimientos del robot sean más suaves.

AccSet Acc RampaSirve para ajustar la aceleración del robot.Acc Limita la aceleración, mediante un porcentaje de la aceleración máxima.

Valor máximo =100%. Un valor <20% se toma como 20%.num

Rampa Limita la rampa de aceleración, mediante un porcentaje del valor normal.Valor máximo=100%. Un valor <10% se toma como 10%.

num

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 unmovimiento eje a eje o lineal respectivamente. Hay que tener en cuenta que a veces es posible alcanzarla 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.

Page 21: Manual Rapid Abb s4

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

J. M. Vázquez Pag.: 23

[\On] El robot siempre se mueve a la configuración de ejes programada. Si ello noes posible la ejecución del programa se detiene. Opción activa por defecto.

switch

[\Off] En el caso en que la posición y orientación programadas se pueda alcanzarde varias maneras diferentes, con distintas configuraciones de ejes, elsistema escogerá la más cercana posible.

switch

ConfL [\On] | [\Off]Activa o desactiva el control de la configuración de los ejes en los movimientos de tipo MOVEL oMOVEC.[\On] El robot siempre se mueve a la configuración de ejes programada. Si ello no

es posible la ejecución del programa se detiene. Opción activa por defecto.switch

[\Off] En el caso en que la posición y orientación programadas se pueda alcanzarde varias maneras diferentes, con distintas configuraciones de ejes, elsistema escogerá la más cercana posible.

switch

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 cargaDefine 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 laherramienta 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

evitar la singularidad de la muñeca. Se usa cuando los ejes 4 y 6 estánalineados.

switch

[\Arm] Se tolera una pequeña diferencia en la orientación de la herramienta a fin deevitar la singularidad del brazo. Se usa cuando el centro de la muñecacoincide con la extensión del eje 1.

switch

[\Off] No se permite cambiar la orientación en los puntos singulares. Argumentopor defecto.

switch

5.1.6 Desplazamiento de un programa

Permite desplazar todos los puntos de un programa en una dirección determinada. Se utilizará cuandose repitan estructuras de movimientos en diferentes lugares del programa. Un desplazamiento deprograma consiste en una traslación y una rotación respecto al sistema de coordenadas objeto.

PDispSet BaseDespDefine y activa un desplazamiento de programa utilizando valores.BaseDesp Dato que define el desplazamiento. poseEjemplo:

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 decoordenadas objeto en la dirección positiva del eje X y 50 en la negativa del eje y. La orientación nocambia.

Otras instrucciones relacionadas:

Page 22: Manual Rapid Abb s4

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

J.M. Vázquez Pag.: 24

PDispOn Activa el desplazamiento de programaPDispOff Desactiva el desplazamiento de programaEOffsOn Activar un offset de un eje externoEOffsSet Activar un offset de un eje externo especificando un valorEOffsOff Desactivar un offset de un eje externo

Funciones relacionadas:DefDFrame Calcula un desplazamiento de programa a partir de 3 posicionesDefFrame Calcula un desplazamiento de programa a partir de 6 posicionesORobT 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). numSuavidad Valor de suavidad en porcentaje (0-100%)En el caso en que la posición y

orientación programadas se pueda alcanzar de varias maneras diferentes,con distintas configuraciones de ejes, el sistema escogerá la más cercanaposible.

num

[\Rampa] Factor de rampa en % (>100%). Cuanto más elevado sea el valor, el servofuncionará más lentamente. (rampa más larga)

num

SoftDeactDesactiva 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 elmá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). mecunitEje Número de eje (1 a 6) numValorajuste 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

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

Page 23: Manual Rapid Abb s4

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

J. M. Vázquez Pag.: 25

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 querealizarse necesariamente en línea recta. Todos los ejes se mueven a una velocidad constante yalcanzan su posición final a la vez. La herramienta será orientada y los ejes externos se moverán, almismo tiempo que se mueve el TCP. En el caso en que la reorientación o los ejes externos no puedanalcanzar la velocidad programada, la velocidad de TCP será reducida.[\Conc] Con esta opción, las instrucciones lógicas siguientes se ejecutarán

mientras el robot está en movimiento. Acorta tiempo de ciclo.switch

Alpunto Coordenadas y orientación del punto destino. robtargetVelocidad 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

instrucción.num

[\T] Sirve para especificar el tiempo total del movimiento en segundos. numZona Tamaño de la “zona cero” del movimiento. zonedata[\Z] Sirve para especificar el tamaño en mm. de la “zona cero” directamente en

la instrucciónnum

Herramienta Es la herramienta activa durante el movimiento. El TCP de la misma es elpunto que se mueve.

tooldata

[\WObj] Es el objeto de trabajo (sistema de coordenadas) al que se refiere laposición del robot en la instrucción. Si se omite este argumento, se refiereal sistema de coordenadas mundo.

wobjdata

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 orientadaa intervalos iguales sobre la trayectoria y los ejes externos (no coordinados) se moverán a un avelocidad 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, lavelocidad de TCP será reducida.[\Conc] Con esta opción, las instrucciones lógicas siguientes se ejecutarán

mientras el robot está en movimiento. Acorta tiempo de ciclo.switch

Alpunto Coordenadas y orientación del punto destino. robtargetVelocidad 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

instrucción.num

[\T] Sirve para especificar el tiempo total del movimiento en segundos. numZona Tamaño de la “zona cero” del movimiento. zonedata[\Z] Sirve para especificar el tamaño en mm. de la “zona cero” directamente en

la instrucciónnum

Herramienta Es la herramienta activa durante el movimiento. El TCP de la misma es elpunto que se mueve.

tooldata

[\WObj] Es el objeto de trabajo (sistema de coordenadas) al que se refiere laposición del robot en la instrucción. Si se omite este argumento, se refiereal sistema de coordenadas mundo.

wobjdata

Ejemplo:MoveL punto1, v200, z40, pinza3;

Page 24: Manual Rapid Abb s4

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

J.M. Vázquez Pag.: 26

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 velocidadconstante desde la orientación de la posición de arranque hasta la del punto destino. La reorientaciónse lleva a cabo respecto a la trayectoria circular. En el caso en que la reorientación o los ejes externosno puedan alcanzar la velocidad programada, la velocidad de TCP será reducida.[\Conc] Con esta opción, las instrucciones lógicas siguientes se ejecutarán

mientras el robot está en movimiento. Acorta tiempo de ciclo.switch

PuntoCirculo Es la posición en el círculo entre el punto de arranque y de destino. Nodebe estar situado demasiado cerca del punto de arranque o destino.

robtarget

Alpunto Coordenadas y orientación del punto destino. robtargetVelocidad 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

instrucción.num

[\T] Sirve para especificar el tiempo total del movimiento en segundos. numZona Tamaño de la “zona cero” del movimiento. zonedata[\Z] Sirve para especificar el tamaño en mm. de la “zona cero” directamente en

la instrucciónnum

Herramienta Es la herramienta activa durante el movimiento. El TCP de la misma es elpunto que se mueve.

tooldata

[\WObj] Es el objeto de trabajo (sistema de coordenadas) al que se refiere laposición del robot en la instrucción. Si se omite este argumento, se refiereal sistema de coordenadas mundo.

wobjdata

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ónsólo en los siguientes casos: cuando el punto final es un punto singular o para posiciones ambiguas enel 6400C.[\Conc] Con esta opción, las instrucciones lógicas siguientes se ejecutarán

mientras el robot está en movimiento. Acorta tiempo de ciclo.switch

APosEje Posición absoluta de destino del robot y de los ejes externos. jointtargetVelocidad 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

instrucción.num

[\T] Sirve para especificar el tiempo total del movimiento en segundos. numZona Tamaño de la “zona cero” del movimiento. zonedata[\Z] Sirve para especificar el tamaño en mm. de la “zona cero” directamente en

la instrucciónnum

Herramienta Es la herramienta activa durante el movimiento. El TCP de la misma es elpunto que se mueve.

tooldata

[\WObj] Es el objeto de trabajo (sistema de coordenadas) al que se refiere laposición del robot en la instrucción. Si se omite este argumento, se refiereal sistema de coordenadas mundo.

wobjdata

Ejemplo:MoveAbsJ punto2, v200, z40, pinza3;

Page 25: Manual Rapid Abb s4

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

J. M. Vázquez Pag.: 27

5.3 Otras instrucciones y funciones relacionadas

Instrucciones de búsqueda:SearchC Búsqueda a lo largo de una trayectoria circularSearchL 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 determinadaTriggEquip 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 retrasoen el equipo externo.

TriggC Hacer funcionar el robot de forma circular con una condición de disparo activadaTriggJ Hacer funcionar el robot eje a eje con una condición de disparo activadaTriggL 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 robotStartMove Rearrancar los movimientos del robotStorePath Almacenar la última trayectoria generadaRestoPath Volver a generar una trayectoria almacenada con anterioridad

Control de los ejes externos:DeactUnit Desactivar una unidad mecánica externaActUnit Activar una unidad mecánica externa

Ejes independientes:IndAMove Cambiar un eje a modo independiente y mover el eje a una posición absolutaIndCMove Cambiar un eje a modo independiente y arrancar un movimiento continuo del ejeIndDMove Cambiar un eje a modo independiente y mover el eje una distancia deltaIndRMove Cambiar un eje a modo independiente y mover el eje a una posición relativaIndReset Cambiar un eje a modo dependiente y/o reinicializar el área de trabajoIndInpos Comprobar si un eje independiente está en su posiciónIndSpeed Comprobar si un eje independiente ha alcanzado la velocidad programada.

Funciones de posiciónOffs Añadir un offset a una posición del robot, expresado respecto al objeto de trabajoRelTool Añadir un offset, expresado en el sistema de coordenadas de la herramientaCPos 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 ejesReadMotor Lee los ángulos del motorCTool Lee los datos de la herramientaCWObj Lee los datos del objeto de trabajoORobT Eliminar un desplazamiento de programaMirPos Realizar una copia espejo de una posición

Page 26: Manual Rapid Abb s4

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

J.M. Vázquez Pag.: 28

6. ENTRADAS Y SALIDAS

El robot está equipado con una serie de cartas de entradas y salidas. Los nombres de las señales deestas cartas se declaran en los parámetros de configuración del sistema, y mediante estos nombres sepueden 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 valornumérico.

6.1 Instrucciones de E/S más usuales

6.1.1 Set

Set sal_digSirve para activar (poner a 1) una salida digital.sal_dig El nombre de la señal a activar signaldoEjemplo:

Set do12

6.1.2 Reset

Reset sal_digSirve para desactivar (poner a 0) una salida digital.sal_dig El nombre de la señal a desactivar signaldoEjemplo:

Reset do12

6.1.3 SetAO

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

6.1.4 SetDO

SetDO [\Sdelay] sal_dig valorSirve 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

una resolución de 0.01 seg.). El programa continúa con la instrucciónsiguiente.

num

sal_dig El nombre de la salida digital a cambiar signaldovalor El valor deseado de la señal (0,1) dionumEjemplo:

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 valorSirve para cambiar el valor de un grupo de salidas digitales.grup_sal El nombre del grupo de salidas digitales que se desea cambiar signalgovalor El valor deseado de la señal (entero positivo): Depende del número de num

Page 27: Manual Rapid Abb s4

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

J. M. Vázquez Pag.: 29

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 signaldivalor 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

tiempo la condición no se ha cumplido, se genera el errorERR_WAIT_MAXTIME.

num

[\TimeFlag] Es el parámetro de salida que contiene el valor TRUE cuando el tiempo deespera máximo permitido ha transcurrido sin que se haya cumplido lacondición. En este caso no se produce error.

bool

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 signaldovalor 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

tiempo la condición no se ha cumplido, se genera el errorERR_WAIT_MAXTIME.

num

[\TimeFlag] Es el parámetro de salida que contiene el valor TRUE cuando el tiempo deespera máximo permitido ha transcurrido sin que se haya cumplido lacondición. En este caso no se produce error.

bool

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 digitalPulseDO Genera un pulso en una señal de salida digitalDoutput Para leer el valor de una salida digitalGoutput Para leer el valor de un grupo de salidas digitales

Funciones:TestDI Comprueba si se ha activado una entrada digital

Page 28: Manual Rapid Abb s4

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

J.M. Vázquez Pag.: 30

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 detransmisión binaria.

Cada canal serie o archivo deberá en primer lugar ser abierto. Al hacerlo, recibirá un nombre que seutilizará posteriormente como referencia en el momento de leer o escribir. La unidad de programaciónestá 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 orientEl texto empieza siempre en una línea nueva del visualizador. Cuando éste se llena, el texto se muevehacia 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 numtexto Texto informativo que aparecerá en el visualizador stringFKx 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.

Si no se pulsa ninguna tecla en ese tiempo se genera el errorERR_TP_MAXTIME

num

[\DIBreak] Entrada digital que podría interrumpir el diálogo. Si no se pulsa ningunatecla antes de que esta señal pase a 1 se genera el errorERR_TP_DIBREAK

signaldi

[\BreakFlag] Variable de salida que contiene el código de error si se utiliza MaxTime oDIBreak. Si esta variable está presente no se produce el error.

errnum

El texto empieza siempre en una línea nueva del visualizador. Cuando éste se llena el texto se muevehacia arriba. Las teclas de función que no tengan indicador serán desactivadas.Ejemplo:

VAR errnum error;

Page 29: Manual Rapid Abb s4

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

J. M. Vázquez Pag.: 31

...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;ENDIFIF 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 hayrespuesta 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ónErrWrite Escribe un texto en el visualizador y lo almacena en el registro de erroresTPReadNum Lee un valor numérico de la unidad de programaciónOpen Abrir un canal o archivo para lectura o escrituraWrite Escribir texto en un canal o archivoClose Cerrar un canal o archivoWriteBin Escribir en un canal serie binario

Funciones:ReadNum Lee un valor numérico de un canal o archivoReadStr Lee una cadena de texto de un canal o archivoReadBin Lee desde un canal serie binario.

Page 30: Manual Rapid Abb s4

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

J.M. Vázquez Pag.: 32

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 aciertacondición.

Instrucciones:WaitTime Esperar un cierto tiempo o esperar hasta que el robot se detengaWaitUntil Esperar hasta que se cumpla una condiciónWaitDI 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 existenla posibilidad de registrar algunos de los componentes de la hora del sistema como valor numérico. Estopermite al programa realizar una actividad a una hora o un día determinado.

Instrucciones:ClkReset Pone a 0 un reloj para cronometrajeClkStart Arranca un reloj para el cronometrajeClkStop Parar un reloj para el cronometraje

Funciones:ClkRead Leer el reloj del cronometrajeCDate Leer la fecha actual como una cadenaCTime Leer la hora actual como una cadenaGetTime 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. Elresultado de los cálculos se suele asignar a un nuevo dato mediante la instrucción de asignación: “ := “.

Instrucciones:Clear Poner a 0 un valorAdd Sumar o restar un valorIncr Incrementar en 1Decr Decrementar en 1

Funciones:Abs Calcula el valor absolutoRound Redondea un valor numéricoTrunc Trunca un valor numéricoSqrt Calculo la raíz cuadradaExp Calcula la exponencial de “e”Pow Calcula la exponencial con cualquier baseACos Calcula el arco cosenoASin Calcula el arco senoATan Calcula el arco tangente (entre -90 y 90)ATan2 Calcula el arco tangente (entre -180 y 180)

Page 31: Manual Rapid Abb s4

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

J. M. Vázquez Pag.: 33

Cos Calcula el cosenoSin Calcula el senoTan Calcula la tangenteEulerZYX Calcula los ángulos de Euler a partir de una orientación (cuaternios)OrientZYX Calcula la orientación (cuaternios) a partir de los ángulos de EulerPoseInv Invertir una posiciónPoseMult Multiplicar una posiciónPoseVect 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. Sepuede direccionar una señal de referencia (por ejemplo la velocidad de un motor) a una salida analógicadel 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 cadenaStrPart Tomar parte de una cadenaStrMemb Comprobar si un carácter pertenece a una cadenaStrFind Buscar un carácter dentro de una cadenaStrMatch Buscar una estructura de caracteres en una cadenaStrOrder Comprobar si las cadenas están ordenadasNumToStr Convertir un valor numérico en cadenaValToStr Convertir un valor en una cadenaStrToVal Convertir una cadena en un valorStrMap Realizar un mapa de la cadena

8.6 Funciones varias

OpMode Lee el modo de funcionamiento actual del robotRunMode Lee el modo de ejecución de programa que está usando actualmente el robotDim Obtiene las dimensiones de una matrizPresent Descubrir si un parámetro opcional estaba presente en la llamada a la rutinaIsPers Comprobar si un parámetro es un dato persistenteIsVar Comprobar si un parámetro es un dato variableLoad Carga un módulo de programa en la memoria de programaUnLoad Descarga un módulo de programa en la memoria de programa