Sunteți pe pagina 1din 90

SIEMENS

ST-PROG3
PROGRAMACIN DE PLCs CON SIMATIC STEP7
NIVEL AVANZADO

Contenido del curso

1 INSTRUCCIONES DEPENDIENTES DE ESTADOS LGICOS


1.1 PANORMICA
1.2 REGISTROS DEL CPU
1.3 REAS DE MEMORIA
1.4 REA DE CARGA Y TRABAJO
1.5 REA DE SISTEMA
1.6 PALABRA DE ESTADO
1.7 FUNCIONES DE SALTO DEPENDIENTE DE BITS DE ESTADO
1.8 FUNCIONES DE SALTO DEPENDIENTES DE CDIGOS DE
CONDICIN
1.9 DISTRIBUIDOR DE SALTOS
1.10 PROGRAMACIN DE INSTRUCCIONES LOOP
1.11 INSTRUCCIONES DE FIN DE BLOQUE

2 FUNCIONES CON ACUMULADOR


2.1 PANORMICA
2.2 INSTRUCCIN TAK
2.3 INSTRUCCIN PUSH Y POP
2.4 INSTRUCCIN ENT Y LEAVE (SLO PARA S7-400)
2.5 OPERACIONES ARITMTICAS
2.6 OPERACIONES LGICAS CON PALABRAS
2.7 INSTRUCCIN TAW Y TAD
2.8 INSTRUCCIN INC Y DEC
2.9 INSTRUCCIN COMPLEMENTO A 1
2.10 INSTRUCCIN COMPLEMENTO A 2

3 INSTRUCCIONES CON NMERO REAL


3.1 REPRESENTACIN DE NMEROS REALES
3.2 INSTRUCCIONES BSICAS
3.3 FUNCIONES MATEMTICAS ADICIONALES
3.4 FUNCIONES TRIGONOMTRICAS Y FUNCIONES INVERSAS
3.5 OTRAS INSTRUCCIONES

4 DIRECCIONAMIENTO INDIRECTO
4.1 OPCIONES DE DIRECCIONAMIENTO CON STEP7
4.2 DIRECCIONAMIENTO DIRECTO DE VARIABLES
4.3 DIRECCIONAMIENTO DIRECTO DE VARIABLES CON DB
4.4 PUNTEROS
4.4.1 Puntero de rea

ST PROG3 Nro # i
SIEMENS
4.4.2 Puntero de DB
4.4.3 Puntero ANY
4.5 TIPOS DE DIRECCIONAMIENTO INDIRECTO
4.5.1 General
4.5.2 Direccionamiento indirecto de memoria
4.5.3 Direccionamiento indirecto de registro de rea interna
4.5.4 Direccionamiento indirecto de registro de rea cruzada
4.6 TRABAJANDO CON REGISTROS DE DIRECCIONES
4.6.1 Cargando en un registro de direcciones
4.6.2 Transfiriendo desde un registro de direcciones
4.6.3 Intercambiar el contenido de los registros de direcciones
AR1 y AR2
4.6.4 Sumando a un registro de direcciones

5 TIPOS DE DATOS Y VARIABLES EN STEP7


5.1 VISTA GENERAL DE LOS TIPOS DE DATOS
5.2 TIPOS DE DATOS ELEMENTALES EN STEP7
5.3 TIPOS DE DATOS COMPLEJOS EN STEP7
5.4 TIPOS DE DATOS DEFINIDOS POR USUARIO: UDT

6 LLAMADA DE BLOQUES Y MULTI-INSTANCIAS

7 USO DE BIBLIOTECA
7.1 INTRODUCCIN A BIBLIOTECAS
7.2 VISTA GENERAL DE FUNCIONES DE SISTEMA (SFC)
7.3 VISTA GENERAL DE BLOQUES DE FUNCIONES DE SISTEMA
(SFB)
7.4 BIBLIOTECA PARA CONVERSIN DE BLOQUES
7.5 BIBLIOTECA PARA COMUNICACIN
7.6 BIBLIOTECA PARA CONTROL PID

8 MANEJO DE ERRORES SNCRONOS Y ASNCRONOS


8.1 MANEJO DE ERRORES ASNCRONOS
8.2 MANEJO DE LOS BLOQUES DE ORGANIZACIN DE
ERRORES
8.3 MANEJO DE ERRORES SNCRONOS
8.4 MSCARA DE ERRORES SNCRONOS

9 GENERANDO PROGRAMAS CON EDITOR DE TEXTOS


9.1 INICIANDO UN EDITOR DE TEXTOS
9.2 GENERACIN DE PROGRAMAS COMO EDITOR DE TEXTOS
9.3 INSERTANDO PLANTILLAS DE BLOQUES, BLOQUES Y
PROGRAMAS

ST PROG3 Nro # i
i
SIEMENS
1.INSTRUCCIONES DEPENDIENTES DE ESTADOS
LGICOS

1.1 PANORMICA

Todas las CPU SIMATIC S7 disponen de una serie de registros y reas


de memoria para asegurar una ejecucin eficiente de un programa.

1.2 REGISTROS DEL CPU

Los registros del CPU son usados para direccionar o procesar datos. Los
datos, con ayuda de comandos asociados (L, T, ), pueden ser cambiados
entre reas de memoria y registros del CPU.

Acumuladores (ACU1 y ACU2)

El acumulador 1 (ACU 1) y el acumulador 2 (ACU 2) son dos registros


universales de 32 bits que se emplean para procesar bytes, palabras y palabras
dobles. En estos acumuladores se pueden cargar constantes o valores
depositados en la memoria como operandos y ejecutar operaciones lgicas con
ellos. Tambin es posible transferir el resultado en ACU 1 a una direccin (un
mdulo de datos, una salida, etc).

Cada acumulador puede descomponerse en dos palabras de 16 bits


(palabra baja y alta). La palabra baja contiene los bits de menor peso y la alta
los de mayor peso lgico.

Registro de direcciones

Dos registros de direcciones usados como punteros para el


direccionamiento indirecto de registros.

Registro de bloque de datos

Contienen los nmeros de los bloques de datos que estn abiertos


(activos). Es posible que dos DBs se encuentren simultneamente abiertos.

Palabra de estado

Contiene varios bits, que reflejan el resultado de un estado lgico de


instrucciones individuales dentro de la ejecucin de un programa.

1.3 REAS DE MEMORIA

ST PROG3 Nro # 1
SIEMENS

Las memorias de las CPUs S7 se dividen en tres (03) reas.

Memoria de Carga

Permite almacenar el programa de usuario sin asignacin simblica de


operandos o comentarios (estos permanecen en la memoria de la PG). La
memoria de carga puede ser RAM o EPROM.

Memoria de Trabajo (RAM integrada)

Contiene las partes del programa S7 relevantes para la ejecucin del


programa. La ejecucin del programa tiene lugar exclusivamente en el rea
correspondiente a las memorias de trabajo y de sistema.

Memoria de Sistema (RAM)

Contiene los elementos de memoria que cada CPU pone a disposicin


del programa de usuario tales como: imgenes de proceso de las entradas y
salidas, marcas, temporizadores y contadores. Contiene adems las pilas de
bloques e interrupciones. La memoria de sistema del CPU ofrece adems una
memoria temporal (pilas de datos locales) asignada a programa para los datos
locales del bloque llamado. Estos datos slo tienen vigencia mientras est
activo el bloque correspondiente.

Fig. 1-1 rea de memoria de las CPUs

1.4 MEMORIA DE CARGA Y DE TRABAJO

ST PROG3 Nro # 2
SIEMENS
Si el programa de usuario se carga en la CPU desde la unidad de
programacin, se cargan solamente los bloques lgicos y de datos en las
memorias de carga y de trabajo de la CPU. La asignacin simblica de
operando (tabla de smbolos) y los comentarios de los bloques permanecen en
la memoria de la PG.

Para garantizar una rpida ejecucin del programa de usuario y no


sobrecargar innecesariamente la memoria de trabajo ampliable, en dicha
memoria se cargan nicamente aquellas partes de los bloques que son
relevantes para la ejecucin del programa.

Las partes de los bloques que no son necesarias para ejecutar el


programa (p. ej., encabezamientos de bloques) permanecen en la memoria de
carga.

Mostraremos la manera cmo se carga el programa en la memoria de la


CPU.

Fig. 1.-2 Carga de programa en el CPU

La CPU guarda completamente en la memoria de trabajo los bloques de


datos que se hayan creado mediante funciones del sistema (SFC 22) en el
programa de usuario.

1.5 MEMORIA DE SISTEMA

La memoria de sistema de las CPUs S7 est subdividida en reas de


operando. El uso de las operaciones correspondientes permite direccionar los
datos en el programa directamente en las diferentes reas de operandos.

ST PROG3 Nro # 3
SIEMENS
rea de operandos Acceso a travs Notacin Descripcin
de unidades del S7
siguiente tamao
Imagen del proceso Entrada (bit) E Al comienzo de cada
de las entradas ciclo, la CPU lee las
entradas de los
mdulos de entradas y
memoriza los valores
en la PAE
Byte de entrada EB
Palabra de EW
entrada
Palabra doble de ED
entrada
Imagen de proceso Salida (bit) A Durante el ciclo, el
de las salida programa calcula los
valores para las salidas
y los deposita en la
PAA. Al final del ciclo,
la CPU escribe los
valores de salida
calculados en los
mdulos de salidas.
Byte de salida AB
Palabra de salida AW
Palabra doble de AD
salida
Marcas Marca (bit) M Esta rea ofrece
capacidad de memoria
para los resultados
intermedios calculados
en el programa
Byte de marcas MB
Palabra de MW
marcas
Palabra doble de MD
marcas
Temporizadores Temporizador (T) T Contiene los
temporizadores
disponibles
Contadores Contador (Z) Z Contiene los
contadores disponibles
Bloque de datos Bloque de datos DB Los bloques de datos
abierto con AUF memorizan
DB: informaciones para el
programa
Bit de datos DBX

ST PROG3 Nro # 4
SIEMENS
Byte de datos DBB
Palabra de datos DBW
Palabra doble de DBD
datos
Bloques de DI
datos, abierto
con AUF DI:
Bit de datos DIX
Byte de datos DIB
Palabra de datos DIW
Palabra doble de DID
datos
Datos locales Bit de datos L Contiene los datos
locales temporales de un
bloque durante la
ejecucin de dicho
bloque. La pila L ofrece
tambin memoria para
la transferencia de
parmetros de bloques
y para memorizar los
resultados intermedios
de segmentos KOP.
Byte de datos LB
locales
Palabra de datos LW
locales
Palabra doble de LD
datos locales
rea de periferia: Byte de entrada PEB Las reas de periferia
entradas de periferia de las entradas y
salidas permiten el
acceso directo a
mdulos de entrada y
salida centralizados y
descentralizados.
Palabra de PEW
entrada de
periferia
Palabra doble de PED
entrada de
periferia
rea de periferia: Byte de salida de PAB
salidas periferia
Palabra de salida PAW
de periferia
Palabra doble de PAD

ST PROG3 Nro # 5
SIEMENS
salida de periferia
Fig. 1.-3 xxxx

1.6 PALABRA DE ESTADO

Es un registro de 16 bits que contiene algunos bits a los que puede


accederse en el operando de operaciones lgicas de bits y de palabras. Slo
son tiles los primeros 9 bits, reservndose el uso de los otros 7 bits.

1.6.1 Estructura de la palabra de estado

Bit 0 (ER): 0 indica que la siguiente lnea se ejecuta como nueva


consulta (inhibida). En este estado la consulta se almacena directamente
en RLO.
Bit 1 (RLO): resultado lgico. Aqu se realizan las operaciones a nivel de
bit (AND, OR, etc)
Bit 2 (STA): Bit de estado que corresponde al estado de seal de la
direccin binaria ejecutada de la condicin de consulta en caso de
operaciones lgicas binarias. En el caso de funciones de memoria, el
valor de STA es el mismo valor del valor escrito o corresponde al valor
de la direccin binaria ejecutada. Slo sirve en el test del programa
Bit 3 (OR): Se requiere para el proceso Y delante de O. Este bit indica
que una operacin Y ha dado valor 1, en las restantes operaciones es 0.
Bit 4 (OV): bit de desbordamiento. Se activa (1) por una operacin
aritmtica o de comparacin de coma flotante tras producirse un error
(desbordamiento, operacin no admisible, o relacin incorrecta)
Bit 5 (OS): Bit de desbordamiento memorizado. Se activa junto con OV e
indica que previamente se ha producido un error. Slo puede cambiar a
cero con la instruccin SPS, una operacin de llamada a mdulo, o
porqu se ha alcanzado el fin del mdulo.
Bit 6 (A0) y 7 (A1): cdigos de condicin. Dan informacin sobre los
resultados de los bits siguientes:
Resultado de una operacin aritmtica.
Resultado de una comparacin.
Resultado de una operacin digital.
Bits desplazados por una instruccin de desplazamiento o rotacin.

A1 A0 Verifica si:
0 0 A == 0 Resultado = 0 (ACU2 = ACU1)
1 0 A>0 Resultado > 0 (ACU2 > ACU1)
0 1 A<0 Resultado < 0 (ACU2 < ACU1)
1 1 A AO Operacin invlida (por ej. Divisin por 0)

Bit 8 (RB): resultado binario. Permite interpretar el resultado de una


operacin de palabras como resultado binario e integrarlo en la cadena

ST PROG3 Nro # 6
SIEMENS
de combinaciones lgicas binarias. Ayuda en la implementacin de
mecanismos de EN/ENO para llamado de bloques.

1.6.2 Instrucciones con bits de la palabra de estado

Carga / Transferencia
Es posible cargar el valor de este en el ACU1 o escribir el valor del ACU1
en la palabra de estado.

L STW; // Carga la palabra de estado


//
T STW; // Transfiere a la palabra de estado

Seteando/Reseteando el RLO
SET poner el RLO a 1y CLR pone el mismo a 0. En paralelo con esto, el
bit de estado STA es tambin puesto a 1o a 0. Ambas sentencias son
ejecutadas incondicionalmente.

SET;
S M8.0; // Bit de memoria es seteado
R M8.1 // Bit de memoria es reseteado
CLR;
S Z1; // Resetea el bit de memoria para el ajuste del contador.

Seteando/Reseteando el RB
Con SAVE se puede almacenar el RLO en el bit de resultado binario RB.
SAVE transfiere el estado de seal del RLO al bit de estado RB. SAVE opera
incondicionalmente y no afecta ningn otro bit de estado.

SET;
SAVE; //Poner RB a 1

UN OV;
SAVE; // Poner el RB a 0 en Overflow (OV)

1.6.3 Bit RB y ENO en una llamada de bloque o funcin compleja

El usuario puede modificar la llamada con ayuda de una entrada EN


(entrada habilitacin) que existe en todo cajetn de llamada de bloque o funcin
compleja en esquema de contactos (KOP).

Un bloque llamado o una funcin compleja puede ser sealizado con


ayuda de una habilitacin de salida ENO si es que no fue ejecutado o ejecutado
sin error. El bit RB de la palabra de estado est disponible para poder salvar los
errores.

ST PROG3 Nro # 7
SIEMENS

1.7 FUNCIONES DE SALTO DEPENDIENTES DE BITs DE ESTADO

Funciones de salto
Con las funciones de salto, el PLC puede interrumpir el procesamiento
lineal de un programa y continuar en otra posicin dentro del bloque.

Salto incondicional
Una funcin de salto SPA siempre ser ejecutada independiente de
cualquier condicin. SPA interrumpe el procesamiento lineal de un programa y
salta hacia la meta (label) indicada en la instruccin de salto. SPA no afecta los
bits de estado.

Funciones de salto con RLO y RB


Un segmento del programa puede depender de los estados de seal de
los bits RLO y RB. Adicionamente es posible almacenar los bits de estado RLO
y RB al mismo tiempo que son verificados.

Funciones de salto con OV y OS


Un segmento de un programa puede ser ejecutado dependiendo de los
bits de estado OV y OS. Esto le permite verificar si en resultado de una
operacin clculo se encuentra dentro del rango numrico permisible.

Funciones disponibles

SPA label Salto incondicional


SPB label Salta si el bit RLO = 1
SPBN label Salta si el bit RLO = 0
SPBB label Salta si el bit RLO = 1 y salva el RLO en BR
SPBNB label Salta si el bit RLO = 0 y salva el RLO en BR
SPBI label Salta si el bit RB = 1
SPBIN label Salta si el bit RB = 0
SPO label Salta si el bit OV = 1
SPS label Salta si el bit OS = 1

1.8 FUNCIONES DE SALTO DEPENDIENTES DE CDIGOS DE CONDICIN

Funciones de salto con A0 y A1


Un segmento de un programa puede estar condicionado a los bits de
estado A0 y A1. Esto le permite, por ejemplo, verificar si el resultado de una
operacin es positivo, cero o negativo.

ST PROG3 Nro # 8
SIEMENS

Funciones disponibles

SPZ label Salta si los bits A0 y A1 son 0 (Resultado = 0)


SPN label Salta si los bits A0 y A1 son diferentes (Resultado <> 0 )
SPP label Salta si el bit A0 = 0 y A1 = 1 (Resultado > 0)
SPM label Salta si el bit A0 = 1 y A1 = 0 (Resultado < 0)
SPPZ label Combina los saltos SPZ y SPP (Resultado >=0)
SPMZ label Combina los saltos SPM y SPZ (Resultado <=0)
SPU label Salta si el bit A0 = 1 y A1 = 1 (Resultado invlido o
divisin por cero)

1.9 DISTRIBUIDOR DE SALTOS

El distribuidor de saltos SPL permite especificar saltos a secciones de


programa condicionado al nmero de posiciones indicados. Esta instruccin
trabaja con una lista de funciones de salto SPA.

La lista inmediatamente sigue una funcin de salto SPL que puede


contener hasta 255 entradas. Existe una meta de salto que apunta al fin de la
lista (primera sentencia luego de la lista).

L # de posiciones;
SPL End;
SPA M0;
SPA M1;

SPA Mx;
End:

En el ejemplo, la variable # de posiciones, carga un nmero en el ACU1.


Luego es seguido por el distribuidor de saltos SPL con la meta de salto hacia el
final de la lista de operaciones SPA.

El nmero de saltos a ser ejecutado est en el byte derecho del ACU1. Si


el ACU1 contiene el valor 0, el primer salto es ejecutado, y si contiene el valor
1, el segundo salto es realizado y as sucesivamente.

SPL no est sujeto a condiciones y no modifica los bits de estado.

1.10 PROGRAMACIN DE INSTRUCCIONES LOOP

La operacin LOOP permite simplificar la programacin de lazos de


programa. LOOP interpreta la palabra derecha del ACU1 cmo nmero sin
signo con un rango desde 0 hasta 65535.

ST PROG3 Nro # 9
SIEMENS
Cundo es procesado, LOOP primero decrementa el contenido del
acumulador de 1 en 1. Si el valor no es cero, el salto es ejecutado hacia la meta
especificada.

Si el valor es igual a cero luego de decrementar, el salto no es ejecutado


y la prxima sentencia es procesada.

L Number;
Next: T Counter;
...


L Counter;
LOOP Next;

La variable Number contiene el nmero de loop ingresados. La variable


Counter contiene los loops ingresados a ser procesados.

Luego del primer paso, Counter es pre-asignado con el nmero de loops


ingresados. Al final del loop, el contenido del Counter es cargado en el
acumulador y decrementado por la sentencia LOOP.

1.11 INSTRUCCIONES DE FIN DE BLOQUE

Es posible finalizar el procesamiento de bloques con la instruccin BEB


dependiendo del resultado lgico RLO y con las instrucciones BE y BEA de
manera incondicional.

BE
Cundo BE es procesado, el bloque que actualmente est siendo
ejecutado es finalizado. Una funcin de retorno es realizado al bloque
previamente procesado y que realiz la funcin de llamada.

BE es siempre la ltima instruccin de un bloque.

BEA
Cundo BEA es procesado, el bloque que actualmente est siendo
ejecutado es finalizado. Una funcin de retorno es realizado al bloque
previamente procesado y que realiz la funcin de llamada.

A diferencia de la instruccin BE, es posible programar varias veces la


instruccin BEA dentro de un bloque.

BEB
La ejecucin del BEB depende del resultado lgico RLO. Si el RLO es 1
cundo BEB es ejecutado, la sentencia es realizada y el bloque que

ST PROG3 Nro # 1
0
SIEMENS
actualmente est siendo procesado es terminado. Una funcin de retorno es
realizado al bloque previamente procesado y que realiz la funcin de llamada.

Si el RLO es 0 cundo BEB es ejecutado, la sentencia no es realizada.


El CPU poner el RLO a 1 y procesa la sentencia siguiente BEB.

ST PROG3 Nro # 1
1
SIEMENS
2.FUNCIONES CON ACUMULADORES

2.1 PANORMICA

Las funciones con acumuladores transfieren los valores de un


acumulador a otro o reemplazan bytes en ACU 1. Estas funciones son
ejecutadas independientemente del resultado de las operaciones lgicas o de
los bits de estado. Tampoco afectan el RLO o los bits de estado.

Instrucciones que modifican varios acumuladores


TAK: intercambia los contenidos del ACU 1 y 2
PUSH: Copia el contenido completo del ACU1 al ACU2
POP: Copia el contenido completo del ACU2 al ACU1
ENT: Copia el contenido del ACU3 al ACU4 y el contenido del
ACU2 al ACU3
LEAVE: Copia el contenido del ACU3 al ACU2 y el contenido del
ACU4 al ACU3
Instrucciones aritmticas e instrucciones lgicas con palabra

Instrucciones que modifican solamente el ACU1


INC: Incrementa el contenido del ACU1 en 1
DEC: Decrementa el contenido del ACU1 en 1
TAW: Intercambia el orden de los bytes del ACU1 (16 bits)
TAD: Intercambia el orden de los byte en el ACU1 (32 bits)
INVI, INVD: Forma el complemento a 1
NEGI, NEGD, NEGR: Forma el complemento a 2 (negativo)
RLDA, RRDA: Rota izquierda/derecha el contenido del ACU1

2.2 INSTRUCCIN TAK

ST PROG3 Nro # 1
2
SIEMENS

Esta funcin permite intercambiar el contenido del ACU1 con el contenido


del ACU2. La operacin se ejecuta sin considerar ni afectar a los bits de la
palabra de estado. Los contenidos del ACU 3 y del ACU 4 quedan inalterados
(en las CPU con cuatro acumuladores).

L MW10//Cargar el contenido de MW10 en ACU1.


L MW12//Cargar el contenido de ACU1-L en ACU2
>I //Comprobar si ACU2 (MW10) es mayor que ACU1 (MW12).
SPB NEXT //Salta a la meta NEXT, si el ACU 2 es mayor que el ACU 1.
TAK //Intercambiar los contenidos de ACU1 y ACU2.
NEXT:-I //Restar el contenido de ACU1 del contenido de ACU2.
T MW14//Transferir el resultado a MW14.

2.3 INSTRUCCIN PUSH Y POP

2.3.1 PUSH

La instruccin PUSH (CPU con dos acumuladores) copia el contenido


completo del ACU1 al ACU2. El ACU1 no se altera. La operacin se ejecuta sin
considerar ni afectar a los bits de la palabra de estado.

ST PROG3 Nro # 1
3
SIEMENS
L MW10//Cargar el contenido de MW10 en el ACU1.
PUSH //Copiar el contenido completo del ACU1 al ACU2.

2.3.2 POP

La instruccin POP (CPU con dos acumuladores) copia el contenido


completo del ACU2 al ACU1. El ACU2 no se altera. La operacin se ejecuta sin
considerar ni afectar a los bits de la palabra de estado.

T MD10 //Transferir el contenido del ACU1 (= valor A) a MD10.


POP //Copiar el contenido completo del ACU2 al ACU1.
T MD14 //Transferir el contenido del ACU1 (= valor B) a MD14.

2.4 INSTRUCCIN ENT Y LEAVE (Disponible para S7-400)

2.4.1 ENT

La instruccin ENT copia el contenido del ACU3 al ACU4 y el contenido


del ACU2 al ACU3. Si se programa la operacin ENT directamente antes de
una operacin de carga, se puede salvar con ello un resultado parcial en el
ACU3.

L DBD0 //Cargar el valor de la palabra doble de datos DBD0 en el ACU1.


L DBD4 //Copiar el valor del ACU1 al ACU2. Cargar el valor de la palabra
doble de datos DBD4 en el ACU1.
+R //Sumar los contenidos del ACU1 y el ACU2 y almacenar el resultado
en el ACU1.
L DBD8 //Copiar el valor del ACU 1 al ACU 2. Cargar el valor de la palabra
doble de datos DBD8 en el ACU1.
ENT //Copiar el contenido del ACU3 al ACU4. Copiar el contenido del
ACU2 (resultado parcial) al ACU3.
L DBD12 //Cargar el valor de la palabra doble de datos DBD12 en el ACU1.

ST PROG3 Nro # 1
4
SIEMENS
-R //Restar el contenido del ACU1 del contenido del ACU2 y almacenar
el resultado en el ACU1. Copiar el contenido del ACU3 en el ACU2 y
el contenido del ACU4 al ACU3.
/R //Dividir el contenido del ACU2 (DBD0 + DBD4) por el contenido del
ACU1 (DBD8 - DBD12) y almacena el resultado en el ACU1.
T DBD16 //Transferir el resultado (ACU 1) a la palabra doble de datos DBD16

2.4.2 LEAVE

La instruccin LEAVE copia el contenido del ACU3 al ACU2 y el


contenido del ACU4 al ACU3. Si se programa la operacin LEAVE directamente
antes de una operacin de desplazamiento y rotacin que combina
acumuladores, entonces la operacin LEAVE funciona como una operacin
aritmtica. Los contenidos de ACU1 y ACU4 quedan inalterados.

2.5 OPERACIONES ARITMTICAS

Las instrucciones aritmticas combinan dos valores digitales encontrados


en los acumuladores 1 y 2, de acuerdo a las instrucciones dadas. Los bits de
estado A0, A1, OV y OS dan informacin sobre el resultado final o intermedio
del clculo.

L 0 //Carga el nmero entero 0 en el ACU1.


L 5 //Carga el nmero entero 5 en el ACU1 y el nmero 0 en el ACU2.
PUSH //Copia el contenido del ACU1 al ACU2.
*I //Multiplica el ACU1 por el ACU2
*I //Multiplica el ACU1 por el ACU2

Resultado:
S7-300: ACU1 = 125
S7-400: ACU1 = 0

ST PROG3 Nro # 1
5
SIEMENS

2.6 OPERACIONES LGICAS CON PALABRAS

Las instrucciones lgicas con palabras combinan bit a bit los valores del
ACU1 con una constante o con el contenido del ACU2 y guarda el resultado en
el ACU1.

El contenido de los acumuladores restantes (ACU2 para S7-300,


ACU2, ACU3 y ACU4 para S7-400) permanecen inalterados. Las operaciones
lgicas pueden ser ejecutadas en formatos de palabra o doble palabra.

Las instrucciones AND, OR y XOR estn disponibles como operaciones


lgicas con palabras.

2.7 INSTRUCCIONES TAW Y TAD

TAW invierte el orden de los bytes en el ACU1-L. El resultado se


almacena en el ACU1-L. El ACU1-H y el ACU2 no se alteran. El contenido de
ACU1-LH se desplaza a ACU1-LL y el contenido de ACU1-LL se desplaza a
ACU1-LH,

L MW10 //Cargar el valor de MW10 en el ACU1.

ST PROG3 Nro # 1
6
SIEMENS
TAW //Invertir el orden de los bytes en el ACU1-L.
T MW20 //Transferir el resultado a MW20.

TAD invierte el orden de los bytes en el ACU1. El resultado se almacena


en el ACU1. El ACU2 no se altera.

L MD10 //Cargar el valor de MD10 en el ACU1.


TAD //Invertir el orden de los bytes en el ACU1.
T MD20 //Transferir el resultado a MD20.

2.8 INSTRUCCIONES INC y DEC

INC suma un nmero entero (8 bits) al contenido del ACU1-LL y


almacena el resultado en el ACU1-LL. ACU1-LH, ACU1-H y el ACU2 no se
alteran. La operacin se ejecuta sin considerar ni afectar a los bits de la palabra
de estado.

L MB22 //Cargar el valor de MB22.


INC 1 //Incrementar en 1 ACU1 (MB 22), almacenar el resultado en
ACU1-LL.
T MB22 //Transferir el contenido de ACU1-LL (resultado) de vuelta al
MB22.

DEC resta un nmero entero (8 bits) del contenido del ACU1-LL y


almacena el resultado en el ACU1-LL. ACU1-LH, ACU1-H y Acu2 no se alteran.
La operacin se ejecuta sin considerar ni afectar a los bits de la palabra de
estado.

L MB250 //Cargar el valor de MB250.


DEC 1 //Decrementar en 1 ACU1-LL, almacenar el resultado en
ACU1-LL.
T MB250 //Transferir el contenido de ACU1-LL (resultado) de vuelta al

ST PROG3 Nro # 1
7
SIEMENS
MB2250.

2.9 FORMANDO EL COMPLEMENTO A 1: INVI y INVD

INVI (Complemento a uno de entero de 16 bits) calcula el complemento a


uno de un valor de 16 bits en el ACU1-L; al realizar esta operacin se invierten
todos los bits, es decir, los ceros se sustituyen po unos, y viceversa. El
resultado se almacena en el ACU1-L.

INVD (Complemento a uno de un entero doble) calcula el complemento a


uno de un valor de 32 bits en el ACU1; al realizar esta operacin se invierten
todos los bits, es decir, los ceros se sustituyen po unos, y viceversa. El
resultado se almacena en el ACU1.

2.10 NEGACIN DE NMEROS (COMPLEMENTO A DOS)

ST PROG3 Nro # 1
8
SIEMENS
NEGI (Complemento a dos de un entero) calcula el complemento a dos
de un valor de 16 bits en el ACU1-L; al realizar esta operacin se invierten
todos los bits, es decir, los ceros se sustituyen por unos, y viceversa.
Seguidamente se suma un 1. El resultado se almacena en el ACU1-L. La
operacin Complemento a dos de un entero equivale a una multiplicacin por -
1. Una vez ejecutada la operacin se activan los bits A0, A1, OS y OV de la
palabra de estados.

NEGD (Complemento a dos de un entero doble) calcula el complemento


a dos de un valor de 32 bits en el ACU1; al realizar esta operacin se invierten
todos los bits, es decir, los ceros se sustituyen por unos, y viceversa.
Seguidamente se suma un 1. El resultado se almacena en el ACU1. La
operacin Complemento a dos de un entero equivale a una multiplicacin por -
1. Una vez ejecutada la operacin se activan los bits A0, A1, OS y OV de la
palabra de estados.

NEGR (Invertir un nmero en coma flotante de 32 bits) invierte el nmero


en coma flotante en el ACU1. La operacin invierte el estado del bit 31 en el
ACU1 (signo de la mantisa). El resultado se almacena en el ACU1.

2.11 INSTRUCCIONES DE ROTACIN RLDA Y RRDA

RLDA rota el contenido completo del ACU1 una posicin de bit a la


izquierda mediante el cdigo de condicin A1. Los bits A0 y OV de la palabra de
estado se ponen a 0.

Ejemplo:

ACU1: Y100 0100 1100 0100


A1: X
RLDA
ACU1: 1000 1001 1000 100X
A1: Y

RRDA rota el contenido completo del ACU1 una posicin de bit a la


derecha mediante el cdigo de condicin A1. Los bits A0 y OV de la palabra de
estado se ponen a 0.

Ejemplo:

ACU1: 0100 0100 1100 010Y


A1: X
RRDA
ACU1: X010 0010 0110 0010
A1: Y

ST PROG3 Nro # 1
9
SIEMENS
3.OPERACIONES LGICAS CON PALABRAS

3.1 DESCRIPCIN

Las operaciones lgicas con palabras comparan bit a bit pares de


palabras (16 bits) y palabras dobles (32 bits) segn la lgica de boole. Las
operaciones lgicas con bits permiten ejecutar las ms diversas funciones.

Si el resultado en la salida OUT es diferente de 0, el bit A1 de la palabra


de estado se pone a "1".

Si el resultado en la salida OUT es igual a 0, el bit A1 de la palabra de


estado se pone a "0".

Se dispone de las siguientes operaciones lgicas con palabras:

Palabra de estado
Es un registro de la memoria de la CPU que contiene 16 bits que pueden
direccionarse en el operando de las operaciones lgicas con bits y con
palabras. Solo nos sern de utilidad los 9 primeros bits, estando reservados el
uso de los 7 ltimos. A continuacin pasaremos a describir cada bit:

BIT 0 (ER): 0 indica que la siguiente lnea se ejecuta como nueva


consulta (inhibida). En este estado la consulta se almacena
directamente en RLO.
BIT 1 (RLO): resultado lgico. Aqu se realizan las operaciones a nivel
de bit (como AND, OR, etc.).
BIT 2 (STA): bit de estado. Solo sirve en el test de programa.
BIT 3 (OR): se requiere para el proceso Y delante de O. Este bit indica
que una operacin Y ha dado valor 1, en las restantes operaciones es
0.

ST PROG3 Nro # 2
0
SIEMENS
BIT 4 (OV): bit de desbordamiento. Se activa (1) por una operacin
aritmtica o de comparacin de coma flotante tras producirse un error
(desbordamiento, operacin no admisible, o relacin incorrecta).
BIT 5 (OS): bit de desbordamiento memorizado. Se activa junto con
OV e indica que previamente se ha producido un error. Solo puede
cambiar a cero con la instruccin de salto, una operacin de llamada a
mdulo, o porque se ha alcanzado el fin del mdulo.
BITS 6 (A0) y 7 (A1): cdigos de condicin. Dan informacin sobre los
resultados o bits siguientes:
resultado de una operacin aritmtica.
resultado de una comparacin.
resultado de una operacin digital.
bits desplazados por una instruccin de desplazamiento o rotacin.
BIT 8 (RB): resultado binario. Permite interpretar el resultado de una
operacin de palabras como resultado binario e integrarlo en la
cadena de combinaciones lgicas binarias.

3.2 WAND_W Y LGICA CON PALABRAS

3.2.1 Smbolo

3.2.2 Descripcin

WAND_W (Y lgica con palabras) se activa cuando la entrada de


habilitacin (EN) tiene el estado de seal "1". Esta operacin combina entonces
los dos valores de palabra de IN1 y IN2 bit a bit realizando una Y lgica. Los
valores se interpretan como puras configuraciones binarias. El resultado queda
depositado en la salida OUT. La salida de habilitacin ENO tiene el mismo
estado de seal que EN.

ST PROG3 Nro # 2
1
SIEMENS
3.2.3 Palabra de estado

3.2.4 Ejemplo

La operacin se ejecuta si E 0.0 es 1. Slo son relevantes los bits de 0 a 3 de


MW0; los dems bits son enmascarados por la configuracin binaria de la
palabra en IN2:

A 4.0 ser "1" si se ejecuta la operacin.

3.3 WOR_W O LGICA CON PALABRAS

3.3.1 Smbolo

ST PROG3 Nro # 2
2
SIEMENS
3.3.2 Descripcin

WOR_W (O lgica con palabras) se activa cuando la entrada de


habilitacin (EN) tiene el estado de seal "1". Esta operacin combina los dos
valores de las palabras IN1 y IN2 bit a bit realizando una O lgica. Los valores
se interpretan como puras configuraciones binarias. El resultado queda
depositado en la salida OUT. La salida de habiliatacin ENO tiene el mismo
estado de seal que EN.

3.3.3 Palabra de estado

3.3.4 Ejemplo

La operacin se ejecuta si E 0.0 es 1. Los bits 0 a 3 se ponen a "1", los dems


bits de MW0 no varan.

A 4.0 ser "1" si se ejecuta la operacin.

3.4 WXOR_W O-EXCLUSIVA CON PALABRAS

3.4.1 Smbolo

ST PROG3 Nro # 2
3
SIEMENS

3.4.2 Descripcin

WXOR_W (O exclusiva con palabras) se activa cuando la entrada de


habilitacin (EN) tiene el estado de seal "1". Esta operacin lgica combina los
dos valores de las palabra IN1 y IN2 bit a bit realizando una O exclusiva. Los
valores se interpretan como puras configuraciones binarias. El resultado queda
depositado en la salida OUT. La salida de habiliatacin ENO tiene el mismo
estado de seal que EN.

3.4.3 Ejemplo

La operacin se ejecuta si E 0.0 es 1:

A 4.0 ser "1" si se ejecuta la operacin.

3.5 WAND_DW Y LGICA CON DOBLES PALABRAS

3.5.1 Smbolo

ST PROG3 Nro # 2
4
SIEMENS

3.5.2 Descripcin

WAND_DW (Y lgica con dobles palabras) se activa cuando la entrada


de habilitacin (EN) tiene el estado de seal "1". Esta operacin combina los
dos valores de las dobles palabras IN1 y IN2 bit a bit realizando una Y lgica.
Los valores se interpretan como puras configuraciones binarias. El resultado
queda depositado en la salida OUT. La salida de habilitacin ENO tiene el
mismo estado de seal que EN.

3.5.3 Palabra de estado

3.5.4 Ejemplo

La operacin se ejecuta si E 0.0 es 1. Slo son relevantes los bits 0 y 11 de


MD0, los dems bits son enmascarados por la configuracin binaria de IN2:

A 4.0 ser "1" si se ejecuta la operacin.

3.6 WORD_DW O LGICA CON DOBLES PALABRAS

3.6.1 Smbolo
ST PROG3 Nro # 2
5
SIEMENS

3.6.2 Descripcin

WOR_DW (O lgica con dobles palabras) se activa cuando la entrada de


habilitacin (EN) tiene el estado de seal "1". Esta operacin combina los dos
valores de las dobles palabras IN1 y IN2 bit a bit realizando una O lgica. Los
valores se interpretan como puras configuraciones binarias. El resultado queda
depositado en la salida OUT. La salida de habiliatacin ENO tiene el mismo
estado de seal que EN.

3.6.3 Palabra de estado

3.6.4 Ejemplo

La operacin se ejecuta si E 0.0 es 1. Los bits de 0 a 11 se ponen a "1". Los


dems bits de MWZ no cambian:

ST PROG3 Nro # 2
6
SIEMENS

A 4.0 ser "1" si se ejecuta la operacin.

3.7 WXOR_DW O-EXCLUSIVA CON DOBLES PALABRAS

3.7.1 Smbolo

3.7.2 Descripcin

WXOR_DW (O exclusiva con dobles palabras) se activa cuando la


entrada de habilitacin (EN) tiene el estado de seal "1". Esta operacin lgica
combina los dos valores de las dobles palabras IN1 y IN2 bit a bit realizando
una O exclusiva. Los valores se interpretan como puras configuraciones
binarias. El resultado queda depositado en la salida OUT. La salida de
habilitacin ENO tiene el mismo estado de seal que EN.

3.7.3 Palabra de estado

3.7.4 Ejemplo

ST PROG3 Nro # 2
7
SIEMENS

La operacin se ejecuta si E 0.0 es 1:

A 4.0 ser "1" si se ejecuta la operacin.

ST PROG3 Nro # 2
8
SIEMENS
4.OPERACIONES ARITMTICAS CON ENTEROS

4.1 DESCRIPCIN

Las operaciones aritmticas con enteros sirven para ejecutar las


siguientes operaciones aritmticas con dos enteros (16 y 32 bits):

4.2 EVALUAR BITs DE LA PALABRA DE ESTADO

4.2.1 Descripcin

Las operaciones aritmticas bsicas influyen sobre los siguientes bits de


la palabra de datos:

A1 y A0
OV
OS

Las tablas siguientes muestran el estado de seal de los bits de la


palabra de estado para los resultados de las operaciones con nmeros en coma
fija (16 bit, 32 bit).

ST PROG3 Nro # 2
9
SIEMENS

* El bit OS no se ve influido por el resultado de la operacin.

4.3 ADD_I SUMAR ENTEROS

4.3.1 Smbolo

ST PROG3 Nro # 3
0
SIEMENS

4.3.2 Descripcin

ADD_I (Sumar enteros) suma las entradas IN1 y IN2 si el estado de


seal en la entrada de habilitacin (EN) es "1". La salida OUT proporciona el
resultado. Si el resultado es un valor fuera del margen vlido para enteros (de
16 bits), los bits OV y OS son 1 y ENO es 0, de forma que otras operaciones
que siguen a esta operacin aritmtica, combinadas a travs de ENO
(ejecucin en cascada), no se ejecutan.

4.3.3 Palabra de estado

4.3.4 Ejemplo

El cuadro ADD_I se activa si E 0.0 es 1. El resultado de la suma MW0 + MW2


se deposita en MW10. Si el resultado es un valor fuera del margen vlido para
enteros o si el estado de seal de E 0.0 es 0, la salida A 4.0 se pone a 1.

ST PROG3 Nro # 3
1
SIEMENS
4.4 SUB_I RESTAR ENTEROS

4.4.1 Smbolo

4.4.2 Descripcin

SUB_I (Restar enteros) resta el valor de IN2 del valor de IN1 si el estado
de seal en la entrada de habilitacin (EN) es "1". La salida OUT proporciona el
resultado. Si el resultado es un valor fuera del margen vlido para enteros (de
16 bits), los bits OV y OS son "0" y ENO es "0", de forma que otras operaciones
que siguen a esta operacin aritmtica, combinadas a travs de ENO
(ejecucin en cascada), no se ejecutan.

4.4.3 Palabra de estado

4.4.4 Ejemplo

El cuadro SUB_I se activa si E 0.0 es 1. El resultado de la sustraccin MW0 -


MW2 se deposita en MW10. Si el resultado es un valor fuera del margen vlido
para enteros (de 16 bits) o si el estado de seal de E 0.0 es 0, la salida A 4.0 se
pone a 1.

4.5 MUL_I MULTIPLICAR ENTEROS


ST PROG3 Nro # 3
2
SIEMENS

4.5.1 Smbolo

4.5.2 Descripcin

MUL_I (Multiplicar enteros) multiplica los valores de las entradas IN1 y


IN2 si el estado de seal en la entrada de habilitacin (EN) es "1". La salida
OUT proporciona el resultado. Si el resultado es un valor fuera del margen
vlido para enteros (de 16 bits), los bits OV y OS son "1" y ENO es "0", de
forma que otras operaciones que siguen a esta operacin aritmtica,
combinadas a travs de ENO (ejecucin en cascada), no se ejecutan.

4.5.3 Palabra de estado

4.5.4 Ejemplo

El cuadro MUL_I se activa si E 0.0 es 1. El resultado de la multiplicacin MW0 x


MW2 se deposita en MW10. Si el resultado es un valor fuera del margen vlido
para enteros, o si el estado de seal de E 0.0 es 0, la salida A 4.0 se pone a 1.

4.6 DIV_I DIVIDIR ENTEROS

ST PROG3 Nro # 3
3
SIEMENS

4.6.1 Smbolo

4.6.2 Descripcin

DIV_I (Dividir enteros) divide el valor de IN1 entre el valor de IN2 si el


estado de seal en la entrada de habilitacin (EN) es "1". La salida OUT
proporciona el resultado. Si el resultado es un valor fuera del margen vlido
para enteros, los bits OV y OS son "1" y ENO es "0", de forma que otras
operaciones que siguen a esta operacin aritmtica, combinadas a travs de
ENO (ejecucin en cascada), no se ejecutan.

4.6.3 Palabra de estado

4.6.4 Ejemplo

El cuadro DIV_I se activa si E 0.0 es 1. El resultado de la divisin de MW0 entre


MW2 se deposita en MW10. Si el resultado es un valor fuera del margen vlido
para enteros, o si el estado de seal de E 0.0 es 0, la salida A 4.0 se pone a 1.

4.7 ADD_DI SUMAR ENTEROS DOBLES

ST PROG3 Nro # 3
4
SIEMENS

4.7.1 Smbolo

4.7.2 Descripcin

ADD_DI (Sumar enteros dobles) suma las entradas IN1 y IN2 si el estado
de seal en la salida de habilitacin es "1". La salida OUT proporciona el
resultado. Si el resultado es un valor fuera del margen vlido para enteros
dobles, los bits OV y OS son 1 y ENO es 0, de forma que otras operaciones
que siguen a esta operacin aritmtica, combinadas a travs de ENO
(ejecucin en cascada), no se ejecutan.

4.7.3 Palabra de estado

4.7.4 Ejemplo

El cuadro ADD_DI se activa si E 0.0 es 1. El resultado de la suma MD0 + MD4


se deposita en MD10. Si el resultado es un valor fuera del margen vlido para
enteros dobles, o si el estado de seal de E 0.0 es 0, la salida A 4.0 se pone a
1.

4.8 SUB_DI RESTAR ENTEROS DOBLES

ST PROG3 Nro # 3
5
SIEMENS
4.8.1 Smbolo

4.8.2 Descripcin

SUB_DI (Restar enteros dobles) resta el valor IN2 del valor de IN1 si el
estado de seal en la entrada de habilitacin (EN) es "1". La salida OUT
proporciona el resultado. Si el resultado es un valor fuera del margen vlido
para enteros dobles, los bits OV y OS son "1" y ENO es "0", de forma que otras
operaciones que siguen a esta operacin aritmtica, combinadas a travs de
ENO (ejecucin en cascada), no se ejecutan.

4.8.3 Palabra de estado

4.8.4 Ejemplo

El cuadro SUB_DI se activa si E 0.0 es 1. El resultado de la sustraccin MD0 -


MD4 se deposita en MD10. Si el resultado es un valor fuera del margen vlido
para enteros dobles, o si el estado de seal de E 0.0 es 0, la salida A 4.0 se
pone a 1.

4.9 MUL_DI MULTIPLICAR ENTEROS DOBLES

ST PROG3 Nro # 3
6
SIEMENS
4.9.1 Smbolo

4.9.2 Descripcin

MUL_DI (Multiplicar enteros dobles) multiplica los valores de las entradas


IN1 y IN2 si el estado de seal en la entrada de habilitacin es "1". La salida
OUT proporciona el resultado. Si el resultado es un valor fuera del margen
vlido para enteros dobles, los bits OV y OS son "1" y ENO es "0", de forma
que otras operaciones que siguen a esta operacin aritmtica, combinadas a
travs de ENO (ejecucin en cascada), no se ejecutan.

4.9.3 Palabra de estado

4.9.4 Ejemplo

El cuadro MUL_DI se activa si E 0.0 es 1. El resultado de la multiplicacin MD0


x MD4 se deposita en MD10. Si el resultado es un valor fuera del margen vlido
para enteros dobles, o si el estado de seal de E 0.0 es 0, la salida A 4.0 se
pone a 1.

4.10 DIV_DI DIVIDIR ENTEROS DOBLES

ST PROG3 Nro # 3
7
SIEMENS
4.10.1 Smbolo

4.10.2 Descripcin

DIV_DI (Dividir enteros dobles) divide el valor de IN1 entre el valor de


IN2 si el estado de seal en la entrada de habilitacin (EN) es "1". La salida
OUT proporciona el resultado (parte entera). El elemento Dividir enteros dobles
no genera ningn resto de divisin. Si el resultado es un valor fuera del margen
vlido para enteros dobles, los bits OV y OS son "1" y ENO es "0", de forma
que otras operaciones que siguen a esta operacin aritmtica, combinadas a
travs de ENO (ejecucin en cascada), no se ejecutan.

4.10.3 Palabra de estado

4.10.4 Ejemplo

El cuadro DIV_DI se activa si E 0.0 es 1. El resultado de la divisin de MD0 por


MD4 se deposita en MD10. Si el resultado es un valor fuera del margen vlido
para enteros dobles, o si el estado de seal de E 0.0 es 0, la salida A 4.0 se
pone a 1.
4.11 MOD_DI OBTENER EL RESULTADO DE UNA DIVISN DE
ENTEROS DOBLES

ST PROG3 Nro # 3
8
SIEMENS
4.11.1 Smbolo

4.11.2 Descripcin

MOD_DI (Obtener el resto de una divisin de enteros dobles) divide el


valor de IN1 entre el valor de IN2 si el estado de seal en la entrada de
habilitacin (EN) es "1". La salida OUT proporciona el resultado, esto es, el
resto de la divisin. Si el resultado es un valor fuera del margen vlido para
enteros dobles, los bits OV y OS son "1" y ENO es "0", de forma que otras
operaciones que siguen a esta operacin aritmtica, combinadas a travs de
ENO (ejecucin en cascada), no se ejecutan.

4.11.3 Palabra de estado

4.11.4 Ejemplo

El cuadro DIV_DI se activa si E 0.0 es 1. El resto de la divisin de MD0 entre


MD4 se deposita en MD10. Si el resto de la divisin es un valor fuera del
margen vlido para enteros dobles, o si el estado de seal de E 0.0 es 0, la
salida A 4.0 se pone a 1.

ST PROG3 Nro # 3
9
SIEMENS
5.OPERACIONES ARITMTICAS EN COMA FLOTANTE

5.1 LISTA DE OPERACIONES

5.1.1 Descripcin

Los nmeros de 32 bits IEEE en coma flotante pertenecen al tipo de


datos denominado "REAL. Las operaciones aritmticas con nmeros en coma
flotante sirven para ejecutar las siguientes operaciones aritmticas con dos
nmeros en coma flotante IEEE de 32 bits:

Con las operaciones aritmticas de nmeros en coma flotante se pueden


ejecutar las siguientes funciones con un nmero en coma flotante (32 bit, IEEE-
FP):

5.2 EVALUAR LOS BITs DE LA PALABRA DE ESTADO

5.2.1 Descripcin

Las operaciones aritmticas bsicas afectan a los siguientes bits de la


palabra de estado:
A1 y A0
OV
OS

ST PROG3 Nro # 4
0
SIEMENS
Las tablas siguientes muestran el estado de seal de los bits de la
palabra de estado para los resultados de operaciones con nmeros en coma
flotante (32 bits).

5.3 ADD_R SUMAR NMEROS EN COMA FLOTANTE

5.3.1 Smbolo

5.3.2 Palabra de estado

ST PROG3 Nro # 4
1
SIEMENS
5.3.3 Descripcin

ADD_R (Sumar nmeros en coma flotante) suma los valores de las


entradas IN1 y IN2 cuando la entrada de habilitacin (EN) tiene el estado de
seal "1". El resultado se deposita en la salida OUT. Si el resultado se
encuentra fuera del margen vlido para nmeros en coma flotante
(desbordamiento positivo o negativo), el bit OV y el bit OS son 1 y ENO es 0, de
forma que las dems operaciones que siguen a esta operacin aritmtica,
combinadas a travs de ENO (ejecucin en cascada), no se ejecutan.

5.3.4 Ejemplo

El cuadro ADD_R se activa si E 0.0 es 1. El resultado de la suma MD0 + MD4


se deposita en MD10. Si el resultado se encuentra fuera del margen vlido para
nmeros en coma flotante, o si no se ejecuta esta instruccin (E 0.0 = 0), se
activa la salida A 4.0.

5.4 SUB_R RESTAR NMEROS EN COMA FLOTANTE

5.4.1 Smbolo

5.4.2 Palabra de estado

ST PROG3 Nro # 4
2
SIEMENS
5.4.3 Descripcin

SUB_R (Restar nmeros en coma flotante) resta los valores IN2 de IN1
cuando la entrada de habilitacin (EN) tiene el estado de seal "1". El resultado
de la sustraccin se deposita en la salida OUT. Si el resultado se encuentra
fuera del margen vlido para nmeros en coma flotante (desbordamiento
positivo o negativo), los bits OV y OS son 1 y ENO es 0, de forma que las
dems operaciones que siguen a esta operacin aritmtica, combinadas a
travs de ENO (ejecucin en cascada), no se ejecutan.

5.4.4 Ejemplo

El cuadro SUB_R se activa cuando E 0.0 es 1. El resultado de la sustraccin


MD0 - MD4 se deposita en MD10. Si el resultado se encuentra fuera del margen
vlido para nmeros en coma flotante, o si no se ejecuta esta instruccin (E 0.0
= 0), se activar la salida A 4.0.

5.5 MUL_R MULTIPLICAR NMEROS EN COMA FLOTANTE

5.5.1 Smbolo

5.5.2 Palabra de estado

ST PROG3 Nro # 4
3
SIEMENS
5.5.3 Descripcin

MUL_R (Multiplicar nmeros en coma flotante) multiplica el valor de IN1


por el valor de IN2 cuando la entrada de habilitacin (EN) tiene el estado de
seal "1". El resultado se deposita en la salida OUT. Si el resultado se
encuentra fuera del margen vlido para nmeros en coma flotante
(desbordamiento positivo o negativo), el bit OV y el bit OS son 1 y ENO es 0, de
forma que las dems operaciones operaciones que siguen a esta operacin
aritmtica, combinadas a travs de ENO (ejecucin en cascada), no se
ejecutan.

5.5.4 Ejemplo

El cuadro MUL_R se activa cuando E 0.0 es 1. El resultado de la multiplicacin


MD0 x MD4 se deposita en MD0. Si el resultado se encuentra fuera del margen
vlido para nmeros en coma flotante, o si no se ejecuta esta instruccin (E 0.0
= 0), se activar la salida A 4.0.

5.6 DIV_R DIVIDIR NMEROS EN COMA FLOTANTE

5.6.1 Smbolo

ST PROG3 Nro # 4
4
SIEMENS
5.6.2 Palabra de estado

5.6.3 Descripcin

DIV_R (Dividir nmeros en coma flotante) divide el valor de IN1 entre el


valor de IN2 cuando la entrada de habilitacin (EN) tiene el estado de seal "1".
El resultado se deposita en la salida OUT. Si el resultado se encuentra fuera del
margen vlido para nmeros en coma flotante (desbordamiento positivo o
negativo), el bit OV y el bit OS son 1 y ENO es 0, de forma que las dems
operaciones que siguen a esta operacin aritmtica, combinadas a travs de
ENO (ejecucin en cascada), no se ejecutan.

5.6.4 Ejemplo

El cuadro DIV_R se activa cuando E 0.0 es 1. El resultado de la divisin de


MD0 entre MD4 se deposita en MD10. Si el resultado se encuentra fuera del
margen vlido para nmeros en coma flotante, o si no se ejecuta esta
instruccin (E 0.0 = 0), se activar la salida A 4.0.

5.7 ABS CALCULAR EL VALOR ABSOLUTO

5.7.1 Smbolo

ST PROG3 Nro # 4
5
SIEMENS
5.7.2 Palabra de estado

5.7.3 Descripcin

ABS (Calcular el valor absoluto de un nmero en coma flotante) calcula


el valor absoluto de un nmero en coma flotante.

5.7.4 Ejemplo

Si E 0.0 = 1 se calcula el valor absoluto de MD8 y el resultado se escribe en


MD12. De MD8 = + 6,234 resulta MD12 = 6,234. La salida A 4.0 ser "1" si no
se lleva a cabo la conversin (ENO = EN = 0).

5.8 SQR CALCULAR EL CUADRADO

5.8.1 Smbolo

5.8.2 Palabra de estado

ST PROG3 Nro # 4
6
SIEMENS
5.8.3 Descripcin

SQR (Calcular el cuadrado de un nmero en coma flotante) calcula el


cuadrado de un nmero flotante.

5.9 SQRT CALCULAR LA RAZ CUADRADA

5.9.1 Smbolo

5.9.2 Palabra de estado

5.9.3 Descripcin

SQRT (Calcular la raz cuadrada de un nmero en coma flotante) calcula


la raz cuadrada de un nmero en coma flotante. Esta operacin arroja un
resultado positivo si el operando es mayor que "0". nica excepcin: la raz
cuadrada de -0 es -0.

5.10 EXP CALCULAR EL EXPONENTE

5.10.1 Smbolo

ST PROG3 Nro # 4
7
SIEMENS

5.10.2 Palabra de estado

5.10.3 Descripcin

EXP (Calcular el exponente de un nmero en coma flotante) calcula el


exponente de un nmero en coma flotante con la base e (=2,71828...).

5.11 LN CALCULAR EL LOGARITMO NATURAL

5.11.1 Smbolo

5.11.2 Palabra de estado

ST PROG3 Nro # 4
8
SIEMENS
5.11.3 Descripcin

LN (Calcular el logaritmo natural de un nmero en coma flotante) calcula


el logaritmo natural de un nmero en coma flotante.

5.12 SIN CALCULAR EL SENO

5.12.1 Smbolo

5.12.2 Palabra de estado

5.12.3 Descripcin

SIN (Calcular el seno de un nmero en coma flotante) calcula el seno de


un nmero en coma flotante. El nmero en coma flotante representa aqu un
ngulo en radianes.

5.13 COS CALCULAR EL COSENO

5.13.1 Smbolo

ST PROG3 Nro # 4
9
SIEMENS

5.13.2 Palabra de estado

5.13.3 Descripcin

COS (Calcular el coseno de un nmero en coma flotante) calcula el


coseno de un nmero en coma flotante, siendo ste el valor de un ngulo
expresado en radianes.

5.14 TAN CALCULAR LA TANGENTE

5.14.1 Smbolo

5.14.2 Palabra de estado

ST PROG3 Nro # 5
0
SIEMENS
5.14.3 Descripcin

TAN (Calcular la tangente de un nmero en coma flotante) calcula la


tangente de un nmero en coma flotante, siendo ste el valor de un ngulo
expresado en radianes.

5.15 ASIN CALCULAR EL ARCOSENO

5.15.1 Smbolo

5.15.2 Palabra de estado

5.15.3 Descripcin

ASIN (Calcular el arcoseno de un nmero en coma flotante) calcula el


arcoseno de un nmero en coma flotante, cuyo margen de definicin es -1 <=
Valor de entrada <= 1. El resultado representa aqu un ngulo en radianes en el
margen de valores

-/2 Valor de salida +/2


siendo = 3,1415....

5.16 ACOS CALCULAR EL ARCOCOSENO

5.16.1 Smbolo

ST PROG3 Nro # 5
1
SIEMENS

5.16.2 Palabra de estado

5.16.3 Descripcin

ACOS (Calcular el arcocoseno de un nmero en coma flotante) calcula el


arcocoseno de un nmero en coma flotante, cuyo margen de definicin es -1 <=
Valor de entrada <= 1. El resultado es el valor de un ngulo expresado en
radianes, valor que queda dentro del margen de valores
0 valor de salida +
siendo = 3,1415....

5.17 ATAN CALCULAR LA ARCOTANGENTE

5.17.1 Smbolo

5.17.2 Palabra de estado


ST PROG3 Nro # 5
2
SIEMENS

5.17.3 Descripcin

ATAN (Calcular la arcotangente de un nmero en coma flotante) calcula


la arcotangente de un nmero en coma flotante. El resultado es un ngulo
expresado en radianes que queda dentro del margen
-/2 valor de salida /2
siendo = 3,1415....

ST PROG3 Nro # 5
3
SIEMENS
6.OPERACIONES DE DESPLAZAMIENTO Y ROTACIN

OPERACIONES DE DESPLAZAMIENTO

6.1 DESCRIPCIN

Las operaciones de desplazamiento sirven para desplazar bit a bit el


contenido de la entrada IN, hacia la izquierda o hacia la derecha (v. Registros
de la CPU). El desplazamiento hacia la izquierda multiplica el contenido de la
entrada IN por potencias de 2; el desplazamiento hacia la derecha divide el
contenido de la entrada IN por potencias de 2. Por ejemplo, desplazando el
equivalente binario del valor decimal 3 tres bits hacia la izquierda se obtiene en
el acumulador el equivalente binario del valor decimal 24. Desplazando el
equivalente binario del valor decimal 16 dos bits hacia la derecha se obtiene en
el acumulador el equivalente binario del valor decimal 4.

El nmero que se introduce en el parmetro de entrada N indica el


nmero de bits a desplazar. Las posiciones que quedan libres despus de
ejecutar la operacin de desplazamiento se rellenan con ceros o con el estado
de seal del bit de signo (0 significa positivo y 1 significa negativo). El estado de
seal del ltimo bit desplazado se carga en el bit A1 de la palabra de estado.
Los bits A0 y OV de la palabra de estado se ponen a 0. Para interpretar el bit
A1 pueden utilizarse las operaciones de salto.

Se dispone de las operaciones de desplazamiento siguientes:

ST PROG3 Nro # 5
4
SIEMENS
6.2 SHR_I DESPLAZAR ENTERO A LA DERECHA

6.2.1 Smbolo

6.2.2 Descripcin de la operacin

SHR_I (Desplazar entero a la derecha) se activa si la entrada de


habilitacin (EN) tiene el estado de seal "1". Con la operacin SHR_I se
desplazan los bits 0 a 15 de la entrada IN bit a bit a la derecha. A los bits 16 a
31 no les afecta esta operacin de desplazamiento. La entrada N indica el
nmero de posiciones de bit en que se va a efectuar un desplazamiento.

Si N es mayor que 16, la instruccin trabaja como si N fuera igual a 16.


Las posiciones de bit que se arrastran de la izquierda para ocupar las
posiciones libres reciben el estado de seal del bit 15 (este es el bit de signo del
entero). Esto significa que estas posiciones de bit se ocupan con el valor "0" si
se trata de un entero positivo, y que se ocupan con el valor "1" si se trata de un
entero negativo. El resultado de la operacin de desplazamiento queda
depositado en la salida OUT. La operacin SHR_I pone los bits A0 y OV a "0" si
N es diferente de 0.

El estado de seal de ENO es igual al de EN.

ST PROG3 Nro # 5
5
SIEMENS

6.2.3 Palabra de estado

6.2.4 Ejemplo

El cuadro SHR_I se activa si E 0.0 es "1". MW0 se carga y se desplaza a


la derecha tantos bits como indica MW2. El resultado se escribe en MW4. La
salida A 4.0 se pone a 1.

6.3 SHR_DI DESPLAZAR ENTERO DOBLE A LA DERECHA

6.3.1 Smbolo

6.3.2 Descripcin de la operacin

SHR_DI (Desplazar entero de 32 bits a la derecha) se activa si la entrada


de habilitacin (EN) tiene el estado de seal "1". Con la operacin SHR_DI se
desplazan los bits 0 a 31 de la entrada IN bit a bit a la derecha. La entrada N
indica el nmero de posiciones de bit en que se va a efectuar un
desplazamiento. Si N es mayor que 32, la instruccin trabaja como si N fuera
igual a 32. Las posiciones de bit que se arrastran de la izquierda para ocupar

ST PROG3 Nro # 5
6
SIEMENS
las posiciones libres reciben el estado de seal del bit 31 (este es el bit de signo
del entero).

Esto significa que estas posiciones de bit se ocupan con el valor "0" si se
trata de un entero positivo, y que se ocupan con el valor "1" si se trata de un
entero negativo. El resultado de la operacin de desplazamiento queda
depositado en la salida OUT. La operacin SHR_DI pone los bits A0 y OV a "0"
si N es diferente de 0.

El estado de seal de ENO es igual al de EN.

6.3.3 Palabra de estado

6.3.4 Ejemplo

El cuadro SHR_DI se activa si E 0.0 es 1. MD0 se carga y se desplaza a


la derecha tantos bits como indica MW4. El resultado se escribe en MD10. La
salida A 4.0 se pone a 1.

6.4 SHL_W DESPLAZAR 16 BITs A LA IZQUIERDA

6.4.1 Smbolo

ST PROG3 Nro # 5
7
SIEMENS

6.4.2 Descripcin de la operacin

SHL_W (Desplazar 16 bits a la izquierda) se activa si la entrada de


habilitacin (EN) tiene el estado de seal "1". Con la operacin SHL_W se
desplazan los bits 0 a 15 de la entrada IN bit a bit a la izquierda. A los bits 16 a
31 no les afecta la operacin de desplazamiento. La entrada N indica el nmero
de posiciones de bit en que se va a efectuar un desplazamiento.

Si N es mayor que 16, la instruccin en la salida OUT escribe un "0" y


pone los bits A0 y OV de la palabra de estado a "0". Desde la derecha se
desplaza el mismo nmero (N) de ceros para ocupar las posiciones que
quedaron libres. El resultado de la operacin de desplazamiento queda
depositado en la salida OUT. La operacin SHL_W pone a "0" al bit A0 y al bit
OV si N es diferente de 0.

El estado de seal de ENO es igual al de de EN.

6.4.3 Palabra de estado

6.4.4 Ejemplo

El cuadro SHL_W se activa si E 0.0 es 1. MW0 se carga en el ACU 1 y


se desplaza a la izquierda tantos bits como indica MW2. La palabra del
resultado se escribe en MW4. La salida A 4.0 se pone a 1.

ST PROG3 Nro # 5
8
SIEMENS

6.5 SHR_W DESPLAZAR 16 BITs A LA DERECHA

6.5.1 Smbolo

6.5.2 Descripcin de la operacin

SHR_W (Desplazar 16 bits a la derecha) se activa si la entrada de


habilitacin (EN) tiene el estado de seal "1". Con la operacin SHR_W se
desplazan los bits 0 a 15 de la entrada IN bit a bit a la derecha. A los bits 16 a
31 no les afecta esta operacin de desplazamiento. La entrada N indica el
nmero de posiciones de bit en las que se va a efectuar un desplazamiento. Si
N es mayor que 16, la instruccin escribe un "0" en la salida OUT y pone a "0"
los bits A0 y OV de la palabra de estado. Desde la izquierda se desplaza el
mismo nmero (N) de ceros para ocupar las posiciones libres. El resultado de la
operacin de desplazamiento queda depositado en la salida OUT. La operacin
SHR_W pone los bits A0 y OV a "0" si N es diferente de 0.

El estado de seal de ENO es igual al de de EN.

6.5.3 Palabra de estado

6.5.4 Ejemplo

ST PROG3 Nro # 5
9
SIEMENS

El cuadro SHR_W se activa si E 0.0 es 1. MW0 se carga y se desplaza a


la derecha tantos bits como indica MW2. La palabra del resultado se escribe en
MW4. La salida A 4.0 se pone a 1.

6.6 SHL_DW DESPLAZAR 32 BITs A LA IZQUIERDA

6.6.1 Smbolo

6.6.2 Descripcin de la operacin

SHL_DW (Desplazar 32 bits a la izquierda) se activa si la entrada de


habilitacin (EN) tiene el estado de seal "1". Con la operacin SHL_DW se
desplazan los bits 0 a 31 de la entrada IN bit a bit a la izquierda. La entrada N
indica el nmero de posiciones de bit en que se va a efectuar un
desplazamiento. Si N es mayor que 32, la instruccin escribe un "0" en la salida
OUT y pone los bits A0 y OV a "0". Desde la derecha se desplaza el mismo
nmero (N) de ceros para ocupar las posiciones libres. La palabra doble del
resultado de la operacin de desplazamiento queda depositada en la salida
OUT. La operacin SHL_DW pone los bits A0 y OV a "0" si N es diferente de 0.

El estado de seal de ENO es igual al de de EN.

6.6.3 Palabra de estado

6.6.4 Ejemplo

ST PROG3 Nro # 6
0
SIEMENS

El cuadro SHL_DW se activa si E 0.0 tiene el estado de seal "1". MD0


se carga y se desplaza a la izquierda tantos bits como indica MW4. La palabra
doble del resultado se escribe en MD10. La salida A 4.0 se pone a 1.

6.7 SHR_DW DESPLAZAR 32 BITs A LA DERECHA

6.7.1 Smbolo

6.7.2 Descripcin de la operacin

SHR_DW (Desplazar 32 bits a la derecha) se activa si la entrada de


habilitacin (EN) tiene el estado de seal "1". Con la operacin SHR_DW se
desplazan los bits 0 a 31 de la entrada EN bit a bit a la derecha. La entrada N
indica el nmero de posiciones de bit en que se va a efectuar un
desplazamiento. Si N es mayor que 32, la instruccin escribe un "0" en la salida
OUT y pone los bits A0 y OV a "0". Desde la izquierda se desplaza el mismo
nmero (N) de ceros para ocupar las posiciones libres. La palabra doble del
resultado de la operacin de desplazamiento queda depositada en la salida
OUT. La operacin SHR_DW pone los bits A0 y OV a "0" si N es diferente de 0.

El estado de seal de ENO es igual al de de EN.

ST PROG3 Nro # 6
1
SIEMENS

6.7.3 Palabra de estado

6.7.4 Ejemplo

El cuadro SHR_DW se activa si E 0.0 tiene el estado de seal "1". MD0


se carga y se desplaza a la derecha tantos bits como indica MW4. La palabra
doble del resultado se escribe en MD10. La salida A 4.0 se pone a 1.

OPERACIONES DE ROTACIN

6.8 DESCRIPCIN

Las operaciones de rotacin sirven para rotar bit a bit todo el contenido
de la entrada IN, hacia la izquierda o hacia la derecha (v. Registros de la CPU).
Las posiciones libres de los bits se rellenan con los estados de seal de los bits
que se desplazan fuera de la entrada IN. El nmero que se introduce en el
parmetro de entrada N indica el nmero de bits que se va a rotar.

Dependiendo de la operacin, la rotacin tiene lugar va el bit A1 de la


palabra de estado. El bit A0 de la palabra de estado se pone a 0. Se dispone de
las siguientes operaciones de rotacin:

ST PROG3 Nro # 6
2
SIEMENS

6.9 ROL_DW ROTAR 32 BITs A LA IZQUIERDA

6.9.1 Smbolo

6.9.2 Descripcin de la operacin

ROL_DW (Rotar 32 bits a la izquierda) se activa si la entrada de


habilitacin (EN) tiene el estado de seal "1". La operacin ROL_DW hace rotar
el contenido completo de la entrada IN bit a bit a la izquierda. La entrada N
indica el nmero de posiciones de bit en que se va a efectuar la rotacin. Si N
es mayore que 32 la palabra doble IN es rotada en ((N-1) modulo 32)+1
posiciones. Las posiciones de bit que se arrastran de la derecha se ocupan con
el estado de seal de los bits que fueron rotados a la izquierda (rotacin a la
izquierda).

La palabra doble del resultado de la operacin de rotacin queda


depositada en la salida OUT. La operacin ROL_DW pone los bits A0 y OV a
"0" si N es diferente de 0.

El estado de seal de ENO es igual al de de EN.

ST PROG3 Nro # 6
3
SIEMENS

6.9.3 Palabra de estado

6.9.4 Ejemplo

El cuadro ROL_DW se activa si E 0.0 es 1. MD0 se carga y se rota a la


izquierda tantos bits como indica MW4. La palabra doble del resultado se
escribe en MD10. La salida A 4.0 se pone a 1.

6.10 ROR_DW ROTAR 32 BITs A LA DERECHA

6.10.1 Smbolo

6.10.2 Descripcin de la operacin

ROR_DW (Rotar 32 bits a la derecha) se activa si la entrada de


habilitacin (EN) tiene el estado de seal "1". La operacin ROR_DW hace rotar
el contenido completo de la entrada IN bit a bit a la derecha. La entrada N indica
el nmero de posiciones de bit en que se va a efectuar la rotacin. Si N es
mayor que 32 la palabra doble IN es rotada en ((N-1) modulo 32)+1 posiciones.
Las posiciones de bit que se arrastran de la izquierda se ocupan con el estado
de seal de los bits que fueron rotados a la derecha (rotacin a la derecha).

ST PROG3 Nro # 6
4
SIEMENS
La palabra doble del resultado de la operacin de rotacin queda
depositada en la salida OUT. La operacin ROR_DW pone los bits A0 y OV a
"0" si N es diferente de 0.

El estado de seal de ENO es igual al de de EN.

6.10.3 Palabra de estado

6.10.4 Ejemplo

El cuadro ROR_DW se activa si E 0.0 es 1. MD0 se carga y se rota a la


derecha tantos bits como indica MW4. La palabra doble del resultado se escribe
en MD10. La salida A 4.0 se pone a 1.

ST PROG3 Nro # 6
5
SIEMENS
7.OPERACIONES DE SALTO

7.1 LISTA DE OPERACIONES

7.1.1 Descripcin

Las operaciones de salto sirven para controlar el desarrollo del


programa. Estas operaciones permiten al programa interrumpir su desarrollo
lineal para continuar el procesamiento en un punto diferente del programa.

Estas operaciones se pueden utilizar en todos los bloques lgicos:


bloques de organizacin (OBs), bloques de funcin (FBs) y funciones (FCs).

Se dispone de las operaciones de salto siguientes:


---(JMP)--- Salto absoluto
---(JMP)--- Salto condicional
---( JMPN ) Saltar si la seal es 0

7.1.2 Meta como operando

El operando de una operacin de salto es una meta. La meta indica el


destino a donde se desea saltar en el programa. La meta se introduce encima
de la bobina de salto, Una meta se compone de cuatro caracteres como
mximo. El primer carcter ha de ser una letra del alfabeto; los restantes
caracteres pueden ser letras o nmeros (p.ej. SEG3).

7.1.3 Meta como destino

La meta de destino ha de
encontrarse siempre al principio de
un segmento. Para introducirla hay
que seleccionar LABEL en el cuadro
KOP. En seguida aparece un cuadro
vaco. Introducir en el cuadro el
nombre de la meta.

ST PROG3 Nro # 6
6
SIEMENS

ST PROG3 Nro # 6
7
SIEMENS
7.2 ---(JMP)--- SALTO ABSOLUTO

7.2.1 Smbolo

7.2.2 Descripcin de la operacin

---( JMP ) (Saltar si la seal es 1) funciona como un salto absoluto


cuando no hay otro elemento KOP entre el conductor izquierdo y la operacin
(v. ejemplo).

Cada salto ---( JMP ) tiene que tener una meta (LABEL).

No se ejecutarn las operaciones que se encuentren entre la operacin


de salto y la meta!

7.2.3 Palabra de estado

7.2.4 Ejemplo

El salto se ejecuta en todos los casos, omitindose ("pasando por alto")


las operaciones que se encuentren entre la operacin de salto y la meta.

ST PROG3 Nro # 6
8
SIEMENS
7.3 ---(JMP)--- SALTO CONDICIONAL

7.3.1 Smbolo

7.3.2 Descripcin de la operacin

---( JMP ) (Saltar en el bloque si es 1) funciona como un salto condicional


cuando el RLO de la combinacin lgica anterior es "1".

Cada salto ---( JMP ) tiene que tener una meta (LABEL).

No se ejecutarn las operaciones que se encuentren entre la operacin


de salto y la meta! Si un salto condicional no se ejecuta, el RLO cambia a "1"
despus de la operacin de salto.

7.3.3 Palabra de estado

7.3.4 Ejemplo

Si la entrada E 0.0 es 0 se ejecuta el salto a la meta CAS1. Al llevarse a


cabo el salto, en la salida A 4.0 no se ejecuta la operacin "Poner salida a 0",
aunque E 0.3 sea 1.

ST PROG3 Nro # 6
9
SIEMENS
7.4 ---(JMPN)--- SALTAR SI LA SEAL ES 0

7.4.1 Smbolo

7.4.2 Descripcin de la operacin

---( JMPN ) (Saltar si la seal es 0) funciona como un salto condicional


cuando el RLO de la combinacin lgica anterior es "0".

Cada salto ---( JMPN ) tiene que tener una meta (LABEL).

No se ejecutarn las operaciones que se encuentran entre la operacin


de salto y la meta!

Si un salto condicional no se lleva a cabo, el RLO cambia a "1" despus


de la operacin de salto.

7.4.3 Palabra de estado

7.4.4 Ejemplo

Si la entrada E 0.0 es 0, se ejecuta el salto a la meta CAS1. Al ejecutarse


el salto, en la salida A 4.0 no se lleva a cabo la operacin "Poner salida a 0",
aunque la entrada E 0.3 sea 1.
ST PROG3 Nro # 7
0
SIEMENS

7.5 LABEL META DEL SALTO

7.5.1 Smbolo

7.5.2 Descripcin de la operacin

LABEL marca la meta de una operacin de salto. Esta meta puede tener
hasta un mximo 4 caracteres. Primer carcter: letra; dems caracteres: letras
o alfanumricos, p.ej. CAS1.

Cada salto ---( JMP ) o ---( JMPN ) tiene que tener una meta del salto
(LABEL).

7.5.3 Ejemplo

Si E 0.0 = 1 se ejecuta el salto a la meta CAS1. Al llevarse a cabo el


salto, en la salida A 4.0 no se ejecuta la operacin "Poner salida a 0", aunque E
0.3 sea 1.

ST PROG3 Nro # 7
1
SIEMENS
8.BLOQUES DE ORGANIZACIN

8.1 RELACIN GENERAL DE OBs

8.1.1 Bloques de organizacin

Los bloques de organizacin constituyen la interfase entre el sistema


operativo de la CPU y el programa de usuario. Con la ayuda de los OBs es
posible seleccionar la ejecucin de partes de programas:

al arrancar la CPU
en ejecucin cclica o tambin intermitente temporal
a determinadas horas o en determinados das
despus de transcurrir un tiempo preestablecido
al producirse errores
al dispararse alarmas de proceso.

Los bloques de organizacin se procesan en correspondencia con la


prioridad que tienen asignada.

La tabla siguiente muestra el evento de arranque y la prioridad


preajustada que corresponde a cada OB.

ST PROG3 Nro # 7
2
SIEMENS

Tabla 8-1 Lista de bloques de organizacin (OB)

ST PROG3 Nro # 7
3
SIEMENS

Tabla 8-2 Lista de bloques de organizacin (OB)

1) Las prioridades 27 y 28 son vlidas en el modelo de prioridades del


arranque.
2) La prioridad 29 corresponde a la prioridad 0.29. Es decir, el ciclo de la
tarea no prioritaria tiene menor prioridad que el ciclo libre.

8.2 PRINCIPALES OBs

8.2.1 Programa cclico (OB1)

8.2.1.1 Descripcin

El sistema operativo de la CPU del S7 ejecuta el OB 1 de forma cclica:


Una vez finalizada la ejecucin del OB 1, el sistema operativo comienza a
ejecutarlo de nuevo.

La ejecucin cclica del OB 1 comienza una vez que el arranque ha


finalizado. En el OB 1 es posible realizar la llamada a bloques de funcin (FBs,
SFBs) o a funciones (FCs, SFCs).

ST PROG3 Nro # 7
4
SIEMENS
8.2.1.2 Modo de funcionamiento del OB1

El OB 1 presenta la prioridad ms baja de todos los OBs sometidos a


vigilancia en lo que respecta a su tiempo de ejecucin. Con excepcin del OB
90, todos los dems Obs pueden interrumpir la ejecucin del OB 1. Los eventos
siguientes dan lugar a que el sistema operativo llame al OB 1:
Final de la ejecucin del arranque
Final de la ejecucin del OB 1 (durante el ciclo anterior).

Una vez finalizada la ejecucin del OB 1, el sistema operativo enva


datos globales. Antes de arrancar de nuevo el OB 1, el sistema operativo
escribe la imagen de proceso de las salidas en los mdulos de salidas, actualiza
la imagen de proceso de las entradas y recibe datos globales para la CPU.

S7 ofrece una supervisin del tiempo de ciclo mximo garantizando el


tiempo de reaccin mximo. El valor del tiempo de ciclo mximo est
preajustado a 150 ms. Puede modificar la parametrizacin de este valor o, con
SFC 43 "RE_TRIGR", activar de nuevo la supervisin temporal en cualquier
punto del programa. Si el programa sobrepasa el tiempo de ciclo mximo para
el OB 1, el sistema operativo llama al OB 80 (OB de error de tiempo). Si no est
programado el OB 80, la CPU pasa al estado operativo STOP.

Adems de la supervisin del tiempo de ciclo mximo, puede


garantizarse el cumplimiento de un tiempo de ciclo mnimo. El sistema operativo
retarda el comienzo de un nuevo ciclo (escritura de la imagen de proceso de las
salidas en los mdulos de salidas) hasta que se haya alcanzado el tiempo de
ciclo mnimo.

8.2.2 OBs de alarma horaria (OB10 hasta OB17)

8.2.2.1 Descripcin

El sistema operativo de la CPU del S7 ejecuta el OB 1 de forma cclica:


Una vez finalizada la ejecucin del OB 1, el sistema operativo comienza a
ejecutarlo de nuevo.

una vez
cada minuto
cada hora
cada da
cada semana
cada mes
cada ao
a final de mes

Nota
ST PROG3 Nro # 7
5
SIEMENS
Si un OB de alarma horaria se procesa mensualmente, para la fecha inicial slo
pueden indicarse los das 1, 2, ... 28.

8.2.2.2 Modo de funcionamiento

Para arrancar una alarma horaria es necesario ajustar primero la alarma


y activarla seguidamente. Puede elegir una de las tres alternativas siguientes:

Arranque automtico de la alarma horaria. Se produce al ajustar y


activar la alarma horaria con STEP 7. La tabla siguiente muestra las
posibilidades que existen para la activacin de una alarma horaria con
STEP 7.
Ajustando la alarma horaria con STEP 7 y activndola por la llamada a
SFC 30 "ACT_TINT", desde el programa.
Ajustando la alarma horaria mediante la llamada a SFC 28
"SET_TINT" y activndola mediante la llamada a SFC 30 "ACT_TINT".

Con ayuda de las SFCs 39 a 42 pueden bloquearse o retardarse y


habilitarse de nuevo las alarmas horarias.

8.2.3 OB de fallo de alimentacin (OB 81)

8.2.3.1 Descripcin

El sistema operativo de la CPU del S7 ejecuta el OB 1 de forma cclica:


Una vez finalizada la ejecucin del OB 1, el sistema operativo comienza a
ejecutarlo de nuevo.

ST PROG3 Nro # 7
6
SIEMENS
El sistema operativo de la CPU llama al OB 81 cuando se presenta un
evento activado por un fallo en la alimentacin normal (slo en el S7400) o de
respaldo en tampn (tanto en caso de un evento entrante como de uno
saliente).

Si se produce un fallo de la pila en el S7-400, slo se llama al OB 81 al


estar activada la comprobacin de la pila mediante el interruptor BATT.INDIC.
La CPU no pasa al estado operativo STOP si no est programado el OB 81.

Con ayuda de las SFCs 39 hasta 42 puede bloquearse, retardarse o


habilitarse de nuevo el OB de fallo de alimentacin.

8.2.4 OB de avera de CPU (OB 84)

8.2.4.1 Descripcin

El sistema operativo de la CPU llama al OB 84 en los siguientes casos:


tras la deteccin y eliminacin de errores de memoria
en S7-400H: en caso de potencia reducida del acoplamiento de redundancia
entre ambas CPUs

Puede bloquear o retardar el OB de error de hardware de la CPU con


ayuda de las SFCs 39 hasta 42 y volver a habilitarlo.

8.2.5 OBs de arranque (OB 100, OB 101 y OB 102)

8.2.5.1 Modos de arranque

Se distinguen los siguientes modos de arranque:


Rearranque (no en los S7 300 ni S7 400 H)
Arranque en caliente
Arranque en fro

La tabla siguiente muestra el OB al que el sistema operativo llama


durante el arranque.

8.2.5.2 Descripcin

La CPU efecta un arranque


despus de ALIMENTACION ON;
si se cambia de STOP a RUN-P el selector de modo de operacin;

ST PROG3 Nro # 7
7
SIEMENS
tras la solicitud por una funcin de comunicacin (por comando de men
desde la unidad PG o por llamada de los bloques de funcin para
comunicaciones 19 "START", o 21 "RESUME" en otra CPU);
sincronizacin en el modo multiprocesador;
en un sistema H, tras acoplar (slo en la CPU de reserva).
En funcin del evento de arranque, de la CPU existente y de sus
parmetros ajustados, se activa el OB de rearranque asignado (OB 100, OB
101 y OB 102). Mediante la programacin correspondiente es posible realizar
ajustes previos para el programa cclico (excepcin: en un sistema H, tras el
acoplamiento se ejecuta un arranque en la CPU de reserva, pero sin llamar al
OB de arranque).

8.2.6 OB de error de programacin (OB 121)

8.2.6.1 Descripcin

El sistema operativo de la CPU llama al OB 121 cuando aparece un


evento activado por un error durante la ejecucin del programa. As por
ejemplo, si dentro del programa se llama a un bloque que no fue cargado en la
CPU, el OB 121 ser invocado.

8.2.6.2 Modo de funcionamiento del OB de error de programacin

El OB 121 funciona en la misma prioridad que el bloque que ha sido


interrumpido. Si no est programado el OB 121, la CPU pasar de RUN a
STOP.

S7 dispone de las SFCs siguientes que permiten enmascarar y


desenmascarar eventos de arranque del OB 121, mientras se ejecuta el
programa:
La SFC 36 "MSK_FLT" enmascara determinados cdigos de error.
La SFC 37 "DMSK_FLT" desenmascara los cdigos de error
enmascarados por la SFC 36.
La SFC 38 "READ_ERR" lee el registro de estado de eventos.

ST PROG3 Nro # 7
8
SIEMENS
9.COMUNICACIN MEDIANTE DATOS GLOBALES

9.1 SINOPSIS

9.1.1 Introduccin

La comunicacin de datos globales (comunicacin GD) es una variante


de comunicacin sencilla integrada en el sistema operativo de las CPUs S7-
300/S7-400.

La comunicacin GD permite intercambiar datos cclicamente entre CPUs


a travs del interface MPI. El intercambio cclico de datos se lleva a cabo con la
imagen normal del proceso. La comunicacin de datos globales se configura
con STEP 7; la transferencia de los datos globales es cosa del sistema, por lo
que no se tiene que programar.

Los apartados siguientes describen cmo calcular, con ayuda de los


datos tcnicos indicados para cada CPU (nmero de crculos GD, tamao y
nmero de paquetes GD, etc.), la cantidad de datos que pueden intercambiar
las CPUs mediante el procedimiento "Comunicacin GD". Adems, figuran:
condiciones de emisin y recepcin a tener en cuenta
una frmula para calcular aproximadamente el tiempo de respuesta

9.1.2 Datos globales

Los datos globales que se utilizan en la comunicacin mediante datos


globales (comunicacin GD) son las siguientes reas de operandos de la
CPU:
entradas, salidas (de la imagen del proceso)
marcas
reas de bloques de datos
temporizadores, contadores (no recomendables, porque los valores del
emisor ya no son actuales; configurables slo como reas de operandos)

Las reas de la periferia (PE y PA) y los datos locales no se pueden


utilizar para la comunicacin mediante datos globales.

9.1.3 Transferencia de datos

La comunicacin mediante datos globales funciona segn el


procedimiento broadcast, es decir, no se acusa recibo de los datos globales. El
emisor no recibe informacin alguna acerca de si hay un receptor que ha
recibido los datos globales enviados y, en caso de haberlo, cul es. Si el
proceso requiere una transferencia de datos segura, utilice otro servicio, como
por ejemplo, las funciones S7.

ST PROG3 Nro # 79
SIEMENS
9.1.4 Subredes para la comunicacin de datos globales

La comunicacin GD es posible
o bien va una subred MPI (entre distintos equipos)
o bien va el bus posterior (p.ej., entre CPUs S7 en un bastidor en modo
multiprocesador)

9.1.5 Cmo se convierte un rea de operandos en un rea


emisora/receptora

Las reas de operandos que participan en la comunicacin de datos


globales se configuran con STEP 7 en una tabla de datos globales (tabla GD):
cada columna est asignada a una CPU, es decir, las columnas
representan las CPUs que intercambian datos (mximo 15 CPUs)
cada lnea (a decir verdad: cada campo editable de una lnea) representa
el rea de operandos a travs de la cual una CPU enva los datos o bien
una o varias CPUs los reciben

Despus de rellenar la tabla, de compilarla y de cargarla en las CPUs


que participan en la comunicacin, estas CPUs envan y reciben datos
cclicamente a travs de estas reas de operandos en el punto de control del
ciclo (es decir, en el punto en el que se realiza la actualizacin de la imagen del
proceso).

Particularidad: En los S7-400 los datos globales configurados tambin se


pueden enviar, controlados por eventos, a travs de la SFC 60 (GD_SND) o se
pueden recibir a travs de la SFC 61 (GD_RCV).

9.2 DETERMINAR LA CAPACIDAD DE COMUNICACIN

9.2.1 Subredes para la comunicacin de datos globales

La capacidad que tiene una CPU S7 en cuanto a la comunicacin de


datos globales, se determina en base a los datos tcnicos ("recursos GD")
siguientes:
Nmero de crculos GD (en los que puede intervenir la CPU)
Nmero mximo de datos netos por paquete de datos globales
Nmero mximo de paquetes de recepcin por crculo de GD
Longitud de los datos coherentes por paquete

Los restantes recursos GD documentados son idnticos para todas las


CPUs S7 y por lo tanto no son importantes para elegir la CPU.

En base a los datos tcnicos arriba mencionados se puede determinar la


cantidad de datos que pueden intercambiar cclicamente las CPUs que estn
interconectadas a travs de una subred MPI o a travs del bus posterior del S7-

ST PROG3 Nro # 80
SIEMENS
400. A continuacin explicaremos como se crean los paquetes GD a partir de
los datos de emisin y cuntos crculos GD se requieren en cada caso.

9.2.2 Cantidad necesaria de paquetes GD

Un paquete GD es un telegrama que enva una sola CPU de una


pasada a una o varias CPUs. Un paquete GD contiene como mximo la
siguiente cantidad de datos netos (v. Tambin Datos tcnicos de las CPUs):
mx. 22 bytes en el caso del S7-300
mx. 54 bytes en el caso del S7-400

Ejemplo 1

Queremos utilizar el rea de emisin ms grande de una CPU S7-300


para poder enviar desde un bloque de datos. En la CPU receptora se ha de
utilizar el rea de marcas. Introduza el rea de emisin de la CPU S7-300 en la
tabla de datos globales:
DB8.DBB0:22 (es decir, 22 bytes de datos del DB8 a partir del byte de
datos 0)

Introduzca el rea de recepcin de otra CPU (tiene que ser igual de


grande que el rea de emisin) en la tabla de datos globales:
MW100:11 (es decir, 11 palabras de marcas a partir de MW 100)

Reglas

Si no slo desea enviar datos del rea de operandos, tiene que restar
dos bytes por cada rea de datos adicional del nmero mximo de datos
netos.
Un operando constituido por un bit (p. ej. M 4.1) consume" un byte de
datos netos del paquete GD.

Ejemplo 2

Queremos enviar desde el bloque de datos y desde la imagen del


proceso de las salidas. En este caso, el tamao del paquete GD no debe
superar los 20 bytes.

Introduza las reas de emisin de la CPU S7-300 en la tabla de datos


globales:
DB8.DBB0:10 (es decir, 10 bytes de datos del DB8 a partir del byte de
datos 0)
AW0:10 (es decir, 10 palabras de salida a partir de AW0)

Introduzca las reas de recepcin de las otras CPUs igual que en el


primer ejemplo; el ancho de los datos tiene que corresponderse con el rea de
emisin.

ST PROG3 Nro # 81
SIEMENS
9.2.3 Cantidad necesaria de crculos GD

Qu es un crculo GD?
Todas las CPUs que intervienen en el intercambio de un paquete de
datos comn en calidad de emisoras o receptoras, "consumen" un crculo GD.

Aspecto de la tabla GD (tras compilar):

Leyenda de la tabla GD:


> significa "emisor"

Estructura de la identificacin GD:

Cundo se consume otro crculo GD? (caso 1)

ST PROG3 Nro # 82
SIEMENS

Aspecto de la tabla GD (tras compilar):

Cundo se consume otro crculo GD? (caso 2)

Aspecto de la tabla GD (tras compilar):

ST PROG3 Nro # 83
SIEMENS
Consejo

En ocasiones puede resultar conveniente definir a una CPU como la


receptora de un paquete GD, aunque esta CPU no necesite el paquete (como la
CPU 4 del ejemplo). Si las CPUs emisora y receptora son una misma CPU se
puede reducir el nmero de crculos GD p. ej. de la CPU emisora. En este caso,
las CPUs 1,2 y 3 del ejemplo consumiran solamente un crculo GD, ya que
ambos paquetes GD se agruparan en uno solo.

Nmero mximo de circuitos GD

El nmero de circuitos GD est limitado a 16. Las CPUs afectadas por


ms de 16 circuitos GD no pueden cargarse con la configuracin de datos
locales. No obstante, STEP 7 no impide guardar y compilar tablas GD con un
nmero superior de circuitos GD.

9.3 CONDICIONES DE EMISIN Y RECEPCIN

9.3.1 Condiciones de emisin y recepcin

El factor de ciclo permite definir para cada CPU que interviene en el


intercambio del paquete GD lo siguiente:
cada cuntos ciclos se enva el paquete GD (slo para la CPU que est
marcada como emisor).
cada cuntos ciclos se recibe el paquete GD

Excepcin: factor de ciclo 0 significa que el paquete GD se transfiere


por control de eventos(y no cclicamente), (slo en el S7-400 con la SFC
60/SFC 61).

Ejemplo

Un factor de ciclo de 20 para un paquete GD en la CPU emisora significa


que la CPU enviar el paquete GD desde el punto de control del ciclo cada 20
ciclos.

Un factor de ciclo de 8 para un paquete GD en la CPU receptora significa


que la CPU enviar el paquete GD desde el punto de control del ciclo cada 8
ciclos, es decir, que recibir el paquete GD en el rea de operandos).

Factor de ciclo del emisor:

En cualquier caso, debe ceirse a las condiciones siguientes para no


sobrecargar la comunicacin de la CPU:
CPUs S7-300: Factor de ciclo Tiempo de ciclo >= 60 ms
CPUs S7-400: Factor de ciclo Tiempo de ciclo >= 10 ms

ST PROG3 Nro # 84
SIEMENS
Factor de ciclo del receptor:

Para evitar la prdida de paquetes GD hay que recibir ms paquetes GD


de los que se envan.

Para ello se ha de cumplir lo siguiente:


factor de ciclo (receptor) tiempo de ciclo (receptor) < factor de ciclo
(emisor) tiempo de ciclo (emisor).

9.3.2 Relacin entre factor de ciclo y tiempo de ciclo

Factores de ciclo permitidos

Los factores de ciclo permitidos tanto para el emisor como para el


receptor son 0 y valores entre 1 y 255. No obstante, tenga en cuenta que los
factores de ciclo muy bajos sobrecargan excesivamente a la CPU.

Recomendacin: mantenga el factor de ciclo predeterminado y vigile


que el producto del ciclo de tiempo x factor de ciclo sea superior a 0,5s. Si
quiere una comunicacin ms eficaz utilice otros mecanismos, p. ej. el
acoplamiento va PROFIBUS-DP.

El factor de ciclo 0 es caracterstico de una transferencia de datos


controlada por eventos va las SFCs en el programa de usuario (no todas las
CPUs lo permiten). Si no introduce ningn factor de ciclo, se utilizar el ajuste
predeterminado.

Ejemplo de factores de ciclo

El producto del tiempo de ciclo x factor de ciclo determina el intervalo en


el que se sucede el intercambio de datos globales. Supongamos que el
programa de usuario de una CPU 412 tiene un tiempo de ciclo de
aproximadamente 50ms. El factor de ciclo predeterminado es de22.

50 ms x 22 = 1100ms , ello significa que aprox. Cada 1,1s se envan o


reciben datos globales en esta CPU.

Si el programa de usuario hace aumentar el tiempo de ciclo a p. ej. 80ms,


cada 80ms x 22 = 1760s se enviarn o recibirn datos globales. Para volver a
alcanzar el valor de 1100s, hay que volver a calcular el factor de ciclo:

Factor de ciclo (nuevo) = 1100ms/80ms = 13,75 , es decir,


prolongando el ciclo hay que ajustar el factor de ciclo a 14 para mantener el
mismo intervalo.

ST PROG3 Nro # 85
SIEMENS
9.4 CONFIGURAR Y GUARDAR LA COMUNICACIN GD

9.4.1 Procedimiento para configurar y guardar la comunicacin GD

Se tiene que haber configurado una subred MPI con todos los equipos
necesarios.

ST PROG3 Nro # 86
SIEMENS
Ejemplo

1. Abrir la tabla GD

2. Rellenar la tabla GD

ST PROG3 Nro # 87
SIEMENS
3. 1era compilacin de la tabla GD

4. Ver factores de compilacin (opcional)

5. 2da compilacin de la tabla GD (opcional)

6. Cargar la tabla al PLC.

ST PROG3 Nro # 88

S-ar putea să vă placă și