You are on page 1of 257

Instrucciones de CS1

Nuevas instrucciones

Soporte Tcnico

ndice

Formato instrucciones
Direccionamientos
Tareas
Interrupciones
Temporizadores
Bloques de programa
Tablas de datos
Cadenas de caracteres
Saltos
Instrucciones de Lazo
FOR-NEXT

Soporte Tcnico

Desplazar/Rotar
Increment/Decrement
Comparacin
Conversin
Coma Flotante
Calendario
Ficheros de Memoria
Control de datos
Comunicaciones
Cambios en Intrucc.
2

Formato instrucciones
Flancos de subida y bajada
Refresco inmediato

Soporte Tcnico

Formato de instrucciones

Flanco de subida @
La instruccin se ejecuta con el flanco de subida de
la condicin de ejecucin.
La entrada se activa con el flanco de subida.

Flanco de bajada %
La instruccin se ejecuta con el flanco de bajada de
la condicin de ejecucin.
La entrada se activa con el flanco de bajada.

Refresco inmediato !
La instruccin hace un refresco de las variables al
ejecutarse.
Puede combinar el flanco de subida o bajada.
Soporte Tcnico

Ejemplo de Formatos
% LD 0000.00
LD 0000.00
% SET 0001.00
! MOV(21)
0000
DM00000
0000.00
!@MOV(21)
0001
DM00001

Soporte Tcnico

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

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: Nmero de bit.

TSTN es la instruccin negada de TST.


TST(350)
S
N

Soporte Tcnico

TSTN(351)
S
N

TST, TSTN Ejemplo


0010.06
TST(350)
DM00000
&6

0010.04

0000.00
TSTN(351)
DM00000
&11

Soporte Tcnico

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.

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: Nmero de bits.
SETA(530)
D
N1
N2

Soporte Tcnico

@SETA(530)
D
N1
N2

RSTA(531)
D
N1
N2

@RSTA(531)
D
N1
N2

SETA(530) RSTA(531)
@SETA(530)
W000
&4
&36

@RSTA(531)
W000
&4
&36

Soporte Tcnico

Pone a 1 36 bits consecutivos desde el bit 4


de la palabra W000
W000
W001
W002

1111 1111 1111 0000


1111 1111 1111 1111
0000 0000 1111 1111

Pone a 0 36 bits consecutivos desde el bit 4


de la palabra W000
W000
W001
W002

0000 0000 0000 1111


0000 0000 0000 0000
1111 1111 0000 0000

Direccionamientos
Addessing

Soporte Tcnico

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(-)
Direccin en BCD (*D, *E, *En_)
Direccin en Binario (@D, @E, @En_)

Indirecto Indexado (IR)

Soporte Tcnico

,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 direccin(BCD)indicada en D00000


Inmediato
Indirecto BCD

Soporte Tcnico

12

Ejemplos
MOV(21)
W000
@D00000

Escribe el contenido de W000 en la


direccin (Binaria) indicada en D00000
Directo
Indirecto Binario

MOV(21)
#1A
,IR0

Escribe 1A en la direccin indicada en IR0


Inmediato
Indexado

MOV(21)
#1A
+23,IR0

Escribe 1A en la direccin indicada en (IR0+23)


Inmediato
Indexado

MOV(21)
#1A
DR0,IR0

Escribe 1A en la direccin indicada en (IR0+DR0)


Inmediato
Indexado

Soporte Tcnico

13

Ejemplos
MOV(21)
#1A
,IR0+

Escribe 1A en la direccin indicada en IR0


y aumenta IR0 una unidad
Inmediato
Indexado

MOV(21)
#1A
,-IR0

Escribe 1A en la direccin indicada en IR0


y aumenta IR0 dos unidades
Inmediato
Indexado
Escribe 1A en la direccin indicada en (IR0-1)
y disminuye IR0 una unidad
Inmediato
Indexado

MOV(21)
#1A
,--IR0

Escribe 1A en la direccin indicada en (IR0-2)


y disminuye IR0 dos unidades
Inmediato
Indexado

MOV(21)
#1A
,IR0++

Soporte Tcnico

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

MOVR(560)
S
D

Soporte Tcnico

@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 Tcnico

@MOVRW(561)
S
D

16

MOVR(560) MOVRW(561)
MOVR(560)
T0000
IR0

MOVRW(561)
T0000
IR0

Soporte Tcnico

Guarda el Valor presente PV del temporizador


T0000 en el registro ndice IR0
IR0

0000 0195

Guarda el nmero de temporizador T0000 en el


registro ndice IR0

17

Tareas
Divisin del programa en tareas

Soporte Tcnico

18

Programa y Tareas

Dentro de un mismo PLC se puede repartir


un programa en tareas cclicas o de
interrupcin.
Tarea Cclica 00
Tarea Cclica 01

Tarea interrupcin I/O 107

Tarea Cclica 02

Tarea Interrupcin Programada 02

Tarea Cclica 31
Soporte Tcnico

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
cclica 00

Tarea
cclica 01

Programa A
00-01-03

Soporte Tcnico

Tarea
cclica 02

Programa B
00-02-03

20

Tarea
cclica 03

Tarea cclica

Se pueden programar 32 tareas cclicas

0031.
Estas tareas se ejecutan por orden de
numeracin: La tarea 00 es la inicial, luego la
01, ... hasta la 31 que es la ltima.
Cada una de estas tareas acaba con la
instruccin 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 Tcnico

21

CX-Programer

Se pueden utilizar dos clases de smbolos


(variables):

Globales:
Sirven para todas las tareas (cclicas y de
interrupcin) y no se pueden duplicar los nombres.
Son nicas para cada PLC.

Locales:
Slo tienen validez en la tarea donde se han
creado, bien sea cclica o de interrupcin.
Estas variables se pueden repetir en otras tareas,
pero nunca en la misma tarea.
Soporte Tcnico

22

Control de Tareas

Existen dos tipos de tareas:

Tareas cclicas: Se ejecutan segn est su flag


de ejecucin TK00 a TK31. Una vez por ciclo
de scan y en orden segn su nmero de tarea.
Tareas de interrupcin: Se ejecutan cuando se
cumple la condicin de interrupcin,
independientemente del ciclo de scan.

Para controlar qu tareas cclicas se

ejecutan en un ciclo de scan se utilizan las


instrucciones TKON(820) y TKOF(821).

Soporte Tcnico

23

TKON (820)

Permite que se ejecute la tarea cclica,

pone a 1 el flag de la tarea TK00 a TK31.


Slo se puede ejecutar esta instruccin
desde una tarea cclica, de otro modo da
un error ER a 1.
TKON(820)

@TKON(820)

Soporte Tcnico

24

TKON(820)

N: debe ser una constante comprendida

entre #0 y #31. Debe Existir la tarea N.


Si la instruccin TKON(820) es ejecutada
desde la tarea cclica m, la tarea N se
ejecutar segn:

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

instruccin TKON(820) que activa la tarea N


se trata como NOP(000).

Soporte Tcnico

25

TKOF (821)

Pone en stand by la tarea cclica, pone a 0

el flag de la tarea TK00 a TK31.


Se puede ejecutar esta instruccin desde
una tarea cclica o desde una tarea de
interrupcin.
TKOF(821)

@TKOF(821)

Soporte Tcnico

26

TKOF(821)

N: debe ser una constante comprendida

entre #0 y #31. Debe existir la tarea N.


Si la instruccin TKOF(821) es ejecutada
desde la tarea cclica m, la tarea N se
pondr en stand by segn:

m<N: en el mismo ciclo de scan.


m>N: en el siguiente ciclo de scan.

Soporte Tcnico

27

TKON TKOF Ejemplo


Las tareas cclicas 00 y 03 estn 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 Tcnico

28

Interrupciones
Control de interrupciones

Soporte Tcnico

29

Control de Interrupciones

Existen 4 tipos de interrupciones:

Fallo de alimentacin (Tarea Int. 1)


Programadas en el tiempo (Tareas Int. 2, 3)
Unidades de interrupcin 03 (Tareas Int. 100131)
Entradas externas (Tareas Int. 0 255)

La interrupcin de fallo de alimentacin no

se puede controlar mediante instrucciones.


Las instrucciones para controlar
interrupciones son:
MSKS(690), MSKR(692), CLI(691), EI(694), DI(693)

Soporte Tcnico

30

MSKS(690)

Enmascarar interrupciones:

Unidades de interrupcin (ON/OFF).


Programadas en el tiempo (tiempo/OFF).

N:Identificador de interrupcin(#0#5).
S:Datos de enmascaramiento o de
temporizacin.

MSKS(690)
N
S
Soporte Tcnico

@MSKS(690)
N
S
31

MSKS(690) - N y S

Explicacin de los parmetros N y S


N: Constante #0#5
S: Valor constante o de cualquier rea de datos
excepto Registro ndice.
N

Entrada

Unidad interrupcin 0 Bits 07 mscara de interrupcion 100107

Unidad interrupcin 1 Bits 07 mscara de interrupcion 108115

Unidad interrupcin 2 Bits 07 mscara de interrupcion 116123

Unidad interrupcin 3 Bits 07 mscara de interrupcion 124131

Programada 2

Programada 3

Soporte Tcnico

0000: Enmascarar interrupcin.


0001270F: Intervalo de interrupcin.

32

MSKS(690)- N y S

N es la entrada de interrupcin:
Unidad de interrupcin (0,1,2,3).
Interrupcin programada (2, 3).

Los valores 1 de S enmascaran las tareas

de interrupcin asociadas a la entrada N.


Si N es 4 5 se tratan de tareas de
interrupcin 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 interrupcin.

Soporte Tcnico

33

MSKS(690) Ejemplo
MSKS(690)
#0
#00FE

Desenmascara la entrada 0 de la unidad


de interrupcin 0.

MSKS(690)
#4
#0000

Enmascara la tarea de interrupcin


programada 2.

MSKS(690)
#5
#03E8

Sita el intervalo de la tarea de interrupcin


programada 3 a 10 s (Tiempo 10 ms).

Soporte Tcnico

34

MSKR(692)

Lee los parmetros de la interrupcin

introducidos con la instruccin anterior


MSKS(690).
N: Identificador de interrupcin. 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 Tcnico

@MSKR(692)
N
D
35

CLI(691)

Borra o retiene(guarda) las interrupciones

acumuladas o programa el intervalo de las


interrupciones programadas.
Esta instruccin se usa para controlar las
interrupciones simultneas.
N y S tienen el mismo significado que en
MSKS(690).
CLI(691)
N
S

Soporte Tcnico

@CLI(692)
N
S
36

CLI(691)

Cuando se estn ejecutando interrupciones

encadenadas, es posible guardar las


interrupciones menos prioritarias que haba
antes de la actual (ms prioritaria).
No se registrarn las nuevas interrupciones
de una tarea de interrupcin si est
guardada con la instruccin CLI(691).
Para las interrupciones programadas se les
puede asignar otro intervalo para que no
interfieran con la actual.

Soporte Tcnico

37

CLI(691) Ejemplo

CLI(691)
#2
#0048

Resetea las entradas grabadas 3 y 6 de la


unidad de interrupcin 2.
Entrada
7654 3210
0000 0000 0100 1000

CLI(690)
#5
#1388

Sita el intervalo de la tarea de interrupcin


programada 3 a 50 s (Tiempo 10 ms).

Soporte Tcnico

38

DI(693)

Deshabilita la ejecucin de todas las tareas

de interrupcin, excepto la de Fallo de


alimentacin.
No se puede ejecutar en tareas de
interrupcin.
DI(693)

Soporte Tcnico

@DI(693)

39

EI(694)

Habilita la ejecucin de todas las tareas de

interrupcin, que fueron deshabilitadas con


la instruccin DI(693).
No se puede ejecutar en tareas de
interrupcin.
EI(694)

Soporte Tcnico

@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 Tcnico

41

Ejemplo Interrupciones

Seguidamente se muestra un ejemplo de


tareas de interrupciones de:

Fallo de alimentacin (Int. 1)


Interrupcin programada (Int. Prog. 2)
Interrupcin de unidad de interrupcin (Int. 100)
Interrupcin de una COMBOARD (Int. 15)

Se muestra el programa y los cambios que


son necesarios en el PC-SETUP.

Soporte Tcnico

42

Ejemplo Interrupciones 1
Tarea principal: Tarea cclica 00
A200.11
First Cycle

MSKS(690)
4
&1000
MSKS(690)
0
#00FE

Tiempo de Interrupcin programada 02 es de:


1000 x 10ms = 10s
Desenmascara la Entrada 0 de la Unidad de Interrupcin 0

Programa principal de la tarea 00

END(001)

Soporte Tcnico

43

Ejemplo Interrupciones 2
Tarea Interrupcin de fallo de alimentacin:
Es necesario desde PC-SETUP (consola 255):
Habilitar la interrupcin
Tiempo de deteccin de fallo de alimentacin

CF113
P_On

++(590)
D00000

DM00000 cuenta las veces que ha ocurrido


un fallo de alimentacin

END(001)

Soporte Tcnico

44

Ejemplo Interrupciones 3
Tarea Interrupcin 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 interrupcin programada 02

END(001)

Soporte Tcnico

45

Ejemplo Interrupciones 4
Tarea Interrupcin 100:
Es la tarea de interrupcin de la Entrada 0 de la unidad de
interrupcin 0.

CF113
P_On

++(590)
D00020

DM00020 cuenta las veces que se ha ejecutado


la tarea de interrupcin 100

END(001)

Soporte Tcnico

46

Ejemplo Interrupciones 5
Tarea Interrupcin 15:
Es necesario asignar el nmero de interrupcin
en la unidad que provoca la interrupcin.
CF113
P_On

++(590)
D00030
PMCR(260)
#11E1
#1
D00100
D00200

DM00030 cuenta las veces que se ha ejecutado


la tarea de interrupcin 15

Devuelve un mensaje segn un protocolo de la COMBOARD

END(001)

Soporte Tcnico

47

Temporizadores
Nuevos temporizadores

Soporte Tcnico

48

Temporizadores

Tiene 4.096 temporizadores y 4.096

contadores independientes entre s, en dos


reas.
T0000 T4095
C0000 C4095

Prestar atencin 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 alimentacin o pasar a
PROGRAM.

Soporte Tcnico

49

CNR(545)

Resetea los contadores o temporizadores


dentro del rango N1 - N2.

N1: Direccin inicial del rango.


N2: Direccin 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 Tcnico

50

TMHH(540)

Temporizador de 1ms. Temporiza S


milisegundos.

N: Nmero de temporizador.
S: Tiempo.

El PV y el flag de finalizacin se refrescan


cada 1ms.

TMHH(540)
N
S
Soporte Tcnico

51

TIML(542)

Temporizador de 9999 999.9 segundos.


D1: Flag de Finalizacin.
D2: Primera palabra del PV.
S: Primera palabra de SV.

No necesita nmero de temporizador, por

eso en necesario reservar palabras para el


PV y el flag de finalizacin.
TIML(540)
D1
D2
S

Soporte Tcnico

52

TIML(542)
D1

0000 0000 0000 000 1


Flag de finalizacin

D2+1

D2

Valor actual del temporizador PV

S+1

Tiempo total SV debe estar entre 0 y 9999 9999

D2 y S deben estar en BCD.


El PV y el flag de finalizacin estn en reas de datos, por tanto se
refrescan
cada vez que se ejecuta la instruccin.
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 Tcnico

53

MTIM(543)

Temporizador incremental de 0.1s y 8


salidas.

D1: Palabra de flags de finalizacin.


D2: Palabra del PV.
S: Primera palabra de los SV.

No utiliza nmero de temporizador.


MTIM(543)
D1
D2
S
Soporte Tcnico

54

MTIM(543)
D1

0000 00 0 0 1 1 1 1 1 1 1 1
Flags de finalizacin 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 Tcnico

Flag de finalizacin 1
Flag de finalizacin 2
55

Bloques de Programa
En mnemnico

Soporte Tcnico

56

Bloque de Programa

Conjunto de instrucciones que se ejecutan

bajo una misma condicin de ejecucin.


Se pueden hacer hasta 128 bloques de
programa.
Slo se pueden utilizar una vez.
Los bloques de programa que no se
ejecutan no consumen tiempo de ejecucin.
Las instrucciones se escriben en
mnemnico.

Soporte Tcnico

57

Bloque de Programa

La nica instruccin que se programa en

diagrama de contactos es BPRG(096). El


resto se inserta en un bloque de programa
en mnemnico.
La ltima instruccin del bloque debe ser
BEND.
No se pueden evaluar condiciones dentro
de un bloque de programa, excepto en
instrucciones especiales (IF).

Soporte Tcnico

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 Tcnico

59

BPRG(096) y BEND(801)

BPRG(096): Comienzo del bloque de


programa n.

n: nmero de bloque de programa (0n127).

BEND(801): ltima instruccin del bloque


de programa en mnemnico.
BPRG(096)
n

Soporte Tcnico

60

BPPS(811) y BPRS(812)

BPPS(811): Para la ejecucin del bloque

de programa N desde otro bloque de


programa.
BPRS(812): Reanuda la ejecucin del
bloque de programa N desde otro bloque
de programa.
N: Nmero de bloque de programa (0n127).

Soporte Tcnico

61

IF(802), ELSE(803), IEND(804)

IF (NOT): Puede llevar operando B o

utilizar una condicin de ejecucin anterior.


ELSE: Se ejecuta si no es cierta la
condicin de la instruccin IF.
IEND: Final de la instruccin IF.
Se pueden anidar hasta 254 IFs.
IF

IF
A
ELSE
B
IEND

SI
Se ejecuta A
IEND

Soporte Tcnico

NO

62

Se ejecuta B

EXIT(806), EXIT NOT(806)

Sale del bloque de programa.


Puede llevar operando o utilizar la

condicin de ejecucin anterior.


EXIT sale si la condicin 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 Tcnico

0.01
ON

B
C

C
63

WAIT(805), WAIT NOT(805)

Para la ejecucin del resto del bloque de

programa hasta que cambia la condicin


de ejecucin.
Puede llevar operando o utilizar la
condicin de ejecucin anterior.
0.01
OFF
LD 0.00
BPRG #1
A
WAIT 0.01
B
BEND
C

Soporte Tcnico

0.01
OFF

0.01
ON

A
B
C

64

TIMW(813)

Retrasa la ejecucin del resto del bloque

hasta que se cumpla el tiempo especificado


en SV del temporizador N.
N: Nmero de temporizador (0N4095).
SV: Tiempo a contar (0SV999.9s).
1 seg.
LD 0.00
BPRG #1
A
TIMW #1 &10
B
BEND
C

Soporte Tcnico

A
B
C

65

TIMHW(815)

Retrasa la ejecucin del resto del bloque

hasta que se cumpla el tiempo especificado


en SV del temporizador rpido N.
N: Nmero de temporizador (0N4095).
SV: Tiempo a contar (0SV99.99s).
1 seg.
LD 0.00
BPRG #1
A
TIMHW #1 &100
B
BEND
C

Soporte Tcnico

A
B
C

66

CNTW(814)

Retrasa la ejecucin del resto del bloque

hasta que se la cuenta de I llegue a SV del


contador N.
N: Nmero de contador (0N4095).
SV: Pulsos a contar (0SV9999).
I: Entrada de pulsos a contar.
100
LD 0.00
BPRG #1
A
CNTW #1 &100 0.01
B
BEND
C

Soporte Tcnico

A
B
C

67

LOOP(809), LEND(810) NOT

Repiten una serie de instrucciones entre

LOOP y LEND (LEND NOT) hasta que la


condicin de LEND sea cierta.
LEND puede llevar operando o utilizar la
condicin de ejecucin anterior.
Dentro de un lazo LOOP no se refrescan las
salidas. Utilizar IOREF(184).
Puede sobrepasar el tiempo mximo de
ciclo y dar un error.
No se puede anidar LOOP dentro de otro.

Soporte Tcnico

68

LOOP(809), LEND(810) NOT

0.01
ON
LD 0.00
BPRG #1
A
LOOP
B
LEND 0.01
C
BEND

Soporte Tcnico

0.01
OFF

0.01
OFF

0.01
OFF

0.01
ON

B
C

69

Tablas de datos
Tablas basadas en pilas
Tablas basadas en registros

Soporte Tcnico

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 Tcnico

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 ms antiguo) o en orden
LIFO (el ms nuevo).
Las 4 primeras palabras de la tabla estn
reservadas para la direccin de la ltima
palabra y la direccin a la que apunta el
puntero.

Soporte Tcnico

72

SSET(630)

Define una pila (stack) de:


TB: Primera direccin de la tabla.
N: N de palabras.

Las dos primeras palabras TB y TB+1

contienen la direccin de la ltima palabra


de la tabla. Las dos siguientes contienen la
direccin donde apunta el puntero.
Resetea todos los registros de la tabla a 0.
SSET(630)
TB
N

Soporte Tcnico

@SSET(630)
TB
N
73

SSET(630) Ejemplo
SSET(630)
D00000
&10

Soporte Tcnico

D00000
D00001
D00002
D00003
D00004
D00005
D00006
D00007
D00008
D00009

0009
0001
0004
0001
0000
0000
0000
0000
0000
0000

74

ltima direccin de la tabla


en binario
Direccin donde
apunta el puntero
Puntero

Datos

PUSH(632)

Escribe una palabra en la pila, en la

direccin donde apunta el puntero e


incrementa en uno la direccin del puntero.
TB: Direccin de la pila.
S: Palabra a escribir.

Cuando el puntero llega al final de la tabla,


no se ejecuta.

PUSH(632)
TB
S

Soporte Tcnico

@PUSH(632)
TB
S

75

PUSH(632) Ejemplo
@PUSH(632)
Escribe 9012 en la tabla que empieza en D00000
D00000
direccin donde punta el puntero D00006.
#9012
D00000
D00001
D00002
D00003
D00004
D00005
D00006
D00007
D00008
D00009
Soporte Tcnico

0009
0001
0006
0001
1234
5678
9012
0000
0000
0000
76

ltima direccin de la tabla


en binario
Direccin donde
apunta el puntero
Tabla
Puntero
Puntero + 1

FIFO(633)

First In First Out.


Lee la primera palabra escrita en la pila (la
ms antigua),la escrita en TB+4. Sube
todos los datos de la pila una palabra y
decrementa en uno el puntero.
TB: Direccin de la pila.
D: Palabra destino de la lectura.
FIFO(633)
TB
D
Soporte Tcnico

@FIFO(633)
TB
D
77

FIFO(633) Ejemplo
FIFO(633)
D00000
W000
D00000
D00001
D00002
D00003
D00004
D00005
D00006
D00007
D00008
D00009
Soporte Tcnico

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 direccin de la tabla


en binario
Direccin 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: Direccin de la pila.
D: Palabra destino de la lectura.

LIFO(634)
TB
D

Soporte Tcnico

@LIFO(634)
TB
D

79

LIFO(364) Ejemplo
LIFO(634)
D00000
W000
D00000
D00001
D00002
D00003
D00004
D00005
D00006
D00007
D00008
D00009
Soporte Tcnico

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 direccin de la tabla


en binario
Direccin donde
apunta el puntero
Puntero - 1
Tabla

Tablas de registros

Se pueden guardar hasta 16 tablas 015.


Un registro puede contener ms de una

palabra.
Se usan en combinacin con los registros
ndice IR0IR15.
Para trabajar con tablas es necesario
definirlas primero con DIM(631).

Soporte Tcnico

81

DIM(631)

Crea una tabla en el rea de memoria de:

N: Nmero de tabla.
LR: Longitud de cada registro.
NR: nmero de registros.
TB: Direccin del primer registro de la tabla.
DIM(631)
N
LR
NR
TB

Soporte Tcnico

@DIM(631)
N
LR
NR
TB
82

DIM(631) Ejemplo
@DIM(631)
&12
&5
&3
D00000

Tabla nmero 12
Registros de 5 palabras
3 Registros
Empieza en la direccin D00000
D00000
D00004
D00005

Registro 1

5 Palabras

Registro 2

5 Palabras

Registro 3

5 Palabras

D00009
D00010
D00014
Soporte Tcnico

83

SETR(635)

Escribe la direccin del registro nmero R


de la tabla nmero N en el registro ndice
D.
N: Nmero de tabla (constante).
R: Nmero de registro.
D: Registro ndice.
SETR(635)
N
R
D
Soporte Tcnico

@SETR(635)
N
R
D
84

SETR(635) Ejemplo
@SETR(635)
&12
&2
IR11

Tabla 12
Registro 2

Tabla 12
D00000

IR11

D00005

D00004
D00005

Registro 1

5 Palabras

Registro 2

5 Palabras

Registro 3

5 Palabras

D00009
D00010
D00014
Soporte Tcnico

85

GETR(636)

Escribe en D el nmero de registro de la

tabla N cuya direccin est guardada en el


registro ndice IR.
N: Nmero de tabla (constante).
IR: Nmero de registro.
D: Palabra donde se guarda el nmero de registro.
GETR(636)
N
IR
D

Soporte Tcnico

@GETR(636)
N
IR
D
86

GETR(636) Ejemplo
@GETR(636)
&12
IR11
W000

Tabla 12
Registro ndice 11
N de registro
D00000

IR11
W000

D00005
0002

D00004
D00005

Registro 1

5 Palabras

Registro 2

5 Palabras

Registro 3

5 Palabras

D00009
D00010
D00014

Soporte Tcnico

Tabla 12

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 direccin de la palabra

que coincide y en DR00 el nmero de


coincidencias.
SRCH(181)
@SRCH(181)
C
R1
Cd

Soporte Tcnico

88

C
R1
Cd

SRCH(181)
C
C+1

Nmero de palabras
en el rango

X 000 0000 0000 0000

0: No muestra el nmero de coincidencias DR00 intacto.


1: Muestra el nmero de coincidencias en DR00.
R1
Rango de bsqueda
R1+(C-1)
Soporte Tcnico

89

SRCH(181) Ejemplo
@SRCH(181)
W000
D00100
W002

W000
W001
D00100
D00101
D00102
D00103
D00104
D00105
D00106
D00107
D00108
D00109

Soporte Tcnico

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 mximo 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 direccin de la palabra


que coincide y en D el valor mximo.
MAX(182)
C
R1
D
Soporte Tcnico

@MAX(182)
C
R1
D
91

MAX(182)
C
C+1

Nmero de palabras
en el rango

X Y 00 0000 0000 0000

0: No muestra la direccin en IR00.


1: Muestra la direccin en IR00.
0: Datos en binario sin signo.
1: Datos en binario con signo.
R1
Rango de bsqueda
R1+(C-1)
Soporte Tcnico

92

MAX(182) Ejemplo
@MAX(182)
W000
D00100
W002

W000
W001
D00100
D00101
D00102
D00103
D00104
D00105
D00106
D00107
D00108
D00109

Soporte Tcnico

000A 10 Palabras
C000 Binario con signo
Guarda la direccin en IR00

1234
6589
8778
5569
3365
1234
1254
3365
5698
3365

IR00 D00101
W002
6589

93

MIN(183)

Busca el mnimo 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 direccin de la palabra


que coincide y en D el valor mnimo.
MIN(183)
C
R1
D
Soporte Tcnico

@MIN(183)
C
R1
D
94

MIN(183)
C
C+1

Nmero de palabras
en el rango

X Y 00 0000 0000 0000

0: No muestra la direccin en IR00.


1: Muestra la direccin en IR00.
0: Datos en binario sin signo.
1: Datos en binario con signo.
R1
Rango de bsqueda
R1+(C-1)
Soporte Tcnico

95

MIN(183) Ejemplo
@MIN(183)
W000
D00100
W002

W000
W001
D00100
D00101
D00102
D00103
D00104
D00105
D00106
D00107
D00108
D00109

Soporte Tcnico

000A 10 Palabras
C000 Binario con signo
Guarda la direccin en IR00

1234
6589
8778
5569
3365
1234
1254
3365
5698
3365

IR00 D00101
W002
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: Nmero de palabras del rango.
R1: Primera palabra del rango.

SWAP(637)
N
R1

Soporte Tcnico

@SWAP(637)
N
R1

97

SWAP(637) Ejemplo
@SWAP(637)
&6
D00100
D00100
D00101
D00102
D00103
D00104
D00105

Soporte Tcnico

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 Tcnico

99

Cadenas de caracteres

Las cadenas de caracteres, son tratadas

como cdigo ASCII de 8 bits.


Se considera que pertenece a una cadena
de caracteres todos los datos que hay
desde la direccin inicial hasta que
encuentra el cdigo NUL (00 HEX).
Las cadenas se leen byte izquierdo, byte
derecho y de menor a mayor direccin.
La longitud mxima de caracteres es de
4.095 + el carcter NUL.

Soporte Tcnico

100

LEN$(650)

Calcula la longitud de la cadena de la


posicin S (hasta NUL) y guarda el
resultado en D.
S: Primera palabra de la cadena.
D: Posicin donde guarda el resultado.

La longitud mxima es de 4.095 bytes.


LEN$(650)
S
D

Soporte Tcnico

@LEN$(650)
S
D

101

LEN$(650) Ejemplo
@LEN$(664)
W000
W100
S
W000 O M
W001 R O
W002 N

Soporte Tcnico

W000 4F 4D
W001 52 4F
W002 4E 00

102

D
W000 0006

MOV$(664)

Copia una cadena de caracteres de la

posicin S (hasta NUL) a la D. Tambin


copia el carcter NUL.
S: Primera palabra de la cadena a copiar.
D: Posicin donde se copia la cadena.

La longitud mxima es de 4.095 bytes.


MOV$(664)
S
D

Soporte Tcnico

@MOV$(664)
S
D

103

MOV$(664) Ejemplo
@MOV$(664)
W000
W100
S
W000 O M
W001 R O
W002 N

Soporte Tcnico

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: Posicin donde se copia la cadena.

La longitud mxima es de 4.095 bytes.


+$(656)
S1
S2
D
Soporte Tcnico

@+$(656)
S1
S2
D
105

+$(656) Ejemplo
@+$(656)
W000
W100
D00000
S1
W000 4F 4D
W001 52 4F
W002 4E 00
OMRON

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 Tcnico

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: Nmero de caracteres a recuperar.
D: Posicin donde se copia la cadena.

La longitud mxima es de 4.095 bytes.


LEFT$(652)
S1
S2
D
Soporte Tcnico

@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

4D
4F
20
50
49
00

D00000 4F 4D
D00001 52 4F
D00002 4E 00
OMRON

OMRON SPAIN
Soporte Tcnico

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: Nmero de caracteres a recuperar.
D: Posicin donde se copia la cadena.

La longitud mxima es de 4.095 bytes.


RGHT$(653)
S1
S2
D
Soporte Tcnico

@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

4D
4F
20
50
49
00

D00000 53 50
D00001 41 49
D00002 4E 00
SPAIN

OMRON SPAIN
Soporte Tcnico

110

MID$(654)

Recupera la cadena de S2 caracteres de la


cadena S1 empezando en el carcter
nmero S3 y guarda el resultado en D.

S1: Primera palabra de la cadena.


S2: Nmero de caracteres a recuperar.
S3: Posicin inicial de la cadena S1.
D: Posicin donde se copia la cadena.
MID$(654)
S1
S2
S3
D

Soporte Tcnico

@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

4D
4F
20
50
49
00

D00000 4F 4E
D00001 20 53
D00002 50 00
ON SP

OMRON SPAIN
Soporte Tcnico

112

FIND$(660)

Busca la cadena S2 en la S1 y guarda el

nmero de carcter desde el principio de


S1 en D.
S1: Primera palabra de la primera cadena.
S2: Primera palabra de la segunda cadena.
D: Posicin donde se guarda el N de carcter.
FIND$(660)
S1
S2
D

Soporte Tcnico

@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 Tcnico

114

D
W000 0006

RPLC$(661)

Reemplaza S3 caracteres de S2 desde


S4 en la cadena S1 y la escribe en D.

Soporte Tcnico

S1: Primera palabra de la primera cadena.


S2: Primera palabra de la segunda cadena.
S3: Nmero de caracteres.
S4: Posicin inicial.
D: Posicin donde se guarda el N de carcter.
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 Tcnico

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: Nmero de caracteres a borrar.
S3: Posicin para borrar de la cadena S1.
D: Posicin donde se guarda la cadena.
DEL$(658)
S1
S2
S3
D

Soporte Tcnico

@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

4D
4F
20
50
49
00

W100
W101
W102
W102
W102
W102

4D
4F
00
00
00
00

OMRON

OMRON SPAIN
Soporte Tcnico

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 mxima es de 4.095 bytes.


Ex1 y Ex2 no se pueden solapar.
XCHG$(665)
Ex1
Ex2

Soporte Tcnico

@XCHG$(665)
Ex1
Ex2

119

XCGH$(665) Ejemplo
@XCHG$(665)
W000
W100
Ex1

Ex2

W000 4F 4D
W001 52 4F
W002 4E 00

Soporte Tcnico

W100 4F 4D
W101 52 4F
W102 4E 00

120

CLR$(666)

Borra la cadena S. Escribe el carcter NUL


en toda la cadena S.

S: Primera palabra de la cadena a borrar.

CLR$(666)
S

Soporte Tcnico

@CLR$(666)
S

121

CLR$(666) Ejemplo
@CLR$(666)
W000

W000 4F 4D
W001 52 4F
W002 4E 00

Soporte Tcnico

W100 00 00
W101 00 00
W102 00 00

122

INS$(657)

Inserta S2 en S1 a partir del carcter


N S3 y la escribe en D.

S1: Primera palabra de la primera cadena.


S2: Primera palabra de la segunda cadena.
S3: Nmero de caracteres.
D: Posicin donde se guarda el N de carcter.
INS$(657)
S1
S2
S3
D

Soporte Tcnico

@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 Tcnico

D00100
D00101
D00102
D00103
D00104
D00105

4F
52
4E
53
41
4E

4D
4F
20
50
49
00

OMRON SPAIN
124

Comparacin de cadenas

Se pueden comparar dos cadenas de


caracteres en cdigo 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 Tcnico

125

Comparacin 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 Tcnico

126

Comparacin Ejemplo
0000.00

LD

=$(670)
D00000
W000
0000.01

0001.01

AND

<$(672)
D00000
W000
0000.02

0001.02

OR

>$(674)
D00000
W000
Soporte Tcnico

127

Saltos
Saltos condicionales

Soporte Tcnico

128

Saltos
Tabla comparativa de los saltos y los saltos condicionales.

Condicin
N mximo
Tiempo ejecucin
Estado de salidas
Temporizadores
Bloques de programas

Soporte Tcnico

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 lmite
No se ejecutan
NOP(000)
Bits y palabras mantienen su estado anterior
Continan temporizando
Siempre ON
OFF
No permitido

129

CJP(510)/CJPN(511)

CJP(510): Salta hasta el primer JME(005)

cuando la condicin de ejecucin es ON.


CJPN(511): Salta hasta el primer JME(005)
cuando la condicin de ejecucin es OFF.
N: Nmero de salto.

Las instrucciones intermedias no se


ejecutan. No consumen tiempo.
CJP(510)
N
Soporte Tcnico

CJPN(511)
N
130

JME(005)
N

JMP0(515)/JME0(516)

Salta hasta JME0 cuando la condicin de

ejecucin es OFF.
Las instrucciones intermedias se ejecutan
como NOP(000).
Se pueden poner tantas como se quiera,
no hay lmite.
JMP0(515)

Soporte Tcnico

JME0(516)

131

Instrucciones de lazo
FOR, NEXT, BREAK

Soporte Tcnico

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 Tcnico

133

FOR(512) y NEXT(513)

Las instrucciones que hay entre FOR y


NEXT se ejecutan N veces dentro del
mismo ciclo.
N: Nmero de veces que se repiten las
instrucciones.
FOR(512)
S
Instrucciones
repetidas
N veces
NEXT(513)
Soporte Tcnico

134

FOR(512) y NEXT(513)

Estas instrucciones no necesitan una

condicin de ejecucin. 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 Tcnico

135

FOR(512) y NEXT(513)
FOR(512)
&3

Las instrucciones se
ejecutan segn el orden
ABBC-ABBC-ABBC

A
FOR(512)
&2
B
NEXT(513)
C
NEXT(513)
Soporte Tcnico

136

FOR-NEXT Ejemplo
FOR(512)
&3
MOV(021)
D00100
@D00200

Transfiere el contenido de D00100


a la direccin almacenada en D00200
e incrementa la direccin.

D00100
D00100

++
D00200
NEXT(513)
Soporte Tcnico

MOV

D00100

D00100
D00200

137

#0000

BREAK(514)

Salta a la siguiente instruccin NEXT y

finaliza el bucle FOR-NEXT actual.


En el caso de bucles FOR-NEXT anidados,
es necesario una instruccin BREAK para
cada bucle.
Las instrucciones siguientes hasta el
prximo NEXT se tratan como NOP.
BREAK(514)

Soporte Tcnico

138

FOR, NEXT y BREAK


FOR(512)
&5
A
BREAK(514)
C
NEXT(513)

Soporte Tcnico

139

Desplazamiento
y rotacin
De todos o N bits en una y dos
palabras

Soporte Tcnico

140

Desplazamiento y rotacin

Desplazamiento
Rotacin
Rotacin sin
Carry

Soporte Tcnico

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 Tcnico

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 Tcnico

@NASL(580)
D
C

143

NASL(580) ejemplo
C: Palabra de control.
15

12

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 Tcnico

1011000110011111

CY
1

0001100111110000

144

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 Tcnico

@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 Tcnico

@NASR(581)
D
C

146

NASR(581) ejemplo
C: Palabra de control.
15

12

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 Tcnico

1011000110011111

0000101100011001

147

CY
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 Tcnico

@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: Nmero de bits a desplazar.

Los bits anteriores a C o posteriores a C+N


no cambian.

NSFL(578)
D
C
R
Soporte Tcnico

@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: Nmero de bits a desplazar.

Los bits anteriores a C+N o posteriores a C


no cambian.

NSFL(578)
D
C
R
Soporte Tcnico

@NSFL(578)
D
C
R
150

NSFL NSFR ejemplo


NSFL(578)
0100
&3
&11

Bits 3 a 12
1011000110011111

CY
1

1010001100110111

Bits 3 a 12

NSFR(579)
0100
&3
&11

Soporte Tcnico

1011000110011111

CY
1010100011001111

151

Incrementar Decrementar
Autoincremento y Autodecremento

Soporte Tcnico

152

++(590) ++L(591)

++ incrementa en binario la palabra de 4

dgitos Wd en una unidad.


++L incrementa en binario la palabra de 8
dgitos Wd en una unidad.
Wd: Palabra a incrementar
++(590)
Wd

@++(590)
Wd

++L(591)
Wd

@++L(591)
Wd

Soporte Tcnico

153

--(592) --L(593)

-- decrementa en binario la palabra de 4

dgitos Wd en una unidad.


--L decrementa en binario la palabra de 8
dgitos Wd en una unidad.
Wd: Palabra a incrementar
--(592)
Wd

@--(592)
Wd

--L(593)
Wd

@--L(593)
Wd

Soporte Tcnico

154

Binario Ejemplos
++(590)
D00000

D0
0019 +1

++L(591)
D00000

D0
0019

--(592)
D00000

D0
001A -1

--L(593)
D00000

D0
001A

Soporte Tcnico

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

dgitos Wd en una unidad.


++BL incrementa en BCD la palabra de 8
dgitos Wd en una unidad.
Wd: Palabra a incrementar
++B(594)
Wd

@++B(594)
Wd

++BL(595)
Wd

@++BL(595)
Wd

Soporte Tcnico

156

--B(596) --BL(597)

--B decrementa en BCD la palabra de 4

dgitos Wd en una unidad.


--BL decrementa en BCD la palabra de 8
dgitos Wd en una unidad.
Wd: Palabra a incrementar
--B(596)
Wd

@--B(596)
Wd

--BL(597)
Wd

@--BL(597)
Wd

Soporte Tcnico

157

BCD Ejemplos
++B(594)
D00000
++BL(595)
D00000

--B(596)
D00000
--BL(597)
D00000
Soporte Tcnico

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

Comparacin
=, <, <=, >, >=, <>

Soporte Tcnico

159

Comparacin 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.
Smbolo & Opciones
S1
S2
Soporte Tcnico

160

Comparacin de palabras
Smbolo
=(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 Tcnico

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

Comparacin 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 Tcnico

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 conversin
de datos
SIGN, BINS, BISL, BCDS y BDSL

Soporte Tcnico

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 Tcnico

@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 Tcnico

@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 Tcnico

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 Tcnico

@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 Tcnico

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 instruccin inversa a BINS(470)


BCDS(471)
C
S
R
Soporte Tcnico

@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 instruccin inversa a BINS(470)


BDSL(473)
C
S
R
Soporte Tcnico

@BDSL(473)
C
S
R
170

Limitaciones BCDS y BDSL

En BCDS el dato S est limitada segn 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 segn C:

Soporte Tcnico

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
Nmeros reales en coma flotante.

Soporte Tcnico

172

Nmeros en Coma Flotante

Se pueden expresar los nmeros:


- (e=255, f=0, s=0)
-3.4028231038 -1.17549410-38
0 (e=0)
1.17549410-38 3.4028231038
(e=255, f=0, s=1)
NaN (e=255, f0): Nmero no vlido.

No es necesario conocer el formato de


estos nmeros, slo que ocupan 32
bits.

Soporte Tcnico

173

Precauciones Coma Flotante

Las operaciones indeterminadas 0.0/0.0,

/, - dan como resultado NaN.


Overflow () y Underflow (0). Es ms
peligroso el Overflow al convertir el
resultado a entero (binario con signo).
Los decimales se truncan al convertirlos a
entero (binario con signo).
Cualquier operacin con un NaN como
operando da como resultado NaN.

Soporte Tcnico

174

IEEE754

Expresan nmeros reales en 32 bits


conforme al estndar IEEE754:
f: Mantisa 23 bitsbit 0 al 22
e: Exponente
8 bits
s: Signo
1 bit bit 31

bit 23 al 30

(-1)s2e-127(1+f2-23)
1#10000000#11000000000000000000000

Soporte Tcnico

Signo: (-1)1= -1
Exponente: 2128-127=21=2
Mantisa: 1+62914562-23=1+0.75=1.75
Resultado: -1.752= -3.5
175

Instrucciones Coma Flotante

Se pueden realizar las siguientes:

Conversin: 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,
slo que ocupan 32 bits.

Soporte Tcnico

176

FIX(450)

Convierte un nmero en coma flotante a un


entero (binario con signo) de 16 bits.

S: Primera palabra de nmero 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 Tcnico

@FIX(450)
S
R
177

FIXL(451)

Convierte un nmero en coma flotante a un


entero (binario con signo) de 32 bits.

S: Primera palabra de nmero en coma flotante.


R: Primera palabra donde se guarda el resultado.

La parte decimal es truncada (-3.5 -3)


Rango de -2.147.482.6482.147.482.647.
FIXL(451)
S
R
Soporte Tcnico

@FIXL(451)
S
R
178

FIX, FIXL Ejemplo


FIX(450)
D00000
D00100

D00000 0000000000000000 3.5


D00001 0100000001100000
D00100 0000000000000011 3

FIXL(451)
D00002
D00102

D00002 0000000000000000
-58.720.256
D00003 1100110001100000
D00102 0000000000000000 -58.720.256
D00103 1111110010000000

Soporte Tcnico

179

FLT(452)

Convierte un nmero entero (binario con


signo) de 16 bits en formato de coma
flotante de 32 bits.
S: Palabra del nmero entero.
R: Primera palabra del resultado.

Rango de -32.768 32.767.


FLT(452)
S
R
Soporte Tcnico

@FLT(452)
S
R
180

FLTL(453)

Convierte un nmero entero (binario con


signo) de 32 bits en formato de coma
flotante de 32 bits.
S: Primera palabra del nmero entero.
R: Primera palabra del resultado.

Rango de -2.147.482.6482.147.482.647.
Nmeros > 16.777.215 pierden precisin.
FLTL(453)
S
R
Soporte Tcnico

@FLTL(453)
S
R
181

FLT, FLTL Ejemplo


FLT(452)
D00100
D00000

FLTL(453)
D00102
D00002

Soporte Tcnico

D00000 0000000000000000 3
D00001 0100000001000000
D00100 0000000000000011 3

D00002 0000000000000000
-58.720.256
D00003 1100110001100000
D00102 0000000000000000 -58.720.256
D00103 1111110010000000

182

+F(454)

Suma 2 nmeros 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+nmero=NaN.
+F(454)
Au
Ad
R
Soporte Tcnico

@+F(454)
Au
Ad
R
183

-F(455)

Resta 2 nmeros 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-nmero=NaN, nmero-NaN=NaN.
-F(455)
Mi
Su
R
Soporte Tcnico

@-F(455)
Mi
Su
R
184

+F, -F Ejemplo
D00000
D00001
D00002
D00003
+F(454)
D00000
D00002
D00100
-F(455)
D00000
D00002
D00100
Soporte Tcnico

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 nmeros 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
NaNnmero=NaN.
*F(456)
Md
Mr
R
Soporte Tcnico

@*F(456)
Md
Mr
R
186

/F(457)

Multiplica 2 nmeros 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/nmero=NaN,
nmero/NaN=NaN.
/F(457)
Dd
Dr
R
Soporte Tcnico

187

@/F(457)
Dd
Dr
R

*F, /F Ejemplo
D00000
D00001
D00002
D00003
*F(456)
D00000
D00002
D00100
/F(457)
D00000
D00002
D00100
Soporte Tcnico

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 nmero 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 frmula: Radianes=Grados/180


RAD(458)
S
R

Soporte Tcnico

@RAD(458)
S
R

189

DEG(459)

Convierte un nmero 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 frmula: Grados=Radianes180/


DEG(459)
S
R

Soporte Tcnico

@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 Tcnico

/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 Tcnico

@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 Tcnico

@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 Tcnico

@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 Tcnico

195

ASIN(463)

Calcula arco seno de un nmero en coma


flotante (32 bits). El resultado est en
coma flotante.
S:
R:

Primera palabra del nmero (-11).


Primera palabra del ngulo (radianes).

El resultado est entre -/2 y /2.


ASIN(463)
S
R

Soporte Tcnico

@ASIN(463)
S
R

196

ACOS(464)

Calcula arco coseno de un nmero en

coma flotante (32 bits). El resultado est


en coma flotante.
S:
R:

Primera palabra del nmero (-11).


Primera palabra del ngulo (radianes).

El resultado est entre -/2 y /2.


ACOS(464)
S
R

Soporte Tcnico

@ACOS(464)
S
R

197

ATAN(465)

Calcula arco tangente de un nmero en

coma flotante (32 bits). El resultado est


en coma flotante.
S:
R:

Primera palabra del nmero (- ).


Primera palabra del ngulo (radianes).

El resultado est entre -/2 y /2.


ATAN(465)
S
R

Soporte Tcnico

@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 Tcnico

199

SQRT(466)

Calcula la raz cuadrada de un nmero 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 Tcnico

@SQRT(466)
S
R

200

PWR(840)

Eleva un nmero 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)Nracional dan error.


PWR(840)
B
E
R
Soporte Tcnico

@PWR(840)
B
E
R
201

PWR, SQRT Ejemplo


D00000
D00001
D00002
D00003
@SQRT(466)
D00000
D00100
PWR(840)
D00000
D00002
D00100
Soporte Tcnico

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 nmero


en coma flotante (32 bits). El resultado
est en coma flotante.
S:
R:

Primera palabra del exponente (- ).


Primera palabra del resultado (0 ).

e2,718281828459.
El resultado siempre es positivo.
EXP(467)
S
R
Soporte Tcnico

@EXP(467)
S
R
203

LOG(468)

Calcula el logaritmo natural (lnS) de un


nmero 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 Tcnico

@LOG(468)
S
R

204

EXP, LOG Ejemplo


D00000 0000 0000 0000 0000
D00001 0011 1111 1000 0000

@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 Tcnico

205

Instrucciones de calendario
Fecha y hora

Soporte Tcnico

206

Instrucciones de Calendario

La primera vez que se utiliza el PLC es

necesario insertar la batera.


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 instruccin DATE.

Todos los datos se introducen en cdigo


BCD.

Soporte Tcnico

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)

Soporte Tcnico

208

DATE(735)
S

0101 1001 0101 1001


Segundos 00 59
Minutos 00 59
S+1 0011 0001 0010 0011
Hora 00 23
Da 01 31
S+2 1001 1001 0001 1100
Mes 01 12
Ao 00 99
S+3 0000 0000 0000 0110
Da semana 00(Domingo) 06(Sbado)
Siempre 0

Soporte Tcnico

209

DATE(735)
La fecha y hora se guardan en los registros auxiliares:
Direccin

Soporte Tcnico

Contenido

A35100 A35107

Segundos 00 59

A35108 A35115

Minutos 00 59

A35100 A35207

Hora 00 23

A35108 A35215

Da 01 31

A35100 A35307

Mes 01 12

A35108 A35315

Ao 00 99

A35100 A35407

Da Semana 00 06

A35108 A35415

Minutos 00 59
210

DATE(735) Ejemplo
@DATE(735)
D00000
D0000
D0001
D0002
D0003

Soporte Tcnico

15
05
99
00

30
16 16:15:30
05 5 de Mayo de 1.999
04 Mircoles

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 Tcnico

@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
Da 01 31
C+2 1001 1001 0001 1100
Mes 01 12
Ao 00 99
T 0101 1001 0101 1001
Segundos 00 59
Minutos 00 59
T+1 0011 0001 0010 0011
Hora 0000 9999
Soporte Tcnico

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 Tcnico

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 Tcnico

@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
Da 01 31
C+2 1001 1001 0001 1100
Mes 01 12
Ao 00 99
T 0101 1001 0101 1001
Segundos 00 59
Minutos 00 59
T+1 0011 0001 0010 0011
Hora 0000 9999
Soporte Tcnico

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 Tcnico

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 Tcnico

@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

Soporte Tcnico

Segundos 0 35.999.999

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 Tcnico

@HMS(066)
S
D

220

HMS(066)
S 1001 1001 1001 1001
S+1 0011 0101 1001 1001

Segundos 0 35.999.999

0101 1001 0101 1001


Segundos 00 59
Minutos 00 59
R+1 1001 1001 1001 1001
Hora 0000 9999

Soporte Tcnico

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 Tcnico

0001 0111 0011 0110


36 Segundos
17 Minutos
0000 0000 0011 0100
34 Horas

222

Ficheros de Memoria
Lectura / Escritura de ficheros

Soporte Tcnico

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)
Parmetros (.STD)
Memoria (.IOM)
Smbolos (.SYM)
Comentarios (.CMT)

Con instrucciones slo se pueden

Leer/Escribir ficheros de memoria (.IOM).

Soporte Tcnico

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 Tcnico

@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 nmero de palabras

S1+1

S1

S1+3

S1+2

Soporte Tcnico

Nmero 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: Direccin donde se guardan los datos del fichero ledo.


Si se lee el nmero de palabras se almacenan en D y D+1
D+1

Soporte Tcnico

Nmero de palabras del fichero


ledo (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 Tcnico

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 Tcnico

@FWRIT(701)
C
D1
D2
S
229

FWRIT(701)
C 0000 0000 0001 0001
0: Tarjeta de memoria
1: Memoria EM
0: Aadir al final
1: Sobrescribir

D1+1

D1

D1+3

D1+2

Soporte Tcnico

Nmero de palabras de memoria que


se quieren guardar (en hexadecimal).
Palabra del fichero por donde se
empieza a escribir (en hexadecimal)
slo 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 direccin de memoria a guardar en el fichero.


Si se guardan ms palabras de las que hay en ese rea de memoria,
se contina guardando palabras del rea siguiente.
S

Soporte Tcnico

Direccin 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 Tcnico

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 analgicos

Soporte Tcnico

233

LMT(680)

Limita los valores mximo C+1 y mnimo C


de una palabra S.

S: Palabra dato.
C: Primera palabra de los lmites.
D: Palabra donde se guarda el resultado.

LMT(680)
S
C
D

Soporte Tcnico

@LMT(680)
S
C
D

234

LMT(680) Ejemplo
@LMT(680)
D00000
D00001
D00100

D
(binario)

Lmite Superior C+1


S
(binario)
Lmite Inferior C

C:
Lmite inferior
C+1: Lmite superior
El lmite inferior puede ser positivo o negativo.
El lmite superior debe ser mayor que el inferior.
Soporte Tcnico

235

BAND(681)

Crea una banda muerta en el dato de


entrada S.

S: Palabra dato.
C: Primera palabra de los lmites.
D: Palabra donde se guarda el resultado.

BAND(681)
S
C
D

Soporte Tcnico

@BAND(681)
S
C
D

236

BAND(681) Ejemplo
BAND(681)
D00000
D00001
D00100

D
(binario)

Lmite Inferior C

S
(binario)
Lmite Superior C+1

C:
Lmite inferior
C+1: Lmite superior
El lmite inferior puede ser positivo o negativo.
El lmite superior debe ser mayor que el inferior.
Soporte Tcnico

237

ZONE(682)

Crea una zona muerta en el dato de salida


D.

S: Palabra dato.
C: Primera palabra de los lmites.
D: Palabra donde se guarda el resultado.

ZONE(682)
S
C
D

Soporte Tcnico

@ZONE(682)
S
C
D

238

ZONE(682) Ejemplo
ZONE(682)
D00000
D00001
D00100

D
(binario)
Lmite Superior C+1

S
(binario)
Lmite Inferior C

C:
Lmite inferior
C+1: Lmite superior
El lmite inferior puede ser positivo o negativo.
El lmite superior debe ser mayor que el inferior.
Soporte Tcnico

239

SCL2(486)

Convierte una palabra binario con signo en


otra BCD con signo, siguiendo una funcin
lineal. Offset en binario.
S: Palabra dato binario.
P1: Primera palabra de los lmites.
R: Palabra donde se guarda el resultado BCD.
SCL2(486)
S
P1
R

Soporte Tcnico

@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 Tcnico

Offset

Y
X
S
(binario)

241

SCL3(487)

Convierte una palabra BCD con signo S en


otra binario con signo R, siguiendo una
funcin lineal. Offset en BCD.

S: Palabra dato BCD.


P1: Primera palabra de los lmites.
R: Palabra donde se guarda el resultado binario.
SCL3(487)
S
P1
R

Soporte Tcnico

@SCL3(487)
S
P1
R

242

SCL3(487)
P1
P1+1
P1+2
P1+3
P1+4

Offset
X
Y
Lmite superior
Lmite inferior

R
(binario)
Lmite superior

El Offset puede ser


- Positivo
- Negativo
- Cero

Y
X
S
(BCD)

Offset

Lmite inferior

Soporte Tcnico

243

Comunicaciones
Serie y Network
PMCR, SEND, RECV, CMND

Soporte Tcnico

244

Comunicaciones

Incorpora 8 puertos lgicos. Esto permite

gestionar 8 comunicaciones a la vez sin


inferencias.
Puede manejar 16 unidades de
comunicacin (SCU) + 1 tarjeta de
comunicacin 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 Tcnico

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 Tcnico

@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 lgico (07)

C2

0000 0011 1110 0111

n
S1
S2
...

N de palabras a enviar + 1
Palabras a enviar.

n
R1
R2
...

N de palabras recibidas + 1
Palabras recibidas.

Soporte Tcnico

N de secuencia de comunicaciones.

247

PMCR(260) Ejemplo
PMCR(260)
D00000
D00001
D00100
D01000
D00000
D00001

Soporte Tcnico

Ejecuta la secuencia de comunicaciones 1


de la ComBoard.
Utiliza el puerto 1 (puerto fsico).
Ocupa el puerto lgico 0.

0000 0001 1110 0001


0000 0000 0000 0001

248

SEND(090)

Enva 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 Tcnico

@SEND(090)
S
D
C

249

SEND(090)
C
C+1
C+2
C+3

C+4

Soporte Tcnico

Byte bajo 07
Byte alto 815
Nmero de palabras: 0001 hasta el mximo de la red.
Red destino 007F
Puerto serie 0104 (Host Link)
Unidad destino
Nodo destino 00 al mximo
N de reintentos
bits 811: puerto lgico
1215: 0 con respuesta
8 sin respuesta
Tiempo de monitorizacin de la respuesta 0001FFFF (0.16553.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 Tcnico

@RECV(098)
S
D
C

251

RECV(098)
C
C+1
C+2
C+3

C+4

Soporte Tcnico

Byte bajo 07
Byte alto 815
Nmero de palabras: 0001 hasta el mximo de la red.
Red fuente 007F
Puerto serie 0104 (Host Link)
Unidad fuente
Nodo fuente: 00 al mximo
N de reintentos
bits 811: puerto lgico
1215: 0 con respuesta
8 sin respuesta
Tiempo de monitorizacin de la respuesta 0001FFFF (0.16553.5 seg.)

252

CMND(490)

Enva 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 Tcnico

@CMND(490)
S
D
C

253

CMND(490)

C
C+1
C+2
C+3
C+4

C+5

Soporte Tcnico

Byte bajo 07
Byte alto 815
Nmero de Bytes del comando a enviar: 0002 hasta el mximo.
Nmero de Bytes del comando a recibir: 0002 hasta el mximo
Red fuente 007F
Puerto serie 0104 (Host Link)
Unidad fuente
Nodo fuente: 00 al mximo
N de reintentos
bits 811: puerto lgico
1215: 0 con respuesta
8 sin respuesta
Tiempo de monitorizacin de la respuesta 0001FFFF (0.16553.5 seg.)

254

Cambio en Instrucciones
Instrucciones que ya no existen o
han sido modificadas

Soporte Tcnico

255

Instrucciones no soportadas
SCAN
LMSG
TERM
MPRF
XFR2
XDMR
INT
CMCR
DSW
TKY
HKY
MTR
7SEG
Soporte Tcnico

Impone un tiempo mnimo de ciclo de programa.


Muestra un mensaje de 32 bits en la consola de programacin.
Coloca la consola de programacin en modo terminal.
Refresco de unidades de alta densidad.
Transferir bloque EM.
Leer banco de expansin EM.
Gestin de interrupciones.
Macro de la tarjeta PCMCIA.
Entrada de interruptor digital.
Entrada de teclado decimal.
Entrada de teclado hexadecimal.
Entrada de matriz.
Conversin a 7 segmentos.
256

Instrucciones modificadas
FAL/FALS
WSFT
PMCR
MSG
TTIM
SEND/RECV
FCS
SRCH
MAX/MIN
SUM
PID
IORD/IOWR

Soporte Tcnico

Alarma de fallos.
Shift de palabra.
Protocol Macro
Mensaje.
Temporizador totalizador.
Network Enviar y Recibir.
Frame checksum.
Bsqueda.
Encontrar mximo y mnimo.
Suma.
Control PID.
Leer/Escribir unidades I/O especiales.

257

You might also like