Subido por DAMIAN LINARES BAILON

Manual Practicas Robotica

Anuncio
Manual de Inst rucciones de COSIROP
para el lenguaje MELFA BASIC IV
Festo Didactic - 2005
Uso al que se destina
Esta estación ha sido desarrollada y producida exclusivamente con fines de
formación profesional y continuada, en el campo de la automatización y las
comunicaciones. La empresa que imparta la formación y/ o los instructores deben
asegurar que los alumnos observan las medidas de seguridad descritas en los
manuales suministrados.
Festo Didactic declina cualquier responsabilidad por daños a los alumnos, a la
organización, a terceras partes, o a todos ellos, como resultado del uso o aplicación
de los equipos fuera de la situación de pura formación.
Nº de artículo:
Descripción:
Manual de Prácticas para el brazo robot RV-2AJ
Fecha:
Autor:
03/2005
Juan Olea Pastor
© Festo Didactic , 2005
Internet: www.festo.com/didactic
e-mail: [email protected]
Sin nuestra expresa autorización, queda terminantemente prohibida la reproducción
total o parcial de este documento, así como su uso indebido y/ o su exhibición o
comunicación a terceros. De los infractores se exigirá el correspondiente
resarcimiento de daños y perjuicios. Quedan reservados todos los derechos
inherentes, en especial los de patentes, de modelos registrados y estéticos.
©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
Objetivos del curso
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 :
Se deben observar siempre las recomendaciones y normas fundamentales sobre
seguridad.
Cualquier persona que trabaje con el robot industrial, debe observar con especial
atención las recomendaciones de seguridad.
Además, deben respetarse las normas y regulaciones sobre prevención de
accidentes, aplicables localmente.
El responsable del funcionamiento se compromete en asegurar que el robot
industrial es utilizado solamente por personas que:
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.
El Robot industrial debe ser utilizado
exclusivamente con fines didácticos y en
condiciones absolutamente seguras.
Garantías y responsabilidades
En principio, se aplican todos nuestros " Términos y Condiciones de Venta" . Estos
términos se ponen a disposición del responsable del funcionamiento, a lo más tardar
en el momento de la firma del contrato. Las reclamaciones de la garantía y
responsabilidad por daños a personas y materiales quedan excluidas si estas
pueden imputarse a una o varias de las siguientes causas:
o
o
o
o
o
o
o
o
Uso de la instalación con fines que no son los previstos.
Montaje de la máquina, puesta a punto, funcionamiento o mantenimiento
incorrectos.
Funcionamiento de la instalación utilizando equipos de seguridad
defectuosos o mal montados, o dispositivos protectores fuera de servicio.
La falta de observación de notas de las instrucciones de funcionamiento en
relación con el transporte, almacenamiento, montaje, puesta a punto,
funcionamiento, mantenimiento y preparación del equipo.
Modificaciones constructivas no autorizadas en la instalación.
Supervisión inadecuada de la instalación o de componentes sometidos a
desgaste.
Reparaciones llevadas a cabo incorrectamente.
Catástrofes resultantes por causas ajenas o por fuerza mayor.
Festo Didactic declina cualquier responsabilidad por daños a los alumnos, a la
organización, a terceras partes, o a todos ellos, como resultado del uso o aplicación
de los equipos fuera de la situación de pura formación.
©Festo Didactic
7
2 INTRODUCCIÓN A LA ROBÓTICA
Historia
El concepto de máquinas automatizadas se remonta a la antigüedad, con mitos de
seres mecánicos vivientes. Los autómatas, o máquinas semejantes a personas, ya
aparecían en los relojes de las iglesias medievales, y los relojeros del siglo XVIII eran
famosos por sus ingeniosas criaturas mecánicas.
Algunos de los primeros robots empleaban mecanismos de realimentación para
corregir errores, mecanismos que siguen empleándose actualmente. Un ejemplo de
control por realimentación es un bebedero que emplea un flotador para determinar
el nivel del agua. Cuando el agua cae por debajo de un nivel determinado, el flotador
baja, abre una válvula y deja entrar más agua en el bebedero. Al subir el agua, el
flotador también sube, y al llegar a cierta altura se cierra la válvula y se corta el paso
del agua.
El primer auténtico controlador realimentado fue el regulador de Watt, inventado en
1788 por el ingeniero británico James Watt. Este dispositivo constaba de dos bolas
metálicas unidas al eje motor de una máquina de vapor y conectadas con una válvula
que regulaba el flujo de vapor. A medida que aumentaba la velocidad de la máquina
de vapor, las bolas se alejaban del eje debido a la fuerza centrífuga, con lo que
cerraban la válvula. Esto hacía que disminuyera el flujo de vapor a la máquina y por
tanto la velocidad.
El control por realimentación, el desarrollo de herramientas especializadas y la
división del trabajo en tareas más pequeñas que pudieran realizar obreros o
máquinas fueron ingredientes esenciales en la automatización de las fábricas en el
siglo XVIII. A medida que mejoraba la tecnología se desarrollaron máquinas
especializadas para tareas como poner tapones a las botellas o verter caucho líquido
en moldes para neumáticos. Sin embargo, ninguna de estas máquinas tenía la
versatilidad del brazo humano, y no podían alcanzar objetos alejados y colocarlos en
la posición deseada.
El desarrollo del brazo artificial multiarticulado, o manipulador, llevó al moderno
robot. El inventor estadounidense George Devol desarrolló en 1954 un brazo
primitivo que se podía programar para realizar tareas específicas. En 1975, el
ingeniero mecánico estadounidense Victor Scheinman, cuando estudiaba la carrera
en la Universidad de Stanford, en California, desarrolló un manipulador polivalente
realmente flexible conocido como Brazo Manipulador Universal Programable (PUMA,
siglas en inglés). El PUMA era capaz de mover un objeto y colocarlo en cualquier
orientación en un lugar deseado que estuviera a su alcance. El concepto básico
multiarticulado del PUMA es la base de la mayoría de los robots actuales.
©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.
En cambió según la norma JIS ( Japanese Industrial Standard ), incluye en su
definición cinco tipos diferentes en función de sus características, sistema de control
y programación.
©Festo Didactic
o
Telerobot: Robot gobernado directamente por un operario.
o
Robot de secuencia: Robot que ejecuta la tarea de manera secuencial en
función de la información que recibe en cada momento.
o
Robot guiado: Robot que reproduce una secuencia ( trayectoria ) que ha
sido guiado previamente por un operario.
o
Robot controlado numéricamente: Robot que realiza una secuencia en
función de una programación numérica introducida previamente, sin haber
realizado ningún movimiento.
o
Robot inteligente: Robot dotado de una inteligencia artificial que es capaz
de determinar por si mismo en cada momento la acción a realizar.
9
3 CARACTERISTICAS RV-2AJ
Estructura de un robot industrial
El diseño de un robot industrial generalmente se inspira en el brazo humano, aunque
con algunas diferencias, según su estructura y composición pero en esencia es así.
Por ejemplo, un brazo robótico puede extenderse telescópicamente, es decir,
deslizando unas secciones cilíndricas dentro de otras para alargar el brazo. También
pueden construirse brazos robóticos de forma que puedan doblarse como la trompa
de un elefante. Las pinzas están diseñadas para imitar la función y estructura de la
mano humana. Muchos robots están equipados con pinzas especializadas para
agarrar dispositivos concretos, como una gradilla de tubos de ensayo o un soldador
de arco.
Las articulaciones de un brazo robótico suelen moverse mediante motores eléctricos,
aunque pueden utilizarse otras tecnologías (neumática, hidráulica). En la mayoría de
los robots, la pinza se mueve de una posición a otra cambiando su orientación. La
controladora calcula los ángulos de articulación necesarios para llevar la pinza a la
posición deseada, un proceso conocido como cinemática inversa.
La mayoría de los brazos multiarticulados están equipados con servo controladores,
o controladores por realimentación, que reciben datos de la controladora. Cada
articulación del brazo tiene un dispositivo de medición que mide su ángulo (encoder)
y envía ese dato al controlador. Si el ángulo real del brazo no es igual al ángulo
calculado para la posición deseada, el servo controlador mueve la articulación hasta
que el ángulo del brazo coincida con el ángulo calculado. Este tipo de control se
denomina control de lazo cerrado.
El diagrama de bloques de un control de posicionamiento en lazo cerrado es el
siguiente:
Motor
1
Jt S
1
S
Posición
Controlador
Velocidad
Consigna
Par
Perturbación
Encoder
Unidad de control
Estructura mecánica
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
En este figura se muestra de manera esquemática las diferentes partes y periféricos
que se pueden asociar al brazo robot con el que se realizan las prácticas.
Se observa en la figura que la estructura mecánica (brazo robot) y la controladora
forma la estructura principal, a la que después se le acoplará la herramienta deseada
según el tipo de tarea o aplicación que se desee realizar.
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.
Interfase para pinza
neumática
Interfase para pinza
eléctrica
Unidad paralela de E/S
Dispositivos
Periféricos
Pinza neumática
RV-2AJ (5 ejes)
Cable de E/S externas
Controladora
Pinza eléctrica
Interfase
Ethernet
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
En este apartado se muestran las características más significativas de un robot
industrial:
Grados de libertad: son las dimensiones del mundo de un manipulador. Cualquier
movimiento de una pieza en el espacio se puede descomponer en 6 movimientos
básicos:
3 lineales -> grados de traslación ( X; Y; Z )
3 rotacionales -> grados de rotación
A:rotación
B:guiñada
C:orientación
CARACTERÍSTICA
Grados de libertad
Carga máxima
Repetitividad
Velocidad máxima
Alcance de la pinza
Alcance desde Q, en mm
Alcance desde Q, en mm
Alcance desde Q, en grados
Alcance desde Q, en mm
ESPECIFICACIÓN
5
2 kg
0,02 mm
2100 mm/s
482 mm
A 410, B 285
C 190, D 300
E 150
R1 220, R2 410
El campo de trabajo es el volumen
espacial dentro del cual el robot puede
situar el extremo de su muñeca. Está
limitado por las envolventes que se
producen al mover los ejes del robot
entre sus posiciones mínimas y
máximas.
El campo de trabajo de un robot influye
en el grado de accesibilidad de éste a
las diferentes máquinas o elementos de
la instalación, por lo que cuando se
desea robotizar una instalación es
necesario estudiar, la distribución de
elementos en el entorno del robot.
Resolución: Movimiento mínimo que puede producir el robot (condicionado por la
mecánica y el tipo de control).
Exactitud: Capacidad de un robot para situar el extremo de su muñeca en un punto
señalado dentro del volumen de trabajo. La exactitud es mayor cuando su brazo
trabaja cerca de la base (inexactitudes mecánicas)
Repetibilidad: Capacidad para volver repetidamente al mismo punto
©Festo Didactic
12
Características del brazo robot
CARACTERÍSTICA
UNIDAD
ESPECIFICACIÓN
Modelo
Grados de libertad
Instalación
Estructura
Sistema de guiado
Método detección de
posición
Tipo de detector
Hombro
Antebrazo
Longitud del
Brazo
brazo
Codo
Muñeca
J1
J2
Rango de
J3
movimiento
J4
J5
J1
J2
Velocidad de
J3
movimiento
J4
J5
Velocidad total máxima
Capacidad
Máxima
de carga
Rating
Repetitibidad de posición
Temperatura ambiente
Peso
Momento
J4
permisible
J5
J4
Inercia
permisible
J5
Radio accesible al brazo
-
RV-2AJ
5
Sobre el suelo
Vertical, mult.-joint type
Servo motor AC
J1, J2 y J3 :50W con freno; J4 y J6 :15W sin freno;
J5 :15W con freno
Encoder absoluto
0
250
160
0
72
300 (-150 , +150)
180 (-60 , +120)
230 (-110 , +120)
180 (-90 , +90)
400 (-200 , +200)
180
90
135
180
210
Aprox. 2100
2
1.5
0.02
De 0º a 40º
Aprox. 17
2,16
1,10
3,24·10-2
8,43·10-3
410
4 para señales de entrada; 4 para señales de
salida; salida motorizada de la mano
4x4 (de la base a la mano)
0.5 10%
IP30
Cables de herramienta
Tubos neumáticos
Presión de alimentación
Tipo protección
©Festo Didactic
-
mm
grados [º]
grados/s
mm/s
kg
mm
ºC
kg
N·m
Kg·m2
mm
MPa
-
13
Características del controlador
CARACTERÍSTICA
UNIDAD
ESPECIFICACIÓN
Modelo
-
CR1-571
Número de ejes a controlar
-
6 a la vez (max.)
CPU
-
64 bit RISC, DSP
punto
2500
paso
5000
-
88
Posiciones de
Capacidad
enseñanza y
de
número de pasos
memoria
Número de
programas
Observaciones
MELFA-BASIC IV
Lenguaje de programación
-
Movemaster
Método enseñanza de posición
-
Método MDI
Command
Entradas y salida
E/S dedicadas
Entradas y
salidas
externas
punto
E/S de
abrir/cerrar la
punto
mano
Entrada de paro
de emergencia
Ent. interruptor
punto
Max. 240/240
STOP 1 punto
uso general
Entradas 4 puntos/
Salidas 0 puntos
1
1
RS-232C
puerto
1
RS-422
puerto
1
Ranura para la
mano
Ranura de
expansión
Conexión de E/S
del robot
Rango del voltaje
fijado
Se pueden añadir
hasta 4 puntos de
salida
Solo una línea de
emergencia
Solo una línea de
interruptor puerta
Dedicada para T/B
Dedicada para
slot
1
interfaz de mano
neumática
slot
3
canal
1
V
Fuente de
alimentación
16/16
Asignado con E/S de
punto
de puerta
Interfaz
punto
Caja opción
extensión usada
240 usados con
E/S de uso general
1 fase, AC, 90 a 132V
1 fase, AC, 170 a 253V
No incluye la
Potencia máxima
kVA
0.7
sobrecorriente de
arranque
Dimensiones de contorno
mm
212x290x151
Peso
kg
Aprox. 8
-
Autónomo y abierto
ºC
De 0 a 40
Construcción
Rango de temperaturas
Humedad ambiente
%RH
Toma de tierra
Color
©Festo Didactic
-
Excepto salientes
IP20
De 45 s 85
Sin condensación
100 o menos
Classe D
Gris claro
Munsell7.65Y7.64
14
Mantenimiento
- Piezas consumibles :
Nº
PIEZA
TIPO
1
Grasa
SK-1A
2
Batería de
Litio
LUGAR DE USO
Engranajes de cada
eje
A6BAT
CANTIDAD
SUMINISTRADOR
Lo necesario
Mitsubischi Electric
En la cubierta F
5
- Piezas de repuesto :
TIPO
LUGAR DE
USO
291-3GT-6
Eje J2
1
315-3GT-6
Eje J3
1
210-2GT-3
¿J4??
1
4
230-2GT-3
Eje J4
1
5
BU220C795G51
Eje J1
1
6
BU220C795G52
Eje J2
1
Nº
PIEZA
1
2
3
7
Correa dentada
CANT. SUMINISTRADOR
BU220C795G53
Eje J3
1
BU220C793G54
¿J4??
1
9
BU220C793G65
Eje J4
1
10
BU220C794G51
Eje J5
1
BKO-FA0530H09
Ejes J1, J2, J3
3
BKO-FA0530H10
¿J4??
1
BKO-FA0530H10
Ejes J4, J5
2
8
11
12
13
©Festo Didactic
Servo motor AC
Engranajes
reductores
Mitsubischi Electric
15
4 INTRODUCCIÓN AL COSIROP
Este capitulo trata de definir los pasos necesarios para realizar un proyecto con el
software COSIROP.
El software COSIROP es el software de programación que será utilizado en este curso
y que permite realizar programas de secuencia y definir posiciones, para más tarde
poder compilarlo y guardarlo vía RS-232 en el Robot RV-2AJ utilizado para la
práctica.
Una vez abierto el programa aparece la siguiente ventana general:
Creación de un proyecto nuevo en COSIROP
Para crear un proyecto nuevo ir a la barra de opciones y en el menú despegable
File hacer clic con el ratón en la opción Project Wizard .
©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).
Si se desea, se puede cambiar la ruta donde se guardará el proyecto, haciendo clic
sobre el botón de Browse... y especificando la ruta.
Una vez rellenados los campos hacer clic sobre el botón Next que se encuentra en
la parte inferior derecha de la ventana.
Aparecerá una nueva ventana llamada Project Wizard Step 2 of 3 donde se
especificará el modelo de robot así como su configuración.
©Festo Didactic
17
En la lista Robot Type se especificará el modelo de robot del que se va a realizar la
práctica.
En el campo de selección I/O interface Cards se especifica el numero de tarjetas de
entradas y salidas externas que se han instalado en la controladora. (En nuestro caso
será 1).
En el campo Hands se seleccionará el número de herramientas que se controla
desde el propio robot (En este caso se dispone de una pinza neumática o eléctrica
por lo que se pondrá 1)
En la opción Adittional Axis 1 (L1) o Adittional Axis 2 (L2) se puede elegir si el
robot controlara ejes adicionales y si estos son lineales o giratorios (Ej. Mesas
giratorias o cintas transportadoras).
Antes de finalizar esta ventana, se debe especificar el lenguaje de programación en
el que se desea realizar la programación. (En nuestro caso se debe de elegir el
MELFA BASIC IV).
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 .
La ventana Project Wizard Step 3 of 3 permite escribir comentarios que se crean
de importancia sobre el proyecto, aunque en esta ventana no es obligatorio rellenar
nada, después hacer clic sobre el botón de Finish situado en la parte inferior
derecho de la ventana para acabar la creación del nuevo proyecto.
Tras crear un proyecto aparecerá la ventana principal de la aplicación las diferentes
ventanas que componen el proyecto.
Ventana de programación: Ventana donde se escribirá el programa
Ventana de posiciones: Ventana donde se crearan las posiciones fijas a las
que se hace referencia en el programa.
Ventana de mensajes del sistema: Ventana de información del sistema.
Ventana de animación: Ventana que te permite de visualizar la posición del
robot en las diferentes posiciones del proyecto. (Atención no realiza la
secuencia del programa).
©Festo Didactic
18
Ventana de animación
Ventana de programación
Ventana de posiciones
Ventana de mensajes
Iconos de la barra de herramientas de COSIROP
Dentro de la ventana principal se encuentra una barra de iconos que llaman
directamente a las opciones principales. También se puede acceder a estas desde el
menú contextual desplegable de la parte superior.
Además de los iconos típicos que se encuentran en múltiples aplicaciones basadas
en el sistema operativo windows como son los iconos: Abrir, guardar, buscar,
cortar,... etc. Esta barra dispone de otros iconos propios del software de
programación.
Renumber
Syntax Check
Download Program
Upload Download
Robot Position -> PC
Reset Error
Current Error
Init Connection
Conenection
Jog Operation
Monitor Functions
Functions
I/O Monitor
Conenection
Monitor toolbar
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.
Teach de las posiciones desde el COSIROP
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.
El Teach de las posiciones se realizará moviendo el brazo robot libremente en la
zona de trabajo hasta posicionarlo en la posición que se desea. Una vez colocado en
la posición cargar esta con el número al que hace referencia en el 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:
Antes de poder interrelacionar con el brazo robot se debe establecer una
comunicación con el mismo.
Conectar el cable de programación entre el PC y la controladora del brazo robot en el
puerto RS-232C que tiene en la parte frontal de la misma.
©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 .
Está acción abrirá la ventana flotante
Communication Port , en la pestaña
Common comprobar que se utiliza un interfase de comunicación vía serie.
©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.
Una vez que se haya comprobado que el protocolo de comunicación es el adecuado,
se pasará a establecer la comunicación con la controladora, para ello se debe ir al
menú de opciones contextual Execute y hacer clic en la opción Init Connection o
sobre el icono de conexión que se encuentra en la barra de herramientas.
En el momento que se haya conectado, ya se puede iniciar el Teach de las
posiciones utilizadas en el programa. En el menú contextual despegable Execute
hacer clic en la opción Jog Operation .
©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
Realiza un incremento en el eje
de coordenadas especificado
Velocidad del incremento
Carga la actual posición en
la lista de posiciones con
el número indicado
Distancia del incremento
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.
El programa te permite elegir entre tres métodos de posicionado para alcanzar la
posición deseada, estos son:
XYZ Jog : En este modo el brazo robot se moverá respecto al eje de
coordenadas situado en la base del robot.
Joint Jog : Este modo se puede mover individualmente cada eje del motor en
formato polar (grados).
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 se haya conectado iniciado la comunicación entre el PC y la controladora del
brazo robot y se haya realizado el Teach de las posiciones que se utilizan en el
programa se dispondrá de todo lo necesario para la carga del programa en el robot y
la ejecución de este. Con este fin habrá que seguir los siguientes pasos:
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.
Cuando el programa no tenga errores y se haya establecido la comunicación, se
procederá a cargar el programa y el listado de posiciones en la controladora del
brazo robot.
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.
Una vez esté cargado el programa y el listado de posiciones en la controladora, el
robot ya estará preparado para ejecutar el programa, para ello desde el PC ir al menú
desplegable Execute y seleccionar la opción Program Start tras confirmar la
operación, el robot comenzará a ejecutar la aplicación.
Para parar el programa desde el PC en cualquier momento ir al menú desplegable
Execute y elegir la opción Program Stop en ese momento se parará el programa
que se esté ejecutando en el brazo robot.
©Festo Didactic
26
Opciones de monitorización
Las opciones de monitorización sirven para la supervisión de los diferentes
elementos y características del brazo robot mientras este esta ejecutando una tarea.
Para ir a la barra de monitorización, ir al icono Monitor Toolbar o la ruta
Execute/Monitor Funtions . Esta opción hará aparecer una barra flotante donde
aparecen las diferentes opciones de monitorización.
En la barra de monitorización se pueden elegir las opciones siguientes:
Slot State Monitor
Motor Speed
Encoder
Current 1
Voltage
Program Monitor
Variables Monitor
Position Monitor
Droop
Load
Current 2
Program Monitor: Esta opción permite monitorizar el programa online y
observar la línea de programa que se está ejecutando en ese momento.
Slot State Monitor: Se observa el estado de cada slot.
Position Monitor: Monitoriza las posiciones angulares de cada eje y las
posición respecto al eje de coordenadas del robot.
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.
Droop: Monitoriza de manera gráfica la relación entre la medida actual de
posición del encoder y el valor máximo que puede llegar a alcanzar.
Encoder: Monitoriza el valor de los encoders en valor absoluto y relativo de
cada eje del robot.
Load: Monitoriza de manera gráfica la relación entre la medida actual de
carga y el valor máximo de carga de cada eje que puede llegar a alcanzar
antes de dar un error.
©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.
Current 2: 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.
Voltage: Monitoriza de manera gráfica la relación entre la medida actual
tensión de cada motor y el valor máximo antes de generar un error.
Variable Monitor: Se pueden monitorizar las diferentes variables que se han
definido en el programa.
Existe también una opción en la barra de herramientas que monitoriza de manera
visual las entradas y salidas externas, para activar dicha opción hacer clic en el
icono Monitor I/O y aparecerá la siguiente pantalla.
Si esta conectado el PC con el robot aparecerá el campo ONLINE en vez de OFFLINE y
aparecerán iluminadas las señales que se encuentren activadas.
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
Estructura del proyecto
Todo proyecto generado con el software de programación COSIROP consta de
diferentes archivos que conforman el proyecto.
-
El archivo *.PRJ es el archivo que guarda nuestra configuración del
proyecto y asocia a este el listado de posiciones, así como el programa.
(Este archivo no se deberá cargar en el robot).
-
El archivo *.POS es el listado de posiciones del proyecto estas
posiciones podrán ser modificadas más tarde con la consola si se
desea. (Es recomendable que el listado de posiciones como el programa
se carguen en el robot con el mismo nombre de archivo).
-
El archivo *.MB4 es el archivo que contiene la programación de la
secuencia que se desea que ejecute el robot que en este caso se ha
generado en el lenguaje MELFA BASIC 4. (Este archivo junto con el
listado de posiciones son los que se tienen que descargar al robot para
ejecutar la secuencia).
Nota: Este mismo formato de archivos y procedimiento de relación de los
diferentes archivos de proyecto es el mismo en el software de simulación
COSIMIR.
Para relacionar los diferentes archivos en un proyecto, para que la compilación sea
correcta. Se deben seguir los pasos siguientes:
1.- Ir al menú contextual Execute y elegir la opción Project Management .
©Festo Didactic
29
2.- aparecerá la ventana flotante que nos permite gestionar los diferentes
archivos del proyecto.
3.- En la ventana de la izquierda aparacerá los diferentes proyectos que se
han creado en la carpeta de proyectos. Aquel proyecto de esté remarcado en
negrita indicará que es el que en ese momento está activo.
Compilar Proyecto
Activar Proyecto
Añadir Proyecto
Borrar Proyecto
Proyecto Activo
En esta ventana se pueden realizar diferentes acciones, como activar otro
proyecto compilarlo o borrarlo. (Los proyectos se guardarán con la
extensión de archivo *.PRJ)
4.- Una vez creado el proyecto y activado, seleccionar la pestaña de la parte
derecha Files donde se relaciones el archivo de programación, así como el
archivo del listado de posiciones.
5.- Para añadirlos en el proyecto apretar el icono Add Archive y
seleccionar los archivo de programación *.MB4 que se desea asociar al
proyecto. Realizar esta misma operación con el archivo de listado de
posiciones *.POS .
©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.
7.- Cuando se haya asociados los dos archivos al proyecto, compilar el
proyecto con el icono de compilación de proyecto de la parte izquierda de la
ventana.
Estructura del programa
Como cualquier tipo de programa, el programa de la secuencia de un brazo robot
mantiene una estructura determinada que ayuda a la comprensión de este.
El programa debe de tener una estructura determinada. Lo primero que habrá en el
programa es una zona de declaración de las diferentes variables. Seguido se
colocará el programa principal que acaba con la instrucción END después del
programa principal se colocan las diferentes subrutina a las que se hayan llamado
que finalizan con la instrucción RETURN .
Comentarios
Definición de posiciones
Definición de I/O
externas
Definición de variables
internas
Número de línea de instrucción
©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
El programa se construye en base a líneas de instrucción que se ejecutarán de
manera secuencial, excepto que haya instrucciones de salto, bucles o llamadas a
subrutina. Los elementos que las forman se muestran a continuación.
Ejemplo de declaración de comanda:
10 MOV P1 WTHM_OUT (17) = 1
Número de línea Es el numero usado para determinar el orden de ejecución del
programa. El programa se ejecutará en orden ascendente.
Mnemotécnico de la instrucción
por el robot.
Es la comanda que designa la operación a realizar
Dato El dato puede ser un valor o una variable del tipo requerido por la
instrucción.
Declaración añadida
©Festo Didactic
Solo se usa si es necesario.
32
Tipos de variables
Variable de control de
Variable de
Variable de control de
VARIABLE
Variable de
- POSICIÓN : Coordenadas ortogonales de la posición. El nombre de la variable
empieza por P .
- ANGULOS DE EJE : Ángulos de empalme. El nombre de la variable empieza con J.
- ARITMÉTICA : Valor numérico (entero, real,..). El nombre empieza por M .
- CARÁCTER : Cadenas de letras. El nombre de la variable termina en $ .
©Festo Didactic
33
6 INSTRUCCIONES BÁSICAS
Introducción
En la programación de brazos robot, siempre persiste un tipo de instrucciones
básicas para todos los tipos software que son aquellas que definen los movimientos
más simples del brazo y que por si solas son las base de la mayoría de las secuencias
de una aplicación
Movimiento Interpolado
El Robot genera la trayectoria interpolando puntos entre el punto origen y el punto
de destino, obteniendo para cada una de las articulaciones del robot, las
coordenadas, velocidad y aceleración que a lo largo del tiempo se han de imprimir
para ajustarse al movimiento especificado.
Pese a su complejidad es la forma más rápida para el robot.
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.
Ejemplos de llamadas de instrucción:
MOV P1............. Se mueve a P1.
MOV P1+P2....... Se mueve a la posición resultante de sumar las coordenadas de P1
y P2.
MOV P1*P2....... Se mueve a la posición relativa convertida de P1 a P2.
MOV P1, -50...... Se mueve desde P1 hasta una posición a 50mm en la dirección de la
pinza.
MOV P1 WTH M_OUT(7)=1... ..Empieza el movimiento hacia P1, y
simultáneamente enciende la salida 7.
MOV P1 WTHIF M_IN(9)=1, SKIP.
. Si durante el movimiento hacia P1 el bit 9
de entrada se activa, se para el
movimiento y el programa sigue.
©Festo Didactic
34
P1
Programa ejemplo:
10
20
30
40
MOV P1
MOV P2, -50
MOV P2
END
50
P2
Movimiento lineal
El Robot describe una línea recta entre los puntos origen y destino.
Es un movimiento lento para el robot y solo se emplea en movimientos críticos
cuando el robot se encuentra cerca de completar su trabajo (coger pieza, dejar pieza,
soldar un punto, aplicar adhesivo ).
MVS
El robot se mueve en línea recta hacia la posición indicada. Se pueden introducir las
declaraciones añadidas WTH o WTHIF.
Ejemplos de llamadas de instrucción:
MVS
MVS
MVS
MVS
MVS
MVS
MVS
MVS
MVS
©Festo Didactic
P1............. Se mueve hasta P1.
P1+P2....... Se mueve a la posición resultante de sumar P1 y P2.
P1*P2........ Se mueve a la posición relativa convertida de P1 a P2.
P1, -50...... Se mueve desde P1 hasta una posición a 50mm en la dirección de la
pinza.
, -50.......... Se mueve 50mm desde la posición actual en la dirección de la
pinza.
P1 WTH M_OUT(7)=1.......... Empieza el movimiento hacia P1, y
simultáneamente enciende la salida 7.
P1 WTHIF M_IN(9)=1, SKIP.............. Si durante el movimiento hacia P1 el bit 9
de entrada se activa, se para el
movimiento y el programa sigue.
P1, TYPE 0, 2......... Se mueve hasta P1 con una interpolación ABC.
P1, TYPE 0, 1......... Se mueve a P1 con una interpolación ortogonal de 3 ejes.
35
Programa ejemplo:
10
20
30
40
MVS P1
MVS P2, -50
MVS P2
END
P1
50
P2
HOPEN / HCLOSE
Abre/cierra la pinza designada.
Ejemplo de llamada de instrucción:
HOPEN 1........... Abre la pinza 1
HCLOSE 1......... Cierra la pinza 1
OVDR
Designa la velocidad de movimiento según un porcentaje relativo a la velocidad
máxima. Afecta a todos los movimientos posteriores, si es que no se vuelve a
modificar el valor.
Ejemplo de llamada de instrucción:
OVRD 60............ Fija la velocidad de todos los movimientos al 60% de la velocidad
máxima.
SPD
Define la velocidad de interpolación linear y circular(para instrucciones MVS, MVR y
MVC) de la pinza en mm/s.
Ejemplo de llamada de instrucción:
SPD 30.............. Configura la velocidad de los movimientos lineales y circulares en
30mm/s.
DLY
Espera los segundos indicados (el mínimo es 0.05), y luego sigue con el programa.
Ejemplo de llamada de instrucción:
DLY 3................. Espera 3 segundos antes de seguir.
©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:
-P1
-P2
-P3
-P4
-P5
:
:
:
:
:
posición inicial o de reposo
posición de aproximación a la zona de carga
posición para coger la pieza
posición de aproximación a la zona de descarga
posición donde dejamos la pieza
Para definir las posiciones se utilizará la opción 'Jog Operation' que se encuentra en
el menú 'Execute'.
( ANTES DEBE CONECTARSE EL PC CON EL ROBOT CLICANDO EN
©Festo Didactic
)
37
Existen 3 maneras de moverlo desde esta ventana:
-
XYZ Job:
Coordenadas de
referencia respecto la base del
robot. Las articulaciones se
interpolan para que se desplace
respecto
los
ejes
de
coordenadas
-
JOINT
Jog:
Se
controlan
directamente las 5 articulaciones
individualmente y de forma
polar.
-
TOOL Jog: El centro de los ejes
de coordenadas se sitúa en el
extremo del brazo (centro de la
pinza), las articulaciones se
interpolan respecto el eje X, Y, o
Z.
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.
Después de introducir el programa, se deben numerar las filas con la opción
'Renumber'.
Luego se puede compilar con
programación.
©Festo Didactic
'Syntax Check' que detecta los errores de
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:
Eliminar las posiciones de aproximación P2 y P4.
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.
B) Utilizar una posición de offset, definiéndola al inicio del programa y utilizándola
sumada a P3 y P5:
DEF POS OFFSET
OFFSET = (0, 0, +50, 0, 0, 0)
MOV P9 + OFFSET
©Festo Didactic
39
7 INSTRUCCIONES DE MOVIMIENTO
MVR
El robot se mueve por un circulo definido por tres puntos. Si el empezar el
movimiento no se encuentra en el punto de inicio, se moverá linealmente hasta él
antes de empezar. Se pueden introducir las declaraciones añadidas WTH o WTHIF.
MVR : Se define el punto de inicio, uno de tránsito, y el punto final.
MVR2 : Se define la posición inicial, la final, y un punto de referencia por el
que no pasará.
MVR3 : Se define el punto inicial, el final y el centro del círculo. El
movimiento va del inicial al final por el camino más corto del círculo.
MVC : Se define la posición de inicio (y final), punto de tránsito 1, y punto de
tránsito 2. El movimiento sigue el recorrido:
inicio tránsito1 tránsito2 final.
Ejemplos de llamadas de instrucción:
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.
P7
P6
P8
Programa ejemplo:
10
20
30
40
50
©Festo Didactic
MVR P1, P2, P3
MVR2 P3, P4, P5
MVR3 P4, P6, P7
MVC P6, P8, P9
END
P1
P4
P2
P3
P5
P9
40
CNT
Define el principio y el final de un movimiento continuo.
Ejemplos de llamadas de instrucción:
CNT 1................. Define el inicio del movimiento continuo.
CNT 1, 100, 200............... Define el inicio del movimiento continuo, la distancia de
separación con el punto inicial, y la distancia de separación
con el punto final.
CNT 0................. Define el final del movimiento continuo.
P1
Programa ejemplo:
10
20
30
40
50
60
70
80
MOV P1
CNT 1
MVS P2
CNT 1, 50, 100
MVS P3
MVS P4
CNT 0
END
P2
50
P4
100
50
P3
ACCEL
Define la aceleración y desaceleración durante el movimiento como un porcentaje
del máximo.
Ejemplos de llamadas de instrucción:
ACCEL................. Configura la aceleración y la desaceleración al 100%.
ACCEL 60, 80..... Configura la aceleración al 60% y la desaceleración al 80%.
JOVDR
Define la velocidad de movimiento angular axial (para instrucciones MOV), como un
porcentaje de la máxima.
Ejemplo de llamada de instrucción:
JOVRD 70........... Configura la velocidad del movimiento angular de cada eje al 70%
de la máxima.
©Festo Didactic
41
HLT
Para la ejecución del programa y entra en el estado de paro.
Ejemplos de llamadas de instrucción:
HLT..................... Para la ejecución del programa.
IF M_IN(8)=1 THEN HLT................ Para la ejecución del programa cuando se activa la
señal de entrada M_IN(8).
MOV P3 WTHIF M_IN(9)=1, HLT................. Para la ejecución del programa si la señal
de entrada M_IN(9) se activa durante el
movimiento a P3.
FINE
Define las condiciones de posicionamiento final con un número de pulsos.
Ejemplo de llamada de instrucción:
FINE 100............ Configura las condiciones de posicionamiento final a 100 pulsos.
TOOL
Configura la forma de la herramienta que usamos, y configura el punto de control.
Ejemplo de llamada de instrucción:
TOOL P60.......... Define la forma guardada en P60.
©Festo Didactic
42
Práctica 2 Movimientos circulares
Anunciado:
Realizar un programa para que el brazo industrial recoja un objeto de un soporte
elevado y luego realice dos círculos antes de volver a dejarlo.
P1
P2
P3
P5
P4
Realización:
Las posiciones necesarias serán:
-P1
-P2
-P3
-P4
-P5
:
:
:
:
:
posición inicial o de reposo
posición de recogida
posición de inicio del circulo
posición de tránsito 1
posición de tránsito 2
Para este ejercicio utilizaremos éstas nuevas comandas:
- MVS > Realiza un movimiento en línea recta.
- MVC > Realiza un movimiento circular pasando por 3 puntos.
- MOV Px, -50 > Realiza un movimiento suave hasta una posición
50mm encima de la posición Px.
- MVS Px, -50 > Realiza un movimiento recto hasta una posición
50mm encima de la posición Px.
©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).
CNT 1, 100, 100
...
CNT 0
· Realizar un arco y/ o circulo con centro definido, utilizando la instrucción MVR3 .
La posición del centro será como la posición de recogida, pero 100mm más baja.
MVR3 P_inicial, P_final, P_centro
©Festo Didactic
44
8 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:
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
maquinas 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
Entradas reservadas
©Festo Didactic
0 (running), 1 (Servo On), 4 y 5 (abrir y cerrar pinza)
0 (stop), 1 (Servo off), 2 (error reset), 3 (start), (4 servo on)
45
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
IF M_IN(9)=1 THEN X... . Si la entrada 9 esta activa, hace la instrucción X
También se pueden renombrar al gusto del usuario con la instrucción DEF IO .
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......
©Festo Didactic
Espera a que la señal de entrada 1 se active.
46
Práctica 3
Movimiento continuo
Anunciado:
El programa ha de empezar haciendo que el robot agarre un rotulador adaptado y
espere hasta que se active la señal de entrada M_IN(10). Ésta señal se ha de cablear
con un pulsador, para poderla activar repetidamente. Cuando se pulsa debe realizar
un movimiento continuo por un rectángulo definido por 4 posiciones. La punta del
rotulador ha de quedar cerca de la superficie de la mesa para que pueda escribir.
P1
P2
P3
P4
P6
P5
Realización:
Las posiciones clave para realizar el movimiento descrito serán:
-P1
-P2
-P3
-P4
-P5
-P6
©Festo Didactic
:
:
:
:
:
:
posición inicial o de reposo
posición de recogida del rotulador
posición del primer vértice del rectángulo
vértice 2
vértice 3
vértice 4
47
Las nuevas comandas que se utilizaran en el programa, son:
- CNT > Da continuidad a los movimientos suavizando las transiciones.
- WAIT > Espera a que la variable alcance el valor indicado.
- GOTO > Salta a la línea o etiqueta indicada
- HLT > Para el programa
Las variables externas I/O se denominan M_IN(x) las de entrada, y M_OUT(x) las de
salida.
Ampliaciones:
· Programar un sistema de marcha / paro de emergencia con las entradas:
M_IN(9) pulsador de marcha
M_IN(10) pulsador de paro de emergencia
Si se activa la señal de paro, el robot debe interrumpir el programa, y sólo seguirá si
M_IN(10)=0 y M_IN(9)=1.
· Definir las variables externas con un nombre más práctico:
DEF IO nombre=bit, 10 ( redefine la variable M_IN(10) )
©Festo Didactic
48
9 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
20 19 18 17 16
11 12 13 14 15
10 9 8 7 6
1 2 3 4 5
Tipo 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).
P3
P4
P1
P2
Tipo 2
16 17 18 19 20
11 12 13 14 15
6 7 8 9 10
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.
NOTA: Se ha de tener en cuenta que la posición relativa de la pinza respecto el brazo
ha de ser del mismo signo. No pueden haber dos posiciones que definen el palet con
la coordenada de orientación en 180º y 180º.
©Festo Didactic
49
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
20
30
40
50
60
70
80
90
100
110
120
130
140
©Festo Didactic
DEF PLT 1, P2, P3, P4, P5, 3, 4, 2
MOV P1
HCLOSE 1
P10=(PLT 1, 4)
P1
MOV P10, -50
MVS P10
HOPEN 1
MVS P10, -50
P10=(PLT 1, 11)
MOV P10, -50
MVS P10
HCLOSE 1
MVS P10, -50
END
50
P4
P5
50
P2
P3
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:
Las posiciones necesarias serán:
-P1
-P2
-P3
-P4
-P5
-P6
:
:
:
:
:
:
posición inicial o de reposo
posición de recogida de piezas
posición del primer vértice del palet
vértice 2
vértice 3
vértice 4
Las nuevas comandas que se utilizaran en el programa, son:
- 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:
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
©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
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 de nivel FIN.
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, ...).
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.
©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.
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 DEFAULT y el próximo END SELECT .
END SELECT....... Finaliza la declaración de SELECT CASE .
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 la comanda 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
©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
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 variable M1 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
©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:
· M_IN(8)=1
· M_IN(9)=1
· M_IN(10)=1
· M_IN(11)=1
Siguiendo en la misma posición, hace girar la pieza suavemente,
para verla mejor.
Realiza un círculo y deposita la pieza en el almacén 1.
Mueve la pieza arriba y abajo y la deposita en el almacén 2.
Deposita la pieza en la zona de desperdicios.
P3
P1
P8
P7
P10
P9
P2
P4
P6
1
2
P5
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
©Festo Didactic
56
Las nuevas instrucciones que se utilizaran en el programa, son:
- GOSUB > Llama a la subrutina con el número de línea o la etiqueta indicada.
- RETURN > Retorna a la línea siguiente de donde estaba la comanda GOSUB .
- SELECT CASE > Salto según el valor de la variable.
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)
©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
Define las condiciones de interrupción y el proceso para generarla.
Ejemplos de llamadas de instrucción:
DEF ACT 1, M_IN(7)=1 GOSUB 200............ Define con prioridad nº1, la llamada de la
subrutina de la 200 cuando la señal de
entrada M_IN(7) se activa.
DEF ACT 2, M_IN(8)=1 GOSUB 480, L.........Define con prioridad nº2, la llamada de la
subrutina de la 480 cuando la señal de
entrada M_IN(8) se activa y la instrucción
que se estaba ejecutando termina.
DEF ACT 3, M_IN(9)=1 GOSUB 330............ Define con prioridad nº3, la llamada de la
subrutina de la 330 cuando la señal de
entrada M_IN(9) se activa.
ACT
Señala la validez de la interrupción.
Ejemplos de llamadas de instrucción:
ACT 1=1............. Habilita la interrupción de prioridad nº1.
ACT 2=0............. Deshabilita la interrupción de prioridad nº2.
RETURN
Si una subrutina es llamada por el proceso de interrupción, retorna a la donde hubo
la interrupción.
Ejemplos de llamadas de instrucción:
RETURN 0........... Retorna a la línea donde ocurrió la interrupción.
RETURN 1........... Retorna a la siguiente línea de donde ocurrió la interrupción.
©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
P6
P5
P7
Realización:
Las posiciones clave para realizar el movimiento descrito serán:
-P1
-P2
-P3
-P4
-P5
-P6
-P7
-P8
©Festo Didactic
:
:
:
:
:
:
:
:
posición inicial o de reposo
posición de recogida de la pieza de punzado
posición de recogida de la pieza-pastel
posición del primer vértice del palet
vértice 2
vértice 3
vértice 4
posición del horno
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
Abre la línea de comunicación.
Ejemplo de llamada de instrucción:
OPEN COM1: AS#1....... Abre la línea de comunicación COM1 como archivo nº1.
CLOSE
Cierra la línea de comunicación.
Ejemplos de llamadas de instrucción:
CLOSE #1.....
CLOSE...........
Cierra el archivo nº1.
Cierra todos los archivos abiertos.
PRINT #
Exporta los datos en el formato ASCII. CR es el código final.
Ejemplos de llamadas de instrucción:
PRINT #1, TEST ............. Exporta los caracteres TEST al archivo nº1.
PRINT #2, M1= ; M1...... Exporta los caracteres M1= y el valor de M1 al archivo
nº2. Por ejemplo : M1=3 +CR+LF (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 #
Importa datos en formato ASCII. El código final es CR.
Ejemplos de llamadas de instrucción:
INPUT #1, M6..... Convierte los datos de entrada en valores y los substituye en la
variable numérica M6.
INPUT #1, P7...... Convierte los datos de entrada en valores y los substituye en la
variable de posición P7.
INPUT #1, M9, P5............. Convierte los primeros datos de entrada en valores y los
substituye en la variable numérica M9. Convierte los
siguientes datos de entrada en valores y los substituye en
la variable de posición P5.
ON COM GOSUB
Define la rutina a llamar en caso de que las líneas de comunicación generen una
interrupción. La interrupción aparece cuando entran datos de un dispositivo externo.
Ejemplos de llamadas de instrucción:
ON COM(1) GOSUB 330.................Define saltar a la 330 cuando entran datos por la
línea de comunicación COM1.
ON COM(2) GOSUB *RECV............. Define llamar a la subrutina RECV cuando entran
datos por la línea de comunicación COM1.
COM ON
Habilita el proceso de interrupción de la línea de comunicación indicada.
Ejemplo de llamada de instrucción:
COM(1) ON......... Habilita la interrupción desde la línea COM1.
COM OFF
Deshabilita el proceso de interrupción de la línea de comunicación indicada. Si
ocurre la interrupción, no será válida.
Ejemplo de llamada de instrucción:
COM(2) OFF........ Deshabilita la interrupción desde la línea COM2.
©Festo Didactic
62
COM STOP
Para el proceso de interrupción de la línea de comunicación indicada. Si hay una
interrupción, se guarda y se ejecuta mas tarde.
Ejemplo de llamada de instrucción:
COM(3) STOP................... Para (sostiene) la interrupción desde la línea COM3.
CALLP
Llama al programa indicado. Vuelve a la siguiente del programa cuando llega a la de
END del programa llamado. Los datos se pueden transferir al programa llamado
como una trama de variables.
Ejemplos de llamadas de instrucción:
CALLP 10 ...................... Llama al programa número 10.
CALLP 30 , M2, P2......... Llama al programa número 30 y le transfiere la variable
numérica M1 y la variable de posición P2.
FPRM
Se transfiere una discusión con la llamada de programa CALLP .
Ejemplo de llamada de instrucción:
FPRM M22, P22............... Recibe las variables transferidas con la comanda CALLP .
La variable numérica será M22 en el subprograma, y la
variable de posición será P22.
CLR
Resetea las señales de salida, basándose en el patrón de reset de las señales de
salida.
Ejemplos de llamadas de instrucción:
CLR 1.................. Borra basándose en el patrón de reset de las salidas.
©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.
Para conectar la unidad de visión a la controladora CR1, se puede usar la tarjeta de
expansión serie RS-232C. También se podría usar el puerto que conecta la
controladora con el PC, pero se recomienda usar uno dedicado para el sistema de
visión.
Cámera
Unidad de visión
CR1
(controlador)
Programa ejemplo:
10
20
30
40
50
60
70
80
90
100
110
120
130
140
150
©Festo Didactic
OPEN COM2: AS #1
' Abre la comunicación RS232C
MOV P1, -50
' Mueve la posición de la cámara
M_OUT(10) = 1 DLY 0.5 ' Activa la señal de salida que conecta la camera
(enciende el sensor)
PX=P1
' Obtiene el origen de la camera
INPUT #1, MX, MY, MC ' Obtiene los datos de la corrección
PX.X=PX.X+MX
' Aplica los datos de la corrección en la dirección X
PPX.Y=PX.Y+MY
' Aplica los datos de la corrección en la dirección Y
PX.C=PX.C+RAD(MC)
' Aplica los datos de la corrección en el eje C
MOV PX, -50
' Mueve a una posición encima del objeto
OVRD 30
' Velocidad al 30%
MVS PX
' Mueve a la posición objetivo
DLY 0.3
' Espera de 0.3 segundos
HCLOSE
' Cierra pinza
DLY 0.3
' Espera de 0.3 segundos
MVS, -50
' Movimiento recto alejándose hacia arriba
...
64
13 APENDICE
Conexionado de E/S externas:
La controladora dispone de un conector conceptronics de 50 pines donde se
conectarán las señales de E/S externas.
Esquema de conexión y la descripción de casa señal del conector se muestra a
continuación.
©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
520
530
540
550
560
570
580
590
600
610
620
630
640
650
660
670
680
690
700
710
720
730
740
750
760
770
780
790
800
810
820
830
840
850
860
870
880
890
900
910
920
930
940
950
960
970
980
990
1000
1010
1020
1030
©Festo Didactic
DLY 0.5
' Espera de 0,5 segundos
BREAK
' Fin de las instrucciones del CASE seleccionado
END SELECT
' Finaliza la opción SELECT CASE
IF OPCION=0 OR OPCION=1 THEN GOTO *INI
' Si la variable OPCION
vale 0 o 1, salta a INI
GOTO *INICIO
' Salta a la etiqueta INICIO
END
' Fin del programa
'-------------------------------------------------------------------------------------*GIRAR
' Inicio de la subrutina GIRAR
DEF POS GIRO
' Declaración variable posición
GIRO = (0, 0, 0, 120, 0, 0)
' Asignación de valores a la posición GIRO
OVRD LENTO
' Velocidad al 30%
CNT 1
' Inicio del movimiento continuo
MOV P3+GIRO
' Movimiento interpolado a la suma de
coordenadas de P3 y GIRO
MOV P3
' Movimiento interpolado a la posición P3
MOV P3-GIRO
' Movimiento interpolado a la suma de
coordenadas de P3 y GIRO
MOV P3
' Movimiento interpolado a la posición P3
CNT 0
' Fin del movimiento continuo
OVRD RAPIDO
' Velocidad al 90%
RETURN
' Final de la subrutina GIRAR
'-------------------------------------------------------------------------------------*CIRCULO
' Inicio de la subrutina CIRCULO
CNT 1
' Inicio del movimiento continuo
MOV P1
' Movimiento interpolado a la posición P1
MOV P4 + OFFSET
' Movimiento interpolado a la suma de
coordenadas de P4 y OFFSET
MVS P4
' Movimiento interpolado a la posición P4
MVC P4,P5, P6
' Movimiento circular entre los puntos P4, P5 y P6
CNT 0
' Fin del movimiento continuo
MOV P4 + OFFSET
' Movimiento interpolado a (P4 + OFFSET)
MOV P7 + OFFSET
' Movimiento interpolado a (P7 + OFFSET)
OVRD LENTO
' Velocidad al 30%
MVS P7
' Movimiento recto a la posición P7
HOPEN 1
' Abrir Pinza
DLY 0.5
' Espera de 0,5 segundos
MVS P7 + OFFSET
' Movimiento interpolado a (P7+OFFSET)
RETURN
' Final de la subrutina CIRCULO
'-------------------------------------------------------------------------------------*BOTAR
' Inicio de la subrutina BOTAR
CNT 1
' Inicio del movimiento continuo
MOV P8 - OFFSET
' Movimiento interpolado a (P8 - OFFSET)
MOV P8 + OFFSET
' Movimiento interpolado a (P8 + OFFSET)
MOV P8 - OFFSET
' Movimiento interpolado a (P8 - OFFSET)
MOV P8 + OFFSET
' Movimiento interpolado a (P8 + OFFSET)
MOV P8 - OFFSET
' Movimiento interpolado a (P8 - OFFSET)
MOV P8 + OFFSET
' Movimiento interpolado a (P8 + OFFSET)
MOV P8
' Movimiento interpolado a P8
CNT 0
' Fin del movimiento continuo
MOV P9 + OFFSET
' Movimiento interpolado a (P9 + OFFSET)
OVRD LENTO
' Velocidad al 30%
MVS P9
' Movimiento recto a P9
HOPEN 1
' Abrir Pinza
DLY 0.5
' Espera de 0,5 segundos
MVS P9 + OFFSET
' Movimiento recto a (P9 + OFFSET)
RETURN
' Final de la subrutina BOTAR
71
1040
1050
1060
1070
1080
1090
1100
1110
1120
1130
1140
1150
©Festo Didactic
'-------------------------------------------------------------------------------------*TIRAR
' Inicio de la subrutina TIRAR
DEF POS SUELO
' Declaración variable posición
SUELO = (0,-50,+3,0,0,0) ' Definición de SUELO
MOV P10 + SUELO + OFFSET
' Movimiento interpolado a la suma de
coordenadas de P10, SUELO y OFFSET
OVRD 20
' Velocidad al 20%
MOV P10 + SUELO
' Movimiento interpolado a (P10 + SUELO)
MVS P10
' Movimiento recto a P10
HOPEN 1
' Abrir Pinza
DLY 0.5
' Espera de 0,5 segundos
MOV P10 + OFFSET
' Movimiento interpolado a (P10+OFFSET)
RETURN
' Final de la subrutina TIRAR
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
520
530
540
550
560
570
' Velocidad al 90%
' Movimiento interpolado a la posición P2+OFFSET
' Velocidad al 60%
' Movimiento interpolado a la posición P1
' Cierra pinza
' Espera de 0,5 segundos
' 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
OVRD RAPIDO
MOV P2 + OFFSET
OVRD LENTO
MVS P2
HCLOSE 1
DLY 0.5
MVS P2 + OFFSET
74
1050
1060
DLY 0.5
MVS P8 + HORNO
1070
1080
1090
1100
1110
1120
1130
OVRD RAPIDO
MOV P3 + OFFSET
OVRD LENTO
MVS P3
HOPEN 1
DLY 0.5
MVS P3 + OFFSET
1140
1150
1160
1170
OVRD RAPIDO
GOSUB *COGER_P
MOV P1
RETURN 0
©Festo Didactic
' Espera de 0,5 segundos
' Movimiento recto a la suma de coordenadas de
P8 + HORNO
' Velocidad al 90%
' Movimiento interpolado a la posición P3+OFFSET
' Velocidad al 60%
' Movimiento recto a la posición P3
' Abrir Pinza
' Espera de 0,5 segundos
' Movimiento recto a la suma de coordenadas de
P3 + OFFSET
' Velocidad al 90%
' Llama a la subrutina COGER_P
' Movimiento interpolado a la posición P1
' Final de la interrupción RETIRAR
75
Descargar