Manual de programación para lenguaje RAPID 1. 2. 3. 4. 5. INDICE Sistemas de coordenadas del robot Estructura de la programación del robot Tipos de datos Instrucciones Otras consideraciones 6. Programa de ejemplo 1. Sistemas de coordenadas del robot: El robot tiene 3 sistemas de coordinadas: 1. Coordenadas Mundo 2. Coordenadas Base 3. Coordenadas Objeto de trabajo 3 1 2 Figura 1. Coordenadas robot 2. Estructura de la programación del robot El programa consta de tres partes: - Datos de programa - Programa principal - Rutinas Programa Programa Datos Datosde deprograma programa Principal Principal Rutina Rutina Figura 2. Estructura del programa 2.1 Tipos de rutinas: Hay dos tipos de rutinas: - Procedimiento: Se usa como subprograma. - Función: devuelve un valor de un tipo de dato específico y se usa como argumento de una instrucción. 3. Tipos de datos Normalmente trabajaremos con los siguientes tipos de datos: - bool: Datos lógicos (con los valores verdadero o falso) TRUE/FALSE - num: Valores numéricos (decimales o enteros) 1, 3.14, -52263 - string: Cadenas de caracteres (máx. 80) A su vez, los datos pueden ser: - Variable(VAR): Las asignación de nuevos valores a las variables puede realizarse durante la ejecución del programa. - Persistente(PERS): Un valor persistente puede describirse como una variable “persistente”. Esto se consigue haciendo que una actualización del valor de una variable persistente provoque automáticamente la actualización del valor de inicialización de la declaración de la variable persistente (cuando se guarda un programa, el valor de inicialización de cualquier declaración de variable persistente refleja el valor actual de la variable persistente). - Constante(CONST): Las constantes representan valores fijos y no es posible asignarles nuevos valores. 3.1 Nombrar variables El nombre de la variable debe: - Tener 16 caracteres como máximo - Empezar con una letra - No puede nombrarse una variable igual que las palabras reservadas por RAPID (Instrucciones, tipos de datos…) Programa Salida: Entrada: Electroiman Finales de carrera Figura 3. E/S del Sistema Figura 4. Palabras reservadas RAPID 4. Instrucciones 4.1 Instrucciones de movimiento en Offset A continuación se van a mostrar las diferentes partes de una instrucción: Instrucción Punto de comienzo Movimiento dirección x Movimiento dirección y Movimiento dirección z MoveL Offs (p1,100,50,0),v100,fine,tool0; Velocidad de Movimiento Añade un Offset Aproximación Herramienta Figura 5. Instrucción de movimiento 4.2 Instrucciones de posicionamiento - MoveC: Mover el TCP a lo largo de una trayectoria circular - MoveJ: Movimiento de ejes - MoveL: Mover el TCP a lo largo de una trayectoria lineal - MoveAbsJ: Movimiento absoluto de ejes 4.3 Instrucciones de llamada a otra rutina - ProcCall: Llamar (saltar) a otra rutina - RETURN: Volver a la rutina general 4.4 Instrucciones IF - IF: Ejecutar una secuencia de instrucciones diferentes en función de si se cumple una condición IF.....THEN .....; EXIT; ENDIF IF.....THEN .....; RETURN; ENDIF IF.....THEN .....; RETURN; ENDIF ENDPROC IF.....=TRUE THEN .....; ELSE .....; ENDIF IF contador>100 THEN contador:=100; ELSEIF contador<0 THEN contador:=0; ELSE contador:=contador+1; ENDIF IF longitud<1000 OR longitud>1400 THEN !fuera de rango EXIT; ENDIF Figura 6. Instrucciones IF 4.5 Bucles While y For - For: Repetir una sección del programa un número de veces - While: Repetir una secuencia de instrucciones diferentes mientras siga cumpliéndose una condición WHILE .....DO IF.....AND.....THEN .....; ENDIF ENDWHILE IF reg1=1 proc1; FOR i FROM 1 TO.....DO .....; ENDFOR IF contador>10 Set Electroiman, 1; Figura 7. Buckes For y While 4.6 Otras estructuras e instrucciones de activación/desactivación de E/S - TEST: Ejecutar instrucciones diferentes en función del valor de una expresión - GOTO: Saltar a una etiqueta - WaitTime: Esperar una cantidad determinada de tiempo o esperar hasta que el robot deje de moverse - WaitUntil: Esperar hasta que se cumpla una condición - Set: Activar una señal digital de salida (cambiarla a 1) - Reset: Restablecer una señal digital de salida (ponerla a 0) WaitTime 0.5; WaitUntil di1=1 AND di2=1; GOTO next; . . . next; TEST alternatives CASE 1, 2, 3: .....; CASE 4: .....; DEFAULT: TPWrite ”Elección Imposible”; ENDTEST Set Electroiman; Reset Electroiman; Figura 8. Otras instrucciones 5. Otras consideraciones: - Al final de cada instrucción se pondrá siempre “;” menos para el Inicio/Fin de Modulo/Programa/Rutina. - La velocidad del robot se ha limitado. Las velocidades a la que podrá ir serán: v10, v20, v30, v40, v50, y v100. - Los comentarios en los programas tienen que ir precedidos de “!” - Para realizar la asignación de un valor a un dato, utilizaremos “:=” - Las coordenadas se ponen en milímetros (1 cm = 10 mm) - La cabecera y la parte final siempre será igual para este laboratorio remoto MODULE modulo1 ! Datos de programa PROC programa1() ! Instrucciones ENDPROC ENDMODULE 6. Programa de ejemplo: El programa que se va a realizar consiste en hacer que el robot pase por los 4 puntos marcados en las esquinas como se muestra en la figura 9. p1 100 mm p2 50 mm p4 p3 Figura 9. Esquema del programa Para ello, nos dan el punto 1 ya almacenado con sus correspondientes coordenadas. Esté se encuentra elevado 5 cms sobre el mismo. Una vez estemos en el punto exacto, activaremos la señal del “Electroiman” durante medio segundo. Posible solución Figura 10. Programa acabado MODULE modulo1 ! Esta línea la tienen que incluir todos los programas. Inicio del modulo VAR num ! Aquí podemos definir los datos que consideremos oportunos puntos:=0; ! Definimos la variable ‘puntos’ con un valor inicial de 0. PROC programa1() ! Esta línea estará siempre. Declara el inicio del programa principal MoveL p1,v100,z20,tool0; ! Movimiento lineal al punto p1. MoveL Offs (p1,0,0,-50),v100,fine,tool0; ! Baja los 5 cms que esta elevado Set Electroiman; ! Activa la señal Electroiman WaitTime 0.5; ! Durante 0.5 segundos Reset Electroiman; !Resetea la señal MoveL Offs (p1,0,0,0),v100,z20,tool0; !Vuelve a subir los 5 cms MoveL Offs (p1,100,0,0),v100,z20,tool0; MoveL Offs (p1,100,0,-50),v100,fine,tool0; Set Electroiman; WaitTime 0.5; Reset Electroiman; MoveL Offs (p1,100,0,0),v100,z20,tool0; MoveL Offs (p1,100,50,0),v100,z20,tool0; MoveL Offs (p1,100,50,-50),v100,fine,tool0; Set Electroiman; WaitTime 0.5; Reset Electroiman; MoveL Offs (p1,100,50,0),v100,z20,tool0; MoveL Offs (p1,0,50,0),v100,z20,tool0; MoveL Offs (p1,0,50,-50),v100,fine,tool0; Set Electroiman; WaitTime 0.5; Reset Electroiman; MoveL Offs (p1,0,50,0),v100,z20,tool0; ENDPROC ENDMODULE ! Esta línea estará siempre. Declara el final del programa principal ! Esta línea la tienen que incluir todos los programas. Final del modulo