Está en la página 1de 10

PRACTICA PROGRAMACION ROBOTICA

PUMA 560: EL LENGUAJE DE PROGRAMACIÓN VALII.

DESCRIPCIÓN DE LA PRÁCTICA.

La práctica consiste en realizar un programa en el lenguaje de


programación de robots VAL II mediante el uso de un simulador
desarrollado en el departamento. El robot simulado es el que se mostró
en la práctica de robótica que tuvo lugar en el laboratorio de la
escuela superior, el robot Puma 560.

EL INTERPRETE DE VALII

El simulador del Puma 560, ha sido desarrollado por el


departamento con la finalidad de facilitar el acceso a la programación
de robots. Intenta simular el sistema real, con la idea de que una vez
trabajado sobre el programa se pueda utilizar sin ningún problema el
robot real. Esto incluye la simulación del armario de control, con sus
botones, llaves, etc. Es importante destacar que la versión que se va a
manejar en las prácticas es una versión beta, y por tanto inacabada.
También se agradecería cualquier sugerencia que tengáis para
mejorarla, y para eliminar los posibles errores que se den durante la
práctica.

El programa consta de cuatro diálogos básicos:


• El simulador del Robot. Es la ventana principal, y ella se
representa el armario de control, la entradas y salidas, y una
vista tridimensional del robot y su entorno.
• Paleta, o mando manual. De forma parecida a como se
procede en la realidad simula el terminal manual que se usa
para la programación de puntos y para mover cómodamente
el robot. Tiene incluso el botón de Hombre muerto, que hay
que accionar si se desea mover el robot.
• Panel de Control. Corresponde con el panel principal del armario de
control. En él se encuentran los botones de encendido del armario y
del brazo, así como el selector de modo de funcionamiento.
• Consola. Se simula mediante esta pantalla, el monitor del robot. Las
respuestas y la forma de introducir la información se ha realizado de
forma idéntica al monitor real. (Incluso lleva nuestro número de serie)
La idea de la práctica es casi comprobar que aquellos que mejor
o antes hayan realizado el programa sobre el simulador, son
capaces de manejar y programar el robot para realizar la misma
tarea sin ningún problema.

EJERCICIO PRACTICO

El programa que hay que realizar debe resolver el problema de


Hanoi de tres piezas. El robot debe ir al inicio a una posición de retirada.
Esperará entonces a que se pulse enter en la consola. Resolverá
entonces el problema, dejando en la tercera columna las fichas con el
mismo orden que estaban en la primera.
Evidentemente, el robot solo puede coger las fichas que están
arriba, y dejarlas en las columnas encima de las otras fichas si las
hubiera.
Una vez resuelto, el robot esperará a que se pulse enter en la
consola para volver a dejarlo todo como al comienzo.
Es muy importante que todo el programa se base en un punto de
referencia que se debe introducir con la paleta antes de ejecutarlo por
primera vez. De esta forma, al programar el robot real realizaremos el
mismo procedimiento.

intro

intro

NOTA:

Se recomienda hacer los siguientes programas.


• El principal que indica de que columna hay que coger y en que
columna hay que dejar.
• Un programa que en función de dos variables coja una pieza de la
columna indicada por la primera variable y deje la ficha en la
columna indicada por la segunda.
• Se podrían hacer dos programas adicionales que abran y cierren la
pinza con una pequeña espera que asegure que se ha cerrado o
abierto completamente antes de moverse de nuevo.
NOCIONES BÁSICAS PARA LA PROGRAMACIÓN DEL PUMA 560

PUESTA EN MARCHA DEL ROBOT


1.-Encender la alimentación general del robot en la parte trasera del
armario de control.
2.-Encender la consola de visualización.
3.-Girar la llave de alimentación general de la unidad central.
4.-Esperar a la aparición del mensaje sobre la pantalla:
VAL II BOOT V1.2 16 APR 84
LOAD VAL II FROM FLOPPY (Y/N)?
Habitualmente no será necesario cargar de nuevo el VAL II desde el
disco. Sólo en caso de fallo en el arranque deberá hacerse.
5.-INITIALIZE (Y/N)?
Si se teclea Y, se destruyen todos los programas que hay en la memoria
de la máquina.
Si se teclea N los programas existentes se conservan.
6.-Se debe alimentar el brazo pulsando el botón verde.
7.-Proceder a un calibrado tecleando CAL
8.-nicializar el robot con una velocidad lenta (SPEED o SP 20)

MODOS DE FUNCIONAMIENTO
Se dispone de tres modos de funcionamiento:
1. Modo comando: Visualizado en la pantalla por un punto [.]. La unidad
de comando espera una orden como DIR, LISTP, DELETEP, etc.
2. Modo editor: Visualizado en pantalla por un [¿]. La unidad de
comando está cargando programas.
3. Modo ejecución: visualizado en pantalla por [*]. La unidad de comando
está ejecutando un programa, aunque algunas órdenes son asimilables
paralelamente a esta ejecución.

VISUALIZACIÓN

Sólo se puede hacer en modo comando.

DIR: permite ver los títulos o nombres de programas.


LISTP o PLIST: permite ver el contenido de los programas.
LISTL o LLIST: para ver los puntos almacenados en memoria.
LISTR o RLIST: permite ver las variables reales en memoria.

Estos tres últimos comandos admiten parámetros, separados por comas, para
delimitar qué variables o programas se desean visualizar.

VARIABLES
Existen en VAL II dos tipos de variables: las variables de punto, y las
variables reales. Estas variables están asociadas a los programas del usuario.
Tanto las variables de punto como las variables reales pueden llevar corchetes
para indicar que son nombres de variables dimensionadas.
Los puntos o localizaciones.
Dentro de las variables de punto podemos distinguir dos tipos: puntos de
precisión y localizaciones en el espacio.
Un punto de precisión es un punto en el que las coordenadas no están
almacenadas en el espacio cartesiano, sino en el espacio articular del robot.
Se declara o reconoce un punto de precisión cuando añadimos # delante del
nombre del punto.

POINT <nombre del punto>


HERE <nombre del punto>

Disponemos de dos posibilidades para asignar una variable punto:

1.- Cargando las diversas coordenadas por parte del usuario.

POINT <nombre del punto>


Esta instrucción asigna las cotas en mm o en grados (según el
parámetro) al nombre de la variable punto.

Ejemplo:
POINT A ↵
X/JT1 Y/JT2 Z/JT3 O/JT4 A/JT5 T/JT6
0 0 0 90 -90 0

CHANGE?
10,30,-15,18 ↵

X/JT1 Y/JT2 Z/JT3 O/JT4 A/JT5 T/JT6


10 30 -15 18 -90 0

CHANGE?

2.- Por aprendizaje.

Consiste en desplazar el robot hasta el punto deseado y escribir en el


teclado: HERE <nombre del punto>.
Una variante de esta instrucción que se menciona en el apartado de
edición es TEACH (modo COMANDO), T y TS (modo EDIT).

DELETEL o LDELETE <nombre del punto>, <punto2>, ...


Elimina un punto de la memoria.

Las variables reales.


Es una asignación a un nombre cualquiera de un valor entero o real.
Escribir A=12 declara y asigna la variable A con el valor 12. En el caso de VAL
II, el valor debe estar comprendido obligatoriamente entre 6.0E-39 y 2.854
E+38 para valores positivos y hasta –6.0E-39 para valores negativos.

Operaciones matemáticas:
+,-,*,/.
ABS(expr)
SIGN(expr) da el signo de la expresión.
FRACT(expr) Da la parte fraccionaria de la expresión.
INT(expr) Da la parte entera de la expresión.
SQRT(expr) Da la raíz cuadrada de la expresión.
SQR(expr) Da el cuadrado de la expresión.
SIN(expr) ,COS(expr), ATAN2(expr1,expr2), Dan en seno, coseno y
arcotangente (en grados) .
PI Da el valor 3.14159
RANDOM Esta función da un valor aleatorio comprendido entre 0 y 1.

DELETER o RDELETE <nombre de la variable>, <var2>, ...


Elimina la variable de la memoria.

COMANDOS DE EDICION
Estos comandos sólo sirven en modo de EDICION (presencia de ¿ a la
izquierda) para permitir la introducción de ordenes de VAL en el robot.

- EDIT <Nombre del Prog>, <n> : Entra en el modo de edición de un


programa. Podemos ir directamente a una de la líneas del código
introduciendo su número en <n>

- CHANGE NOM, n : Cambia de programa y entra en la línea n del


mismo.
- DELETE n : Suprime n líneas a partir de la presente
- EXIT : Permite salir del modo de edición para volver al modo de
comando del robot.
- INSERT : Inserta las líneas que se vayan escribiendo hasta que se
introduzca una línea en blanco.
- LAST : Permite volver a la línea anterior.
- SEARCH n: Permite buscar el numero de línea n deseado.
- PRINT n : visualiza tantas líneas como indique n desde la situación
actual.
- REPLACE caracteres: Permite reemplazar caracteres de una
instrucción.
- MODIFY/ antigua cadena / nueva cadena : Este comando permite
sustituir un bloque de caracteres por otro nuevo.
- FIND / bloque de caracteres / :Encuentra la línea de instrucción que
contiene el bloque de caracteres comprendidos entre las barras.
- TEACH nombre de variable : Permite memorizar las coordenadas de
una serie de puntos y escribe automáticamente la orden de
movimiento asociada a estos puntos (cada vez que se pulse el botón
RECORD situado en la paleta).
- TSTRAIGHT :Idéntico al comando T salvo que los desplazamientos
que habrán serán en línea recta entre los puntos memorizados.
Los comentarios en VAL II van precedidos de ; en cada línea.

INSTRUCCIONES BÁSICAS DE VAL II


El software logiciel VALII reside sobre una estructura de varias tareas, de
forma que éste, en paralelo, ejecuta un programa de aplicación que comporta
movimientos del brazo del robot y un programa de cálculo o de gestión de
entradas/salidas.
También, cuando se ejecutan distintas instrucciones de movimientos, el robot
no espera a finalizar el movimiento en curso para analizar y ejecutar
operaciones matemáticas, gestión de entradas/salidas, etc... Lo cual puede
llevar, si no se tiene en cuenta, durante la ejecución de las instrucciones, a
movimientos inesperados. Debemos recordar que si insertamos instrucciones
que no conllevan movimiento entre instrucciones de movimientos, éstas serán
ejecutadas en paralelo.
Ejemplo:
MOVE A0 A1
A0
MOVE A1
TYPE “FIN DEL MOVIMIENTO A A1”
MOVE B FIN DEL MOVIMIENTO A A1

Si no deseamos tener esta simultaneidad, insertamos una instrucción BREAK.


Igualmente las siguientes instrucciones tendrán el mismo efecto que BREAK
después de un movimiento. BASE, BREAK, NOALTER, PAUSE, DETACH,
HALT, TOOL, RELAXI, OPENI, CLOSEI.

La orden DO
Todas las instrucciones que vamos a ver se pueden ejecutar en modo
comando si añadimos anteriormente el comando DO. MOVE A se podrá
ejecutar en modo comando si antes escribimos DO MOVE A. Si no
reescribimos nada posteriormente a DO entonces se ejecutará el comando
precedente.

MOVE <pto>: Esta instrucción ordena al robot desplazarse al punto A


según la trayectoria que no impone el usuario.

MOVES <pto>: Esta instrucción ordena al robot desplazarse al punto A


siguiendo una línea recta.

APPRO <punto>, <distancia en mm> :Esta instrucción que generalmente


va seguida de MOVE, permite al robot acercarse a 50 mm del punto A
siguiendo el eje Z útil.

APPROS <punto>, <distancia en mm> : Equivalente a la anterior, pero


en este caso la aproximación se realiza en línea recta.

DEPART <distancia en mm> :Es la función inversa de APPRO, puesto


que hace que el robot parta del punto donde se encuentra situado en el
momento de la ejecución de la instrucción DEPART desplazándose a
una distancia indicada en mm según el eje Z útil.

DEPARTS el desplazamiento se realiza en línea recta.

SPEED <valor> [unidades][always]


Se pueden producir tres casos:
1.- Si no se declara ninguna unidad en la instrucción, el valor se
considera como un porcentaje de la velocidad normal (100%), lo cual
significa que, si la velocidad del monitor es del 40% y la velocidad del
programa del 60%, la velocidad de desplazamiento será del 24% de la
velocidad “normal”.
2.- Si se declara MMPS se trata de un desplazamiento expresado
en mm por segundo, siempre y cuando la velocidad del monitor sea 100.
3.- Si se declara IPS se expresa en pulgadas por segundo.

Si se indica ALWAYS, esta declaración de velocidad será válida


para todas las instrucciones de movimiento siguientes, hasta un nueva
declaración de velocidad que conlleve ALWAYS. Si se omite ALWAYS la
velocidad sólo concierne al movimiento siguiente.

OPEN, CLOSE: Realiza la apertura y cierre de la pinza respectivamente,


y es procesada en paralelo con las instrucciones de movimiento.

OPENI,CLOSEI: Se ejecuta una vez finalizada la instrucción de


movimiento anterior.

DELAY <tiempo> : Permite al robot detenerse durante el tiempo indicado


en la instrucción. Este tiempo se debe dar en segundos y estar
comprendido entre 0.01 y 900 seg.

SET <variable punto 1>=<variable punto 2> :Esta instrucción permite


asignar las coordenadas de la variable punto 2 a la variable punto 1.

DEST Asignamos a la variable declarada las coordenadas del destino


del robot en el momento en que se ejecuta la instrucción.

SHIFT (<punto> by [<expr 1>],[<expr 2>],[<expr 3>])


Esta instrucción añade o resta a las coordenadas del punto <punto> los
valores indicados en cada expresión.

DRIVE <expr1>,<expr2>,<expr3>: Esta instrucción permite desplazar la


articulación designada por EXPR 1, un cierto ángulo EXPR 2, a un
porcentaje de la velocidad monitor EXPR 3.

SUB-PROGRAMAS
CALL <nombre prog> : Un subprograma es un conjunto de instrucciones
independientes que se pueden llamar desde un programa principal.
RETURN Todos los sub-programas deben terminarse con la instrucción
RETURN.

SALTOS:
1. Saltos incondicionales
GOTO <etiqueta>
El número que hay detrás del GOTO es una etiqueta y no el número de
línea definido por el editor.

2. Saltos condicionales
IF <expresión> GOTO <etiqueta>
En la expresión, los símbolos relacionales son los siguientes:
>,>= ó =>, ==,<>,<,<= ó =<
Y se pueden asociar operadores lógicos mediante AND, OR, y NOT.
Ejemplo:
10 MOVE A
IF (A>3) OR (B<=7.82) GOTO 10
MOVE B

COMUNICACION ENTRE EL TECLADO Y PANTALLA


PROMPT “<mensaje>”,<variable>,<variable>,...
Esta instrucción permite, a partir del teclado, entrar los valores que se
asignan a las variables.

TYPE {/carácter de control},{variable},{etc.}


Esta instrucción permite hacer salir por pantalla un mensaje durante la
ejecución de un programa y/o hacer salir en pantalla el contenido de una
o varias variables declaradas.
Ejemplo: TYPE “VALOR de X=”, X
TPMESS “MENSAJE”
Es idéntica a TYPE salvo que en este caso el mensaje sale en la
pantalla del mando manual y no en la consola de visualización.
ENTRADAS
El número de entradas es 32. Sus direcciones son el número de entrada
sumado a 1000. Así la entrada 1 será la dirección 1001, la 2 será 1002, y así
sucesivamente.
Entradas por escrutinio
Es el programa quien en un momento dado va a escrutar las distintas
entradas.

1. IF SIG <expresión>,... GOTO etiqueta


Ejemplo: IF SIG (1001, -1003, 1002) GOTO 10
Si la entrad 1 es 1 y la entrada 3 es 0 y la entrada 2 es 1, entonces el
programa salta a la etiqueta 10.

2. WAIT <expresión>
Esta instrucción interrumpirá el programa hasta que la expresión sea
verdadera.

Entradas por interrupción


REACT <señal>,<programa>,[<prioridad>]
Cuando la señal pase al estado 1 , el programa una vez terminada la
instrucción que esté ejecutando, pasará a la ejecución del programa. La
prioridad debe tener un valor entre 1 y 127, y permite, en el caso en que
se indique, jerarquizar las llamadas a otros programas cuando son
simultáneas.

REACTI <señal>,<programa>,[<prioridad>]
Es análoga a la anterior, pero la respuesta a la interrupción, se realiza
inmediatamente.

Notas:
1.- Sólo se dispone de las 16v primeras entradas para provocar
reacciones.
2.- El sistema sólo reacciona ante cambios de nivel que se mantengan
estables al menos 30 ms.
3- Para suprimir una reacción se utiliza la instrucción IGNORE <señal>

SALIDAS
Hay 32 salidas, y sus direcciones corresponden con el número de salida.

SIGNAL <val1>, [<val 2>,<val 3>,...]


Los valores pueden ser expresiones matemáticas, constantes o
variables.

RESET
Pone a cero todas las salidas

CONTROL DE CONFIGURACION
READY: posiciona el robot de una forma particular.

ALIGN : permite poner el eje Z útil paralelo al eje más próximo del
sistema de referencia de la base (X, Y, o Z).

ABOVE/BELOW: Codo arriba/abajo.

LEFTY/RIGHTY: a la izquierda/derecha.

CONTROL DE TRAYECTORIA
Las instrucciones subrayadas son las tomadas por defecto.

COARSE [ALWAYS]. Esta instrucción permite, en el caso de que el


robot no llegue a su posición, que el ciclo no se detenga y no aparezca
el mensaje de error.

FINE [ALWAYS]. Es lo contrario de la instrucción anterior.

ENABLE CP. Declara que el servosistema de velocidad es prioritario


sobre l servosistema de posición.

DISABLE CP. Lo opuesto a la anterior.

NULL [ALWAYS]. La unidad central, espera que los movimientos de los


ejes hayan finalizado antes de ejecutar la siguiente instrucción.

NONULL [ALWAYS]. La unidad central espera que un sólo movimiento


llegue a su consigna para realizar la siguiente instrucción, de forma que
habrá un ligero error de posición.

INTOFF [ALWAYS ] : Esta instrucción es idéntica a coarse, aunque se


aplica al seguimiento de la trayectoria y no a la posición final.
INTON [ALWAYS] Es lo opuesto a la instrucción anterior.

BREAK: Esta instrucción permite hacer pasar en disable CP, sólo para
la instrucción de movimiento siguiente.

SISTEMAS DE COORDENADAS USADOS POR EL ROBOT

Sistema de coordenadas.

Referencias usadas por el Puma.

También podría gustarte