257
Soporte Técnico 1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Embed Size (px)

Citation preview

Page 1: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 1

Instrucciones de CS1

Nuevas instrucciones

Page 2: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

2Soporte Técnico

Í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

• Comparación

• Conversión

• Coma Flotante

• Calendario

• Ficheros de Memoria

• Control de datos

• Comunicaciones

• Cambios en Intrucc.

Page 3: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 3

Formato instrucciones

Flancos de subida y bajada

Refresco inmediato

Page 4: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 4

Formato de instrucciones

• Flanco de subida @• La instrucción se ejecuta con el flanco de subida de

la condición de ejecución.• La entrada se activa con el flanco de subida.

• Flanco de bajada %• La instrucción se ejecuta con el flanco de bajada de

la condición de ejecución.• La entrada se activa con el flanco de bajada.

• Refresco inmediato !• La instrucción hace un refresco de las variables al

ejecutarse.• Puede combinar el flanco de subida o bajada.

Page 5: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 5

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 Se ejecuta con el flanco de bajada de 0000.00

!@MOV(21)0001

DM00001

Hace un refresco inmediato del canal 0000 y lomueve al DM00000

! MOV(21)0000

DM00000

0000.00 Se ejecuta con el flanco de subida de 0000.00 y hace un refresco inmediato del canal 0001 paramoverlo al DM00001

Page 6: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 6

TST(350) TSTN(351)

• Se utilizan como LD, AND y OR.

• Comprueban el estado del bit N de la palabra S.

• S: Palabra dato.• N: Número de bit.

• TSTN es la instrucción negada de TST.

TSTN(351)SN

TST(350)SN

Page 7: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 7

TST, TSTN Ejemplo

TST(350)DM00000

&6

0010.04

El bit 6 del DM00000 activa la salida0010.6

TSTN(351)DM00000

&11

0000.00

La salida 0010.04 se activa cuandola entrada 0000.00 está a 1 y el bit11 del DM0000 está a 0.

0010.06

Page 8: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 8

SETA(530) RSTA(531)

• SETA pone a 1 N2 bits consecutivos empezando en el bit N1 de la palabra D.

• RSTA los pone a 0.• D: Palabra inicial.• N1: Primer bit.• N2: Número de bits.

@SETA(530)D

N1N2

SETA(530)D

N1N2

@RSTA(531)D

N1N2

RSTA(531)D

N1N2

Page 9: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 9

SETA(530) RSTA(531)

@SETA(530)W000

&4&36

@RSTA(531)W000

&4&36

W000 0000 0000 0000 1111W001 0000 0000 0000 0000W002 1111 1111 0000 0000

W000 1111 1111 1111 0000W001 1111 1111 1111 1111W002 0000 0000 1111 1111

Pone a 0 36 bits consecutivos desde el bit 4de la palabra W000

Pone a 1 36 bits consecutivos desde el bit 4de la palabra W000

Page 10: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 10

Direccionamientos

Addessing

Page 11: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 11

Direccionamientos

• Existen varios tipos de direccionamientos:»Inmediato (#, &)

»Directo (CIO, W, H, A, T, C, D, E, En_)

»Indirecto (D, E, En_) sustituye a IEMS(-)• Dirección en BCD (*D, *E, *En_)• Dirección en Binario (@D, @E, @En_)

»Indirecto Indexado (IR)• ,IR0• +234,IR0• DR0,IR0• ,IR0++

Page 12: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 12

Ejemplos

MOV(21) Escribe el contenido de W000 en W001W000 DirectoW001 Directo

MOV(21) Escribe C (12 traducido a binario) en W000&12 Inmediato traducido a binarioW000 Directo

MOV(21)#1A Inmediato*D00000 Indirecto BCD

MOV(21) Escribe 1A34 binario en W000#1A34 Inmediato binarioW000 Directo

Escribe 1A en la dirección(BCD)indicada en D00000

Page 13: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 13

Ejemplos

MOV(21)W000 Directo@D00000 Indirecto Binario

MOV(21) Escribe 1A en la dirección indicada en (IR0+DR0)#1A InmediatoDR0,IR0 Indexado

Escribe el contenido de W000 en ladirección (Binaria) indicada en D00000

MOV(21) Escribe 1A en la dirección indicada en IR0#1A Inmediato,IR0 Indexado

MOV(21) Escribe 1A en la dirección indicada en (IR0+23)#1A Inmediato+23,IR0 Indexado

Page 14: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 14

Ejemplos

MOV(21)#1A Inmediato,--IR0 Indexado

Escribe 1A en la dirección indicada en (IR0-2)y disminuye IR0 dos unidades

MOV(21)#1A Inmediato,-IR0 Indexado

Escribe 1A en la dirección indicada en (IR0-1)y disminuye IR0 una unidad

MOV(21)#1A Inmediato,IR0++ Indexado

Escribe 1A en la dirección indicada en IR0y aumenta IR0 dos unidades

MOV(21)#1A Inmediato,IR0+ Indexado

Escribe 1A en la dirección indicada en IR0y aumenta IR0 una unidad

Page 15: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 15

MOVR(560)

• Crea un puntero a la palabra o bit S y lo guarda en el registro índice D.

• S: Palabra o bit a mover.• D: Registro índice IR donde se guarda la dirección.

@MOVR(560)SD

MOVR(560)SD

Page 16: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 16

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

MOVRW(561)SD

Page 17: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 17

MOVR(560) MOVRW(561)

MOVR(560)T0000

IR0

MOVRW(561)T0000

IR0

Guarda el Valor presente PV del temporizadorT0000 en el registro índice IR0

Guarda el número de temporizador T0000 en elregistro índice IR0

IR0 0000 0195

Page 18: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 18

Tareas

División del programa en tareas

Page 19: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 19

Programa y Tareas

• Dentro de un mismo PLC se puede repartir un programa en tareas cíclicas o de interrupción.

Tarea Cíclica 31

Tarea Interrupción Programada 02

Tarea Cíclica 01

Tarea Cíclica 02

Tarea Cíclica 00

Tarea interrupción I/O 107

Page 20: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 20

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.

Tareacíclica 01

Tareacíclica 02

Tareacíclica 03

Tareacíclica 00

Programa B00-02-03

Programa A00-01-03

Page 21: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 21

Tarea cíclica

• Se pueden programar 32 tareas cíclicas 00÷31.

• Estas tareas se ejecutan por orden de numeración: La tarea 00 es la inicial, luego la 01, ... hasta la 31 que es la última.

• Cada una de estas tareas acaba con la instrucción END(001).

• En cada ciclo de scan se puede elegir qué tareas queremos que se ejecuten y cuales no.Una tarea puede activar a otras.

Page 22: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 22

CX-Programer

• Se pueden utilizar dos clases de símbolos (variables):»Globales:

• Sirven para todas las tareas (cíclicas y de interrupción) y no se pueden duplicar los nombres.

• Son únicas para cada PLC.

»Locales:• Sólo tienen validez en la tarea donde se han

creado, bien sea cíclica o de interrupción.• Estas variables se pueden repetir en otras tareas,

pero nunca en la misma tarea.

Page 23: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 23

Control de Tareas

• Existen dos tipos de tareas:»Tareas cíclicas: Se ejecutan según esté su flag

de ejecución TK00 a TK31. Una vez por ciclo de scan y en orden según su número de tarea.

»Tareas de interrupción: Se ejecutan cuando se cumple la condición de interrupción, independientemente del ciclo de scan.

• Para controlar qué tareas cíclicas se ejecutan en un ciclo de scan se utilizan las instrucciones TKON(820) y TKOF(821).

Page 24: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 24

TKON (820)

• Permite que se ejecute la tarea cíclica, pone a 1 el flag de la tarea TK00 a TK31.

• Sólo se puede ejecutar esta instrucción desde una tarea cíclica, de otro modo da un error ER a 1.

@TKON(820)

N

TKON(820)

N

Page 25: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 25

TKON(820)

• N: debe ser una constante comprendida entre #0 y #31. Debe Existir la tarea N.

• Si la instrucción TKON(820) es ejecutada desde la tarea cíclica m, la tarea N se ejecutará según:»m<N: en el mismo ciclo de scan.

»m>N: en el siguiente ciclo de scan.

• Si ya se está ejecutando la tarea N, la instrucción TKON(820) que activa la tarea N se trata como NOP(000).

Page 26: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 26

TKOF (821)

• Pone en stand by la tarea cíclica, pone a 0 el flag de la tarea TK00 a TK31.

• Se puede ejecutar esta instrucción desde una tarea cíclica o desde una tarea de interrupción.

@TKOF(821)

N

TKOF(821)

N

Page 27: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 27

TKOF(821)

• N: debe ser una constante comprendida entre #0 y #31. Debe existir la tarea N.

• Si la instrucción TKOF(821) es ejecutada desde la tarea cíclica m, la tarea N se pondrá en stand by según:»m<N: en el mismo ciclo de scan.

»m>N: en el siguiente ciclo de scan.

Page 28: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 28

TKON TKOF Ejemplo

TKON(820)

2

TKOF(821)

1

0000.01

TKON(820)

1

TKOF(821)

2

0000.00

Cuando la entrada 0000.01 está a uno se ejecuta el programa Acon las tareas 00, 02, 03.

Cuando la entrada 0000.00 está a uno se ejecuta el programa Acon las tareas 00, 01, 03.

Tarea 00

Las tareas cíclicas 00 y 03 están prefijadas para que seejecuten al arrancar el PLC.

Page 29: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 29

Interrupciones

Control de interrupciones

Page 30: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 30

Control de Interrupciones

• Existen 4 tipos de interrupciones:• Fallo de alimentación (Tarea Int. 1)• Programadas en el tiempo (Tareas Int. 2, 3)• Unidades de interrupción 0÷3 (Tareas Int. 100÷131)• Entradas externas (Tareas Int. 0 ÷255)

• La interrupción de fallo de alimentación no se puede controlar mediante instrucciones.

• Las instrucciones para controlar interrupciones son:

• MSKS(690), MSKR(692), CLI(691), EI(694), DI(693)

Page 31: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 31

MSKS(690)

• Enmascarar interrupciones:»Unidades de interrupción (ON/OFF).

»Programadas en el tiempo (tiempo/OFF).

• N:Identificador de interrupción(#0÷#5).

• S:Datos de enmascaramiento o de temporización.

MSKS(690)NS

@MSKS(690)NS

Page 32: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 32

MSKS(690) - N y S

• Explicación de los parámetros N y S• N: Constante #0÷#5• S: Valor constante o de cualquier área de datos

excepto Registro índice.

N Entrada S

0 Unidad interrupción 0 Bits 07 máscara de interrupcion 100107

1 Unidad interrupción 1 Bits 07 máscara de interrupcion 108115

2 Unidad interrupción 2 Bits 07 máscara de interrupcion 116123

3 Unidad interrupción 3 Bits 07 máscara de interrupcion 124131

4 Programada 2

5 Programada 3

0000: Enmascarar interrupción.0001270F: Intervalo de interrupción.

Page 33: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 33

MSKS(690)- N y S

• N es la entrada de interrupción:• Unidad de interrupción (0,1,2,3).• Interrupción programada (2, 3).

• Los valores 1 de S enmascaran las tareas de interrupción asociadas a la entrada N.

• Si N es 4 ó 5 se tratan de tareas de interrupción programadas. En este caso S es el intervalo entre interrupciones en unidades de 10 ms o de 1 ms. Si S es 0, enmascaramos la tarea de interrupción.

Page 34: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 34

MSKS(690) Ejemplo

MSKS(690)#0

#00FE

Desenmascara la entrada 0 de la unidadde interrupción 0.

MSKS(690)#4

#0000

Enmascara la tarea de interrupciónprogramada 2.

MSKS(690)#5

#03E8

Sitúa el intervalo de la tarea de interrupciónprogramada 3 a 10 s (Tiempo 10 ms).

Page 35: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 35

MSKR(692)

• Lee los parámetros de la interrupción introducidos con la instrucción anterior MSKS(690).

• N: Identificador de interrupción. Igual que en MSKS.• D: Palabra de destino. Cualquier área de datos

excepto Registros índice y constantes. Tiene el mismo significado que en MSKS.

MSKR(692)ND

@MSKR(692)ND

Page 36: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 36

CLI(691)

• Borra o retiene(guarda) las interrupciones acumuladas o programa el intervalo de las interrupciones programadas.

• Esta instrucción se usa para controlar las interrupciones simultáneas.

• N y S tienen el mismo significado que en MSKS(690).

CLI(691)NS

@CLI(692)NS

Page 37: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 37

CLI(691)

• Cuando se están ejecutando interrupciones encadenadas, es posible guardar las interrupciones menos prioritarias que había antes de la actual (más prioritaria).

• No se registrarán las nuevas interrupciones de una tarea de interrupción si está guardada con la instrucción CLI(691).

• Para las interrupciones programadas se les puede asignar otro intervalo para que no interfieran con la actual.

Page 38: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 38

CLI(691) Ejemplo

CLI(691)#2

#0048

Resetea las entradas grabadas 3 y 6 de launidad de interrupción 2.Entrada 7654 32100000 0000 0100 1000

CLI(690)#5

#1388

Sitúa el intervalo de la tarea de interrupciónprogramada 3 a 50 s (Tiempo 10 ms).

Page 39: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 39

DI(693)

• Deshabilita la ejecución de todas las tareas de interrupción, excepto la de Fallo de alimentación.

• No se puede ejecutar en tareas de interrupción.

DI(693) @DI(693)

Page 40: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 40

EI(694)

• Habilita la ejecución de todas las tareas de interrupción, que fueron deshabilitadas con la instrucción DI(693).

• No se puede ejecutar en tareas de interrupción.

EI(694) @EI(694)

Page 41: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 41

DI(693) y EI(694) Ejemplo

DI

EI

DI

END

END

Task 1

Task 5

Interrupciones Deshabilitadas hasta el final de la tarea 1.

Interrupciones Deshabilitadas.

Interrupciones Habilitadas para las tareas 2 a 4.

Interrupciones Habilitadas.

Page 42: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 42

Ejemplo Interrupciones

• Seguidamente se muestra un ejemplo de tareas de interrupciones de:

• Fallo de alimentación (Int. 1)• Interrupción programada (Int. Prog. 2)• Interrupción de unidad de interrupción (Int. 100)• Interrupción de una COMBOARD (Int. 15)

• Se muestra el programa y los cambios que son necesarios en el PC-SETUP.

Page 43: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 43

Ejemplo Interrupciones 1

A200.11

First Cycle

MSKS(690)0

#00FE

MSKS(690)4

&1000

Tiempo de Interrupción programada 02 es de:1000 x 10ms = 10s

Desenmascara la Entrada 0 de la Unidad de Interrupción 0

Programa principal de la tarea 00

END(001)

Tarea principal: Tarea cíclica 00

Page 44: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 44

Ejemplo Interrupciones 2

CF113

P_On++(590)D00000

DM00000 cuenta las veces que ha ocurridoun fallo de alimentación

END(001)

Tarea Interrupción de fallo de alimentación:

Es necesario desde PC-SETUP (consola 255):Habilitar la interrupciónTiempo de detección de fallo de alimentación

Page 45: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 45

Ejemplo Interrupciones 3

CF113

P_On++(590)D00010

DM00010 cuenta las veces que se ha ejecutadola interrupción programada 02

END(001)

Tarea Interrupción Programada 02:

Es necesario desde PC-SETUP (consola 195):Unidad de tiempo de las interrupciones programadas.

Page 46: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 46

Ejemplo Interrupciones 4

CF113

P_On++(590)D00020

DM00020 cuenta las veces que se ha ejecutadola tarea de interrupción 100

END(001)

Tarea Interrupción 100:

Es la tarea de interrupción de la Entrada 0 de la unidad deinterrupción 0.

Page 47: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 47

Ejemplo Interrupciones 5

++(590)D00030

DM00030 cuenta las veces que se ha ejecutadola tarea de interrupción 15

END(001)

Tarea Interrupción 15:

Es necesario asignar el número de interrupciónen la unidad que provoca la interrupción.

PMCR(260)#11E1

#1D00100D00200

CF113

P_On

Devuelve un mensaje según un protocolo de la COMBOARD

Page 48: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 48

Temporizadores

Nuevos temporizadores

Page 49: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 49

Temporizadores

• Tiene 4.096 temporizadores y 4.096 contadores independientes entre sí, en dos áreas.

• T0000 ÷ T4095• C0000 ÷ C4095

• Prestar atención a los temporizadores que se encuentran en saltos o interlocks.

• Si IOM hold bit (A50012) está a ON, el PV y el flag de finalizado se mantienen al desconectar alimentación o pasar a PROGRAM.

Page 50: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 50

CNR(545)

• Resetea los contadores o temporizadores dentro del rango N1 - N2.

• N1: Dirección inicial del rango.• N2: Dirección final del rango.

• N1 y N2 deben estar en la misma área de temporizadores o contadores.

CNR(545)N1N2

@CNR(545)N1N2

Page 51: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 51

TMHH(540)

• Temporizador de 1ms. Temporiza S milisegundos.

• N: Número de temporizador.• S: Tiempo.

• El PV y el flag de finalización se refrescan cada 1ms.

TMHH(540)NS

Page 52: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 52

TIML(542)

• Temporizador de 9999 999.9 segundos.• D1: Flag de Finalización.• D2: Primera palabra del PV.• S: Primera palabra de SV.

• No necesita número de temporizador, por eso en necesario reservar palabras para el PV y el flag de finalización.

TIML(540)D1D2S

Page 53: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 53

TIML(542)

D1 0000 0000 0000 000 1Flag de finalización

S+1 S Tiempo total SV debe estar entre 0 y 9999 9999

D2+1 D2 Valor actual del temporizador PV

D2 y S deben estar en BCD.El PV y el flag de finalización están en áreas de datos, por tanto se refrescancada vez que se ejecuta la instrucción.Si el tiempo de ciclo es mayor de 100ms el temporizador falla.No usar las palabras D2 ni D2+1 con otras instrucciones para no cambiarel valor PV del temporizador.En saltos JMP y en interlocks el PV no se modifica.

Page 54: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 54

MTIM(543)

• Temporizador incremental de 0.1s y 8 salidas.

• D1: Palabra de flags de finalización.• D2: Palabra del PV.• S: Primera palabra de los SV.

• No utiliza número de temporizador.

MTIM(543)D1D2S

Page 55: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 55

MTIM(543)

D1 0000 00 0 0 1 1 1 1 1 1 1 1

Flags de finalización de cada SV Flag de resetFlag de pausa

D2 Valor del PV del temporizador

SS+1S+2S+3S+4S+5S+6S+7

Valores de los SV de cada salidaCuando el PV alcanza el valor de cada SV se activa el flagcorrespondiente al SV

SV 1SV2

Flag de finalización 1Flag de finalización 2

PV

Page 56: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 56

Bloques de Programa

En mnemónico

Page 57: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 57

Bloque de Programa

• Conjunto de instrucciones que se ejecutan bajo una misma condición de ejecución.

• Se pueden hacer hasta 128 bloques de programa.

• Sólo se pueden utilizar una vez.

• Los bloques de programa que no se ejecutan no consumen tiempo de ejecución.

• Las instrucciones se escriben en mnemónico.

Page 58: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 58

Bloque de Programa

• La única instrucción que se programa en diagrama de contactos es BPRG(096). El resto se inserta en un bloque de programa en mnemónico.

• La última instrucción del bloque debe ser BEND.

• No se pueden evaluar condiciones dentro de un bloque de programa, excepto en instrucciones especiales (IF).

Page 59: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 59

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.

Page 60: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 60

BPRG(096) y BEND(801)

• BPRG(096): Comienzo del bloque de programa n.

• n: número de bloque de programa (0n127).

• BEND(801): Última instrucción del bloque de programa en mnemónico.

BPRG(096)n

Page 61: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 61

BPPS(811) y BPRS(812)

• BPPS(811): Para la ejecución del bloque de programa N desde otro bloque de programa.

• BPRS(812): Reanuda la ejecución del bloque de programa N desde otro bloque de programa.

• N: Número de bloque de programa (0n127).

Page 62: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 62

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

• IF (NOT): Puede llevar operando B o utilizar una condición de ejecución anterior.

• ELSE: Se ejecuta si no es cierta la condición de la instrucción IF.

• IEND: Final de la instrucción IF.

• Se pueden anidar hasta 254 IFs.

IF

Se ejecuta A Se ejecuta B

IEND

SI

NOIFAELSEBIEND

Page 63: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 63

EXIT(806), EXIT NOT(806)

• Sale del bloque de programa.

• Puede llevar operando o utilizar la condición de ejecución anterior.

• EXIT sale si la condición es verdad y EXIT NOT si no se cumple.

LD 0.00BPRG #1AEXIT 0.01BBENDC

A

B

C

A

C

0.01ON

0.01OFF

Page 64: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 64

WAIT(805), WAIT NOT(805)

• Para la ejecución del resto del bloque de programa hasta que cambia la condición de ejecución.

• Puede llevar operando o utilizar la condición de ejecución anterior.

LD 0.00BPRG #1AWAIT 0.01BBENDC

0.01OFF

0.01ON

0.01OFF

A

C CC

B

Page 65: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 65

TIMW(813)

• Retrasa la ejecución del resto del bloque hasta que se cumpla el tiempo especificado en SV del temporizador N.

• N: Número de temporizador (0N4095).• SV: Tiempo a contar (0SV999.9s).

LD 0.00BPRG #1ATIMW #1 &10BBENDC

1 seg.

A

C CC

B

Page 66: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 66

TIMHW(815)

• Retrasa la ejecución del resto del bloque hasta que se cumpla el tiempo especificado en SV del temporizador rápido N.

• N: Número de temporizador (0N4095).• SV: Tiempo a contar (0SV99.99s).

LD 0.00BPRG #1ATIMHW #1 &100BBENDC

1 seg.

A

C CC

B

Page 67: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 67

CNTW(814)

• Retrasa la ejecución del resto del bloque hasta que se la cuenta de I llegue a SV del contador N.

• N: Número de contador (0N4095).• SV: Pulsos a contar (0SV9999).• I: Entrada de pulsos a contar.

LD 0.00BPRG #1ACNTW #1 &100 0.01BBENDC

100

A

C CC

B

Page 68: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 68

LOOP(809), LEND(810) NOT

• Repiten una serie de instrucciones entre LOOP y LEND (LEND NOT) hasta que la condición de LEND sea cierta.

• LEND puede llevar operando o utilizar la condición de ejecución anterior.

• Dentro de un lazo LOOP no se refrescan las salidas. Utilizar IOREF(184).

• Puede sobrepasar el tiempo máximo de ciclo y dar un error.

• No se puede anidar LOOP dentro de otro.

Page 69: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 69

LOOP(809), LEND(810) NOT

LD 0.00BPRG #1ALOOPBLEND 0.01CBEND

0.01ON

0.01OFF

0.01ON

0.01OFF

0.01OFF

A

B

C

A

B B B

C

B

Page 70: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 70

Tablas de datos

Tablas basadas en pilas

Tablas basadas en registros

Page 71: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 71

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

Page 72: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 72

Pila (Stack)

• En estas tablas se almacenan los valores uno debajo de otro, siguiendo el orden de llegada.

• Los datos (palabras) se pueden coger en orden FIFO (el más antiguo) o en orden LIFO (el más nuevo).

• Las 4 primeras palabras de la tabla están reservadas para la dirección de la última palabra y la dirección a la que apunta el puntero.

Page 73: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 73

SSET(630)

• Define una pila (stack) de:• TB: Primera dirección de la tabla.• N: Nº de palabras.

• Las dos primeras palabras TB y TB+1 contienen la dirección de la última palabra de la tabla. Las dos siguientes contienen la dirección donde apunta el puntero.

• Resetea todos los registros de la tabla a 0.

SSET(630)TBN

@SSET(630)TBN

Page 74: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 74

SSET(630) Ejemplo

SSET(630)D00000

&10D00000 0009D00001 0001D00002 0004D00003 0001D00004 0000D00005 0000D00006 0000D00007 0000D00008 0000D00009 0000

Dirección dondeapunta el puntero

Última dirección de la tablaen binario

Datos

Puntero

Page 75: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 75

PUSH(632)

• Escribe una palabra en la pila, en la dirección donde apunta el puntero e incrementa en uno la dirección del puntero.

• TB: Dirección de la pila.• S: Palabra a escribir.

• Cuando el puntero llega al final de la tabla, no se ejecuta.

PUSH(632)TBS

@PUSH(632)TBS

Page 76: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 76

PUSH(632) Ejemplo

D00000 0009D00001 0001D00002 0006D00003 0001D00004 1234D00005 5678D00006 9012D00007 0000D00008 0000D00009 0000

Dirección dondeapunta el puntero

Tabla

Puntero + 1

@PUSH(632)D00000#9012

Puntero

Escribe 9012 en la tabla que empieza en D00000 dirección donde punta el puntero D00006.

Última dirección de la tablaen binario

Page 77: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 77

FIFO(633)

• First In First Out.

• Lee la primera palabra escrita en la pila (la más antigua),la escrita en TB+4. Sube todos los datos de la pila una palabra y decrementa en uno el puntero.

• TB: Dirección de la pila.• D: Palabra destino de la lectura.

FIFO(633)TBD

@FIFO(633)TBD

Page 78: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 78

FIFO(633) Ejemplo

0009000100060001567890129012000000000000

Dirección dondeapunta el puntero

Puntero - 1

Puntero

D00000 0009D00001 0000D00002 0007D00003 0000D00004 1234D00005 5678D00006 9012D00007 0000D00008 0000D00009 0000

Tabla

FIFO(633)D00000W000

W000 1234

Última dirección de la tablaen binario

Page 79: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 79

LIFO(634)

• Last In First Out.

• Lee la última palabra escrita en la pila y decrementa en uno el puntero.

• TB: Dirección de la pila.• D: Palabra destino de la lectura.

LIFO(634)TBD

@LIFO(634)TBD

Page 80: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 80

LIFO(364) Ejemplo

0009000100050001123456789012000000000000

Dirección dondeapunta el puntero

Puntero - 1Puntero

D00000 0009D00001 0000D00002 0006D00003 0000D00004 1234D00005 5678D00006 9012D00007 0000D00008 0000D00009 0000

Tabla

LIFO(634)D00000W000

W000 9012

Última dirección de la tablaen binario

Page 81: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 81

Tablas de registros

• Se pueden guardar hasta 16 tablas 0÷15.

• Un registro puede contener más de una palabra.

• Se usan en combinación con los registros índice IR0÷IR15.

• Para trabajar con tablas es necesario definirlas primero con DIM(631).

Page 82: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 82

DIM(631)

• Crea una tabla en el área de memoria de:• N: Número de tabla.• LR: Longitud de cada registro.• NR: número de registros.• TB: Dirección del primer registro de la tabla.

DIM(631)N

LRNRTB

@DIM(631)N

LRNRTB

Page 83: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 83

DIM(631) Ejemplo

@DIM(631)&12&5&3

D00000

D00000

D00004D00005

D00009D00010

D00014

Registro 2

Registro 3

Registro 1

5 Palabras

5 Palabras

5 Palabras

Tabla número 12Registros de 5 palabras3 RegistrosEmpieza en la dirección D00000

Page 84: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 84

SETR(635)

• Escribe la dirección del registro número R de la tabla número N en el registro índice D.

• N: Número de tabla (constante).• R: Número de registro.• D: Registro índice.

@SETR(635)NRD

SETR(635)NRD

Page 85: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 85

SETR(635) Ejemplo

@SETR(635)&12&2

IR11

D00000

D00004D00005

D00009D00010

D00014

Registro 2

Registro 3

Registro 1

5 Palabras

5 Palabras

5 Palabras

IR11 D00005

Tabla 12Registro 2

Tabla 12

Page 86: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 86

GETR(636)

• Escribe en D el número de registro de la tabla N cuya dirección está guardada en el registro índice IR.

• N: Número de tabla (constante).• IR: Número de registro.• D: Palabra donde se guarda el número de registro.

@GETR(636)NIRD

GETR(636)NIRD

Page 87: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 87

GETR(636) Ejemplo

@GETR(636)&12IR11W000

D00000

D00004D00005

D00009D00010

D00014

Registro 2

Registro 3

Registro 1

5 Palabras

5 Palabras

5 Palabras

W000 0002

Tabla 12Registro índice 11Nº de registro Tabla 12

IR11 D00005

Page 88: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 88

SRCH(181)

• Busca una palabra en un rango de palabras.

• C: Primera palabra de control.• R1: Primera palabra del rango.• Cd: Palabra a buscar.

• Guarda en IR00 la dirección de la palabra que coincide y en DR00 el número de coincidencias. @SRCH(181)

CR1Cd

SRCH(181)CR1Cd

Page 89: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 89

SRCH(181)

X 000 0000 0000 0000

0: No muestra el número de coincidencias DR00 intacto.1: Muestra el número de coincidencias en DR00.

Número de palabras en el rango

C

C+1

Rango de búsqueda

R1+(C-1)

R1

Page 90: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 90

SRCH(181) Ejemplo

D00100 1234D00101 6589D00102 8778D00103 5569D00104 3365D00105 1234D00106 1254D00107 3365D00108 5698D00109 3365

@SRCH(181)W000

D00100W002

W002 3365

IR00 D00104

DR00 0003

W000 000A

W001 8000 Guarda el Nº de coincidencias

10 Palabras

Page 91: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 91

MAX(182)

• Busca el máximo valor en un rango de palabras.

• C: Primera palabra de control.• R1: Primera palabra del rango.• D: Palabra donde se guarda el valor.

• Guarda en IR00 la dirección de la palabra que coincide y en D el valor máximo.

@MAX(182)CR1D

MAX(182)C

R1D

Page 92: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 92

MAX(182)

X Y 00 0000 0000 0000

0: No muestra la dirección en IR00.1: Muestra la dirección en IR00.

Número de palabras en el rango

C

C+1

Rango de búsqueda

R1+(C-1)

R1

0: Datos en binario sin signo.1: Datos en binario con signo.

Page 93: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 93

MAX(182) Ejemplo

D00100 1234D00101 6589D00102 8778D00103 5569D00104 3365D00105 1234D00106 1254D00107 3365D00108 5698D00109 3365

@MAX(182)W000

D00100W002

IR00 D00101

W002 6589

W000 000A

W001 C000 Binario con signoGuarda la dirección en IR00

10 Palabras

Page 94: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 94

MIN(183)

• Busca el mínimo valor en un rango de palabras.

• C: Primera palabra de control.• R1: Primera palabra del rango.• D: Palabra donde se guarda el valor.

• Guarda en IR00 la dirección de la palabra que coincide y en D el valor mínimo.

@MIN(183)CR1D

MIN(183)C

R1D

Page 95: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 95

MIN(183)

X Y 00 0000 0000 0000

0: No muestra la dirección en IR00.1: Muestra la dirección en IR00.

Número de palabras en el rango

C

C+1

Rango de búsqueda

R1+(C-1)

R1

0: Datos en binario sin signo.1: Datos en binario con signo.

Page 96: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 96

MIN(183) Ejemplo

D00100 1234D00101 6589D00102 8778D00103 5569D00104 3365D00105 1234D00106 1254D00107 3365D00108 5698D00109 3365

@MIN(183)W000

D00100W002

IR00 D00101

W002 8778

W000 000A

W001 C000 Binario con signoGuarda la dirección en IR00

10 Palabras

Pone el flag de negativo a 1: N=1porque 8778 es negativo.

Page 97: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 97

SWAP(637)

• Intercambia los bytes derecho e izquierdo de las palabras del rango seleccionado.

• N: Número de palabras del rango.• R1: Primera palabra del rango.

SWAP(637)NR1

@SWAP(637)NR1

Page 98: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 98

SWAP(637) Ejemplo

D00100 01 00D00101 03 02D00102 05 04D00103 07 06D00104 09 08D00105 11 10

D00100 00 01D00101 02 03D00102 04 05D00103 06 07D00104 08 09D00105 10 11

@SWAP(637)&6

D001006 Palabrasa partir del D00100

Page 99: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 99

Cadenas de caracteres

Instrucciones de texto

Page 100: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 100

Cadenas de caracteres

• Las cadenas de caracteres, son tratadas como código ASCII de 8 bits.

• Se considera que pertenece a una cadena de caracteres todos los datos que hay desde la dirección inicial hasta que encuentra el código NUL (00 HEX).

• Las cadenas se leen byte izquierdo, byte derecho y de menor a mayor dirección.

• La longitud máxima de caracteres es de 4.095 + el carácter NUL.

Page 101: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 101

LEN$(650)

• Calcula la longitud de la cadena de la posición S (hasta NUL) y guarda el resultado en D.

• S: Primera palabra de la cadena.• D: Posición donde guarda el resultado.

• La longitud máxima es de 4.095 bytes.

LEN$(650)SD

@LEN$(650)SD

Page 102: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 102

LEN$(650) Ejemplo

@LEN$(664)W000W100

W000 O MW001 R OW002 N

W000 4F 4DW001 52 4FW002 4E 00

S

W000 0006

D

Page 103: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 103

MOV$(664)

• Copia una cadena de caracteres de la posición S (hasta NUL) a la D. También copia el carácter NUL.

• S: Primera palabra de la cadena a copiar.• D: Posición donde se copia la cadena.

• La longitud máxima es de 4.095 bytes.

MOV$(664)SD

@MOV$(664)SD

Page 104: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 104

MOV$(664) Ejemplo

W100 4F 4DW101 52 4FW102 4E 00

W000 O MW001 R OW002 N

W000 4F 4DW001 52 4FW002 4E 00

S D

@MOV$(664)W000W100

Page 105: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 105

+$(656)

• Concatena (une) la cadena S1 con la S2 y guarda el resultado en D.

• S1: Primera palabra de la primera cadena.• S2: Primera palabra de la segunda cadena.• D: Posición donde se copia la cadena.

• La longitud máxima es de 4.095 bytes.

@+$(656)S1S2D

+$(656)S1S2D

Page 106: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 106

+$(656) Ejemplo

D00000 4F 4DD00001 52 4FD00002 4E 53D00003 50 41D00004 49 4ED00005 00 00

W000 4F 4DW001 52 4FW002 4E 00

W100 53 50W101 41 49W102 4E 00

S2 D

@+$(656)W000W100

D00000

&

OMRONSPAIN

OMRON SPAIN

S1

Page 107: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 107

LEFT$(652)

• Recupera la cadena de S2 primeros caracteres de la cadena S1 y guarda el resultado en D.

• S1: Primera palabra de la cadena.• S2: Número de caracteres a recuperar.• D: Posición donde se copia la cadena.

• La longitud máxima es de 4.095 bytes.

LEFT$(652)S1S2D

@LEFT$(652)S1S2D

Page 108: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 108

LEFT$(652) Ejemplo

D

LEFT$(652)W000

&5D00000

OMRON

D00000 4F 4DD00001 52 4FD00002 4E 00

OMRON SPAIN

S1

W000 4F 4DW001 52 4FW002 4E 20W002 53 50W002 41 49W002 4E 00

Page 109: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 109

RGHT$(653)

• Recupera la cadena de S2 últimos caracteres de la cadena S1 y guarda el resultado en D.

• S1: Primera palabra de la cadena.• S2: Número de caracteres a recuperar.• D: Posición donde se copia la cadena.

• La longitud máxima es de 4.095 bytes.

RGHT$(653)S1S2D

@RGHT$(653)S1S2D

Page 110: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 110

RGHT$(653) Ejemplo

D

RGHT$(653)W000

&5D00000

SPAIN

D00000 53 50D00001 41 49D00002 4E 00

OMRON SPAIN

S1

W000 4F 4DW001 52 4FW002 4E 20W002 53 50W002 41 49W002 4E 00

Page 111: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 111

MID$(654)

• Recupera la cadena de S2 caracteres de la cadena S1 empezando en el carácter número S3 y guarda el resultado en D.

• S1: Primera palabra de la cadena.• S2: Número de caracteres a recuperar.• S3: Posición inicial de la cadena S1.• D: Posición donde se copia la cadena.

MID$(654)S1S2S3D

@MID$(654)S1S2S3D

Page 112: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 112

MID$(654) Ejemplo

D

ON SP

D00000 4F 4ED00001 20 53D00002 50 00

OMRON SPAIN

S1

W000 4F 4DW001 52 4FW002 4E 20W002 53 50W002 41 49W002 4E 00

@MID$(654)W000

&5&4

D00000

Page 113: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 113

FIND$(660)

• Busca la cadena S2 en la S1 y guarda el número de carácter desde el principio de S1 en D.

• S1: Primera palabra de la primera cadena.• S2: Primera palabra de la segunda cadena.• D: Posición donde se guarda el Nº de carácter.

@FIND$(660)S1S2D

FIND$(660)S1S2D

Page 114: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 114

FIND$(660) Ejemplo

D00000 4F 4DD00001 52 4FD00002 4E 53D00003 50 41D00004 49 4ED00005 00 00

W100 53 50W101 41 49W102 4E 00

S2S1

@FIND$(660)D00000W100W000

OMRONSPAIN

SPAIN

W000 0006

D

Page 115: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 115

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: Número de caracteres.• S4: Posición inicial.• D: Posición donde se guarda el Nº de carácter.

RPLC$(661)S1S2S3S4D

@RPLC$(661)S1S2S3S4D

Page 116: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 116

RPLC$(661) Ejemplo

D00100 4F 4DD00101 52 4FD00102 4E 20D00103 53 55D00104 52 00D00105 00 00

W100 20 53W101 55 52W102 00 00

S2 D

OMRONSPAIN

SUR

RPLC$(661)D00000W100

&5&6

D00100

D00000 4F 4DD00001 52 4FD00002 4E 53D00003 50 41D00004 49 4ED00005 00 00

S1

OMRON SUR

Page 117: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 117

DEL$(658)

• Borra S2 caracteres de S1 empezando desde S3 y guarda el resultado en D.

• S1: Primera palabra de la cadena.• S2: Número de caracteres a borrar.• S3: Posición para borrar de la cadena S1.• D: Posición donde se guarda la cadena.

DEL$(658)S1S2S3D

@DEL$(658)S1S2S3D

Page 118: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 118

DEL$(658) Ejemplo

D

OMRON SPAIN

S1

W100 4F 4DW101 52 4FW102 4E 00W102 00 00W102 00 00W102 00 00

@DEL$(658)W000

&6&6

D00000

W000 4F 4DW001 52 4FW002 4E 20W002 53 50W002 41 49W002 4E 00

OMRON

Page 119: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 119

XCHG$(665)

• Intercambia las cadenas Ex1 y Ex2.• Ex1: Primera palabra de la cadena 1.• Ex2: Primera palabra de la cadena 2.

• La longitud máxima es de 4.095 bytes.

• Ex1 y Ex2 no se pueden solapar.

XCHG$(665)Ex1Ex2

@XCHG$(665)Ex1Ex2

Page 120: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 120

XCGH$(665) Ejemplo

W100 4F 4DW101 52 4FW102 4E 00

W000 4F 4DW001 52 4FW002 4E 00

Ex1 Ex2

@XCHG$(665)W000W100

Page 121: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 121

CLR$(666)

• Borra la cadena S. Escribe el carácter NUL en toda la cadena S.

• S: Primera palabra de la cadena a borrar.

CLR$(666)S

@CLR$(666)S

Page 122: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 122

CLR$(666) Ejemplo

W100 00 00W101 00 00W102 00 00

W000 4F 4DW001 52 4FW002 4E 00

S S

@CLR$(666)W000

Page 123: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 123

INS$(657)

• Inserta S2 en S1 a partir del carácter

Nº S3 y la escribe en D.• S1: Primera palabra de la primera cadena.• S2: Primera palabra de la segunda cadena.• S3: Número de caracteres.• D: Posición donde se guarda el Nº de carácter.

INS$(657)S1S2S3D

@INS$(657)S1S2S3D

Page 124: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 124

INS$(657) Ejemplo

W100 20 00

S2

D

OMRONSPAIN

D00100 4F 4DD00101 52 4FD00102 4E 20D00103 53 50D00104 41 49D00105 4E 00

S1

D00000 4F 4DD00001 52 4FD00002 4E 53D00003 50 41D00004 49 4ED00005 00 00

OMRON SPAIN

@INS$(657)D00000W100

&5D00100

Page 125: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 125

Comparación de cadenas

• Se pueden comparar dos cadenas de caracteres en código ASCII (8 bits) mediante 6 instrucciones:

• =$,<>$, <$, <=$, >$, >=$

• Los resultados de estas comparaciones se ven en los flags:

• >, >=, >, <>, <, <=

• Estas comparaciones se aplican a:• LD, OR, AND

Page 126: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 126

Comparación de cadenas

<>$(671)S1S2

<$(672)S1S2

>=$(675)S1S2

<=$(673)S1S2

=$(670)S1S2

>$(674)S1S2

S1 S2 S1 S2longitud

S1 = S2 S1 > S2longitud

S1 S2longitud

S1 < S2longitud

Page 127: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 127

Comparación Ejemplo

>$(674)D00000W000

0001.02

=$(670)D00000W000

0000.00

0000.02

<$(672)D00000W000

0001.01 0000.01

AND

OR

LD

Page 128: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 128

Saltos

Saltos condicionales

Page 129: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 129

Saltos

JMP(4) CJP(510) CJPN(511) JMP0(515)JME(5) JME(5) JME(5) JME0(516)

Condición OFF ON OFF OFFNº máximo 1.024 en total Sin límiteTiempo ejecución No se ejecutan NOP(000)Estado de salidas Bits y palabras mantienen su estado anteriorTemporizadores Continúan temporizandoBloques de programas Siempre ON OFF No permitido

Tabla comparativa de los saltos y los saltos condicionales.

Page 130: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 130

CJP(510)/CJPN(511)

• CJP(510): Salta hasta el primer JME(005) cuando la condición de ejecución es ON.

• CJPN(511): Salta hasta el primer JME(005) cuando la condición de ejecución es OFF.

• N: Número de salto.

• Las instrucciones intermedias no se ejecutan. No consumen tiempo.

CJPN(511)N

CJP(510)N

JME(005)N

Page 131: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 131

JMP0(515)/JME0(516)

• Salta hasta JME0 cuando la condición de ejecución es OFF.

• Las instrucciones intermedias se ejecutan como NOP(000).

• Se pueden poner tantas como se quiera, no hay límite.

JME0(516)JMP0(515)

Page 132: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 132

Instrucciones de lazo

FOR, NEXT, BREAK

Page 133: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 133

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.

Page 134: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 134

FOR(512) y NEXT(513)

• Las instrucciones que hay entre FOR y NEXT se ejecutan N veces dentro del mismo ciclo.

• N: Número de veces que se repiten las instrucciones.

FOR(512)S

NEXT(513)

InstruccionesrepetidasN veces

Page 135: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 135

FOR(512) y NEXT(513)

• Estas instrucciones no necesitan una condición de ejecución. Se ejecutan para cada ciclo. De programa

• Se pueden anidar hasta 15 bucles FOR-NEXT.

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

Page 136: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 136

FOR(512) y NEXT(513)

FOR(512)&2

NEXT(513)

C

FOR(512)&3

A

NEXT(513)

B

Las instrucciones seejecutan según el ordenABBC-ABBC-ABBC

Page 137: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 137

FOR-NEXT Ejemplo

MOV(021)D00100@D00200

FOR(512)&3

NEXT(513)

Transfiere el contenido de D00100a la dirección almacenada en D00200e incrementa la dirección.

++D00200

D00100

D00200 #0000

D00100

D00100

D00100

MOV

Page 138: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 138

BREAK(514)

• Salta a la siguiente instrucción NEXT y finaliza el bucle FOR-NEXT actual.

• En el caso de bucles FOR-NEXT anidados, es necesario una instrucción BREAK para cada bucle.

• Las instrucciones siguientes hasta el próximo NEXT se tratan como NOP.

BREAK(514)

Page 139: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 139

FOR, NEXT y BREAK

BREAK(514)

C

FOR(512)&5

A

NEXT(513)

Page 140: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 140

Desplazamientoy rotación

De todos o N bits en una y dos palabras

Page 141: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 141

Desplazamiento y rotación

1 Canal 2 CanalesDesplazamiento ASL(025) ASLL(570)

ASR(026) ASRL(571)Rotación ROL(027) ROLL(572)

ROR(028) RORL(573)Rotación sin RLNC(574) RLNL(576)Carry RRNC(575) RRNL(577)

Page 142: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 142

De N bits

1 Canal 2 CanalesDesplazamiento NASL(580) NSLL(582)de N bits NASR(581) NSRL(583)Desplazamiento NSFL(578)de N bits como dato NSFR(579)

Page 143: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 143

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

@NASL(580)DC

Page 144: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 144

NASL(580) ejemplo

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.

C: Palabra de control.

NASL(580)0100

#0004 0 0 0 1 1 0 0 1 1 1 1 1 0 0 0 0

1 0 1 1 0 0 0 1 1 0 0 1 1 1 1 1 0

1

CY

Perdidos

Page 145: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 145

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

@NSLL(582)DC

Page 146: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 146

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

@NASR(581)DC

Page 147: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 147

NASR(581) ejemplo

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.

C: Palabra de control.

NASR(581)0100

#0004 0 0 0 0 1 0 1 1 0 0 0 1 1 0 0 1

1 0 1 1 0 0 0 1 1 0 0 1 1 1 1 10

1

CY

Perdidos

Page 148: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 148

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

@NSRL(583)DC

Page 149: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 149

NSFL(578)

• Desplaza N bits de D a la izquierda empezando por el bit C.

• D: Palabra dato.• C: Bit de comienzo.• N: Número de bits a desplazar.

• Los bits anteriores a C o posteriores a C+N no cambian.

@NSFL(578)DCR

NSFL(578)DCR

Page 150: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 150

NSFR(579)

• Desplaza N bits de D a la derecha empezando por el bit C.

• D: Palabra dato.• C: Bit de comienzo.• N: Número de bits a desplazar.

• Los bits anteriores a C+N o posteriores a C no cambian.

@NSFL(578)DCR

NSFL(578)DCR

Page 151: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 151

NSFL NSFR ejemplo

NSFR(579)0100&3&11

NSFL(578)0100&3

&11 1 0 1 0 0 0 1 1 0 0 1 1 0 1 1 1

1 0 1 1 0 0 0 1 1 0 0 1 1 1 1 1 0

1

CY

1 0 1 0 1 0 0 0 1 1 0 0 1 1 1 1

1 0 1 1 0 0 0 1 1 0 0 1 1 1 1 10

1

CY

Bits 3 a 12

Bits 3 a 12

Page 152: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 152

Incrementar Decrementar

Autoincremento y Autodecremento

Page 153: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 153

++(590) ++L(591)

• ++ incrementa en binario la palabra de 4 dígitos Wd en una unidad.

• ++L incrementa en binario la palabra de 8 dígitos Wd en una unidad.

• Wd: Palabra a incrementar

@++L(591)Wd

++L(591)Wd

@++(590)Wd

++(590)Wd

Page 154: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 154

--(592) --L(593)

• -- decrementa en binario la palabra de 4 dígitos Wd en una unidad.

• --L decrementa en binario la palabra de 8 dígitos Wd en una unidad.

• Wd: Palabra a incrementar

@--L(593)Wd

--L(593)Wd

@--(592)Wd

--(592)Wd

Page 155: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 155

Binario Ejemplos

--L(593)D00000

--(592)D00000

++L(591)D00000

++(590)D00000

D0 D0001A -1 0019

D0 D00019 +1 001A

D0 D1 D0 D1001A 0000 -1 0019 FFFF

D0 D1 D0 D10019 FFFF +1 001A 0000

Page 156: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 156

++B(594) ++BL(595)

• ++B incrementa en BCD la palabra de 4 dígitos Wd en una unidad.

• ++BL incrementa en BCD la palabra de 8 dígitos Wd en una unidad.

• Wd: Palabra a incrementar

@++BL(595)Wd

++BL(595)Wd

@++B(594)Wd

++B(594)Wd

Page 157: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 157

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

• --B decrementa en BCD la palabra de 4 dígitos Wd en una unidad.

• --BL decrementa en BCD la palabra de 8 dígitos Wd en una unidad.

• Wd: Palabra a incrementar

@--BL(597)Wd

--BL(597)Wd

@--B(596)Wd

--B(596)Wd

Page 158: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 158

BCD Ejemplos

--BL(597)D00000

--B(596)D00000

++BL(595)D00000

++B(594)D00000

D0 D00020 -1 0019

D0 D00019 +1 0020

D0 D1 D0 D10020 0000 -1 0019 9999

D0 D1 D0 D10019 9999 +1 0020 0000

Page 159: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 159

Comparación

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

Page 160: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 160

Comparación de palabras

• Comparan dos datos S1 y S2.

• Los datos a comparar pueden ser:• Formato: con o sin signo.• Longitud: de 1 (S1 con S2) ó 2 (S1 y S1+1 con S2 y

S2+1) palabras.

• Son instrucciones intermedias: Se pueden conectar como LD, AND y OR.

Símbolo & OpcionesS1S2

Page 161: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 161

Comparación de palabrasSímbolo Formato Longitud=(300) -: Sin signo -: 1 palabra=L(301) -: Sin signo L: 2 palabras=S(302) S: Con signo -: 1 palabra=SL(303) S: Con signo -: 2 palabras<>(305) -: Sin signo -: 1 palabra<>L(306) -: Sin signo L: 2 palabras<>S(307) S: Con signo -: 1 palabra<>SL(308) S: Con signo -: 2 palabras<(310) -: Sin signo -: 1 palabra<L(311) -: Sin signo L: 2 palabras<S(312) S: Con signo -: 1 palabra<SL(313) S: Con signo -: 2 palabras<=(315) -: Sin signo -: 1 palabra<=L(316) -: Sin signo L: 2 palabras<=S(317) S: Con signo -: 1 palabra<=SL(318) S: Con signo -: 2 palabras>(320) -: Sin signo -: 1 palabra>L(321) -: Sin signo L: 2 palabras>S(322) S: Con signo -: 1 palabra<SL(323) S: Con signo -: 2 palabras>=(325) -: Sin signo -: 1 palabra>=L(326) -: Sin signo L: 2 palabras>=S(327) S: Con signo -: 1 palabra>=SL(328) S: Con signo -: 2 palabras

Page 162: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 162

Comparación Ejemplo

Activa la salida 0000.00 si D00000 esmenor que D00001 o D00002 es igualque D00003

<LS(313)D0000D0002

0000.00Activa la salida 0000.00 si D00000 yD00001 es menor que D00002 y D00003Tiene en cuenta el signo.

<(303)D0000D0001

0000.00

=(300)D0002D0003

=S(302)D0002D0003

<S(312)D0000D0001

0000.00

Activa la salida 0000.00 si D00000 esmenor que D00001 y D00002 es igualque D00003Tiene en cuenta el signo.

LD

AND

OR

Page 163: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 163

Instrucciones de conversión de datos

SIGN, BINS, BISL, BCDS y BDSL

Page 164: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 164

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

@SIGN(600)SR

Page 165: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 165

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

BINS(470)CSR

Page 166: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 166

BINS(470)

1 xxx xxxx xxxx xxxx El bit 15 de S indica el signo (1 negativo).

C=0001 (-7999 a 7999)

000 1 xxxx xxxx xxxx El bit 12 de S indica el signo (1 negativo).Los bits 13 a 15 deben ser 0.

C=0000 (-999 a 999)

FA,0-9 xxxx xxxx xxxx El signo se indica en S: F=- y A=-1 o 0-9 positivoLos valores B-E dan error.

C=0003 (-1999 a 9999)

F,0-9 xxxx xxxx xxxx El signo se indica en S: F negativo o 0-9 positivoLos valores A-E dan error.

C=0002 (-999 a 9999)

Page 167: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 167

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

BISL(472)CSR

Page 168: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 168

BISL(472)

1 xxx xxxx xxxx xxxx El bit 15 de S+1 indica el signo (1 negativo).

C=0001 (-7999 9999 a 7999 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=0000 (-999 9999 a 999 9999)

FA,0-9 xxxx xxxx xxxx El signo se indica en S+1: F=- y A=-1 o 0-9 positivoLos valores B-E dan error.

C=0003 (-1999 9999 a 9999 9999)

F,0-9 xxxx xxxx xxxx El signo se indica en S+1: F negativo o 0-9 positivoLos valores A-E dan error.

C=0002 (-999 9999 a 9999 9999)

Page 169: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 169

BCDS(471)

• Convierte una palabra de binario con signo a BCD con signo. C indica el formato de signo en BCD.

• C: Palabra de control: 0, 1, 2 ó 3• S: Palabra en binario.• R: Palabra en BCD.

• Esta es la instrucción inversa a BINS(470)

@BCDS(471)CSR

BCDS(471)CSR

Page 170: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 170

BDSL(473)

• Convierte un dato de binario con signo 32 bits a BCD con signo 32 bits. C indica el formato de signo en BCD.

• C: Palabra de control: 0, 1, 2 ó 3• S: Palabra en binario.• R: Palabra en BCD.

• Esta es la instrucción inversa a BINS(470)

@BDSL(473)CSR

BDSL(473)CSR

Page 171: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 171

Limitaciones BCDS y BDSL

• En BCDS el dato S está limitada según C:• C=0 FC19 a FFFF y 0000 a 03E7• C=1 F0C1 a FFFF y 0000 a 1F3F• C=2 FC19 a FFFF y 0000 a 270F• C=3 F831 a FFFF y 0000 a 270F

• En BDSL el dato S está limitada según C:• C=0 FF67 6981 a FFFF FFFF y 0 a 0098 967F• C=1 FB3B 4C01 a FFFF FFFF y 0 a 04C4 B3FF• C=2 FF67 6981 a FFFF FFFF y 0 a 05F5 E0FF• C=3 FECE D301 a FFFF FFFF y 0 a 05F5 E0FF

Page 172: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 172

Instrucciones enComa Flotante

Números reales en coma flotante.

Page 173: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 173

Números en Coma Flotante

• Se pueden expresar los números:• - (e=255, f=0, s=0)• -3.402823·1038 ÷ -1.175494·10-38

• 0 (e=0)• 1.175494·10-38 ÷ 3.402823·1038

(e=255, f=0, s=1)• NaN (e=255, f0): Número no válido.

• No es necesario conocer el formato de estos números, sólo que ocupan 32 bits.

Page 174: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 174

Precauciones Coma Flotante

• Las operaciones indeterminadas 0.0/0.0, /, - dan como resultado NaN.

• Overflow (±) y Underflow (±0). Es más peligroso el Overflow al convertir el resultado a entero (binario con signo).

• Los decimales se truncan al convertirlos a entero (binario con signo).

• Cualquier operación con un NaN como operando da como resultado NaN.

Page 175: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 175

IEEE754

• Expresan números reales en 32 bits conforme al estándar IEEE754:

• f: Mantisa 23 bits bit 0 al 22• e: Exponente8 bits bit 23 al 30• s: Signo 1 bit bit 31

• (-1)s·2e-127·(1+f·2-23)

• 1#10000000#11000000000000000000000 • Signo: (-1)1= -1• Exponente: 2128-127=21=2• Mantisa: 1+6291456·2-23=1+0.75=1.75• Resultado: -1.75·2= -3.5

Page 176: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 176

Instrucciones Coma Flotante

• Se pueden realizar las siguientes:• Conversión: FIX, FIXL, FLT, FLTL• Operaciones: +F, -F, *F, /F, SQRT, PWR• Conversiones angulares: RAD, DEG• Angulares: SIN, COS, TAN, ASIN, ACOS, ATAN• En base e: LOG, EXP

• Los operandos deben ser Nos en formato coma flotante IEEE754.

• No es necesario conocer este formato, sólo que ocupan 32 bits.

Page 177: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 177

FIX(450)

• Convierte un número en coma flotante a un entero (binario con signo) de 16 bits.

• S: Primera palabra de número en coma flotante.• R: Palabra donde se guarda el resultado.

• La parte decimal es truncada (3.5 3)

• Rango de -32.768 ÷ 32.767.

FIX(450)SR

@FIX(450)SR

Page 178: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 178

FIXL(451)

• Convierte un número en coma flotante a un entero (binario con signo) de 32 bits.

• S: Primera palabra de número en coma flotante.• R: Primera palabra donde se guarda el resultado.

• La parte decimal es truncada (-3.5 -3)

• Rango de -2.147.482.648÷2.147.482.647.

FIXL(451)SR

@FIXL(451)SR

Page 179: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 179

FIX, FIXL Ejemplo

FIXL(451)D00002D00102

FIX(450)D00000D00100

-58.720.256

D00000 0000000000000000D00001 0100000001100000

D00100 0000000000000011

D00002 0000000000000000D00003 1100110001100000

D00102 0000000000000000D00103 1111110010000000

3.5

3

-58.720.256

Page 180: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 180

FLT(452)

• Convierte un número entero (binario con signo) de 16 bits en formato de coma flotante de 32 bits.

• S: Palabra del número entero.• R: Primera palabra del resultado.

• Rango de -32.768 ÷ 32.767.

FLT(452)SR

@FLT(452)SR

Page 181: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 181

FLTL(453)

• Convierte un número entero (binario con signo) de 32 bits en formato de coma flotante de 32 bits.

• S: Primera palabra del número entero.• R: Primera palabra del resultado.

• Rango de -2.147.482.648÷2.147.482.647.

• Números > 16.777.215 pierden precisión.

FLTL(453)SR

@FLTL(453)SR

Page 182: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 182

FLT, FLTL Ejemplo

FLTL(453)D00102D00002

FLT(452)D00100D00000

-58.720.256

D00000 0000000000000000D00001 0100000001000000

D00100 0000000000000011

D00002 0000000000000000D00003 1100110001100000

D00102 0000000000000000D00103 1111110010000000

3

3

-58.720.256

Page 183: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 183

+F(454)

• Suma 2 números en coma flotante de

32 bits.• Au: Primera palabra del primer sumando.• Ad: Primera palabra del segundo

sumando.• R: Primera palabra del resultado.

• El resultado puede ser , -, 0, NaN.

• Tener en cuenta: - = NaN y que NaN+número=NaN. @+F(454)

AuAdR

+F(454)AuAdR

Page 184: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 184

-F(455)

• Resta 2 números en coma flotante de

32 bits.• Mi: Primera palabra del Minuendo.• Su: Primera palabra del Sustraendo.• R: Primera palabra del resultado.

• El resultado puede ser , -, 0, NaN.

• Tener en cuenta: - = NaN y que

NaN-número=NaN, número-NaN=NaN.@-F(455)

MiSuR

-F(455)MiSuR

Page 185: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 185

+F, -F Ejemplo

+F(454)D00000D00002D00100

-F(455)D00000D00002D00100

D00100 0000 0000 0000 0000D00101 1100 0000 0010 0000 -2.5

D00000 0000 0000 0000 0000D00001 0100 0000 0110 0000 3.5D00002 0000 0000 0000 0000D00003 0100 0000 1100 0000 6

D00100 0000 0000 0000 0000D00101 0100 0001 1110 0000 9.5

3.5- 6

3.5+6

Page 186: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 186

*F(456)

• Multiplica 2 números en coma flotante

de 32 bits.• Md: Primera palabra del Multiplicando.• Mr: Primera palabra del Multiplicador.• R: Primera palabra del Resultado.

• El resultado puede ser , -, 0, NaN.

• Tener en cuenta: 0· = NaN y que NaN·número=NaN.

@*F(456)MdMrR

*F(456)MdMrR

Page 187: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 187

/F(457)

• Multiplica 2 números en coma flotante

de 32 bits.• Dd: Primera palabra del Dividendo.• Dr: Primera palabra del Divisor.• R: Primera palabra del Resultado.

• El resultado puede ser , -, 0, NaN.

• Tener en cuenta: 0/0 = NaN, / = NaN y que NaN/número=NaN, número/NaN=NaN.

@/F(457)DdDrR

/F(457)DdDrR

Page 188: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 188

*F, /F Ejemplo

*F(456)D00000D00002D00100

/F(457)D00000D00002D00100

D00100 0101 0101 0101 0101D00101 0011 1111 0101 1010 0.583333

D00000 0000 0000 0000 0000D00001 0100 0000 0110 0000 3.5D00002 0000 0000 0000 0000D00003 0100 0000 1100 0000 6

D00100 0000 0000 0000 0000D00101 0100 0001 1011 0000 21

3.5÷ 6

3.5* 6

Page 189: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 189

RAD(458)

• Convierte un número en coma flotante (32 bits) de grados sexagesimales a radianes. El resultado está en coma flotante.

• S: Primera palabra de los grados.• R: Primera palabra del resultado.

• Utiliza la fórmula: Radianes=Grados·/180

RAD(458)SR

@RAD(458)SR

Page 190: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 190

DEG(459)

• Convierte un número en coma flotante (32 bits) de radianes a grados sexagesimales. El resultado está en coma flotante.

• S: Primera palabra de los radianes.• R: Primera palabra del resultado.

• Utiliza la fórmula: Grados=Radianes·180/

DEG(459)SR

@DEG(459)SR

Page 191: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 191

DEG, RAD Ejemplo

D00000 0000 0000 0000 0000D00001 0011 1111 1000 0000 1 radD00002 0010 1110 1110 0000D00003 0100 0010 0110 0101 57.29578º

@DEG(459)D00000D00002

@RAD(458)D00002D00000

1 rad = 57.29578º

57.29578º = 1 rad

3/2

/2

0=2

90º

180º

270º

0º=360º

Page 192: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 192

SIN(460)

• Calcula el seno de un ángulo (radianes) en coma flotante (32 bits). El resultado está en coma flotante.

• S: Primera palabra del ángulo (radianes).• R: Primera palabra del resultado.

• El resultado está entre -1 y 1.

SIN(460)SR

@SIN(460)SR

Page 193: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 193

COS(461)

• Calcula el coseno de un ángulo (radianes) en coma flotante (32 bits). El resultado está en coma flotante.

• S: Primera palabra del ángulo (radianes).• R: Primera palabra del resultado.

• El resultado está entre -1 y 1.

COS(461)SR

@COS(461)SR

Page 194: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 194

TAN(462)

• Calcula la tangente de un ángulo (radianes) en coma flotante (32 bits). El resultado está en coma flotante.

• S: Primera palabra del ángulo (radianes).• R: Primera palabra del resultado.

• El resultado está entre - y .

TAN(462)SR

@TAN(462)SR

Page 195: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 195

SIN, COS, TAN Ejemplo

D00100 1100 1101 0011 1010D00101 0011 1111 1001 0011 tg30º=0.577

D00000 0000 1010 1001 0001D00001 0011 1111 0000 0110 30º=0.523599 rad

@TAN(462)D00000D00100

@SIN(460)D00000D00100

D00100 0000 0000 0000 0000D00101 0000 0000 0000 0000 sen30º = 0.5

@COS(461)D00000D00100

D00100 1011 0011 1101 0111D00101 0011 1111 0101 1101 cos30º= 0.866

Page 196: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 196

ASIN(463)

• Calcula arco seno de un número en coma flotante (32 bits). El resultado está en coma flotante.

• S: Primera palabra del número (-1÷1).• R: Primera palabra del ángulo (radianes).

• El resultado está entre -/2 y /2.

ASIN(463)SR

@ASIN(463)SR

Page 197: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 197

ACOS(464)

• Calcula arco coseno de un número en coma flotante (32 bits). El resultado está en coma flotante.

• S: Primera palabra del número (-1÷1).• R: Primera palabra del ángulo (radianes).

• El resultado está entre -/2 y /2.

ACOS(464)SR

@ACOS(464)SR

Page 198: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 198

ATAN(465)

• Calcula arco tangente de un número en coma flotante (32 bits). El resultado está en coma flotante.

• S: Primera palabra del número (- ÷ ).• R: Primera palabra del ángulo (radianes).

• El resultado está entre -/2 y /2.

ATAN(465)SR

@ATAN(465)SR

Page 199: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 199

ASIN, ACOS, ATAN Ejemplo

D00100 0110 0011 1000 1000 arctg 0.5=D00101 0100 0000 1110 1101 0.4636479 rad

D00000 0000 0000 0000 0000D00001 0011 1111 0000 0000 0.5

@ATAN(465)D00000D00100

@ASIN(463)D00000D00100

@ACOS(464)D00000D00100

D00000 0000 1010 1001 0001 arccos 0.5=D00001 0011 1111 1000 0110 1.1047197 rad

D00000 0000 1010 1001 0001 arcsen 0.5=D00001 0011 1111 0000 0110 0.523599 rad

Page 200: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 200

SQRT(466)

• Calcula la raíz cuadrada de un número en coma flotante (32 bits). El resultado está en coma flotante.

• S: Primera palabra del radicando (0 ÷ ).• R: Primera palabra del resultado (0 ÷ ).

• El radicando debe ser un Nº positivo.

SQRT(466)SR

@SQRT(466)SR

Page 201: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 201

PWR(840)

• Eleva un número en coma flotante (32 bits) a la E potencia. El resultado está en coma flotante.

• B: Primera palabra de la base (- ÷ ).• E: Primera palabra del Exponente(- ÷

).• R: Primera palabra del resultado (- ÷

).

• (±)0, 0, 0-E y (-S)Nºracional dan error.@PWR(840)BER

PWR(840)BER

Page 202: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 202

PWR, SQRT Ejemplo

PWR(840)D00000D00002D00100

D00100 1011 1111 0001 0000D00101 0100 1001 0000 0001 96=531.441

D00000 0000 0000 0000 0000D00001 0100 0001 0001 0000 9D00002 0000 0000 0000 0000D00003 0100 0000 1100 0000 6

D00100 0000 0000 0000 0000D00101 0100 0000 0100 0000 9=3

@SQRT(466)D00000D00100

Page 203: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 203

EXP(467)

• Calcula el exponencial (eS) de un número en coma flotante (32 bits). El resultado está en coma flotante.

• S: Primera palabra del exponente (- ÷ ).

• R: Primera palabra del resultado (0 ÷ ).

• e2,718281828459.

• El resultado siempre es positivo.EXP(467)

SR

@EXP(467)SR

Page 204: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 204

LOG(468)

• Calcula el logaritmo natural (lnS) de un número en coma flotante (32 bits). El resultado está en coma flotante.

• S: Primera palabra del logaritmo (0 ÷ ).• R: Primera palabra del resultado (- ÷

).

• El logaritmo de un Nº negativo no es Real.

LOG(468)SR

@LOG(468)SR

Page 205: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 205

EXP, LOG Ejemplo

D00100 1111 1000 0101 0100D00101 0100 0000 1010 1101 e1=2.71828

D00000 0000 0000 0000 0000D00001 0011 1111 1000 0000 1

@EXP(467)D00000D00100

@LOG(468)D00000D00100

D00100 0000 0000 0000 0000D00101 0000 0000 0000 0000 L1 = 0

Page 206: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 206

Instrucciones de calendario

Fecha y hora

Page 207: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 207

Instrucciones de Calendario

• La primera vez que se utiliza el PLC es necesario insertar la batería.

• Una vez insertada hay que poner en hora el reloj interno del PLC. Se puede hacer mediante

• el CX-Programer• o con la consola• o mediante la instrucción DATE.

• Todos los datos se introducen en código BCD.

Page 208: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 208

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

Page 209: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 209

DATE(735)

S 0101 1001 0101 1001 Segundos 00 ÷ 59 Minutos 00 ÷59S+1 0011 0001 0010 0011 Hora 00 ÷ 23 Día 01 ÷31S+2 1001 1001 0001 1100 Mes 01 ÷ 12 Año 00 ÷99S+3 0000 0000 0000 0110 Día semana 00(Domingo) ÷ 06(Sábado) Siempre 0

Page 210: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 210

DATE(735)

Dirección Contenido

A35100 ÷ A35107 Segundos 00 ÷ 59

A35108 ÷ A35115 Minutos 00 ÷ 59

A35100 ÷ A35207 Hora 00 ÷ 23

A35108 ÷ A35215 Día 01 ÷ 31

A35100 ÷ A35307 Mes 01 ÷ 12

A35108 ÷ A35315 Año 00 ÷ 99

A35100 ÷ A35407 Día Semana 00 ÷ 06

A35108 ÷ A35415 Minutos 00 ÷ 59

La fecha y hora se guardan en los registros auxiliares:

Page 211: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 211

DATE(735) Ejemplo

@DATE(735)

D00000

D0000 15 30

D0001 05 16 16:15:30

D0002 99 05 5 de Mayo de 1.999

D0003 00 04 Miércoles

Page 212: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 212

CADD(730)

• Suma tiempo T a la fecha indicada en C.• C: Primera palabra de la fecha.• T: Primera palabra del tiempo a sumar.• R: Primera palabra del resultado de la

suma.

@CADD(730)CTR

CADD(730)CTR

Page 213: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 213

CADD(730)

C 0101 1001 0101 1001 Segundos 00 ÷ 59 Minutos 00 ÷59C+1 0011 0001 0010 0011 Hora 00 ÷ 23 Día 01 ÷31C+2 1001 1001 0001 1100 Mes 01 ÷ 12 Año 00 ÷99

Este mismo formato esel del resultado R a R+2

T 0101 1001 0101 1001 Segundos 00 ÷ 59 Minutos 00 ÷59T+1 0011 0001 0010 0011 Hora 0000 ÷ 9999

Page 214: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 214

CADD(730) Ejemplo

D0003 15 20

D0004 05 16 516h 15’ 20”

CADD(730)D00000D00003D00100

D0100 30 50

D0101 27 16 6:30:50

D0102 99 05 27 de Mayo de 1.999

D0000 15 30

D0001 05 16 16:15:30

D0002 99 05 5 de Mayo de 1.999

Page 215: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 215

CSUB(731)

• Suma tiempo T a la fecha indicada en C.• C: Primera palabra de la fecha.• T: Primera palabra del tiempo a restar.• R: Primera palabra del resultado de la

resta.

@CSUB(731)CTR

CSUB(731)CTR

Page 216: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 216

CSUB(731)

C 0101 1001 0101 1001 Segundos 00 ÷ 59 Minutos 00 ÷59C+1 0011 0001 0010 0011 Hora 00 ÷ 23 Día 01 ÷31C+2 1001 1001 0001 1100 Mes 01 ÷ 12 Año 00 ÷99

Este mismo formato esel del resultado R

T 0101 1001 0101 1001 Segundos 00 ÷ 59 Minutos 00 ÷59T+1 0011 0001 0010 0011 Hora 0000 ÷ 9999

Page 217: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 217

CSUB(731) Ejemplo

D0003 10 40

D0004 05 16 516h 15’ 20”

CSUB(731)D00000D00003D00100

D0100 19 50

D0101 15 04 4:19:50

D0102 99 04 15 de Abril de 1.999

D0000 15 30

D0001 05 16 16:15:30

D0002 99 05 5 de Mayo de 1.999

Page 218: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 218

SEC(065)

• Convierte un dato de tiempo h:m:s a su equivalente en segundos.

• S: Primera palabra de h:m:s• D: Primera palabra del resultado en

segundos.

SEC(065)SD

@SEC(065)SD

Page 219: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 219

SEC(065)

R 1001 1001 1001 1001R+1 0011 0101 1001 1001 Segundos 0 ÷ 35.999.999

S 0101 1001 0101 1001 Segundos 00 ÷ 59 Minutos 00 ÷59S+1 1001 1001 1000 1001 Hora 0000 ÷ 9999

Page 220: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 220

HMS(066)

• Convierte un dato de segundos al formato h:m:s.

• S: Primera palabra de los segundos.• D: Primera palabra del resultado en

h:m:s.

HMS(066)SD

@HMS(066)SD

Page 221: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 221

HMS(066)

S 1001 1001 1001 1001S+1 0011 0101 1001 1001 Segundos 0 ÷ 35.999.999

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

Page 222: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 222

SEC, HMS Ejemplo

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

D00100 0001 0111 0011 0110 36 Segundos 17 MinutosD00101 0000 0000 0011 0100 34 Horas

HMS(066)D00000D00100

SEC(065)D00100D00000

Page 223: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 223

Ficheros de Memoria

Lectura / Escritura de ficheros

Page 224: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 224

Ficheros de Memoria

• La tarjeta de memoria flash y el área EM se pueden utilizar como área de ficheros.

• Se pueden escribir/leer ficheros:• Programa (.OBJ)• Parámetros (.STD)• Memoria (.IOM)• Símbolos (.SYM)• Comentarios (.CMT)

• Con instrucciones sólo se pueden Leer/Escribir ficheros de memoria (.IOM).

Page 225: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 225

FREAD(700)

• Permite leer un fichero de memoria (.IOM) y guardar todo o parte de su contenido en un área de memoria.

• C: Palabra de control.• S1: Primera palabra dato.• S2: Nombre del fichero.• D: Primera palabra destino.

@FREAD(700)CS1S2D

FREAD(700)CS1S2D

Page 226: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 226

FREAD(700)

C 0000 0000 0001 0001 0: Tarjeta de memoria 1: Memoria EM

0: Leer datos 1: Leer número de palabras

S1+3 S1+2Palabra del fichero por la que seempieza a leer (en hexadecimal).

S1+1 S1Número de palabras del fichero quese quieren leer (en hexadecimal).

Page 227: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 227

FREAD(700)

S2: Primera palabra del nombre del fichero que se quiere leer.

S2 \ AB CD \X YZ

\ABCD\XYZDirectorio ABCDNombre del fichero XYZ

D: Dirección donde se guardan los datos del fichero leído.Si se lee el número de palabras se almacenan en D y D+1

D+1 DNúmero de palabras del ficheroleído (en hexadecimal).

Page 228: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 228

FREAD(700) Ejemplo

@FREAD(700)#0000

D00200D00300D00400

0000.00 A343.13

Lee 10 palabras desde la 5 hasta la 14 del fichero\ABCD\XY de la tarjeta de memoria y las guardaen D00400 hasta D00409

D00200 5C 41 Directorio ABCDD00201 42 43 Fichero XYD00202 44 5CD00203 58 59

D00200 00 0A 10 palabras.D00201 00 00D00202 00 05 Empieza en la palabra 5.D00203 00 00

10

5

Tarjeta de memoria\ABCD\XY

D00400

D00409

Área DM

Page 229: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 229

FWRIT(701)

• Permite escribir un fichero de memoria (.IOM) y guardar todo o parte del contenido de un área de memoria.

• C: Palabra de control.• D1: Primera palabra del fichero destino.• D2: Nombre del fichero.• S: Primera palabra a guardar.

@FWRIT(701)C

D1D2S

FWRIT(701)C

D1D2S

Page 230: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 230

FWRIT(701)

C 0000 0000 0001 0001 0: Tarjeta de memoria 1: Memoria EM

0: Añadir al final 1: Sobrescribir

D1+3 D1+2Palabra del fichero por donde seempieza a escribir (en hexadecimal)sólo si se sobreescribe.

D1+1 D1Número de palabras de memoria quese quieren guardar (en hexadecimal).

Page 231: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 231

FWRIT(701)

D2: Primera palabra del nombre del fichero a escribir.

D2 \ AB CD \X YZ

\ABCD\XYZDirectorio ABCDNombre del fichero XYZ

S: Primera dirección de memoria a guardar en el fichero.Si se guardan más palabras de las que hay en ese área de memoria,se continúa guardando palabras del área siguiente.

SDirección de la primera palabra de memoriaque se quiere guardar.

Page 232: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 232

FWRIT(701) Ejemplo

@FWRIT(701)#0010

D00200D00300D00400

0000.01 A343.13

Guarda 10 palabras desde DM00400 hasta DM00409en el fichero \ABCD\XY de la tarjeta de memoriaempezando en la palabra (inicio del fichero + 5).

D00200 5C 41 Directorio ABCDD00201 42 43 Fichero XYD00202 44 5CD00203 58 59

D00200 00 0A 10 palabras.D00201 00 00D00202 00 05 Empieza en la palabra 5.D00203 00 00

10

5

Tarjeta de memoria\ABCD\XY

D00400

D00409

Área DM

Page 233: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 233

Control de datos

Control de datos analógicos

Page 234: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 234

LMT(680)

• Limita los valores máximo C+1 y mínimo C de una palabra S.

• S: Palabra dato.• C: Primera palabra de los límites.• D: Palabra donde se guarda el resultado.

@LMT(680)SCD

LMT(680)SCD

Page 235: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 235

LMT(680) Ejemplo

@LMT(680)D00000D00001D00100

D(binario)

S(binario)

Límite Inferior C

Límite Superior C+1

El límite inferior puede ser positivo o negativo.El límite superior debe ser mayor que el inferior.

C: Límite inferiorC+1: Límite superior

Page 236: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 236

BAND(681)

• Crea una banda muerta en el dato de entrada S.

• S: Palabra dato.• C: Primera palabra de los límites.• D: Palabra donde se guarda el resultado.

@BAND(681)SCD

BAND(681)SCD

Page 237: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 237

BAND(681) Ejemplo

BAND(681)D00000D00001D00100

El límite inferior puede ser positivo o negativo.El límite superior debe ser mayor que el inferior.

C: Límite inferiorC+1: Límite superior

D(binario)

S(binario)

Límite Inferior C

Límite Superior C+1

Page 238: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 238

ZONE(682)

• Crea una zona muerta en el dato de salida D.

• S: Palabra dato.• C: Primera palabra de los límites.• D: Palabra donde se guarda el resultado.

@ZONE(682)SCD

ZONE(682)SCD

Page 239: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 239

ZONE(682) Ejemplo

ZONE(682)D00000D00001D00100

El límite inferior puede ser positivo o negativo.El límite superior debe ser mayor que el inferior.

C: Límite inferiorC+1: Límite superior

D(binario)

S(binario)

Límite Inferior C

Límite Superior C+1

Page 240: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 240

SCL2(486)

• Convierte una palabra binario con signo en otra BCD con signo, siguiendo una función lineal. Offset en binario.

• S: Palabra dato binario.• P1: Primera palabra de los límites.• R: Palabra donde se guarda el resultado BCD.

@SCL2(486)S

P1R

SCL2(486)SP1R

Page 241: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 241

SCL2(486)

P1 OffsetP1+1 XP1+2 Y

X

YOffset

S(binario)

R(BCD)

El Offset puede ser- Positivo- Negativo- Cero

Page 242: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 242

SCL3(487)

• Convierte una palabra BCD con signo S en otra binario con signo R, siguiendo una función lineal. Offset en BCD.

• S: Palabra dato BCD.• P1: Primera palabra de los límites.• R: Palabra donde se guarda el resultado binario.

@SCL3(487)S

P1R

SCL3(487)SP1R

Page 243: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 243

SCL3(487)

P1 OffsetP1+1 XP1+2 YP1+3 Límite superiorP1+4 Límite inferior

El Offset puede ser- Positivo- Negativo- Cero

X

Y

Offset

S(BCD)

R(binario)

Límite inferior

Límite superior

Page 244: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 244

ComunicacionesSerie y Network

PMCR, SEND, RECV, CMND

Page 245: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 245

Comunicaciones

• Incorpora 8 puertos lógicos. Esto permite gestionar 8 comunicaciones a la vez sin inferencias.

• Puede manejar 16 unidades de comunicación (SCU) + 1 tarjeta de comunicación interna (SCB).

• En las comunicaciones en red se pueden hacer puentes entre redes en el mismo PLC (Ethernet, Controler Link, CompoBus/D, Compobus/S).

Page 246: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 246

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

PMCR(260)C1C2SR

Page 247: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 247

PMCR(260)

10 + Nº de unidad Unidad de comunicaciones (SCU).E1 Tarjeta interna (SCB).

Nº de puerto serie (puerto 1 o puerto 2)

Nº de puerto lógico (0÷7)

C1 0111 0001 1110 0001

C2 0000 0011 1110 0111 Nº de secuencia de comunicaciones.

S n Nº de palabras a enviar + 1S1 Palabras a enviar.S2...

R n Nº de palabras recibidas + 1R1 Palabras recibidas.R2...

Page 248: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 248

PMCR(260) Ejemplo

PMCR(260)D00000D00001D00100D01000

D00000 0000 0001 1110 0001D00001 0000 0000 0000 0001

Ejecuta la secuencia de comunicaciones 1de la ComBoard.Utiliza el puerto 1 (puerto físico).Ocupa el puerto lógico 0.

Page 249: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 249

SEND(090)

• Envía datos a un nodo de la red.• S: Primera palabra a enviar (nodo local).• D: Primera palabra a recibir (nodo remoto).• C: Primera palabra de control.

@SEND(090)SDC

SEND(090)SDC

Page 250: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 250

SEND(090)

Byte bajo 0÷7 Byte alto 8÷15C Número de palabras: 0001 hasta el máximo de la red.C+1 Red destino 00÷7F Puerto serie 01÷04 (Host Link)C+2 Unidad destino Nodo destino 00 al máximoC+3 Nº de reintentos bits 8÷11: puerto lógico

12÷15: 0 con respuesta8 sin respuesta

C+4 Tiempo de monitorización de la respuesta 0001÷FFFF (0.1÷6553.5 seg.)

Page 251: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 251

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

RECV(098)SDC

Page 252: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 252

RECV(098)

Byte bajo 0÷7 Byte alto 8÷15C Número de palabras: 0001 hasta el máximo de la red.C+1 Red fuente 00÷7F Puerto serie 01÷04 (Host Link)C+2 Unidad fuente Nodo fuente: 00 al máximoC+3 Nº de reintentos bits 8÷11: puerto lógico

12÷15: 0 con respuesta8 sin respuesta

C+4 Tiempo de monitorización de la respuesta 0001÷FFFF (0.1÷6553.5 seg.)

Page 253: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 253

CMND(490)

• Envía un comando FINS y recibe la respuesta.

• S: Primera palabra del comando a enviar.• D: Primera palabra de respuesta.• C: Primera palabra de control.

@CMND(490)SDC

CMND(490)SDC

Page 254: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 254

CMND(490)

Byte bajo 0÷7 Byte alto 8÷15C Número de Bytes del comando a enviar: 0002 hasta el máximo.C+1 Número de Bytes del comando a recibir: 0002 hasta el máximoC+2 Red fuente 00÷7F Puerto serie 01÷04 (Host Link)C+3 Unidad fuente Nodo fuente: 00 al máximoC+4 Nº de reintentos bits 8÷11: puerto lógico

12÷15: 0 con respuesta8 sin respuesta

C+5 Tiempo de monitorización de la respuesta 0001÷FFFF (0.1÷6553.5 seg.)

Page 255: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 255

Cambio en Instrucciones

Instrucciones que ya no existen o han sido modificadas

Page 256: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 256

Instrucciones no soportadas

SCAN Impone un tiempo mínimo de ciclo de programa.

LMSG Muestra un mensaje de 32 bits en la consola de programación.

TERM Coloca la consola de programación en modo terminal.

MPRF Refresco de unidades de alta densidad.

XFR2 Transferir bloque EM.

XDMR Leer banco de expansión EM.

INT Gestión de interrupciones.

CMCR Macro de la tarjeta PCMCIA.

DSW Entrada de interruptor digital.

TKY Entrada de teclado decimal.

HKY Entrada de teclado hexadecimal.

MTR Entrada de matriz.

7SEG Conversión a 7 segmentos.

Page 257: Soporte Técnico1 Instrucciones de CS1 Nuevas instrucciones

Soporte Técnico 257

Instrucciones modificadas

FAL/FALS Alarma de fallos.WSFT Shift de palabra.PMCR Protocol MacroMSG Mensaje.TTIM Temporizador totalizador.SEND/RECV Network Enviar y Recibir.FCS Frame checksum.SRCH Búsqueda.MAX/MIN Encontrar máximo y mínimo.SUM Suma.PID Control PID.IORD/IOWR Leer/Escribir unidades I/O especiales.