SlideShare una empresa de Scribd logo
1 de 25
Descargar para leer sin conexión
Propiedad de la Universidad Don Bosco Prohibida su reproducción total o parcial para otros fines 2018
1
Fundamentos de Robótica. Guía 4
Tema: Programación del Robot Mitsubishi. Parte II.
Tiempo de ejecución: 2 horas.
Programar de forma intermedia un robot industrial del laboratorio.
• 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.
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.
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.
Edificio 3. Primera planta.
Propiedad de la Universidad Don Bosco Prohibida su reproducción total o parcial para otros fines 2018
2
Fundamentos de Robótica. Guía4
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……. 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).
Propiedad de la Universidad Don Bosco Prohibida su reproducción total o parcial para otros fines 2018
3
Fundamentos de Robótica. Guía4
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 2018
4
Fundamentos de Robótica. Guía4
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 2018
5
Fundamentos de Robótica. Guía4
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......... Selecciona el valor de la variable M1 para compararlo en las siguientes
instrucciones.
CASE 5............... Si el valor es 5, ejecuta solo entre esta y el siguiente “CASE”.
CASE IS 9........... Si el valor es 9, ejecuta solo entre esta y el siguiente “CASE”.
CASE IS  3........ Si el valor es menor que 3, ejecuta solo entre esta y el siguiente “CASE”.
CASE 6 TO 9....... Si el valor esta entre 6 y 9, ejecuta solo entre esta y el siguiente “CASE”.
DEFAULT............ Si el valor no se ajusta a ninguna de las condiciones anteriores, ejecuta solo entre
DEFAULTy el próximo ENDSELECT.
END SELECT....... 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....... Llama la subrutina de la 300.
GOSUB *GET..... 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 2018
6
Fundamentos de Robótica. Guía4
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 variable M1 sale del rango [1..10].
WEND
1 Computadora personal o portátil con Windows.
1 Software CIROS Robotics
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
Procedimiento
Materiales y equipos
Propiedad de la Universidad Don Bosco Prohibida su reproducción total o parcial para otros fines 2018
7
Fundamentos de Robótica. Guía4
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.
Figura 7. Adición de una caja al ambiente virtual.
Presione el botón Close.
6. Regrese a la ventana de Model Explorer. En el Explorador del modelo ubíquese en Objects.
7. Dentro de los objetos dé clic derecho a BOX y en el menú que se despliega escoja properties.
8. 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.
9. 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 2018
8
Fundamentos de Robótica. Guía4
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 2018
9
Fundamentos de Robótica. Guía4
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 2018
10
Fundamentos de Robótica. Guía4
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 2018
11
Fundamentos de Robótica. Guía4
• 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 2018
12
Fundamentos de Robótica. Guía4
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 2018
13
Fundamentos de Robótica. Guía4
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 Variables de salida del Robot
M_IN(0) M_OUT(0)
M_IN(1) M_OUT(1)
… …
M_IN(N) 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:
Estado reservado a
ella.
Variable de
Salida:
Estado reservado a
ella.
M_IN(0) Stop M_OUT(0) Running
M_IN(1) Servo Off M_OUT(1) Servo On
M_IN(2) Error Reset M_OUT(4) Abrir Pinza
M_IN(3) Start M_OUT(5) Cerrar Pinza
M_IN(4) Servo On
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 2018
14
Fundamentos de Robótica. Guía4
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 2018
15
Fundamentos de Robótica. Guía4
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 - 4 *
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 2018
16
Fundamentos de Robótica. Guía4
280 OVRD 30 ' Velocidad al 30%
285 SPD 1000 ' Velocidad al 1000 mm/s
290 MVS P9 ' Movimiento recto interpolado a la posición P9
300 HOPEN 1 ' Abrir Pinza
310 DLY 0.5 ' Espera de 0,5 segundos
320 MOV P9 + OFFSET ' Movimiento no interpolado a la posición resultante de la suma de coordenadas
330 OVRD 90 ' Velocidad al 90%
340 MOV P2, -60 ' Movimiento no interpolado a una posición alejada 60mm de la posición P2
350 M9=M9+1 ' Incrementa el valor de la variable entera M9
360 WEND ' Fin del bucle
370 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 2018
17
Fundamentos de Robótica. Guía4
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 2018
18
Fundamentos de Robótica. Guía4
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 - 4 *
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 2018
19
Fundamentos de Robótica. Guía4
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 2018
20
Fundamentos de Robótica. Guía4
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 2018
21
Fundamentos de Robótica. Guía4
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 - 4 *
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 2018
22
Fundamentos de Robótica. Guía4
260 DLY 0.5 ' Espera de 0.5 segundos
270 MOV P2 + OFFSET ' Movimiento interpolado a la suma de coordenadas de P2 y OFFSET
280 OVRD RAPIDO ' Velocidad al 50%
290 MOV P3 ' Movimiento no interpolado a la posición P3
300 *INI ' Etiqueta
310 OPCION = 0 ' Inicialización de la variable OPCION
320 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 2018
23
Fundamentos de Robótica. Guía4
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 2018
24
Fundamentos de Robótica. Guía4
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.
1. Investigue las instrucciones del lenguaje Melfa Basic IV para el manejo de interrupciones y para la
comunicación del robot Mitsubishi.
 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.
Investigación Complementaria
Bibliografía
Análisis de resultado
Propiedad de la Universidad Don Bosco Prohibida su reproducción total o parcial para otros fines 2018
25
Fundamentos de Robótica. Guía4
Hoja de cotejo: 4
Guía 4: Programación del Robot Mitsubishi. Parte II.
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 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.
APLICACIÓN DEL
CONOCIMIENTO
20%
25%
25%
No creó los objetos
virtuales de la parte I
de la guía de
laboratorio.
No realizó la parte II
de la guía de
laboratorio.
No realizó la parte
III de la guía de
laboratorio.
Necesitó la ayuda
del docente de
laboratorio
Necesitó la ayuda
del docente de
laboratorio
Necesitó la ayuda
del docente de
laboratorio
Creó los objetos
virtuales de la parte I
de la guía de
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.
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
TOTAL 100%

Más contenido relacionado

Similar a guia-4.pdf

Microcontroladores AVR y Arduino: Programación del microatmega328p en ensambl...
Microcontroladores AVR y Arduino: Programación del microatmega328p en ensambl...Microcontroladores AVR y Arduino: Programación del microatmega328p en ensambl...
Microcontroladores AVR y Arduino: Programación del microatmega328p en ensambl...SANTIAGO PABLO ALBERTO
 
5.2 instruccion switch
5.2  instruccion switch5.2  instruccion switch
5.2 instruccion switchSNPP
 
Recurso Educativo Lenguaje de Programaciòn C++
Recurso Educativo Lenguaje de Programaciòn C++Recurso Educativo Lenguaje de Programaciòn C++
Recurso Educativo Lenguaje de Programaciòn C++apohlo
 
Clase 1 Visual Basic_progr..pdf
Clase 1 Visual Basic_progr..pdfClase 1 Visual Basic_progr..pdf
Clase 1 Visual Basic_progr..pdfDanielAlcalde3
 
PROGRAMACION EN LENGUAJE EMSAMBLADOR
PROGRAMACION EN LENGUAJE EMSAMBLADORPROGRAMACION EN LENGUAJE EMSAMBLADOR
PROGRAMACION EN LENGUAJE EMSAMBLADORSistemadeEstudiosMed
 
Unidad 2
Unidad 2Unidad 2
Unidad 2UTP, TA
 
Js control de flujo
Js control de flujoJs control de flujo
Js control de flujoFERNANDOZ9
 
Manual Bloques Llwin 3. Robotica
Manual Bloques Llwin 3. RoboticaManual Bloques Llwin 3. Robotica
Manual Bloques Llwin 3. RoboticaJavier Teran
 
Tutorial proton part 3
Tutorial proton part 3Tutorial proton part 3
Tutorial proton part 3dar851112
 
Sistemas digitales combinacionales - ejercicios
Sistemas digitales combinacionales - ejerciciosSistemas digitales combinacionales - ejercicios
Sistemas digitales combinacionales - ejerciciosFrancesc Perez
 
Programacion matlab
Programacion matlabProgramacion matlab
Programacion matlabMarc Llanos
 

Similar a guia-4.pdf (20)

Manual
ManualManual
Manual
 
GRAFCET [Autoguardado].pptx
GRAFCET [Autoguardado].pptxGRAFCET [Autoguardado].pptx
GRAFCET [Autoguardado].pptx
 
Microcontroladores AVR y Arduino: Programación del microatmega328p en ensambl...
Microcontroladores AVR y Arduino: Programación del microatmega328p en ensambl...Microcontroladores AVR y Arduino: Programación del microatmega328p en ensambl...
Microcontroladores AVR y Arduino: Programación del microatmega328p en ensambl...
 
5.2 instruccion switch
5.2  instruccion switch5.2  instruccion switch
5.2 instruccion switch
 
Recurso Educativo Lenguaje de Programaciòn C++
Recurso Educativo Lenguaje de Programaciòn C++Recurso Educativo Lenguaje de Programaciòn C++
Recurso Educativo Lenguaje de Programaciòn C++
 
Lenze configuración jm
Lenze configuración jmLenze configuración jm
Lenze configuración jm
 
Clase 1 Visual Basic_progr..pdf
Clase 1 Visual Basic_progr..pdfClase 1 Visual Basic_progr..pdf
Clase 1 Visual Basic_progr..pdf
 
Teoria
TeoriaTeoria
Teoria
 
1 Entorno
1 Entorno1 Entorno
1 Entorno
 
PROGRAMACION EN LENGUAJE EMSAMBLADOR
PROGRAMACION EN LENGUAJE EMSAMBLADORPROGRAMACION EN LENGUAJE EMSAMBLADOR
PROGRAMACION EN LENGUAJE EMSAMBLADOR
 
Unidad II
Unidad IIUnidad II
Unidad II
 
Unidad 2
Unidad 2Unidad 2
Unidad 2
 
Js control de flujo
Js control de flujoJs control de flujo
Js control de flujo
 
Manual Bloques Llwin 3. Robotica
Manual Bloques Llwin 3. RoboticaManual Bloques Llwin 3. Robotica
Manual Bloques Llwin 3. Robotica
 
Thermof3
Thermof3Thermof3
Thermof3
 
Mathlab tutorial
Mathlab tutorialMathlab tutorial
Mathlab tutorial
 
Graficas con Matlab
Graficas con Matlab Graficas con Matlab
Graficas con Matlab
 
Tutorial proton part 3
Tutorial proton part 3Tutorial proton part 3
Tutorial proton part 3
 
Sistemas digitales combinacionales - ejercicios
Sistemas digitales combinacionales - ejerciciosSistemas digitales combinacionales - ejercicios
Sistemas digitales combinacionales - ejercicios
 
Programacion matlab
Programacion matlabProgramacion matlab
Programacion matlab
 

guia-4.pdf

  • 1. Propiedad de la Universidad Don Bosco Prohibida su reproducción total o parcial para otros fines 2018 1 Fundamentos de Robótica. Guía 4 Tema: Programación del Robot Mitsubishi. Parte II. Tiempo de ejecución: 2 horas. Programar de forma intermedia un robot industrial del laboratorio. • 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. 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. 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. Edificio 3. Primera planta.
  • 2. Propiedad de la Universidad Don Bosco Prohibida su reproducción total o parcial para otros fines 2018 2 Fundamentos de Robótica. Guía4 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……. 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).
  • 3. Propiedad de la Universidad Don Bosco Prohibida su reproducción total o parcial para otros fines 2018 3 Fundamentos de Robótica. Guía4 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.
  • 4. Propiedad de la Universidad Don Bosco Prohibida su reproducción total o parcial para otros fines 2018 4 Fundamentos de Robótica. Guía4 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.
  • 5. Propiedad de la Universidad Don Bosco Prohibida su reproducción total o parcial para otros fines 2018 5 Fundamentos de Robótica. Guía4 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......... Selecciona el valor de la variable M1 para compararlo en las siguientes instrucciones. CASE 5............... Si el valor es 5, ejecuta solo entre esta y el siguiente “CASE”. CASE IS 9........... Si el valor es 9, ejecuta solo entre esta y el siguiente “CASE”. CASE IS 3........ Si el valor es menor que 3, ejecuta solo entre esta y el siguiente “CASE”. CASE 6 TO 9....... Si el valor esta entre 6 y 9, ejecuta solo entre esta y el siguiente “CASE”. DEFAULT............ Si el valor no se ajusta a ninguna de las condiciones anteriores, ejecuta solo entre DEFAULTy el próximo ENDSELECT. END SELECT....... 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....... Llama la subrutina de la 300. GOSUB *GET..... 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.
  • 6. Propiedad de la Universidad Don Bosco Prohibida su reproducción total o parcial para otros fines 2018 6 Fundamentos de Robótica. Guía4 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 variable M1 sale del rango [1..10]. WEND 1 Computadora personal o portátil con Windows. 1 Software CIROS Robotics 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 Procedimiento Materiales y equipos
  • 7. Propiedad de la Universidad Don Bosco Prohibida su reproducción total o parcial para otros fines 2018 7 Fundamentos de Robótica. Guía4 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. Figura 7. Adición de una caja al ambiente virtual. Presione el botón Close. 6. Regrese a la ventana de Model Explorer. En el Explorador del modelo ubíquese en Objects. 7. Dentro de los objetos dé clic derecho a BOX y en el menú que se despliega escoja properties. 8. 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. 9. 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.
  • 8. Propiedad de la Universidad Don Bosco Prohibida su reproducción total o parcial para otros fines 2018 8 Fundamentos de Robótica. Guía4 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.
  • 9. Propiedad de la Universidad Don Bosco Prohibida su reproducción total o parcial para otros fines 2018 9 Fundamentos de Robótica. Guía4 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.
  • 10. Propiedad de la Universidad Don Bosco Prohibida su reproducción total o parcial para otros fines 2018 10 Fundamentos de Robótica. Guía4 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.
  • 11. Propiedad de la Universidad Don Bosco Prohibida su reproducción total o parcial para otros fines 2018 11 Fundamentos de Robótica. Guía4 • 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
  • 12. Propiedad de la Universidad Don Bosco Prohibida su reproducción total o parcial para otros fines 2018 12 Fundamentos de Robótica. Guía4 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
  • 13. Propiedad de la Universidad Don Bosco Prohibida su reproducción total o parcial para otros fines 2018 13 Fundamentos de Robótica. Guía4 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 Variables de salida del Robot M_IN(0) M_OUT(0) M_IN(1) M_OUT(1) … … M_IN(N) 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: Estado reservado a ella. Variable de Salida: Estado reservado a ella. M_IN(0) Stop M_OUT(0) Running M_IN(1) Servo Off M_OUT(1) Servo On M_IN(2) Error Reset M_OUT(4) Abrir Pinza M_IN(3) Start M_OUT(5) Cerrar Pinza M_IN(4) Servo On 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
  • 14. Propiedad de la Universidad Don Bosco Prohibida su reproducción total o parcial para otros fines 2018 14 Fundamentos de Robótica. Guía4 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
  • 15. Propiedad de la Universidad Don Bosco Prohibida su reproducción total o parcial para otros fines 2018 15 Fundamentos de Robótica. Guía4 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 - 4 * 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
  • 16. Propiedad de la Universidad Don Bosco Prohibida su reproducción total o parcial para otros fines 2018 16 Fundamentos de Robótica. Guía4 280 OVRD 30 ' Velocidad al 30% 285 SPD 1000 ' Velocidad al 1000 mm/s 290 MVS P9 ' Movimiento recto interpolado a la posición P9 300 HOPEN 1 ' Abrir Pinza 310 DLY 0.5 ' Espera de 0,5 segundos 320 MOV P9 + OFFSET ' Movimiento no interpolado a la posición resultante de la suma de coordenadas 330 OVRD 90 ' Velocidad al 90% 340 MOV P2, -60 ' Movimiento no interpolado a una posición alejada 60mm de la posición P2 350 M9=M9+1 ' Incrementa el valor de la variable entera M9 360 WEND ' Fin del bucle 370 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é.
  • 17. Propiedad de la Universidad Don Bosco Prohibida su reproducción total o parcial para otros fines 2018 17 Fundamentos de Robótica. Guía4 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:
  • 18. Propiedad de la Universidad Don Bosco Prohibida su reproducción total o parcial para otros fines 2018 18 Fundamentos de Robótica. Guía4 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 - 4 * 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.
  • 19. Propiedad de la Universidad Don Bosco Prohibida su reproducción total o parcial para otros fines 2018 19 Fundamentos de Robótica. Guía4 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.
  • 20. Propiedad de la Universidad Don Bosco Prohibida su reproducción total o parcial para otros fines 2018 20 Fundamentos de Robótica. Guía4 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
  • 21. Propiedad de la Universidad Don Bosco Prohibida su reproducción total o parcial para otros fines 2018 21 Fundamentos de Robótica. Guía4 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 - 4 * 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
  • 22. Propiedad de la Universidad Don Bosco Prohibida su reproducción total o parcial para otros fines 2018 22 Fundamentos de Robótica. Guía4 260 DLY 0.5 ' Espera de 0.5 segundos 270 MOV P2 + OFFSET ' Movimiento interpolado a la suma de coordenadas de P2 y OFFSET 280 OVRD RAPIDO ' Velocidad al 50% 290 MOV P3 ' Movimiento no interpolado a la posición P3 300 *INI ' Etiqueta 310 OPCION = 0 ' Inicialización de la variable OPCION 320 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
  • 23. Propiedad de la Universidad Don Bosco Prohibida su reproducción total o parcial para otros fines 2018 23 Fundamentos de Robótica. Guía4 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.
  • 24. Propiedad de la Universidad Don Bosco Prohibida su reproducción total o parcial para otros fines 2018 24 Fundamentos de Robótica. Guía4 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. 1. Investigue las instrucciones del lenguaje Melfa Basic IV para el manejo de interrupciones y para la comunicación del robot Mitsubishi. 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. Investigación Complementaria Bibliografía Análisis de resultado
  • 25. Propiedad de la Universidad Don Bosco Prohibida su reproducción total o parcial para otros fines 2018 25 Fundamentos de Robótica. Guía4 Hoja de cotejo: 4 Guía 4: Programación del Robot Mitsubishi. Parte II. 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 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. APLICACIÓN DEL CONOCIMIENTO 20% 25% 25% No creó los objetos virtuales de la parte I de la guía de laboratorio. No realizó la parte II de la guía de laboratorio. No realizó la parte III de la guía de laboratorio. Necesitó la ayuda del docente de laboratorio Necesitó la ayuda del docente de laboratorio Necesitó la ayuda del docente de laboratorio Creó los objetos virtuales de la parte I de la guía de 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. 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 TOTAL 100%