UVA - CARTIF
J. M. Vázquez
Manual Básico de Programación. Lenguaje RAPID
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
J. M. Vázquez
Manual Básico de Programación. Lenguaje RAPID
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 2.2 SEPARADORES 2.3 VALORES NUMÉRICOS , LÓGICOS Y DE CADENA 2.4 COMENTARIOS 2.5 COMODINES 2.6 ENCABEZADO DE ARCHIVO 2.7 CONTROL DEL FLUJO DEL PROGRAMA 2.8 INSTRUCCIONES Y ARGUMENTOS
9 9 9 9 9 10 10 10
3. MODULOS Y RUTINAS
12
3.1 ESTRUCTURA DE UNA APLICACIÓN 3.2 MÓDULOS 3.2.1 DECLARACIÓN DE LOS MÓDULOS 3.2.2 MÓDULOS DE SISTEMA 3.3 R UTINAS UTINAS 3.3.1 TIPOS DE RUTINAS 3.3.2 ALCANCE DE UNA RUTINA 3.3.3 DECLARACIÓN DE UNA RUTINA 3.3.4 PARÁMETROS DE UNA RUTINA
12 12 12 13 13 13 13 13 14
4. DATOS
15
4.1 INTRODUCCIÓN 4.2 CARACTERÍSTICAS DE LOS DATOS 4.2.1 ALCANCE DE LOS DATOS 4.2.2 DECLARACIÓN DE LOS DATOS 4.3 TIPOS DE DATOS DIFERENTES TIPOS DE DATOS 4.4 LISTA DE LOS DIFERENTES 4.5 DESCRIPCIÓN DE ALGUNOS DE LOS TIPOS DE DATOS MÁS USUALES 4.5.1 POS 4.5.2 ORIENT 4.5.3 POSE 4.5.4 CONFDATA 4.5.5 LOADDATA 4.5.6 SPEEDDATA 4.5.7 ZONEDATA 4.5.8 EXTJOINT OBTARGET 4.5.9 R OBTARGET 4.5.10 TOOLDATA
J.M. Vázquez
15 15 15 15 15 16 16 16 17 17 18 18 19 19 20 20 20
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 5.1.1 DEFINICIÓN DE LA VELOCIDAD 5.1.2 DEFINICIÓN DE LA ACELERACIÓN 5.1.3 DEFINICIÓN DE LA GESTIÓN DE LA CONFIGURACIÓN 5.1.4 DEFINICIÓN DE LA CARGA ÚTIL 5.1.5 DEFINICIÓN DEL COMPORTAMIENTO DEL ROBOT CERCA DE UN PUNTO SINGULAR 5.1.6 DESPLAZAMIENTO DE UN PROGRAMA 5.1.7 SERVO SUAVE 5.1.8 VALORES DE AJUSTE DEL ROBOT 5.2 INSTRUCCIONES DE POSICIONAMIENTO MÁS USUALES 5.3 OTRAS INSTRUCCIONES Y FUNCIONES RELACIONADAS
22 22 22 22 23 23 23 24 24 25 27
6. ENTRADAS Y SALIDAS
28
6.1 INSTRUCCIONES DE E/S MÁS USUALES 6.1.1 SET ESET 6.1.2 R ESET 6.1.3 SETAO 6.1.4 SETDO 6.1.5 SETGO 6.1.6 WAITDI 6.1.7 WAITDO 6.2 OTRAS INSTRUCCIONES Y FUNCIONES RELACIONADAS 7. DIALOGO CON EL OPERADOR
28 28 28 28 28 28 29 29 29
¡Error!Marcador no definido.
7.1 INSTRUCCIONES DE COMUNICACIÓN MÁS USUALES 7.1.1 TPWRITE EADFK 7.1.2 TPR EAD 7.2 OTRAS INSTRUCCIONES Y FUNCIONES RELACIONADAS
30 30 30 31
8. INSTRUCCIONES VARIAS
32
8.1 INSTRUCCIONES DE ESPERA 8.2 FECHA Y HORA 8.3 MATEMÁTICAS 8.4 INSTRUCCIONES DE SERVICIO 8.5 FUNCIONES DE CADENA 8.6 FUNCIONES VARIAS
J. M. Vázquez
32 32 32 33 33 33
Pag.: 7
Manual Básico de Programación. Lenguaje RAPID
UVA - CARTIF
1. CARACTERÍSTICAS GENERALES DEL LENGUAJE LENGUAJE RAPID RAPID RAPID = Robotics Application Programming Interactive Dialogue ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗
Lenguaje estructurado estructu rado de alto nivel. Procedimientos 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 programas ejecutándose ejecutándose a la vez. Librerías de módulos módulos de programas programas para rutinas específicas. El programa programa robot y los datos datos definidos por por el usuario se almacenan en 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”: “ProcessWare”: colección de módulos módulos de software que proporcionan proporcionan herramienta herramientass para los distintos procesos. Ejemplos: ArcWare (para soldadura de arco) y SpotWare (para soldadura por puntos). Programación Programación “OFF-LINE” y transmisión de los programas programas al robot desde 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. identifi cador debe ser una letra. ∗ El primer carácter de un identificador ∗ El resto de caracteres pueden ser letras, números o el carácter de subrayado “_”. ∗ La longitud longitud máxima máxima de cualquier identificador es de 16 caracteres. caracteres. letra (mayúscula (mayúscula o minúscula) minúscula) no diferencia los los identificadores. identificadores. ∗ El tamaño de la letra Hay una serie de palabras que no se pueden utilizar como identificadores: lenguaje RAPID (ej.: AND, IF, MODULE, MODULE, LOCAL, etc.) ∗ Palabras reservadas del lenguaje predefinidos para tipos de datos, datos del sistema, sistema, instrucciones instrucciones y funciones. funciones. ∗ Nombres predefinidos 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, 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, 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
Comodín
PAR> > > > >
UVA - CARTIF
Representa Una de declaración de de da datos Una declaración de rutina Un pará arámetr etro alt alter ern nativ ativo o op opcio cional nal Un parámetro opcional Una Una defi defini nici ción ón de la dime dimens nsió ión n de una una matr matriz iz Una in instrucción Una Una refe refere renc ncia ia (va (vari riab able le,, pers persis iste tent nte e o par parám ámet etro ro)) a un un dato dato La cl cláusula EL ELSE de de un una in instrucción IF IF La cláu cláusu sula la CASE CASE de una una inst instru rucc cció ión n TEST TEST Una expresión Un argu argume ment nto o de de lla llama mada da de proc proced edim imie ient nto o Un identificador
2.6 Encabezado de archivo
Un archivo de programa empieza siempre con el siguiente encabezado: %%% VERSION: 1 LANGUAGE: ENGLISH %%%
Versión del sistema Idioma
2.7 Control del flujo 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 otra rutina. rutina. − ProcCall: llamada (salto) a otra llamada a un procedimiento procedimiento con nombre nombre específico. específico. − CallByVar: llamada − RETURN: regreso a la la rutina rutina original. • Instrucciones de evaluación de condición: − CompactIF: ejecuta ejecuta una una instrucción sólo si se cumple una condición. 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. diagnóstic o y − BREAK: para la ejecución de un programa temporalmente para el diagnóstico 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 reg1 (num), (num), posición3 (robtarget), (robtarget), etc. Expresión. ej.:5+reg1*2. ej.:5+reg1*2. Llamada a una función. ej.: Abs(reg1). Valor de cadena. cadena. ej.: “Número “Número de piezas”. 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 de SISTEMA
MÓDULO de SISTEMA
...
MÓDULO de 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 los módulos 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: trata de de un módulo de sistema. • SYSMODULE: se trata • NOSTEPIN: no permite la entrada en el módulo durante la ejecución paso a paso. • VIEWONLY: el módulo no puede ser modificado. modificado . pero sus atributos atributos pueden pueden ser eliminados. eliminados. • READONLY: el módulo no puede ser modificado pero puede ser visualizado; visualizado; sólo ejecutado. ejecutado. Un programa programa que contiene un módulo módulo • NOVIEW: no puede NOVIEW no puede ser salvado. NOVIEW se utiliza sobre todo para los módulos de sistema. Ejemplo: ) MODULE modulo1 (SYSMODULE, NOVIEW ! Declaraciones ! Instrucciones ENDMODULE
J.M. Vázquez
Módulo de sistema no visible
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: FUNCIONE S: devuelven un valor de un tipo determinado. • RUTINAS DE TRATAMIENTO DE INTERRUPCIONES: para el tratamiento de las interrupciones. 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 procedimiento: • 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: utilizan como entradas entradas a la rutina y son procesados procesados como variables de la • NORMALES: se utilizan rutina. El cambio de esta variable en la rutina no cambia el valor del argumento. argumento correspondiente correspondiente debe ser una variable variable o un entero persistente y su • INOUT: el argumento valor puede ser cambiado por la rutina. correspondient e debe ser una variable que puede ser cambiada por la • VAR: el argumento correspondiente rutina. persistent e entero que puede ser cambiado • PERS: el argumento correspondiente debe ser un persistente 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, par_in, INOUT num par_inout, par_inout, VAR num par_var, par_var, PERS num par_pers, par_obligat, par_opcional, num \num \num par_opc_1 | num par_opc_2) par_opc_2)
El tipo especial switch sólo puede ser asignado a parámetros opcionales y proporciona una forma de utilizar argumentos especificados especificados por los nombres y no por los valores. Ejemplo: PROC rutina2 (\switch on | \switch off) ... IF present 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
J.M. Vázquez
( matriz1{ matriz1{*,*}) VAR VAR num
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. • VARIABLES: • PERSISTENTES: es una una variable variable que tiene la particularidad particularidad de que su valor de inicialización 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. podrá cambiar. cambiar. • CONSTANTES: representan un valor estático que no podrá 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 Características de 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: PROGRAMA: datos declarados declarados fuera de una una rutina. Estos Estos datos a su vez 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: RUTINA: datos declarados declarados dentro 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: tipo_dato nombre_dato tipo_dato [LOCAL] VAR [LOCAL] VAR
Los datos de variable con tipo de valor podrán ser inicializados en la declaración: matriz{10}:=[1,2,3,4,5,6,7,8,9,0] matriz{10}:=[1,2,3,4,5,6,7,8,9,0] VAR num VAR num VAR string nombre:=“JUAN”
• Declaración de un dato persistente: reg1:=0 reg1:=0 PERS num
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 automáticamente su valor de inicialización. • Declaración de un dato constante: pi:= pi:= 3.1415 CONS num
4.3 Tipos de datos
Atendiendo a su descomposición, descomposición, existen 2 grandes grandes grupos grupos de tipos de datos: datos: • ATÓMICOS: datos datos cuya definición no está basada basada en otro tipo y que no puede puede ser dividido en en partes ni componentes. Ej.: num. • REGISTRO: tipo de datos formado por componentes ordenados y nombrados. Ej.: pos. Atendiendo a su valor, hay dos dos grandes grupos grupos de tipos 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 utiliza dos 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 diferentes tipos de datos
bool clock confdata dionum errnum extjoint intnum iodev jointtarget loaddata mecunit motsetdata num orient o_lointtarget o_robtarget pos pose progdisp robjoint robtarget signalai signalao signaldi signaldo signalgi signalgo speeddata string symnum tooldata triggdata tunetype wobjdata zonedata Datos del sistema
Valores lógicos Medida del tiempo Datos de configuración del robot Valores digitales (0,1) Número de error Posición de los ejes externos Identificación de una interrupción Canales y archivos de comunicación serie Datos de posición de los ejes Datos de carga Unidad mecánica Datos de movimiento Valores numéricos (registros) Orientación Dato de de po posición or original de de un un ej eje Datos de posición original Posiciones (X,Y,Z) sin orientación Transformación de coordenadas Desplazamiento de programa Posición de los ejes del robot Datos de de posición (completos) Señales de entrada analógicas Señales de salida analógicas Señales de entrada digitales Señales de salida digitales Grupo de señales de entrada digitales Grupo de señales de salida digitales Datos de velocidad Cadena de caracteres Número simbólico Datos de herramienta Eventos de posicionamiento (disparo) Tipo de ajuste servo Datos del objeto de trabajo Datos de zona de ajuste
4.5 Descripción de algunos 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
Coordenada X Coordenada Y Coordenada Z
x y z
num num num
Ejemplo: VAR pos 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. coordenadas. Componentes: Cuaternio 1 num q1 Cuaternio 2 num q2 Cuaternio 3 num q3 Cuaternio 4 num q4 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.
= ( 1 , x 2 , 3) y = ( y1 , y 2 , y 3) z = ( z1 ,z 2 , z 3)
x1 y1 z 1 x 2 y 2 z 2 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 = 2 y 2 − x1 − z 3 + 1 q3 = 2 z 3 − x1 − y 2 + 1 q4 = 2 Siempre se cumple que
2
2
sign q 2 = sign ( y 3 − z 2) sign q 3 = sign (z1 − x 3) sign q 4 = sign ( x 2 − y1)
2
q1 + q 2 + q 3 + 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 rot
Desplazamiento (x,y,z) del sistema de coordenadas Rotación del sistema de coordenadas
pos orient
Ejemplo: VAR pose 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: Ind Indica ica el cu cuadra drante en el que que se encu ncuentra tra el eje eje 1 (en (entre tre -4 y +3 +3) num num cf1 Ind Indica ica el cu cuadra drante en el que que se encu ncuentra tra el eje eje 4 (en (entre tre -4 y +3 +3) num num cf4 Ind Indica ica el cu cuadra drante en el que que se encu ncuentra tra el eje eje 6 (en (entre tre -4 y +3 +3) num num cf6 No se utiliza de momento num cfx 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 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 cog aom
El peso de la carga en Kg. num El centro de gravedad de la carga (x,y,z) en mm pos La orientación de los ejes del momento de la carga en el centro de orient gravedad. El momento de inercia de la carga alrededor del eje X en Kgm 2 num ix 2 El momento de inercia de la carga alrededor del eje Y en Kgm num iy 2 El momento de inercia de la carga alrededor del eje Z en Kgm num iz 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; pieza1; pieza1; La conexión de la carga útil pieza1 se especifica en el momento en que el GripLoad robot coge la pieza1 Reset pinza; WaitTime 0.3; load0; load0; La desconexión de la carga útil pieza1 se especifica en el momento en que el GripLoad 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: Velocidad del TCP en mm/s num v_tcp Velo Veloci cida dad d de de la la reo reori rien enta taci ción ón de la her herra rami mien enta ta en grad grados os/s /seg egun undo do num num v_ori Velocidad de los ejes externos lineales en mm/s num v_leax Velocidad de los ejes externos rotativos en mm/s num v_reax 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 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: trayector ia del TCP ∗ Zona de la trayectoria reorientació n de la herramienta y ejes externos. ∗ Zona extendida de reorientación 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 (reorientación y ejes externos)
Inicio del cambio de reorientación
Zona del TCP
Punto Programa
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 Radio de la zona del TCP en mm num pzone_tcp Radio de la zona de reorientación de la herramienta en mm (debe ser num pzone_ori mayor que pzonetcp) Radio de la zona zona de de los los ejes ejes exte externo rnoss (deb (debe e ser ser mayor mayor que pzonet pzonetcp) cp) num num pzone_eax Radio Tamaño de la zona de reorientación de herramienta en grados num zone_ori Tamaño de zona de los ejes externos lineales en mm num zone_leax Tamaño de la zona de los ejes externos rotativos en grados num zone_reax 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 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 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 eax_b eax_c eax_d eax_e eax_f
Posición del ej eje exter terno a (en grados o mm se según el titipo de eje) Posición del ej eje exter terno b (en grados o mm se según el titipo de eje) Posición del eje exter terno c (en grados o mm según el tipo de eje) Posición del ej eje exter terno d (en grados o mm se según el titipo de eje) Posición del ej eje exter terno e (en grados o mm se según el titipo de eje) Posición del eje externo f (en grados o mm según el tipo de eje)
num num num num num num
Ejemplo: VAR extjoint 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 rot robconf extax
Posición XYZ del TCP en mm respecto al sistema de coordenadas pos objeto incluyendo desplazamiento desplazamiento si lo hay. Orientación de la herramienta expresada en cuaternios orient Configuración de los ejes del robot (cf1, cf4, cf6 y cfx) confdata 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. herramienta. bool FALSE: se trata de una herramienta estacionaria. Sistema de coordenadas de la herramienta: posición del TCP y pose tframe orientación. Define la carga de la herramienta loaddata tload 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. TRUE: sistema de coordenadas fijo del usuario. bool ufprog FALSE: sistema de coordenadas móvil de usuario (ejes externos coordinados) La unidad mecánica con la que los movimientos del robot están string ufmec coordinados. Sistemas de coordenadas del usuario pose uframe Sistema de coordenadas del objeto pose oframe 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 PERS wobjdata wobj0:= [FALSE,TRUE,””,[ [0,0,0], [1,0,0,0] ], [[0,0,0], [1,0,0,0]]];
Ejemplo: PERS wobjdata PERS wobjdata objeto1:= [FALSE,TRUE,””,[ [300,600,200], [1,0,0,0] ], [[0,200,30], [1,0,0,0]]];
NOTA: 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 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 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 (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. Es la velocidad deseada expresada en un % de la velocidad programada. num ajuste Valor por defecto = 100% Velocidad máxima del TCP en mm/s. num Max Valor por defecto = 5000 mm/s. Ejemplo: VelSet 200, 1000
Todas las velocidades programadas programadas se duplican pero sin pasar nunca de 1000.
5.1.2 Definición de la la aceleración 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. Limita la aceleración, mediante un porcentaje de la aceleración máxima. num Acc Valor máximo =100%. Un valor <20% se toma como 20%. Limita la rampa de aceleración, mediante un porcentaje del valor normal. num Rampa 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 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 el control de la configuración de 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
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. En el caso en que la posición y orientación programadas programadas se pueda alcanzar switch de varias maneras diferentes, con distintas configuraciones de ejes, el sistema escogerá la más cercana posible.
[\On] [\Off]
ConfL [\On] | [\Off] Activa o desactiva el control de la configuración de los ejes en los movimientos de tipo MOVEL o MOVEC. El robot siempre se mueve a la configuración de ejes programada. Si ello no switch [\On] es posible la ejecución del programa se detiene. Opción activa por defecto. En el caso en que la posición y orientación programadas programadas se pueda alcanzar switch [\Off] de varias maneras diferentes, con distintas configuraciones de ejes, el sistema escogerá la más cercana posible.
5.1.4 Definición de la la carga 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 útil utilizada. Por defecto es load0 (de 0 Kg). carga
loaddata
5.1.5 Definición del del comportamiento del robot cerca de un un punto singular 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. Se tolera una pequeña diferencia en la orientación de la herramienta a fin de switch [\Wrist] evitar la singularidad de la muñeca. Se usa cuando los ejes 4 y 6 están alineados. Se tolera una pequeña diferencia en la orientación de la herramienta a fin de switch [\Arm] evitar la singularidad del brazo. Se usa cuando el centro de la muñeca coincide con la extensión del eje 1. No se permite cambiar la orientación en los puntos singulares. Argumento switch [\Off] por defecto.
5.1.6 Desplazamiento Desplazamiento de 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. Dato que define el desplazamiento. BaseDesp Ejemplo:
pose
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: 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 Activ tivar un offse fset de un eje externo especificando un valor EOffsOff Desactivar un offset de un eje externo Funciones relacionadas: relacionadas: DefD DefDFr Fram ame e Calc Calcul ula a un un des despl plaz azam amie ient nto o de de pro progr gram ama a a part partir ir de 3 pos posic icio ione ness DefF DefFrrame ame Calc Calcu ula un despla splaza zam mien iento de progr ograma ama a par partir tir de de 6 posi posici cio ones 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. flexibilidad.
SoftAct Eje Suavidad [\Rampa] Activa el “servo suave” suave” en cualquiera cualquiera de los ejes ejes del robot. Eje del robot (1 a 6). num Eje Valor de suavidad en porcentaje (0-100%)En el caso en que la posición y num Suavidad orientación programadas se pueda alcanzar de varias maneras diferentes, con distintas configuraciones de ejes, el sistema escogerá la más cercana posible. Factor de rampa en % (>100%). Cuanto más elevado sea el valor, el servo num [\Rampa] 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 ajuste del del robot 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 comportamiento dinámico dinámico de los ejes ejes del robot. Unidad mecánica (ej.: IRB) del robot (1 a 6). Unidadmec Número de eje (1 a 6) Eje Valorajuste Valor de ajuste en % (1 a 200%). 100 es el valor normal. Tipo de de aj ajuste se servo: TU TUNE_DF, TU TUNE_KP, TU TUNE_KV y TUNE_TI. [\Tipo]
mecunit num num tunetype
TuneReset Reinicializa el comportamiento dinámico 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 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. Con esta opción, las instrucciones lógicas siguientes se ejecutarán switch [\Conc] mientras el robot está en movimiento. Acorta tiempo de ciclo. Coordenadas y orientación del punto destino. robtarget Alpunto Velo Veloci cida dad d del del TCP, TCP, reor reorie ient ntac ació ión n de de la la her herra rami mien enta ta y eje ejess ext exter erno nos. s. spee speedd ddat ata a Velocidad Sirve para especificar la velocidad del TCP en mm/s directamente en la num [\V] instrucción. Sirv Sirve e para espec speciifica ficarr el tie tiempo mpo tota totall del del movim vimien iento en seg segundo ndos. num [\T] Tamaño de la “zona cero” del movimiento. zonedata Zona Sirve para especificar el tamaño en mm. de la “zona cero” directamente en num [\Z] la instrucción Herramienta Es la herramienta activa durante el movimiento. El TCP de la misma es el tooldata punto que se mueve. Es el objeto de trabajo (sistema de coordenadas) al que se refiere la wobjdata [\WObj] posición del robot en la instrucción. Si se omite este argumento, se refiere al sistema de coordenadas mundo. Ejemplo: punto1, v200, z40, pinza3; punto1, MoveJ
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. Con esta opción, las instrucciones lógicas siguientes se ejecutarán switch [\Conc] mientras el robot está en movimiento. Acorta tiempo de ciclo. Coordenadas y orientación del punto destino. robtarget Alpunto Velo Veloci cida dad d del del TCP, TCP, reor reorie ient ntac ació ión n de de la la her herra rami mien enta ta y eje ejess ext exter erno nos. s. spee speedd ddat ata a Velocidad Sirve para especificar la velocidad del TCP en mm/s directamente en la num [\V] instrucción. Sirv Sirve e para espec speciifica ficarr el tie tiempo mpo tota totall del del movim vimien iento en seg segundo ndos. num [\T] Tamaño de la “zona cero” del movimiento. zonedata Zona Sirve para especificar el tamaño en mm. de la “zona cero” directamente en num [\Z] la instrucción Herramienta Es la herramienta activa durante el movimiento. El TCP de la misma es el tooldata punto que se mueve. Es el objeto de trabajo (sistema de coordenadas) al que se refiere la wobjdata [\WObj] 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 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, programada, la velocidad de TCP será reducida. Con esta opción, las instrucciones lógicas siguientes se ejecutarán switch [\Conc] 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. Coordenadas y orientación del punto destino. robtarget Alpunto Velo Veloci cida dad d del del TCP, TCP, reor reorie ient ntac ació ión n de de la la her herra rami mien enta ta y eje ejess ext exter erno nos. s. spee speedd ddat ata a Velocidad Sirve para especificar la velocidad del TCP en mm/s directamente en la num [\V] instrucción. Sirv Sirve e para espec speciifica ficarr el tie tiempo mpo tota totall del del movim vimien iento en seg segundo ndos. num [\T] Tamaño de la “zona cero” del movimiento. zonedata Zona Sirve para especificar el tamaño en mm. de la “zona cero” directamente en num [\Z] la instrucción Herramienta Es la herramienta activa durante el movimiento. El TCP de la misma es el tooldata punto que se mueve. Es el objeto de trabajo (sistema de coordenadas) al que se refiere la wobjdata [\WObj] 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. Con esta opción, las instrucciones lógicas siguientes se ejecutarán switch [\Conc] mientras el robot está en movimiento. Acorta tiempo de ciclo. Posición absoluta de destino del robot y de los ejes externos. jointtarget APosEje Velo Veloci cida dad d del del TCP, TCP, reor reorie ient ntac ació ión n de de la la her herra rami mien enta ta y eje ejess ext exter erno nos. s. spee speedd ddat ata a Velocidad Sirve para especificar la velocidad del TCP en mm/s directamente en la num [\V] instrucción. Sirv Sirve e para espec speciifica ficarr el tie tiempo mpo tota totall del del movim vimien iento en seg segundo ndos. num [\T] Tamaño de la “zona cero” del movimiento. zonedata Zona Sirve para especificar el tamaño en mm. de la “zona cero” directamente en num [\Z] la instrucción Herramienta Es la herramienta activa durante el movimiento. El TCP de la misma es el tooldata punto que se mueve. Es el objeto de trabajo (sistema de coordenadas) al que se refiere la wobjdata [\WObj] 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; punto2,
J.M. Vázquez
Pag.: 26
UVA - CARTIF
Manual Básico de Programación. Lenguaje RAPID
5.3 Otras instrucciones instrucciones y funciones relacionadas 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 salidas o interrupciones interrupciones específicas: Trig Trigg gIO Defi Defin ne una con condició ición n de disp dispa aro para la activ ctiva ació ción de una sali salid da en una una posici sició ón determinada. Trig Trigg gInt Int Defi Defin ne un una co condici dició ón de disp dispa aro pa para la ejecu jecuci ció ón de de una una rutina tina de trtrata atamien iento de interrupciones interrupciones en una posición determinada Trig TriggE gEqu quip ip Defi Define ne una una con condi dici ción ón de disp dispar aro o par para a la la act activ ivac ació ión n de de una una sali salida da en una una pos posic ició ión n específica con la posibilidad de incluir una compensación de tiempo por el retraso en el equipo externo. TriggC Hacer fu funcionar el el ro robot de de fo forma cir circcular co con un una co condición de de di disparo ac activada TriggJ Hacer funcionar el ro robot ej eje a eje con una condición de disparo activada TriggL Hacer funcionar el ro robot de de forma lilineal co con un 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 de del ro robot StorePath Almacenar la última trayectoria generada Rest Resto oPath Path Volve olverr a gen generar rar una una tray traye ecto ctoria ria alm almac ace enada con con an anteri terio oridad idad Control de los ejes externos: DeactUnit Desactivar un una unidad mecánica ex externa ActUnit Activar una unidad unidad mecánica mecánica externa Ejes independientes: independientes: IndA IndAMo Move ve Camb Cambia iarr un eje eje a modo modo inde indepe pend ndie ient nte e y move moverr el el eje eje a una una posi posici ción ón abso absolu luta ta IndC IndCMo Move ve Camb Cambia iarr un un eje eje a mod modo o ind indep epen endi dien ente te y arr arran anca carr un un mov movim imie ient nto o con contitinu nuo o del del eje eje Ind IndDMo DMove Cam Cambiar iar un un eje eje a mo modo ind inde epend endien iente y mo mover ver el el eje eje una dis dista tan ncia cia del delta ta IndR IndRMo Move ve Camb Cambia iarr un eje eje a modo modo inde indepe pend ndie ient nte e y mov mover er el eje eje a una una posi posici ción ón rela relatitiva va Ind IndRese Resett Cam Cambiar iar un un eje a mo modo de depend endient iente e y/o y/o rein reinic icia ialiliza zarr el el ár área de tra trabajo IndInpos Comprobar si un eje independiente está en su posición Ind IndSpe Speed Com Compro probar bar si si un un eje eje ind indepen pendien diente te ha alca lcanzad zado la la vel veloc ocid ida ad pr progra gramada ada. Funciones de posición Offs Añadir un offset a una posición del robot, expresado respecto al objeto de trabajo RelT RelTo ool Añadir adir un offse ffset, t, expr xpresa esado en el sist siste ema de coor coord dena enadas de la herr erramie mienta 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. El nombre de la señal a activar sal_dig Ejemplo:
signaldo
Set do12
6.1.2 Reset Reset sal_dig Sirve para desactivar (poner a 0) una salida digital. El nombre de la señal a desactivar sal_dig Ejemplo:
signaldo
Reset do12
6.1.3 SetAO SetAO sal_analog valor Sirve para cambiar el valor de una salida analógica. El nombre de la salida analógica a cambiar sal_analog El valor deseado de la señal valor
signalao num
6.1.4 SetDO SetDO [\Sdelay] sal_dig valor Sirve para cambiar el valor de una salida digital con posible retraso. Retrasa el cambio los segundos especificados (de 0.1 a 32 segundos con num [\Sdelay] una resolución de 0.01 seg.). El programa continúa con la instrucción siguiente. El nombre de la salida digital a cambiar signaldo sal_dig El valor deseado de la señal (0,1) dionum valor 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. El nombre del grupo de salidas digitales que se desea cambiar signalgo grup_sal El valor deseado de la señal (entero (entero positivo): positivo): Depende Depende del número número de num valor
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 2 numero 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. Nombre de la señal ent_dig El valor deseado de la señal (0,1) valor Es el intervalo de tiempo de espera máximo en seg. Si transcurrido ese [\MaxTime] tiempo la condición no se ha cumplido, se genera el error ERR_WAIT_MAXTIME. Es el parámetro de salida que contiene el valor TRUE cuando el tiempo de [\TimeFlag] espera máximo permitido ha transcurrido sin que se haya cumplido la condición. En este caso no se produce error. Ejemplo: WaitDI
signaldi dionum num bool
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. Nombre de la señal sal_dig El valor deseado de la señal (0,1) valor Es el intervalo de tiempo de espera máximo en seg. Si transcurrido ese [\MaxTime] tiempo la condición no se ha cumplido, se genera el error ERR_WAIT_MAXTIME. Es el parámetro de salida que contiene el valor TRUE cuando el tiempo de [\TimeFlag] espera máximo permitido ha transcurrido sin que se haya cumplido la condición. En este caso no se produce error. Ejemplo: WaitDO
signaldo dionum num bool
do12 , 0
El programa espera hasta que la salida digital 12 pase a valer 0. 6.2 Otras instrucciones instrucciones y funciones relacionadas relacionadas
Instrucciones: InvertDO PulseDO Doutput Goutput Funciones: TestDI
J. M. Vázquez
Invierte el valor de una salida digital Genera un pulso en una señal de salida digital Para leer el valor de una salida digital Para leer el valor de un grupo de salidas digitales Comprueba si se ha activado una entrada digital
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: mensajes que se pueden en en el visualizador visualizador del pupitre pupitre y que pueden pueden solicitar una • Mostrar mensajes respuesta del usuario. memoria másica del sistema (archivos de de texto). • Leer o escribir en la memoria entre el robot robot y un sensor, por ejemplo. • Transferir información binaria entre información binaria binaria entre el robot robot y otro computador, computador, por ejemplo ejemplo un protocolo de • Transferir información 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. momento. 7.1 Instrucciones de comunicación comunicación más usuales
7.1.1 TPWrite TPWrite texto [\Num] | [\Bool] | [\Pos] [\Pos] | [\Orient] Escribe un texto en el visualizador del pupitre móvil. Cadena de texto de menos de 80 caracteres string texto Dato numérico a añadir a la cadena num [\Num] Dato lógico a añadir a la cadena bool [\Bool] Dato de posición del robot a añadir a la cadena pos [\Pos] Dato de orientación del robot a añadir a la cadena orient [\Orient] El texto empieza siempre en una línea nueva del visualizador. Cuando éste se llena, el texto se mueve hacia arriba. Ejemplo: := := num_piezas TPWrite “El Nº de piezas producidas es “ \NUM
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. num contestación Variable que contendrá 1,2,3,4 o 5 según la tecla pulsada Texto informativo que aparecerá en el visualizador string texto Texto exto que ap aparece rece sob sobre las las tecl tecla as de de fu funció ción. Máxim ximo 7 car caracte actere ress str string ing FKx Intervalo máximo de tiempo (en seg) que la ejecución del programa espera. num [\MaxTime] Si no se pulsa ninguna tecla en ese tiempo se genera el error ERR_TP_MAXTIME Entrada digital que podría interrumpir el diálogo. Si no se pulsa ninguna signaldi [\DIBreak] 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: error; error; VAR errnum VAR errnum
J.M. Vázquez
Pag.: 30
UVA - CARTIF
Manual Básico de Programación. Lenguaje RAPID
... reg1 “¿Ir a la posición de REPLIEGUE?”, “”, “”, “”, “Si”, “No” reg1 TPReadFK \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 instrucciones y funciones relacionadas relacionadas
Instrucciones: TPErase ErrW ErrWri rite te TPRe TPRead adNu Num m Open Write Close WriteBin
Borra la la in información de del vi visualizador de de la la un unidad de de pr programación Escri scribe be un text texto o en el visu visua aliza lizad dor y lo alma lmacen cena en el reg registr istro o de err errores res Lee Lee un un val valor or numé numéri rico co de la unid unidad ad de prog progra rama maci ción ón Abrir un canal o archivo para lectura o escritura Escribir texto en un canal o archivo Cerrar un canal o archivo Escribir en un canal serie binario
Funciones: ReadNum ReadStr ReadBin
Lee un va valor numérico de un un canal o archivo Lee una cadena de texto de un canal o archivo 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: Wait WaitTi Tim me WaitUntil WaitDI Wait WaitDO DO
Esp Esperar un cie cierto rto tie tiempo o espe sperar rar hasta asta que el robot se deten tenga Esperar hasta que se cumpla una condición Esperar ha hasta que se active una entrada digital (Ver cap. en entradas y salidas). Espe sperar hasta sta que se acti active ve una sali salida da digit igita al (Ve (Ver cap cap. entr entra adas das y sali salid das). s).
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 ClkStart ClkStop Funciones: ClkRead CDate CTime GetTime
Pone a 0 un reloj para cronometraje Arranca un reloj para el cronometraje Parar un reloj para el cronometraje Leer el reloj del cronometraje Leer la fecha actual como una cadena Leer la hora actual como una cadena 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 s uele asignar a un nuevo dato mediante la instrucción de asignación: “ := “. Instrucciones: Clear Add Incr Decr Funciones: Abs Round Trunc Sqrt Exp Pow ACos ASin ATan ATan2
J.M. Vázquez
Poner a 0 un valor Sumar o restar restar un valor Incrementar en 1 Decrementar en 1 Calcula el valor absoluto Redondea un valor numérico Trunca un valor numérico Calculo la raíz cuadrada Calcula la exponencial de “e” Calcula la exponencial con cualquier base Calcula el arco coseno Calcula el arco seno Calcula el arco tangente (entre (entre -90 y 90) 90) Calcula el arco tangente (entre (entre -180 y 180) 180)
Pag.: 32
UVA - CARTIF
Cos Sin Tan Eule EulerZ rZYX YX Orie Orient ntZY ZYX X PoseInv PoseMult PoseVect
Manual Básico de Programación. Lenguaje RAPID
Calcula el coseno Calcula el seno Calcula la tangente Calc Calcu ula los ángulo guloss de de Eu Euler ler a parti artirr de de un una or orient ienta ació ción (cu (cua ater ternios) ios) Calc Calcul ula a la orie orient ntac ació ión n (cua (cuate tern rnio ios) s) a part partir ir de los los ángu ángulo loss de Eule Euler r Invertir una posición Multiplicar una posición 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 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: := + = <> Funciones: StrLen StrPart StrMemb StrFind StrMatch StrOrder NumToStr ValToStr StrToVal StrMap
Asignar un valor a una cadena Concatenación de cadenas Comprobar si es igual a Comprobar si no es igual a Calcula la longitud de una cadena Tomar parte de una cadena Comprobar si si un un ca carácter pe pertenece a una ca cadena Buscar un carácter dentro de una cadena Buscar una estructura de caracteres en una cadena Comprobar si la las ca cadenas es están or ordenadas Convertir un valor numérico en cadena Convertir un valor en una cadena Convertir una cadena en un valor Realizar un mapa de la cadena
8.6 Funciones varias
OpMode RunM RunMo ode Dim Pres Prese ent IsPers IsVar Load UnLoad
J. M. Vázquez
Lee el modo de funcionamiento actual del robot Lee Lee el el mo modo de de eje ejecu cuci ción ón de pr program rama qu que est está á usa usand ndo o act actu ualmen lmente te el rob robot Obtiene las dimensiones de una matriz Descu escub brir rir si un pará arámetr metro o opcio cional nal estab staba a prese resen nte en la lla llamada ada a la ruti rutin na Comprobar si un parámetro es un dato persistente Comprobar si un parámetro es un dato variable Carga un módulo de programa en la memoria de programa Descarga un módulo de programa en la memoria de programa
Pag.: 33