Instrucciones de CS1
Nuevas instrucciones
Soporte Técnico
1
Índice
•
•
•
•
•
•
•
•
•
•
Formato instrucciones
Direccionamientos
Tareas
Interrupciones
Temporizadores
Bloques de programa
Tablas de datos
Cadenas de caracteres
Saltos
Instrucciones de Lazo
FOR-NEXT
Soporte Técnico
•
•
•
•
•
•
•
•
•
•
Desplazar/Rotar
Increment/Decrement
Comparación
Conversión
Coma Flotante
Calendario
Ficheros de Memoria
Control de datos
Comunicaciones
Cambios en Intrucc.
2
Formato instrucciones
Flancos de subida y bajada
Refresco inmediato
Soporte Técnico
3
Formato de instrucciones
• Flanco de subida @
• La instrucción se ejecuta con el flanco de subida de
la condición de ejecución.
• La entrada se activa con el flanco de subida.
• Flanco de bajada %
• La instrucción se ejecuta con el flanco de bajada de
la condición de ejecución.
• La entrada se activa con el flanco de bajada.
• Refresco inmediato !
• La instrucción hace un refresco de las variables al
ejecutarse.
• Puede combinar el flanco de subida o bajada.
Soporte Técnico
4
Ejemplo de Formatos
% LD 0000.00
LD 0000.00
% SET 0001.00
! MOV(21)
0000
DM00000
0000.00
[email protected](21)
0001
DM00001
Soporte Técnico
Se activa durante un ciclo de programa
con el flanco de bajada de 0000.00
Se ejecuta con el flanco de bajada de 0000.00
Hace un refresco inmediato del canal 0000 y lo
mueve al DM00000
Se ejecuta con el flanco de subida de 0000.00 y
hace un refresco inmediato del canal 0001 para
moverlo al DM00001
5
TST(350) TSTN(351)
• Se utilizan como LD, AND y OR.
• Comprueban el estado del bit N de la
palabra S.
• S: Palabra dato.
• N: Número de bit.
• TSTN es la instrucción negada de TST.
TST(350)
S
N
Soporte Técnico
TSTN(351)
S
N
6
TST, TSTN Ejemplo
0010.06
TST(350)
DM00000
&6
0010.04
0000.00
TSTN(351)
DM00000
&11
Soporte Técnico
El bit 6 del DM00000 activa la salida
0010.6
La salida 0010.04 se activa cuando
la entrada 0000.00 está a 1 y el bit
11 del DM0000 está a 0.
7
SETA(530) RSTA(531)
• SETA pone a 1 N2 bits consecutivos
•
empezando en el bit N1 de la palabra D.
RSTA los pone a 0.
• D: Palabra inicial.
• N1: Primer bit.
• N2: Número de bits.
SETA(530)
D
N1
N2
Soporte Técnico
@SETA(530)
D
N1
N2
RSTA(531)
D
N1
N2
8
@RSTA(531)
D
N1
N2
SETA(530) RSTA(531)
@SETA(530)
W000
&4
&36
Pone a 1 36 bits consecutivos desde el bit 4
de la palabra W000
@RSTA(531)
W000
&4
&36
Pone a 0 36 bits consecutivos desde el bit 4
de la palabra W000
Soporte Técnico
W000
W001
W002
W000
W001
W002
1111 1111 1111 0000
1111 1111 1111 1111
0000 0000 1111 1111
0000 0000 0000 1111
0000 0000 0000 0000
1111 1111 0000 0000
9
Direccionamientos
Addessing
Soporte Técnico
10
Direccionamientos
• Existen varios tipos de direccionamientos:
» Inmediato (#, &)
» Directo (CIO, W, H, A, T, C, D, E, En_)
» Indirecto (D, E, En_) sustituye a IEMS(-)
• Dirección en BCD (*D, *E, *En_)
• Dirección en Binario (@D, @E, @En_)
» Indirecto Indexado (IR)
•
•
•
•
Soporte Técnico
,IR0
+234,IR0
DR0,IR0
,IR0++
11
Ejemplos
MOV(21)
&12
W000
Escribe C (12 traducido a binario) en W000
Inmediato traducido a binario
Directo
MOV(21)
#1A34
W000
Escribe 1A34 binario en W000
Inmediato binario
Directo
MOV(21)
W000
W001
Escribe el contenido de W000 en W001
Directo
Directo
MOV(21)
#1A
*D00000
Escribe 1A en la dirección(BCD)indicada en D00000
Inmediato
Indirecto BCD
Soporte Técnico
12
Ejemplos
MOV(21)
W000
@D00000
Escribe el contenido de W000 en la
dirección (Binaria) indicada en D00000
Directo
Indirecto Binario
MOV(21)
#1A
,IR0
Escribe 1A en la dirección indicada en IR0
Inmediato
Indexado
MOV(21)
#1A
+23,IR0
Escribe 1A en la dirección indicada en (IR0+23)
Inmediato
Indexado
MOV(21)
#1A
DR0,IR0
Escribe 1A en la dirección indicada en (IR0+DR0)
Inmediato
Indexado
Soporte Técnico
13
Ejemplos
MOV(21)
#1A
,IR0+
MOV(21)
#1A
,IR0++
MOV(21)
#1A
,-IR0
MOV(21)
#1A
,--IR0
Soporte Técnico
Escribe 1A en la dirección indicada en IR0
y aumenta IR0 una unidad
Inmediato
Indexado
Escribe 1A en la dirección indicada en IR0
y aumenta IR0 dos unidades
Inmediato
Indexado
Escribe 1A en la dirección indicada en (IR0-1)
y disminuye IR0 una unidad
Inmediato
Indexado
Escribe 1A en la dirección indicada en (IR0-2)
y disminuye IR0 dos unidades
Inmediato
Indexado
14
MOVR(560)
• Crea un puntero a la palabra o bit S y lo
guarda en el registro índice D.
• S: Palabra o bit a mover.
• D: Registro índice IR donde se guarda la dirección.
MOVR(560)
S
D
Soporte Técnico
@MOVR(560)
S
D
15
MOVRW(561)
• Crea un puntero al temporizador o
contador S y lo guarda en el registro índice
D.
• S: Temporizador o contador.
• D: Registro índice IR donde guarda el temporizador
o contador.
MOVRW(561)
S
D
Soporte Técnico
@MOVRW(561)
S
D
16
MOVR(560) MOVRW(561)
MOVR(560)
T0000
IR0
MOVRW(561)
T0000
IR0
Soporte Técnico
Guarda el Valor presente PV del temporizador
T0000 en el registro índice IR0
IR0
0000 0195
Guarda el número de temporizador T0000 en el
registro índice IR0
17
Tareas
División del programa en tareas
Soporte Técnico
18
Programa y Tareas
• Dentro de un mismo PLC se puede repartir
un programa en tareas cíclicas o de
interrupción.
Tarea Cíclica 00
Tarea Cíclica 01
Tarea interrupción I/O 107
Tarea Cíclica 02
Tarea Interrupción Programada 02
Tarea Cíclica 31
Soporte Técnico
19
Programa y Tareas
• Se puede cambiar un programa
simplemente modificando las tareas de las
que se compone.
• Programa A: Tareas 00, 01 y 03.
• Programa B: Tareas 00, 02 y 03.
Tarea
cíclica 00
Tarea
cíclica 01
Programa A
00-01-03
Soporte Técnico
Tarea
cíclica 02
Programa B
00-02-03
20
Tarea
cíclica 03
Tarea cíclica
• Se pueden programar 32 tareas cíclicas
•
•
•
00÷31.
Estas tareas se ejecutan por orden de
numeración: La tarea 00 es la inicial, luego
la 01, ... hasta la 31 que es la última.
Cada una de estas tareas acaba con la
instrucción END(001).
En cada ciclo de scan se puede elegir qué
tareas queremos que se ejecuten y cuales
no.Una tarea puede activar a otras.
Soporte Técnico
21
CX-Programer
• Se pueden utilizar dos clases de símbolos
(variables):
» Globales:
• Sirven para todas las tareas (cíclicas y de
interrupción) y no se pueden duplicar los nombres.
• Son únicas para cada PLC.
» Locales:
• Sólo tienen validez en la tarea donde se han
creado, bien sea cíclica o de interrupción.
• Estas variables se pueden repetir en otras tareas,
pero nunca en la misma tarea.
Soporte Técnico
22
Control de Tareas
• Existen dos tipos de tareas:
» Tareas cíclicas: Se ejecutan según esté su flag
de ejecución TK00 a TK31. Una vez por ciclo
de scan y en orden según su número de tarea.
» Tareas de interrupción: Se ejecutan cuando se
cumple la condición de interrupción,
independientemente del ciclo de scan.
• Para controlar qué tareas cíclicas se
ejecutan en un ciclo de scan se utilizan las
instrucciones TKON(820) y TKOF(821).
Soporte Técnico
23
TKON (820)
• Permite que se ejecute la tarea cíclica,
•
pone a 1 el flag de la tarea TK00 a TK31.
Sólo se puede ejecutar esta instrucción
desde una tarea cíclica, de otro modo da
un error ER a 1.
TKON(820)
@TKON(820)
N
Soporte Técnico
N
24
TKON(820)
• N: debe ser una constante comprendida
•
entre #0 y #31. Debe Existir la tarea N.
Si la instrucción TKON(820) es ejecutada
desde la tarea cíclica m, la tarea N se
ejecutará según:
» m<N: en el mismo ciclo de scan.
» m>N: en el siguiente ciclo de scan.
• Si ya se está ejecutando la tarea N, la
instrucción TKON(820) que activa la tarea
N se trata como NOP(000).
Soporte Técnico
25
TKOF (821)
• Pone en stand by la tarea cíclica, pone a 0
•
el flag de la tarea TK00 a TK31.
Se puede ejecutar esta instrucción desde
una tarea cíclica o desde una tarea de
interrupción.
TKOF(821)
@TKOF(821)
N
Soporte Técnico
N
26
TKOF(821)
• N: debe ser una constante comprendida
•
entre #0 y #31. Debe existir la tarea N.
Si la instrucción TKOF(821) es ejecutada
desde la tarea cíclica m, la tarea N se
pondrá en stand by según:
» m<N: en el mismo ciclo de scan.
» m>N: en el siguiente ciclo de scan.
Soporte Técnico
27
TKON TKOF Ejemplo
Las tareas cíclicas 00 y 03 están prefijadas para que se
ejecuten al arrancar el PLC.
Tarea 00
0000.00
TKON(820)
1
Cuando la entrada 0000.00 está a uno se ejecuta el programa A
con las tareas 00, 01, 03.
TKOF(821)
2
0000.01
TKON(820)
2
Cuando la entrada 0000.01 está a uno se ejecuta el programa A
con las tareas 00, 02, 03.
TKOF(821)
1
Soporte Técnico
28
Interrupciones
Control de interrupciones
Soporte Técnico
29
Control de Interrupciones
• Existen 4 tipos de interrupciones:
•
•
•
•
Fallo de alimentación (Tarea Int. 1)
Programadas en el tiempo (Tareas Int. 2, 3)
Unidades de interrupción 0÷3 (Tareas Int. 100÷131)
Entradas externas (Tareas Int. 0 ÷255)
• La interrupción de fallo de alimentación no
•
se puede controlar mediante instrucciones.
Las instrucciones para controlar
interrupciones son:
• MSKS(690), MSKR(692), CLI(691), EI(694), DI(693)
Soporte Técnico
30
MSKS(690)
• Enmascarar interrupciones:
» Unidades de interrupción (ON/OFF).
» Programadas en el tiempo (tiempo/OFF).
• N:Identificador de interrupción(#0÷#5).
• S:Datos de enmascaramiento o de
temporización.
MSKS(690)
N
S
Soporte Técnico
@MSKS(690)
N
S
31
MSKS(690) - N y S
• Explicación de los parámetros N y S
• N: Constante #0÷#5
• S: Valor constante o de cualquier área de datos
excepto Registro índice.
N
Entrada
S
0
Unidad interrupción 0 Bits 07 máscara de interrupcion 100107
1
Unidad interrupción 1 Bits 07 máscara de interrupcion 108115
2
Unidad interrupción 2 Bits 07 máscara de interrupcion 116123
3
Unidad interrupción 3 Bits 07 máscara de interrupcion 124131
4
Programada 2
5
Programada 3
Soporte Técnico
0000: Enmascarar interrupción.
0001270F: Intervalo de interrupción.
32
MSKS(690)- N y S
• N es la entrada de interrupción:
• Unidad de interrupción (0,1,2,3).
• Interrupción programada (2, 3).
• Los valores 1 de S enmascaran las tareas
•
de interrupción asociadas a la entrada N.
Si N es 4 ó 5 se tratan de tareas de
interrupción programadas. En este caso S
es el intervalo entre interrupciones en
unidades de 10 ms o de 1 ms. Si S es 0,
enmascaramos la tarea de interrupción.
Soporte Técnico
33
MSKS(690) Ejemplo
MSKS(690)
#0
#00FE
Desenmascara la entrada 0 de la unidad
de interrupción 0.
MSKS(690)
#4
#0000
Enmascara la tarea de interrupción
programada 2.
MSKS(690)
#5
#03E8
Sitúa el intervalo de la tarea de interrupción
programada 3 a 10 s (Tiempo 10 ms).
Soporte Técnico
34
MSKR(692)
• Lee los parámetros de la interrupción
introducidos con la instrucción anterior
MSKS(690).
• N: Identificador de interrupción. Igual que en MSKS.
• D: Palabra de destino. Cualquier área de datos
excepto Registros índice y constantes. Tiene el
mismo significado que en MSKS.
MSKR(692)
N
D
Soporte Técnico
@MSKR(692)
N
D
35
CLI(691)
• Borra o retiene(guarda) las interrupciones
•
•
acumuladas o programa el intervalo de las
interrupciones programadas.
Esta instrucción se usa para controlar las
interrupciones simultáneas.
N y S tienen el mismo significado que en
MSKS(690).
CLI(691)
N
S
Soporte Técnico
@CLI(692)
N
S
36
CLI(691)
• Cuando se están ejecutando interrupciones
•
•
encadenadas, es posible guardar las
interrupciones menos prioritarias que había
antes de la actual (más prioritaria).
No se registrarán las nuevas interrupciones
de una tarea de interrupción si está
guardada con la instrucción CLI(691).
Para las interrupciones programadas se les
puede asignar otro intervalo para que no
interfieran con la actual.
Soporte Técnico
37
CLI(691) Ejemplo
CLI(691)
#2
#0048
Resetea las entradas grabadas 3 y 6 de la
unidad de interrupción 2.
Entrada
7654 3210
0000 0000 0100 1000
CLI(690)
#5
#1388
Sitúa el intervalo de la tarea de interrupción
programada 3 a 50 s (Tiempo 10 ms).
Soporte Técnico
38
DI(693)
• Deshabilita la ejecución de todas las tareas
•
de interrupción, excepto la de Fallo de
alimentación.
No se puede ejecutar en tareas de
interrupción.
DI(693)
Soporte Técnico
@DI(693)
39
EI(694)
• Habilita la ejecución de todas las tareas de
•
interrupción, que fueron deshabilitadas con
la instrucción DI(693).
No se puede ejecutar en tareas de
interrupción.
EI(694)
Soporte Técnico
@EI(694)
40
DI(693) y EI(694) Ejemplo
Task 1
DI
Interrupciones Deshabilitadas hasta el final de la tarea 1.
END
Task 5
Interrupciones Habilitadas para las tareas 2 a 4.
DI
Interrupciones Deshabilitadas.
EI
Interrupciones Habilitadas.
END
Soporte Técnico
41
Ejemplo Interrupciones
• Seguidamente se muestra un ejemplo de
tareas de interrupciones de:
•
•
•
•
Fallo de alimentación (Int. 1)
Interrupción programada (Int. Prog. 2)
Interrupción de unidad de interrupción (Int. 100)
Interrupción de una COMBOARD (Int. 15)
• Se muestra el programa y los cambios que
son necesarios en el PC-SETUP.
Soporte Técnico
42
Ejemplo Interrupciones 1
Tarea principal: Tarea cíclica 00
A200.11
First Cycle
MSKS(690)
4
&1000
MSKS(690)
0
#00FE
Tiempo de Interrupción programada 02 es de:
1000 x 10ms = 10s
Desenmascara la Entrada 0 de la Unidad de Interrupción 0
Programa principal de la tarea 00
END(001)
Soporte Técnico
43
Ejemplo Interrupciones 2
Tarea Interrupción de fallo de alimentación:
Es necesario desde PC-SETUP (consola 255):
Habilitar la interrupción
Tiempo de detección de fallo de alimentación
CF113
P_On
++(590)
D00000
DM00000 cuenta las veces que ha ocurrido
un fallo de alimentación
END(001)
Soporte Técnico
44
Ejemplo Interrupciones 3
Tarea Interrupción Programada 02:
Es necesario desde PC-SETUP (consola 195):
Unidad de tiempo de las interrupciones programadas.
CF113
P_On
++(590)
D00010
DM00010 cuenta las veces que se ha ejecutado
la interrupción programada 02
END(001)
Soporte Técnico
45
Ejemplo Interrupciones 4
Tarea Interrupción 100:
Es la tarea de interrupción de la Entrada 0 de la unidad de
interrupción 0.
CF113
P_On
++(590)
D00020
DM00020 cuenta las veces que se ha ejecutado
la tarea de interrupción 100
END(001)
Soporte Técnico
46
Ejemplo Interrupciones 5
Tarea Interrupción 15:
Es necesario asignar el número de interrupción
en la unidad que provoca la interrupción.
CF113
P_On
++(590)
D00030
PMCR(260)
#11E1
#1
D00100
D00200
DM00030 cuenta las veces que se ha ejecutado
la tarea de interrupción 15
Devuelve un mensaje según un protocolo de la COMBOARD
END(001)
Soporte Técnico
47
Temporizadores
Nuevos temporizadores
Soporte Técnico
48
Temporizadores
• Tiene 4.096 temporizadores y 4.096
contadores independientes entre sí, en dos
áreas.
• T0000 ÷ T4095
• C0000 ÷ C4095
• Prestar atención a los temporizadores que
•
se encuentran en saltos o interlocks.
Si IOM hold bit (A50012) está a ON, el PV
y el flag de finalizado se mantienen al
desconectar alimentación o pasar a
PROGRAM.
Soporte Técnico
49
CNR(545)
• Resetea los contadores o temporizadores
dentro del rango N1 - N2.
• N1: Dirección inicial del rango.
• N2: Dirección final del rango.
• N1 y N2 deben estar en la misma área de
temporizadores o contadores.
@CNR(545)
N1
N2
CNR(545)
N1
N2
Soporte Técnico
50
TMHH(540)
• Temporizador de 1ms. Temporiza S
milisegundos.
• N: Número de temporizador.
• S: Tiempo.
• El PV y el flag de finalización se refrescan
cada 1ms.
TMHH(540)
N
S
Soporte Técnico
51
TIML(542)
• Temporizador de 9999 999.9 segundos.
• D1: Flag de Finalización.
• D2: Primera palabra del PV.
• S: Primera palabra de SV.
• No necesita número de temporizador, por
eso en necesario reservar palabras para el
PV y el flag de finalización.
TIML(540)
D1
D2
S
Soporte Técnico
52
TIML(542)
D1
0000 0000 0000 000 1
Flag de finalización
D2+1
D2
Valor actual del temporizador PV
S+1
S
Tiempo total SV debe estar entre 0 y 9999 9999
D2 y S deben estar en BCD.
El PV y el flag de finalización están en áreas de datos, por tanto se refrescan
cada vez que se ejecuta la instrucción.
Si el tiempo de ciclo es mayor de 100ms el temporizador falla.
No usar las palabras D2 ni D2+1 con otras instrucciones para no cambiar
el valor PV del temporizador.
En saltos JMP y en interlocks el PV no se modifica.
Soporte Técnico
53
MTIM(543)
• Temporizador incremental de 0.1s y 8
salidas.
• D1: Palabra de flags de finalización.
• D2: Palabra del PV.
• S: Primera palabra de los SV.
• No utiliza número de temporizador.
MTIM(543)
D1
D2
S
Soporte Técnico
54
MTIM(543)
D1
0000 00 0 0 1 1 1 1 1 1 1 1
Flags de finalización de cada SV
Flag de reset
Flag de pausa
D2
Valor del PV del temporizador
S
S+1
S+2
S+3
S+4
S+5
S+6
S+7
Valores de los SV de cada salida
Cuando el PV alcanza el valor de cada SV se activa el flag
correspondiente al SV
PV
SV 1
SV2
Soporte Técnico
Flag de finalización 1
Flag de finalización 2
55
Bloques de Programa
En mnemónico
Soporte Técnico
56
Bloque de Programa
• Conjunto de instrucciones que se ejecutan
•
•
•
•
bajo una misma condición de ejecución.
Se pueden hacer hasta 128 bloques de
programa.
Sólo se pueden utilizar una vez.
Los bloques de programa que no se
ejecutan no consumen tiempo de ejecución.
Las instrucciones se escriben en
mnemónico.
Soporte Técnico
57
Bloque de Programa
• La única instrucción que se programa en
•
•
diagrama de contactos es BPRG(096). El
resto se inserta en un bloque de programa
en mnemónico.
La última instrucción del bloque debe ser
BEND.
No se pueden evaluar condiciones dentro
de un bloque de programa, excepto en
instrucciones especiales (IF).
Soporte Técnico
58
Bloque de Programa
• Las instrucciones de bloque de programa
son:
• BPRG, BEND, BPPS, BPRS, EXIT(NOT), IF(NOT),
ELSE, IEND, WAIT(NOT), TIMW, CNTW, TIMHW,
LOOP, LEND.
Soporte Técnico
59
BPRG(096) y BEND(801)
• BPRG(096): Comienzo del bloque de
programa n.
• n: número de bloque de programa (0n127).
• BEND(801): Última instrucción del bloque
de programa en mnemónico.
BPRG(096)
n
Soporte Técnico
60
BPPS(811) y BPRS(812)
• BPPS(811): Para la ejecución del bloque
•
de programa N desde otro bloque de
programa.
BPRS(812): Reanuda la ejecución del
bloque de programa N desde otro bloque
de programa.
• N: Número de bloque de programa (0n127).
Soporte Técnico
61
IF(802), ELSE(803), IEND(804)
• IF (NOT): Puede llevar operando B o
•
•
•
utilizar una condición de ejecución anterior.
ELSE: Se ejecuta si no es cierta la
condición de la instrucción IF.
IEND: Final de la instrucción IF.
Se pueden anidar hasta 254 IFs.
IF
IF
A
ELSE
B
IEND
SI
Se ejecuta A
IEND
Soporte Técnico
NO
62
Se ejecuta B
EXIT(806), EXIT NOT(806)
• Sale del bloque de programa.
• Puede llevar operando o utilizar la
•
condición de ejecución anterior.
EXIT sale si la condición es verdad y EXIT
NOT si no se cumple.
0.01
OFF
LD 0.00
BPRG #1
A
EXIT 0.01
B
BEND
C
Soporte Técnico
A
0.01
ON
A
B
C
C
63
WAIT(805), WAIT NOT(805)
• Para la ejecución del resto del bloque de
•
programa hasta que cambia la condición
de ejecución.
Puede llevar operando o utilizar la
condición de ejecución anterior.
0.01
OFF
LD 0.00
BPRG #1
A
WAIT 0.01
B
BEND
C
Soporte Técnico
0.01
OFF
0.01
ON
A
B
C
C
C
64
TIMW(813)
• Retrasa la ejecución del resto del bloque
hasta que se cumpla el tiempo especificado
en SV del temporizador N.
• N: Número de temporizador (0N4095).
• SV: Tiempo a contar (0SV999.9s).
1 seg.
LD 0.00
BPRG #1
A
TIMW #1 &10
B
BEND
C
Soporte Técnico
A
B
C
C
C
65
TIMHW(815)
• Retrasa la ejecución del resto del bloque
hasta que se cumpla el tiempo especificado
en SV del temporizador rápido N.
• N: Número de temporizador (0N4095).
• SV: Tiempo a contar (0SV99.99s).
1 seg.
LD 0.00
BPRG #1
A
TIMHW #1 &100
B
BEND
C
Soporte Técnico
A
B
C
C
C
66
CNTW(814)
• Retrasa la ejecución del resto del bloque
hasta que se la cuenta de I llegue a SV del
contador N.
• N: Número de contador (0N4095).
• SV: Pulsos a contar (0SV9999).
• I: Entrada de pulsos a contar.
100
LD 0.00
BPRG #1
A
CNTW #1 &100 0.01
B
BEND
C
Soporte Técnico
A
B
C
C
C
67
LOOP(809), LEND(810) NOT
• Repiten una serie de instrucciones entre
•
•
•
•
LOOP y LEND (LEND NOT) hasta que la
condición de LEND sea cierta.
LEND puede llevar operando o utilizar la
condición de ejecución anterior.
Dentro de un lazo LOOP no se refrescan
las salidas. Utilizar IOREF(184).
Puede sobrepasar el tiempo máximo de
ciclo y dar un error.
No se puede anidar LOOP dentro de otro.
Soporte Técnico
68
LOOP(809), LEND(810) NOT
0.01
ON
LD 0.00
BPRG #1
A
LOOP
B
LEND 0.01
C
BEND
Soporte Técnico
0.01
OFF
A
A
B
B
0.01
OFF
0.01
OFF
B
B
C
0.01
ON
B
C
69
Tablas de datos
Tablas basadas en pilas
Tablas basadas en registros
Soporte Técnico
70
Tablas de Datos
• Tablas basadas en Pila (Stack)
» SSET, PUSH, FIFO, LIFO
• Tablas basadas en registros
» DIM, SETR, GETR
• Operaciones con Rangos
» SRCH, MAX, MIN, SUM, FCS, SWAP
Soporte Técnico
71
Pila (Stack)
• En estas tablas se almacenan los valores
•
•
uno debajo de otro, siguiendo el orden de
llegada.
Los datos (palabras) se pueden coger en
orden FIFO (el más antiguo) o en orden
LIFO (el más nuevo).
Las 4 primeras palabras de la tabla están
reservadas para la dirección de la última
palabra y la dirección a la que apunta el
puntero.
Soporte Técnico
72
SSET(630)
• Define una pila (stack) de:
• TB: Primera dirección de la tabla.
• N: Nº de palabras.
• Las dos primeras palabras TB y TB+1
•
contienen la dirección de la última palabra
de la tabla. Las dos siguientes contienen la
dirección donde apunta el puntero.
Resetea todos los registros de la tabla a 0.
SSET(630)
TB
N
Soporte Técnico
@SSET(630)
TB
N
73
SSET(630) Ejemplo
SSET(630)
D00000
&10
Soporte Técnico
D00000
D00001
D00002
D00003
D00004
D00005
D00006
D00007
D00008
D00009
0009
0001
0004
0001
0000
0000
0000
0000
0000
0000
74
Última dirección de la tabla
en binario
Dirección donde
apunta el puntero
Puntero
Datos
PUSH(632)
• Escribe una palabra en la pila, en la
dirección donde apunta el puntero e
incrementa en uno la dirección del puntero.
• TB: Dirección de la pila.
• S: Palabra a escribir.
• Cuando el puntero llega al final de la tabla,
no se ejecuta.
PUSH(632)
TB
S
Soporte Técnico
@PUSH(632)
TB
S
75
PUSH(632) Ejemplo
@PUSH(632)
Escribe 9012 en la tabla que empieza en D00000
D00000
dirección donde punta el puntero D00006.
#9012
D00000
D00001
D00002
D00003
D00004
D00005
D00006
D00007
D00008
D00009
Soporte Técnico
0009
0001
0006
0001
1234
5678
9012
0000
0000
0000
76
Última dirección de la tabla
en binario
Dirección donde
apunta el puntero
Tabla
Puntero
Puntero + 1
FIFO(633)
• First In First Out.
• Lee la primera palabra escrita en la pila (la
más antigua),la escrita en TB+4. Sube
todos los datos de la pila una palabra y
decrementa en uno el puntero.
• TB: Dirección de la pila.
• D: Palabra destino de la lectura.
FIFO(633)
TB
D
Soporte Técnico
@FIFO(633)
TB
D
77
FIFO(633) Ejemplo
FIFO(633)
D00000
W000
D00000
D00001
D00002
D00003
D00004
D00005
D00006
D00007
D00008
D00009
Soporte Técnico
W000 1234
0009
0000
0007
0000
1234
5678
9012
0000
0000
0000
Puntero
0009
0001
0006
0001
5678
9012
9012
0000
0000
0000
78
Última dirección de la tabla
en binario
Dirección donde
apunta el puntero
Tabla
Puntero - 1
LIFO(634)
• Last In First Out.
• Lee la última palabra escrita en la pila y
decrementa en uno el puntero.
• TB: Dirección de la pila.
• D: Palabra destino de la lectura.
LIFO(634)
TB
D
Soporte Técnico
@LIFO(634)
TB
D
79
LIFO(364) Ejemplo
LIFO(634)
D00000
W000
D00000
D00001
D00002
D00003
D00004
D00005
D00006
D00007
D00008
D00009
Soporte Técnico
W000 9012
0009
0000
0006
0000
1234
5678
9012
0000
0000
0000
Puntero
0009
0001
0005
0001
1234
5678
9012
0000
0000
0000
80
Última dirección de la tabla
en binario
Dirección donde
apunta el puntero
Puntero - 1
Tabla
Tablas de registros
• Se pueden guardar hasta 16 tablas 0÷15.
• Un registro puede contener más de una
•
•
palabra.
Se usan en combinación con los registros
índice IR0÷IR15.
Para trabajar con tablas es necesario
definirlas primero con DIM(631).
Soporte Técnico
81
DIM(631)
• Crea una tabla en el área de memoria de:
•
•
•
•
N: Número de tabla.
LR: Longitud de cada registro.
NR: número de registros.
TB: Dirección del primer registro de la tabla.
DIM(631)
N
LR
NR
TB
Soporte Técnico
@DIM(631)
N
LR
NR
TB
82
DIM(631) Ejemplo
@DIM(631)
&12
&5
&3
D00000
Tabla número 12
Registros de 5 palabras
3 Registros
Empieza en la dirección D00000
D00000
Registro 1
5 Palabras
Registro 2
5 Palabras
Registro 3
5 Palabras
D00004
D00005
D00009
D00010
D00014
Soporte Técnico
83
SETR(635)
• Escribe la dirección del registro número R
de la tabla número N en el registro índice
D.
• N: Número de tabla (constante).
• R: Número de registro.
• D: Registro índice.
SETR(635)
N
R
D
Soporte Técnico
@SETR(635)
N
R
D
84
SETR(635) Ejemplo
@SETR(635)
&12
&2
IR11
Tabla 12
Registro 2
Tabla 12
D00000
IR11
D00005
Registro 1
5 Palabras
Registro 2
5 Palabras
Registro 3
5 Palabras
D00004
D00005
D00009
D00010
D00014
Soporte Técnico
85
GETR(636)
• Escribe en D el número de registro de la
tabla N cuya dirección está guardada en el
registro índice IR.
• N: Número de tabla (constante).
• IR: Número de registro.
• D: Palabra donde se guarda el número de registro.
GETR(636)
N
IR
D
Soporte Técnico
@GETR(636)
N
IR
D
86
GETR(636) Ejemplo
@GETR(636)
&12
IR11
W000
Tabla 12
Registro índice 11
Nº de registro
Tabla 12
D00000
IR11
W000
D00005
0002
5 Palabras
Registro 2
5 Palabras
Registro 3
5 Palabras
D00004
D00005
D00009
D00010
D00014
Soporte Técnico
Registro 1
87
SRCH(181)
• Busca una palabra en un rango de
palabras.
• C: Primera palabra de control.
• R1: Primera palabra del rango.
• Cd: Palabra a buscar.
• Guarda en IR00 la dirección de la palabra
que coincide y en DR00 el número de
coincidencias.
SRCH(181)
@SRCH(181)
C
R1
Cd
Soporte Técnico
88
C
R1
Cd
SRCH(181)
C
Número de palabras
en el rango
C+1
X 000 0000 0000 0000
0: No muestra el número de coincidencias DR00 intacto.
1: Muestra el número de coincidencias en DR00.
R1
Rango de búsqueda
R1+(C-1)
Soporte Técnico
89
SRCH(181) Ejemplo
@SRCH(181)
W000
D00100
W002
W000
W001
D00100
D00101
D00102
D00103
D00104
D00105
D00106
D00107
D00108
D00109
Soporte Técnico
000A 10 Palabras
8000 Guarda el Nº de coincidencias
1234
6589
8778
5569
3365
1234
1254
3365
5698
3365
W002 3365
IR00 D00104
DR00
0003
90
MAX(182)
• Busca el máximo valor en un rango de
palabras.
• C: Primera palabra de control.
• R1: Primera palabra del rango.
• D: Palabra donde se guarda el valor.
• Guarda en IR00 la dirección de la palabra
que coincide y en D el valor máximo.
MAX(182)
C
R1
D
Soporte Técnico
@MAX(182)
C
R1
D
91
MAX(182)
C
Número de palabras
en el rango
C+1
X Y 00 0000 0000 0000
0: No muestra la dirección en IR00.
1: Muestra la dirección en IR00.
0: Datos en binario sin signo.
1: Datos en binario con signo.
R1
Rango de búsqueda
R1+(C-1)
Soporte Técnico
92
MAX(182) Ejemplo
@MAX(182)
W000
D00100
W002
W000
W001
D00100
D00101
D00102
D00103
D00104
D00105
D00106
D00107
D00108
D00109
Soporte Técnico
000A 10 Palabras
C000 Binario con signo
Guarda la dirección en IR00
1234
6589
8778
5569
3365
1234
1254
3365
5698
3365
IR00 D00101
W002
6589
93
MIN(183)
• Busca el mínimo valor en un rango de
palabras.
• C: Primera palabra de control.
• R1: Primera palabra del rango.
• D: Palabra donde se guarda el valor.
• Guarda en IR00 la dirección de la palabra
que coincide y en D el valor mínimo.
MIN(183)
C
R1
D
Soporte Técnico
@MIN(183)
C
R1
D
94
MIN(183)
C
Número de palabras
en el rango
C+1
X Y 00 0000 0000 0000
0: No muestra la dirección en IR00.
1: Muestra la dirección en IR00.
0: Datos en binario sin signo.
1: Datos en binario con signo.
R1
Rango de búsqueda
R1+(C-1)
Soporte Técnico
95
MIN(183) Ejemplo
@MIN(183)
W000
D00100
W002
W000
W001
D00100
D00101
D00102
D00103
D00104
D00105
D00106
D00107
D00108
D00109
Soporte Técnico
000A 10 Palabras
C000 Binario con signo
Guarda la dirección en IR00
1234
6589
8778
5569
3365
1234
1254
3365
5698
3365
IR00
W002
D00101
8778
Pone el flag de negativo a 1: N=1
porque 8778 es negativo.
96
SWAP(637)
• Intercambia los bytes derecho e izquierdo
de las palabras del rango seleccionado.
• N: Número de palabras del rango.
• R1: Primera palabra del rango.
SWAP(637)
N
R1
Soporte Técnico
@SWAP(637)
N
R1
97
SWAP(637) Ejemplo
@SWAP(637)
&6
D00100
D00100
D00101
D00102
D00103
D00104
D00105
Soporte Técnico
00
02
04
06
08
10
6 Palabras
a partir del D00100
01
03
05
07
09
11
D00100
D00101
D00102
D00103
D00104
D00105
98
01
03
05
07
09
11
00
02
04
06
08
10
Cadenas de caracteres
Instrucciones de texto
Soporte Técnico
99
Cadenas de caracteres
• Las cadenas de caracteres, son tratadas
•
•
•
como código ASCII de 8 bits.
Se considera que pertenece a una cadena
de caracteres todos los datos que hay
desde la dirección inicial hasta que
encuentra el código NUL (00 HEX).
Las cadenas se leen byte izquierdo, byte
derecho y de menor a mayor dirección.
La longitud máxima de caracteres es de
4.095 + el carácter NUL.
Soporte Técnico
100
LEN$(650)
• Calcula la longitud de la cadena de la
posición S (hasta NUL) y guarda el
resultado en D.
• S: Primera palabra de la cadena.
• D: Posición donde guarda el resultado.
• La longitud máxima es de 4.095 bytes.
LEN$(650)
S
D
Soporte Técnico
@LEN$(650)
S
D
101
LEN$(650) Ejemplo
@LEN$(664)
W000
W100
S
W000 O M
W001 R O
W002 N
Soporte Técnico
W000 4F 4D
W001 52 4F
W002 4E 00
102
D
W000 0006
MOV$(664)
• Copia una cadena de caracteres de la
posición S (hasta NUL) a la D. También
copia el carácter NUL.
• S: Primera palabra de la cadena a copiar.
• D: Posición donde se copia la cadena.
• La longitud máxima es de 4.095 bytes.
MOV$(664)
S
D
Soporte Técnico
@MOV$(664)
S
D
103
MOV$(664) Ejemplo
@MOV$(664)
W000
W100
S
W000 O M
W001 R O
W002 N
Soporte Técnico
D
W000 4F 4D
W001 52 4F
W002 4E 00
104
W100 4F 4D
W101 52 4F
W102 4E 00
+$(656)
• Concatena (une) la cadena S1 con la S2 y
guarda el resultado en D.
• S1: Primera palabra de la primera cadena.
• S2: Primera palabra de la segunda cadena.
• D: Posición donde se copia la cadena.
• La longitud máxima es de 4.095 bytes.
+$(656)
S1
S2
D
Soporte Técnico
@+$(656)
S1
S2
D
105
+$(656) Ejemplo
@+$(656)
W000
W100
D00000
S1
W000 4F 4D
W001 52 4F
W002 4E 00
OMRON
D
S2
&
W100 53 50
W101 41 49
W102 4E 00
SPAIN
D00000
D00001
D00002
D00003
D00004
D00005
4F
52
4E
50
49
00
4D
4F
53
41
4E
00
OMRONSPAIN
Soporte Técnico
106
LEFT$(652)
• Recupera la cadena de S2 primeros
caracteres de la cadena S1 y guarda el
resultado en D.
• S1: Primera palabra de la cadena.
• S2: Número de caracteres a recuperar.
• D: Posición donde se copia la cadena.
• La longitud máxima es de 4.095 bytes.
LEFT$(652)
S1
S2
D
Soporte Técnico
@LEFT$(652)
S1
S2
D
107
LEFT$(652) Ejemplo
LEFT$(652)
W000
&5
D00000
S1
W000
W001
W002
W002
W002
W002
4F
52
4E
53
41
4E
D
4D
4F
20
50
49
00
D00000 4F 4D
D00001 52 4F
D00002 4E 00
OMRON
OMRON SPAIN
Soporte Técnico
108
RGHT$(653)
• Recupera la cadena de S2 últimos
caracteres de la cadena S1 y guarda el
resultado en D.
• S1: Primera palabra de la cadena.
• S2: Número de caracteres a recuperar.
• D: Posición donde se copia la cadena.
• La longitud máxima es de 4.095 bytes.
RGHT$(653)
S1
S2
D
Soporte Técnico
@RGHT$(653)
S1
S2
D
109
RGHT$(653) Ejemplo
RGHT$(653)
W000
&5
D00000
S1
W000
W001
W002
W002
W002
W002
4F
52
4E
53
41
4E
D
4D
4F
20
50
49
00
D00000 53 50
D00001 41 49
D00002 4E 00
SPAIN
OMRON SPAIN
Soporte Técnico
110
MID$(654)
• Recupera la cadena de S2 caracteres de la
cadena S1 empezando en el carácter
número S3 y guarda el resultado en D.
•
•
•
•
S1: Primera palabra de la cadena.
S2: Número de caracteres a recuperar.
S3: Posición inicial de la cadena S1.
D: Posición donde se copia la cadena.
MID$(654)
S1
S2
S3
D
Soporte Técnico
@MID$(654)
S1
S2
S3
D
111
MID$(654) Ejemplo
@MID$(654)
W000
&5
&4
D00000
S1
W000
W001
W002
W002
W002
W002
4F
52
4E
53
41
4E
D
4D
4F
20
50
49
00
D00000 4F 4E
D00001 20 53
D00002 50 00
ON SP
OMRON SPAIN
Soporte Técnico
112
FIND$(660)
• Busca la cadena S2 en la S1 y guarda el
número de carácter desde el principio de
S1 en D.
• S1: Primera palabra de la primera cadena.
• S2: Primera palabra de la segunda cadena.
• D: Posición donde se guarda el Nº de carácter.
FIND$(660)
S1
S2
D
Soporte Técnico
@FIND$(660)
S1
S2
D
113
FIND$(660) Ejemplo
@FIND$(660)
D00000
W100
W000
S1
D00000
D00001
D00002
D00003
D00004
D00005
4F
52
4E
50
49
00
S2
4D
4F
53
41
4E
00
W100 53 50
W101 41 49
W102 4E 00
SPAIN
OMRONSPAIN
Soporte Técnico
114
D
W000 0006
RPLC$(661)
• Reemplaza S3 caracteres de S2 desde
S4 en la cadena S1 y la escribe en D.
•
•
•
•
•
Soporte Técnico
S1: Primera palabra de la primera cadena.
S2: Primera palabra de la segunda cadena.
S3: Número de caracteres.
S4: Posición inicial.
D: Posición donde se guarda el Nº de carácter.
RPLC$(661)
@RPLC$(661)
S1
S1
S2
S2
S3
S3
S4
S4
D
D
115
RPLC$(661) Ejemplo
RPLC$(661)
D00000
W100
&5
&6
D00100
S1
D00000
D00001
D00002
D00003
D00004
D00005
4D
4F
53
41
4E
00
4F
52
4E
50
49
00
S2
W100 20 53
W101 55 52
W102 00 00
SUR
OMRONSPAIN
Soporte Técnico
D
D00100
D00101
D00102
D00103
D00104
D00105
4F
52
4E
53
52
00
4D
4F
20
55
00
00
OMRON SUR
116
DEL$(658)
• Borra S2 caracteres de S1 empezando
desde S3 y guarda el resultado en D.
•
•
•
•
S1: Primera palabra de la cadena.
S2: Número de caracteres a borrar.
S3: Posición para borrar de la cadena S1.
D: Posición donde se guarda la cadena.
DEL$(658)
S1
S2
S3
D
Soporte Técnico
@DEL$(658)
S1
S2
S3
D
117
DEL$(658) Ejemplo
@DEL$(658)
W000
&6
&6
D00000
S1
W000
W001
W002
W002
W002
W002
4F
52
4E
53
41
4E
D
4D
4F
20
50
49
00
W100
W101
W102
W102
W102
W102
4D
4F
00
00
00
00
OMRON
OMRON SPAIN
Soporte Técnico
4F
52
4E
00
00
00
118
XCHG$(665)
• Intercambia las cadenas Ex1 y Ex2.
• Ex1: Primera palabra de la cadena 1.
• Ex2: Primera palabra de la cadena 2.
• La longitud máxima es de 4.095 bytes.
• Ex1 y Ex2 no se pueden solapar.
XCHG$(665)
Ex1
Ex2
Soporte Técnico
@XCHG$(665)
Ex1
Ex2
119
XCGH$(665) Ejemplo
@XCHG$(665)
W000
W100
Ex1
Ex2
W000 4F 4D
W001 52 4F
W002 4E 00
Soporte Técnico
W100 4F 4D
W101 52 4F
W102 4E 00
120
CLR$(666)
• Borra la cadena S. Escribe el carácter NUL
en toda la cadena S.
• S: Primera palabra de la cadena a borrar.
CLR$(666)
S
Soporte Técnico
@CLR$(666)
S
121
CLR$(666) Ejemplo
@CLR$(666)
W000
S
S
W000 4F 4D
W001 52 4F
W002 4E 00
Soporte Técnico
W100 00 00
W101 00 00
W102 00 00
122
INS$(657)
• Inserta S2 en S1 a partir del carácter
Nº S3 y la escribe en D.
•
•
•
•
S1: Primera palabra de la primera cadena.
S2: Primera palabra de la segunda cadena.
S3: Número de caracteres.
D: Posición donde se guarda el Nº de carácter.
INS$(657)
S1
S2
S3
D
Soporte Técnico
@INS$(657)
S1
S2
S3
D
123
INS$(657) Ejemplo
@INS$(657)
D00000
W100
&5
D00100
S1
D00000
D00001
D00002
D00003
D00004
D00005
4F
52
4E
50
49
00
4D
4F
53
41
4E
00
D
S2
W100 20 00
OMRONSPAIN
Soporte Técnico
D00100
D00101
D00102
D00103
D00104
D00105
4F
52
4E
53
41
4E
4D
4F
20
50
49
00
OMRON SPAIN
124
Comparación de cadenas
• Se pueden comparar dos cadenas de
caracteres en código ASCII (8 bits)
mediante 6 instrucciones:
• =$,<>$, <$, <=$, >$, >=$
• Los resultados de estas comparaciones se
ven en los flags:
• >, >=, >, <>, <, <=
• Estas comparaciones se aplican a:
• LD, OR, AND
Soporte Técnico
125
Comparación de cadenas
=$(670)
S1
S2
<$(672)
S1
S2
>$(674)
S1
S2
S1 = S2
S1 < S2
longitud
S1 > S2
longitud
<>$(671)
S1
S2
<=$(673)
S1
S2
>=$(675)
S1
S2
S1  S2
S1  S2
longitud
S1  S2
longitud
Soporte Técnico
126
Comparación Ejemplo
0000.00
LD
=$(670)
D00000
W000
0000.01
0001.01
AND
<$(672)
D00000
W000
0000.02
0001.02
OR
>$(674)
D00000
W000
Soporte Técnico
127
Saltos
Saltos condicionales
Soporte Técnico
128
Saltos
Tabla comparativa de los saltos y los saltos condicionales.
Condición
Nº máximo
Tiempo ejecución
Estado de salidas
Temporizadores
Bloques de programas
Soporte Técnico
JMP(4) CJP(510) CJPN(511)
JMP0(515)
JME(5) JME(5) JME(5)
JME0(516)
OFF
ON
OFF
OFF
1.024 en total
Sin límite
No se ejecutan
NOP(000)
Bits y palabras mantienen su estado anterior
Continúan temporizando
Siempre ON
OFF
No permitido
129
CJP(510)/CJPN(511)
• CJP(510): Salta hasta el primer JME(005)
•
cuando la condición de ejecución es ON.
CJPN(511): Salta hasta el primer JME(005)
cuando la condición de ejecución es OFF.
• N: Número de salto.
• Las instrucciones intermedias no se
ejecutan. No consumen tiempo.
CJP(510)
N
Soporte Técnico
CJPN(511)
N
130
JME(005)
N
JMP0(515)/JME0(516)
• Salta hasta JME0 cuando la condición de
•
•
ejecución es OFF.
Las instrucciones intermedias se ejecutan
como NOP(000).
Se pueden poner tantas como se quiera,
no hay límite.
JMP0(515)
Soporte Técnico
JME0(516)
131
Instrucciones de lazo
FOR, NEXT, BREAK
Soporte Técnico
132
Instrucciones de Lazo
• Se pueden ejecutar instrucciones tales
•
•
como FOR, NEXT, BREAK.
Estas instrucciones permiten ejecutar
varias veces en un mismo ciclo las
instrucciones entre FOR y NEXT.
Hay que tener especial cuidado con el
tiempo de ciclo, no caer en un ciclo
demasiado largo, por hacer excesivos
bucles. Pueden dar errores.
Soporte Técnico
133
FOR(512) y NEXT(513)
• Las instrucciones que hay entre FOR y
NEXT se ejecutan N veces dentro del
mismo ciclo.
• N: Número de veces que se repiten las
instrucciones.
FOR(512)
S
Instrucciones
repetidas
N veces
NEXT(513)
Soporte Técnico
134
FOR(512) y NEXT(513)
• Estas instrucciones no necesitan una
•
•
•
condición de ejecución. Se ejecutan para
cada ciclo. De programa
Se pueden anidar hasta 15 bucles FORNEXT.
Deben estar en la misma tarea: No se
puede poner FOR en una tarea y NEXT en
otra.
Vigilar el ciclo de programa, que no sea
muy largo.
Soporte Técnico
135
FOR(512) y NEXT(513)
FOR(512)
&3
Las instrucciones se
ejecutan según el orden
ABBC-ABBC-ABBC
A
FOR(512)
&2
B
NEXT(513)
C
NEXT(513)
Soporte Técnico
136
FOR-NEXT Ejemplo
FOR(512)
&3
MOV(021)
D00100
@D00200
Transfiere el contenido de D00100
a la dirección almacenada en D00200
e incrementa la dirección.
MOV
D00100
D00100
D00100
++
D00200
NEXT(513)
Soporte Técnico
D00100
D00200
137
#0000
BREAK(514)
• Salta a la siguiente instrucción NEXT y
•
•
finaliza el bucle FOR-NEXT actual.
En el caso de bucles FOR-NEXT anidados,
es necesario una instrucción BREAK para
cada bucle.
Las instrucciones siguientes hasta el
próximo NEXT se tratan como NOP.
BREAK(514)
Soporte Técnico
138
FOR, NEXT y BREAK
FOR(512)
&5
A
BREAK(514)
C
NEXT(513)
Soporte Técnico
139
Desplazamiento
y rotación
De todos o N bits en una y dos
palabras
Soporte Técnico
140
Desplazamiento y rotación
Desplazamiento
Rotación
Rotación sin
Carry
Soporte Técnico
1 Canal
ASL(025)
ASR(026)
ROL(027)
ROR(028)
RLNC(574)
RRNC(575)
141
2 Canales
ASLL(570)
ASRL(571)
ROLL(572)
RORL(573)
RLNL(576)
RRNL(577)
De N bits
1 Canal
Desplazamiento
NASL(580)
de N bits
NASR(581)
Desplazamiento
NSFL(578)
de N bits como dato NSFR(579)
Soporte Técnico
142
2 Canales
NSLL(582)
NSRL(583)
NASL(580)
• Desplaza la palabra D, N bits a la izquierda
insertando 0, ó el valor del bit 0.
• D: Palabra origen y destino.
• C: palabra de control (insertar 0, Nº de bits)
NASL(580)
D
C
Soporte Técnico
@NASL(580)
D
C
143
NASL(580) ejemplo
C: Palabra de control.
15
12
7
0
Nº de bits a desplazar en hexadecimal 0-10Hex.
Siempre a 0.
Dato que se introduce por la derecha:
0: introduce 0.
8: introduce el valor que tenga el bit 0.
Perdidos
NASL(580)
0100
#0004
Soporte Técnico
1011000110011111
CY
1
0001100111110000
144
0
NSLL(582)
• Desplaza las palabras D y D+1, N bits a la
izquierda insertando 0, ó el valor del bit 0.
• D: Primera palabra origen y destino.
• C: palabra de control (insertar 0, Nº de bits)
• Como NASL(580) pero de dos palabras.
NSLL(582)
D
C
Soporte Técnico
@NSLL(582)
D
C
145
NASR(581)
• Desplaza la palabra D, N bits a la derecha
insertando 0, ó el valor del bit 15.
• D: Palabra origen y destino.
• C: palabra de control (insertar 0, Nº de bits)
NASR(581)
D
C
Soporte Técnico
@NASR(581)
D
C
146
NASR(581) ejemplo
C: Palabra de control.
15
12
7
0
Nº de bits a desplazar en hexadecimal 0-10Hex.
Siempre a 0.
Dato que se introduce por la izquierda.
0: introduce 0.
8: introduce el valor que tenga el bit 15.
Perdidos
NASR(581)
0100
#0004
Soporte Técnico
0
1011000110011111
CY
0000101100011001
147
1
NSRL(583)
• Desplaza las palabras D y D+1, N bits a la
derecha insertando 0, ó el valor del bit 15.
• D: Primera palabra origen y destino.
• C: palabra de control (insertar 0, Nº de bits)
• Como NASR(581) pero de dos palabras.
NSRL(583)
D
C
Soporte Técnico
@NSRL(583)
D
C
148
NSFL(578)
• Desplaza N bits de D a la izquierda
empezando por el bit C.
• D: Palabra dato.
• C: Bit de comienzo.
• N: Número de bits a desplazar.
• Los bits anteriores a C o posteriores a C+N
no cambian.
NSFL(578)
D
C
R
Soporte Técnico
@NSFL(578)
D
C
R
149
NSFR(579)
• Desplaza N bits de D a la derecha
empezando por el bit C.
• D: Palabra dato.
• C: Bit de comienzo.
• N: Número de bits a desplazar.
• Los bits anteriores a C+N o posteriores a C
no cambian.
NSFL(578)
D
C
R
Soporte Técnico
@NSFL(578)
D
C
R
150
NSFL NSFR ejemplo
Bits 3 a 12
NSFL(578)
0100
&3
&11
1011000110011111
0
CY
1
1010001100110111
Bits 3 a 12
NSFR(579)
0100
&3
&11
Soporte Técnico
0
1011000110011111
CY
1010100011001111
151
1
Incrementar Decrementar
Autoincremento y Autodecremento
Soporte Técnico
152
++(590) ++L(591)
• ++ incrementa en binario la palabra de 4
•
dígitos Wd en una unidad.
++L incrementa en binario la palabra de 8
dígitos Wd en una unidad.
• Wd: Palabra a incrementar
++(590)
Wd
@++(590)
Wd
++L(591)
Wd
@++L(591)
Wd
Soporte Técnico
153
--(592) --L(593)
• -- decrementa en binario la palabra de 4
•
dígitos Wd en una unidad.
--L decrementa en binario la palabra de 8
dígitos Wd en una unidad.
• Wd: Palabra a incrementar
--(592)
Wd
@--(592)
Wd
--L(593)
Wd
@--L(593)
Wd
Soporte Técnico
154
Binario Ejemplos
++(590)
D00000
D0
0019 +1
++L(591)
D00000
D0
0019
--(592)
D00000
D0
001A -1
--L(593)
D00000
D0
001A
Soporte Técnico
D0
001A
D1
FFFF +1
D0
001A
D1
0000
D0
0019
D1
FFFF
D0
0019
D1
0000 -1
155
++B(594) ++BL(595)
• ++B incrementa en BCD la palabra de 4
•
dígitos Wd en una unidad.
++BL incrementa en BCD la palabra de 8
dígitos Wd en una unidad.
• Wd: Palabra a incrementar
++B(594)
Wd
@++B(594)
Wd
++BL(595)
Wd
@++BL(595)
Wd
Soporte Técnico
156
--B(596) --BL(597)
• --B decrementa en BCD la palabra de 4
•
dígitos Wd en una unidad.
--BL decrementa en BCD la palabra de 8
dígitos Wd en una unidad.
• Wd: Palabra a incrementar
--B(596)
Wd
@--B(596)
Wd
--BL(597)
Wd
@--BL(597)
Wd
Soporte Técnico
157
BCD Ejemplos
++B(594)
D00000
++BL(595)
D00000
--B(596)
D00000
--BL(597)
D00000
Soporte Técnico
D0
0019 +1
D0
0019
D0
0020
D1
9999 +1
D0
0020 -1
D0
0020
D0
0020
D1
0000
D0
0019
D1
9999
D0
0019
D1
0000 -1
158
Comparación
=, <, <=, >, >=, <>
Soporte Técnico
159
Comparación de palabras
• Comparan dos datos S1 y S2.
• Los datos a comparar pueden ser:
• Formato: con o sin signo.
• Longitud: de 1 (S1 con S2) ó 2 (S1 y S1+1 con S2 y
S2+1) palabras.
• Son instrucciones intermedias: Se pueden
conectar como LD, AND y OR.
Símbolo & Opciones
S1
S2
Soporte Técnico
160
Comparación de palabras
Símbolo
=(300)
=L(301)
=S(302)
=SL(303)
<>(305)
<>L(306)
<>S(307)
<>SL(308)
<(310)
<L(311)
<S(312)
<SL(313)
<=(315)
<=L(316)
<=S(317)
<=SL(318)
>(320)
>L(321)
>S(322)
<SL(323)
>=(325)
>=L(326)
>=S(327)
>=SL(328)
Soporte Técnico
Formato
-: Sin signo
-: Sin signo
S: Con signo
S: Con signo
-: Sin signo
-: Sin signo
S: Con signo
S: Con signo
-: Sin signo
-: Sin signo
S: Con signo
S: Con signo
-: Sin signo
-: Sin signo
S: Con signo
S: Con signo
-: Sin signo
-: Sin signo
S: Con signo
S: Con signo
-: Sin signo
-: Sin signo
S: Con signo
S: Con signo
Longitud
-: 1 palabra
L: 2 palabras
-: 1 palabra
-: 2 palabras
-: 1 palabra
L: 2 palabras
-: 1 palabra
-: 2 palabras
-: 1 palabra
L: 2 palabras
-: 1 palabra
-: 2 palabras
-: 1 palabra
L: 2 palabras
-: 1 palabra
-: 2 palabras
-: 1 palabra
L: 2 palabras
-: 1 palabra
-: 2 palabras
-: 1 palabra
L: 2 palabras
-: 1 palabra
-: 2 palabras
161
Comparación Ejemplo
<LS(313)
D0000
D0002
LD
Activa la salida 0000.00 si D00000 y
D00001 es menor que D00002 y D00003
Tiene en cuenta el signo.
0000.00
AND
<S(312)
D0000
D0001
<(303)
D0000
D0001
=(300)
D0002
D0003
Soporte Técnico
Activa la salida 0000.00 si D00000 es
menor que D00001 y D00002 es igual
0000.00 que D00003
Tiene en cuenta el signo.
=S(302)
D0002
D0003
OR
0000.00
Activa la salida 0000.00 si D00000 es
menor que D00001 o D00002 es igual
que D00003
162
Instrucciones de conversión
de datos
SIGN, BINS, BISL, BCDS y BDSL
Soporte Técnico
163
SIGN(600)
• Convierte un valor de 16 bits, S, a su
equivalente de 32 bits binario con signo, R.
• S: Palabra fuente de 16 bits.
• R: Primera palabra del resultado.
8000  FFFF 8000
7000  0000 7000
SIGN(600)
S
R
Soporte Técnico
@SIGN(600)
S
R
164
BINS(470)
• Convierte una palabra de BCD con signo
S, a binario con signo R. La palabra de
control indica el formato del signo en BCD.
• C: Palabra de control: 0, 1, 2 ó 3
• S: Palabra en BCD.
• R: Palabra en binario.
BINS(470)
C
S
R
Soporte Técnico
@BINS(470)
C
S
R
165
BINS(470)
C=0000 (-999 a 999)
000 1 xxxx xxxx xxxx
El bit 12 de S indica el signo (1 negativo).
Los bits 13 a 15 deben ser 0.
C=0001 (-7999 a 7999)
1 xxx xxxx xxxx xxxx
El bit 15 de S indica el signo (1 negativo).
C=0002 (-999 a 9999)
F,0-9 xxxx xxxx xxxx
El signo se indica en S: F negativo o 0-9 positivo
Los valores A-E dan error.
C=0003 (-1999 a 9999)
FA,0-9 xxxx xxxx xxxx
Soporte Técnico
El signo se indica en S: F=- y A=-1 o 0-9 positivo
Los valores B-E dan error.
166
BISL(472)
• Convierte un dato de 32 bits BCD con
signo (S+1 S) a binario con signo de 32
bits (R+1 R). C indica el formato de signo
en BCD.
• C: Palabra de control: 0, 1, 2 ó 3
• S: Primera palabra de BCD.
• R: Primera palabra en binario.
BISL(472)
C
S
R
Soporte Técnico
@BISL(472)
C
S
R
167
BISL(472)
C=0000 (-999 9999 a 999 9999)
000 1 xxxx xxxx xxxx
El bit 12 de S+1 indica el signo (1 negativo).
Los bits 13 a 15 deben ser 0.
C=0001 (-7999 9999 a 7999 9999)
1 xxx xxxx xxxx xxxx
El bit 15 de S+1 indica el signo (1 negativo).
C=0002 (-999 9999 a 9999 9999)
F,0-9 xxxx xxxx xxxx
El signo se indica en S+1: F negativo o 0-9 positivo
Los valores A-E dan error.
C=0003 (-1999 9999 a 9999 9999)
FA,0-9 xxxx xxxx xxxx
Soporte Técnico
El signo se indica en S+1: F=- y A=-1 o 0-9 positivo
Los valores B-E dan error.
168
BCDS(471)
• Convierte una palabra de binario con signo
a BCD con signo. C indica el formato de
signo en BCD.
• C: Palabra de control: 0, 1, 2 ó 3
• S: Palabra en binario.
• R: Palabra en BCD.
• Esta es la instrucción inversa a BINS(470)
BCDS(471)
C
S
R
Soporte Técnico
@BCDS(471)
C
S
R
169
BDSL(473)
• Convierte un dato de binario con signo 32
bits a BCD con signo 32 bits. C indica el
formato de signo en BCD.
• C: Palabra de control: 0, 1, 2 ó 3
• S: Palabra en binario.
• R: Palabra en BCD.
• Esta es la instrucción inversa a BINS(470)
BDSL(473)
C
S
R
Soporte Técnico
@BDSL(473)
C
S
R
170
Limitaciones BCDS y BDSL
• En BCDS el dato S está limitada según C:
•
•
•
•
C=0
C=1
C=2
C=3
FC19 a FFFF y 0000 a 03E7
F0C1 a FFFF y 0000 a 1F3F
FC19 a FFFF y 0000 a 270F
F831 a FFFF y 0000 a 270F
• En BDSL el dato S está limitada según C:
•
•
•
•
Soporte Técnico
C=0
C=1
C=2
C=3
FF67 6981 a FFFF FFFF y 0 a 0098 967F
FB3B 4C01 a FFFF FFFF y 0 a 04C4 B3FF
FF67 6981 a FFFF FFFF y 0 a 05F5 E0FF
FECE D301 a FFFF FFFF y 0 a 05F5 E0FF
171
Instrucciones en
Coma Flotante
Números reales en coma flotante.
Soporte Técnico
172
Números en Coma Flotante
• Se pueden expresar los números:
•
•
•
•
•
•
- (e=255, f=0, s=0)
-3.402823·1038 ÷ -1.175494·10-38
0 (e=0)
1.175494·10-38 ÷ 3.402823·1038
 (e=255, f=0, s=1)
NaN (e=255, f0): Número no válido.
• No es necesario conocer el formato de
estos números, sólo que ocupan 32 bits.
Soporte Técnico
173
Precauciones Coma Flotante
• Las operaciones indeterminadas 0.0/0.0,
•
•
•
/, - dan como resultado NaN.
Overflow (±) y Underflow (±0). Es más
peligroso el Overflow al convertir el
resultado a entero (binario con signo).
Los decimales se truncan al convertirlos a
entero (binario con signo).
Cualquier operación con un NaN como
operando da como resultado NaN.
Soporte Técnico
174
IEEE754
• Expresan números reales en 32 bits
conforme al estándar IEEE754:
• f: Mantisa
• e: Exponente
• s: Signo
23 bits
8 bits
1 bit
bit 0 al 22
bit 23 al 30
bit 31
• (-1)s·2e-127·(1+f·2-23)
• 1#10000000#11000000000000000000000
•
•
•
•
Soporte Técnico
Signo: (-1)1= -1
Exponente: 2128-127=21=2
Mantisa: 1+6291456·2-23=1+0.75=1.75
Resultado: -1.75·2= -3.5
175
Instrucciones Coma Flotante
• Se pueden realizar las siguientes:
•
•
•
•
•
Conversión: FIX, FIXL, FLT, FLTL
Operaciones: +F, -F, *F, /F, SQRT, PWR
Conversiones angulares: RAD, DEG
Angulares: SIN, COS, TAN, ASIN, ACOS, ATAN
En base e: LOG, EXP
• Los operandos deben ser Nos en
•
formato coma flotante IEEE754.
No es necesario conocer este formato,
sólo que ocupan 32 bits.
Soporte Técnico
176
FIX(450)
• Convierte un número en coma flotante a un
entero (binario con signo) de 16 bits.
• S: Primera palabra de número en coma flotante.
• R: Palabra donde se guarda el resultado.
• La parte decimal es truncada (3.5  3)
• Rango de -32.768 ÷ 32.767.
FIX(450)
S
R
Soporte Técnico
@FIX(450)
S
R
177
FIXL(451)
• Convierte un número en coma flotante a un
entero (binario con signo) de 32 bits.
• S: Primera palabra de número en coma flotante.
• R: Primera palabra donde se guarda el resultado.
• La parte decimal es truncada (-3.5  -3)
• Rango de -2.147.482.648÷2.147.482.647.
FIXL(451)
S
R
Soporte Técnico
@FIXL(451)
S
R
178
FIX, FIXL Ejemplo
FIX(450)
D00000
D00100
D00000 0000000000000000 3.5
D00001 0100000001100000
D00100 0000000000000011
FIXL(451)
D00002
D00102
3
D00002 0000000000000000
-58.720.256
D00003 1100110001100000
D00102 0000000000000000 -58.720.256
D00103 1111110010000000
Soporte Técnico
179
FLT(452)
• Convierte un número entero (binario con
signo) de 16 bits en formato de coma
flotante de 32 bits.
• S: Palabra del número entero.
• R: Primera palabra del resultado.
• Rango de -32.768 ÷ 32.767.
FLT(452)
S
R
Soporte Técnico
@FLT(452)
S
R
180
FLTL(453)
• Convierte un número entero (binario con
signo) de 32 bits en formato de coma
flotante de 32 bits.
• S: Primera palabra del número entero.
• R: Primera palabra del resultado.
• Rango de -2.147.482.648÷2.147.482.647.
• Números > 16.777.215 pierden precisión.
FLTL(453)
S
R
Soporte Técnico
@FLTL(453)
S
R
181
FLT, FLTL Ejemplo
FLT(452)
D00100
D00000
FLTL(453)
D00102
D00002
D00000 0000000000000000 3
D00001 0100000001000000
D00100 0000000000000011
3
D00002 0000000000000000
-58.720.256
D00003 1100110001100000
D00102 0000000000000000 -58.720.256
D00103 1111110010000000
Soporte Técnico
182
+F(454)
• Suma 2 números en coma flotante de
32 bits.
• Au: Primera palabra del primer sumando.
• Ad: Primera palabra del segundo sumando.
• R:
Primera palabra del resultado.
• El resultado puede ser , -, 0, NaN.
• Tener en cuenta:  -  = NaN y que
NaN+número=NaN.
+F(454)
Au
Ad
R
Soporte Técnico
@+F(454)
Au
Ad
R
183
-F(455)
• Resta 2 números en coma flotante de
32 bits.
• Mi: Primera palabra del Minuendo.
• Su: Primera palabra del Sustraendo.
• R:
Primera palabra del resultado.
• El resultado puede ser , -, 0, NaN.
• Tener en cuenta:  -  = NaN y que
NaN-número=NaN, número-NaN=NaN.
-F(455)
Mi
Su
R
Soporte Técnico
@-F(455)
Mi
Su
R
184
+F, -F Ejemplo
D00000
D00001
D00002
D00003
+F(454)
D00000
D00002
D00100
-F(455)
D00000
D00002
D00100
Soporte Técnico
0000 0000 0000 0000
0100 0000 0110 0000 3.5
0000 0000 0000 0000
0100 0000 1100 0000 6
3.5
D00100 0000 0000 0000 0000 +6
D00101 0100 0001 1110 0000
9.5
3.5
D00100 0000 0000 0000 0000 - 6
D00101 1100 0000 0010 0000 -2.5
185
*F(456)
• Multiplica 2 números en coma flotante
de 32 bits.
• Md: Primera palabra del Multiplicando.
• Mr: Primera palabra del Multiplicador.
• R:
Primera palabra del Resultado.
• El resultado puede ser , -, 0, NaN.
• Tener en cuenta: 0· = NaN y que
NaN·número=NaN.
*F(456)
Md
Mr
R
Soporte Técnico
@*F(456)
Md
Mr
R
186
/F(457)
• Multiplica 2 números en coma flotante
de 32 bits.
• Dd: Primera palabra del Dividendo.
• Dr: Primera palabra del Divisor.
• R:
Primera palabra del Resultado.
• El resultado puede ser , -, 0, NaN.
• Tener en cuenta: 0/0 = NaN, / = NaN y
que NaN/número=NaN, número/NaN=NaN.
/F(457)
Dd
Dr
R
Soporte Técnico
@/F(457)
Dd
Dr
R
187
*F, /F Ejemplo
D00000
D00001
D00002
D00003
*F(456)
D00000
D00002
D00100
/F(457)
D00000
D00002
D00100
Soporte Técnico
0000 0000 0000 0000
0100 0000 0110 0000 3.5
0000 0000 0000 0000
0100 0000 1100 0000 6
3.5
D00100 0000 0000 0000 0000 * 6
D00101 0100 0001 1011 0000
21
3.5
D00100 0101 0101 0101 0101 ÷ 6
D00101 0011 1111 0101 1010
0.583333
188
RAD(458)
• Convierte un número en coma flotante (32
bits) de grados sexagesimales a radianes.
El resultado está en coma flotante.
• S:
• R:
Primera palabra de los grados.
Primera palabra del resultado.
• Utiliza la fórmula: Radianes=Grados·/180
RAD(458)
S
R
Soporte Técnico
@RAD(458)
S
R
189
DEG(459)
• Convierte un número en coma flotante (32
bits) de radianes a grados sexagesimales.
El resultado está en coma flotante.
• S:
• R:
Primera palabra de los radianes.
Primera palabra del resultado.
• Utiliza la fórmula: Grados=Radianes·180/
DEG(459)
S
R
Soporte Técnico
@DEG(459)
S
R
190
DEG, RAD Ejemplo
@RAD(458)
D00002
57.29578º = 1 rad
D00000
@DEG(459)
D00000
D00002
D00000
D00001
D00002
D00003
Soporte Técnico
/2 90º
1 rad = 57.29578º
180º

0º=360º
0=2
0000 0000 0000 0000
3/2 270º
0011 1111 1000 0000 1 rad
0010 1110 1110 0000
0100 0010 0110 0101 57.29578º
191
SIN(460)
• Calcula el seno de un ángulo (radianes) en
coma flotante (32 bits). El resultado está en
coma flotante.
• S:
• R:
Primera palabra del ángulo (radianes).
Primera palabra del resultado.
• El resultado está entre -1 y 1.
SIN(460)
S
R
Soporte Técnico
@SIN(460)
S
R
192
COS(461)
• Calcula el coseno de un ángulo (radianes)
en coma flotante (32 bits). El resultado está
en coma flotante.
• S:
• R:
Primera palabra del ángulo (radianes).
Primera palabra del resultado.
• El resultado está entre -1 y 1.
COS(461)
S
R
Soporte Técnico
@COS(461)
S
R
193
TAN(462)
• Calcula la tangente de un ángulo
(radianes) en coma flotante (32 bits). El
resultado está en coma flotante.
• S:
• R:
Primera palabra del ángulo (radianes).
Primera palabra del resultado.
• El resultado está entre - y .
TAN(462)
S
R
Soporte Técnico
@TAN(462)
S
R
194
SIN, COS, TAN Ejemplo
D00000 0000 1010 1001 0001
D00001 0011 1111 0000 0110
30º=0.523599 rad
@SIN(460)
D00000
D00100
D00100 0000 0000 0000 0000
D00101 0000 0000 0000 0000 sen30º = 0.5
@COS(461)
D00000
D00100
D00100 1011 0011 1101 0111
D00101 0011 1111 0101 1101 cos30º= 0.866
@TAN(462)
D00000
D00100
D00100 1100 1101 0011 1010
D00101 0011 1111 1001 0011 tg30º=0.577
Soporte Técnico
195
ASIN(463)
• Calcula arco seno de un número en coma
flotante (32 bits). El resultado está en coma
flotante.
• S:
• R:
Primera palabra del número (-1÷1).
Primera palabra del ángulo (radianes).
• El resultado está entre -/2 y /2.
ASIN(463)
S
R
Soporte Técnico
@ASIN(463)
S
R
196
ACOS(464)
• Calcula arco coseno de un número en
coma flotante (32 bits). El resultado está en
coma flotante.
• S:
• R:
Primera palabra del número (-1÷1).
Primera palabra del ángulo (radianes).
• El resultado está entre -/2 y /2.
ACOS(464)
S
R
Soporte Técnico
@ACOS(464)
S
R
197
ATAN(465)
• Calcula arco tangente de un número en
coma flotante (32 bits). El resultado está en
coma flotante.
• S:
• R:
Primera palabra del número (-  ÷ ).
Primera palabra del ángulo (radianes).
• El resultado está entre -/2 y /2.
ATAN(465)
S
R
Soporte Técnico
@ATAN(465)
S
R
198
ASIN, ACOS, ATAN Ejemplo
D00000 0000 0000 0000 0000
D00001 0011 1111 0000 0000
0.5
@ASIN(463)
D00000
D00100
D00000 0000 1010 1001 0001 arcsen 0.5=
D00001 0011 1111 0000 0110 0.523599 rad
@ACOS(464)
D00000
D00100
D00000 0000 1010 1001 0001 arccos 0.5=
D00001 0011 1111 1000 0110 1.1047197 rad
@ATAN(465)
D00000
D00100
D00100 0110 0011 1000 1000 arctg 0.5=
D00101 0100 0000 1110 1101 0.4636479 rad
Soporte Técnico
199
SQRT(466)
• Calcula la raíz cuadrada de un número en
coma flotante (32 bits). El resultado está en
coma flotante.
• S:
• R:
Primera palabra del radicando (0 ÷ ).
Primera palabra del resultado (0 ÷ ).
• El radicando debe ser un Nº positivo.
SQRT(466)
S
R
Soporte Técnico
@SQRT(466)
S
R
200
PWR(840)
• Eleva un número en coma flotante (32 bits)
a la E potencia. El resultado está en coma
flotante.
• B:
• E:
• R:
Primera palabra de la base (- ÷ ).
Primera palabra del Exponente(- ÷ ).
Primera palabra del resultado (- ÷ ).
• (±)0, 0, 0-E y (-S)Nºracional dan error.
PWR(840)
B
E
R
Soporte Técnico
@PWR(840)
B
E
R
201
PWR, SQRT Ejemplo
D00000
D00001
D00002
D00003
@SQRT(466)
D00000
D00100
PWR(840)
D00000
D00002
D00100
Soporte Técnico
0000 0000 0000 0000
0100 0001 0001 0000 9
0000 0000 0000 0000
0100 0000 1100 0000 6
D00100 0000 0000 0000 0000
D00101 0100 0000 0100 0000
9=3
D00100 1011 1111 0001 0000
D00101 0100 1001 0000 0001
96=531.441
202
EXP(467)
• Calcula el exponencial (eS) de un número
en coma flotante (32 bits). El resultado está
en coma flotante.
• S:
• R:
Primera palabra del exponente (- ÷ ).
Primera palabra del resultado (0 ÷ ).
• e2,718281828459.
• El resultado siempre es positivo.
EXP(467)
S
R
Soporte Técnico
@EXP(467)
S
R
203
LOG(468)
• Calcula el logaritmo natural (lnS) de un
número en coma flotante (32 bits). El
resultado está en coma flotante.
• S:
• R:
Primera palabra del logaritmo (0 ÷ ).
Primera palabra del resultado (- ÷ ).
• El logaritmo de un Nº negativo no es Real.
LOG(468)
S
R
Soporte Técnico
@LOG(468)
S
R
204
EXP, LOG Ejemplo
D00000 0000 0000 0000 0000
D00001 0011 1111 1000 0000
1
@LOG(468)
D00000
D00100
D00100 0000 0000 0000 0000
D00101 0000 0000 0000 0000
L1 = 0
@EXP(467)
D00000
D00100
D00100 1111 1000 0101 0100
D00101 0100 0000 1010 1101
e1=2.71828
Soporte Técnico
205
Instrucciones de calendario
Fecha y hora
Soporte Técnico
206
Instrucciones de Calendario
• La primera vez que se utiliza el PLC es
•
necesario insertar la batería.
Una vez insertada hay que poner en hora
el reloj interno del PLC. Se puede hacer
mediante
• el CX-Programer
• o con la consola
• o mediante la instrucción DATE.
• Todos los datos se introducen en código
BCD.
Soporte Técnico
207
DATE(735)
• Ajusta la fecha y hora del reloj interno del
PLC con las 4 palabras empezando por S.
• S:
Primera palabra de la nueva fecha y hora.
DATE(735)
@DATE(735)
S
Soporte Técnico
S
208
DATE(735)
S
0101 1001 0101 1001
Segundos 00 ÷ 59
Minutos 00 ÷59
S+1 0011 0001 0010 0011
Hora 00 ÷ 23
Día 01 ÷31
S+2 1001 1001 0001 1100
Mes 01 ÷ 12
Año 00 ÷99
S+3 0000 0000 0000 0110
Día semana 00(Domingo) ÷ 06(Sábado)
Siempre 0
Soporte Técnico
209
DATE(735)
La fecha y hora se guardan en los registros auxiliares:
Dirección
Soporte Técnico
Contenido
A35100 ÷ A35107
Segundos 00 ÷ 59
A35108 ÷ A35115
Minutos 00 ÷ 59
A35100 ÷ A35207
Hora 00 ÷ 23
A35108 ÷ A35215
Día 01 ÷ 31
A35100 ÷ A35307
Mes 01 ÷ 12
A35108 ÷ A35315
Año 00 ÷ 99
A35100 ÷ A35407
Día Semana 00 ÷ 06
A35108 ÷ A35415
Minutos 00 ÷ 59
210
DATE(735) Ejemplo
@DATE(735)
D00000
D0000
D0001
D0002
D0003
Soporte Técnico
15
05
99
00
30
16 16:15:30
05 5 de Mayo de 1.999
04 Miércoles
211
CADD(730)
• Suma tiempo T a la fecha indicada en C.
• C:
• T:
• R:
Primera palabra de la fecha.
Primera palabra del tiempo a sumar.
Primera palabra del resultado de la suma.
CADD(730)
C
T
R
Soporte Técnico
@CADD(730)
C
T
R
212
CADD(730)
C
0101 1001 0101 1001
Segundos 00 ÷ 59
Minutos 00 ÷59
C+1 0011 0001 0010 0011
Este mismo formato es
Hora 00 ÷ 23
el del resultado R a R+2
Día 01 ÷31
C+2 1001 1001 0001 1100
Mes 01 ÷ 12
Año 00 ÷99
T 0101 1001 0101 1001
Segundos 00 ÷ 59
Minutos 00 ÷59
T+1 0011 0001 0010 0011
Hora 0000 ÷ 9999
Soporte Técnico
213
CADD(730) Ejemplo
CADD(730)
D00000
D00003
D00100
D0000 15 30
D0001 05 16 16:15:30
D0002 99 05 5 de Mayo de 1.999
D0003 15 20
D0004 05 16 516h 15’ 20”
D0100 30 50
D0101 27 16 6:30:50
D0102 99 05 27 de Mayo de 1.999
Soporte Técnico
214
CSUB(731)
• Suma tiempo T a la fecha indicada en C.
• C:
• T:
• R:
Primera palabra de la fecha.
Primera palabra del tiempo a restar.
Primera palabra del resultado de la resta.
CSUB(731)
C
T
R
Soporte Técnico
@CSUB(731)
C
T
R
215
CSUB(731)
C
0101 1001 0101 1001
Segundos 00 ÷ 59
Minutos 00 ÷59
C+1 0011 0001 0010 0011
Este mismo formato es
Hora 00 ÷ 23
el del resultado R
Día 01 ÷31
C+2 1001 1001 0001 1100
Mes 01 ÷ 12
Año 00 ÷99
T 0101 1001 0101 1001
Segundos 00 ÷ 59
Minutos 00 ÷59
T+1 0011 0001 0010 0011
Hora 0000 ÷ 9999
Soporte Técnico
216
CSUB(731) Ejemplo
CSUB(731)
D00000
D00003
D00100
D0000 15 30
D0001 05 16 16:15:30
D0002 99 05 5 de Mayo de 1.999
D0003 10 40
D0004 05 16 516h 15’ 20”
D0100 19 50
D0101 15 04 4:19:50
D0102 99 04 15 de Abril de 1.999
Soporte Técnico
217
SEC(065)
• Convierte un dato de tiempo h:m:s a su
equivalente en segundos.
• S:
• D:
Primera palabra de h:m:s
Primera palabra del resultado en segundos.
SEC(065)
S
D
Soporte Técnico
@SEC(065)
S
D
218
SEC(065)
S
0101 1001 0101 1001
Segundos 00 ÷ 59
Minutos 00 ÷59
S+1 1001 1001 1000 1001
Hora 0000 ÷ 9999
R
1001 1001 1001 1001
R+1 0011 0101 1001 1001 Segundos 0 ÷ 35.999.999
Soporte Técnico
219
HMS(066)
• Convierte un dato de segundos al formato
h:m:s.
• S:
• D:
Primera palabra de los segundos.
Primera palabra del resultado en h:m:s.
HMS(066)
S
D
Soporte Técnico
@HMS(066)
S
D
220
HMS(066)
S
1001 1001 1001 1001
S+1 0011 0101 1001 1001
Segundos 0 ÷ 35.999.999
R
0101 1001 0101 1001
Segundos 00 ÷ 59
Minutos 00 ÷59
R+1 1001 1001 1001 1001
Hora 0000 ÷ 9999
Soporte Técnico
221
SEC, HMS Ejemplo
SEC(065)
D00100
D00000
HMS(066)
D00000
D00100
D00000 0011 0100 0101 0110
D00001 0000 0000 0001 0010 123.456 Segundos
D00100
D00101
Soporte Técnico
0001 0111 0011 0110
36 Segundos
17 Minutos
0000 0000 0011 0100
34 Horas
222
Ficheros de Memoria
Lectura / Escritura de ficheros
Soporte Técnico
223
Ficheros de Memoria
• La tarjeta de memoria flash y el área EM se
•
pueden utilizar como área de ficheros.
Se pueden escribir/leer ficheros:
•
•
•
•
•
Programa (.OBJ)
Parámetros (.STD)
Memoria (.IOM)
Símbolos (.SYM)
Comentarios (.CMT)
• Con instrucciones sólo se pueden
Leer/Escribir ficheros de memoria (.IOM).
Soporte Técnico
224
FREAD(700)
• Permite leer un fichero de memoria (.IOM)
y guardar todo o parte de su contenido en
un área de memoria.
•
•
•
•
C:
S1:
S2:
D:
Palabra de control.
Primera palabra dato.
Nombre del fichero.
Primera palabra destino.
FREAD(700)
C
S1
S2
D
Soporte Técnico
@FREAD(700)
C
S1
S2
D
225
FREAD(700)
C 0000 0000 0001 0001
0: Tarjeta de memoria
1: Memoria EM
0: Leer datos
1: Leer número de palabras
S1+1
S1
S1+3
S1+2
Soporte Técnico
Número de palabras del fichero que
se quieren leer (en hexadecimal).
Palabra del fichero por la que se
empieza a leer (en hexadecimal).
226
FREAD(700)
S2: Primera palabra del nombre del fichero que se quiere leer.
S2
\ A
B C
D \
X Y
Z
\ABCD\XYZ
Directorio ABCD
Nombre del fichero XYZ
D: Dirección donde se guardan los datos del fichero leído.
Si se lee el número de palabras se almacenan en D y D+1
D+1
Soporte Técnico
D
Número de palabras del fichero
leído (en hexadecimal).
227
FREAD(700) Ejemplo
0000.00 A343.13
@FREAD(700)
#0000
D00200
D00300
D00400
D00200
D00201
D00202
D00203
00
00
00
00
Lee 10 palabras desde la 5 hasta la 14 del fichero
\ABCD\XY de la tarjeta de memoria y las guarda
en D00400 hasta D00409
Tarjeta de memoria
\ABCD\XY
0A 10 palabras.
00
05 Empieza en la palabra 5.
00
5
10
D00200
D00201
D00202
D00203
Soporte Técnico
5C
42
44
58
41 Directorio ABCD
43 Fichero XY
5C
59
228
Área DM
D00400
D00409
FWRIT(701)
• Permite escribir un fichero de memoria
(.IOM) y guardar todo o parte del contenido
de un área de memoria.
•
•
•
•
C:
D1:
D2:
S:
Palabra de control.
Primera palabra del fichero destino.
Nombre del fichero.
Primera palabra a guardar.
FWRIT(701)
C
D1
D2
S
Soporte Técnico
@FWRIT(701)
C
D1
D2
S
229
FWRIT(701)
C 0000 0000 0001 0001
0: Tarjeta de memoria
1: Memoria EM
0: Añadir al final
1: Sobrescribir
D1+1
D1
D1+3
D1+2
Soporte Técnico
Número de palabras de memoria que
se quieren guardar (en hexadecimal).
Palabra del fichero por donde se
empieza a escribir (en hexadecimal)
sólo si se sobreescribe.
230
FWRIT(701)
D2: Primera palabra del nombre del fichero a escribir.
D2
\ A
B C
D \
X Y
Z
\ABCD\XYZ
Directorio ABCD
Nombre del fichero XYZ
S: Primera dirección de memoria a guardar en el fichero.
Si se guardan más palabras de las que hay en ese área de memoria,
se continúa guardando palabras del área siguiente.
S
Soporte Técnico
Dirección de la primera palabra de memoria
que se quiere guardar.
231
FWRIT(701) Ejemplo
0000.01 A343.13
@FWRIT(701)
#0010
D00200
D00300
D00400
D00200
D00201
D00202
D00203
D00200
D00201
D00202
D00203
Soporte Técnico
00
00
00
00
5C
42
44
58
Guarda 10 palabras desde DM00400 hasta DM00409
en el fichero \ABCD\XY de la tarjeta de memoria
empezando en la palabra (inicio del fichero + 5).
Tarjeta de memoria
\ABCD\XY
0A 10 palabras.
00
05 Empieza en la palabra 5.
00
Área DM
D00400
D00409
41 Directorio ABCD
43 Fichero XY
5C
59
232
5
10
Control de datos
Control de datos analógicos
Soporte Técnico
233
LMT(680)
• Limita los valores máximo C+1 y mínimo C
de una palabra S.
• S: Palabra dato.
• C: Primera palabra de los límites.
• D: Palabra donde se guarda el resultado.
LMT(680)
S
C
D
Soporte Técnico
@LMT(680)
S
C
D
234
LMT(680) Ejemplo
@LMT(680)
D00000
D00001
D00100
D
(binario)
Límite Superior C+1
S
(binario)
Límite Inferior C
C:
Límite inferior
C+1: Límite superior
El límite inferior puede ser positivo o negativo.
El límite superior debe ser mayor que el inferior.
Soporte Técnico
235
BAND(681)
• Crea una banda muerta en el dato de
entrada S.
• S: Palabra dato.
• C: Primera palabra de los límites.
• D: Palabra donde se guarda el resultado.
BAND(681)
S
C
D
Soporte Técnico
@BAND(681)
S
C
D
236
BAND(681) Ejemplo
BAND(681)
D00000
D00001
D00100
D
(binario)
Límite Inferior C
S
(binario)
Límite Superior C+1
C:
Límite inferior
C+1: Límite superior
El límite inferior puede ser positivo o negativo.
El límite superior debe ser mayor que el inferior.
Soporte Técnico
237
ZONE(682)
• Crea una zona muerta en el dato de salida
D.
• S: Palabra dato.
• C: Primera palabra de los límites.
• D: Palabra donde se guarda el resultado.
ZONE(682)
S
C
D
Soporte Técnico
@ZONE(682)
S
C
D
238
ZONE(682) Ejemplo
ZONE(682)
D00000
D00001
D00100
D
(binario)
Límite Superior C+1
S
(binario)
Límite Inferior C
C:
Límite inferior
C+1: Límite superior
El límite inferior puede ser positivo o negativo.
El límite superior debe ser mayor que el inferior.
Soporte Técnico
239
SCL2(486)
• Convierte una palabra binario con signo en
otra BCD con signo, siguiendo una función
lineal. Offset en binario.
• S: Palabra dato binario.
• P1: Primera palabra de los límites.
• R: Palabra donde se guarda el resultado BCD.
SCL2(486)
S
P1
R
Soporte Técnico
@SCL2(486)
S
P1
R
240
SCL2(486)
P1
P1+1
P1+2
Offset
X
Y
R
(BCD)
El Offset puede ser
- Positivo
- Negativo
- Cero
Soporte Técnico
Offset
Y
X
S
(binario)
241
SCL3(487)
• Convierte una palabra BCD con signo S en
otra binario con signo R, siguiendo una
función lineal. Offset en BCD.
• S: Palabra dato BCD.
• P1: Primera palabra de los límites.
• R: Palabra donde se guarda el resultado binario.
SCL3(487)
S
P1
R
Soporte Técnico
@SCL3(487)
S
P1
R
242
SCL3(487)
P1
P1+1
P1+2
P1+3
P1+4
Offset
X
Y
Límite superior
Límite inferior
R
(binario)
Límite superior
El Offset puede ser
- Positivo
- Negativo
- Cero
Y
X
S
(BCD)
Offset
Límite inferior
Soporte Técnico
243
Comunicaciones
Serie y Network
PMCR, SEND, RECV, CMND
Soporte Técnico
244
Comunicaciones
• Incorpora 8 puertos lógicos. Esto permite
•
•
gestionar 8 comunicaciones a la vez sin
inferencias.
Puede manejar 16 unidades de
comunicación (SCU) + 1 tarjeta de
comunicación interna (SCB).
En las comunicaciones en red se pueden
hacer puentes entre redes en el mismo
PLC (Ethernet, Controler Link,
CompoBus/D, Compobus/S).
Soporte Técnico
245
PMCR(260)
• Ejecuta una secuencia de comunicaciones
definida en una tarjeta de comunicaciones.
•
•
•
•
C1: Palabra de control 1.
C2: Palabra de control 2.
S: Primera palabra de enviar.
R: Primera palabra de recibir.
PMCR(260)
C1
C2
S
R
Soporte Técnico
@PMCR(260)
C1
C2
S
R
246
PMCR(260)
C1
0111 0001 1110 0001
10 + Nº de unidad
E1
Unidad de comunicaciones (SCU).
Tarjeta interna (SCB).
Nº de puerto serie (puerto 1 o puerto 2)
Nº de puerto lógico (0÷7)
C2
0000 0011 1110 0111
S
n
S1
S2
...
Nº de palabras a enviar + 1
Palabras a enviar.
R
n
R1
R2
...
Nº de palabras recibidas + 1
Palabras recibidas.
Soporte Técnico
Nº de secuencia de comunicaciones.
247
PMCR(260) Ejemplo
PMCR(260)
D00000
D00001
D00100
D01000
D00000
D00001
Soporte Técnico
Ejecuta la secuencia de comunicaciones 1
de la ComBoard.
Utiliza el puerto 1 (puerto físico).
Ocupa el puerto lógico 0.
0000 0001 1110 0001
0000 0000 0000 0001
248
SEND(090)
• Envía datos a un nodo de la red.
• S: Primera palabra a enviar (nodo local).
• D: Primera palabra a recibir (nodo remoto).
• C: Primera palabra de control.
SEND(090)
S
D
C
Soporte Técnico
@SEND(090)
S
D
C
249
SEND(090)
C
C+1
C+2
C+3
C+4
Soporte Técnico
Byte bajo 0÷7
Byte alto 8÷15
Número de palabras: 0001 hasta el máximo de la red.
Red destino 00÷7F
Puerto serie 01÷04 (Host Link)
Unidad destino
Nodo destino 00 al máximo
Nº de reintentos
bits 8÷11: puerto lógico
12÷15: 0 con respuesta
8 sin respuesta
Tiempo de monitorización de la respuesta 0001÷FFFF (0.1÷6553.5 seg.)
250
RECV(098)
• Pide datos de un nodo de la red y los
recibe.
• S: Primera palabra a enviar (nodo remoto).
• D: Primera palabra a recibir (nodo local).
• C: Primera palabra de control.
RECV(098)
S
D
C
Soporte Técnico
@RECV(098)
S
D
C
251
RECV(098)
C
C+1
C+2
C+3
C+4
Soporte Técnico
Byte bajo 0÷7
Byte alto 8÷15
Número de palabras: 0001 hasta el máximo de la red.
Red fuente 00÷7F
Puerto serie 01÷04 (Host Link)
Unidad fuente
Nodo fuente: 00 al máximo
Nº de reintentos
bits 8÷11: puerto lógico
12÷15: 0 con respuesta
8 sin respuesta
Tiempo de monitorización de la respuesta 0001÷FFFF (0.1÷6553.5 seg.)
252
CMND(490)
• Envía un comando FINS y recibe la
respuesta.
• S: Primera palabra del comando a enviar.
• D: Primera palabra de respuesta.
• C: Primera palabra de control.
CMND(490)
S
D
C
Soporte Técnico
@CMND(490)
S
D
C
253
CMND(490)
C
C+1
C+2
C+3
C+4
C+5
Soporte Técnico
Byte bajo 0÷7
Byte alto 8÷15
Número de Bytes del comando a enviar: 0002 hasta el máximo.
Número de Bytes del comando a recibir: 0002 hasta el máximo
Red fuente 00÷7F
Puerto serie 01÷04 (Host Link)
Unidad fuente
Nodo fuente: 00 al máximo
Nº de reintentos
bits 8÷11: puerto lógico
12÷15: 0 con respuesta
8 sin respuesta
Tiempo de monitorización de la respuesta 0001÷FFFF (0.1÷6553.5 seg.)
254
Cambio en Instrucciones
Instrucciones que ya no existen o
han sido modificadas
Soporte Técnico
255
Instrucciones no soportadas
SCAN
LMSG
TERM
MPRF
XFR2
XDMR
INT
CMCR
DSW
TKY
HKY
MTR
7SEG
Soporte Técnico
Impone un tiempo mínimo de ciclo de programa.
Muestra un mensaje de 32 bits en la consola de programación.
Coloca la consola de programación en modo terminal.
Refresco de unidades de alta densidad.
Transferir bloque EM.
Leer banco de expansión EM.
Gestión de interrupciones.
Macro de la tarjeta PCMCIA.
Entrada de interruptor digital.
Entrada de teclado decimal.
Entrada de teclado hexadecimal.
Entrada de matriz.
Conversión a 7 segmentos.
256
Instrucciones modificadas
FAL/FALS
WSFT
PMCR
MSG
TTIM
SEND/RECV
FCS
SRCH
MAX/MIN
SUM
PID
IORD/IOWR
Soporte Técnico
Alarma de fallos.
Shift de palabra.
Protocol Macro
Mensaje.
Temporizador totalizador.
Network Enviar y Recibir.
Frame checksum.
Búsqueda.
Encontrar máximo y mínimo.
Suma.
Control PID.
Leer/Escribir unidades I/O especiales.
257
Descargar

Instrucciones del CS1 - Nuevas instrucciones