Programación del Robot Mitsubishi. Parte II.

Anuncio
Fundamentos de Robótica. Guía 7
1
Facultad: Ingeniería.
Escuela: Electrónica
Asignatura: Fundamentos de Robótica
Lugar de ejecución: iCIM Lab.
Edificio 3. Primera planta.
Tema: Programación del Robot Mitsubishi. Parte II.
Tiempo de ejecución: 2 horas.
Objetivo General
Programar de forma intermedia un robot industrial del laboratorio.
Objetivos específicos
•
•
•
•
Definir objetos virtuales dentro del software CIROS Robotics.
Trabajar con las entradas y salidas digitales de un robot Mitsubishi.
Simular la activación de sensores conectados a las entradas de un robot Mitsubishi.
Realizar programas que utilizan subrutinas del lenguaje Melfa Basic IV.
Introducción Teórica
1. Señales de Entrada/Salida.
El robot industrial es un sistema de automatización flexible y reprogramable capaz de realizar diferentes
tareas o secuencias. Las acciones del robot industrial generalmente están integradas dentro de un
entorno donde debe tener una interrelación con otras máquinas de mayor o menor complejidad.
Según la complejidad de esta interrelación se definen tres niveles de sistemas automáticos:
Figura 1. Proceso automatizado por medio de robots industriales.
Propiedad de la Universidad Don Bosco
Prohibida su reproducción total o parcial para otros fines 2016
Fundamentos de Robótica. Guía 7
2
1.- Sistema robótico: Donde el robot sostiene la principal tarea a realizar.
2.- Célula de fabricación flexible: Unidad de fabricación que tiene una o más máquinas herramientas y
sistemas auxiliares, donde el robot realiza funciones de servidor del sistema (manipulación, carga y
descarga e inspección).
3.- Sistema de fabricación flexible: Formado por un conjunto complejo de máquinas herramientas
dispuestos en forma de línea de fabricación, capaz de generar diferentes variantes de producto. En este
sistema el robot industrial interviene como un elemento más del sistema.
DEF I/O
El robot dispone de 32 entradas y 32 salidas digitales. Algunas están reservadas:
Salidas reservadas 0 (running), 1 (Servo On), 4 y 5 (abrir y cerrar pinza)
Entradas reservadas 0 (stop), 1 (Servo off), 2 (error reset), 3 (start), (4 servo on)
El control de las entradas y salidas se realiza con dos vectores (array) predefinidos, M_OUT( ) y M_IN(
).
M_OUT(6) = 1 .. Activa la salida 6
IFM_IN(9) =1 THEN X.... Si la entrada 9 está activa, hace la instrucción X
También se pueden renombrar “al gusto” del usuario con la instrucción “DEFIO”.
DEF IO MARCHA = BIT,10
WAIT
Espera a que la variable alcance el valor indicado.
Ejemplos de llamadas de instrucción:
WAIT M_IN(1)=1...... Espera a que la señal de entrada 1 se active.
2. Paletización
Introducción
La manipulación automatizada de objetos y piezas, ha extendido la utilización de palets, que son
contenedores compartimentados o elementos de fijación, que permiten ordenar un determinado número
de piezas iguales, para su transporte y manipulación del conjunto. Esta manera hace que no se pierda el
orden, facilitando las tareas de manipulación.
DEF PLT
Define el palet para ser usado.
Ejemplos de llamadas de instrucción:
DEF PLT 1, P1, P2, P3, P4, 3, 5, 1…….
Propiedad de la Universidad Don Bosco
Define el palet nº1, con posición de inicio
en P1, posición final de primera fila en P2,
posición inicial de última fila en P3, y
punto diagonal en P4. El palet será 3x5, y
su distribución del tipo 1 (zig-zag).
Prohibida su reproducción total o parcial para otros fines 2016
Fundamentos de Robótica. Guía 7
3
Figura 2. Paletizado en Melfa Basic IV.
DEF PLT 1, P1, P2, P3, , 6, 5, 2….. Define el palet nº1, con posición de inicio en P1,
posición final de primera fila en P2 y posición
inicial de última fila en P3. El palet será 6x5, y su
distribución del tipo 2 (misma dirección).
DEFPLT1, P1, P2, P3, , 7, 1, 3........ Define el palet nº1, posición de inicio en P1, punto
de transito P2 y posición final en P3. El palet es en
arco (tipo 3) y tiene 7 posiciones.
NOTA: Se ha de tener en cuenta que la posición relativa de la pinza respecto al brazo ha de ser del
mismo signo. No puede haber dos posiciones que definen el palet con la coordenada de orientación en
180º y -180º.
PLT
Obtiene la posición deseada sobre un palet.
Ejemplos de llamadas de instrucción:
(PLT 1, 4)........... Obtiene la cuarta posición del palet nº1.
(PLT 1, M1)........ Obtiene la posición indicada por la variable M1, del palet nº1.
Programa ejemplo:
10 DEF PLT 1, P2, P3, P4, P5, 3, 4, 2
20 MOV P1
30 HCLOSE 1
40 P10=(PLT 1, 4)
50 MOV P10, -50
60 MVS P10
70 HOPEN 1
80 MVS P10, -50
90 P10=(PLT 1, 11)
100 MOV P10, -50
110 MVS P10
120 HCLOSE 1
130 MVS P10, -50
140 END
Figura 3. Programa de ejemplo de un paletizado.
Propiedad de la Universidad Don Bosco
Prohibida su reproducción total o parcial para otros fines 2016
Fundamentos de Robótica. Guía 7
4
Figura 4. Robot industrial moviendo un palé.
3. Saltos Condicionales y Bucles
Los saltos y bucles son instrucciones condicionales que pueden repetir acciones un número determinado
de veces o saltar a partes del programa.
GOTO
Salto incondicional a la línea indicada.
Ejemplos de llamadas de instrucción:
GOTO 300..........Salto incondicional a la línea 300.
GOTO *FIN.........Salto incondicional a la línea con la etiqueta FIN.
Salto en función del valor de la variable designada. Las condiciones siguen el orden del valor entro de
la variable(0, 1, 2, 3, ...).
Ejemplos de llamadas de instrucción:
ON M1 GOTO 50, 150, 300........... Si el valor de la variable M1 es 1 salta a la línea 50,
si es 2 salta a la línea 150, si es 3 salta a la línea
300, y si es otro valor salta a la siguiente línea.
IF THEN ELSE
Salto según el valor de la variable. Los valores de condición pueden ser designados aleatoriamente.
Solo hay un tipo de condición por declaración de comanda.
Ejemplos de llamadas de instrucción:
IF M1=1 THEN 50............. Si la variable M1 vale 1, salta a la 50; sino, salta a la línea siguiente.
IF M1=1 THEN 50 ELSE 90............. Si la variable M1 vale 1, salta a la 50; sino, salta a la línea 90.
Propiedad de la Universidad Don Bosco
Prohibida su reproducción total o parcial para otros fines 2016
Fundamentos de Robótica. Guía 7
5
SELECT CASE
Salto según el valor de la variable. Los valores de condición pueden ser designados aleatoriamente. Hay
múltiples condiciones por declaración de comanda.
Para finalizar los CASE se puede poner BREAK. En el último se puede poner DEFAULT, que
englobará el resto de condiciones que no se hayan especificado en los CASE anteriores. El programa
debería salir del SELECTCASE pasando por la línea ENDCASE, ya que si sólo sale con GOTO o
GOSUB, acaba parándose por anidamiento excesivo.
Ejemplos de llamadas de instrucción:
SELECT M1.........
CASE 5...............
CASE IS 9...........
CASE IS < 3........
CASE 6 TO 9.......
DEFAULT............
END SELECT.......
Selecciona el valor de la variable M1 para compararlo en las siguientes
instrucciones.
Si el valor es 5, ejecuta solo entre esta y el siguiente “CASE”.
Si el valor es 9, ejecuta solo entre esta y el siguiente “CASE”.
Si el valor es menor que 3, ejecuta solo entre esta y el siguiente “CASE”.
Si el valor esta entre 6 y 9, ejecuta solo entre esta y el siguiente “CASE”.
Si el valor no se ajusta a ninguna de las condiciones anteriores, ejecuta solo entre
DEFAULTy el próximo ENDSELECT.
Finaliza la declaración de SELECTCASE.
Nota: Al final de cada instrucción CASE es recomendable poner la instrucción “BRAKE”.
GOSUB
Llama a la subrutina con la o el nivel indicado.
Ejemplos de llamadas de instrucción:
GOSUB 300.......
GOSUB *GET.....
Llama la subrutina de la 300.
Llama la subrutina del nivel GET.
RETURN
Retorna a la línea siguiente de donde estaba el comando “GOSUB”.
ON GOSUB
Llama a la subrutina según la variable numérica indicada. El valor de las condiciones siguen valores
enteros.
Ejemplo de llamada de instrucción:
ON M1 GOSUB 300, 400, 500...... Si la variable numérica vale 1, llama la subrutina de la 300; si vale
2 llama, llama la subrutina de la 400; y si vale 3 llama, llama la
subrutina de la 500. Si el valor no corresponde, sigue en la
siguiente.
Propiedad de la Universidad Don Bosco
Prohibida su reproducción total o parcial para otros fines 2016
Fundamentos de Robótica. Guía 7
6
FOR NEXT
Repite las instrucciones entre la de FOR y la de NEXT, hasta satisfacer las condiciones especificadas.
Ejemplos de llamadas de instrucción:
FOR M1=1 TO 10............
Repite 10 veces las instrucciones entre FOR y NEXT.
Inicialmente la variable M1 vale 1, y se va incrementando
en cada repetición.
NEXT M1
FOR M1=0 TO 10 STEP 2.............. Repite 6 veces las instrucciones entre FOR y NEXT. Inicialmente
la variableM1 vale 0, y se va incrementando en 2 en cada
repetición.
NEXT M1
WHILE WEND
Repite las instrucciones entre la de WHILE y la de WEND, mientras las condiciones especificadas se
cumplen.
Ejemplo de llamada de instrucción:
WHILE (M1 >= 1)AND(M1 <= 10)...............
Repite las instrucciones entre “WHILE” y “WEND”
hasta que la variableM1 sale del rango [1..10].
WEND
Materiales y equipos
1 Computadora personal o portátil con Windows.
1 Software CIROS Robotics
Procedimiento
Parte I. Manejo de objetos virtuales.
1. Ejecute el programa de simulación CIROS Robotics.
2. Cree un nuevo proyecto por medio del asistente, seleccionando el modelo de cualquiera de los
robots que se tienen en el iCIM3000 (RV-2AJ SIN el eje lineal o el RV-3SB).
El objetivo de la operación del robot no sólo es el movimiento de sí mismo por sí mismo. Se
pretende manipular objetos. CIROS Robotics en efecto puede hacer algo más que simular un robot,
puede también simular objetos físicos.
3. Para simular un objeto es necesario, antes que nada, crearlo dentro del proyecto. Para esto es
necesario seguir los siguientes pasos:
En la barra de herramientas escoja Modeling → Model Explorer
Propiedad de la Universidad Don Bosco
Prohibida su reproducción total o parcial para otros fines 2016
Fundamentos de Robótica. Guía 7
7
Figura 5. Opción Model Explorer del menú Modeling.
Esto le abrirá en el área de trabajo una ventana llamada Model Explorer. Dentro de la ventana
busque la división Objects.
4. Dé clic derecho en Objects y vaya a New → From Model Library. Se abrirá una nueva ventana en la
cual podrá escoger distintos objetos a insertar en su proyecto.
Figura 6. Creación de un nuevo objeto desde la librería.
5. Escoja Micellaneous Primitive. Y dentro de esta categoría escoja BOX Presione el botón Add.
6.
7.
8.
9.
Figura 7. Adición de una caja al ambiente virtual.
Presione el botón Close.
Regrese a la ventana de Model Explorer. En el Explorador del modelo ubíquese en Objects.
Dentro de los objetos dé clic derecho a BOX y en el menú que se despliega escoja properties.
En la sección Visualization puede cambiar el color del objeto creado, y aun definir características
especiales de su apariencia tales como el color en general del objeto, sus aristas, su transparencia u
opacidad, etc.
Una vez definido el objeto, si se quiere que el objeto sea manipulable, será necesario añadir un
grip-point al mismo, de lo contrario el objeto virtual será simplemente una estructura que no podrá
ser ni tocada ni movida en el espacio.
Propiedad de la Universidad Don Bosco
Prohibida su reproducción total o parcial para otros fines 2016
Fundamentos de Robótica. Guía 7
8
Figura 8. Modificación de las propiedades de la caja virtual.
10. En la ventana que se abrirá podrá cambiar las propiedades del objeto que ha creado.
En la sección General puede cambiar nombre al objeto.
Figura 9. Propiedades generales de la caja virtual.
En la sección Pose puede mover el objeto en el espacio visible avanzando por pasos. Defina el
tamaño en el campo Increments.
Figura 10. Modificación de la posición de la caja virtual.
Propiedad de la Universidad Don Bosco
Prohibida su reproducción total o parcial para otros fines 2016
Fundamentos de Robótica. Guía 7
9
En la sección Visualization puede cambiar el color del objeto creado, y aun definir características
especiales de su apariencia tales como el color en general del objeto, sus aristas, su transparencia u
opacidad, etc.
11. Una vez definido el objeto, si se quiere que el objeto sea manipulable, será necesario añadir un
grip-point al mismo, de lo contrario el objeto virtual será simplemente una estructura que no podrá
ser ni tocada ni movida en el espacio.
Para definir un grip-point, abra el Model Explorer y expanda Objects, Box (o el nombre que asignó
al objeto recién creado), y dentro del objeto escoja Base.
Dé clic derecho sobre Base y en el menú que se despliega escoja New, en New escoja Grip Point.
Figura 11. Creación de un nuevo punto de sujeción para la caja virtual.
Aparecerá inmediatamente en el lado derecho del Model Explorer un nuevo elemento llamado
Grippoint_1. Haga clic derecho sobre él para desplegar el menú de opciones del Grip Point. Escoja
Properties para cambiar los atributos del Grip point.
Podrá usted apreciar una ventana titulada Properties for grip point. En ella podrá modificar las
propiedades del objeto a su gusto, tales como el nombre. También puede alinear el grip point con el
objeto mismo en el apartado Pose.
El Grip point como espacio donde actúa el agarre del objeto está representado en el objeto como un
cubo de distinto color al del objeto. Si usted considera que no está bien colocado como para poder
tomar la pieza con la pinza del robot, muévalo con respecto al centro del objeto mismo utilizando
los controles X, Y y Z en el apartado Pose de la ventana de Properties for grip point.
Figura 12. Ajuste de la posición del punto de sujeción de la caja virtual.
Propiedad de la Universidad Don Bosco
Prohibida su reproducción total o parcial para otros fines 2016
Fundamentos de Robótica. Guía 7
10
12. Ahora puede acercar la pinza del robot al objeto que acaba de crear y verá que al cerrar la pinza
(botón Close Hand) en la ventana que se abre con Teach In. El objeto se queda pegado a la pinza de
robot y que no se despegará hasta que la pinza se abra nuevamente.
Si ha hecho la prueba de agarrar y soltar el objeto, notará usted que en ambiente de CIROS Robotics
no existe la gravedad. Y que el objeto permanece en el lugar en el espacio dónde lo han dejado.
Tome en cuenta este hecho en el momento de hacer movimientos de objetos virtuales.
13. Coloque otro objeto, puede ser de forma cilíndrica o un cubo de otro color, en una posición no muy
cercana a la anterior y determine la posición donde sujetarlo.
Coloque un punto intermedio donde pueda dejar temporalmente y luego volver a tomar uno de los
objetos mientras manipula el otro.
14. Haga un programa que continuamente intercambie de posición los dos objetos creados
anteriormente, utilizando para ello una posición intermedia.
Parte II. Manejo de Entradas y Salidas.
15. La primera acción a realizar es incorporar el sensor al modelo que está armando.
Para ingresar dentro de su sistema un sensor, vaya a Modeling→Model Libraries.
Figura 13. Activación de la ventana del Model Explorer.
Se desplegará la ventana mostrada al lado. En esta ventana escoja el sensor a añadir a su proyecto
con Add.
Figura 14. Adición de un sensor inductivo.
Existen variedad de sensores que pueden ser incorporados, algunos de ellos, los más usados son los
siguientes:
• Capacitive Sensor.
• Color Sensor.
• Distance Sensor.
• Inductive Sensor.
Propiedad de la Universidad Don Bosco
Prohibida su reproducción total o parcial para otros fines 2016
Fundamentos de Robótica. Guía 7
11
• Light Barrier.
• Mechanical Switch
• Reflex Light Barrier.
16. Una vez realizado lo anterior es necesario configurar el sensor que se ha ingresado al modelo. Para
configurar el sensor es necesario abrir el Model Explorer, ahí encontrará el sensor que acaba de
ingresar al sistema.
17. Dé clic derecho sobre el sensor inductivo para desplegar el menú de opciones, y en las opciones
escoja Properties. Se desplegará la ventana que se muestra a continuación:
Figura 15. Propiedades del sensor inductivo virtual.
18. Configure en General, el nombre del sensor, en Pose, la posición del sensor, y en Dimension el
tamaño del dispositivo.
19. El objetivo del sensor es producir una salida cuando el sensor detecta un cambio en las magnitudes
que él lee. Para configurar el nombre de la salida y las condiciones que tendrá debe ir, dentro del
menú de opciones del Sensor, a la opción Outputs, dé clic derecho sobre ella y escoja New y dentro
de New escoja Digital (System)...
Figura 16. Adición de una nueva salida a un sensor inductivo virtual.
20. Se desplegará la ventana que se muestra a continuación. Es importante que le dé un nombre a su
salida, es el nombre con que la llamará desde el programa dé clic en aceptar y continúe con su
Propiedad de la Universidad Don Bosco
Prohibida su reproducción total o parcial para otros fines 2016
Fundamentos de Robótica. Guía 7
12
proyecto.
Figura 17. Ventana para agregar el número de salidas y el nombre del sensor inductivo virtual.
Una vez que se ha definido una salida para el sensor, es necesario que dicha salida sea enlazada a
una entrada del robot. Las entradas del robot pueden ser leídas por las instrucciones de un programa
y servir como variables de control para controlar el desarrollo del programa.
21. Para enlazar la salida del sensor a la entrada del robot es necesario ir al Model Explorer y abrir la
carpeta del robot, y dentro de la carpeta de elementos del robot abrir la carpeta de INPUTS.
Una vez abiertas tanto la carpeta de Outputs del sensor, como la de inputs del robot, se arrastra el
Output que usted recién ha creado a uno de los inputs que aún no tienen uso en el robot (que están
marcados como inactive).
Figura 18. Conexión de la salida del sensor inductivo a la entrada del robot.
Si se ubica en el Model Explorer en el input que recién ha asociado va a observar que el output que
Propiedad de la Universidad Don Bosco
Prohibida su reproducción total o parcial para otros fines 2016
Fundamentos de Robótica. Guía 7
13
tiene asociado es el que usted acaba de crear.
Figura 19. Información de la entrada del robot asociada al sensor inductivo.
22. Puede renombrar el input que acaba de modificar haciendo clic derecho en él y escogiendo Rename
en el menú que se despliega. Puede darle el nombre que usted considere conveniente.
El robot Mitsubishi tiene en sí mismo varias entradas y salidas predeterminadas, a las cuales se les
puede asignar un valor, o bien pueden ser leídas invocando la manera como el compilador Melfa
Basic IV las tiene identificadas.
Variables de entradas del robot
M_IN(0)
M_IN(1)
…
M_IN(N)
Variables de salida del Robot
M_OUT(0)
M_OUT(1)
…
M_OUT(N)
Existen algunas variables de Entrada y Salida que ya están asignadas y no pueden ser alteradas,
estas se muestran a continuación:
Variable de
Entrada:
M_IN(0)
M_IN(1)
M_IN(2)
M_IN(3)
M_IN(4)
Estado reservado
ella.
Stop
Servo Off
Error Reset
Start
Servo On
a
Variable de
Salida:
M_OUT(0)
M_OUT(1)
M_OUT(4)
M_OUT(5)
Estado reservado
ella.
Running
Servo On
Abrir Pinza
Cerrar Pinza
a
23. Puede verificar lo anterior en el Model Explorer, en los elementos que llenan los Inputs y los
Outputs del robot. Cada uno de estos elementos tiene un parámetro llamado Index asociado a él,
este valor Index es el que se usará entre paréntesis para poder leer o asignar valores a las
entradas/salidas.
En el caso ejemplo, si a lo largo del programa usted quiere saber el estado del sensor que acaba de
ingresar, como lo ha asociado al INPUT del robot con INDEX = 6, usted lo llamará con la siguiente
variable: M_IN(6). El valor será 0 si el sensor no detecta nada, y 1 si el sensor detecta algo.
Es posible asignar una variable para las entradas/salidas. Con ello no tendrá que escribir M_IN(x) o
M_OUT(x) en cada ocasión, sino que leerá solamente el valor que tiene la variable. Este tipo de
variable se llama variable de entrada/salida y se asigna de la siguiente manera: en las primeras
líneas de su programa use el comando DEF y el modificador IO para definir el identificador de su
entrada/salida. La sintaxis de esta sentencia es:
DEF IO {Nombre de la variable} = {tipo de designación},{Numero de Input/output}
El nombre de la variable puede contener hasta 8 caracteres.
El tipo de designación puede ser BIT, BYTE, WORD o INTEGER. Ello dependerá del tipo de
Propiedad de la Universidad Don Bosco
Prohibida su reproducción total o parcial para otros fines 2016
Fundamentos de Robótica. Guía 7
14
sensor que se tenga.
El Número de Input/Output es el Index Number de la entrada o salida (el valor de x en M_IN(x) o
M_OUT(x))
Ejemplo:
10 DEF IO SENSOR = BIT, 5
En otra parte del programa usted podrá llamar a la variable de entrada/salida que definió para leer
su valor. Suponemos que la llamará para tomar alguna decisión sobre la ejecución del programa.
100 IF SENSOR = 1 THEN GOTO 250
24. Se realizará un ejemplo usando un robot RV-2AJ (si usa el RV-3SB coloque el ángulo C a cero para
cada posición) de un programa de paletizado para llenar un palé de 3x3 con las piezas disponibles.
Al empezar el robot irá a la posición de recogida o agarre, y esperará que se active la señal
M_IN(10) para recoger la pieza. Cada vez que recoja una pieza la pondrá en una posición distinta
del palé, y luego volverá a la posición de espera de la recogida hasta que se active la señal.
Figura 20. Disposición de las piezas a mover.
Realización:
Las posiciones necesarias serán:
• P1: posición inicial o de reposo.
• P2: posición de recogida de piezas.
• P3: posición del primer vértice del palé.
• P4: vértice 2
• P5: vértice 3
• P6: vértice 4
Propiedad de la Universidad Don Bosco
Prohibida su reproducción total o parcial para otros fines 2016
Fundamentos de Robótica. Guía 7
15
Figura 21. Posiciones para el robot RV-2AJ.
Figura 22. Posiciones para el robot RV-3SB.
10 '*****************UNIVERSIDAD DON BOSCO******************
20 '* FUNDAMENTOS DE ROBÓTICA *
30 '* *
40 '* PRÁCTICA - 7 *
50 '* PALETIZACIÓN *
60 '* PARTE 2 *
70 '* Fecha:
*
80 '* Comentarios: *
90 '* *
100 '*********************************************************
110 DEF PLT 1, P3, P4, P5, P6, 3, 3, 2 ' Definición del palé
120 DEF POS OFFSET ' Declaración variable posición OFFSET
130 OFFSET = (0, 0, +100, 0, 0, 0) ' Definición de OFFSET
140 M9=1 ' Asignamos el valor 1 a la variable entera M9
150 OVRD 90 ' Velocidad al 90%
160 HOPEN 1 ' Abrir Pinza
170 MOV P2, -60 ' Movimiento no interpolado a una posición alejada 60mm de la posición P2
180 WHILE (M9<=9) ' Mientras M9 sea inferior a 10, se ejecutará el bucle del WHILE
190 WAIT M_IN(10)=1 ' Espera hasta que la señal M_IN(10) se activa
200 OVRD 30 ' Velocidad al 30%
210 MVS P2 ' Movimiento recto interpolado a la posición P2
220 HCLOSE 1 ' Cierra pinza
230 DLY 0.5 ' Espera de 0,5 segundos
240 MVS P2, -60 ' Movimiento interpolado a una posición alejada 60mm de la posición P2
250 OVRD 90 ' Velocidad al 90%
260 P9=(PLT 1, M9) ' Asignamos el valor de una posición del palé a la variable de posición P9
270 MOV P9 + OFFSET ' Movimiento no interpolado a la posición resultante de la suma de coordenadas
Propiedad de la Universidad Don Bosco
Prohibida su reproducción total o parcial para otros fines 2016
Fundamentos de Robótica. Guía 7
280
285
290
300
310
320
330
340
350
360
370
16
OVRD 30 ' Velocidad al 30%
SPD 1000 ' Velocidad al 1000 mm/s
MVS P9 ' Movimiento recto interpolado a la posición P9
HOPEN 1 ' Abrir Pinza
DLY 0.5 ' Espera de 0,5 segundos
MOV P9 + OFFSET ' Movimiento no interpolado a la posición resultante de la suma de coordenadas
OVRD 90 ' Velocidad al 90%
MOV P2, -60 ' Movimiento no interpolado a una posición alejada 60mm de la posición P2
M9=M9+1 ' Incrementa el valor de la variable entera M9
WEND ' Fin del bucle
END ' Fin del programa
Figura 23. Programa de ejemplo de paletizado.
25. Compile y ejecute el programa. Durante la ejecución el programa se detendrá en la línea 190 a la
espera que la entrada 10 se active.
26. Vaya al Model Explorer y busque la Entrada 10 dentro del robot RV-2AJ (o RV-3SB según lo
escogió al inicio del procedimiento) y deberá editar su valor para forzarlo a 1 y así el programa
continúe con la ejecución.
Figura 24. Forzado del valor de la entrada 10.
27. Cambiar la estructura del “WHILE” por un “IF THEN”, utilizando también la instrucción de salto
de línea “GOTO”.
IF M3=9 THEN 360
28. La mejor manera de entender el uso de los objetos virtuales, los sensores y las señales de entrada/
salida es desarrollando un ejemplo para seguir el procedimiento.
El siguiente ejemplo se hará para el robot RV-3SB y en él se realiza un paletizado de 6 posiciones,
pero se debe incorporar un objeto virtual (una caja ubicada en 300,0,0 con un grip point en
50,50,60) que pueda ser tomada por el robot en la posición P1 y ser paseada por todo el palé.
Propiedad de la Universidad Don Bosco
Prohibida su reproducción total o parcial para otros fines 2016
Fundamentos de Robótica. Guía 7
17
29. Debe agregar un sensor inductivo incorporado en la posición (500,40,-1) con su Measuring range
entre 0 mm (Lower Limit) y 5 mm (Upper Limit).
Figura 25. Ajuste del rango de medida del sensor inductivo.
30. Asigne el número de salidas de sensor y el nombre que tendrá en el programa.
Figura 26. Asignación del número de salidas del sensor y del nombre.
31. Debe conectar la salida normal del sensor, llamada Detect, a la entrada INPUT del Robot con
INDEX 006.
Figura 27. Conexión de la salida del sensor inductivo a la entrada 6 del robot.
32. El programa evalúa el estado de la salida del sensor cada vez que posiciona la caja y el elemento
terminal en cada posición del palé. Cuando el robot ponga la caja sobre el sensor, el sensor
cambiará de estado y detendrá el lazo de seguimiento de posiciones del paletizado.
El listado de posiciones del proyecto es el siguiente:
Propiedad de la Universidad Don Bosco
Prohibida su reproducción total o parcial para otros fines 2016
Fundamentos de Robótica. Guía 7
18
Figura 28. Posiciones para el programa de ejemplo de uso de sensores.
Las instrucciones del programa se listan a continuación:
10 '*****************UNIVERSIDAD DON BOSCO******************
20 '* FUNDAMENTOS DE ROBÓTICA *
30 '* *
40 '* PRÁCTICA - 7 *
50 '* SENSORES *
60 '* PARTE 2 *
70 '* Fecha:
*
80 '* Comentarios: *
90 '* *
100 '*********************************************************
110 DEF POS PLTPOS ' Declaración variable de posición PLTPOS
120 DEF INTE X ' Declaración de la variable entera X
130 DEF PLT 1,PINIC,PFINA,PFINB,PDIAG,2,3,2 ' Definición del palé
140 DEF IO SENSOR1 = BIT,6 ' Declaración de la variable de entrada SENSOR1
150 MOV PHOME ' Movimiento no interpolado a la posición PHOME
160 MOV P1 ' Movimiento no interpolado a la posición P1
170 HCLOSE 1 ' Cierra pinza
180 SPD 100 ' Velocidad a 100 mm/s
190 FOR X = 1 TO 6 ' Inicio del ciclo FOR para X variando de 1 a 6
200 PLTPOS = PLT 1, X ' Asignamos el valor de una posición del palé a la variable de posición PLTPOS
210 MOV PLTPOS, -60 ' Movimiento no interpolado a una posición alejada 60mm de la posición PLTPOS
220 MVS PLTPOS ' Movimiento recto interpolado a la posición PLTPOS
230 IF SENSOR1 = 1 THEN GOTO 290 ' Si se activa el SENSOR1 salta a la línea 290 y finaliza
240 MOV PHOME ' Movimiento no interpolado a la posición PHOME
250 NEXT X ' Fin del lazo FOR
260 MOV PHOME, -50 ' Movimiento no interpolado a una posición alejada 50mm de la posición PHOME
270 MVS P1 ' Movimiento recto interpolado a la posición P1
280 HOPEN 1 ' Abrir pinza
290 ' AQUI SE INTERRUMPE LA EJECUCIÓN DEL PROGRAMA
300 END ' Fin del programa
Figura 29. Programa de ejemplo sobre el uso de sensores.
33. Visualice la propiedad Value de la entrada 6 del robot en el momento que la caja llega sobre el
sensor inductivo.
Propiedad de la Universidad Don Bosco
Prohibida su reproducción total o parcial para otros fines 2016
Fundamentos de Robótica. Guía 7
19
34. Para dejar la caja en su posición inicial, debe ir al menú Simulation y allí seleccionar Reset
Workcell o presionar Ctrl+F5.
NOTA:
Dependiendo de la versión del programa simulador (COSIMIR, CIROS Studio, o CIROS Robotics)
La caja que usted acaba de crear podrá o no ser detectada por el sensor inductivo, pues el objeto
virtual no está hecho de un material ferromagnético. Para que la simulación esté completa es
necesario agregarle una cara de material ferromagnético para que el sensor detecte la presencia de la
caja. Para hacer esto siga los siguientes pasos (Los pasos de 35 a 38 no son necesarios si usa
CIROS Robotics):
35. De clic derecho en el apartado Base de la caja que va a utilizar, vaya a New → Geometric
primitives → Surface.
Figura 30. Ajuste de las propiedades de la superficie de la caja.
36. En la parte derecha del model explorer le aparecerá un nuevo elemento llamado Surface. Haga clic
derecho sobre él y escoja Properties para hacer modificaciones en esta superficie.
37. En el apartado General, asegúrese que las dimensiones de la superficie sean las de la caja (100 x
100) y en el apartado Material, asegúrese que el material sea “Robot Steel” para que sensor detecte
la presencia de la lámina.
Figura 31. Cambio del tipo de material de la superficie de la caja.
Propiedad de la Universidad Don Bosco
Prohibida su reproducción total o parcial para otros fines 2016
Fundamentos de Robótica. Guía 7
20
38. La posición de la lámina debe ser 0,0,0 para que quede en la parte de abajo de la caja.
Parte III. Subrutinas.
39. Realizar un programa para que el brazo industrial RV-2AJ tome una pieza de la zona de recogida o
agarre, y luego la “muestre”. En esta posición, esperará hasta que detecte que se activa una de las
señales de entrada: M_IN(8), M_IN(9), M_IN(10) o M_IN(11). El robot deberá ejecutar una
subrutina distinta dependiendo de la señal que se active:
• M_IN(8)=1 Siguiendo en la misma posición, hace girar la pieza suavemente, para verla
mejor.
• M_IN(9)=1 Realiza un círculo y deposita la pieza en el almacén 1.
• M_IN(10)=1 Mueve la pieza arriba y abajo y la deposita en el almacén 2.
• M_IN(11)=1 Deposita la pieza en la zona de desperdicios.
Figura 32. Disposición de las piezas a mover.
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 piezas
• P3: posición de enseñar la pieza
• P4: posición de inicio del circulo
• P5: posición de tránsito 1
• P6: posición de tránsito 2
• P7: posición del almacén 1
• P8: posición para mover arriba y abajo
• P9: posición del almacén 2
• P10: posición del almacén de desperdicios
Propiedad de la Universidad Don Bosco
Prohibida su reproducción total o parcial para otros fines 2016
Fundamentos de Robótica. Guía 7
21
La declaración de vectores se realiza con las definiciones iniciales, dónde la “d” es la dimensión del
vector. Para modificar o consultar una posición, se llama: nombre(p), dónde la “p” es la posición
seleccionada.
DEF DIM nombre(d)
Figura 33. Posiciones del programa de uso de subrutinas.
10 '*****************UNIVERSIDAD DON BOSCO******************
20 '* FUNDAMENTOS DE ROBÓTICA *
30 '* *
40 '* PRÁCTICA - 7 *
50 '* SUBRUTINAS *
60 '* PARTE 3 *
70 '* Fecha:
*
80 '* Comentarios: *
90 '* *
100 '*********************************************************
110 DEF POS OFFSET ' Declaración variable posición OFFSET
120 OFFSET = (0, 0, +60, 0, 0, 0) ' Definición de OFFSET
130 DEF INTE RAPIDO ' Declaración variable RAPIDO
140 DEF INTE LENTO ' Declaración variable LENTO
150 DEF INTE OPCION ' Declaración variable OPCION
160 RAPIDO = 50 ' Velocidad rápida al 50%
170 LENTO = 20 ' Velocidad lenta al 20%
180 HOPEN 1 ' Abrir Pinza
190 *INICIO ' Etiqueta de reinicio
200 OVRD RAPIDO ' Velocidad al 50%
210 MOV P1 ' Movimiento no interpolado a la posición P1
220 MOV P2 + OFFSET ' Movimiento no interpolado a la suma de coordenadas de P2 y OFFSET
230 OVRD LENTO ' Velocidad al 20%
240 MVS P2 ' Movimiento recto interpolado a la posición P2
250 HCLOSE 1 ' Cierra pinza
Propiedad de la Universidad Don Bosco
Prohibida su reproducción total o parcial para otros fines 2016
Fundamentos de Robótica. Guía 7
260
270
280
290
300
310
320
22
DLY 0.5 ' Espera de 0.5 segundos
MOV P2 + OFFSET ' Movimiento interpolado a la suma de coordenadas de P2 y OFFSET
OVRD RAPIDO ' Velocidad al 50%
MOV P3 ' Movimiento no interpolado a la posición P3
*INI ' Etiqueta
OPCION = 0 ' Inicialización de la variable OPCION
WAIT (M_IN(8)=1) OR (M_IN(9)=1) OR (M_IN(10)=1) OR (M_IN(11)=1) ' Espera a que se active
' alguna señal
330 IF M_IN(11)=1 THEN OPCION =4 ' Comprueba el valor de M_IN(11)
340 IF M_IN(10)=1 THEN OPCION =3 ' Comprueba el valor de M_IN(10)
350 IF M_IN(9)=1 THEN OPCION =2 ' Comprueba el valor de M_IN(9)
360 IF M_IN(8)=1 THEN OPCION =1 ' Comprueba el valor de M_IN(8)
370 SELECT OPCION ' Selecciona el vector ENT para comparar
380 CASE OPCION =1 ' Compara una posición del vector
390 GOSUB *GIRAR ' Llama a la subrutina GIRAR
400 BREAK ' Fin de las instrucciones del CASE seleccionado
410 CASE OPCION =2 ' Compara una posición del vector
420 GOSUB *CIRCULO ' Llama a la subrutina CIRCULO
430 BREAK ' Fin de las instrucciones del CASE seleccionado
440 CASE OPCION =3 ' Compara una posición del vector
450 GOSUB *BOTAR ' Llama a la subrutina BOTAR
460 BREAK ' Fin de las instrucciones del CASE seleccionado
470 CASE OPCION =4 ' Compara una posición del vector
480 GOSUB *TIRAR ' Llama a la subrutina TIRAR
490 BREAK ' Fin de las instrucciones del CASE seleccionado
500 DEFAULT ' Si no hay entradas activas
510 DLY 0.5 ' Espera de 0.5 segundos
520 BREAK ' Fin de las instrucciones del CASE seleccionado
530 END SELECT ' Finaliza la opción SELECT CASE
540 IF OPCION=0 OR OPCION=1 THEN GOTO *INI ' Si la variable OPCION vale 0 o 1, salta a INI
550 GOTO *INICIO ' Salta a la etiqueta INICIO
560 END ' Fin del programa
570 '-------------------------------------------------------------------------------------580 *GIRAR ' Inicio de la subrutina GIRAR
590 DEF POS GIRO ' Declaración variable posición
600 GIRO = (0, 0, 0, 120, 0, 0) ' Asignación de valores a la posición GIRO
610 OVRD LENTO ' Velocidad al 20%
620 CNT 1 ' Inicio del movimiento continuo
630 MOV P3+GIRO ' Movimiento no interpolado a la suma de coordenadas de P3 y GIRO
640 MOV P3 ' Movimiento no interpolado a la posición P3
650 MOV P3-GIRO ' Movimiento no interpolado a la suma de coordenadas de P3 y GIRO
660 MOV P3 ' Movimiento no interpolado a la posición P3
670 CNT 0 ' Fin del movimiento continuo
680 OVRD RAPIDO ' Velocidad al 50%
690 RETURN ' Final de la subrutina GIRAR
700 '-------------------------------------------------------------------------------------710 *CIRCULO ' Inicio de la subrutina CIRCULO
720 CNT 1 ' Inicio del movimiento continuo
725 OVRD LENTO ' Velocidad al 20%
727 SPD 100
730 MOV P1 ' Movimiento no interpolado a la posición P1
740 MOV P4 + OFFSET ' Movimiento no interpolado a la suma de coordenadas de P4 y OFFSET
Propiedad de la Universidad Don Bosco
Prohibida su reproducción total o parcial para otros fines 2016
Fundamentos de Robótica. Guía 7
23
750 MVS P4 ' Movimiento rectilíneo interpolado a la posición P4
760 MVC P4,P5, P6 ' Movimiento circular entre los puntos P4, P5 y P6
770 CNT 0 ' Fin del movimiento continuo
775 REM OVRD 10 ' Velocidad al 10%
780 MOV P4 + OFFSET ' Movimiento no interpolado a (P4 + OFFSET)
790 MOV P7 + OFFSET ' Movimiento no interpolado a (P7 + OFFSET)
800 OVRD LENTO ' Velocidad al 20%
810 MVS P7 ' Movimiento recto interpolado a la posición P7
820 HOPEN 1 ' Abrir Pinza
830 DLY 0.5 ' Espera de 0.5 segundos
840 MVS P7 + OFFSET ' Movimiento recto interpolado a (P7+OFFSET)
850 RETURN ' Final de la subrutina CIRCULO
860 '-------------------------------------------------------------------------------------870 *BOTAR ' Inicio de la subrutina BOTAR
880 CNT 1 ' Inicio del movimiento continuo
890 MOV P8 - OFFSET ' Movimiento no interpolado a (P8 - OFFSET)
900 MOV P8 + OFFSET ' Movimiento no interpolado a (P8 + OFFSET)
910 MOV P8 - OFFSET ' Movimiento no interpolado a (P8 - OFFSET)
920 MOV P8 + OFFSET ' Movimiento no interpolado a (P8 + OFFSET)
930 MOV P8 - OFFSET ' Movimiento no interpolado a (P8 - OFFSET)
940 MOV P8 + OFFSET ' Movimiento no interpolado a (P8 + OFFSET)
950 MOV P8 ' Movimiento no interpolado a P8
960 CNT 0 ' Fin del movimiento continuo
970 MOV P9 + OFFSET ' Movimiento no interpolado a (P9 + OFFSET)
980 OVRD LENTO ' Velocidad al 20%
990 MVS P9 ' Movimiento recto interpolado a P9
1000 HOPEN 1 ' Abrir Pinza
1010 DLY 0.5 ' Espera de 0.5 segundos
1020 MVS P9 + OFFSET ' Movimiento recto interpolado a (P9 + OFFSET)
1030 RETURN ' Final de la subrutina BOTAR
1040 '-------------------------------------------------------------------------------------1050 *TIRAR ' Inicio de la subrutina TIRAR
1060 DEF POS SUELO ' Declaración variable posición
1070 SUELO = (0,-50,+3,0,0,0) ' Definición de SUELO
1080 MOV P10 + SUELO + OFFSET ' Movimiento interpolado a la suma de coordenadas de
' P10, SUELO y OFFSET
1090 OVRD 10 ' Velocidad al 10%
1100 MOV P10 + SUELO ' Movimiento no interpolado a (P10 + SUELO)
1110 MVS P10 ' Movimiento recto interpolado a P10
1120 HOPEN 1 ' Abrir Pinza
1130 DLY 0.5 ' Espera de 0.5 segundos
1140 MOV P10 + OFFSET ' Movimiento no interpolado a (P10+OFFSET)
1150 RETURN ' Final de la subrutina TIRAR
Figura 34. Programa de ejemplo del uso de subrutinas.
40. Vaya al Model Explorer y active sucesivamente solo una de las entradas del robot 8, 9, 10 y 11 y
compruebe que sucede en la simulación del programa. ¿Qué pasa si las cuatro entradas permanecen
activas?________________________________________________________________________
41. Salga del programa y apague la computadora.
Propiedad de la Universidad Don Bosco
Prohibida su reproducción total o parcial para otros fines 2016
Fundamentos de Robótica. Guía 7
24
Análisis de resultado
1. Presente el programa que realizó en el numeral 14 de la parte I del procedimiento.
2. Presente el programa modificado que realizó en el numeral 27 de la parte II del procedimiento.
3. Realice un programa que intercambie de posición dos paletizados de 2x3 de cilindros virtuales de
diferentes colores, el programa tendrá una posición de Home, una posición intermedia para colocar
temporalmente el primer objeto que se mueva o un paletizado intermedio de 2x3 para colocar
temporalmente al primer paletizado que se mueva y dos paletizados de 2x3 de agarre para los
objetos a mover, el programa debe tener un ciclo continuo de intercambio de las piezas en los
paletizados hasta que se presione un interruptor de fin de ciclo.
Investigación Complementaria
1. Investigue las instrucciones del lenguaje Melfa Basic IV para el manejo de interrupciones y para la
comunicación del robot Mitsubishi.
Bibliografía
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.
Propiedad de la Universidad Don Bosco
Prohibida su reproducción total o parcial para otros fines 2016
Fundamentos de Robótica. Guía 7
25
Hoja de cotejo: 7
Guía 7: Programación del Robot Mitsubishi. Parte II.
Estudiante:
Estación No:
Docente:
GL:
Fecha:
EVALUACION
%
1-4
5-7
8-10
Conocimiento
deficiente de los
fundamentos
teóricos de la
programación de
robots Mitsubishi
usando el lenguaje
Melfa Basic IV.
Conocimiento y
explicación
incompleta de
los fundamentos
teóricos.
Conocimiento
completo
y
explicación clara
de los
fundamentos
teóricos de la
programación de
robots Mitsubishi.
CONOCIMIENTO
25%
APLICACIÓN DEL
CONOCIMIENTO
20%
No creó los objetos Necesitó la ayuda
virtuales de la parte I del docente de
de la guía de
laboratorio
laboratorio.
Creó los objetos
virtuales de la parte I
de la guía de
laboratorio.
25%
No realizó la parte II Necesitó la ayuda
de la guía de
del docente de
laboratorio.
laboratorio
Realizó por sí
mismo la parte II de
la guía de
laboratorio.
Realizó por sí
mismo la parte III de
la guía de lab.
25%
ACTITUD
TOTAL
No realizó la parte
III de la guía de
laboratorio.
Necesitó la ayuda
del docente de
laboratorio
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
Nota
100%
Propiedad de la Universidad Don Bosco
Prohibida su reproducción total o parcial para otros fines 2016
Descargar