Para ir terminando la primera parte del curso (la más sencilla pero la más importante por su relevancia dentro de los proyectos), vamos a ver como trabajar con los contadores en Step 7. Vamos a ver varias formas de cómo trabajar con contadores:
- Sumar y restar sobre una variable
- Usar los comandos INC /DEC
- Usar los contadores S5
Contenido
Contadores en Step 7 usando un entero
Poco le vamos a dedicar a este contador: se trata de sumar y restar sobre una pobre e inofensiva palabra.
Si queremos sumar, pues usaremos +I, si queremos restar, pues -I. Lo hemos usado con anterioridad y no tiene mayor complicación:
L MW10 –> Cargamos lo que tengamos
L 1 –> Cargamos la cantidad que queremo sumar
+I –> Sumamos ambas cantidades y lo almacenamos en el ACU1 (-I para restar)
T MW10 –> Lo transferimos de nuevo en el contador MW10
Como ves, nada nuevo que no sepas ya.[divider]
Contadores en Step 7 usando INC y DEC
Podemos también usar, en vez de una palabra, un byte (Con la limitación de contaje que ello conlleva al ser sólo un byte).
Existen dos instrucciones para este tipo de contadores:
- INC N#_8_bits para incrementar el contador
- DEC N#_8_bits para decrementar el contador
Así, para usarlo tan sólo deberemos usar de esta forma las operaciones:
L MB100 –> Cargamos el contador en el ACU1
INC 1 –> Sumamos 1 al ACU1
T MB10 –> Lo volvemos a cargar en el MB10
Análogamente, para decontar:
L MB100 –> Cargamos el byte que lleva el contaje en el ACU1
DEC 2 –> Restamos dos unidades al ACU1
T MB100 –> Transferimos el resultado de nuevo al MB100[divider]
¿Fácil no? Muy parecido al caso anterior pero ligeramente más compacto.[divider]
Contadores en Step 7 usando contadores S5
Los contadores S5 (Z) son contadores al igual que los temporizadores S5 una reminiscencia de antiguos autómatas (quién lo iba a decir con ese nombre ¿eh?).
Son de tipo hardware también como los temporizadores S5 y la cantidad depende de cada CPU.
El uso de este tipo de contadores depende de cada proyecto y de cada programador. Personalmente no los uso porque me siento más cómodo con la primera opción de las vistas. Además, este tipo de contadores tienen una limitación de contaje que llega hasta las 999 unidades.
Las operaciones que se pueden realizar sobre estas operaciones son:
- Cargar un valor de contaje
- Borrar el valor de contaje
- Contar y decontar
- Consultar su valor tanto como cantidad como operación booleana
Cómo cargar un valor a contadores en step 7
Para cargar un valor en un contador, cargaremos el valor usando el prefijo C# y luego haciendo un S Z1 (por ejemplo) si el RLO está a uno. Por ejemplo:
U M0.0 –> Leemos el valor de la marca M0.0
L C#12 –> Cargamos el valor en el ACU1
S Z 1 –> Si la M0.0 fijamos el valor «12» en el contador Z1[divider]
Sumar y restar sobre contadores en step 7
Con las instrucciones ZV y ZR podrás incrementar o decrementar el contador en función del estado del RLO
Así y siguiendo con el Z1:
U M0.1 –> Leemos el estado de la marca M0.1
ZV Z1 –> Si la señal está a 1, incrementamos en uno el valor del Z1
U M0.2 –> Leemos el estado de la marca M0.2
ZR Z1 –> Si el RLO está a uno, restamos una unidad al Z1.[divider]
Poner a cero un contador
Hemos visto, que para cargar un valor de contaje, lo hemos hecho, con un Set, pues para ponerlo a cero, será con un Reset:
U M0.3 –> Leemos el valor de la marca M0.3
R Z1 –> Si está a uno, ponemos a cero el contador[divider]
Leer el valor del contador y su estado
Al igual que pasa con los temporizadores S5, podemos leer directamente el estado del contador y hacer lógica looleana con ello. Es decir, podemos hacer un :
U Z1
= A1.0
Esto significa que mientras el contador sea cero, el valor de A1.0 será cero y se pondrá a uno cuando el Z1 > 0.
Por otro lado, puede que queramos saber cuánto va valiendo el contador. Para ello, haremos una lectura de este estilo:
L Z1 –> Si queremos leer en valor decimal
T MW10 –> Se lo transferimos al MW0 por ejemplo
LC Z1 –> Leemos el valor del Z1 en BCD (Más info sobre BCD aquí).
T MW20 –> Lo transferimos.[divider]
¿Y en KOP?
En resumen de lo visto, podemos verlo en KOP como en la figura adjunta. En el tienes todas las instrucciones vistas en un único bloque que se puede usar en FUP o KOP.
Si vemos este bloque en AWL, lo que tendríamos sería:
U M 0.1
ZV Z 1
U M 0.2
ZR Z 1
U M 0.0
L C#12
S Z 1
U M 0.3
R Z 1
L Z 1
T MW 10
LC Z 1
T MW 20
U Z 1
= A 1.0
Los diferentes colores son las instrucciones arriba vistas. como vez, cada parte está bien diferenciada.[divider]
El video de contadores en step 7
Vamos a dar un pequeño repaso a lo visto con un vídeo muy sencillo en el que puedas ver cómo funciona lo visto hasta ahora.
¿Qué te ha parecido esto de los contadores en step 7?
Como siempre, me gustaría saber qué te ha parecido y cuál de las tres opciones de contadores en step 7 usas o si incluso lo haces de otra forma.
Finalmente como siempre recordarte que la próxima vez que vayas a comprar material eléctrico, te acuerdes de este blog y accedas a masvoltaje.com para realizar tu compra. Ya sabes, desde aquí para que quede constancia desde dónde accedes.
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.
5 Comentarios
Feliz cumpleaño a la pagina y felicitaciones a su creador por tan ardua y loable labor
llegara el momento de la cosecha porque el reconocimiento a tan brillante pagina ya lo tiene
por parte a sus agradecidos seguidores. Feliz navidad y venturoso año Iñigo.
Lo primero felicitarte por tu trabajo. Creo q esta muy currado y que le puede servir a mucha gente.
Yo hasta ahora usaba el contador que suma o resta 1 a una palabra pero despues de ver el ejemplo me quedo con el de inc1 al byte
Excelente!!!
Muy buen aporte…
Excelente
gracias aqui vamos… muy bien expuesto!