Contadores en Step 7

contadores step 7Para 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:

[unordered_list style="bullet"]

  • Sumar y restar sobre una variable
  • Usar los comandos INC /DEC
  • Usar los contadores S5

[/unordered_list]

 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.

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:

[unordered_list style="bullet"]

  • INC N#_8_bits para incrementar el contador
  • DEC N#_8_bits para decrementar el contador

[/unordered_list]

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

¿Fácil no? Muy parecido al caso anterior pero ligeramente más compacto.

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:

[unordered_list style="bullet"]

  • Cargar un valor de contaje
  • Borrar el valor de contaje
  • Contar  y decontar
  • Consultar su valor tanto como cantidad como operación booleana

[/unordered_list]

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

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.

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

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.

 ¿Y en KOP?

contadores en step 7

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.

 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.

El proyecto de descarga de contadores en step 7

Puedes descargarte el proyecto de ejemplo en el siguiente enlace:

[unordered_list style="bullet"] [/unordered_list]

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

 

5 Comentarios

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

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

  3. Excelente!!!

    Muy buen aporte…

  4. sebastian abarca

    Excelente

  5. gracias aqui vamos… muy bien expuesto!

Deja un Comentario

Tu dirección de email no será publicada. Required fields are marked *

*

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>