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

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

Soporte Tcnico

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 4

Ejemplo de Formatos
% LD 0000.00 Se activa durante un ciclo de programa con el flanco de bajada de 0000.00

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

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

Soporte Tcnico

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 TSTN(351) S N

Soporte Tcnico

TST, TSTN Ejemplo


0010.06
TST(350) DM00000 &6 El bit 6 del DM00000 activa la salida 0010.6

0000.00
TSTN(351) DM00000 &11

0010.04 La salida 0010.04 se activa cuando la entrada 0000.00 est a 1 y el bit 11 del DM0000 est a 0.

Soporte Tcnico

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 @SETA(530) D N1 N2 RSTA(531) D N1 N2 @RSTA(531) D N1 N2

Soporte Tcnico

SETA(530) RSTA(531)
@SETA(530) W000 &4 &36 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

@RSTA(531) W000 &4 &36

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

Soporte Tcnico

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 MOV(21) #1A34 W000 MOV(21) W000 W001 MOV(21) #1A *D00000
Soporte Tcnico

Escribe C (12 traducido a binario) en W000 Inmediato traducido a binario Directo Escribe 1A34 binario en W000 Inmediato binario Directo Escribe el contenido de W000 en W001 Directo Directo Escribe 1A en la direccin(BCD)indicada en D00000 Inmediato Indirecto BCD
12

Ejemplos
MOV(21) W000 @D00000 MOV(21) #1A ,IR0 MOV(21) #1A +23,IR0 MOV(21) #1A DR0,IR0
Soporte Tcnico

Escribe el contenido de W000 en la direccin (Binaria) indicada en D00000 Directo Indirecto Binario Escribe 1A en la direccin indicada en IR0 Inmediato Indexado Escribe 1A en la direccin indicada en (IR0+23) Inmediato Indexado Escribe 1A en la direccin indicada en (IR0+DR0) Inmediato Indexado
13

Ejemplos
MOV(21) #1A ,IR0+ MOV(21) #1A ,IR0++ MOV(21) #1A ,-IR0 MOV(21) #1A ,--IR0
Soporte Tcnico

Escribe 1A en la direccin indicada en IR0 y aumenta IR0 una unidad Inmediato Indexado 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 Escribe 1A en la direccin 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 direccin.

MOVR(560) S D

@MOVR(560) S D

Soporte Tcnico

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 @MOVRW(561) S D

Soporte Tcnico

16

MOVR(560) MOVRW(561)
MOVR(560) T0000 IR0
Guarda el Valor presente PV del temporizador T0000 en el registro ndice IR0

IR0

0000 0195

MOVRW(561) T0000 IR0

Guarda el nmero de temporizador T0000 en el registro ndice IR0

Soporte Tcnico

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 Tarea cclica 02 Tarea cclica 03

Programa A 00-01-03

Programa B 00-02-03

Soporte Tcnico

20

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

Soporte Tcnico

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) N @TKON(820) N

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:

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

m<N: en el mismo ciclo de scan. m>N: en el siguiente ciclo de scan.

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) N @TKOF(821) N

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 TKOF(821) 2 Cuando la entrada 0000.00 est a uno se ejecuta el programa A con las tareas 00, 01, 03.

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: N:Identificador de interrupcin(#0#5). S:Datos de enmascaramiento o de


temporizacin.
MSKS(690) N S
Soporte Tcnico

Unidades de interrupcin (ON/OFF). Programadas en el tiempo (tiempo/OFF).

@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 0 1 2 3 4 5 Entrada S 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 0000: Enmascarar interrupcin. 0001270F: Intervalo de interrupcin.

Soporte Tcnico

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

Soporte Tcnico

MSKS(690) Ejemplo
MSKS(690) #0 #00FE
MSKS(690) #4 #0000 MSKS(690) #5 #03E8 Desenmascara la entrada 0 de la unidad de interrupcin 0.

Enmascara la tarea de interrupcin programada 2.

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 36

@CLI(692) N S

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

Soporte Tcnico

CLI(691) Ejemplo
Resetea las entradas grabadas 3 y 6 de la unidad de interrupcin 2. Entrada 7654 3210 0000 0000 0100 1000

CLI(691) #2 #0048

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) @DI(693)

Soporte Tcnico

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) @EI(694)

Soporte Tcnico

40

DI(693) y EI(694) Ejemplo


Task 1
DI

Interrupciones Deshabilitadas hasta el final de la tarea 1.


END

Task 5
DI

Interrupciones Habilitadas para las tareas 2 a 4.

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 END(001) DM00030 cuenta las veces que se ha ejecutado la tarea de interrupcin 15

Devuelve un mensaje segn un protocolo de la COMBOARD

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

Soporte Tcnico

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
Soporte Tcnico 50

@CNR(545) N1 N2

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 D2+1 S+1 0000 0000 0000 000 1 Flag de finalizacin D2 S Valor actual del temporizador PV 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 S S+1 S+2 S+3 S+4 S+5 S+6 S+7
Soporte Tcnico

Valor del PV del temporizador

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

Soporte Tcnico

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

Soporte Tcnico

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 A ELSE B IEND

IF
SI

NO

Se ejecuta A IEND

Se ejecuta B

Soporte Tcnico

62

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

A 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 A B C C C 0.01 OFF 0.01 ON

Soporte Tcnico

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 A B C C C

Soporte Tcnico

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 A B C C C

Soporte Tcnico

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 A B C C C

Soporte Tcnico

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

Soporte Tcnico

LOOP(809), LEND(810) NOT

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

0.01 OFF

0.01 OFF

0.01 OFF

0.01 ON

B
C

B C

Soporte Tcnico

69

Tablas de datos
Tablas basadas en pilas Tablas basadas en registros

Soporte Tcnico

70

Tablas de Datos

Tablas basadas en Pila (Stack)

Tablas basadas en registros Operaciones con Rangos


SRCH, MAX, MIN, SUM, FCS, SWAP DIM, SETR, GETR

SSET, PUSH, FIFO, LIFO

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

Soporte Tcnico

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

D00000 D00001 D00002 D00003 D00004 D00005 D00006 D00007 D00008 D00009

0009 0001 0004 0001 0000 0000 0000 0000 0000 0000

ltima direccin de la tabla en binario Direccin donde apunta el puntero Puntero

Datos

Soporte Tcnico

74

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 @PUSH(632) TB S

Soporte Tcnico

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

Puntero

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

@LIFO(634) TB D

Soporte Tcnico

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

Puntero

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

Registro 1
D00004 D00005 Registro 2

5 Palabras

5 Palabras

D00009 D00010 Registro 3


D00014
Soporte Tcnico 83

5 Palabras

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 84

@SETR(635) N R D

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

Tabla 12
D00000 Registro 1 5 Palabras

IR11

D00005

D00004 D00005 Registro 2 5 Palabras

D00009 D00010 Registro 3


D00014
Soporte Tcnico 85

5 Palabras

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 86

@GETR(636) N IR D

GETR(636) Ejemplo
@GETR(636) &12 IR11 W000 Tabla 12 Registro ndice 11 N de registro D00000 Registro 1 IR11 W000 D00005 0002 D00004 D00005 Registro 2 5 Palabras 5 Palabras

Tabla 12

D00009 D00010 Registro 3


D00014

5 Palabras

Soporte Tcnico

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 X 000 0000 0000 0000 0: No muestra el nmero de coincidencias DR00 intacto. 1: Muestra el nmero de coincidencias en DR00. R1 Nmero de palabras en el rango

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 91

@MAX(182) C R1 D

MAX(182)
C C+1 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 Nmero de palabras en el rango

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 IR00 D00101

1234 6589 8778 5569 3365 1234 1254 3365 5698 3365
93

W002

6589

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 94

@MIN(183) C R1 D

MIN(183)
C C+1 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 Nmero de palabras en el rango

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

SWAP(637) N R1

@SWAP(637) N R1

Soporte Tcnico

97

SWAP(637) Ejemplo
@SWAP(637) &6 D00100

6 Palabras a partir del D00100

D00100 D00101 D00102 D00103 D00104 D00105

00 02 04 06 08 10

01 03 05 07 09 11

D00100 D00101 D00102 D00103 D00104 D00105

01 03 05 07 09 11

00 02 04 06 08 10

Soporte Tcnico

98

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

Soporte Tcnico

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 @LEN$(650) S D

Soporte Tcnico

101

LEN$(650) Ejemplo
@LEN$(664) W000 W100 S W000 O M W001 R O W002 N W000 4F 4D W001 52 4F W002 4E 00 D

W000 0006

Soporte Tcnico

102

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 @MOV$(664) S D

Soporte Tcnico

103

MOV$(664) Ejemplo
@MOV$(664) W000 W100 S W000 O M W001 R O W002 N W000 4F 4D W001 52 4F W002 4E 00 D W100 4F 4D W101 52 4F W102 4E 00

Soporte Tcnico

104

+$(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 105

@+$(656) S1 S2 D

+$(656) Ejemplo
@+$(656) W000 W100 D00000 S1 W000 4F 4D W001 52 4F W002 4E 00 OMRON S2 D D00000 D00001 D00002 D00003 D00004 D00005 4F 52 4E 50 49 00 4D 4F 53 41 4E 00

&

W100 53 50 W101 41 49 W102 4E 00 SPAIN

OMRON SPAIN
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 107

@LEFT$(652) S1 S2 D

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 D 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 109

@RGHT$(653) S1 S2 D

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 D 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 111

@MID$(654) S1 S2 S3 D

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 D 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 113

@FIND$(660) S1 S2 D

FIND$(660) Ejemplo
@FIND$(660) D00000 W100 W000 S1 D00000 D00001 D00002 D00003 D00004 D00005 4F 52 4E 50 49 00 4D 4F 53 41 4E 00 S2 W100 53 50 W101 41 49 W102 4E 00 SPAIN D W000 0006

OMRON SPAIN
Soporte Tcnico 114

RPLC$(661)

Reemplaza S3 caracteres de S2 desde


S4 en la cadena S1 y la escribe en D.
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

Soporte Tcnico

RPLC$(661) Ejemplo
RPLC$(661) D00000 W100 &5 &6 D00100 D00000 D00001 D00002 D00003 D00004 D00005 4F 52 4E 50 49 00

S1 4D 4F 53 41 4E 00

S2 W100 20 53 W101 55 52 W102 00 00 D00100 D00101 D00102 D00103 D00104 D00105 4F 52 4E 53 52 00

D 4D 4F 20 55 00 00

SUR

OMRONSPAIN
Soporte Tcnico 116

OMRON SUR

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 117

@DEL$(658) S1 S2 S3 D

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 D 4F 52 4E 00 00 00 4D 4F 00 00 00 00

OMRON SPAIN
Soporte Tcnico 118

OMRON

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 @XCHG$(665) Ex1 Ex2

Soporte Tcnico

119

XCGH$(665) Ejemplo
@XCHG$(665) W000 W100 Ex1 W000 4F 4D W001 52 4F W002 4E 00 Ex2 W100 4F 4D W101 52 4F W102 4E 00

Soporte Tcnico

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

@CLR$(666) S

Soporte Tcnico

121

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

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

S W100 00 00 W101 00 00 W102 00 00

Soporte Tcnico

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 123

@INS$(657) S1 S2 S3 D

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 S2 W100 20 00 D00100 D00101 D00102 D00103 D00104 D00105

D 4F 52 4E 53 41 4E 4D 4F 20 50 49 00

OMRONSPAIN
Soporte Tcnico 124

OMRON SPAIN

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 S1 = S2 <$(672) S1 S2 S1 < S2 longitud >$(674) S1 S2 S1 > S2 longitud

<>$(671) S1 S2 S1 S2
Soporte Tcnico

<=$(673) S1 S2 S1 S2 longitud
126

>=$(675) S1 S2 S1 S2 longitud

Comparacin Ejemplo
0000.00 =$(670) D00000 W000 0001.01 <$(672) D00000 W000 0001.02 >$(674) D00000 W000
Soporte Tcnico 127

LD

0000.01

AND
0000.02

OR

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

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

Soporte Tcnico

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) JME0(516)

Soporte Tcnico

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

Soporte Tcnico

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

Soporte Tcnico

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

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

B
NEXT(513) C NEXT(513)
Soporte Tcnico 136

FOR-NEXT Ejemplo
FOR(512) &3 MOV(021) D00100 @D00200 ++ D00200 NEXT(513)
Soporte Tcnico

Transfiere el contenido de D00100 a la direccin almacenada en D00200 e incrementa la direccin.


D00100
D00100 D00100 D00100 MOV

D00200

#0000

137

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

1 Canal ASL(025) ASR(026) ROL(027) ROR(028) RLNC(574) RRNC(575)

2 Canales ASLL(570) ASRL(571) ROLL(572) RORL(573) RLNL(576) RRNL(577)

Soporte Tcnico

141

De N bits

1 Canal Desplazamiento NASL(580) de N bits NASR(581) Desplazamiento NSFL(578) de N bits como dato NSFR(579)

2 Canales NSLL(582) NSRL(583)

Soporte Tcnico

142

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

@NASL(580) D C

Soporte Tcnico

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

1011000110011111

CY
1 0001100111110000

Soporte Tcnico

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 @NSLL(582) D C

Soporte Tcnico

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

@NASR(581) D C

Soporte Tcnico

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

1011000110011111

CY
0000101100011001 1

Soporte Tcnico

147

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 @NSRL(583) D C

Soporte Tcnico

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 149

@NSFL(578) D C R

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 150

@NSFL(578) D C R

NSFL NSFR ejemplo


Bits 3 a 12

NSFL(578) 0100 &3 &11

1011000110011111

CY
1 1010001100110111

Bits 3 a 12

NSFR(579) 0100 &3 &11

1011000110011111

CY
1010100011001111 1

Soporte Tcnico

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 ++L(591) Wd @++(590) Wd @++L(591) Wd
153

Soporte Tcnico

--(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 --L(593) Wd @--(592) Wd @--L(593) Wd
154

Soporte Tcnico

Binario Ejemplos
++(590) D00000 ++L(591) D00000
D0 0019 +1 D0 001A

D0 0019

D1 FFFF +1

D0 001A

D1 0000

--(592) D00000 --L(593) D00000


Soporte Tcnico

D0 001A -1 D0 001A D1 0000 -1

D0 0019 D0 0019 D1 FFFF

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 ++BL(595) Wd @++B(594) Wd @++BL(595) Wd
156

Soporte Tcnico

--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 --BL(597) Wd @--B(596) Wd @--BL(597) Wd
157

Soporte Tcnico

BCD Ejemplos
++B(594) D00000 ++BL(595) D00000
D0 0019 +1 D0 0020

D0 0019

D1 9999 +1

D0 0020

D1 0000

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


Soporte Tcnico

D0 0020 -1 D0 0020 D1 0000 -1

D0 0019 D0 0019 D1 9999

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

Soporte Tcnico

161

Comparacin Ejemplo
<LS(313) D0000 D0002

LD
0000.00 Activa la salida 0000.00 si D00000 y D00001 es menor que D00002 y D00003 Tiene en cuenta el signo. Activa la salida 0000.00 si D00000 es menor que D00001 y D00002 es igual 0000.00 que D00003 Tiene en cuenta el signo.

AND
<S(312) D0000 D0001 =S(302) D0002 D0003

<(303) D0000 D0001 =(300) D0002 D0003


Soporte Tcnico

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 @SIGN(600) S R

Soporte Tcnico

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 @BINS(470) C S R

Soporte Tcnico

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 El signo se indica en S: F=- y A=-1 o 0-9 positivo Los valores B-E dan error.

Soporte Tcnico

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 167

@BISL(472) C S R

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 El signo se indica en S+1: F=- y A=-1 o 0-9 positivo Los valores B-E dan error.

Soporte Tcnico

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 169

@BCDS(471) C S R

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 170

@BDSL(473) C S R

Limitaciones BCDS y BDSL

En BCDS el dato S est limitada segn C:


C=0 C=1 C=2 C=3 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 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

En BDSL el dato S est limitada segn C:

Soporte Tcnico

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

Soporte Tcnico

IEEE754

Expresan nmeros reales en 32 bits


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

(-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.
176

Soporte Tcnico

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 D00000 0000000000000000 3 D00001 0100000001000000 D00100 0000000000000011 3

FLTL(453) D00102 D00002

D00002 0000000000000000 -58.720.256 D00003 1100110001100000

D00102 0000000000000000 -58.720.256 D00103 1111110010000000

Soporte Tcnico

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 183

@+F(454) Au Ad R

-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 184

@-F(455) Mi Su R

+F, -F Ejemplo
D00000 D00001 D00002 D00003 +F(454) D00000 D00002 D00100 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

-F(455) D00000 D00002 D00100


Soporte Tcnico

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 186

@*F(456) Md Mr R

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

/F(457) D00000 D00002 D00100


Soporte Tcnico

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 @RAD(458) S R

Soporte Tcnico

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 @DEG(459) S R

Soporte Tcnico

190

DEG, RAD Ejemplo


@RAD(458) D00002 57.29578 = 1 rad D00000 @DEG(459) D00000 D00002 1 rad = 57.29578 180 0=360 0=2

/2 90

D00000 D00001 D00002 D00003


Soporte Tcnico

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 @SIN(460) S R

Soporte Tcnico

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 @COS(461) S R

Soporte Tcnico

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 @TAN(462) S R

Soporte Tcnico

194

SIN, COS, TAN Ejemplo


D00000 0000 1010 1001 0001 D00001 0011 1111 0000 0110 @SIN(460) D00000 D00100 @COS(461) D00000 D00100 @TAN(462) D00000 D00100
Soporte Tcnico

30=0.523599 rad

D00100 0000 0000 0000 0000 D00101 0000 0000 0000 0000 sen30 = 0.5 D00100 1011 0011 1101 0111 D00101 0011 1111 0101 1101 cos30= 0.866 D00100 1100 1101 0011 1010 D00101 0011 1111 1001 0011 tg30=0.577
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 @ASIN(463) S R

Soporte Tcnico

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 @ACOS(464) S R

Soporte Tcnico

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 @ATAN(465) S R

Soporte Tcnico

198

ASIN, ACOS, ATAN Ejemplo


D00000 0000 0000 0000 0000 D00001 0011 1111 0000 0000 @ASIN(463) D00000 D00100 @ACOS(464) D00000 D00100 @ATAN(465) D00000 D00100
Soporte Tcnico

0.5

D00000 0000 1010 1001 0001 arcsen 0.5= D00001 0011 1111 0000 0110 0.523599 rad D00000 0000 1010 1001 0001 arccos 0.5= D00001 0011 1111 1000 0110 1.1047197 rad D00100 0110 0011 1000 1000 arctg 0.5= D00101 0100 0000 1110 1101 0.4636479 rad
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 @SQRT(466) S R

Soporte Tcnico

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 201

@PWR(840) B E R

PWR, SQRT Ejemplo


D00000 D00001 D00002 D00003 @SQRT(466) D00000 D00100 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

PWR(840) D00000 D00002 D00100


Soporte Tcnico

D00100 1011 1111 0001 0000 D00101 0100 1001 0000 0001
202

96=531.441

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 203

@EXP(467) S R

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 @LOG(468) S R

Soporte Tcnico

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


Soporte Tcnico

D00100 1111 1000 0101 0100 D00101 0100 0000 1010 1101
205

e1=2.71828

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

@DATE(735) S

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 Contenido

A35100 A35107
A35108 A35115 A35100 A35207

Segundos 00 59
Minutos 00 59 Hora 00 23

A35108 A35215
A35100 A35307 A35108 A35315 A35100 A35407 A35108 A35415
Soporte Tcnico

Da 01 31
Mes 01 12 Ao 00 99 Da Semana 00 06 Minutos 00 59
210

DATE(735) Ejemplo
@DATE(735) D00000 D0000 D0001 D0002 D0003 15 05 99 00 30 16 16:15:30 05 5 de Mayo de 1.999 04 Mircoles

Soporte Tcnico

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

@CADD(730) C T R

Soporte Tcnico

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

@CSUB(731) C T R

Soporte Tcnico

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

@SEC(065) S D

Soporte Tcnico

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 Tcnico

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

@HMS(066) S D

Soporte Tcnico

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

D00000 0011 0100 0101 0110 D00001 0000 0000 0001 0010 123.456 Segundos

HMS(066) D00000 D00100

D00100

D00101

0001 0111 0011 0110 36 Segundos 17 Minutos 0000 0000 0011 0100 34 Horas

Soporte Tcnico

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
225

FREAD(700) C S1 S2 D
Soporte Tcnico

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

Nmero de palabras del fichero que se quieren leer (en hexadecimal). Palabra del fichero por la que se empieza a leer (en hexadecimal).

S1+3

S1+2

Soporte Tcnico

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 D Nmero de palabras del fichero ledo (en hexadecimal).
227

Soporte Tcnico

FREAD(700) Ejemplo
0000.00 A343.13 @FREAD(700) #0000 D00200 D00300 D00400

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

D00200 D00201 D00202 D00203 D00200 D00201 D00202 D00203

00 00 00 00 5C 42 44 58

0A 10 palabras. 00 05 Empieza en la palabra 5. 00 41 Directorio ABCD 43 Fichero XY 5C 59

Tarjeta de memoria \ABCD\XY 5 10 rea DM D00400 D00409

Soporte Tcnico

228

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
229

FWRIT(701) C D1 D2 S
Soporte Tcnico

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

D1+1

D1

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

D1+3

D1+2

Soporte Tcnico

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 Direccin de la primera palabra de memoria que se quiere guardar.
231

Soporte Tcnico

FWRIT(701) Ejemplo
0000.01 A343.13 @FWRIT(701) #0010 D00200 D00300 D00400

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

D00200 D00201 D00202 D00203 D00200 D00201 D00202 D00203

00 00 00 00 5C 42 44 58

0A 10 palabras. 00 05 Empieza en la palabra 5. 00 41 Directorio ABCD 43 Fichero XY 5C 59

Tarjeta de memoria \ABCD\XY rea DM D00400 D00409 5 10

Soporte Tcnico

232

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

@LMT(680) S C D

Soporte Tcnico

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

@BAND(681) S C D

Soporte Tcnico

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

@ZONE(682) S C D

Soporte Tcnico

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 @SCL2(486) S P1 R

Soporte Tcnico

240

SCL2(486)
P1 P1+1 P1+2 Offset X Y

R (BCD) Offset X S (binario) Y

El Offset puede ser - Positivo - Negativo - Cero

Soporte Tcnico

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 @SCL3(487) S P1 R

Soporte Tcnico

242

SCL3(487)
P1 P1+1 P1+2 P1+3 P1+4 Offset X Y Lmite superior Lmite inferior

R (binario) Lmite superior Y X S (BCD)

El Offset puede ser - Positivo - Negativo - Cero


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

Soporte Tcnico

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 246

@PMCR(260) C1 C2 S R

PMCR(260)
C1 0111 0001 1110 0001 10 + N de unidad E1 N de puerto serie (puerto 1 o puerto 2) N de puerto lgico (07) Unidad de comunicaciones (SCU). Tarjeta interna (SCB).

C2 S

0000 0011 1110 0111 n S1 S2 ... n R1 R2 ...

N de secuencia de comunicaciones.

N de palabras a enviar + 1 Palabras a enviar.

N de palabras recibidas + 1 Palabras recibidas.

Soporte Tcnico

247

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

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

Soporte Tcnico

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

@SEND(090) S D C

Soporte Tcnico

249

SEND(090)
C C+1 C+2 C+3 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.)

C+4

Soporte Tcnico

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 @RECV(098) S D C

Soporte Tcnico

251

RECV(098)
C C+1 C+2 C+3 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.)

C+4

Soporte Tcnico

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 @CMND(490) S D C

Soporte Tcnico

253

CMND(490)

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

C+5

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

Soporte Tcnico

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

Soporte Tcnico

257