Download GUÍA VAL 2 MANUAL N° 1

Document related concepts
no text concepts found
Transcript
GUÍA
VAL 2
MANUAL N° 1
© Copyright 1992 by STÄUBLI S.A.
D.280.172.05. (A)
ÍNDICE
A.
B.
C.
D.
E.
F.
G.
H.
I.
J.
K.
L.
M.
N.
Introducción ......................................................................................3
Presentación y arquitectura general .................................................4
La seguridad .....................................................................................8
Puesta en marcha y paro de la unidad de mando ............................10
Referencias, características y definición de los ángulos ...................17
Cómo poner en movimiento el brazo del robot, examen de
los mandos manuales, convenios de escritura .................................22
Como lanzar un programa ................................................................27
Como ejecutar un programa durante su ejecución ...........................29
Modos de funcionamiento ................................................................31
Como crear un programa ..................................................................32
Comandos de edición .......................................................................33
Estructura y operaciones con el contenido en memoria ....................47
Variable punto .................................................................................49
Punto de precisión ...........................................................................50
Variable real y operaciones matemáticas ........................................52
Variable dimensionada .....................................................................55
Visualización de títulos y contendo (LISTP, LISTR, etc,) .................56
Declaración de programas y variables .............................................57
RENAME, COPY, DELETE .............................................................59
Carácter de control del terminal (pantalla / teclado) ........................61
Instrucciones del lenguaje VAL II .......................................................62
Generalidades sobre la ejecución de instrucciones .........................63
MOVE, MOVES ................................................................................65
APPRO, APPROS ............................................................................66
DEPART, DEPARTS ........................................................................67
SPEED .............................................................................................68
OPEN, CLOSE, OPENI, CLOSEI ......................................................69
DELAY, SET, DEST .........................................................................70
Listado de las palabras clave ...................................... ....................73
SHIFT ................................................................................................74
DRIVE ...............................................................................................75
Presentación de programas .............................................................76
Como comentar un programa ..........................................................78
Interrupción de un programa con PAUSE, HALT ............................79
Los subprogramas ............................................................................80
Los saltos condicionales e incondicionales .......................................82
Operadores lógicos y relacionales .....................................................83
Comunicación pantalla /teclado ........................................................84
PROMPT ..........................................................................................85
TYPE .................................................................................................86
TPMESS ...........................................................................................89
Entrada / salida exteriores (todo o nada) .........................................91
Entradas por escrutinio: IF SEG, WAIT ............................................92
Entrada por interrupción: REACT, REACTI ......................................93
Salidas: SIGNAL RESET, RUNSIG ...................................................96
1
O. Cambio de referencia .......................................................................99
Cómo desplazar la referencia de base ............................................100
Cómo desplazar la referencia útil ....................................................101
Transformadas compuestas ...........................................................102
FRAME ...........................................................................................105
P. Control ..............................................................................................106
READY ...........................................................................................107
ALIGN .............................................................................................108
ABOVE, BELOW ............................................................................109
RIGHTY , LEFTY ............................................................................110
FLIP, NOFLIP .................................................................................111
Q. Control de trayectoria ........................................................................112
COARSE, FINE ..............................................................................113
DISABLE CP, ENABLE CP, NULL, NONULL .................................114
INTOFF, INTON, BREAK ................................................................115
ELSPON, ELSPOFF .......................................................................116
PAYLOAD .......................................................................................117
R. Operaciones con disquetes ...............................................................118
FORMAT, LISTF, STORE, LOAD, DELETE, COMPRESS, RENAMEF
S. Procedimiento AUTOSTART .............................................................127
Su papel, su procedimiento .............................................................128
T. Comandos específicos: STATUS, FREE, DONE, ZERO, WHERE ...130
AN. Anexa: Ejemplo de aplicación ...........................................................132
Diversas
- cableado de entradas
- cableado de salidas
- cableado del conector para impresora
2
INTRODUCCIÓN
Estos fascículos se han concebido como soporte del curso para asegurar la formación de los usuarios
de robots en lenguaje VAL II VAL +.
Sirven para complementar el "PROGRAMMING MANUAL" suministrado con coda robot y en ningún
caso pueden sustituirlo.
El numero de estos fascículos es de tres, correspondiendo cada uno a un curso.
Se han dividido los cursos sobre robots que utilizan el lenguaje VAL II o VAL + en tres partes.
1. Un curso que permite la utilización de funciones básicas del robot. Es el curso n° 1, suficiente para la
gran mayoría de las aplicaciones industriales.
2. Un curso sobre todas las instrucciones y posibilidades del lenguaje. Comprende también la
modificación de trayectorias en tiempo real. Es el curso n° 2.
3. Un curso sobre la función supervisor, (comunicación y pilotaje a través de otro ordenador), es el curso
n° 3.
Nota importante.
Para seguir los cursos nº2 y nº3, se necesita poseer bien las bases definidas en el curso nº1.
P.S.: La parte posterior de cada hoja se ha dejado voluntariamente en blanco a fin que usted pueda
escribir sus anotaciones personales durante el curso.
Todas las instrucciones descritas en este fascículo corresponden a la versión 2.0 del logiciel VAL II VAL
+.
3
PRESENTACIÓN GENERAL
4
CONFIGURACIÓN MATERIAL
5
LA SEGURIDAD EN GENERAL
Regla n° 1: Vigilar que no haya nadie en el perímetro del robot en el momento de puesta en marcha de
este.
Regla n° 2: En la ejecución de un programa, SIEMPRE se deberá arrancar a VELOCIDAD LENTA. Una
vez completado un ciclo se puede aumentar progresivamente la velocidad hasta el valor final deseado.
Regla n° 3: Durante la puesta a punto de un programa, estar SIEMPRE preparado para pulsar el
BOTON OFF y como último recurso, pulsar uno de los BOTONES ROJOS situados en el armario de
mandos.
Regla n° 4: Al finalizar el desplazamiento del robot con el mando manual, poner la velocidad lenta.
8
REGLAS DE SEGURIDAD
CONCERNIENTES AL PERSONAL DE MANTENIMIENTO
Regla n° 1: Antes de cualquier intervención sobre el brazo cortar la alimentación de éste.
Regla n° 2: Antes de desmontar un motor, desconectar:
1. la alimentación (conector grande).
2. el encoder (conector pequeño).
Regla n° 3: Antes de cualquier intervención dentro del armario de la unidad de mandos, cortar la
alimentación general.
Regla n° 4: Después de montar los encoders del motor verificar que los conectores estén bien
conectados.
Regla n° 5: En todos los casos, cuando se ponga bajo tensión la unidad central, asegurarse de que no
hay nadie en el radio de acción del brazo.
9
PUESTA EN MARCHA DE LA UNIDAD DE MANDOS
1. Poner en el estado 1, el interruptor general (1) detrás de la unidad de mandos del robot.
2. Verificar que el testigo (2) en la parte anterior, está encendido.
3. Poner en el estado 1 la consola de visualización (3) y esperar que aparezca un punto luminoso
en la pantalla.
4. Girar la llave (4) (situada en la parte anterior del robot), que permite la alimentación general de la
unidad central.
5. Esperar la aparición del mensaje sobre la pantalla:
*VAL II BOOT V1.2 16 APR 84*
LOAD VAL II FROM FLOPPY (Y/N) ?
- Usted deberá teclear sobre el teclado Y (tecla Y) y ® (® significa pulsar la tecla return a la
derecha del teclado). Si desea cargar el logiciel VAL II del disquete a la unidad central (caso de
una máquina con memoria volátil).
- En este caso aparecerá:
ROBOT SERIAL # ?
Entonces usted deberá indicar el número de serie del robot situado detrás del armario de
mandos y esperar, después de la carga:
INITIALIZE (Y/N) ?
(ver Pág.)
- Usted deberá teclear sobre el teclado N® si dispone de una versión Cmos en la que el logiciel
ha sido cargado anteriormente (al menos una vez).
Usted vera aparecer su pantalla:
VAL II
Versión del logiciel
T56O.1.3.
Tipo de robot
H/W-O
Código interno
26 Oct.84
Fecha de elaboración del logiciel
28KW
Número de palabras disponibles
(cantidad de memoria
disponible)
(24 KW real)
COPYRIGHT 1981 UNIMATION Inc._________________________________________________
Año de deposito legal
Constructor
10
INITIALIZE (Y/N) ?
Usted debe responder por Y o N.
- Si teclea y ® se destruyen todos los programas que hay en la memoria de la máquina.
- Si teclea N ® los programas existentes todavía presentes se conservan.
En los dos casos, la máquina responderá con el mensaje:
LOADING OVERLAY DATA, TYPE ΛC TO ABORT
La máquina estará cargando la corrección de linearidad de los distintos encoders del robot.
Si se quiere interrumpir este proceso, pulsar la tecla CTRL y la tecla C simultáneamente.
6. Se debe alimentar el brazo pulsando el botón verde (el testigo verde se ilumina).
Atención: Estar preparado para pulsar el botón rojo en caso de comportamiento aleatorio.
7. Pulse el botón Comp en el mando manual si su testigo no estuviera iluminado.
Nota: Si, por cualquier razón, no se carga el fichero OVERLAY; o si usted quiere cargar un
nuevo fichero de OVERLAY a cambio del antiguo, se puede cargar en modo COMANDO
utilizando:
OVERLAY XXXX
con XXXX Æ nombre del fichero de OVERLAY elaborado por el proceso "POTCAL".
Este comando debe ir seguido generalmente de un calibrado.
11
8. Prodecer a un calibrado tecleando CAL ®, la máquina responderá :
ARE YO SURE (Y/N) ?
Verificar la posición del robot (obstáculos).
Si Usted responde Y ® el robot se desplazará ligeramente sobre todos sus ejes, efectuándose el
calibrado.
9. Eventualmente teclear SP 20 ® arrancar un programa con el máximo de seguridad (SP 20 pide a la
máquina que se desplace lentamente).
Entonces, el robot está preparado para aceptar sus instrucciones.
Nota: todos los mensajes subrayados son los mensajes enviados por la máquina.
12
SIGNIFICADO DEL CALIBRADO
Inicialmente el robot no conoce su posición en el espacio, éste puede saber su posición consultando
sus potenciómetros situados al extremo de cado uno de sus motores. Una vez memorizada su posición,
todos los desplazamientos serán relativos a esta posición (y incrementados o decrementados por el
encoder incremental).
13
EN RESUMEN: COMO PONER EN MARCHA EL ROBOT?
1. Poner el interruptor en el estado 1.
2. Poner la pantalla de visualización en el estado 1.
3. Poner la llave del armario en la posición 1.
4.
*VAL II BOOT V1.2 16 APR 84*
LOAD VAL II FROM FLOPPY (Y/N) ?
Responder Con Y® o N®
5.
VAL II T560.1.3.H/W-0
26 Oct.84 28 KW
COPYRIGHT 1981 UNIMATION Inc.
INITIALIZE (Y/N) ?
Responder Con Y® o N®
6.
LOADING OVERLAY DATA, TYPE LC TO ABORT
La máquina está cargando el fichero OVERLAY.
Teclear: control C si se quiere interrumpir el proceso de carga.
7. Poner la alimentación del brazo en la posición 1.
8. Calibrar
9. Poner a velocidad baja.
SPEED 20 (o SP 20)
14
CÓMO PARAR EL ROBOT?
1. Cortar la alimentación del brazo.
2. Cortar la alimentación de la unidad de mandos (llave en la posición 0).
3. Apagar la consola de visualización.
4. Cortar la alimentación general (interruptor de la parte posterior).
15
ATENCIÓN
A partir de la versión 2.0, si se responde Y ® a la pregunta:
LOAD VAL II FROM FLOPPY (Y/N) ¿
Aparecerá :
LANGUAGE FOR VAL II ERROR MESSAGES:
English (0), French (1), German (2), Spanish (3) ?
Seleccione el número correspondiente al idioma deseado: de esta manera, todos los mensajes
de error aparecerán en el idioma escogido.
16
LAS REFERENCIAS
El robot dispone de 2 sistemas de referencia:
- una referencia universal,
- una referencia útil.
17
DEFINICIÓN DE LOS ÁNGULOS O, A, T
18
19
LAS CARACTERÍSTICAS DE LOS DESPLAZAMIENTOS ANGULARES
20
LIMITES ANGULARES
21
CÓMO PONER EN MOVIMIENTO EL BRAZO DEL ROBOT?
Una vez que la unidad de control se ha puesto en marcha:
Hay dos sistemas.
a) por el mando manual.
b) ejecutando un programa grabado anteriormente en la unidad de control.
Examinemos el desplazamiento del robot por el mando manual.
Se puede disponer de 2 tipos de mando manual:
-1 mando standard: con botones e interruptores (ver dibujo).
-1 mando estanco: con teclas de membranas estancas para la utilización en condiciones
particularmente severas (ver dibujo).
22
MANDO STANDARD
23
MANDO STANDARD
24
EXAMEN DE LAS DISTINTAS FUNCIONES
Nota: Para otras funciones específicas del mando estanco, ver la documentación técnica entregada con
la máquina.
25
CONVENIO DE ESCRITURA
Vamos a pasar lista de las distintas instrucciones y comandos del lenguaje VAL II.
Por razones de simplificación, vamos a utilizar signos que acompañan los parámetros de estas
instrucciones.
[]
Este símbolo significa que los parámetros inscritos entre paréntesis son opcionales.
<>
Este símbolo sirve para delimitar los distintos parámetros de la instrucción.
EXECUTE
Los caracteres en negrilla definen la sintaxis mínima de la instrucción;
Ejemplo:
EXECUTE [<TOTO>],[<3>],[<2>]
significa que el nombre del programa TOTO, es opcional así como 3 y 2.
Nota: Usted encontrará la sintaxis mínima de cada instrucción en el anexo, de todas formas no
recomendamos su utilización antes de haber adquirido una cierta experiencia en programación.
26
CÓMO LANZAR UN PROGRAMA?
Con el comando:
EXECUTE < NOMBRE PROG>, <n° de bucles>,<paso del 1 er bucle>
Ejemplo 1:
EX TOTO, 3, 4
Se desea la ejecución del programa TOTO, 3 veces (si se hubiera introducido un número negativo,
tendríamos la ejecución de un número ilimitado de bucles) a partir del paso 4, solo para la ejecución de
primer bucle.
Ejemplo 2:
EX TOTO, 1, 2 OU EX TOTO ,, 2
Se desea la ejecución del programa TOTO solamente una vez a partir del paso nº2 (para el primer
bucle).
Ejemplo 3:
EX TOTO, 1
EX TOTO
Se desea la ejecución del programa TOTO solamente una vez a partir del paso nº1.
Observación :
Si el programa ya se ha ejecutado una vez y desea volver a ejecutarlo teclear solamente EX ®.
El paso se refiere al número de línea.
27
COMO EJECUTAR UN PROGRAMA PASO A PASO?
Mediante el comando:
XSTEP < Nombre prog >, < n° de bucles >, < STEP >
Este comando es idéntico, en la descripci6n de los parámetros y en su acción al comando EXECUTE
visto anteriormente salvo que solamente se ejecuta una instrucción cada vez.
Para ejecutar el paso siguiente basta con teclear X®.
Cómo seguir la ejecución de un programa ?
- En modo comando.
Mediante el comando:
EN TRACE
De esta forma se verán aparecer en pantalla las distintas instrucciones que tienen lugar durante la
ejecución.
Para volver al modo normal, utilizar el comando:
DIS TRACE
28
COMO PARAR UN PROGRAMA DURANTE SU EJECUCIÓN?
-
Pulsando el botón OFF del mando manual, si se desea una detención inmediata del
movimiento del brazo y del programa.
-
Tecleando ABORT sobre el teclado, si la detención se debe hacer al final de la instrucción de la
presente instrucción.
Cómo continuar un programa interrumpido?
-
Si el programa se ha interrumpido mediante OFF
Sea por:
En el caso de RETRY se vuelve a ejecutar la
-
ATENCIÓN
nstrucción interrumpida
En el caso de PROCEED se ejecuta la
nstrucción siguiente
Si el programa se ha interrumpido por ABORT
Se puede utilizar RETRY o PROCEED
29
PANIC
Este comando tiene la misma función que pulsar el botón OFF. Provoca bajo control del logiciel interno,
el paro inmediato del movimiento del robot y de la detención del programa en jecución a partir de la
pantalla / teclado.
30
SE DISPONE DE 3 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 esta 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.
31
COMO CREAR UN PROGRAMA ?
Se hará con la ayuda del programa llamado EDITOR, que reside en la máquina.
Este programa editor comporta cierto número de comandos.
32
COMANDOS DE EDICIÓN
Estos comandos sólo sirven en modo EDICIÓN (presencia de "?" a la izquierda) para permitir la
introducción de ordenes VAL en el robot éstas permiten:
-
modificar un programa,
insertar nuevas instrucciones,
suprimir instrucciones,
buscar ciertas instrucciones,
etc...
Vamos a ver estas instrucciones de edición.
33
PROCEDIMIENTO PARA CARGAR UN PROGRAMA
1a Etapa
Si se está en modo ejecución (*) o en modo comando (.), se pasa al modo de edición tecleando :
ED < NOMBRE PROG >, <n> ®
n: n° de la línea donde se desea ir en un
programa anteriormente editado.
Ejemplo: ED TOTO, 7
Hay 12 comandos editores :
- C para cambiar de programa
- D para suprimir una o varias líneas
- E para salir de la edición
- I para insertar
- L para ir hacia otras líneas
- S para buscar una línea
- P para visualizar
- R para remplazar un carácter
- M para remplazar un bloque de caracteres
- F para encontrar un bloque de caracteres
-T
para aprender puntos
-TS
Vamos a analizarlas una a una.
34
C
(CHANGE)
Forma general :
C NOM, n
n: n° de línea donde se desea ir del programa TOTO
Ejemplo:
C TOTO, 7
nombre de un programa (cualquiera)
ED TITI
PROG TITI
1 ? MOVE A
2 ? MOVE B
3 ? MOVE C
4 ? C TOTO, 7 ® Æ
PROG TOTO
7 ? MOVE B4
Línea n° 7 del PROG TOTO (si TOTO existía anteriormente).
35
D
(DELETE)
Forma general
Dn
n: numero de líneas
Ejemplo:
D4
Suprime 4 líneas a partir de la presente.
Ejemplo:
ED TITI
1 ? MOVE A
2 ? MOVE B
3 ? MOVE C
4 ? MOVE O
5 ? MOVE F
6 ? MOVE G
Si en la línea 2 ? MOVE B
tecleamos 2 ? D 3 ®
Se suprime la línea 2 y las 2 siguientes.
Donde :
1 ? MOVE A
2 ? MOVE F
3 ? MOVE G
36
E
(EXIT)
Este comando permite salir del modo de edición para volver al modo de comando del robot, o sea para
pasar de (?) a (.).
Ejemplo:
1 ? MOVE A
2 ? MOVE B
3 ? E®
Este comando se utiliza cuando se termina de escribir o modificar un programa.
37
I
(INSERT)
Forma general :
Ejemplo:
ED TOTO
1 ? MOVE A
2 ? MOVE B
3 ? MOVE C
4 ? MOVE D
5 ? MOVE E
MOVE C1
MOVE C2
Entonces:
4 ? MOVE D
4? I®
4 ? MOVE C1
5 ? MOVE C1
5 ? MOVE C2
5? ®
Resultado:
ED TOTO
1 ? MOVE A
2 ? MOVE B
3 ? MOVE C
4 ? MOVE C1
5 ? MOVE C2
6 ? MOVE D
7 ? MOVE E
OBSERVACIÓN : Nótese que para salir del modo inserción sólo se necesita teclear ®.
38
L
(LAST)
Forma general:
L
Esta instrucción permite volver a la línea anterior.
Ejemplo:
ED TOTO
1 ? MOVE
2 ? MOVE B
3 ? MOVE C
4 ? MOVE D
4 ? L®
3 ? MOVE C
Nótese que sólo se puede ir hacia atrás de línea en línea.
39
S
(SEARCH)
Forma general :
Sn
n : n° de línea.
Esta instrucción permite buscar el n° de línea deseado.
Ejemplo 1:
Ejemplo 2:
ED TOTO
ED TOTO
1 ? MOVE A
2 ? MOVE B
3 ? MOVE C
4 ? MOVE D
5 ? S2R
2 ? MOVE B
1 ? MOVE A
2 ? MOVE B
3 ? MOVE C
4 ? MOVE D
5 ? MOVE E
6 ? S 20 R
20 ? MOVE K
Salto hacia arriba
o
salto hacia abajo
40
P
(PRINT)
Forma general
Pn
n: numero de líneas.
Ejemplo: P3
ED TOTO
1? MOVE A
1? P3®
1 ? MOVE A
2 ? MOVE B
3 ? MOVE C
Nota: Si sólo se escribe P, solamente se visualiza la línea en que se sitúa el comando.
41
R
(REPLACE)
Forma general :
R caracteres
Este comando permite remplazar caracteres de una instrucción.
Ejemplo 1:
ED TOTO
1 ? MOVE
A
R SA®
1 ? MOVES A
Ejemplo 2:
ED TOTO
1 ? MOVE A
Se desearía obtener
1 ? 30 MOVE A
etiqueta
Entonces:
1 ? MOVE A
1 ? CB 30 ® nos dará el resultado deseado:
1 ? 30 MOVE A
42
M
(MODIFY)
Forma general :
M / antiguo carácter / nuevo carácter
Este comando permite sustituir un bloque de caracteres por otro nuevo.
Ejemplo:
ED TOTO
1 ? APPRO A,30,
1 ? M/30/200 ® dará:
1 ? APPRO A,200
NOTA: La barras se pueden sustituir por cualquier otro carácter especial.
Ejemplo:
M+30, 20
M?30?, 20
M+30+,20
etc ...
Pero, para simplificar, es aconsejable utilizar las barras.
43
F
(FIND)
Forma general :
F/ bloque de caracteres/
Este comando permite encontrar la línea de instrucción que contiene el bloque de caracteres indicados
detrás de la letra F y comprendido entre las barras.
Ejemplo:
EO TOTO
1 ? APPRO A,10
2 ? MOVE D
3 ? APPRO A, 21
4 ? MOVE G
5 ? MOVE F
Si la línea:
1 ? APPRO A, 10
1 ? F/21/ ® veremos aparecer
3 ? APPRO A, 21
ya que el bloque de caracteres 21 se ha encontrado en la línea 3.
Atención: el bloque de caracteres buscado siempre debe encontrarse después de F/ bloque /.
44
T
(TEACH)
Forma general :
T nombre 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 el mando
manual).
Ejemplo:
ED TOTO
1 ? MOVE A
2 ? MOVE B
3 ? MOVE C
3 ? T D1 ®
Cuando se pulse el botón RECORD, veremos aparecer:
o
3 ? MOVET D1,0 si la pinza está cerrada
MOVET D1,25.41 si la pinza está abierta
si pulsamos de nuevo RECORD obtendremos:
4 ? MOVET D2,0
etc...
Cada vez que se pulse RECORD se obtiene un incremento automático del índice del punto.
45
TS
(TEACH STRAIGHT)
Forma general :
TS nombre variable
Este comando es idéntico que T salvo que los desplazamientos que habrá serán en línea recta entre los
puntos memorizados.
Ejemplo:
ED TOTO
1 ? TS P1® después de pulsar RECORD, aparece
1 ? MOVEST P1 ,0
Importante: Nótese que sólo en modo comando se dispone de una instrucción TEACH nombre variable
que hace la misma función.
46
OPERACIONES CON LA MEMORIA
DE LA UNIDAD DE MANDOS Y CARACTERES DE CONTROL DEL TERMINAL
(pantalla / teclado)
ATENCIÓN: estas instrucciones sólo son validas en modo (.,*).
47
CONTENIDO DE LA MEMORIA RAM
48
Todos los programas cargados con la ayuda del editor, se guardan en la memoria RAMCMOS.
Lo mismo ocurre con las variables reales y las variables punto, asociadas a los programas de usuario
(también llamados programas de aplicación).
Qué es una variable de punto?
Se trata de asociar a un nombre cualquiera de los valores X, Y, Z, O, A ,T de las coordenadas del punto
en cuestión.
Ejemplo:
POINT A ®
Esta instrucción asigna las cotas en mm o en grados (según los parámetros descritos) al nombre de la
variable punto llamada A.
Disponemos de dos posibilidades para asignar una variable punto.
1. Cargando las diversas coordenadas por parte del usuario.
Ejemplo:
POINT A ®
X/JT1
Y/JT2
0
0
Z/JT3
0
O/JT4
90
A/JT5
-90
T/JT6
0
Z/JT3
-15
O/JT4
18
A/JT5
-90
T/JT6
0
CHANGE?
10,30, -15,18 ®
X/JT1
10
Y/JT2
30
CHANGE?®
De esta forma, hemos asignado las cotas X, Y, Z, etc... al punto llamado A.
- NOTA: Esta instrucción sólo funciona en el modo comando.
49
2. Por aprendizaje
Consiste en desplazar el robot hasta el punto deseado y escribir en el teclado:
HERE A
X/JT1
Y/JT2
120
12
CHANGE ? ®
Z/JT3
-80
O/JT4
90
A/JT5
-90
T/JT6
0
De esta forma asignamos al punto A las coordenadas del punto donde se encuentra el robot en el
momento en que pulsamos la tecla ® (RETURN).
Recordamos que ya se ha utilizado implícitamente una variante de esta instrucción, se trata de la orden
TEACH en modo comando o T y TS en modo EDIT (ver el capitulo comando editor).
NOTA: La instrucción HERE funciona en modo comando y en programa.
Puntos de precisión
Un punto de precisión es un punto en el que las coordenadas no están en mm respecto a los ejes X, Y,
Z, etc... sino en grados de ángulos con respecto a una posición absoluta.
Se declara o reconoce como punto de precisión cuando añadimos # delante del nombre del punto.
Ejemplo: # A y A son 2 puntos distintos.
Uno está definido en coordenadas angulares (#A) para cada eje.
El otro está definido en coordenadas cartesianas (A).
MOVE # A
JT1
JT2
JT3
JT4
JT5
JT6
18°
-123°
+14 °
90°
-90°
0°
MOVE A
X
Y
Z
O
A
T
120 mm
12 mm
5 mm
90°
-90°
0°
Atención
Es aconsejable asignar nombres diferentes a los nombres de variables punto, variables punto de
precisión, o variables reales, de otra forma en pantalla nos aparecerá "DUPLICATE VARIABLE NAME".
50
Los puntos de precisión pueden permitir una precisión mayor que los puntos de coordenadas
cartesianas.
Los puntos de precisión son muy prácticos porque no tienen en cuenta las alineaciones de ejes (ver
debajo) pero no se pueden utilizar en instrucciones de decalajes {instrucciones SHIFT, TOOL, etc...).
Observación: Cuando se realiza APPRO # A,50, la máquina convierte este punto en un punto de
coordenadas.
Atención: En robots de 6 ejes, se debe evitar alinear el eje Z útil con el antebrazo, ya que el robot
interrumpirá su movimiento y quedará en falta (envio de un mensaje de error) .
Esta situación se podrá haber evitado con el empleo de un punto de precisión.
Para suprimir un punto de la memoria, utilizaremos la instrucción:
DELETEL nombre del punto [nombre del punto, ...]
(ver capitulo DELETE).
51
QUE ES UNA VARIABLE REAL?
Es la asignación a un nombre cualquiera de un valor entero (ej: 123) o real (ej: 1,238).
Ejemplo:
A = 12 significa que asignamos el valor 12 a la variable llamada A.
O sea que el valor contenido en la variable A es12.
NOTA: En el caso del VAL II, el valor debe estar comprendido obligatoriamente entre 6.0E39 y 2.854E +
38 para valores positivos y entre - 2.8545E + 38 + 38 y hasta -6.0E 39 para valores negativos.
Recordamos que, por ejemplo 2.1 E + 6 corresponde al número 2 100 000 y 2.1 E-6 a 0.0000021.
Esta notación se llama notación científica.
Nótese que la coma se debe simbolizar por un punto 1,238 Æ 1.238.
Qué operaciones matemáticas se pueden realizar Con los reales ?
+suma
Ex: X = 3+2
- resta
Ex: X = (3 + 2) - 1
multiplicación Ex: X = ((3 + 2) - 1) * 4
división
Ex: X = ((3 + 2) - 1) /5
Y se pueden utilizar funciones matemáticas particulares:
ABS (expr)
Esta función da el valor absoluto de la expresión:
X = ABS (-5.462) Æ X = 5.462
X = ABS (1.3E - 2) Æ X = 1.3E - 2
SIGN (expr)
Esta función da el signo de la expresión:
X = SIGN (0.12) Æ X = 1
X = SIGN (-5.14) Æ X = - 1
FRACT (expr) Esta función da la parte fraccionaria de la expresión:
X = FRACT (2.123) Æ X = 0.123
X = FRACT (1.312E + 2) Æ 0.2
52
INT (expr)
Esta función da la parte entera de la expresión:
X = INT (0.123) Æ X = 0
X = INT (1.312E + 2) Æ X = 131
SQRT (expr) Esta función da la raíz cuadrada de la expresión:
X = SQRT (0.123) Æ X = 0.35071
X = SQRT (- 5.462) Æ error
SQR (exp)
Esta función da el cuadrado de la expresión:
X = SQR (0.123) Æ X = 0.01513
X = SQR (1.13125E + 2) Æ X = 1.7226E + 4
SIN (exp)
Esta función da el seno de la expresión (en grados):
X = SIN (50.123) Æ X = 0.00125
X = SIN (-5.482) Æ X = 0.098
COS (expr)
Esta función da el coseno de la expresión (en grados):
X = COS (0.123) Æ X = 1
X = COS (- 5.462) Æ X = 0.99546
ATAN2 (expr 1, expr 2)
Esta función da la equivalencia en grados de la tangente expr 1, expr 2.
X = ATAN2 (0.123, 0.251) Æ X = 26.10669 grados
X = ATAN2 (1.325E + 2, -1.3) Æ X = - 89.4252
53
PI
Esta función da el valor 3,14159
X=PIÆ X=3.14159
RANDOM
Esta función da un valor aleatorio comprendido entre 0 y 1:
X = RANDOM Æ X = 0.3148 por ejemplo.
54
EN CONCLUSIÓN
Se deben distinguir bien las variables punto de las variables reales.
Ejemplo:
1...
2...
3 MOVE A
4...
grados.
5...
6...
7 AE = 3.4
8...
9...
A es el nombre de un punto donde el robot deberá ir.
Comporta las coordenadas X, Y , Z, O, A, T expresadas en mm y en
AE = 3.4 permite asignar el valor 3,4 a la variable "AE"
Además los nombres de puntos y variables pueden llevar corchetes para indicar que son nombres de
variables dimensionadas.
Ejemplo: A [1]
¿Qué es una variable dimensionada?
Tomemos un ejemplo.
Sea la tabla llamada A:
A
1
2
3
4
5
6
7
18
287
14
1984
226
317
6
Æ A [1] = 18
Æ A [2] = 287
Æ A [3] = 14
etc...
Constatamos que el índice comprendido entre corchetes representa en este caso el número de línea y
no el contenido de la casilla.
Veremos posteriormente que también se puede poner una variable como índice.
Ejemplo: I = 3
A [I] = 14 (ver tabla superior)
Lo cual, a veces, facilita la escritura del programa.
55
CÓMO VISUALIZAR?
Cómo visualizar:
- los títulos (nombres de programa)
- los contenidos
- de los programas situados en la memoria central ?
Sólo se puede hacer en modo comando (.)
Para ver los títulos se utiliza la orden DIR.
Ejemplo:
DIR®
TOTO
TITI
TUTU
Para ver los contenidos se utilizan las ordenes :
LISTP OU PLIST para los contenidos de los programas,
LISTL o LLIST para los contenidos de las coordenadas de los puntos.
LISTR o RLIST para el contenido de las variables reales.
Ejemplo:
PLIST®
PROG TOTO
1 MOVE A
2 MOVE B
PROG TITI
1 MOVE K
2 MOVE G
etc...
En el caso que sólo se quiera conocer el contenido de uno, dos o tres programas, la instrucción es la
siguiente:
LISTP TOTO, TITI etc...
Para los puntos :
LLIST # A, S, C etc...
Para los reales
RLIST X, Y, Z etc...
56
Los sufijos que aparecen con los nombres de ficheros en visualización tienen el siguiente significado.
NOM PROG.XXX
sufijo
Ejemplo:
TOTO.PG ficheros de aplicación
TOTO.LC ficheros de puntos
TOTO.RV ficheros de variables reales.
Importante :
El nombre de los programas siempre debe:
1. Empezar por una letra y nunca por una cifra,
2. Comprender un número cualquiera de letras, cifras y eventualmente puntos.
Nombre de programa correcto :
TOTO.PROG1.TOTO
TOTO 12.
TOTO
En cambio: 1 TOTO o TOTO+ es incorrecto.
Observaciones importantes :
Las reglas anteriores son igualmente válidas para los nombres de puntos y las variables reales
asociadas al programa, aunque hay algunos nombres de variables y de puntos que pueden confundirse
con ciertas "palabras reservadas" :
BASE
DEST
FALSE
HAND
HERE
NULL
PI
PRIORITY
RANDOM
TOANG
TODIS
TOOL
TPS
TRUE
COM
NOT
Así que no se deben utilizar estos nombres...
57
TESTP <programa>
Este comando permite saber si el programa designado ya existe en la memoria de la máquina.
Ejemplo :
TESTP TOTO
Si el programa TOTO ya existe en memoria, aparecerá :
LOADED
Si no veremos :
UNDEFINED NAME.
58
RENAME <nombre del nuevo programa> = <nombre del antiguo programa>
Ejemplo :
RENAME TOTO = TUTU
Una vez ejecutada esta instrucción, el PROG TUTU se llamará TOTO.
COPY <nombre del nuevo prog> = <nombre del prog ya existente>
Ejemplo:
COPY TOTO = TUTU
Se obtiene un doble del programa TUTU que se llamará TOTO.
DELETE <prog 1 >[,…, <prog n>]
Borra los programas designados de la memoria central, así como los datos, puntos y variables reales
asociados.
PDELETE <prog 1 >[,...,<prog n>]
Instrucción idéntica a la anterior pero únicamente se borran los programas de aplicación (o sea sólo
aquellos seguidos por el sufijo.PG).
Ejemplo:
PDELETE TOTO sólo suprime TOTO.PG
Nótese que también se podría haber escrito DELETEP .
LDELETE<puntos>[,...,<puntos>]
Instrucción idéntica a la anterior pero só1o se destruyen las coordenadas de los puntos designados.
Ejemplo:
LDLETE A,#P1,B6
Suprime los puntos A,#P1 y B6.
Nótese que también podríamos haber escrito DELETEL.
59
RDELETE <variable real>[,...,<variable real>]
Instrucción idéntica a la anterior pero sólo se destruyen los contenidos de las variables reales
designadas.
Ejemplo:
RDELETE C,D, A[1]
Suprime las variables reales C, D, A[1].
Si hubiéramos escrito A[ ], todas las variables dimensionadas A[1], A[2], ...,
A[n] hubieran sido destruidas.
Nótese que también podríamos haber escrito DELETER.
60
CARACTERES DE CONTROL DEL TERMINAL
(pantalla - teclado)
Estos caracteres de control son operativos cuando se presiona la tecla CONTROL a la vez que la tecla
alfanumérica correspondiente. Facilitan la lectura de programas en pantalla.
Ejemplo: Para realizar Λ C, hay que presionar sobre la tecla "CTRL" y la tecla "C".
- ΛC: detiene la ejecución que las instrucciones DIRECTORY, LISTP, STORE, etc... pero no la
ejecución de un programa.
- ΛZ: permite la detención de un programa cuando éste espera datos después de una orden
PROMPT.
- ΛS: para la visualización de un programa.
- ΛQ: relanza la visualización detenida por AS.
- ΛW: relentiza la visualización para permitir leer los contenidos más fácilmente. Un segundo AW
permite volver al estado anterior.
- ΛR: revisualiza la línea en el caso que se esté esperando un dato.
- ΛU: permite inhibir la respuesta pedida por la máquina y pasar a las instrucciones siguientes.
ATENCIÓN: Los códigos anteriores no funcionan sobre todos los terminales.
61
INSTRUCCIONES DEL LENGUAJE VAL II
62
El logiciel VAL II 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 (ver curso nº2 VAL II).
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.
Por lo tanto, atención:
En el caso del logiciel VAL II.
Debemos recordar que si insertamos instrucciones que no conllevan movimiento entre instrucciones de
movimientos, éstas serán ejecutadas en paralelo.
Ejemplo :
MOVE A0
MOVE A1
TYPE "FIN DEL MOVIMIENTO A A1"
SIG 1,2
MOVE B
Constatamos que las instrucciones SIG 1,2 y TYPE "...", se ejecutaran durante el desplazamiento
hacia el punto A1.
Si no deseamos tener esta simultaneidad, insertamos una instrucción BREAK (ver capitulo (control de
trayectoria)).
Donde:
MOVE A0
MOVE A1
BREAK
TYPE "FIN DEL MOVIMIENTO A A1"
SIG 1,2
MOVE B
63
Igualmente, las siguientes instrucciones tendrán el mismo efecto que BREAK después de un
movimiento.
BASE
BRAKE
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 el prefijo
"DO".
Ejemplo:
MOVE A se puede ejecutar en modo comando si escribimos.
DO MOVE A
Si no aparecerá "illegal command".
Observación: Si ejecutamos DO sin nada detrás y anteriormente se ha ejecutado un DO <instrucción>
este DO será equivalente al DO <instrucción> precedente.
Ejemplo:
DO B = (A * .4) /7 + 4 - 2 ((3 + 8) /4) – 3®
El resultado calculado al teclear ® se asignara a la variable B.
Si ahora tecleamos DO ® la máquina ejecutara de nuevo todos los cálculos para asignar el resultado a
B, lo cual nos evita entrar de nuevo toda la fórmula.
64
MOVE A
Esta instrucción ordena al robot desplazarse al punto A según una trayectoria que no impone el usuario.
OR
A
MOVES A
Esta instrucción ordena al robot desplazarse al punto A siguiendo una línea recta.
OR
A
65
APPRO <punto>,<distancia en mm>
Ejemplo:
APPRO A,50
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>
Ejemplo:
APPROS A,50
Idem a la instrucción anterior pero el acercamiento al punto A se hace en línea recta.
66
DEPART <distancia en mm>
Ejemplo:
DEPART 50
Es la función inversa de APPRO, ya 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 <distancia en mm>
Idem a la instrucción anterior pero el desplazamiento se realiza siguiendo una línea recta.
67
SPEED <valor> [unidades][always]
Se pueden producir 3 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 m m por segundo, siempre y
cuando la velocidad de monitor sea 100.
3. Si se declara IPS se trata de un desplazamiento expresado en pulgadas por segundo siempre y
cuando la velocidad de monitor sea 100.
Si se indica ALWAYS, esta declaración de velocidad será válida para todas las instrucciones de
movimiento siguientes, hasta una nueva declaración de velocidad que conlleve ALWAYS.
Si se omite ALWAYS la velocidad solo concierne al movimiento siguiente.
<valor> puede ser una constante, una variable o una expresión matemática cuyo valor debe estar
comprendido entre 0.39 y 12800.
Ejemplo :
1 SPEED 100 MMPS ALWAYS
2 MOVE A
3 TIMER 1 = 0
4 MOVE B
5 BREAK
6 TYPE "DURACION DEL DESPLAZAMIENTO", TIMER (1 )
Obtendremos 10,48 segundos para un desplazamiento de un metro. Si la velocidad monitor hubiera sido
de 50 habríamos obtenido 20.85 seg.
68
INSTRUCCIONES DE MOVIMIENTOS DE PINZA
69
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 et 900 seg. (0.01 a 15 minutos).
Ejemplo:
MOVE A
DELAY 180
MOVE B
Atención :
La instrucción DELA Y se debe considerar como una instrucción de movimiento para ir a ninguna parte.
70
SET <variable punto.1 > = <variable punto.2>
Esta instrucción permite asignar las coordenadas de la variable punto.2 a la variable punto.1.
Ejemplo 1:
SET A = B
Después de la ejecución de esta instrucción al punto A se le asignan las coordenadas del punto B (las
coordenadas del punto B no se modifican).
71
DEST
Asignamos a la variable declarada las coordenadas del destino del robot en el momento en que se
ejecuta esta instrucción.
Ejemplo:
SET G = DEST
Nota:
Si el destino fuera un punto de precisión, las coordenadas serian convertidas en cartesianas en DEST;
Aplicación:
Ver ejemplo en curso n° 2.
72
LISTADO DE LAS PALABRAS CLAVE
No se deben utilizar como nombres de variables punto o variables reales las palabras clave
siguientes :
BASE
DEST
FALSE
HAND
HERE
NULL
PI
PRIORITY
RANDOM
TOANG
TODIS
TOOL
TPS
TRUE
COM
NOT
73
SHIFT <punto> by [<exp 1 >],[<exp 2>],[<exp 3>])
Ejemplo 1: SET BL = SHIFT (AH BY 150, 10, -100)
Eje
X
Eje
Y
Eje (del punto AH)
Z
Esta instrucción añade o resta a las coordenadas del punto AH los valores indicados en cada
expresión.
Si deseamos hacer un decalage relativo con respecto al mismo punto, definimos la siguiente instruccion.
Ejemplo 2:
SET AH = SHIFT (AH BY 100,50' 0) MOVEAH
SET AH = SHIFT (AH BY 100' 50, 0) MOVEAH
etc ...
74
DRIVE <expr 1 >,<expr 2>,<expr 3>
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.
Ejemplo 1:
DRIVE
6,
40,
50
El eje 6 se desplaza 40 grados a 50% de la velocidad monitor
Ejemplo 2: DRIVE JT, (D+41)/3)* 4, VIT
Se constata que podemos utilizar variables, expresiones matemáticas o otros ...
Ejemplo 3: DRIVE 2,30,10
75
PRESENTACIÓN DE LOS PROGRAMAS
A partir de las especificaciones, se pretende realizar un programa que deberá ejecutar el robot.
Cómo se puede realizar un programa a partir de la especificación de las necesidades?
Hay 3 soluciones :
1. el método empírico
2. el organigrama
3. el grafcet.
Hay partidarios de cada una de las 3 soluciones según los gustos y aspiraciones de cada uno; de todas
formas se puede deducir que:
--la primera solución es valida para resolver pequeños problemas, poco complicados, ya que al no ser
estructurado, rápidamente se complica.
--la segunda solución tiene la ventaja de ser utilizada universalmente en informática y automatismos
complejos, aunque a veces es pesada de aplicar.
--la tercera solución se aplica sobretodo en los automatismos industriales y va entrando poco a poco en
las empresas. Se puede aplicar a la robótica si se varía alguna regla del grafcet.
76
Queremos desplazarnos del punto A al B, pero cuando pulse el botón BP1, debemos ir al punto C y
volver al principio.
Además para facilitar la lectura de un programa, es interesante añadir comentarios.
77
COMO COMENTAR UN PROGRAMA
Separando los comentarios de las instrucciones por un punto y coma.
Ejemplo:
1; PROG COMENTARIO
2 MOVE A; se ejecuta un desplazamiento hacia A
2 MOVE B ; se ejecuta un desplazamiento hacia B
78
INTERRUPCION DE UN PROGRAMA
Con la ayuda de las instrucciones: PAUSE, HALT.
PAUSE
El programa se interrumpirá cuando encuentre esta instrucción.
Ejemplo:
1 MOVE A
2 MOVE B
3 PAUSE Å Paro del programa en el paso 3
4 MOVE C
Continuaremos tecleando PROCEED.
HALT
Esta instrucción es idéntica a la anterior pero no se puede continuar tecleando PROCEED: utilizaremos
EXECUTE.
79
LOS SUBPROGRAMAS
CALL<nombre prog>
Un Subprograma es un conjunto de instrucciones independientes que se pueden llamar desde un
programa principal.
Ejemplo:
PROG TOTO
1 MOVE A
2 TYPE "HE TERMINADO LA INSTRUCCION DE MOVIMIENTO"
3 MOVE B
4 TYPE "HE TERMINADO LA INSTRUCCION DE MOVIMIENTO"
5 MOVE C
6 TYPE "HE TERMINADO LA INSTRUCCION DE MOVIMIENTO"
7 MOVE D
8 TYPE "HE TERMINADO LA INSTRUCCION DE MOVIMIENTO"
9 MOVE E
10 TYPE "HE TERMINADO LA INSTRUCCION DE MOVIMIENTO"
11 MOVE F
12 TYPE "HE TERMINADO LA INSTRUCCION DE MOVIMIENTO"
Hubiera sido más sencillo escribir
PROG TOTO
SUBPROG TITI
1 MOVE A
1 TYPE "HE TERMINADO LA INSTRUCCION DE MOVIMIENTO"
2 CALL TITI
3 MOVE B
4 CALL TITI
5 MOVE C
6 CALL TITI
7 MOVE D
8 CALL TITI
9 MOVE E
10 CALL TITI
11 MOVE F
12 CALL TITI
2 RETURN
Igualmente, los subprogramas se emplean mucho para dividir un programa complejo en subconjuntos
independientes entre ellos y que se pueden probar fácilmente por separado.
80
ESTRUCTURA DE LOS SUBPROGRAMAS
PROG PRINCIPAL
SUBPROGRAMASPROG
1 MOVE A
2...
3...
4...
5 CALL SPROG
6...
7...
1 MOVE D
2 MOVE F
3…
4…
5...
6 RETURN
ATENCIÓN:
Todos estos subprogramas se deben terminar obligatoriamente por RETURN , aunque cualquier
programa se puede terminar sin inconveniente con RETURN, incluso en el caso de que este nunca
sea llamado por otro programa.
81
LOS SALTOS
1. Saltos incondicionales
GOTO <etiqueta>
Ejemplo:
1
2
3
4
.
.
.
10
MOVE A
MOVE B
GOTO 10
Atención:
El número que hay tras el GOTO es una etiqueta, y no el número de línea definido por el editor.
2. Saltos condicionales
IF <expresion> GOTO < etiqueta>
Ejemplo:
9
10
11
12
13
.
.
.
16
MOVE A
MOVE B
IF N = <6 GOTO 16
12 DELAY 5
82
Los símbolos relacionales son los siguientes:
>
mayor que
> = 0 =>
mayor o igual
==
igual
<>
distinto
<
menor que
<=o=<
menor o igual
Igualmente, se pueden asociar operadores lógicos :
AND
Función lógica Y
OR
Función lógica O
NOT
Función lógica NO
Ejemplo:
10
MOVE A
IF (A>3) OR (B< = 7.82) GOTO 10
MOVE B
83
COMUNICACIÓN TECLADO - PANTALLA
84
PROMPT " (<MESSAGE)" (,<VARIABLE> (,...,<VARIABLE>)
Ejemplo 1:
PROMPT "dame 3 valores", A, B, C
Esta instrucción permite, a partir del teclado, entrar los valores que se asignan a las variables. Aquí las
3 variables se llaman A, B y C.
Ejemplo 2:
PROMPT " ",A
Cuando se ejecute esta instrucción, el robot asignará a la variable A el valor que se teclee
sin ningún mensaje en pantalla.
85
TYPE {/carácter de control} , {variable} , {etc.}
Esta instrucción permite hacer salir por pantalla un mensaje durante la ejecuci6n de un programa ylo
hacer salir en pantalla el contenido de una (o varias) variable(s) declarada(s).
Ejemplo:
TYPE/B, "VALOR DE X = ",X
Escribirá en pantalla: VALOR DE X = 3
(si el valor de X fuera 3) y sonará un pitido en el terminal. Los caracteres de control permiten :
/B
hacer sonar un pitido en el terminal
/C<n>
provocar n saltos de línea (n veces CR y n veces LF);
/S
mantenerse en la misma línea (sin CR ni LF);
/O <n>
dar el valor, según una codificación entera octal, cuyo campo es declarado por n;
Ejemplo
R =23
TYPE/O 10,R
23
dará:
/l<n>
n.
10 espacios
dar el valor, según una codificación entera decimal en que el campo viene declarado por
Ejemplo 1:
R = 23
TYPE /l 10,R
23
dará:
10 espacios
Ejemplo 2 :
R = 4894
TYPE/l 2, r
dará : **
los asteriscos indican que el campo es demasiado pequeño.
86
/E <m>, <n> especificar el valor en notación científica según el formato declarado por m y n.
Ejemplo :
R = 1247.45
TYPE/E14.7,R
dará :
campo de 14__________
.1247450E + 4
Nota: hay que considerar. 1247450 como 0.1247450 ;
/F <m>,<n> e especificar el valor en la forma fijada por m y n (con m para describir el campo y n para
describir el formato de la parte decimal).
Ejemplo :
R = 1247.45
TYPE /F 12.4,R
1247.4500 12 espacios
12 espacios
/G<m>,<n>
especificar el valor según un formato similar a /F<m>,<n>. En el caso que el valor no
pueda entrar en el campo m, este valor se definirá según un formato idéntico a
/E<m>,<n>;
87
/D
utilizar un formato por defecto (idem a /G 14.7);
/U<n>
hacer subir el cursor n líneas;
Atención: este carácter de control no funciona en todas las terminales (funcionamiento
asegurado en el terminal Unimation);
/X<n>
generar n espacios
Ejemplo 1:
R = 1247.45
TYPE /X 10,R dará :
10 espacios
1247.45
Ejemplo 2 :
R1 = 3
R2 + 1247.45
TYPE R1,/X 10,R2 dará :
3. 10 espacios
1247.45
/N
la unidad central no espera a haber terminado de imprimir el mensaje para ejecutar la
siguiente
instrucción.
88
TPMESS"MENSAJE"
Esta instrucción 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.
El mensaje deberá seguir los siguientes criterios:
1.
2.
ser una cadena en c6digo ASCII;
no debe comportar caracteres de control (/B, /C, etc...) en caso contrario serán ignorados,
aunque hay algunos que pueden perturbar el funcionamiento.
Atención:
Esta función solo existe a partir de la versión 2.0.
89
ENTRADAS
El numero de entradas es 32.
Sus direcciones son las siguientes :
1001 Æ entrada nº1
1002 Æ entrada nº2
1003 Æ entrada nº3
1004 Æ entrada nº4
1005 Æ entrada nº5
1006 Æ entrada nº6
etc ...
1032 6> entrada nº32.
Entre estas entradas se distinguen dos modos de funcionamiento:
1. Modo de entrada por escrutinio
IF SIG (1001, etc...) GOTO 20
WAIT
2. Modo de entrada por interrupción
REACT
REACTI
IGNORE
90
Entradas / Salidas
Exteriores (todo o nada).
91
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 entrada 1 está en el estado 1 y
la entrada 3 esta en el estado 0 y
la entrada 2 está en el estado 1 entonces el programa salta a la etiqueta 10.
En caso contrario se ejecuta la instrucción siguiente.
2. WAIT <expresión>
Ejemplo: WAIT SIG (1001, - 1003, 1002)
Esta instrucción interrumpirá el programa hasta que las entradas 1 y 2 estén en el estado A y la 3 en el
estado 0.
Otros ejemplos:
WAIT (SIG (1001, 62) OR SIG (1008) < > 0
WAIT ((STA == 4) ANO (G > 120)) < > 0
NOTA: Si el resultado de una operación es 0, la máquina considera que el resultado es falso .
Para cualquier otro valor el resultado será considerado verdadero.
92
ENTRADAS POR INTERRUPCIÓN
REACT <señal>, <programas>, [<prioridad>]
Ejemplo: REACT 1003, TOTO, 25
Cuando el canal nº 3 pase al estado 1, el programa, una vez terminada la instrucción que esté
ejecutando, pasará a la ejecución del programa TOTO.
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 (ver curso nº 2).
93
REACTI <señal>, <programa>, [<prioridad>]
La aplicación de esta instrucción es idéntica a la anterior aunque el salto al programa indicado se hace
inmediatamente en el momento en que la entrada en cuestión cambia de estado.
P.D.:
Para más información sobre las instrucciones REACT y REACTI ver el curso nº2.
94
ATENCIÓN:
1. Sólo se dispone de las primeras 16 entradas (nº 1 hasta 16) para provocar reacciones.
2. El sistema sólo reacciona ante cambios de nivel que se mantengan estables al menos 30 ms.
3. Para suprimir el escrutinio de entradas desde el programa, después de la instrucción REACT o
REACTI, se utiliza la instrucción IGNORE.
IGNORE <señal>
Ejemplo: PROG PRINC
1 MOVE A
2 BREAK
3 REACT 1001,
TOTO
4 MOVE B
5 MOVE C
6 MOVE D
7 BREAK
8 IGNORE 1001
9 MOVE E
En este caso, el programa saltará al subprograma TOTO si actua la entrada 1001, pero sólo durante los
movimientos B,C,D.
95
SALIDAS
Hay 32 salidas
Sus direcciones son las siguientes:
1 salida nº1
2 salida nº2
3 salida nº3
4 salida nº4
etc...
32 salida nº32
Programación de salidas
SIG 1, -2,..., 8
RESET
RUNSIG
96
SIGNAL <val 1>, [<val2>, <val3>, <...>]
Con distintos valores que pueden ser una constante, una variable o una expresión matemática.
Ejemplo 1: SIG3, -1, 4
Las salidas nº 3 y nº 4 pasarán al estado 1 y la salida nº1 al estado 0.
Ejemplo 2:1 ? S1 = -1
2 ? S2 = +4
3 ? S3 = 3
4 ? SIG S3, S1, S2
Este ejemplo provoca el mismo resultado que el ejemplo A.
Ejemplo 3: 1 ? S2 = 2
2 ? S3 = 2.5
3 ? SIG (-S2/2),(S3*2)
En este caso la salida nº 1 pasará a 0 y la salida nº5 pasará a 1.
RESET
Esta instrucción pone a cero todas las salidas.
NOTA: Estas dos instrucciones funcionan tanto en modo comando como en modo programa.
97
RUNSIG <expresión>
Ejemplo: RUNSIG 3
o
RUNSIG TOTO
Esta instrucción pone al estado 1 la salida nº 3 cuando el programa se está ejecutando.
Cuando la ejecución del programa se interrumpe, esta salida pasa al estado 0.
En el ejemplo RUNSIG TOTO, TOTO deberá ser:
-
Una variable real.
Una expresión matemática
Pero el resultado de la empresión matemática deberá tener un valor positivo, entero y comprendido
entre 1 y 16.
98
CAMBIO DE REFERENCIA
99
COMO DESPLAZAR LA REFERENCIA DE BASE ?
Con la instrucción base, utilizable en modo programa o en modo (.,*)
BASE [<DX>], [<DY>], [<DZ>], [<rotación>]
Ejemplo 1: BASE PUNTO 1, PUNTO 2, -50, 0
O
Ejemplo 2: BASE 0,0,100,0
ATENCIÓN: Consideramos que es la antigua base la que se desplaza respecto a la nueva (de aquí la
diferencia de signos.
Si se desea utilizar otra referencia en que los planos XZ, XY, etc... no sean paralelos respecto a la
referencia de base, se puede hacer con la instrucción FRAME.
100
COMO DESPLAZAR LA REFERENCIA UTIL ?
TOOL <nombre de la transformación>
Ejemplo: TOOL TRANS
TRANS se deberá haber definido previamente.
Si TRANS tiene la siguientes coordenadas.
Observación: TOOL es una de las pocas instrucciones que se pueden utilizar en modo programa y
(.,*).
Esta instrucción es importante ya que permite pasar el extremo del soporte de la pinza (hasta entonces
tomado como referencia) al extremo del útil, tanto a nivel dimensional como rotacional.
101
TRANSFORMADAS COMPUESTAS
102
En muchos casos, es más ventajoso tragbajar según la referencia útil en el extremo del soporte de la
pinza que según la referencia cartesiana de base.
El punto final donde debe llegar el robot, será una composición de las distintas cotas definidas según el
eje X, Y, Z útil asociado a las cotas X, Y, Z de coordenadas de base.
Hay una composición de dos sistemas de referencia por lo que lo llamamos transformada compuesta.
MOVE A : B
Las cotas X, Y, Z del punto B, se definen en la referencia útil
y con respecto al punto A.
Las cotas del punto A se definen en la referencia, con
respecto a su origen.
103
Teóricamente, se pueden añadir tantas cotas como se quieran, aunque a partir de 3, se deben tener en
cuenta los errores que se van acumulando ...
Instrucciones que aceptan las transformadas compuestas:
MOVE A : B
APPRO A: B,50
SET © = A : B
HERE A : B
TEACH A : B0
T Y TS comando editor
Se puede hacer una corrección de cotas según el sistema de referencia del útil, en modo comando o en
programa, con la instrucción TOOL.
104
FRAME (<comp 1>, <comp 2>, <comp 3>, <comp 4>)
Donde COMP 4 es un punto que define el origen de la nueva referencia en que:
1. El eje X es paralelo a una línea que pasa por los puntos COMP 1 y COMP 2 (sentido positivo del
primero hacia el segundo).
2. El eje Y es perpendicular al eje X y pasa por COMP 3 (el sentido positivo viene definido por
COMP 3)
3. El plano X Y viene definido por los puntos COMP 1, COMP 2, COMP 3.
Ejemplo 1: HERE FRAME (CP1, CP2, CP3, CP4) : S1
S1 tendrá las coordenadas relativas con respecto a este nuevo sist. De referencia.
Ejemplo 2: MOVE FRAME (CP1, CP2, CP3, CP4) : S1
Ejemplo 3: SET X = FRAME (CP1, CP2, CP3, CP4)
APPRO X : S1, 30
MOVE X : S1
105
CONTROL DE CONFIGURACIÓN
106
READY
Permite posicionar el brazo del robot en una posición particular.
107
ALIGN
Permite poner el eje Z útil paralelo al eje más próximo del sist. de referencia de base (X, Y o Z)
108
Ejemplo:
PROG ENSAYO
1 BELOW
2 MOVE A ->
3 ABOVE
4 MOVE A ->
¿ Porqué no funciona el programa siguiente?
PROG ENSAYO
1 MOVE A
2 BELOW
3 MOVE A
4 ABOVE
109
Ejemplo : PROG ESSAI
1 LEFTY
2 MOVE A
3 RIGHTY
4 MOVE A
RIGHTY-LEFTY
110
FLIP
NOFLIP
Esta función permite realizar una simetría respecto al eje 5 conservando los ángulos O, A, T en la
referencia de base.
FLIP da valores de ángulos negativos al eje 5
NOFLIP da valores de ángulos positivos al eje 5.
Ejemplo:
PROG FLIP
1 FLIP
2 MOVE A
3 NOFLIP
4 MOVE A
111
CONTROL DE TRAYECTORIA
112
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 mensaje de error.
X segundos después de salir del punto A, deberíamos encontrarnos en B. Si el robot está en B’ y si se
ha indicado previamente COARSE, continúa hacia C.
Ejemplo:
COARSE ALWAYS
MOVE A
MOVE B
MOVE C
FINE [ALWAYS]
Es lo contrario de la instrucción anterior.
Nota: Las instrucciones subrayadas son las que la máquina toma por defecto.
113
ENABLE CP
Esta instrucción declara que el servosistema de velocidad es prioritario sobre el servosistema de
posición.
DISABLE CP
Esta instrucción declara al robot que el servosistema de posición es prioritario sobre el servosistema
de velocidad.
NULL [ALWAYS]
La unidad central, espera que los movimientos de los ejees haya 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.
114
INTOFF[ALWAYS]
Esta instrucción es idéntica a COARSE, aunque se aplica al seguiente de la trayectoria y no a la
posición final.
Si INTOFF ->La máquina acepta la desviación.
Si INTON -> La desviación hace que aparezca un mensaje y el movimiento cesa.
El error sobre la trayectoria puede venir provocado por un obstáculo, inercia, etc.
INTO [ALWAYS]
Es el opuesto de la instrucción anterior.
BREAK
Esta instrucción permite hacer pasar en disable CP, sólo para la instrucción de movimiento siguiente.
Ejemplo:
Además, permite interrumpir la ejecución del programa durante la búsqueda de su destino.
115
Las siguientes instrucciónes sólo conciernen los modelos 761/763 a partir de las versiones 2.0H Y
2.0.J.
ELSPON
Por debajo de SPEED 10, si se desea un desplazamiento suave lineal, y progresivo se puede utilizar la
instrucción ELSPON.
Esta será válida hasta que encuentre:
ELSPOFF
Nótese que ELSPOFF es el valor que se toma por defecto y que una reinicialización provoca el mismo
efecto que ELSPOFF.
116
PAYLOAD <valor> <unidad> unidad en Kg o en libras 0 < 0 = valor < 0 = 4kg.
Esta instrucción permite adaptar el robot a las condiciones reales de carga a transportar.
Funciona con los robots 562 y permite reducir el tiempo de desplazamiento.
Esta instrucción es valida en el caso de que la carga a transportar sea inferior al valor máximo que el
robot puede soportar.
MOVE A
MOVE B
MOVE C
BREAK
PAYLOAD 2 KG
MOVE D
MOVE E
BREAK
PAYLOAD 4 KG
MOVE F
MOVE G
Atención:
Si la carga real es superior a la inidcada por payload, el robot se puede estropear.
117
OPERACIONES CON DISQUETTES
Atención: Las instrucciones siguientes sólo funcionan en modo (.) o (*).
118
FORMAT
La máquina responderá:
ARE YOU SURE (Y,N)?
Esta instrucción permite configurar un disquette nuevo para el posterior almacenamiento de
programas. La operación de formateado define el número de pistas, número de sectores por pista, etc.
Atención: Si se formatea un disquette que contenga ficheros, éstos será destrudidos.
119
LISTF ( O FLIST)
Visualiza los nombres de los ficheros contenidos en el disquette.
Atención: LISTF no visualiza el contenido de cada fichero.
Ejemplo: LISTF
En pantalla aparecerá:
TOTO.V2
TITI.V2
TUTU.V2
PRO1.V2
Etc...
120
STORE nombre de fichero = nombre prog 1, nombre prog 2, ...
Ejemplo: STORE FIC.1 = TOTO, TITI
Los programas TOTO.PG, TOTO.LC, TOTO.RV, y TITI.PG, TITI.LC, TITI.RV se grabarán bajo el
nombre de ARCHIVO FIC.1.V2.
STORE (o LSTORE)
Ejemplo: STORE FIC.1 = TOTO, TITI
La sintaxis es idéntica a la instrucción STORE, salvo que aquí solo concierne a los ficheros de puntos
asociados al programa.
El nombre del fichero en el disco será FIC.1.LC.
121
STORE (o PSTORE)
Idem a la instrucción STORE, salvo que ésta sólo concierne al almacenamiento de ficheros de
programas.
Ejemplo: STORE FIC.1 = TOTO, TITI
El nombre del fichero en el disco será FIC.1.PG.
RESTORE (o STORER)
Idem a la instrucción STORE, salvo que ésta sólo concierne al almacenamiento de ficheros de
variables reales.
Ejemplo: STORER FIC.1 = TOTO, TITI
El nombre del fichero en el disco será FIC.1.RV.
122
LOAD nombre de fichero
Ejemplo: LOAD FICH.1.PG El programa FICH.1.PG va a la memoria.
O LOAD FICH.1.LC El programa FICH.1.LC va a la memoria.
O LOAD FICH.1.RV El programa FICH.1.RV va a la memoria.
O
LOAD FICH.1
En este último caso, los programas FICH.1.PG., FICH.1.LC,
FICH.1/RV van a la memoria.
Atención:
Si en la memoria ya existe un programa con el mismo nombre, el nuevo sustituye al
antiguo.
123
FDELETE (o DELETEF)
Ejemplo: FDELETE FIC.1.PG
La máquina responderá:
ARE YOU SURE (Y,N) ?
Si la respuesta es afirmativa, el fichero correspondiente será destruido.
Atención:
Se debe indicar bien el sujeto LC, PG o RV que sigue al nombre del programa.
124
COMPRESS
La máquina responderá por:
ARE YOU SURE (Y,N) ?
En el caso que el disco esté lleno (en pantalla indica DISK FULL), utilizar la orden COMPRESS para
comprimir todos los programas y recuperar espació.
125
RENAME <nombre del nuevo fichero> = < nombre del antiguo fichero>
Ejemplo: RENAME TOTO.PG = TITI.PG
El fichero del disco llamado TITI.PG pasa a llamarse TOTO.PG
Atención: Este comando sólo funciona a partir de la versión 2.0 del VAL II.
126
PROCESO DE AUTOSTART
127
EL AUTOSTART
Su papel:
Cuando se quiere arrancar el robot, al empezar la jornada, se deben hacer cierto número de
operaciones que pueden ser fastidiosas.
Estas operaciones se pueden reducir reagrupándolas en un fichero llamado AUTO.
Procedimiento:
1.
Editar el programa que se desea utilizar en autostart (si éste no existe).
Ejemplo: ENSAYO
2. Editar bajo el nombre de AUTO (este nombre es indispensable) los distintos comandos que se
deseen, precedidos por las instrucciones “MC”.
Ejemplo: EDIT AUTO
1 ? MC CAL
2 ? MC LOAD ENSAYO
3 ? MC EX ENSAYO
3. Hacer arrancar la unidad de mando siguiendo el proceso siguiente:
a. Puesta en marcha de la pantalla /teclado
b. Mantener el botón AUTOSTART al mismo tiempo que alimentamos la unidad de control.
Atención: No soltar antes de que el testigo AUTOSTART se encienda.
c. en pantalla aparece:
AUTO STARTUP: need ARM POWER & COM mode
o
o
Nota:
conectar la alimentación del brazo.
Aseguarse de que el testigo del mando manual esté en el modo COMP.
d. el robot ejecutará los distintos comandos indicados en el programa AUTO.
El proceso AUTOSTART se puede realizar sin pantalla, sin mando manual y eventualmente sin
floppy (en el caso que todos los elementos necesarios para la ejecución del programa AUTO
residan en memoria RAM registrados.
Observación: Constatar que si se emplea DO delante de las instrucciones de programas que se
pueden mezclar órdenes de monitor y órdenes de programas en la elaboración del
programa AUTO.
Ejemplo:
PROG AUTO
1 ? MC CAL
2 ? MC SP 10
3 ? MC DO TYPE “INSTRUCCION PROG”
4 ? MC LOAD ENSAYO
5 ? MC EX ENSAYO, 1, 9
Atención:
A partir de la versión 2.0 se pueden añadir etiquetas en el programa autostart.
128
Ejemplo:
MC CAL
1
MC DO READY
2
MC DO X = 0
3
8 MC DO X = X + 1
4
MC DO TYPE “VALOR DE X = “ , X
5
MC IF X < 10 GOTO 8
MC DO TYPE “FIN”
129
COMANDOS ESPECIFICOS
STATUS
Este comando da el estado interno del robot.
Ejemplo : STATUS
ROBOT STATE : MANUAL MODE -> indica el modo del robot.
MONITOR SPEED : 20.00-> indica la velocidad del monitor.
PROGRAM CYCLES
COMPLETED : 1-> número de ciclos ejecutados
REMAINING : 0-> número de ciclos restantes
PROGRAM : NEXT STEP
CABS : 11 -> nombre y número de línea en
que se ha detenido el programa.
FREE
Este comando da el estado de la memoria RAM.
Ejemplo:
FREE
% UNUSED MEMORY : 98.21 98.21% de la memoria que queda libre.
DONE
Este comando permite pasar el lenguaje VAL al lenguaje máquina (O.D.T.)
ZERO
La máquina responde por:
ARE YOU SURE (Y,N)?
Este comando permite vaciar todo el contenido de la memoria, y las entradas / salidas exteriores.
130
WHERE
Esta instrucción permite conocer la posición del robot en el momento en que se declara este comando.
Ejemplo : WHERE
Posición %
X
Y
En la referencia
De base (en mm) -> 45.53
Jt 1
Posición angular
En grados
-> -3.47
Z
O
35.28
-28.42
90
Jt3
Jt4
Jt5
Jt6
84.728
-69.46
6.438
5.87
Jt2
-85.983
A
T
-85.32
17.427
WHERE 1
Este comando permite obtener dinámicamente los valores de WHERE.
Para salir de este modo teclear
C.
131
EJEMPLO DE APLICACIÓN
Despaletizado de botellas de champaña
Se desea paletizar y despaletizar un contenedor de botellas según el ciclo siguiente:
132
133
PLANO DE IMPLANTACIÓN
134
ELEMENTOS DE TOMA
135
ABACO DE TIEMPOS
136
PROGRAM princ
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
MOVE #13
Rang = 0
SET a1 = p1
SET a11 = p11
SET a3 = p3
SET a33 = p33
SET a2 = p2
SET a 22 = p22
SET a4 = p4
SET a 44 = p44
SET d1 = dg1
SET d11 = dg11
SET d2 = dg2
SET d22 = dg22
SET d3 = dg3
SET d33 = dg33
SET d4 = dg4
SET d44 = dg44
SET a1a = p1a
SET d1a = dg1a
SET a2a = p2a
SET d2a = dg2a
SET d13 = dg13
SET do = rot
TIMER (2) = 0
10 TIMER (1) = 0
TIMER (3) = 0
MOVE d33
MOVES a33
BREAK
SIGNAL 1
MOVES d33
CALL pose
MOVE d44
MOVES a11
BREAK
SIGNAL
MOVES D44
CALL pose
MOVE d11
MOVES a11
BREAK
SIGNAL 1
MOVES d11
MOVE d13
CALL posea
MOVE d22
MOVES a22
BREAK
SINGAL 1
MOVES d22
MOVE do
CALL pose
IF rang > 6 GOTO 20
MOVE d1
MOVES a1
BREAK
SIGNAL 1
MOVES d1
CALL pose
MOVE d2
62
63
64
65
66
MOVES a2
BREAK
SIGNAL 1
MOVES d2
CALL pOse
137
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
30 IF rang > 8 GOTO 40
MOVE d3
MOVES a3
BREAK
SIGNAL 1
MOVES d3
MOVE d13
CALL posea
MOVE d4
MOVES a4
BREAK
SIGNAL 1
MOVES d4
MOVE do
CALL pose
A = TIMER (1)
TYPE a
SET a1 = SHIFT (a1 BY,, -89)
SET a11 = SHIFT /A11 BY, , -89)
SET a3 = SHIFT (a3 BY ,, -89)
SET a33 = SHIFT (a33 BY ,, -89)
SET a2 = SHIFT (a2 BY,, -89)
SET a22 = SHIFT (a22 BY , , -89)
SET a4 = SHIFT (a4 BY, , -89)
SET a44 = SHIFT (a44 BY , , -89)
SET d1 = SHIFT(d1 BY , , -89)
SET d11 = SHIFT (d11 BY , , -89)
SET d2 = SHIFT (d2 BY , , -89)
SET d22 = SHIFT (d22 BY , , -89)
SET d3 = SHIFT (d3 BY , , -89)
SET d33 = SHIFT (d33 BY , , -89)
SET d4 = SHIFT (d4 BY , , -89)
SET d44 = SHIFT (d44 BY , , -89)
Rang = rang +1
IF rang > 5 GOTO 50
SET d13 = SHIFT (d13 BY, , -89)
SET do = SHIFT (do BY , , -89)
50 IF rang < 10 GOTO 10
20 rang1 = 0
OPEN
MOVE d1a
MOVE a1a
BREAK
SIGNAL 1
MOVES d1a
CALL pose
OPEN
MOVE d2a
MOVES a2a
BREAK
SIGNAL 1
MOVES d2a
CALL pose
SET a1a = SHIFT (a1a BY , , -89)
SET d1a = SHIFT (d1a BY , , -89)
SET a2a = SHIFT (a2a BY , , -89)
SET d2a = SHIFT (d2a BY, , -89)
138
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
Rang1 = rang1 + 1
GOTO 30
40 OPEN
MOVE #dg12
MOVE #dgo
MOVE dega1
MOVES pr1
BREAK
SIGNAL 1
MOVES dega1
MOVE #dgo
MOVE #dg12
CLOSE
CALL pose
OPEN
MOVE #dg12
MOVE #dgo!
MOVE dega2
MOVES pr2
BREAK
SIGNAL 1
MOVES dega2
MOVE #dgo1
MOVE #dg12
CLOSE
CALL pose
C = TIMER (3)
TYPE C
b = TIMER (2)
TYPE b
END
PROGRAM pose
1 MOVE #dg13
2 CLOSE
3 MOVE #apo12
4 MOVE #po12
5 COARSE
6 MOVES po12
7 BREAK
8 SIGNAL –1
9 FINE
10 MOVE #dg4
11 MOVE #dg13
12 RETURN
END
PROGRAM posea
1
2
3
4
5
6
7
8
9
10
11
MOVE #rot
MOVE #dg11
MOVE #apo10
COARSE
MOVES #po10
BREAK
SIGNAL –1
FINE
MOVES #dgr1
MOVE #rot
RETURN
END
139
CABLEADO DE ENTRADA
140
CABLEADO DE SALIDA
141
ESQUEMA DEL CABLEADO
142
TECNOLOGÍA DEL ENCODER
143
144