Está en la página 1de 144

GUÍA

VAL 2

MANUAL N° 1
© Copyright 1992 by STÄUBLI S.A.
D.280.172.05. (A)
ÍNDICE

A. Introducción ......................................................................................3
B. Presentación y arquitectura general .................................................4
C. La seguridad .....................................................................................8
D. Puesta en marcha y paro de la unidad de mando ............................10
E. Referencias, características y definición de los ángulos ...................17
F. Cómo poner en movimiento el brazo del robot, examen de
los mandos manuales, convenios de escritura .................................22
G. Como lanzar un programa ................................................................27
Como ejecutar un programa durante su ejecución ...........................29
Modos de funcionamiento ................................................................31
Como crear un programa ..................................................................32
H. Comandos de edición .......................................................................33
I. 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
J. 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
K. Los subprogramas ............................................................................80
L. Los saltos condicionales e incondicionales .......................................82
Operadores lógicos y relacionales .....................................................83
M. Comunicación pantalla /teclado ........................................................84
PROMPT ..........................................................................................85
TYPE .................................................................................................86
TPMESS ...........................................................................................89
N. 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 T56O.1.3. H/W-O 26 Oct.84 28KW


Versión del logiciel Tipo de robot Código interno Fecha de elaboración del logiciel 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: ATENCIÓN

En el caso de RETRY se vuelve a ejecutar la 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 MOVE C1
4 ? MOVE D MOVE C2
5 ? MOVE E

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:

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 1 ? MOVE A
2 ? MOVE B 2 ? MOVE B
3 ? MOVE C 3 ? MOVE C
4 ? MOVE D 4 ? MOVE D
5 ? S2R 5 ? MOVE E
2 ? MOVE B 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:

3 ? MOVET D1,0 si la pinza está cerrada


o 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 Z/JT3 O/JT4 A/JT5 T/JT6
0 0 0 90 -90 0

CHANGE?
10,30, -15,18 ®

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


10 30 -15 18 -90 0

CHANGE?®

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 Z/JT3 O/JT4 A/JT5 T/JT6
120 12 -80 90 -90 0
CHANGE ? ®

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).

JT1 18° X 120 mm


JT2 -123° Y 12 mm
JT3 +14 ° Z 5 mm
MOVE # A JT4 90° MOVE A O 90°
JT5 -90° A -90°
JT6 0° T 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 A es el nombre de un punto donde el robot deberá ir.
4... Comporta las coordenadas X, Y , Z, O, A, T expresadas en mm y en
grados.
5...
6... AE = 3.4 permite asignar el valor 3,4 a la variable "AE"
7 AE = 3.4
8...
9...

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:

1 18 Æ A [1] = 18
2 287 Æ A [2] = 287
3 14 Æ A [3] = 14
4 1984
5 226
6 317
7 6

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 Eje Eje (del punto AH)

X Y 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 2 RETURN


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

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 1 MOVE D
2... 2 MOVE F
3... 3…
4... 4…
5 CALL SPROG 5...
6... 6 RETURN
7...

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 10 MOVE A
2 MOVE B
3 GOTO 10
4
.
.
.

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 16 MOVE A
10 MOVE B
11 IF N = <6 GOTO 16
12 12 DELAY 5
13
.
.
.

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á: 10 espacios

/l<n> dar el valor, según una codificación entera decimal en que el campo viene declarado por
n.

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. ser una cadena en c6digo ASCII;


2. 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

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 conectar la alimentación del brazo.


o 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.


Nota: 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 Z O A T
En la referencia
De base (en mm) -> 45.53 35.28 -28.42 90 -85.32 17.427

Jt 1 Jt2 Jt3 Jt4 Jt5 Jt6


Posición angular
En grados -> -3.47 -85.983 84.728 -69.46 6.438 5.87

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 MOVE #13
2 Rang = 0
3 SET a1 = p1
4 SET a11 = p11
5 SET a3 = p3
6 SET a33 = p33
7 SET a2 = p2
8 SET a 22 = p22
9 SET a4 = p4
10 SET a 44 = p44
11 SET d1 = dg1
12 SET d11 = dg11
13 SET d2 = dg2
14 SET d22 = dg22
15 SET d3 = dg3
16 SET d33 = dg33
17 SET d4 = dg4
18 SET d44 = dg44
19 SET a1a = p1a
20 SET d1a = dg1a
21 SET a2a = p2a
22 SET d2a = dg2a
23 SET d13 = dg13
24 SET do = rot
25 TIMER (2) = 0
26 10 TIMER (1) = 0
27 TIMER (3) = 0
28 MOVE d33
29 MOVES a33
30 BREAK
31 SIGNAL 1
32 MOVES d33
33 CALL pose
34 MOVE d44
35 MOVES a11
36 BREAK
37 SIGNAL
38 MOVES D44
39 CALL pose
40 MOVE d11
41 MOVES a11
42 BREAK
43 SIGNAL 1
44 MOVES d11
45 MOVE d13
46 CALL posea
47 MOVE d22
48 MOVES a22
49 BREAK
50 SINGAL 1
51 MOVES d22
52 MOVE do
53 CALL pose
54 IF rang > 6 GOTO 20
55 MOVE d1
56 MOVES a1
57 BREAK
58 SIGNAL 1
59 MOVES d1
60 CALL pose
61 MOVE d2

62 MOVES a2
63 BREAK
64 SIGNAL 1
65 MOVES d2
66 CALL pOse
137
67 30 IF rang > 8 GOTO 40
68 MOVE d3
69 MOVES a3
70 BREAK
71 SIGNAL 1
72 MOVES d3
73 MOVE d13
74 CALL posea
75 MOVE d4
76 MOVES a4
77 BREAK
78 SIGNAL 1
79 MOVES d4
80 MOVE do
81 CALL pose
82 A = TIMER (1)
83 TYPE a
84 SET a1 = SHIFT (a1 BY,, -89)
85 SET a11 = SHIFT /A11 BY, , -89)
86 SET a3 = SHIFT (a3 BY ,, -89)
87 SET a33 = SHIFT (a33 BY ,, -89)
88 SET a2 = SHIFT (a2 BY,, -89)
89 SET a22 = SHIFT (a22 BY , , -89)
90 SET a4 = SHIFT (a4 BY, , -89)
91 SET a44 = SHIFT (a44 BY , , -89)
92 SET d1 = SHIFT(d1 BY , , -89)
93 SET d11 = SHIFT (d11 BY , , -89)
94 SET d2 = SHIFT (d2 BY , , -89)
95 SET d22 = SHIFT (d22 BY , , -89)
96 SET d3 = SHIFT (d3 BY , , -89)
97 SET d33 = SHIFT (d33 BY , , -89)
98 SET d4 = SHIFT (d4 BY , , -89)
99 SET d44 = SHIFT (d44 BY , , -89)
100 Rang = rang +1
101 IF rang > 5 GOTO 50
102 SET d13 = SHIFT (d13 BY, , -89)
103 SET do = SHIFT (do BY , , -89)
104 50 IF rang < 10 GOTO 10
105 20 rang1 = 0
106 OPEN
107 MOVE d1a
108 MOVE a1a
109 BREAK
110 SIGNAL 1
111 MOVES d1a
112 CALL pose
113 OPEN
114 MOVE d2a
115 MOVES a2a
116 BREAK
117 SIGNAL 1
118 MOVES d2a
119 CALL pose
120 SET a1a = SHIFT (a1a BY , , -89)
121 SET d1a = SHIFT (d1a BY , , -89)
122 SET a2a = SHIFT (a2a BY , , -89)
123 SET d2a = SHIFT (d2a BY, , -89)

138
124 Rang1 = rang1 + 1
125 GOTO 30
126 40 OPEN
127 MOVE #dg12
128 MOVE #dgo
129 MOVE dega1
130 MOVES pr1
131 BREAK
132 SIGNAL 1
133 MOVES dega1
134 MOVE #dgo
135 MOVE #dg12
136 CLOSE
137 CALL pose
138 OPEN
139 MOVE #dg12
140 MOVE #dgo!
141 MOVE dega2
142 MOVES pr2
143 BREAK
144 SIGNAL 1
145 MOVES dega2
146 MOVE #dgo1
147 MOVE #dg12
148 CLOSE
149 CALL pose
150 C = TIMER (3)
151 TYPE C
152 b = TIMER (2)
153 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 MOVE #rot
2 MOVE #dg11
3 MOVE #apo10
4 COARSE
5 MOVES #po10
6 BREAK
7 SIGNAL –1
8 FINE
9 MOVES #dgr1
10 MOVE #rot
11 RETURN

END

139
CABLEADO DE ENTRADA

140
CABLEADO DE SALIDA

141
ESQUEMA DEL CABLEADO

142
TECNOLOGÍA DEL ENCODER

143
144

También podría gustarte