Академический Документы
Профессиональный Документы
Культура Документы
Nº de artículo:
Descripción: Manual de Prácticas para el brazo robot RV-2AJ
Fecha: 03/2005
Autor: Juan Olea Pastor
©Festo Didactic 2
INDICE :
1 INTRODUCCIÓN ...........................................................................6
OBJETIVOS DEL CURSO ............................................................................6
SEGURIDAD .............................................................................................6
GARANTÍAS Y RESPONSABILIDADES ........................................................7
2 INTRODUCCIÓN A LA ROBÓTICA ....................................8
HISTORIA .................................................................................................8
¿QUÉ ES UN ROBOT? ................................................................................9
3 CARACTERISTICAS RV-2AJ ................................................10
ESTRUCTURA DE UN ROBOT INDUSTRIAL ...............................................10
PARTES DEL BRAZO ROBOT Y PERIFÉRICOS ............................................11
RESUMEN DE CARACTERÍSTICAS ............................................................12
CARACTERÍSTICAS DEL BRAZO ROBOT ...................................................13
CARACTERÍSTICAS DEL CONTROLADOR .................................................14
MANTENIMIENTO ..................................................................................15
4 INTRODUCCIÓN AL COSIROP ...........................................16
CREACIÓN DE UN PROYECTO NUEVO EN COSIROP ...............................16
ICONOS DE LA BARRA DE HERRAMIENTAS DE COSIROP .......................19
TEACH DE LAS POSICONES DESDE EL COSIROP ....................................20
CARGA Y EJECUCIÓN DEL PROGRAMA EN EL BRAZO ROBOT ...................25
OPCIONES DE MONITORIZACIÓN ............................................................27
5 ESTRUCTURA DE LA PROGRAMACIÓN ......................29
ESTRUCTURA DEL PROGRAMA ...............................................................29
LÍNEAS DE INSTRUCCIÓN .......................................................................32
TIPOS DE VARIABLES .............................................................................33
6 INSTRUCCIONES BÁSICAS ..................................................34
INTRODUCCIÓN ......................................................................................34
MOV.....................................................................................................34
MVS .....................................................................................................35
HOPEN / HCLOSE ..............................................................................36
OVDR...................................................................................................36
SPD.......................................................................................................36
DLY ......................................................................................................36
PRÁCTICA 1 INSTRUCCIONES BÁSICAS ................................................37
7 INSTRUCCIONES DE MOVIMIENTO ..............................40
MVR .....................................................................................................40
CNT ......................................................................................................41
©Festo Didactic 3
ACCEL .................................................................................................41
JOVDR .................................................................................................41
HLT ......................................................................................................42
FINE .....................................................................................................42
TOOL ...................................................................................................42
PRÁCTICA 2 MOVIMIENTOS CIRCULARES ...........................................43
8 SEÑALES DE ENTRADA / SALIDA ....................................45
DEF I/O ................................................................................................45
WAIT....................................................................................................46
PRÁCTICA 3 MOVIMIENTO CONTINUO ................................................47
9 PALETIZACIÓN...........................................................................49
INTRODUCCIÓN ......................................................................................49
DEF PLT ..............................................................................................49
PLT .......................................................................................................50
PRÁCTICA 4 PALETIZACIÓN ................................................................51
10 SALTOS CONDICIONALES Y BUCLES ........................53
GOTO ...................................................................................................53
ON GOTO ............................................................................................53
IF THEN ELSE ....................................................................................53
SELECT CASE ....................................................................................54
GOSUB.................................................................................................54
RETURN ..............................................................................................54
ON GOSUB..........................................................................................54
FOR NEXT...........................................................................................55
WHILE WEND ....................................................................................55
PRÁCTICA 5 SUBRUTINAS ...................................................................56
11 INTERRUPCIONES ..................................................................58
DEF ACT..............................................................................................58
ACT ......................................................................................................58
RETURN ..............................................................................................58
PRÁCTICA 6 INTERRUPCIONES (GENERAL)..........................................59
12 COMUNICACIONES ................................................................61
OPEN....................................................................................................61
CLOSE .................................................................................................61
PRINT #................................................................................................61
INPUT # ...............................................................................................62
ON COM GOSUB................................................................................62
COM ON ..............................................................................................62
COM OFF.............................................................................................62
COM STOP ..........................................................................................63
CALLP .................................................................................................63
©Festo Didactic 4
FPRM ...................................................................................................63
CLR ......................................................................................................63
EJEMPLO DE APLICACIÓN VISIÓN ARTIFICIAL .....................................64
13 APENDICE ....................................................................................65
SOLUCIÓN PRÁCTICA 1 ..........................................................................66
SOLUCIÓN PRÁCTICA 2 ..........................................................................67
SOLUCIÓN PRÁCTICA 3 ..........................................................................68
SOLUCIÓN PRÁCTICA 4 ..........................................................................69
SOLUCIÓN PRÁCTICA 5 ..........................................................................70
SOLUCIÓN PRÁCTICA 6 ..........................................................................73
©Festo Didactic 5
1 INTRODUCCIÓN
Este manual pretende ser una guía de ayuda con la información necesaria para
ayudar a los asistentes del curso de Introducción a la Robótica, como unas
directrices a seguir en la consecución y realización de los problemas que se pueden
plantear en la realización de las prácticas.
Introducirá al lector con una cierta formación técnica, en los aspectos relacionados
con la robótica, presentando de manera sencilla las diferentes características que
componen las diferentes tecnologías de un robot industrial (mecánica, electrónica,
control y programación) centrando estas especificaciones en el modelo utilizado en
las prácticas.
Seguridad
- Recomendaciones :
Cualquier persona que trabaje con el robot industrial, debe observar con especial
atención las recomendaciones de seguridad.
Estén familiarizadas con las normas básicas relacionadas con la seguridad operativa
y prevención de accidentes.
Hayan recibido instrucciones en el manejo del Sistema Modular de Producción.
Estén medianamente habituados en trabajar con seguridad.
- A tener en cuenta :
General
Los alumnos sólo deben trabajar con el robot bajo la supervisión de un instructor.
Observar los datos de los componentes individuales de las fichas técnicas.
Posicionamiento
En el posicionamiento hay que tener especial atención con las colisiones que se
pueden producir con otros elementos o personas que pueden producir lesiones
graves en las personas y en el brazo robot.
Manipulación
©Festo Didactic 6
Antes de la ejecución del programa del programa habrá que retirar previamente
elementos que no estén especificados en la concepción este con el fin de evitar
colisiones en la ejecución de las secuencias de movimiento.
Electricidad
Las conexiones eléctricas deben establecerse y desconectarse sólo cuando la
tensión principal esté cortada
Utilizar sólo bajas tensiones de hasta 24 V DC.
Mecánica
No intervenir manualmente a no ser que la máquina se halle parada.
El Sistema Modular de Producción está diseñado según los últimos avances en esta
tecnología y cumple con reconocidas normas de seguridad. Sin embargo, al utilizar el
sistema puede haber un riesgo de ocasionar daños físicos o lesiones al usuario o a
terceras partes, o de causar daños a la máquina o a otros bienes materiales.
Garantías y responsabilidades
©Festo Didactic 7
2 INTRODUCCIÓN A LA ROBÓTICA
Historia
©Festo Didactic 8
¿Qué es un robot?
Según el Instituto Norteamericano de Robótica es " un manipulador multifuncional y
reprogramable, diseñado para mover materiales, piezas, herramientas o dispositivos
especiales, mediante movimientos programados y variables que permiten llevar a
cabo diversas tareas".
Aunque hay tal variedad de robots que es muy difícil concretar unos elementos
comunes a todos, lo cierto es que la mayoría dispone de un esqueleto o chasis, que
puede ser interno o externo, motores, piezas que permiten su movilidad, sistemas de
agarre y manipulación y una fuente de alimentación, normalmente eléctrica.
©Festo Didactic 9
3 CARACTERISTICAS RV-2AJ
Perturbación
Velocidad
Posición
Par
Consigna 1 1
Controlador Motor
Jt S S
Encoder
Los controladores y los ordenadores asociados también pueden procesar los datos
recogidos por cámaras que localizan los objetos que se van a agarrar o las
informaciones de censores situados en las pinzas que regulan la fuerza de agarre.
©Festo Didactic 10
Partes del brazo robot y periféricos
La unidad de control del brazo robot se puede ampliar para poder interconectar
mediante buses de comunicación o entras y salidas a otros elementos y
herramientas que comporten la célula de fabricación.
RV-2AJ (5 ejes)
Interfase
CC-Link
Estructura básica
Expansión
Interfase serie
Cable programación
Visión Artificial
Consola
Software
programación
Ordenador
©Festo Didactic 11
Resumen de características
CARACTERÍSTICA ESPECIFICACIÓN
Grados de libertad 5
Carga máxima 2 kg
Repetitividad 0,02 mm
Velocidad máxima 2100 mm/s
Alcance de la pinza 482 mm
Alcance desde Q, en mm A 410, B 285
Alcance desde Q, en mm C 190, D 300
Alcance desde Q, en grados E 150
Alcance desde Q, en mm R1 220, R2 410
©Festo Didactic 12
Características del brazo robot
©Festo Didactic 13
Características del controlador
CARACTERÍSTICA UNIDAD ESPECIFICACIÓN Observaciones
Modelo - CR1-571
Número de ejes a controlar - 6 a la vez (max.)
CPU - 64 bit RISC, DSP
Posiciones de
punto 2500
Capacidad enseñanza y
paso 5000
de número de pasos
memoria Número de
- 88
programas
MELFA-BASIC IV
Lenguaje de programación - Movemaster
Command
Método enseñanza de posición - Método MDI
Entradas y salida punto 16/16 Max. 240/240
Asignado con E/S de STOP 1 punto
E/S dedicadas punto
uso general fijado
E/S de Se pueden añadir
Entradas y Entradas 4 puntos/
abrir/cerrar la punto hasta 4 puntos de
salidas Salidas 0 puntos
mano salida
externas
Entrada de paro Solo una línea de
punto 1
de emergencia emergencia
Ent. interruptor Solo una línea de
punto 1
de puerta interruptor puerta
RS-232C puerto 1
RS-422 puerto 1 Dedicada para T/B
Dedicada para
Ranura para la
slot 1 interfaz de mano
mano
Interfaz neumática
Ranura de Caja opción
slot 3
expansión extensión usada
Conexión de E/S 240 usados con
canal 1
del robot E/S de uso general
1 fase, AC, 90 a 132V
Rango del voltaje V
1 fase, AC, 170 a 253V
Fuente de
No incluye la
alimentación
Potencia máxima kVA 0.7 sobrecorriente de
arranque
Dimensiones de contorno mm 212x290x151 Excepto salientes
Peso kg Aprox. 8
Construcción - Autónomo y abierto IP20
Rango de temperaturas ºC De 0 a 40
Humedad ambiente %RH De 45 s 85 Sin condensación
Toma de tierra 100 o menos Classe D
Color - Gris claro Munsell7.65Y7.64
©Festo Didactic 14
Mantenimiento
- Piezas consumibles :
- Piezas de repuesto :
LUGAR DE
Nº PIEZA TIPO CANT. SUMINISTRADOR
USO
1 291-3GT-6 Eje J2 1
2 315-3GT-6 Eje J3 1
Correa dentada
3 210-2GT-3 ¿J4?? 1
4 230-2GT-3 Eje J4 1
5 BU220C795G51 Eje J1 1
6 BU220C795G52 Eje J2 1
7 BU220C795G53 Eje J3 1 Mitsubischi Electric
Servo motor AC
8 BU220C793G54 ¿J4?? 1
9 BU220C793G65 Eje J4 1
10 BU220C794G51 Eje J5 1
11 BKO-FA0530H09 Ejes J1, J2, J3 3
Engranajes
12 BKO-FA0530H10 ¿J4?? 1
reductores
13 BKO-FA0530H10 Ejes J4, J5 2
©Festo Didactic 15
4 INTRODUCCIÓN AL COSIROP
Este capitulo trata de definir los pasos necesarios para realizar un proyecto con el
software COSIROP.
©Festo Didactic 16
Aparecerá una ventana flotante llamada Project Wizard Step 1 of 3 donde se
definirá la información general del proyecto. En los siguiente campos:
Será necesario rellenar los campos de Project Name con el nombre que se desea
poner al proyecto y en el Program name se pondrá el nombre del programa.(Nota:
Dentro del mismo proyecto se pueden crear diferentes programas y lista de
posiciones).
Una vez rellenados los campos hacer clic sobre el botón Next que se encuentra en
la parte inferior derecha de la ventana.
©Festo Didactic 17
En la lista Robot Type se especificará el modelo de robot del que se va a realizar la
práctica.
Una vez realizada la configuración del robot necesaria para el proyecto, se hará de
nuevo clic en el botón Next para pasar a la siguiente ventana .
©Festo Didactic 18
Ventana de animación
Ventana de programación
Ventana de posiciones
Ventana de mensajes
Renumber Download Program Robot Position -> PC Current Error Jog Operation I/O Monitor
Conenection
Syntax Check Upload Download Reset Error Init Connection Monitor Functions Monitor toolbar
Conenection Functions Functions
Ahora se tratará de manera precisa una breve explicación de los iconos principales
más utilizados, que posteriormente serán tratados de manera más concisa en las
diferentes secuencias para la programación del brazo robot con dicho software.
©Festo Didactic 19
Renumber: Renombra las líneas de código del programa.
Check Syntax: Compila y comprueba que el programa no tenga errores.
Download Program: Carga programa en la controladora del robot.
Upload Program: Descarga los programas desde el robot
Robot Position > PC: Carga la posición actual de robot en la lista de
posiciones
Reset Error: Resetea el error
Current Error: Diagnostica el error producido
Init Connection: Inicia la conexión entre el PC -Robot
Jog Operation: Entra en la opción del Teach de posiciones.
Monitor Funtions: Permite cargar directamente instrucciones en el robot y
ejecutarlas
I/O Monitor: Monitoriza el estado de las entradas y salidas del robot.
Monitor toolbar: Llama a la barra de monitorización.
Una vez creado el programa y definido las posiciones fijas que se necesitan en la
secuencia del mismo. Será necesario enseñar (teach) al robot en el espacio de
trabajo real cuales son estas posiciones de trabajo que se han definido en la
secuencia del programa.
Se tiene que tener claro que para la definición de dichas posiciones, Estas deben
estar dentro del área de trabajo del robot y que los ejes no están trabajando en zona
crítica.
Los pasos a seguir para poder mover el brazo robot desde el ordenador y las
diferentes formas de movimientos se explican en los pasos siguientes:
©Festo Didactic 20
Una vez conectado encender la controladora apretando el botón Power , esperar
unos segundos hasta que haya finalizado la secuencia de inicio.
Para poder controlar el robot desde el PC se debe poner el selector con llave que se
encuentra en la parte izquierda del frontal de la controladora en el modo Auto Ext.
y el selector con llave de la consola en la posición Disable deshabilitando así este
método de control.
Ahora el sistema estará preparado para ser controlado y movido a través del PC.
Para controlar y mover el robot para hacer el teach de las posiciones, primero se
tendrá que establecer la comunicación vía serie. Dentro del COSIROP se irá al menú
contextual desplegable de opciones y se hará clic en la opción
Extras/ Settings/ Communication Port .
©Festo Didactic 21
En la pestaña Serial interface comprobar que el puerto de comunicación del PC, así
como las propiedades de envío de la trama son las indicadas.
Nota: El número de puerto serie COM debe ser el mismo que esté definido en el
sistema operativo, sino dará error de comunicación.
©Festo Didactic 22
Aparecerá la siguiente ventana que permite controlar los movimientos del brazo
robot desde el PC.
Abrir/Cerrar Pinza
Método de movimiento
ATENCIÓN
En este punto hay que hacer especial hincapié en realizar los
movimientos con especial atención con el fin de evitar colisiones y
malos posicionados, que puedan causar daños mecánicos o un mal
funcionamiento en este.
XYZ Tool: Con esta opción el brazo robot se moverá respeto al eje de
coordenadas situado en el centro la herramienta (En este caso la pinza).
©Festo Didactic 23
Nota: Con la opción Joint Jog el aspecto de la ventana de movimiento será el de
la figura. La única diferencia remarcable es que los movimientos se
realizarán individualmente para cada articulación del brazo robot y el
incremento se dará en grados.
Con el botón Set Joint Coordinates... pasará a una ventana en la que el usuario
puede escribir en cada campo un valor y el robot se dirigirá a dicha posición cargada
manualmente.
Una vez se tenga la posición deseada con el botón Current position > Pos. List
cargar la posición actual del robot en la lista de posiciones con el número
especificado.
©Festo Didactic 24
Carga y ejecución del programa en el brazo robot
Una vez finalizado el programa, se tendrá que comprobar que la numeración de las
líneas es correcta y que haciendo cambios y correcciones dentro del programa no se
haya duplicado algún número de línea, para solucionar este problema en la barra de
icono de la ventana principal hacer clic sobre el icono Renumber , teniendo la
ventana de programa seleccionada, esta opción renombra automáticamente las
líneas de código del programa correctamente.
Otra opción que comprueba que la sintaxis del programa creado es correcta es
Check Syntax que compilará el programa y especificará en la ventana de mensajes
si existe algún error y en que línea del programa se encuentra.
Seleccionar la ventana del programa y hacer clic sobre el icono Download PC >
Robot o la ruta Execute/Download PC > Robot .
©Festo Didactic 25
Aparecerá la ventana flotante Line and Position number donde se especificará la
línea de inicio y final del programa que se desean que se cargue en la controladora.
También se especificará el nombre como se quiere cargar dicho programa en la
controladora. Al hacer clic en el botón OK comenzará la descarga del programa a la
controladora. Una vez finalizada la descarga repetir la operación con el listado de
posiciones.
©Festo Didactic 26
Opciones de monitorización
Voltage
Program Monitor
Variables Monitor
Position Monitor Droop Load Current 2
Motor Speed: Con esta opción se puede observar las velocidades de los
diferentes servomotores en cada uno de los movimientos del programa
mientras se ejecuta.
©Festo Didactic 27
Current 1: Monitoriza de manera gráfica la relación entre la medida actual de
corriente del lazo de corriente 2 del motor y el valor máximo en cada eje.
Con esta opción Command Tool que se encuentra la barra de iconos del programa
principal se puede enviar al robot directamente instrucciones que cuando se envían
y se ejecutan directamente por este, tal y como se muestra en la figura.
Tipos de instrucción
Edición de la
instrucción
Instrucciones
Envía al robot
©Festo Didactic 28
5 ESTRUCTURA DE LA PROGRAMACIÓN
Para relacionar los diferentes archivos en un proyecto, para que la compilación sea
correcta. Se deben seguir los pasos siguientes:
©Festo Didactic 29
2.- aparecerá la ventana flotante que nos permite gestionar los diferentes
archivos del proyecto.
Compilar Proyecto
Activar Proyecto
Añadir Proyecto
Borrar Proyecto
Proyecto Activo
©Festo Didactic 30
6.- Cuando se tenga el archivo del programa seleccionado, en la parte
inferior Properties en la opción Compile Mode elegir Main Program lo
que asociará ese archivo *.MB4 como programa principal del proyecto.
Comentarios
Definición de posiciones
Definición de I/O
externas
Definición de variables
internas
©Festo Didactic 31
Programa principal
Etiqueta
Llamada a Subrutina
1) Salto
2) a3)
línea 4)
Inicio
Sub
Subrutina
Final
Sub
Líneas de instrucción
Dato El dato puede ser un valor o una variable del tipo requerido por la
instrucción.
©Festo Didactic 32
Tipos de variables
Variable de control de
Variable de
VARIABLE Variable de control de
Variable de
©Festo Didactic 33
6 INSTRUCCIONES BÁSICAS
Introducción
Movimiento Interpolado
MOV
El robot se mueve a la posición indicada con una interpolación angular de cada eje.
El camino recorrido no se puede prever. Se pueden introducir las declaraciones
añadidas WTH o WTHIF.
©Festo Didactic 34
P1
Programa ejemplo:
10 MOV P1
20 MOV P2, -50
30 MOV P2
40 END 50 P2
Movimiento lineal
El Robot describe una línea recta entre los puntos origen y destino.
MVS
El robot se mueve en línea recta hacia la posición indicada. Se pueden introducir las
declaraciones añadidas WTH o WTHIF.
©Festo Didactic 35
Programa ejemplo:
10 MVS P1 P1
20 MVS P2, -50
30 MVS P2
40 END P2
50
HOPEN / HCLOSE
OVDR
SPD
DLY
Espera los segundos indicados (el mínimo es 0.05), y luego sigue con el programa.
©Festo Didactic 36
Práctica 1 Instrucciones básicas
Anunciado:
Realizar un programa para que el brazo industrial recoja una pieza en un punto de
recogida y la deposite en otro punto. Las aproximaciones a estos dos puntos debe
hacerse suavemente (más despacio).
P1
9
P2
P4
P3
P5
Realización:
Primero hay que definir las posiciones clave del movimiento, que en este caso serán
cinco:
Para definir las posiciones se utilizará la opción 'Jog Operation' que se encuentra en
el menú 'Execute'.
©Festo Didactic 37
Existen 3 maneras de moverlo desde esta ventana:
Para definir las posiciones se sitúa el brazo en la posición deseada y se guarda con el
botón 'Current Position > Pos. List'. El programa crea una nueva posición en el
listado de posiciones y le pone el nombre Px, donde x es el numero de posición que
aparece en la ventana anterior. Desde el listado de posiciones podemos cambiar las
propiedades de las posiciones.
Una vez se tienen las posiciones definidas, empezar a programar; para este ejercicio
se utilizaran las siguientes instrucciones:
- MOV > Realiza un movimiento suave, interpolando los ejes punto a punto.
- OVRD > Porcentaje de la velocidad máxima.
- HOPEN > Abre la pinza.
- HCLOSE > Cierra la pinza.
- DLY > Espera los segundos indicados.
©Festo Didactic 38
Si no tenemos errores ya podemos volcar los dos archivos (programa y posiciones) al
robot. Lo haremos clicando en la ventana de cada archivo y pulsando en
'Download'.
Para que se ejecute el programa utilizamos la opción 'Program Start' del menú
'Execute' ; y para pararlo, 'Program Stop'.
Ampliaciones:
A) Utilizar la instrucción ampliada de MOV que permite mover hasta una distancia
determinada, por encima de una posición (en la dirección del eje Z).
MOV P9, -50...... Movimiento interpolado hasta una posición 50mm encima de la
posición P9.
MOV P9 + OFFSET
©Festo Didactic 39
7 INSTRUCCIONES DE MOVIMIENTO
MVR
MVR P1, P2, P3............... Se mueve con una interpolación circular entre P1 P2 P3.
MVR P1, P2, P3 WTH M_OUT(7)=1............ Interpolación circular entre P1 P2 P3, y
el bit 7 se activa.
MVR P1, P2, P3 WTHIF M_IN(9)=1, SKIP................ Si el bit 9 se activa durante el
movimiento, se para y sigue en el
siguiente paso.
MVR P1, P2, P3 TYPE 0, 1............. Se mueve con una interpolación circular entre
P1 P2 P3.
MVR2 P1, P2, P3............. Interpolación circular de P1 a P2, sin pasar por P3.
MVR3 P1, P3, P4............. Se mueve con una interpolación circular de P1 a P3 por el
camino más corto. El punto P4 es el centro.
MVC P6, P8, P9............... Movimiento circular P6 P8 P9 P6.
P6
P7 P8
Programa ejemplo:
©Festo Didactic 40
CNT
Programa ejemplo: P1 P2
10 MOV P1 50
20 CNT 1
30 MVS P2
40 CNT 1, 50, 100 P4
50 MVS P3
60 MVS P4
100
70 CNT 0
80 END 50 P3
ACCEL
JOVDR
JOVRD 70........... Configura la velocidad del movimiento angular de cada eje al 70%
de la máxima.
©Festo Didactic 41
HLT
FINE
TOOL
©Festo Didactic 42
Práctica 2 Movimientos circulares
Anunciado:
P1
P2
P5 P3
P4
Realización:
©Festo Didactic 43
Ampliaciones:
· Modificar el programa para que realice 3 vueltas seguidas en vez de dos. Utilizar la
instrucción CNT para que haga un movimiento continuo y no se pare entre vuelta y
vuelta (en realidad no para del todo pero el sonido cambia).
©Festo Didactic 44
8 SEÑALES DE ENTRADA / SALIDA
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).
DEF I/O
Entradas reservadas 0 (stop), 1 (Servo off), 2 (error reset), 3 (start), (4 servo on)
©Festo Didactic 45
El control de las entradas y salidas se realiza con dos vectores (array) predefinidos,
M_OUT( ) y M_IN( ).
WAIT
©Festo Didactic 46
Práctica 3 Movimiento continuo
Anunciado:
P1
P2
P3 P6
P4 P5
Realización:
©Festo Didactic 47
Las nuevas comandas que se utilizaran en el programa, son:
Las variables externas I/O se denominan M_IN(x) las de entrada, y M_OUT(x) las de
salida.
Ampliaciones:
©Festo Didactic 48
9 PALETIZACIÓN
Introducción
DEF PLT
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).
20 19 18 17 16 P3 P4 16 17 18 19 20
Tipo 1 Tipo 2
11 12 13 14 15 11 12 13 14 15
10 9 8 7 6 6 7 8 9 10
1 2 3 4 5 P1 P2 1 2 3 4 5
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).
DEF PLT 1, 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.
©Festo Didactic 49
PLT
Programa ejemplo:
50
10 DEF PLT 1, P2, P3, P4, P5, 3, 4, 2
20 MOV P1
30 HCLOSE 1 P4 P5
40 P10=(PLT 1, 4)
50 MOV P10, -50 P1
60 MVS P10
70 HOPEN 1
80 MVS P10, -50
90 P10=(PLT 1, 11)
100 MOV P10, -50
50
110 MVS P10
120 HCLOSE 1 P2 P3
130 MVS P10, -50
140 END
©Festo Didactic 50
Práctica 4 Paletización
Anunciado:
El programa ha de llenar las un palet 3x3 con las piezas disponibles. Al empezar el
robot irá a la posición de recogida, 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 palet, y luego volverá a la posición de espera de la recogida hasta que se active
la señal.
P1
P2
P5 P6
P3 P4
Realización:
- DEF PLT > Para Definir el palet. Se indican unas posiciones y la distribución.
©Festo Didactic 51
- PLT > Obtiene la posición deseada mediante un entero
- WHILE > Repite las instrucciones que hay hasta WEND , mientras las condiciones
especificadas al lado de WHILE , se cumplan.
Ampliación:
©Festo Didactic 52
10 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
ON GOTO
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, ...).
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.
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.
©Festo Didactic 53
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 SELECT CASE pasando por la
línea END CASE, ya que si sólo sale con GOTO o GOSUB , acaba parándose por
anidamiento excesivo.
GOSUB
RETURN
ON GOSUB
©Festo Didactic 54
400; y si vale 3 llama, llama la subrutina de la
500. Si el valor no corresponde, sigue en la
siguiente .
FOR NEXT
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 variable M1 vale 0, y se va
incrementando en 2 en cada repetición.
NEXT M1
WHILE WEND
WHILE (M1 >= 1)AND(M1 <= 10)............... Repite las instrucciones entre WHILE y
WEND hasta que la variable M1 sale del
rango [1..10].
WEND
©Festo Didactic 55
Práctica 5 Subrutinas
Anunciado:
Realizar un programa para que el brazo industrial coja una pieza de la zona de
recogida, 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:
P3
P1
P8
P10 P7
P9
P2
P4 1
P6 2
P5
Realización:
©Festo Didactic 56
Las nuevas instrucciones que se utilizaran en el programa, son:
©Festo Didactic 57
11 INTERRUPCIONES
Son instrucciones que al recibir o al cumplirse una condición en cualquier momento
de la ejecución del programa (no en un punto determinado) realiza una tarea
especificada y una vez finalizada vuelve al punto del programa principal donde lo
había dejado.
DEF ACT
DEF ACT 1, M_IN(7)=1 GOSUB 200............ Define con prioridad nº1, la llamada de la
subrutina de la 200 cuando la señal de
entrada M_IN(7) se activa.
DEF ACT 2, M_IN(8)=1 GOSUB 480, L.........Define con prioridad nº2, la llamada de la
subrutina de la 480 cuando la señal de
entrada M_IN(8) se activa y la instrucción
que se estaba ejecutando termina.
DEF ACT 3, M_IN(9)=1 GOSUB 330............ Define con prioridad nº3, la llamada de la
subrutina de la 330 cuando la señal de
entrada M_IN(9) se activa.
ACT
RETURN
©Festo Didactic 58
Práctica 6 Interrupciones (general)
Anunciado:
El brazo industrial debe realizar un punzado de las posiciones del palet. En cada
posición picará tantas veces como el número de la posición. A parte, tiene que haber
una interrupción que simule la cocción de un pastel. Cuando se active la señal
M_IN(10), dejará lo que hacia e irá a recoger la pieza-pastel. Luego la dejará en la
posición del horno y esperará 30 segundos antes de cogerlo y llevarlo a la posición
donde lo ha recogido. Durante los 30 segundos de la cocción, el robot seguirá con la
operación de punzado.
P1
P2
P8 P3
P4 P5
P6 P7
Realización:
©Festo Didactic 59
Las nuevas comandas que se utilizaran en el programa, son:
- DEF ACT > Define las condiciones de interrupción y el proceso para generarla.
- ACT > Habilita / deshabilita las interrupciones.
- M_TIMER(x) > Relojes de programa que podemos inicializar y consultar.
©Festo Didactic 60
12 COMUNICACIONES
Son instrucciones que gestionan la comunicación con otros elementos externos
periféricos.
OPEN
OPEN COM1: AS#1....... Abre la línea de comunicación COM1 como archivo nº1.
CLOSE
PRINT #
PRINT #1, TEST ............. Exporta los caracteres TEST al archivo nº1.
PRINT #2, M1= ; M1...... Exporta los caracteres M1= y el valor de M1 al archivo
nº2. Por ejemplo : M1=3 +CR+LF (cuando M1=3).
PRINT #3, P1................... Exporta las coordenadas de la variable posición P1 al
archivo nº3.
PRINT #1, M3, P3........... Exporta el valor de la variable M3 y las coordenadas de P3,
al archivo nº1. Los dos datos los separa con una coma.
©Festo Didactic 61
INPUT #
INPUT #1, M6..... Convierte los datos de entrada en valores y los substituye en la
variable numérica M6.
INPUT #1, P7...... Convierte los datos de entrada en valores y los substituye en la
variable de posición P7.
INPUT #1, M9, P5............. Convierte los primeros datos de entrada en valores y los
substituye en la variable numérica M9. Convierte los
siguientes datos de entrada en valores y los substituye en
la variable de posición P5.
ON COM GOSUB
Define la rutina a llamar en caso de que las líneas de comunicación generen una
interrupción. La interrupción aparece cuando entran datos de un dispositivo externo.
COM ON
COM OFF
©Festo Didactic 62
COM STOP
CALLP
FPRM
FPRM M22, P22............... Recibe las variables transferidas con la comanda CALLP .
La variable numérica será M22 en el subprograma, y la
variable de posición será P22.
CLR
©Festo Didactic 63
Ejemplo de aplicación Visión artificial
Descripción previa:
Este ejemplo muestra una aplicación en que el brazo robot usa las instrucciones de
comunicación para adquirir datos de un sistema de visión artificial con el fin de
corregir la posición donde el brazo robot tiene que ir a recoger el objeto en cuestión.
Cámera
Unidad de visión
CR1
(controlador)
Programa ejemplo:
©Festo Didactic 64
13 APENDICE
©Festo Didactic 65
Solución Práctica 1
10 '*********************FESTO DIDACTIC*********************
20 '* CURSO DE INTRODUCCIÓN A LA ROBÓTICA *
30 '* *
40 '* PRÁCTICA - 1 *
50 '* INSTRUCCIONES BÁSICAS *
60 '* Autor: Ferran *
70 '* Fecha: Febrero 2005 *
80 '* Comentarios: *
90 '* *
100 '*********************************************************
110 HOPEN 1 ' Abrir Pinza
120 MOV P1 ' Movimiento interpolado a la posición 1
130 OVRD 90 ' Velocidad al 90%
140 MOV P2 ' Movimiento interpolado a la posición 2
150 OVRD 30 ' Velocidad al 30%
160 MOV P3 ' Movimiento interpolado a la posición 3
170 HCLOSE 1 ' Cierra pinza
180 DLY 0.5 ' Espera de 0.5 segundos
190 MOV P2 ' Movimiento interpolado a la posición 2
200 OVRD 90 ' Velocidad 90%
210 MOV P4 ' Movimiento interpolado a la posición 4
220 OVRD 30 ' Velocidad al 30%
230 MOV P5 ' Movimiento interpolado a la posición 5
240 HOPEN 1 ' Abre pinza
250 MOV P4 ' Movimiento interpolado a la posición 4
260 OVRD 90 ' Velocidad 90%
270 MOV P1 ' Movimiento interpolado a la posición 1
280 DLY 3 ' Espera de 3 segundos
290 END ' Fin del programa
©Festo Didactic 66
Solución Práctica 2
10 '*********************FESTO DIDACTIC*********************
20 '* CURSO DE INTRODUCCIÓN A LA ROBÓTICA *
30 '* *
40 '* PRÁCTICA - 2 *
50 '* MOVIMIENTOS CIRCULARES *
60 '* Autor: Ferran *
70 '* Fecha: Marzo 2005 *
80 '* Comentarios: *
90 '* *
100 '*********************************************************
110 HOPEN 1 ' Abrir Pinza
120 OVRD 70 ' Velocidad al 70%
130 MOV P1 ' Movimiento interpolado a la posición P1
140 DLY 3 ' Espera de 3 segundos
150 MOV P2, -80 ' Movimiento interpolado a una posición alejada 80mm de
la posición P2
160 OVRD 30 ' Velocidad al 30%
170 MVS P2 ' Movimiento recto a la posición P2
180 HCLOSE 1 ' Cierra pinza
190 DLY 0.5 ' Espera de 0,5 segundos
200 MVS P2, -50 ' Movimiento recto a una posición alejada 50mm de la
posición P2
210 OVRD 70 ' Velocidad al 70%
220 MOV P3, -150 ' Movimiento interpolado a una posición alejada 150mm de
la posición P3
230 MOV P3 ' Movimiento interpolado a la posición P3
240 MVC P3, P4, P5 ' Movimiento circular
250 MVC P3, P4, P5 ' Movimiento circular
260 MOV P3, -150 ' Movimiento interpolado a una posición alejada
150mm de la posición P3
270 MVS P2, -80 ' Movimiento recto a una posición alejada 80mm de la
posición P2
280 OVRD 30 ' Velocidad al 30%
290 MVS P2 ' Movimiento recto a la posición P2
300 HOPEN 1 ' Abrir Pinza
310 DLY 0.5 ' Espera de 0,5 segundos
320 MVS P2, -50 ' Movimiento recto a una posición alejada 50mm de la
posición P2
330 OVRD 70 ' Velocidad al 70%
340 MOV P1 ' Movimiento interpolado a la posición P1
350 END ' Fin del programa
©Festo Didactic 67
Solución Práctica 3
10 '*********************FESTO DIDACTIC*********************
20 '* CURSO DE INTRODUCCIÓN A LA ROBÓTICA *
30 '* *
40 '* PRACTICA - 3 *
50 '* MOVIMIENTO CONTINUO *
60 '* Autor: Ferran *
70 '* Fecha: Marzo 2005 *
80 '* Comentarios: *
90 '* *
100 '*********************************************************
110 'HOPEN 1 ' Abrir Pinza
120 OVRD 80 ' Velocidad al 80%
130 MOV P1 ' Movimiento interpolado a la posición P1
140 DLY 3 ' Espera de 3 segundos
150 MOV P2, -100 ' Movimiento interpolado a una posición alejada
100mm de la posición P2
160 MVS P2 ' Movimiento recto a la posición P2
170 WAIT M_IN(10)=1 ' Espera que se active la entrada M_IN(10)
180 HCLOSE 1 ' Cierra pinza
190 DLY 3 ' Espera de 3 segundos
200 MVS P2, -100 ' Movimiento recto a una posición alejada 100mm
de la posición P2
210 MOV P1 ' Movimiento interpolado a la posición P1
220 MOV P3, -50 ' Movimiento recto a una posición alejada
50mm de la posición P3
230 OVRD 40 ' Velocidad al 40%
240 MVS P3 ' Movimiento recto a la posición P3
250 DLY 1 ' Espera de 1 segundo
260 CNT 1 ' Inicio movimiento continuo
270 MVS P4 ' Movimiento recto a la posición P4
280 'CNT 1,50,50 ' movimiento continuo
290 MVS P5 ' Movimiento recto a la posición P5
300 'CNT 1,50,50 ' movimiento continuo
310 MVS P6 ' Movimiento recto a la posición P6
320 'CNT 1,50,50 ' movimiento continuo
330 MVS P3 ' Movimiento recto a la posición P3
340 'CNT 1,50,50 ' movimiento continuo
350 MVS P5 ' Movimiento recto a la posición P5
360 CNT 0 ' Final del movimiento continuo
370 OVRD 80 ' Velocidad al 80%
380 MOV P1 ' Movimiento interpolado a la posición P1
390 HOPEN 1 ' Abre la pinza
400 HLT ' Para el programa
410 END ' Fin del programa
©Festo Didactic 68
Solución Práctica 4
10 '*********************FESTO DIDACTIC*********************
20 '* CURSO DE INTRODUCCIÓN A LA ROBÓTICA *
30 '* *
40 '* PRACTICA - 4 *
50 '* PALETIZACIÓN *
60 '* Autor: Ferran *
70 '* Fecha: Marzo 2005 *
80 '* Comentarios: *
90 '* *
100 '*********************************************************
110 DEF PLT 1, P3, P4, P5, P6, 3, 3, 2 ' Definición del palet
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 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 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 palet a la variable
de posición P9
270 MOV P9 + OFFSET ' Movimiento interpolado a la posición resultante
de la suma de coordenadas
280 OVRD 30 ' Velocidad al 30%
290 MVS P9 ' Movimiento recto a la posición P9
300 HOPEN 1 ' Abrir Pinza
310 DLY 0.5 ' Espera de 0,5 segundos
320 MOV P9 + OFFSET ' Movimiento interpolado a la posición resultante
de la suma de coordenadas
330 OVRD 90 ' Velocidad al 90%
340 MOV P2, -60 ' Movimiento 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
©Festo Didactic 69
Solución Práctica 5
10 '*********************FESTO DIDACTIC*********************
20 '* CURSO DE INTRODUCCIÓN A LA ROBÓTICA *
30 '* *
40 '* PRACTICA - 5 *
50 '* SUBRUTINAS *
60 '* Autor: Ferran *
70 '* Fecha: Abril 2005 *
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 = 90 ' Velocidad rápida al 90%
170 LENTO = 30 ' Velocidad lenta al 30%
180 HOPEN 1 ' Abrir Pinza
190 *INICIO ' Etiqueta de reinicio
200 OVRD RAPIDO ' Velocidad al 90%
210 MOV P1 ' Movimiento interpolado a la posición P1
220 MOV P2 + OFFSET ' Movimiento interpolado a la suma de
coordenadas de P2 y OFFSET
230 OVRD LENTO ' Velocidad al 30%
240 MVS P2 ' Movimiento recto a la posición P2
250 HCLOSE 1 ' Cierra pinza
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 90%
290 MOV P3 ' Movimiento 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
©Festo Didactic 70
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 30%
620 CNT 1 ' Inicio del movimiento continuo
630 MOV P3+GIRO ' Movimiento interpolado a la suma de
coordenadas de P3 y GIRO
640 MOV P3 ' Movimiento interpolado a la posición P3
650 MOV P3-GIRO ' Movimiento interpolado a la suma de
coordenadas de P3 y GIRO
660 MOV P3 ' Movimiento interpolado a la posición P3
670 CNT 0 ' Fin del movimiento continuo
680 OVRD RAPIDO ' Velocidad al 90%
690 RETURN ' Final de la subrutina GIRAR
700 '--------------------------------------------------------------------------------------
710 *CIRCULO ' Inicio de la subrutina CIRCULO
720 CNT 1 ' Inicio del movimiento continuo
730 MOV P1 ' Movimiento interpolado a la posición P1
740 MOV P4 + OFFSET ' Movimiento interpolado a la suma de
coordenadas de P4 y OFFSET
750 MVS P4 ' Movimiento 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
780 MOV P4 + OFFSET ' Movimiento interpolado a (P4 + OFFSET)
790 MOV P7 + OFFSET ' Movimiento interpolado a (P7 + OFFSET)
800 OVRD LENTO ' Velocidad al 30%
810 MVS P7 ' Movimiento recto a la posición P7
820 HOPEN 1 ' Abrir Pinza
830 DLY 0.5 ' Espera de 0,5 segundos
840 MVS P7 + OFFSET ' Movimiento 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 interpolado a (P8 - OFFSET)
900 MOV P8 + OFFSET ' Movimiento interpolado a (P8 + OFFSET)
910 MOV P8 - OFFSET ' Movimiento interpolado a (P8 - OFFSET)
920 MOV P8 + OFFSET ' Movimiento interpolado a (P8 + OFFSET)
930 MOV P8 - OFFSET ' Movimiento interpolado a (P8 - OFFSET)
940 MOV P8 + OFFSET ' Movimiento interpolado a (P8 + OFFSET)
950 MOV P8 ' Movimiento interpolado a P8
960 CNT 0 ' Fin del movimiento continuo
970 MOV P9 + OFFSET ' Movimiento interpolado a (P9 + OFFSET)
980 OVRD LENTO ' Velocidad al 30%
990 MVS P9 ' Movimiento recto a P9
1000 HOPEN 1 ' Abrir Pinza
1010 DLY 0.5 ' Espera de 0,5 segundos
1020 MVS P9 + OFFSET ' Movimiento recto a (P9 + OFFSET)
1030 RETURN ' Final de la subrutina BOTAR
©Festo Didactic 71
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 20 ' Velocidad al 20%
1100 MOV P10 + SUELO ' Movimiento interpolado a (P10 + SUELO)
1110 MVS P10 ' Movimiento recto a P10
1120 HOPEN 1 ' Abrir Pinza
1130 DLY 0.5 ' Espera de 0,5 segundos
1140 MOV P10 + OFFSET ' Movimiento interpolado a (P10+OFFSET)
1150 RETURN ' Final de la subrutina TIRAR
©Festo Didactic 72
Solución Práctica 6
10 '*********************FESTO DIDACTIC*********************
20 '* CURSO DE INTRODUCCIÓN A LA ROBÓTICA *
30 '* *
40 '* PRACTICA - 6 *
50 '* INTERRUPCIONES *
60 '* Autor: Ferran *
70 '* Fecha: Abril 2005 *
80 '* Comentarios: *
90 '* *
100 '*********************************************************
110 DEF POS HORNO ' Declaración variable posición HORNO
120 DEF POS OFFSET ' Declaración variable posición OFFSET
130 DEF POS P9 ' Declaración variable posición P9
140 HORNO = (0,0,+50,0,0,0) ' Definición de HORNO
150 OFFSET = (0,0,+60,0,0,0) ' Definición de OFFSET
160 'DEF IO N_PASTEL = BIT,10
170 DEF ACT 1, M_IN(10) = 1 GOSUB *COCER ' Definición interrupción COCER
180 DEF ACT 2, M_TIMER(1) > 30000 GOSUB *RETIRAR ' Definición interrupción
RETIRAR
190 DEF INTE NPP ' Declaración variable entera NPP
200 DEF INTE CONTADOR ' Declaración variable entera CONTADOR
210 DEF INTE RAPIDO ' Declaración variable entera RAPIDO
220 DEF INTE LENTO ' Declaración variable entera LENTO
230 DEF PLT 1, P4, P5, P6, P7, 3, 3, 2 ' Definición del palet 1
240 RAPIDO = 90 ' Definición de RAPIDO
250 LENTO = 60 ' Definición de LENTO
260 '..........................................................................................
270 HOPEN 1 ' Abrir Pinza
280 OVRD RAPIDO ' Velocidad al 90%
290 MOV P1 ' Movimiento interpolado a la posición P1
300 ACT 1 = 1 ' Habilita la interrupción 1
310 GOSUB *COGER_P ' Llama a la subrutina COGER_P
320 *INI ' Etiqueta INI
330 NPP = 1 ' Inicialización del contador NPP
340 WHILE (NPP <= 9) ' Mientras NPP sea inferior a 10, se ejecutará el
bucle del WHILE
350 P9 = (PLT 1, NPP) ' Asignamos el valor de una posición del palet a la
variable de posición P9
360 MOV P9 + OFFSET ' Movimiento interpolado a la posición P9+OFFSET
370 OVRD LENTO ' Velocidad al 60%
380 CONTADOR = 0 ' Inicialización del contador CONTADOR
390 WHILE (CONTADOR < NPP) ' Mientras NPP sea inferior a 10, se
ejecutará el WHILE
400 MVS P9 ' Movimiento recto a la posición P9
410 MVS P9 + OFFSET ' Movimiento recto a la suma de coordenadas de
P9 + OFFSET
420 CONTADOR = CONTADOR + 1 ' Actualización del contador CONTADOR
430 WEND ' Fin del WHILE
440 OVRD RAPIDO ' Velocidad al 90%
450 NPP = NPP + 1 ' Actualización del contador NPP
460 WEND ' Fin del WHILE
470 GOTO *INI ' Salto a la etiqueta INI
480 END ' Fin del programa
490 '-------------------------------------------------------------------------------------
500 *COGER_P ' Inicio de la subrutina COGER_P
©Festo Didactic 73
510 OVRD RAPIDO ' Velocidad al 90%
520 MOV P2 + OFFSET ' Movimiento interpolado a la posición P2+OFFSET
530 OVRD LENTO ' Velocidad al 60%
540 MVS P2 ' Movimiento interpolado a la posición P1
550 HCLOSE 1 ' Cierra pinza
560 DLY 0.5 ' Espera de 0,5 segundos
570 MVS P2 + OFFSET ' Movimiento recto a la suma de coordenadas de
P2 + OFFSET
580 OVRD RAPIDO ' Velocidad al 90%
590 RETURN ' Final de la subrutina COGER_P
600 '--------------------------------------------------------------------------------------
610 *DEJAR_P ' Inicio de la subrutina DEJAR_P
620 OVRD RAPIDO ' Velocidad al 90%
630 MOV P2 + OFFSET ' Movimiento interpolado a la posición P2+OFFSET
640 OVRD LENTO ' Velocidad al 60%
650 MVS P2 ' Movimiento recto a la posición P2
660 HOPEN 1 ' Abrir Pinza
670 DLY 0.5 ' Espera de 0,5 segundos
680 MOV P2 + OFFSET ' Movimiento interpolado a la posición P2+OFFSET
690 OVRD RAPIDO ' Velocidad al 90%
700 RETURN ' Final de la subrutina DEJAR_P
710 '--------------------------------------------------------------------------------------
720 *COCER ' Inicio de la interrupción COCER
730 ACT 1 = 0 ' Deshabilita la interrupción 1
740 OVRD RAPIDO ' Velocidad al 90%
750 MOV P1 ' Movimiento interpolado a la posición P1
760 GOSUB *DEJAR_P ' Llama a la subrutina DEJAR_P
770 MOV P3 + OFFSET ' Movimiento interpolado a la posición P3+OFFSET
780 OVRD LENTO ' Velocidad al 60%
790 MVS P3 ' Movimiento recto a la posición P3
800 HCLOSE 1 ' Cierra pinza
810 DLY 0.5 ' Espera de 0,5 segundos
820 MVS P3 + OFFSET ' Movimiento recto a la suma de coordenadas de
P3 + OFFSET
830 OVRD RAPIDO ' Velocidad al 90%
840 MOV P8 + HORNO ' Movimiento interpolado a la posición P8+OFFSET
850 OVRD LENTO ' Velocidad al 60%
860 MVS P8 ' Movimiento recto a la posición P8
870 HOPEN 1 ' Abrir Pinza
880 DLY 0.5 ' Espera de 0,5 segundos
890 MVS P8 + HORNO ' Movimiento recto a la suma de coordenadas de
P8 + HORNO
900 GOSUB *COGER_P ' Llama a la subrutina COGER_P
910 MOV P1 ' Movimiento interpolado a la posición P1
920 ACT 2 = 1 ' Habilita la interrupción 2
930 M_TIMER(1) = 0 ' Inicialización del reloj a cero
940 RETURN 0 ' Final de la interrupción COCER
950 '--------------------------------------------------------------------------------------
960 *RETIRAR ' Inicio de la interrupción RETIRAR
970 ACT 2 = 0 ' Deshabilita la interrupción 2
980 OVRD RAPIDO ' Velocidad al 90%
990 MOV P1 ' Movimiento interpolado a la posición P1
1000 GOSUB *DEJAR_P ' Llama a la subrutina DEJAR_P
1010 MOV P8 + HORNO ' Movimiento interpolado a la posición P8+HORNO
1020 OVRD LENTO ' Velocidad al 60%
1030 MVS P8 ' Movimiento recto a la posición P8
1040 HCLOSE 1 ' Cierra pinza
©Festo Didactic 74
1050 DLY 0.5 ' Espera de 0,5 segundos
1060 MVS P8 + HORNO ' Movimiento recto a la suma de coordenadas de
P8 + HORNO
1070 OVRD RAPIDO ' Velocidad al 90%
1080 MOV P3 + OFFSET ' Movimiento interpolado a la posición P3+OFFSET
1090 OVRD LENTO ' Velocidad al 60%
1100 MVS P3 ' Movimiento recto a la posición P3
1110 HOPEN 1 ' Abrir Pinza
1120 DLY 0.5 ' Espera de 0,5 segundos
1130 MVS P3 + OFFSET ' Movimiento recto a la suma de coordenadas de
P3 + OFFSET
1140 OVRD RAPIDO ' Velocidad al 90%
1150 GOSUB *COGER_P ' Llama a la subrutina COGER_P
1160 MOV P1 ' Movimiento interpolado a la posición P1
1170 RETURN 0 ' Final de la interrupción RETIRAR
©Festo Didactic 75