1
Fundamentos de Robótica. Guía 9
Tema: Programación del Robot Mitsubishi. Parte III.
Tiempo de ejecución: 2 horas.Ejecutar programas que manejan interrupciones en un robot industrial Mitsubishi.
• Simular las interrupciones por eventos de un robot Mitsubishi.
• Ejecutar un programa desde el software CIROS Studio que contenga interrupciones de eventos y tiempo.
• Monitorear la ejecución de las interrupciones en un brazo robótico usando el software CIROS Studio.
1.
interrupciones.
Son instrucciones que al recibir o al cumplirse una condición en cualquier momento de la ejecución del programa (no en un punto determinado) realiza una tarea especificada y una vez finalizada vuelve al punto del programa principal donde lo había dejado.
DEF ACT
Define las condiciones de interrupción y el proceso para generarla. Ejemplos de llamadas de instrucción:
DEF ACT 1, M_IN(7)=1 GOSUB 200... Define con prioridad nº1, la llamada de la subrutina de la 200 cuando la señal de entrada M_IN(7) se activa.
DEF ACT 2, M_IN(8)=1 GOSUB 480, L... Define con prioridad nº2, la llamada de la subrutina de la 480 cuando la señal de entrada M_IN(8) se activa y la instrucción que se estaba ejecutando termina.
DEF ACT 3, M_IN(9)=1 GOSUB 330... Define con prioridad nº3, la llamada de la subrutina de la 330 cuando la señal de entrada M_IN(9) se activa. Objetivo General Introducción Teórica Objetivos específicos Facultad:Ingeniería. Escuela:Electrónica
Asignatura: Fundamentos de Robótica Lugar de ejecución: iCIM Lab.
2
Fundamentos de Robótica. Guía 9
ACT
Señala la validez de la interrupción. Ejemplos de llamadas de instrucción:
ACT 1=1... Habilita la interrupción de prioridad nº1. ACT 2=0... Deshabilita la interrupción de prioridad nº2. RETURN
Si una subrutina es llamada por el proceso de interrupción, retorna a la donde hubo la interrupción. Ejemplos de llamadas de instrucción:
RETURN 0... Retorna a la línea donde ocurrió la interrupción.
RETURN 1... Retorna a la siguiente línea de donde ocurrió la interrupción.
2.
Comunicaciones
Son instrucciones que gestionan la comunicación con otros elementos externos periféricos. OPEN
Abre la línea de comunicación. Ejemplo de llamada de instrucción:
OPEN COM1: AS#1... Abre la línea de comunicación COM1 como archivo nº1. CLOSE
Cierra la línea de comunicación. Ejemplos de llamadas de instrucción: CLOSE #1... Cierra el archivo nº1.
CLOSE... Cierra todos los archivos abiertos. PRINT #
Exporta los datos en el formato ASCII. CR es el código final. Ejemplos de llamadas de instrucción:
PRINT#1, TEST ... Exporta los caracteres TEST al archivo nº1.
PRINT#2, M1= ; M1... Exporta los caracteres M1= y el valor de M1 al archivo nº2. Por ejemplo: M1=3+CR+LF (cuandoM1=3).
PRINT #3, P1... Exporta las coordenadas de la variable posición P1 al archivo nº3.
PRINT #1, M3, P3... Exporta el valor de la variable M3 y las coordenadas de P3, al archivo nº1. Los dos datos los separa con una coma.
3
Fundamentos de Robótica. Guía 9
INPUT #
Importa datos en formato ASCII. El código final es CR. Ejemplos de llamadas de instrucción:
INPUT #1, M6... Convierte los datos de entrada en valores y los substituye en la variable numérica M6.
INPUT #1, P7... Convierte los datos de entrada en valores y los substituye en la variable de posición P7.
INPUT #1, M9, P5... Convierte los primeros datos de entrada en valores y los substituye en la variable numérica M9. Convierte los siguientes datos de entrada en valores y los substituye en la variable de posición P5.
ON COM GOSUB
Define la rutina a llamar en caso de que las líneas de comunicación generen una interrupción. La interrupción aparece cuando entran datos de un dispositivo externo.
Ejemplos de llamadas de instrucción:
ON COM(1) GOSUB 330... Define saltar a la 330 cuando entran datos por la línea de comunicación COM1.
ON COM(2) GOSUB *RECV... Define llamar a la subrutina RECV cuando entran datos por la línea de comunicación COM1.
COM ON
Habilita el proceso de interrupción de la línea de comunicación indicada. Ejemplo de llamada de instrucción:
COM(1) ON... Habilita la interrupción desde la línea COM1. COM OFF
Deshabilita el proceso de interrupción de la línea de comunicación indicada. Si ocurre la interrupción, no será válida.
Ejemplo de llamada de instrucción:
COM(2) OFF... Deshabilita la interrupción desde la línea COM2. COM STOP
Para el proceso de interrupción de la línea de comunicación indicada. Si hay una interrupción, se guarda y se ejecuta mas tarde.
Ejemplo de llamada de instrucción:
4
Fundamentos de Robótica. Guía 9
CALLP
Llama al programa indicado. Vuelve a la siguiente del programa cuando llega a la de END del programa llamado. Los datos se pueden transferir al programa llamado como una trama de variables. Ejemplos de llamadas de instrucción:
CALLP 10 ... Llama al programa número 10.
CALLP 30 , M2, P2... Llama al programa número 30 y le transfiere la variable numérica M1 y la variable de posición P2.
FPRM
Se transfiere una discusión con la llamada de programa CALLP. Ejemplo de llamada de instrucción:
FPRM M22, P22... Recibe las variables transferidas con la comanda CALLP. La variable numérica será M22 en el subprograma, y la variable de posición será P22.
CLR
Resetea las señales de salida, basándose en el patrón de reset de las señales de salida. Ejemplos de llamadas de instrucción:
CLR 1... Borra basándose en el patrón de reset de las salidas.
1 Computadora personal o portátil con Windows. 1 Software CIROS Robotics
1 Software CIROS Studio
Parte I. Ejemplo de manejo de Interrupciones en CIROS Robotics. 1. Ejecute el programa CIROS Robotics.
2. Se realizará un ejemplo usando un robot RV-2AJ sin eje lineal o el RV-3SB sobre un programa de un punzado de las posiciones del palé. En cada posición picará tantas veces como el número de la posición. Aparte, tiene que haber una interrupción que simule la cocción de un pastel. Cuando se active la señal M_IN(10), dejará lo que hacía e irá a recoger la pieza-pastel. Luego la dejará en la posición del horno y esperará 30 segundos antes de tomarlo y llevarlo a la posición donde lo ha recogido. Durante los 30 segundos de la cocción, el robot seguirá con la operación de punzado. Procedimiento
5
Fundamentos de Robótica. Guía 9
Figura 1. Distribución de la instalación del robot. Realización:
Las posiciones clave para realizar el movimiento descrito serán: • P1: posición inicial o de reposo
• P2: posición de recogida de la pieza de punzado • P3: posición de recogida de la pieza-pastel • P4: posición del primer vértice del palet • P5: vértice 2
• P6: vértice 3 • P7: vértice 4
• P8: posición del horno
6
Fundamentos de Robótica. Guía 9
Figura 3. Posiciones del robot RV-3SB.
Nota: Se usará el comando M_TIMER(x) que son relojes de programa que podemos inicializar y consultar.
10 '*****************UNIVERSIDAD DON BOSCO****************** 20 '* FUNDAMENTOS DE ROBÓTICA * 30 '* * 40 '* PRÁCTICA - 9 * 50 '* INTERRUPCIONES * 60 '* PARTE 1 * 70 '* Fecha: * 80 '* Comentarios: * 90 '* * 100 '********************************************************* 110 DEF POS HORNO ' Declaración variable posición HORNO
120 DEF POS OFFSET ' Declaración variable posición OFFSET 130 DEF POS P9 ' Declaración variable posición P9
140 HORNO = (0,0,+50,0,0,0) ' Definición de HORNO 150 OFFSET = (0,0,+60,0,0,0) ' Definición de OFFSET 160 'DEF IO N_PASTEL = BIT,10
170 DEF ACT 1, M_IN(10) = 1 GOSUB *COCER ' Definición interrupción COCER 180 DEF ACT 2, M_TIMER(1) > 30000 GOSUB *RETIRAR ' Definición interrupción RETIRAR 190 DEF INTE NPP ' Declaración variable entera NPP
200 DEF INTE CONTADOR ' Declaración variable entera CONTADOR 210 DEF INTE RAPIDO ' Declaración variable entera RAPIDO 220 DEF INTE LENTO ' Declaración variable entera LENTO 230 DEF PLT 1, P4, P5, P6, P7, 3, 3, 2 ' Definición del palet 1
240 SPD 500 ' Definición de la velocidad de movimientos interpolados a 500 mm/s 250 RAPIDO = 40 ' Definición de RAPIDO
260 LENTO = 15 ' Definición de LENTO
270 '... 280 HOPEN 1 ' Abrir Pinza
290 OVRD RAPIDO ' Velocidad al 40%
7
Fundamentos de Robótica. Guía 9
310 ACT 1 = 1 ' Habilita la interrupción 1
320 GOSUB *TOMAR_P ' Llama a la subrutina TOMAR_P 330 *INI ' Etiqueta INI
340 NPP = 1 ' Inicialización del contador NPP
350 WHILE (NPP <= 9) ' Mientras NPP sea inferior a 10, se ejecutará el bucle del WHILE
360 P9 = (PLT 1, NPP) ' Asignamos el valor de una posición del palet a la variable de posición P9 370 MOV P9 + OFFSET ' Movimiento no interpolado a la posición P9+OFFSET
380 OVRD LENTO ' Velocidad al 15%
390 CONTADOR = 0 ' Inicialización del contador CONTADOR
400 WHILE (CONTADOR < NPP) ' Mientras CONTADOR sea inferior a NPP, se ejecutará el WHILE 410 MVS P9 ' Movimiento recto a la posición P9
420 MVS P9 + OFFSET ' Movimiento recto a la suma de coordenadas de P9 + OFFSET 430 CONTADOR = CONTADOR + 1 ' Actualización del contador CONTADOR
440 WEND ' Fin del WHILE
450 OVRD RAPIDO ' Velocidad al 40%
460 NPP = NPP + 1 ' Actualización del contador NPP 470 WEND ' Fin del WHILE
480 GOTO *INI ' Salto a la etiqueta INI 490 END ' Fin del programa
500 '--- 510 *TOMAR_P ' Inicio de la subrutina *TOMAR_P
520 OVRD RAPIDO ' Velocidad al 40%
530 MOV P2 + OFFSET ' Movimiento no interpolado a la posición P2+OFFSET 540 OVRD LENTO ' Velocidad al 15%
550 MVS P2 ' Movimiento recto a la posición P2 560 HCLOSE 1 ' Cierra pinza
570 DLY 0.5 ' Espera de 0.5 segundos
580 MVS P2 + OFFSET ' Movimiento recto a la suma de coordenadas de P2 + OFFSET 590 OVRD RAPIDO ' Velocidad al 40%
600 RETURN ' Final de la subrutina AGARRAR_P
610 '--- 620 *DEJAR_P ' Inicio de la subrutina DEJAR_P
630 OVRD RAPIDO ' Velocidad al 40%
640 MOV P2 + OFFSET ' Movimiento no interpolado a la posición P2+OFFSET 650 OVRD LENTO ' Velocidad al 15%
660 MVS P2 ' Movimiento recto a la posición P2 670 HOPEN 1 ' Abrir Pinza
680 DLY 0.5 ' Espera de 0.5 segundos
690 MOV P2 + OFFSET ' Movimiento interpolado a la posición P2+OFFSET 700 OVRD RAPIDO ' Velocidad al 40%
710 RETURN ' Final de la subrutina DEJAR_P
720 '--- 730 *COCER ' Inicio de la interrupción COCER
740 ACT 1 = 0 ' Deshabilita la interrupción 1 750 OVRD RAPIDO ' Velocidad al 40%
760 MOV P1 ' Movimiento no interpolado a la posición P1 770 GOSUB *DEJAR_P ' Llama a la subrutina DEJAR_P
780 MOV P3 + OFFSET ' Movimiento no interpolado a la posición P3+OFFSET 790 OVRD LENTO ' Velocidad al 15%
800 MVS P3 ' Movimiento recto a la posición P3 810 HCLOSE 1 ' Cierra pinza
8
Fundamentos de Robótica. Guía 9
830 MVS P3 + OFFSET ' Movimiento recto a la suma de coordenadas de P3 + OFFSET 840 OVRD RAPIDO ' Velocidad al 40%
850 MOV P8 + HORNO ' Movimiento no interpolado a la posición P8+OFFSET 860 OVRD LENTO ' Velocidad al 15%
870 MVS P8 ' Movimiento recto a la posición P8 880 HOPEN 1 ' Abrir Pinza
890 DLY 0.5 ' Espera de 0.5 segundos
900 MVS P8 + HORNO ' Movimiento recto a la suma de coordenadas de P8 + HORNO 910 GOSUB *TOMAR_P ' Llama a la subrutina TOMAR_P
920 MOV P1 ' Movimiento no interpolado a la posición P1 930 ACT 2 = 1 ' Habilita la interrupción 2
940 M_TIMER(1) = 0 ' Inicialización del reloj a cero 950 RETURN 0 ' Final de la interrupción COCER
960 '--- 970 *RETIRAR ' Inicio de la interrupción RETIRAR
980 DLY 3 ' Espera de 3 segundos
990 ACT 2 = 0 ' Deshabilita la interrupción 2 1000 OVRD RAPIDO ' Velocidad al 40%
1010 MOV P1 ' Movimiento no interpolado a la posición P1 1020 GOSUB *DEJAR_P ' Llama a la subrutina DEJAR_P
1030 MOV P8 + HORNO ' Movimiento no interpolado a la posición P8+HORNO 1040 OVRD LENTO ' Velocidad al 15%
1050 MVS P8 ' Movimiento recto a la posición P8 1060 HCLOSE 1 ' Cierra pinza
1070 DLY 0.5 ' Espera de 0.5 segundos
1080 MVS P8 + HORNO ' Movimiento recto a la suma de coordenadas de P8 + HORNO 1090 OVRD RAPIDO ' Velocidad al 40%
1100 MOV P3 + OFFSET ' Movimiento no interpolado a la posición P3+OFFSET 1110 OVRD LENTO ' Velocidad al 15%
1120 MVS P3 ' Movimiento recto a la posición P3 1130 HOPEN 1 ' Abrir Pinza
1140 DLY 0.5 ' Espera de 0.5 segundos
1150 MVS P3 + OFFSET ' Movimiento recto a la suma de coordenadas de P3 + OFFSET 1160 OVRD RAPIDO ' Velocidad al 40%
1170 GOSUB *TOMAR_P ' Llama a la subrutina TOMAR_P 1180 MOV P1 ' Movimiento no interpolado a la posición P1 1190 RETURN 0 ' Final de la interrupción RETIRAR
3. ¿Cómo funciona el programa al solo ejecutarlo?
________________________________________________________________________________ 4. ¿Qué sucede al programa al activar la señal de inicio (Forzar la activación de la entrada10 a 1 y
luego a 0) de la cocción del pastel?
________________________________________________________________________________ 5. ¿Espera el programa, en CIROS Robotics, los 30 segundos para recoger el pastel?
________________________________________________________________________________ 6. ¿Qué sucede si volvemos a activar la señal de inicio (Forzar la activación de la entrada10 a 1 y
luego a 0) de la cocción del pastel?
________________________________________________________________________________ _______________________________________________________________________________
9
Fundamentos de Robótica. Guía 9
Parte II. Ejemplo de manejo de Interrupciones en CIROS Studio.
7. Cree las ocho (8) posiciones necesarias en el robot real para poder ejecutar el programa de la Parte I sin que se generen choques en el robot.
8. Modifique el programa para que la señal de inicio de la cocción del pastel sea la 04 (Botón de reset color gris en el panel de control de la estación del robot RV-3SB).
9. Cargue el programa al robot real usando CIROS Studio. 10.Pruebe el programa inicialmente a una velocidad reducida.
11.Una vez comprobado el funcionamiento, aumente la velocidad al un 50%. 12.¿Cómo funciona el programa al solo ejecutarlo?
________________________________________________________________________________ 13.¿Qué sucede al programa al activar la señal de inicio (botón reset del panel de control) de la cocción
del pastel?
________________________________________________________________________________ 14.¿Espera el programa, en CIROS Robotics, los 30 segundos para recoger el pastel?
________________________________________________________________________________ 15.¿Qué sucede si volvemos a activar la señal de inicio de la cocción del pastel?
________________________________________________________________________________ _______________________________________________________________________________ 16.Salga del programa y apague la computadora.
1. Presente las respuestas a las preguntas formuladas en la guía de laboratorio.
2. Presente a su docente de laboratorio el programa funcionando que realiza en trabajo con interrupciones.
3. ¿Qué puede concluir sobre la ejecución de las interrupciones en CIROS Robotics comparada con CIROS Studio? Explique.
4. Modifique el programa para que se vuelvan a habilitar las interrupciones luego de ejecutarlas, de manera que otra activación del pulsador de inicio de la cocción repita las subrutinas de interrupción.
1. Realice un programa que comunique el robot, por medio del puerto serie, a un controlador de temperatura u otro sensor inteligente.
Investigación Complementaria Análisis de resultado
10
Fundamentos de Robótica. Guía 9
Manual de Instrucciones de COSIROP para el lenguaje MELFA BASIC IV. FESTO Didactic.
Autor: Juan Olea Pastor.
Designación: Manual de Prácticas para el brazo robot RV-2AJ. Marzo de 2005.
PROGRAMACIÓN DE ROBOTS. Guía del estudiante. Universidad Don Bosco
Versión 4. 16 de septiembre de 2011.
11
Fundamentos de Robótica. Guía 9
Hoja de cotejo: 9
Guía 9:
Programación del Robot Mitsubishi. Parte III.Estudiante: Estación No:
Docente: GL: Fecha: EVALUACION % 1-4 5-7 8-10 Nota CONOCIMIENTO 25% Conocimiento deficiente de los fundamentos teóricos de las interrupciones de robots los Mitsubishi. Conocimiento y explicación incompleta de los fundamentos teóricos. Conocimiento completo y explicación clara de los fundamentos teóricos de las interrupciones de robots. APLICACIÓN DEL CONOCIMIENTO 20% 25% 25% No realizó la simulación de la parte I. No creó las posiciones para la Parte II. No ejecutó el programa en el robot real. Necesitó la ayuda del docente de laboratorio Necesitó la ayuda del docente de laboratorio Necesitó la ayuda del docente de laboratorio Realizo la simulación de la Parte I de la guía de laboratorio.
Creó las posiciones para la Parte II.
Ejecutó el programa y monitoreó al robot por sí mismo. ACTITUD 3% No tiene actitud proactiva. Participa ocasionalmente o lo hace constantemente pero sin coordinarse con su compañero. Tiene actitud proactiva y sus propuestas son concretas y factibles. 2% No es ordenado ni
responsable en el uso del equipo
Solo es ordenado o solo responsable con el uso del equipo
Es ordenado y responsable en el uso del equipo