guía manual n° 2 - ELAI-UPM

Anuncio
GUÍA
VAL 2
MANUAL N° 2
© Copyright 1992 by STÄUBLI S.A.
D.280.172.05. (A)
INTRODUCCIÓN
Este curso es un complemento del curso nº 1 VAL II, por lo tanto es aconsejable tener bien
aprendido el curso nº 1 antes de abordar el curso nº 2.
Este curso comporta las instrucciones necesarias para:
•
•
•
•
La programación estructurada.
La conversión digital/analógica y analógica/digital.
La modificación de trayectorias en tiempo real.
Las funciones de autómatas programables o tratamiento de informaciones asincronas con
respecto al programa de movimiento del robot.
Para todas las instrucciones básicas referirse al curso nº 1 VAL II.
Este fascículo está estructurado para responder cuestiones:
•
•
•
•
•
en la primera parte, descripción de cada instrucción, en el caso en que pdría haber
ambigüedad, un ejemplo de aplicación lo más simple posible.
En anexo 1, un conjunto de ejemplos de aplicaciones con ejemplos para ayudar a una buena
asimilación de estas instrucciones.
En Anexo 2, algunos programas que contienen errores voluntarios de sintaxis y/o estructura,
unsted deberá encontrarlas ...
En Anexo 3, lista de palabras clave.
En Anexo 4, empleo de instrucciones que permiten trabajar en lenguaje máquina.
Es posible que este fascículo contenga inexactitudes o errores tipográficos. En ediciones posteriores
pueden aportarse modificaciones para mejorar su calidad.
Nota: Todas las instrucciones descritas en este fascículo corresponden a la versión 2.0 del logiciel VAL
II.
Buena asimilación !
1
SUMARIO
0. Convenios de escritura ................................................................................. 4 y 5
Funcionamiento en mono-tarea..................................................................... 6
Funcionamiento en multi-tarea ...................................................................... 7 y 8
Repaso .......................................................................................................... 9
Las variables reales ...................................................................................... 10 y 11
Las variables dimensionadas ....................................................................... 12 y 13
1. LLAST, RLAST ............................................................................................. 14
Operadores de relación y lógicos ................................................................. 15
Operadores matemáticas ............................................................................. 16
Operadores binarios ..................................................................................... 17
Orden relacional de desencadenamiento de las operaciones ...................... 18
FuncIones matematlcas ................................................................................ 19 y 20
Programas asincronos .................................................................................. 21
PCEXECUTE y PCEND, BRAKE ................................................................. 22
2. Instrucciones de movimiento ........................................................................ 23
STOP............................................................................................................. 24
Operaciones matemáticas con las coordenadas de los puntos .................... 25
DECOMPOSE ............................................................................................... 25
DX, DY, DZ .................................................................................................... 26
TRANS .......................................................................................................... 27
PPOINT ......................................................................................................... 27
SCALE........................................................................................................... 28
INVERSE....................................................................................................... 29 a 31
NORMAL........................................................................................................ 32
3. NULL.............................................................................................................. 33
DISTANCE ..................................................................................................... 34
INRANGE....................................................................................................... 35
TODIS, TOANG.............................................................................................. 36
HAND ............................................................................................................. 37
Funciones de control del robot ...................................................................... 38
PENDANT ...................................................................................................... 39 y 40
DET ACH, A TTACH ..................................................................................... 41
ERROR .......................................................................................................... 42
4. REACTE......................................................................................................... 43
STATE ........................................................................................................... 44 y 45
ID ................................................................................................................... 46
TPS ................................................................................................................ 47
STRANS......................................................................................................... 48
TIMER ............................................................................................................ 49
5. Instrucciones estructuradas de test ............................................................... 50
Introducción.................................................................................................... 51
DO ... UNTIL .................................................................................................. 52
WHILE ... DO ... END .................................................................................... 53
CASE...OF ... V ALUE...END ........................................................................ 54
IF... THEN...ELSE...END ............................................................................... 58
FOR... TO...END ........................................................................................... 59
6. Las señales de entradas y salidas exteriores "todo o nada" ......................... 60
Asignación general ........................................................................................ 61
Entradas sincronas, BITS .............................................................................. 62
Entradas asincronas, REACT O REACTI ...................................................... 63
PRIORIDAD de las distintas llamadas ............................................................ 64
2
PRIORITY....................................................................................................... 69
LOCK ............................................................................................................. 70
Aplicacion ...................................................................................................... 71
Salidas .......................................................................................................... 74
10PUT y 10GET............................................................................................. 75
7. Las senales de entradas y salidas "analágicas" ............................................ 76
Entradas analógicas ...................................................................................... 77
Caracteñsticas principales del convertidor de entrada................................... 78
Salidas analo.gicas ........................................................................................ 79
Caracteristicas principales del convertidor de salida...................................... 80
8. Funciones y comandos diversas .................................................................... 81
PARAMETER, TERMINAL, ADCGAIN, etc .................................................... 82
Interruptores software, DISK NET ................................................................. 84
DRY RUN ....................................................................................................... 85
EHAND .......................................................................................................... 85
INTERACTIVE................................................................................................ 85
NETWORK, SRV ERR, etc ............................................................................ 87
SWITCH ........................................................................................................ 88
PCST A TUS ................................................................................................. 89
PULSE .......................................................................................................... 90
ULIMIT o LLIMIT ............................................................................................ 91
SPEED (argument) ....................................................................................... 92
COMMANDS ................................................................................................. 93
I0
.............................................................................................................. 94
9. Modificación de trayectorias en tiempo real .................................................. 95
Principb ......................................................................................................... 96
Descripcion general ....................................................................................... 97
NOAL TER, AL TOUT ................................................................................... 98
Corrección en AL TER interno ...................................................................... 99
Corrección en AL TER externo ..................................................................... 100
Organigrama del principio de funcionamiento de la funcion AL TER ............ 101
Protocolo de envio de datas o mensajes ....................................................... 102
Comunicación de VAL II hacia un calculador exterior ................................... 104
Mensaje inicial ............................................................................................... 105
Mensaje corriente .......................................................................................... 106
Mensaje final ................................................................................................. 107
Comunicacion de un calculador exterior hacia el V AL II ............................... 108
Serial de recibo del mensaje inicial ............................................................... 109
Mensajes corrientes ...................................................................................... 110
Observaciones importantes ........................................................................... 112
Tiempo necesario para las transmisiones ..................................................... 113
Tiempo de transmision de V AL II hacia un calculador exterior ..................... 114
Tiempo de transmision de un calculador exterior hacia el VAL II................... 115
10. Anexo 1. Ejercicios de aplicación cronómetro de ciclo ................................. 116
Figuras
Collage
11. Anexo 2. Encontrar el error ........................................................................... 124
3
CONVENIO DE ESCRITURA
Vamos a pasar revista de las distintas instrucciones del lenguaje VAL II,
Por simplificación vamos a utilizar símbolos que rodean los parámetros de estas instrucciones.
[]
Este símbolo significa que los parámetros del interior de estos corchetes son facultativos.
<>
Este símbolo sirve para delimitar los distintos parámetros de la instrucción.
Ejemplo: EXECUTE [<TOTO>], [<3>], [<2>]
Significa que el nombre del programa TOTO, así como 3 y 2 son facultativos.
4
El lenguaje VAL II es un lenguaje adaptado a la robótica, destinado a hacer ejecutar al brazo del robot
o a las salidas de tareas especificadas.
El lenguaje VAL II posee su propia síntaxis o gramática la cual rige su estructura.
No acepta más de una instrucción por línea y el formato de una línea es el siguiente:
< número de línea > < instrucción Æ [; comentarios ]
Todas las instrucciones que componen un programa se ejecutan secuencialmente.
De todas formas, el ordenador a nivel interno anticipa ciertos cálculos (ver curso nº 1 VAL II).
El lenguaje VAL II tiene una estructura de funcionamiento mono o multi-tareas, es decir, que el
ordenador es capaz de ejecutar dos programas independientemente uno del otro o entrelazados, de
forma que se podría considerar que se trabaja con dos ordenadores separados.
5
FUNCIONAMIENTO EN MONO-TAREA
6
FUNCIONAMIENTO EN MULTI-TAREAS
7
Decimos Que el lenguaje VAL es un lenguaje “interpretado” ya que traduce cada línea del programa
en lenguaje máquina que es el único lenguaje aceptado por la unidad central, antes de encrutar la
siguiente instrucción.
Si todo el programa escrito en VAL II se tradujera a lenguaje máquina y luego se lanzara la ejecución en
lenguaje máquina se trataría de lenguaje “compilado”. Si este procedimiento tiene la ventaja de ser
más rapido en velocidad de ejecución, tiene el inconveniente de necesitar mucha memoria y ser muy
poco interactivo de cara al usuario (en caso de modificación del programa) esta razón es la que ha
llevado a la elaboración de un lenguaje VAL II interpretado.
8
REPASO
Un programa de robótica escrito en lenguaje VAL II comporta tres partes:
•
•
•
Parte de programa (xxxxx.PG),
Parte de variables de posición (xxxxx.LC)
Parte de variables reales (xxxxx.RV)
IMPORTANTE
Los nombres de programas, ficheros (Programas en disquette), variables reales o variables
puntos, pueden ser cualesquiera y comportar un número ilimitado de caracteres.
Pero es necesario:
1. Que el primer caracter sea obligatoriamente una letra.
2. Que los otros caracteres sean caracteres alfanuméricos (A...Z, 0 ... 1) y/o puntos.
3. Para las variables reales o puntos, se pueden utilizar corchetes, pero en este caso se tratará de
variables con índice.
4. Que el nombre no sea una palabra clave (ver anexo 3).
Ejemplo:
TOTO
TOTO.1
T1
ABZOARTUVHKLVUTRSKLOTUH.2
A
DUPONT.DURAND.TUTU.2
Etc...
Aunque A[1] solo se autoriza si se trata de una variable punto o real.
1TOTO esta prohibida ya que empieza por una cifra.
TOTO + 1 esta prohibido ya que el signo + no es un carácter alfanumérico ni un punto.
9
LAS VARIABLES REALES
Una variable real se puede atribuir explícitamente por el programador o como resultado de un cálculo
ordenado por el programa.
CARACTER DE DECLARACIÓN
Implícitamente, una variable se expresa en base decimal. Por razones de comodidad, a veces, estas
variables se pueden definir en:
-
Base octal
En este caso, el prefijo que añadimos ante el valor es “Λ”.
Ejemplo: A = Λ23
(2 x 81) + (3 x 80) = 19 en base decimal
16
3
Esta notación es interesante para la manipulación de entradas / salidas exteriores (ver capítulo
correspondiente).
10
-
En código ASCII
En este caso el prefijo es <<’>>
Ejemplo : A = ‘1
Todos los caracteres alfanuméricos o símbolos teienen una equivalencia binaria que se puede
codificar según un código internacional llamado ASCII con el fin de facilitar la transmisión de
información entre máquinas.
Así, el carácter ~ tiene el valor 176 (base octal, mientra que 1 tiene el valor 61 (en base octal).
No busquemos ninguna correlación entre estos valores ASCII y una base cualquiera se trata de una
tabla de equivalencia establecida de común acuerdo entre los constructores de material informático.
Usted encontrará esta tabla en el fascícula de programación suministrado con el robot.
ATENCION: Una variable a la que no se ha asignado ningún valor u operación no comporta el valor “0”,
para la máquina tiene un valor indefinido.
Ejemplo : y = y + 8
Respuesta de la máquina:
Æ
* UNDEFINITE VALUE *
Hay que hacer
Y=0
y=y+8
11
VARIABLES DIMENSIONADAS
Se pueden asignar índices a los nombres de variables reales y variables punto.
Ejemplo :
A[l] = 3.14
o
MOVE B [l]
l en este caso se debe considerar como una variable entera.
La utilización de variables dimensionadas es interesante, ya que más que asignar nombres distintos a
cada punto de una trayectoria, basta con incrementar el índice de la variable, lo cual simplifica
considerablemente la programación (ver los bucles FOR – END, curso Nº 1).
Así se obtiene una tabla que contiene 12 elementos.
12
Además, vemos que se pueden utilizar varios índices para una misma variable ya que se pueden
realizar operaciones matemáticas en el interior de los corchetes.
Paleta
X Æ J
¶
I
Ejemplo : MOVE A [ I * 10 + J * 1]
J para asignar el número de puntos de la trayectoria de la máquina
I para asignar el tipo de máquina.
El índice debe estar comprendido entre 0 y 63535 y ser un entero positivo.
13
LLAST (< nombre de variable punto [] <)
Gracias a esta instrucción, se puede obtener el valor máximo del índice de una variable punto
dimensionada.
Ejemplo : Supongamos que tenemos en el fichero de puntos, las variables siguientes.
X
A
...
B
...
X[1] ...
X[2] ...
C[2] ...
C
...
D
...
X[129] ...
Y[1] ...
G
...
Y
...
...
...
...
...
...
...
...
...
...
Z
...
...
...
...
...
...
...
...
...
...
O
...
...
...
...
...
...
...
...
...
...
A
...
...
...
...
...
...
...
...
...
...
T
...
...
...
...
...
...
...
...
...
...
Si en un programa, ejecutamos la instrucción:
VAR = LLAST (X[ ])
Obtendremos 129 en la variable real VAR.
RLAST (<nombre variable []>)
Esta instrucción es idéntica a la anterior, pero se refiere a las variables dimensionadas reales.
14
OPERADORES RELACIONALES
Operador
Descripción
Simbolo
Ejemplo
Menor que
A<B
IF A < B GOTO 10
A <= B (o A =< B)
IF A <= B GOTO 10
==
Menor o
Igual que
Igual que
<>
Distinto de
A <> B
>= = >
Mayor o
Igual que
Mayor que
A>=B (o A=>B)
De relación
<
<=
=<
>
A == B
A>B
OPERADORES LÓGICOS
Operadores
Función
Ejemplo
Descripción
AND
Y
IF ((B==3 AND (C==2)) GOTO 10
Si B = 3 Y C = 2
OR
O
(Inclusivo)
NO
IF ((B==3 OR (C==2)) GOTO 10
Si B = 3 o C = 2
Iremos a 10
Si B es distinto a 3
Iremos a 10
NOT
IF NOT (B == 3) GOTO 10
15
OPERACIONES MATEMATICAS
Operadores matemáticas
Importante: Para las distintas operaciones matemáticas, lógicas, etc ... se pueden agrupar las
operaciones con paréntesis.
Ejemplo:
En lugar de hacer:
A=3+B
G=7/3
C+A*G
K = C / 2.4
P=K–6
Se pueden hacer :
P = (( 3 + B) * 7 / 3) / 2.4 ) - 6
Del mismo modo no se aceptan 2 operadores puntos.
Ejemplo: A = B + - 3 no se acepta pero A = B + (-3) si.
16
OPERADORES BINARIOS
17
ORDEN
RELACIONAL
OPERACIONES
DE
DESENCADENAMIENTO
DE
Cuando la máquina debe ejecutar una expresión del tipo:
Z=(A/3+2–5*3)+4
Por qué operación elemental empieza ?
Para el software VAL II, las operaciones se ejecutan en el orden siguiente:
Nota : En el caso de idéntico nivel de prioridad, las operaciones, se realizan de izquierda a
derecha.
Consejo: Para evitar tener que conocer perfectamente la tabla superior, se pueden jerarquizar
las operaciones encuadrándolas entre paréntesis (el calculador, efectua primero las operaciones de los
parántisis más interiores.
18
FUNCIONES MATEMATICAS
Aparte de las cinco operaciones elementales, se pueden llamar funciones matemáticas particulares.
19
20
PROGRAMAS ASINCRONOS
Ejecución de dos programas simultáneamente.
PROG. PRINCIPAL
1 ? MOVE A
2 ? MOVE B
3 ? READY
4 ? SIG 1, -2
5 ? MOVE C
6 ? WAIT (SIG(1001) <> 0
7 ? TYPE “ES MARAVILLOSO”
8 ? TYPE “TODO VA BIEN”
Unidad
Central
PROG. AUXILIAR
1?A=A+B+4*7
2 ? WAIT (SIG(2002) <> 0)
3 ? TYPE <<PROGR PC>>
4 =? TIMER 4 = 0
5 ? G = (A / 3) * 7
6 ? SIG 1,3,8,19
El programa PC (programa auxiliar) puede comportar las mismas instrucciones que el programa
principal excepto las siguientes:
INSTRUCCIONES DE MOVIMIENTO
REACT
REACTI
REACTE
ATTACH
DETACH
BASE
TOOL
PROMPT
BREAK
DELAY
(esta instrucción se podría utilizar a partir de la versión 2.0).
El selector RESTART / HALT / RUN no afecta al programa PC.
Tabla comparativo funciones Principal – Auxiliar
Lanzar un programa
Detener un programa
Reemprender un programa
Reemprender un programa
Paro inmediato del movimiento
Detención al final del ciclo
EXECUTE PROG, 3
ABORTED
PROCEED
RETRY
PANIC
PCEXECUTE PROG, 3
PCABORTED
PCPROCEED
PCRETRY
PCEND
Nota: Si el PC está bloqueado en un bucle interno, hacer ΛC , seguido de PCABORT.
21
Además, las instrucciones:
PCEXECUTE Y PCEND
Se pueden ejecutar en un programa principal para sincronizar los dos programas entre sí.
Ejemplo:
PROG TOTO
1?
2?
3?
4?
5?
6?
7?
8?
9?
MOVE A
MOVE B
PCEX TITI, -3
MOVE G
MOVE D
PCEND
MOVE K
DELAY 5
MOVE D3
PROG TITI
1?
2?
Æ ejecución 3?
4?
SIG1, -2
TIMER 3 = 0
TWAIT TIMER (3)>=10
SIG –1, 2
Æ paro ejecución
OBSERVACIÓN:
Generalmente, se utiliza el programa auxiliar para asegurar las funciones de autómata programable en
paralelo o sincronizado con el programa de movimientos del robot.
Puede comunicarse con el programa de movimiento por medio de variables y/o bits de señales de
logiciel.
Puede ejercer un control sobre el brazo del robot por medio de BRAKE y/o ALTOUT.
Durante la ejecución de un programa auxiliar, éste no tomará más del 28% de los recursos de la unidad
central y pase lo que pase, no modificará la velocidad de los movimientos del brazo
BRAKE
Esta instrucción provoca el paro inmediato del brazo. Así, en un programa PC, se puede provocar un
paro bajo condición.
22
INSTRUCCIONES DE MOVIMIENTO
No volveremos sobre iinstrucción como MOVE, APPRO, DEPARTS, OPEN, etc (ver curso nº 1).
De todas formas recordamos que si definen incrementos de movimientos, demasiado pequeños, el
robot no los ejecutará inmediatamente sino que los acumulará de forma que la distancia entre dos
desplazamientos tenga al menos una duración superiora 140 ms para líneas rectas (MOVES A) Y 60 ms
para movimientos de interpolaciones angulares (MOVE A o MOVE # A).
Además, la unidad central siempre anticipa el cálculo del punto siguiente durante la ejecución del
movimiento.
MOVE A ! o APPRO A!, 50
Esta instrucción es idéntica a MOVE A o APPRO A, 50, salvo que se asigne al punto A la posición del
robot en el momento de teclear RETURN (®).
Ejemplo:
18?
MOVE A! ®
23
STOP
Esta instrucción permite interrumpir la ejecución de un programa. Se pueden distinguir dos casos:
1er. Caso: la ejecución del programa sólo se ha pedido una vez.
En este caso, el programa acabará cuando se encuentra la instrucción STOP, incluso cuando esta
instrucción se encuentre en un subprograma.
Ejemplo:
EX TOTO, 1
1? MOVE A
2? MOVE B
3? CALL TITI
PROG TITI
1? MOVE G
2? STOP
3? TYPE “HOLA”
4? RETURN
ÆParo
2º CASO: Se ha pedido la ejecución varias veces.
En este caso, la unidad central reemprenderá la ejecución de las instrucciones a partir del principio del
programa principal, incluso si esta instrucción se encuentra en un subprograma.
Ejemplo:
EX TOTO, -1
PROG TITI
1? MOVE A
2? MOVE B
3? CALL TITI
1? MOVE G
2? STOP
3? TYPE “HOLA”
4? RETURN
ÆVuelta al paso 1
del programa principal
24
OPERACIONES MATEMATICAS CON LAS COORDENADAS DE
PUNTOS
DESCOMPOSE <variable dimensionada> = <variable punto>
Esta instrucción permite asignar las coordenadas X, Y, Z, O, A, T del punto definido por “variable punto”
(o las coordenadas angulares de los 6 ejes, si se trata de un punto de precisión) a los seis primeros
elementos de la variable dimensionada.
Ejemplo: DESCOMPOSE
Y [] = PTA
Y[0] <= X = 100 (en mm)
Y[1] <= Y = 30 (en mm)
Y[2] <= Z = 20 (en mm)
Y[3] <= 0 = 90 (en grados)
Y[4] <= A = -90 (en grados)
Y[5] <= T = 0 (en grados)
Esta función también vale para los puntos de precisión.
DESCOMPOSE TOTO [ ] = #PT 1
Aunque los valores asignados a la variable dimensionada TOTO serán en grados:
25
DX ( <COMP 1> )
DY ( <COMP 2> )
DZ ( <COMP 3> )
Esta instrucción es idéntica por su efecto, a la orden DESCOMPOSE analizada anteriormente, pero solo
afecta al eje deseado (no funciona con los angulos O, A, T).
Ejemplo:
Si PTA =
X = 100
Y = 30
Z = 20
0 = 90
A = -90
T=0
X1 = DX (PTA) => X1 = 100
X2 = DZ (PTA) => X2 = 20
26
TRANS ({<expr>}, {<expr>}, {<expr>}, {<expr>})
Es la operación inversa de DESCOMPOSE, de esta forma, con la ayuda de valores, se puede
reconstituir un punto. Gracias a esta instrucción se pueden realizar operaciones matemáticas con las
coordenadas de un punto y asignar el resultado a éste.
Ejemplo:
MOVE A
MOVE TRANS (X * 1.27, X/cas (angle), Z* 3.29, 4*2, 20*3.28,0)
Pero ATENCIÓN, TRANS no funciona para puntos de precisión. En este caso utilizaremos la instrucción
PPOINT.
PPOINT (<expr>}, {<expr>},{<expr>}{<expr>}{<expr>}{<expr>}
Ejemplo:
MOVE # PPOINT (x[0], x[1] + 7, x[2]*sin(a), x[3], x[4], x[5] –28)
27
SCALE (<transformada> BY <expresión>)
Esta instrucción permite una operación matemática (multiplicación, división, etc...) con los valores de las
coordenadas X, Y, Z de los puntos designados.
Ejemplo: si el punto Q tiene por coordenadas:
Q
X
Y
Z
O
A
T
300
50
10
90
-90
0
Q=SCALE(Q BY 2) Î Q
X
Y
Z
O
A
T
600
100
20
90
-90
0
Constatamos que las coordenadas X, Y, Z se han multiplicado por Z (pero no O, A, T)
28
INVERSE <punto>
Ejemplo: SET G = INVERSE (A)
Si A es una transformación que define un punto con respecto a la referencia de base, INVERSE (A)
definirá la referencia del robot con respecto al punto A.
29
APLICACIÓN
Si deseamos obtener la transformación B a partir de la transformada A y C, cómo lo haremos?
Se puede escribir:
[C] = [A].[B] así [A-1].[C] = [A-1].[A].[B]
[I]
Matriz identidad
Así:
[B] = [A-1].[C]
por lo que es útil la función INVERSE:
SET B = INVERSE (A):C
Recordamos que la multiplicación no es commutativa para el producto matricial, lo caul significa que si
multiplicamos una expresión por una matriz a la derecha, deberemos multiplicar la otra por una matriz a
la derecha.
30
EJEMPLOS
Disponemos de las cotas del punto T con respecto a la ref de base O (estas cotas se han definido
previamente por una orden HERE, POINT, etc).
Se conocen las coordenadas del punto A.
Deseamos obtener las cotas del punto T con respecto a la referencia útil situada en el punto A.
Se puede escribir.
T=A.B
B es la transformada entre el punto T y el punto A
Desconocido
Conocido
Conocido
En VAL II - - > SET T = A : B
Entonces B = A – 1 . T
En VAL II => SET B = INVERSE (A) : T
Cotas del punto T con respecto al punto A.
31
NORMAL (<punto>)
Esta instrucción permite reducir los errores del cálculo en transformadas compuestas sucesivas.
Ejemplo: MOVE A:B:C:D:E:F:G
Hemos visto que por encima de 5 transformaciones, se obtienen errores de cotas muy importantes.
Para reducirlas, tenemos la posibilidad de hacerlo con la instrucción NORMAL. Procederemos de la
manera siguiente:
MOVE A:B:C:D:E:F:G
SET X = A:B:C:D:E:F:G
SET X = NORMAL (X)
MOVE X
32
NULL
Esta instrucción permite definir un vector NULL del tipo.
X
0
Y
0
Z
0
O
90
A
-90
T
0
y representa por los ángulos 0, A, T la posición “READY” del robot ya que READY representa la
posición nula mecánicamente).
Ejemplo: SET B = NULL
A menudo, esta instrucción se utiliza para reinicializar una variable punto.
ANTES
DESPUES
Punto B
X = 123
Y = -17
Z = -127
0 = 90
A = -10
T = +30
Punto B
X=0
Y=0
Z=0
0 = 90
A = -90
T=0
SET B = NULL =>
33
DISTANCE (<comp 1>, <comp 2>)
Esta instrucción da la distancia en mm entre dos puntos.
Ejemplo 1 : X = DISTANCE (A,B)
A
155 mm
B
34
INRANGE ( C )
O
INRANGE (A:B)
Esta instrucción permite definir, en una variable, un código el cual, según su valor nos dirá si el eje 1
está fuera del límite, etc...
Ejemplo : ER = INRANGE (A:B)
ER podría tomar los siguientes valores:
0
1
2
4
8
16
32
64
128
256
Se puede llegar al punto
El eje 1 estará en limite
El eje 2 estará en límite
El eje 3 estará en límite
El eje 4 estará en límite
El eje 5 estará en límite
El eje 6 estará en límite
Reservado para aplicaciones futuras.
El punto estará demasiado cerca de la columna del robot
El punto estará demasiado lejos de la columna del robot.
Ejemplo: 20T = INRANGE (B)
IF (T ==0) GOTO 5
IF (T == 256) GOTO 10
.
.
.
5 TYPE “TODO VA BIEN”
GOTO 20
TYPE “NO SE PUEDE LLEGAR AL PUNTO, ESTA DEMASIADO LEJOS DE LA
COLUMNA DEL ROBOT”
NOTA:
Esta instrucción sólo funciona con los puntos de transformada, y no con los puntos de
precisión.
35
TODIS
Esta instrucción nos da el factor de conversión que utiliza el calculador para convertir las dimensiones,
expresadas en mm para cada tipo de robot (260, 560, 761, 762, ...)
TOANG
Esta instrucción es identica a la anterior pero se refiere al coeficiente que afecte los ángulos.
36
HAND
Esta instrucción permite declarar el estado de la pinza en una variable.
37
FUNCIONES DE CONTROL DEL ROBOT
38
PENDANT (<expresión>)
Hemos visto que el robot se puede desplazar manualmente gracias al mando manual, por las teclas
situadas en este mando, o por el armario de mandos, por un código que se puede detectar a través de
un programa en lenguaje VAL II.
Ejemplo: X = PENDANT (2)
Si obtenemos en la variable X, el valor (Λ20) deduciremos que el botón COMP del mando manual, ha
sido presionado.
39
40
DETACH
Esta instrucción ordena dar el control del brazo del robot al mando manual. Así, el usuario podrá en el
interior de un programa, desplazar el brazo manualmente para situarlo en el lugar deseado.
ATTACH
Esta instrucción permite dar control del brazo del robot a la unidad de mando.
Ejemplo:
MOVE A
MOVE B
DETACH
TYPE “DESPLAZARSE AL PUNTO C POR FAVOR”
TYPE “CON LA AYUDA DEL MANDO MANUAL”
TYPE “CUANDO LLEGUE, PRESIONAR COMP”
* WAIT (PENDANT (2) BAND Λ20 <> 0
SET C = HERE
ATTACH
MOVE K
MOVE C
* Nota:
También podríamos haber utilizado:
WAIT (STATE (3) == 5) <> 0
41
ERROR (<expresión>)
Esta instrucción permite obtener un código que indica el tipo del último error que se ha producido.
Si la expresión es 0, se trata del último error encontrado en un programa robot.
Si la expresión es 1 se trata de un error en un programa PC.
Si la expresión es –1 se trata del último error que se ha recibido de un calculador exterior a través de la
función ALTER externa.
Ejemplo
X = ERROR (0)
TYPE “EL CODIGO DE ERROR ES EL SIGUIENTE “, X
Ver el cuadro del fascículo de lenguaje VALII, apéndice F.
42
REACTE <programa>
Si ocurre algún error después de la ejecución de esta instrucción, el programa se desviará hacia el
programa designado.
Ejemplo:
error:
Invalide ->
Solution
1 MOVE A
2 REACTE ACCIDENTE
3 MOVE B
4 MOVE C
5 MOVE K
6 MOVE F
-> PROG ACCIDENTE
1 ATTACH
2 MOVE J3
3 TYPE “HAY UN PROBLEMA”
4 RETURN
De todas formas, un programa PC, no puede contener instrucciones REACTE.
El programa designado no se interrumpe nunca por consideraciones de prioridad.
El programa de tratamiento provocado por un error, siempre debe empezar por la instrucción ATTACH.
El objetivo de esta instrucción, es permitir el paro o la puesta en marcha de un proceso perirobótico
después de un error. La ejecución de esta instrucción con otros fines requiere extrema prudencia.
43
STATE (<expresión>)
El objetivo de esta instrucción, es conocer el estado de la unidad de comando (1), brazo del robot (2) o
mando manual (3).
Si la expresión es igual a 1
Ejemplo : X = STATE (1)
Nos referimos al cuadro inferior para interpretar el código encontrado en la variable X.
Obtenemos el estado de la unidd de comando.
Valor
0
1
2
3
4
5
6
7
Sistema instalándose. Todavía no hay alimentación en el brazo.
Ha aparecido un FATAL ERROR y la alimentación del brazo no se puede hacer.
En espera de que se presione el botón de alimentación del brazo.
Se acaba de alimentar el brazo.
Se ha validado el modo manual.
Se está calibrando
Se esta efectuando el comando LIMP (robot 260)
El brazo está bajo el control de un programa de aplicación.
Si la expresión es igual a 2
Nos obtenemos el estado del brazo del robot;
Valor
0
1
2
3
4
5
6
7
8
9
10
No se ha ejecutado ninguna instrucció de desplazamiento
Se está haciendo el cálculo de la trayectoria.
El movimiento está detenido sobre un punto definido
No hay error de posición en un punto final indefinido.
El movimiento se ha detenido sobre un punto indefinido.
Declaración para situarse en modo HOLD.
Detención en modo HALT.
Declaración debida a la ejecución de una instrucción REACTI o BRAKE
Paro debido a las instrucciones REACTI o BRAKE.
Deceleración debida a un error generado por el sistema o paro PANIC.
Paro debido a un error generado por el sistema o paro PANIC.
44
Si la expresión es igual a 3
Obtenemos el estado del modo manual
Valor
0
1
2
3
4
5
Ejemplo:
Modo
OFF
FREE
JOINT
WORLD
TOOL
COMP
V = STATE (3)
Si en la variable V encontramos el valor 4, significa que el mando manual está en modo TOOL.
Si la expresión es igual a 4
Valor
0
1
Modo
No calibrado
Calibrado
Si la expresión es igual a 5
Para el robot 562
Valor
0
1
2
3
Modo
PAYLOAD 4kg, ELSPOFF
PAYLOAD 4 kg, ELSPON
PAYLOAD 2,5 kg, ELSPOFF
PAYLOAD 2,5 kg, ESLPON
Para el robot 760
Valor
Modo
0
1
ELSPOFF
ELSPON
45
ID (<expresión>)
Esta función describe la configuración del robot: esta instrucción es útil en el caso de un supervisor que
quiera conocer la configuración del sistema supervisado.
Ejemplo: VA = ID (1) => VA = 560
Es el modelo 560.
Los argumentos son los siguientes:
1 => Modelo
2 => Nº de serie
3 => Versión del logiciel
4 => Revisión
5 => Tipo de opción
46
TPS
Esta instrucción permite sabel el número de impulsos generados por el sistema de tiempo interno en la
unidad central, para el encadenamiento de las distintas secuencias.
VA = TPS => VA = 34.72222
Armario robot
Este valor corresponde al número de segmentos elementales de 28 ms) por unidad de tiempo (1 seg).
Nota: Se puede deducir que 2 ms es el período mientras 34.72222 la frecuencia del sistema de
tiempo interno.
47
STRANS <nombre variable > []
Esta instrucción permite obtener, en una tabla dimensionada, el modelo matemático (la matriz de
transfert) de la posición del robot en el momento en que esta instrucción se ejecuta.
Ejemplo: STRANS A []
A [] es un cuadro constituido por 12 elementos, de los cuales los 9 primeros representan la matriz de
rotación y los 3 últimos representan la matriz de traslación.
Estos elementos se deben multiplicar por los coeficientes (TODIS para los elementos de traslación) para
ser utilizables.
Nota: Esta instrucción también puede figurar en un programa PC pero sólo funciona a partir de la
versión 2.0 de VAL II:
48
TIMER número = valor
(-2 < 0 = número < 0 = 15) entero, real, expresión, etc ...
Esta instrucción permite afectar un contador (TIMER) con un valor cualquiera.
Ejemplo: TIMER 3 = 10
Preselecciona el valor 10 segundas en el timer nº 3 por lo tanto timer nº 3 va a incrementarse en
segundos en paralelo al funcionamiento de la unidad de comandos y su contenido será accesible por el
programa en el momento deseado.
TIMER (<expresión>)
Esta instrucción permite recuperar un contenido (en segundos) de un TIMER designado por una
expresión.
Ejemplo 1: TP = TIMER (3)
TYPE “VALOR DEL TIMER (3) = “, TP
Aparecerá:
2648.458
Así podemos hacer una temporización muy precisa con la ayuda del programa siguiente:
1
2
3
4
MOVE A
TIMER 4 + 0
WAIT TIMER (4) <= 5
MOVE B
Obtenendremos una temporización de 5 segundos entre el movimiento de A y el de B.
Los timers 0, -1, -2 son timers particulares:
-
El TIMER (0) responde al reloj interno del sistema, y por lo tanto solo puede ser leído.
El TIMER (–1) empieza a descontar el principio de un movimiento hasta llegar al valor 0 en el
momento en que se llega a destino, esto sirve para determinar el tiempo previsto para un
desplazamiento elemental.
El TIMER (-2) es similar al TIMER (-1) salvo que el valor 0 se obtiene cuando empieza la
deceleración de movimiento.
Observación: Si los TIMERS (1) al (15) no se preseleccionan, tienen un valor identico a TIMER (0).
49
INSTRUCCIONES ESTRUCTURADAS DE TEST
50
INSTRUCCION
Estas instrucciones de test, se llaman estructuradas porque obligan al programador a estructurar
convenientemente su programa.
En efecto, un programa estructurado, permite una claridad mayo y, por lo tanto, una mayor facilidad
para todas las modificaciones posteriores (lo cual supone una ventaja no despreciable en robótica).
Las instrucciones de test estructuradas son las siguientes:
-
DO ... UNTIL
WHILE ... DO ... END
CASE ... OF ... VALUE ... END
IF ... THEN .... ELSE ... END
FOR ... TO ... STEP ... END
51
DO
<bloque de paso de programa>
.
.
.
UNTIL < expresión lógica >
Esta instrucción permite realizar un bloque de paso de programa hasta que el resultado de la expresión
lógica sea cierto.
Constatamos que con este tipo de instrucción, el bloque de paso de programa se ejecuta al menos una
vez.
Ejemplo: PROG BUCLE 1
1
MOVE A
2
DO
3
MOVE G
4
MOVE F
5
TYPE “EJECUCION DEL CICLO”
6
MOVE F3
7
UNTIL SIG (1001)
8
TYPE “EL CICLO SE HA TERMINADO”
Cuando el nivel de la entrada 1001 esté en el estado 1, en pantalla aparecerá
EL CICLO SE HA TERMINADO.
52
WHILE <expresión lógica > DO
<bloque de paso de programa>
END
Esta instrucción permite (como la instrucción DO ... UNTIL), realizar un bloque de paso de programa,
hasta que el resultado de la expresión lógica sea falso (al contrario que la expresión DO ... UNTIL).
Cuando el resultado sea falso, el programa continuará ejecutando las instrucciones que siguen la
instrucción END.
Ejemplo: PROG BUCLE 2
MOVE A
WHILE SIG (1001) DO
MOVE G
MOVE F
TYPE “EJECUCION DEL CICLO”
MOVE F3
END
TYPE “EL CICLOS SE HA TERMINADO”
Cuando el nivel de la entrada 1001 pase al estado 0, en pantalla aparecerá.
EL CICLO SE HA TERMINADO
De todas formas, aunque el principio parezca similar a la instrucción anterior (DO .. UNTIL) constatamos
que el programa no está obligado a ejecutar al menos una vez (caso en que SIG (1001) = 0, desde el
principio del programa).
53
CASE <expresión> OF
VALUE <expresión> {,... < expresión >};
<bloque de paso de programa>
.
.
.
VALUE <expresión> {... <expresión>}
<bloque de paso de programa>
{ANY}
{<bloque de paso de programa>}
END
Esta instrucción de test permite realizar un u otro bloque de instrucciones en función del valor declarado
en la lista que sigue VALUE.
Ejemplo:
PROG ELECCION
1
2
3
4
5
6
7
8
9
10
MOVE A
CASE TUTI OF
VALUE 1,2 :
TYPE “EL VALOR DE TUTI ES 1 O 2”
VALUE 3,4:
TYPE “EL VALOR DE TUTI ES 3 O 4”
ANY
TYPE “EL VALOR DE TUTI ES DISTINTO A 1,2,3,4”
END
TYPE “HE TERMINADO”
54
En el ejemplo anterior, vemos que en el caso que TUTI tenga el valor 3, el programa irá a ejecutar la
línea 6 y saltará a la ejecución de las diversas instrucciones que siguen la instrucción END.
Esta instrucción tiene la ventaja de realizar de una sola vez el organigrama siguiente:
55
Además, esta instrucción es muy útil para el tratamiento de procesos de automatismos industriales con
ramas paralelas selectivas (método GRAFCET) ejecutado normalmente por un programa PC auxiliar.
Ejemplo: Deseamos hacer funcionar tres cilindros según el ciclo:
b, c , d, e, f, g son los finales de carrera de los distintos cilindros.
M es el botón de inicio del ciclo.
S1 es un selector.
56
El programa será el siguiente:
; Puesta a 0 de salidas
; Espera pulsar n
; Test del selector S1
; Salida del pistón V1
; Espera final carrera
; Entrada pistón V!
, Espera final carrera
; Salida del pistón V2
; Espera final carrera
; Entrada pistón V2
; Espera final carrera
; Salida del pistón V3
; Espera final carrera
; Entrada pistón V3
; Espera final carrera
; Retorno al inicio
57
IF ... THEN ... ELSE ... END
Ejemplo:
11
12
13
14
15
16
17
18
19
20
MOVE A
IF N> 6 THEN
TYPE “N>6”
SIG 2
ELSE
TYPE “N<= 6 “
SIG 1
DELAY 3
END
MOVE B
Consejo:
Para facilitar la lectura de un programa, a veces es interesante presentar las
instrucciones ELSE, END con ligero decalaje. Esto se hace automáticamente con el logiciel VAL II en el
caso de tests entrelazados.
9
10
11
12
13
14
15
16
17
18
MOVE A
IF N> 6 THEN
IF G < 2 THEN
TYPE “SI”
ELSE
TYPE “NO”
END
ELSE
TYPE “DESCONOCIDO”
END
58
FOR ... TO ...STEP ... END
Esta instrucción permite realizar un número de bucles de programa sin estar obligado a crear un puntero
“contador”.
Ejemplo:
MOVE A
FOR I = 1 TO 10 STEP 1
MOVE B
MOVE C
END
El robot se desplazará entre los puntos B y C diez veces seguidas.
Los extremos inferiores y superiores, así como el paso, pueden ser variables que contengan valores
reales negativos o positivos.
Ejemplo:
MIN = 0.23
MAX = 19.72
FOR J = MAX TO MIN STEP –0.37
MOVE B
MOVE C
END
59
LAS SEÑALES DE ENTRADAS Y SALIDAS EXTERIORES
“TODO O NADA”
60
ASIGNACIÓN GENERAL
Dirección
Pagina 0
Pagina 1
Pagina 2
Pagina 3
1 a 32
1 001 a 1 032
2 001 a 2 032
3 001
(Sólo se puede leer)
3 002
(Solo se puede leer)
Asignación
Salidas exteriores
Entradas exteriores
Bits internos
Programa del robot activo
Programa del
posición HOLD
robot
en
61
ENTRADAS (1001 a 1032)
Si pulsamos sobre el detector exterior CP1 y no sobre CP2 obtenemos:
A = SIG (1001) => A = -1 (car. –1 = verdadero)
A = SIG (1002) => A = 0 ( car.0 = falso)
Si damos
A = SIG (1001, 1002) => A = 0
Función Y
Observación : A = SIG (1, 1002)
Es una instrucción aceptada ya que, en este caso, consideramos el estado 1 de la salida nº1 y el estado
1 de la entrada 1002.
62
BITS (<señal>, {<bits>})
Esta instrucción permite coger el estado de las entradas asignadas, para asignarlos a una variable real.
Ejemplo:
63
REACT < señal >, < programa>, [<PRIORIDAD>]
O REACTI <señal>, <programa>, [<PRIORIDAD>]
1 < o PRIORIDAD < o = 127
No volveremos sobre el principi de estas instrucciones que ya han sido analizadas en el curso VAL II nº
1.
De todas maneras, vamos a desarrollar más ampliamente la sutileza de estas instrucciones a nivel de
su prioridad.
Hay que considerar que el programa principal está implicitamente afectado por el valor de prioridad 0 (el
más bajo).
Un subprograma conectado después de la ejecución de una instrucción REACT o REACTI sin índice
de prioridad, es considerado como nivel de prioridad 1 y puede ser interrumpido por un subprograma
conectado por un REACT o REACTI que tenga un índice de prioridad superior (maxi 127)
Este índice de prioridad se puede actualizar en un subprograma con la instrucción LOCK
Índice de prioridad
Ejemplo:
.
REACTI 1001, TOTO 12
REACTO 1002, TUTU, 120
MOVE A
MOVE B
El programa TUTU será prioritario con respecto al programa TOTO.
Observación :
T = 1001
REACTI T, TOTO
Funciona ya que la señal puede ser una variable, pero T debe estar
comprendido imperativamente entre 1001 y 1016.
64
PRIORIDAD REACTI
1º Caso:
65
PRIORIDAD REACTI
2º. Caso :
Atención:
Aunque la prioridad del programa TITI queda oculta por la del prog TOTO, ésta provocará un
punto de paro y el ciclo encadenará la ejecución del movimiento siguiente si DEST no está.
66
PRIORIDAD REACT
1er caso.
67
PRIORIDAD REACT
2o caso:
68
PRIORITY
Ejemplo : X = PRIORITY
Esta instrucción indica el valor del índice de prioridad que se ha declarado para la ejecución de la
instrucción REACT o REACTI.
Ejemplo:
PROG PRINC
1 ? MOVE A
2 ? REACTI 1001, TOTO ? 12
3 ? MOVE B
4? MOVE C
PROG TOTO
1 ? MOVE G
2 ? Y = PRIORITY
3 ? TYPE “EL COEFICIENTE DE PRIORIDAD ES”
4 ? MOVE G
5 ? RETURN
Veremos aparecer el valor 12 en pantalla.
69
LOCK <PRIORIDAD>
La prioridad debe estar comprendida entre 0 y 127 y ser:
-
un valor numérico
un variable real
una expresión aritmética
Por esta instrucción se puede cambiar el valor de prioridad definido al ejecutar la instrucción REACT o
REACTI.
Esta instrucción se utiliza en el interior de un subprograma, llamado por la reacción y asignará un nuevo
índice de prioridad, que será válido hasta la ejecución de la instrucción RETURN del subprograma en
cuestión.
Ejemplo:
PROG PRINC
1
2
3
4
5
6
MOVE A
REACTI 1001, TOTO,12
MOVE B
REACTI 1002, TUTU, 20
MOVE C
MOVE D
PROG TOTO
1
2
3
4
5
6
7
MOVE G
MOVE DE
LOCK PRORITY + 30 <- El prog TOTO verá creer su prioridad en
MOVE K
30, ya no podrá ser interrumpido por TUTU
MOVE F
hasta RETURN
MOVE T
RETURN
70
Se puede desear, durante el empleo de las instrucciones REACT y REACTI, volver a puntos o
movimientos distintos a los que corresponden a la instrucción
Utilización de la instrucción REACT o REACTI
1er caso:
Deseamos
Ejemplo:
PROGRAM PRINC.0
1
REACTI 1001, TUTU
2
MOVE A
3
MOVE B
4
MOVE C
5
MOVE D
END
PROGRAM TUTU
1
2
3
END
TYPE “ESTOY EN EL SUBPROGRAMA”
MOVE A9
RETURN
71
2o caso:
Deseamos
72
3er caso:
deseamos:
73
SALIDAS (1 a 32)
Nos volvemos a las instrucciones vanales del tipo SIG, etc ..., que ya hemos visto en el curso 1.
PC <señal>, {<bits>} = <valor>
Esta instrucción permite asignar, sobre un conjunto de salidas en que el número de la primera salida es
declarado por señal y el número de salidas por la variable bits, el valor de una variable (que será
convertido implicitamente en binario).
Ejemplo:
A=9
PC 15,4 = A
9 Î 1001 en binario
74
IOPUT dirección = valor
Esta instrucción permite poner un valor en la dirección designada.
Esta dirección deberá estar comprendida entre 57344 (160000 octal) y 65535 (177777 octal).
El valor, así como la dirección, puede ser una expresión aritmética, un valor real o una variable.
IOGET (dirección)
Esta instrucción hace la función inversa a la anterior. De esta forma obtenemos el contenido de la
dirección designada.
Ejemplo: X + IOGET (dirección)
La dirección puede ser una expresión aritmética, un valor real o una variable.
Esta función és util para saber el contenido de entradas en una tarjeta suplementaria de
entradas/salidas.
Para más información sobre estas dos instrucciones, ver el manual de programación.
75
LAS SEÑALES DE ENTRADAS Y SALIDAS EXTERIORES “ANALÓGICAS”
76
ENTRADAS ANALOGICAS
Estas entradas permiten convertir tensiones exteriores en valores numéricas.
Forma general
ADC (<CANAL>)
De 0 a 15
Ejemplo :
X = ADC (6)
X toma un valor entero entre –2048 y +2047 para una tensión exterior comprendida ente
–10 V y +10 V (para una ganacia = 0)
Nota: Para obtener una mayor precisión se puede modificar la ganancia del convertidor con la
instrucción siguiente.
PARAMETER ADC.GAIN = 0
Valor GANANCIA
0
1
2
3
Gama tensión (V)
-10 V a 10 V
-5 V a 5 V
-2,5 V a 2,5 V
-1.25 V a 1,25 V
Resolución
2.44 103 V
1.22 103 V
0.61 103 V
0.305 103 V
Por defecto el valor de la ganancia se toma 0.
77
CARACTERISTICAS PRINCIPALES DEL CONVERTIDOR
Tipo
Nº Entradas
Impedancia de entradas
Capacidad
Error máximo
Codificación
Tensión que no hay que sobrepasar
Resolución
Valor
16
1MΩ
< 50 pf
1LSB (1 bit menos significativo)
Complemento verdad
+/- 25 V
12 bits
Nota: Para los esquemas de cableado de entradas y salidas ver el capítulo diversos al final de
este documento.
78
SALIDAS ANALOGICAS
Estas salidas permiten convertir expresiones numéricas en tensiones directamente proporcionales.
79
CARACTERISTICAS PRINCIPALES DEL CONVERTIDOR
Nº de salidas
Impedancia de salida
Intensidad máximo de salida
Linearidad
Resolución
2
0.1 Ω
5mA
+/- 0.012%
12 bits
80
FUNCIONES DIVERSAS
81
PARAMETER <nombre parámetro > = valor
Esta instrucción permite parametrizar funciones particulares.
Ejemplo: PARAMETER ADC.GAIN = 2
Nótese que esta función funciona en modo comando y en modo programa.
PARAMETER (nombre función)
Esta instrucción permite obtener el valor del elemento parametrizado.
Ejemplo:
1 MOVE A
2 G = PARAMETER (ADC.GAIN)
3 TYPE “VALOR DE LA GANANCIA” , G
Al ejecutar el programa aparecerá 2 en pantalla.
Nótese que esta función también funciona en modo comando, aunque entonces no hay paréntesis.
Ejemplo:
. PARAMETER ADC.GAIN
.2
82
Los elementos que se pueden parametrizar son:
HAND TIME
Esta instrucción determina la duración de las instrucciones OPENI y CLOSEI, la cual debe estar
comprendida entre 0 y 32 767 veces 28 milisegundos.
El valor, por defecto es 6, así que, la duración será de 168 ms para la ejecución de las operaciones
OPENI y CLOSEI.
Ejemplo: PARAMETER HAND.TIME = 12
TERMINAL
Esta instrucción permite transponer los distintos códigos ASCII salidos de los terminales SOROC(0),
ADDS (1), HAZELTINE(2), VT 100 (3), de forma que estos terminales tengan las mismas posibilidades
que el terminal Unimation suministrado con el robot.
Ejemplo: PARAMETER TERMINAL = 1
ADC.GAIN
Se puede definir la ganancia de las entradas analógicas, los valores se deben escoger entre 0, 1, 2 y 3.
Para más precisión, ver el capítulo Entradas/Salidas analógicas.
Ejemplo: PARAMETER ADC.GAIN = 3
Por defecto la ganancia queda definida a 0.
83
INTERRUPTORES LOGICIELS
En el curso nº1 VAL II hemos visto que con las instrucciones DISABLE y ENABLE, se podía conectar o
desconectar. La función CP (Continous Path).
Existen otras funciones que se pueden validar o no de esta forma. Estas funciones son las siguientes:
DISK.NET
Hasta que este comando sea validado, asociado con la validación de NETWORK, el logiciel VAL II,
utiliza el lector de disquette para comunicarse, por eso, inicialmente, esta función está inhibida.
Ejemplo: ENABLE DISK.NET
DRY.RUN
Esta función permite la ejecución de un programa VAL II sin desplazar el brazo del robot, a la vez que el
brazo del robot queda bajo el control del mando manual.
Ejemplo: Se desea simular el desplazamiento de distintos elementos perirobóticos (pistones, motores,
detectores, ...) en una aplicación en que la gestión del proceso se efectua por el programa
principal, pero se desea que el brazo del robot quede immovil aunque hay instrucciones de
desplazamiento.
PROG TOTO
1
2
3
4
5
5
6
7
10
14
MOVE A
IF SIG (1001, 1004) GOTO 14
MOVE B
GOTO 10
SIG 1, -2
; salida del pistón 1 y entrada del pistón 2
WAIT (1005, 1006)
SIG –1, 2
; Entrada del pistón 1 y salida del pistón 2
84
EN DRY.RUN
Ejemplo: TOTO, -9
El brazo del robot no se desplazará entre el punto A y el punto B pero se podría verificar el buen
funcionamiento de los pistones.
EHAND
Esta instrucción se debe utilizar únicamente para el empleo de una mano asistida. Permite validar el
servo.
INTERACTIVE
En lenguaje Val II, algunos comandos o instrucciones piden confirmación para ejecutarse. En el caso en
que se inhiba la interactividad, estas demandas de confirmación no aparecerán más.
Ejemplo: Inicialmente:
. CAL
ARE YOU SURE (Y/N) = Y ®
El calibrado se ejecuta,
Si
.DIS INTERACTIVE
.CAL
el calibrado se ejecuta sin pedir si estamos seguros...
Nota: Inicialmente esta instrucción está validada.
85
MESSAGES
Esta función es similar a INTERACTIVE, pero solo afecta a los mensajes de las instrucciones TYPE o
PROMPT.
En el caso en que se inhiban (por medio de DIS MESSAGES), los comentarios contenidos entre
comillas no apareceran:
Ejemplo:
EN MESSAGES
1 MOVE A
2 TYPE “TODO VA BIEN”
3 MOVE B
Durante la ejecución, aparecerá, TODO VA BIEN en pantalla.
DIS MESSAGES
1 MOVE A
2 TYPE “TODO VA BIEN”
3 MOVE B
Durante la ejecución, TODO VA BIEN, no aparecerá en pantalla.
86
NETWORK, REMOTE.PIN, SUPERVISEUR
Estas tres funciones sirven, esencialmente cuando el robot comunica con un calculador u ordenador
exterior (ver curso sobre supervisor).
Inicialmente, estas funciones son invalidadas.
SRV.ERR
La unidad de mando vigila constantemente la trayectoria del brazo del robot durante sus
desplazamientos y emite un mensaje si ésta se separa demasiado de la consigna previamente
calculada (mensaje de estilo “ENVELOPE ERROR JT 6”).
Este seguimiento se asegura por un programa interno en la unidad de comando, pero se puede suprimir
declarando DISABLE SRV.ERR.
Inicialmente, esta función está validada.
87
Observaciones generales
Se pueden validar o inhibir varias funciones a la vez con la condición de separarlas por comas.
Ejemplo:
ENABLE SRV.ERR, DRY.RUN, DISK.NET
Nótese que ENABLE y DISABLE funcionan tanto en modo comando como en programa.
Además, se puede visualizar el estado (ENABLE o DISABLE) de una o varias funciones, utilizando el
comando:
SWITCH {<funcion 1>}, {,..., <función n>}
Ejemplo: SWITCH CP, DRY.RUN
Visualizará los estados de CP y de DRY.RUN.
Nótese que SWITCH sólo funciona en modo comando.
88
PCSTATUS
Este comando permite conocer el estado del programa complementario PC.
Se obtiene:
•
•
•
•
•
el estado de funcionamiento o no funcionamiento del PC.
El número de bucles ejecutados.
El numero de bucles por ejecutar.
El nombre del programa.
El paso del programa donde éste se ha detenido.
Nótese que PCSTATUTS solo funciona en modo comando.
89
PULSE < valor >
Con valor 1 o 2
Esta instrucción, que se puede emplear en el programa PC, permite generar una pulsación de duración
200 MS.
El valor representa el número de salida afectada por esta instrucción.
Nota: Esta instrucción se emplea sobretodo en la soldadura.
200 ms
Robot
Salida nº 1
90
ULIMIT o LLIMIT
Esta instrucción permite conocer el límite máximo (ULIMIT) y mínimo (LLIMIT) de cada articulación y
eventualmente, modificar según un procedimiento idéntico a la orden POINT.
También se puede restringir el campo de movimiento de una o varias articulaciones para no entrar en
una zona prohibida.
Nota: Este comando sólo funciona en modo comando, pero se puede introducir en un programa
AUTOSTART.
91
X = SPEED (argumento)
Si X = SPEED (1):
- obtenemos en la variable X, la velocidad monitor.
Si X = SPEED (2):
- obtenemos en la variable X, la velocidad que hayamos definido en el programa (con la instrucción
SPEED <valor> ALWAYS).
Si X = SPEED (3):
- obtenemos en la variable X, la velocidad del último movimiento o del movimiento actual.
Si X = SPEED (4):
- obtenemos en la variable X, la velocidad del programa del movimiento siguiente
92
COMMANDS <programa>
Este comando permite realizar el encadenamiento de distintas tareas, tal y como lo hace el comando
AUTOSTART (ver curso nº1 VAL II).
La diferencia está en que el encadenamiento empezará a partir de la función COMMANDS, que
entremos por teclado, mientras que el proceso AUTOSTART, empieza cuando pulsamos el botón
situado en la parte frontal.
Además, en este caso, el programa no se tiene que llamar obligatoriamente AUTO.
Ejemplo: PROG FER
1 ? MEC CAL
2 ? MC SP 10
3? MC DO TYPE “********”
4? MC EX TOTO, 3
•
COMMADS FER
El robot asegurará su calibrado, se situará a velocidad monitor 10 y ejecutará el
programa TOTO, 3 veces seguidas.
Nótese que COMMANDS sólo funciona en modo comando.
93
IO
Este comando permite visualizar en pantalla el estado de las entradas/salidas de una forma global. La
visualización en pantalla es dinámica. Se sale de este modo de visualización haciendo ΛC.
Ejemplo:
32-29 28-25 24-21 20-17 16-13 12-09 08-05 04-01
00XX
10XX
20XX
0000
0000
0000
1100
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000 0000 0000 0000 0000
Las salidas 27 y 28 están en el estado 1.
Nótese que IO sólo funciona en modo comando.
94
MODIFICACION DE TRAYECTORIAS EN TIEMPO REAL
95
PRINCIPIO
Sería interesante poder modificar, en cualquier momento, una trayectoria previamente definida. Esta
modificación, podría tener lugar como resultado de indicaciones dadas por detectores, cámaras de
visión, etc, ... exteriores al robot (elementos perirobóticos) o de parametros salidos del calculador
interno del robot, a través de la función PC.
Esta modificación de trayectoria en tiempo real solo puede tener lugar en DELAY o en movimientos en
línea recta.
96
DESCRIPCIÓN GENERAL
El programa principal deberá comportar la siguiente instrucción:
97
NOALTER
Esta instrucción o comando permite detener el control de la trayectoria en tiempo real (salir del MODO
ALTER).
Si el modo ALTER no está validado, esta instrucción no tiene ningún efecto.
En todos los casos, veremos aparecer “ALTER PAUSING” seguido de “ALTER ENDING” para indicar
que el comando ALTER esta invalidado.
ALTOUT <código excepción>, {<dx>,},{<dy>,},{<dz>,},{<rx>,}, {<ry>,},{<rz>,}
A partir del programa auxiliar “PC” se pueden transmitir los siguientes valores:
Sintaxix
DX
DY
DZ
RX
RY
RZ
Descripción
Desplazamiento según el eje X
Desplazamiento según el eje Y
Desplazamiento según el eje Z
Rotación alrededor del eje X
Rotación alrededor del eje Y
Rotación alrededor del eje Z
Normalmente el código de excepción está a cero para toda operación ALTER clásica. Si este código
tiene un valor distinto de cero, el programa se desviará (como con la instrucción REACT) al
subprograma designado en la declaración de la función ALTER y el código se puede recuperar en la
función EXCEPTION.
Ejemplo: X = EXCEPTION
Si hay un error, el calculador exterior deberá enviar un valor negativo y éste se podrá recuperar por
ERROR (-1).
Ejemplo : X = ERROR (-1).
98
Corrección de trayectorias
Con la ayuda de la función ALTER interno (en modo WORLD – coord. De base)
PROG TRAJ
1
2
3
4
5
6
PCEND
PCEXECUTE MODIF, -1, 0
ALTER (-1, 18)
10 MOVE A
MOVES B
GOTO 10
PROG MODIF
1
2
3
4
5
COEF = 200
FOR ANG = 1 TO 360
X = SIN(ANG)*COEF
ALTOUT 0,0,0,X,0,0,0
END
ALTER (-1,18)
Alter
Interno
+
+
+
+
=
0 x 1 <- bit 0 -> 0
1 x 2 <- bit 1 -> 1
0 x 4 <- bit 2 -> 0
0 x 8 <- bit 3 -> 0 o 1
1 x 16 <- bit 4 -> 1
18
-> Valor no acumulativo.
-> WORLD
-> Sin mensaje
-> Sin importancia (no hay mensajes)
-> Utiliza los datos de entradas Alter
99
Corrección de trayectorias
Con la ayuda de la función ALTER externo (en modo WORLD – coordenada de base).
El logiciel VAL II envía a un ordenador exterior mensajes (36 por segundo), el ordenador exterior debe
responder al envio de estos mensajes enviando los DX, DY, DZ, RX, RY, RZ esperados por el robot
para modificar la trayectoria en tiempo real. Este intercambio deberá durar hasta que se slaga del modo
Alter, si no, aparecerá un mensaje de error.
El desarrollo del proceso Alter se efectua de la forma siguiente:
100
Organigrama: Principio de funcionamiento de la función Alter
101
Protocolo de envío de datos o mensajes
Nota: El puerto nº2, para conectarlo en serie, en tiempo real, debe estar configurado imperativamente
a 19 200 baudios.
102
Nota:
Si, en la transmisión de datos, aparece el valor 144 (en base 10) (DLE), el sistema reemite un
segundo valor 144 (DLE) que será transparente para el octeto verificador.
Si en la recepción de datos, el sistema ve aparecer dos valores 144 (DLE) sucesivos, evacuará
automáticamente el segundo (siempre transparente para el octeto verificador).
Nótese que si el calculador exterior, no genera un segundo DLE en la transición de datos puede haber
pérdida de datos o aparición de mensajes de error de transmisión.
103
Acabamos de ver que los distintos datos, se transmiten por la conexión RS 232 C según un protocolo
estricto.
Vamos a ver los mensajes que puede enviar el Val II al ordenador exterior.
104
Mensaje inicial
105
Mensaje inicial
106
Mensaje final
Consiste simplemente en enviar el octeto de control al calculador, el cual no tiene que responder al
envío de este octeto.
107
COMUNICACION CALCULADOR
EXTERIOR HACIA VAL II
Vamos a analizar los distintos mensajes que puede enviar el calculador exterior hacia el VAL II como
respuesta a los enviados por el VAL II.
108
Señal de mensaje inicial recibido.
Cuando el VAL II, después de la ejecución de la función ALTER, envía el mensaje: “ALTER Empieza” el
calculador debe dar una señal de mensaje recibido en un tiempo dado, mediante un octeto de recibo.
El valor de este octeto puede tomar el siguiente valor:
1 (Base 10) - >
0
0
0
0
0
0
0
1
El calculador externo ha detectado un error en la comunicaicón y pide al Val II retransmitir el mensaje
inicial. Pasadas 4 tentativas el VAL II para y emite un mensaje de error.
0 (Base 10) - >
0
0
0
0
0
0
0
0
El calculador externo indica que todo es correcto y que está preparado para recibir los mensajes
corrientes.
-1 (Base 10) - >
1
1
1
1
1
1
1
1
El calculador externo indica que no ha podido entrar en modo ALTER y le pide al Val II que interrumpa
el proceso y el envío de mensaje de error.
109
110
Observaciones importantes
1.
2.
Inicialmente los valores de los parámetros ejes están puestos a cero.
En modo acumulativo los ejes no seleccionados son percibidos por el lenguaje Val II como si
estuvieran a cero.
En modo no acumulativo los ejes no seleccionados se consideran por VAL II como invariados.
3.
los valores de los distintos parámetros de entradas (X, Y, Z, Rot. X, Rot. Y, Rot Z) se expresan
respectivamente: en mm X, Y, Z en grado Rot. X, Rot. Y, Rot. Z.
Aunque:
Para el robot modelo 260, estos valores enviados por el calculador se deben multiplicar por:
48.81143 (+/- 700 mm) para X, Y, Z
182.0444 (+/- 180 grados) para Rot.X, Y, Z
Para el robot modelo 560 estos son los valores:
32.00000 (+/- 1 024 mm) para X, Y, Z
182.0444 (+/- 180 grados) para Rot.X, Y, Z
112
TIEMPO NECESARIO PARA LAS TRANSMISIONES
Una vez empieza el proceso ALTER (se ejecuta la instrucción ALTER), y que la modificación de la
trayectoria empieza, los intercambios entre VAL II y el calculador se efectuan en períodos de 28 ms.
Cada 28 milisegundo, el VAL II transmite un mensaje y espera una respuesta del calculador.
En modo acumulativo, el tiempo máximo que puede tardar el calculador exterior en transmitir su
respuesta (a partir del DLE emitido por el VAL II al final del mensaje) es de 16 ms.
En modo no acumulativo, esta respuesta se debe hacer en 18 ms.
Si se sobrepasan estos tiempos, aparece un ERROR TIMEOUT, y el programa se interrumpe después
de 3 tentativas sucesivas con resultado de ERRORES TIMEOUT.
113
Tiempo de transmisiones VAL II -> calculador exterior
El tiempo necesario para que el Val II transmita totalmente un mensaje Alter al calculador exterior
depende del tipo de transformada, del número de octetos enviados. Escogiendo los casos más
desfavorables obtenemos.
Mensajes que no comportan datos de transformada
Mensajes que comportan datos de transformada
Nº Octetas
15
Tiempo
7,3 ms
52
27,1 ms
114
Tiempo de transmisiones calculador exterior -> Val II
Estos tiempos están en función del modo y la longitud del mensaje utilizado.
Nota:
El tiempo definido anteriormente es el tiempo máximo del que debe disponer el calculador para
empezar a responder el mensaje enviado por VAL II.
Constatamos que cuanto más largo sea el mensaje enviado por el ordenador, el calculador
dispondrá de menos tiempo para responder.
115
ANEXO
Ejercicio nº 1
CRONOMETRO ELECTRONICO
Para el cálculo del tiempo de ciclo de un programa se desea cronometrar el tiempo de ciclo de un
programa cualquiera (en nuestro caso para la simulación utilizamos un program MT).
116
Conexión del cronómetro: debemos dar la hora, minutos y segundos.
PROGRAM ensayo 1
1
2
3
4
PROMPT “DAR LA HORA EN H, MN, S”, h,m,s
Val = H * 3600 + m *60 + s
TIMER 3 = val
RETURN
END
Paro del cronómetro (por el robot): obtendremos la hora, minutos y segundos y la duración del ciclo.
PROGRAM ensayo 2
1
2
3
4
5
6
7
8
9
x = TIMER
h = INT (x/3600)
y = x – (h * 3600)
M= INT (y/60)
S = INT (x – (h*3600 + m*60))
TYPE “ES”, h, “HORA”, m, “MINUTOS”, s, “SEGUNDOS”
dur = x – val
TYPE “DURACIÓN DEL CICLO”
RETURN
END
Programa cronómetro completo
Programa cualquiera para la simulación
PROGRAM pp
PROGRAM mt
1 CALL ensayo 1
2 CALL mt
3 CALL ensayo 2
END
1 MOVE mt
2 MOVE mt1
3 MOVE mt2
4 MOVE mt3
END
117
GRAFICOS ROBOTIZADOS
Se pide:
1.
Establecer el programa de forma que, en función de los distintos parámetros entrados por
teclado, se puedan obtener las siguientes figuras
Nota: Estas figuras se realizarán con respecto a un punto relativo declarado y
según la referencia útil.
2.
Misma pregunta, pero con respecto a un nuevo tiedro previamente declarado en una orden
FRAME.
118
119
Programa correspondiente al ejercicio nº 2, pregunta nº 1
PROGRAM ROSA.PARAM
1
MOVE INICIO 1
2
FOR T = 1 TO 5
3
TYPE
4
END
5
TYPE”PROGRAMA DE ROSACEAS PARAMETRIZABLES”
6
TYPE
7
TYPE
8
TYPE”RESPONDER A LAS PREGUNTAS POR FAVOR “
9
TYPE
10
TYPE “GRACIAS Y BUENOS DIAS...”
11
TYPE
12
TYPE
13
PROMPT”NUMERO DE PETALOS ( 1 al 10)”, A
14
PROMPT “ANCHURA DE LOS PETALOS ( 0 A 10)” , B
15
PROMPT “NUMERO DE FIGURAS (1 A 10)”, P
16
PROMPT “ VALOR DEL PASO (0.1 A 1)”, PASO
17
PROMPT “LONGITUD DE LOS PETALOS (5 A 100)”, K
18
R = K / (B + 1)
19
FOR I = 0 TO (360 * P) STEP PASO
20
X = R * (COS (A*1) + B) * COS (I)
21
Y = R * (COS (A *1) + B) * SIN (I)
22
MOVE D: TRANS (X,Y,0,90,-90,0)
23
END
END
120
Programa correspondiente al ejercicio nº 2, pregunta nº 2
PROGRAM rosáceas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
; prog rosáceas parametrizables
; con respecto a un triedro cualquiera
; en el espacio
CALL text 1
TYPE “origen de la referencia”
CALL text2
FOR y = 1 TO 40
TYPE
END
ELAY
SET or 4 = xyz
CALL text1
TYPE “un punto situado en el eje”
CALL text2
FOR t = 1 TO 40
TYPE
END
DELAY
SET or2 = xyz
CALL text1
TYPE “un punto situado en el plano x,y”
CALL text2
SET or3 = xyz
SET c = FRAME (or4, or2, or3, or4)
FOR t=1 TO 5
TYPE
END
TYPE “programa de rosáceas parametrizables”
TYPE
TYPE
TYPE “responde a las preguntas siguientes por favor”
TYPE
TYPE “gracias y buenos dias”
TYPE
TYPE
PROMPT “número de pétalos (1 a 10)”, a
PROMPT “ancho de los petalos (0 a 10)”, b
PROMPT “número de figuras (1 a 10)”, p; idéntico a PE: período de la rosácea
PROMPT “valor del paso (0.1 a 1)”, paso; idem a PA
PROMPT “ longitud de los pétalos (5 a 100)”, k; idem a radio
r= k 7 (b+1)
FOR i = 0 TO (360 * p) STEP paso
x1 = r*(COS (a*i) + b) * COS (i)
y1 = r (COS (a*i) + b) * SIN (i)
MOVE c: TRANS (x1, y1, 0,90,0)
END
END
PROGRAM text 1
1
2
3
TYPE “desplazar el robot para “
TYPE “situarlo en: “
RETURN
END
PROGRAM text2
1
2
3
4
5
6
7
TYPE “cuando este listo presionar”
TYPE “comp en el mando manual”
DETACH
WAIT PENDANT (2) == Λ20
SET xyz = HERE
ATTACH
RETURN
END
121
Ejercicio Nº 3
Aplicación utilizando la función ALTER INTERNO
Deseamos poner una junta de cola en una pieza de plástico triangular. Para que la junta sea
homogénea, superponemos un movimiento en diente de sierra entre A y B y un movimiento en forma de
almena entre B1 y C, el movimiento entre A y C se hará linealmente.
122
Pregunta: Si el programa cuadrado hubiera sido:
y = k1
TIMER 1 = 0
WAIT (TIMER (1) < 0.3) <> 0
ALTOUT 0,0,Y,0,0,0
y = -k1
TIMER 1 = 0
WAIT (TIMER (1) >= 0.3) <> 0
ALTOUT 0,0,Y0,0,0
Por que no habría funcionado?
123
Anexo 2
Encontrar el error ( o los errores) en los programas siguientes:
124
Ejercicio de despaletización de decapsuladores
Se pide:
1.
2.
3.
4.
Despaletizar los decapsuladores de un soporte para presentarlos al cliente cuando este pulse
BP1.
Si el cliente pulsa BP2, la pinza se abre y puede recuperarlo
Si pasan 10 seg. y no ha pulsado BP2, el decapsulador cae en una caja y el robot va a buscar
otro.
Cuando el palet esté vacio indicar “rellenar” y “Después de rellenar, teclear “PROCEED y pulsar
RETURN””.
125
PROGRAM AERO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
SPEED 30
MOVE R1, 40
3 OPENI
WAIT SIG (1001)
SPEED 30 ALWAYS
A1 = A
FOR L = 1 TO 4
FOR K = 1 TO 5
SPEED 100
APPRO A1, 100
MOVES A1
BREAK
CLOSEI
DEPARTS 100
SPEED 100
MOVES B
TIMER 1 = 0
2
X = TIMER (1)
IF SIG 1002 GOTO 1
IF X < 10 GOTO 2
1
OPENI
SET A1 = SHIFT (A1 BY 50,0,0)
END
SET A1 = SHIFT 5A1 BY 50, 0? 0)
END
SPEED 100
MOVE R1
TYPE “RELLENAR CUIDADOSAMENTE EL PALET DE LA MESA”
TYPE “TECLEAR PROCEED PARA CONTINUAR”
PAUSE
GOTO 3
END
Hay 5 errores .... Encontrarlos
126
Ejercicio de aplicación
Deseamos perforar 5 agujeros en 4 coronas de quemador de gas, y esto, en 3 soportes de los cuales
uno (Ref 1) está situado verticalmente.
Realizar el programa utilizando la instrucción FRAME.
127
CONFIGURACIÓN DEL SISTEMA ANALÓGICO
128
Cableado de entradas analógicas
En modo referencial
129
Descargar