Hace unas semanas uno de los lectores me sugirió que hablara un poco de la palabra de estado en Step 7… pues aquí estamos.
Tal vez esperabas que empezáramos con los temporizadores, pero se va a retrasar un poco ya que para la semana que viene probablemente hagamos otro ejemplo práctico (como ves, el curso tiene vida propia).
Como vas a ver, tampoco hay un vídeo acompañando esta semana. Es sólo lectura. Un rollo. Pero está bien al menos como cultura general aunque a efectos prácticos hay poco que rascar más allá de un par de cosillas.
Contenido
La palabra de estado en step 7 ¿qué es?
Lo primero que hay que decir es que la palabra de estado en step 7 es un registro donde se almacenan una serie de bits sobre el procesamiento y estado de las operaciones que están teniendo lugar.
Para empezar, mal empezamos llamándola palabra… ¿por qué? Pues porque son 9 bits y no 16, pero se llama así, y tampoco nos vamos a rasgar las vestiduras ¿no? Entiendo que los 7 restantes los tendrán a buen recaudo y se llama palabra porque al ser 9 no lo podían hacer con un byte. Sin más.
Cada bit dentro de la palabra tiene una función para mantener una trazabilidad de qué está sucediendo, desde resultados de álgebra booleana hasta si ha sucedido un overflow.[divider]
Los bits de la palabra de estado
Los Ocean’s Nine son estos:
- Bit 0 – /FC
- Bit 1 – RLO
- Bit 2 – STA
- Bit 3 – OR
- Bit 4 – OS
- Bit 5 – OV
- Bit 6 – CC1
- Bit 7 – CC0
- Bit 8 – BR
Vale, unos nombres muy chulos, pero quitando al RLO y el STA, los demás como que..
Sí, sí… ya voy. Repasemos para que vale cada uno.[divider]
Bit 0 -/FC
Este bit es el que almacena si la siguiente instrucción de la una combinación boolenana va a ser la primera o no.
- Valor 0: la siguiente instrucción va a ser procesada como la primrera instrucción. Ya lo vimos anteriormente con las operaciones de cierre de consulta.
- Valor 1: Es que la combinatoria está en marcha
Así, cuando se haga un set, restet o una asignación (=) la señal se pondrá a cero. Una vez después de puesta a cero si se hace un U o un OR (por ejemplo), la señal se pondrá a 1 comenzando a realizar la combinatoria.[divider]
Bit 1 – RLO.
Espero que no tenga que sacar la vara de avellano para castigar a aquellos que aún pregunten que es el RLO. Me niego a explicarlo. [divider]
Bit 2 – STA
Como bien sabes, es el estado de la dirección booleana de la memoria. Si está a uno es que la marca o entrada está a uno, si está a cero, pues al revés.[divider]
Bit 3 – OR
Sirve para conocer el valor de la combinatoria de un AND antes de hacer un OR.
Recuerda que puedes hacer una combinatoria de este pelo:
U E0.0
O
U E1.0
U E2.0
= A1.0
Vale. Pues lo que hace este bit es almacenar la combinatoria del AND entre la E1.0 y la E2.0. Se guarda el resultado intermedio en este bit antes de acometer el OR de este resultado con la E0.0.[divider]
Bit 4 y 5 – OS y OV
OS almacena que ha habido un overflow. Cuando hay un OV (overflow) porque has dividido por cero o porque has sumado dos enteros que se salen de los 32768 la señal de OV y OS se ponen a 1. Luego el OV puede desaparecer porque la siguiente operación sea correcta, pero el OS queda con valor uno hasta que se realice un SPS ( Salta si OS=1), una llamada a otro bloque, o final de bloque.
Así puede que hagas una operación matemática que da OV. Luego puedes hacer un SPO (salta si OV=1) o un SPS (salta si OS=1) para tratar el error y así pones a cero el bit 4 (el 5 se quitará el solito cuando haya una nueva operación correcta).[divider]
Bit 6 y 7 – CCO y CC1
Son bits usados para las operaciones de comparación, matemáticas, de giro…
Instrucciones de comparación
CC 1 | CC 0 | |
0 | 0 | ACCU 2 = ACCU 1 |
0 | 1 | ACCU 2 < ACCU 1 |
1 | 0 | ACCU 2 > ACCU 1 |
1 | 1 | Desordenadas. Solo para coma flotante. |
Operaciones matemáticas con OV
CC 1 | CC 0 | |
0 | 0 | Resultado = 0 |
0 | 1 | Resultado < 0 |
1 | 0 | Resultado > 0 |
Operaciones matemáticas enteras con OV
CC 1 | CC 0 | |
0 | 0 | Rango negativo de OV en ADD_I y ADD_DI |
0 | 1 | Rangi negativo de OB en MUL_I y MUL_DI |
1 | 0 | Rango negativo de OV en ADD_I, ADD_DI, SUB_I, y SUB_DI |
1 | 1 | División por 0 en DIV_I, DIV_DI, y MOD_DI |
Instrucciones en punto flotante con Overflow
CC 1 | CC 0 | |
0 | 0 | Underflow |
0 | 1 | Rango negativo de OV |
1 | 0 | Rango positivo de OV |
1 | 1 | Número de coma flotante no válido |
Instrucciones de giro y salto
CC 1 | CC 0 | |
0 | 0 | Bit saliente estaba a cero |
1 | 0 | Bit saliente estaba a uno |
Instrucciones lógicas
CC 1 | CC 0 | |
0 | 0 | Resultado = 0 |
1 | 0 | Resultado <> 0 |
[divider]
Bit 8 – BR
Proviene de Binary Result y es el resultado de las operaciones binarias. Cuando el BR está a uno, activa la salida de ENO habilitando en bloques concatenados que se ejecute el siguiente bloque.
Las operaciones SAVE, SPB y SPBB ponen a uno el BR (más información aquí).[divider]
¿Qué te ha parecido esto de la palabra de estado?
Espero que no te hayas dormido y hayas llegado hasta aquí.
Como ves muchas de las variables son poco usadas ( o nada) pero está bien saber su significado y así cuando veamos la palabra de estado en la ayuda de Step 7 sepamos al menos de qué va.
Como siempre recordarte una vez más que comentes si te es útil este tipo de entradas y cómo no, que si vas a comprar algo de material, que te acuerdes de mi, te pases por nuestro foro y cojas los cupones pertinentes para comprar en www.masvoltaje.com
Fuente en inglés: PLCDev.com
Enseño a programar PLC de Siemens a través de mis cursos.
Más información sobre mi aquí
Puedes seguirme en cualquiera de las siguientes redes sociales.
8 Comentarios
Puedes por favor indicarme como puedo controlar online el tiempo de un Ton en S7200 Microwin .
Lo que deseo es saber como muevo una palabra al preset del temporizador, para poder modificar su valor estando Online.
Por favor, las consultas fuera del tema en el foro.
Saludos
Hola Íñigo:
Buena entrada para seguir viéndole las «tripas» a los controladores Siemens, pero, ¿cuál es la manera de acceder a esta palabra de estado en una CPU «on line» (o sea, no el simulador, que según veo le das al icono correspondiente en la barra de herramientas y te aparece). ¿tiene alguna utilidad práctica y hay que echar mano de ella mientras programas o a la hora de diagnosticar fallos de funcionamiento?.
Saludos.
Hola,
Sólo se ve en AWL y es pulsado con el botón derecho y haciéndo que te muestre el estado.
¿Utilidad práctica? Pues saber que existen y que es lo que significan. Especialmente el STA y el RLO. Pero saber que tienes un OV tampoco está de más.
Un saludo
Es perfecto para aprender gracias
gracias iñigo,aqui voy aprendiendo con tu curso…un abrazo
Buenas noches Íñigo,
Estas seguro que no tienes cambiados de posición el CC1 Y CC2 en esta página?
https://programacionsiemens.com/palabra-de-estado-en-step7/#Bit_4_y_5_8211_OS_y_OV
Siemens dice esto: https://support.industry.siemens.com/cs/document/7409513/%C2%BFcu%C3%A1l-es-la-diferencia-entre-los-nemot%C3%A9cnicos-en-ingl%C3%A9s-y-alem%C3%A1n-?dti=0&lc=es-ES
¿ Puede ser que el CC1(A1) es el que está junto al BR ( BIE)?
Dicho de otra forma, el bit 7 es el CC1¿ Correcto?
Si me equivoco, corrigeme, si no, pues corrige la pagina.
Por lo demás, muchas gracias. Creo que he aprendido más con tus videos que con el curso que estoy haciendo. Siento ho haber dado antes contigo.
Un saludo,
Pablo
Creo que el CC0 y CC1 están bien. Aunque tampoco es que los haya usado, la verdad.