Un contador es una instrucción de PLC que incrementa (cuenta hacia arriba) o decrementa (cuenta hacia abajo) un valor de número entero cuando se lo solicita la transición de un bit de 0 a 1 (“falso” a “verdadero”).
Las instrucciones de contador vienen en tres tipos básicos:
- contadores progresivos,
- contadores regresivos y
- contadores progresivos/regresivos.
Las instrucciones de contador “progresivos” y “regresivos” tienen entradas únicas para activar los conteos, mientras que los contadores “progresivos/regresivos” tienen dos entradas de activación: una para hacer que el contador se incremente y otra para hacer que el contador se decremente.
Instrucciones de contador de PLC
Para ilustrar el uso de una instrucción de contador, analizaremos un sistema basado en PLC diseñado para contar objetos a medida que pasan por una cinta transportadora:
En este sistema, un haz de luz continuo (ininterrumpido) hace que el sensor de luz cierre su contacto de salida, lo que activa el canal discreto IN4.
Cuando un objeto en la cinta transportadora interrumpe el haz de luz que va de la fuente al sensor, el contacto del sensor se abre, interrumpiendo la alimentación a la entrada IN4.
Un interruptor pulsador conectado para activar la entrada discreta IN5 cuando se presiona servirá como un “reinicio” manual del valor de conteo.
Una lámpara indicadora conectada a uno de los canales de salida discretos servirá como indicador de cuándo el valor de conteo del objeto ha excedido un límite preestablecido.
Ahora analizaremos un programa de diagrama de escalera simple diseñado para incrementar una instrucción de contador cada vez que el haz de luz se interrumpe:
Esta instrucción de contador en particular (CTU) es un contador incremental, lo que significa que cuenta “hacia arriba” con cada entrada de transición de apagado a encendido a su entrada “CU”.
El contacto virtual normalmente cerrado (objeto del sensor IN) normalmente se mantiene en el estado “abierto” cuando el haz de luz es continuo, en virtud del hecho de que el sensor mantiene ese canal de entrada discreto energizado mientras el haz es continuo.
Cuando el haz se interrumpe por un objeto que pasa por la cinta transportadora, el canal de entrada se desenergiza, lo que hace que el objeto sensor de contacto virtual IN se “cierre” y envíe energía virtual a la entrada “CU” de la instrucción del contador.
Esto incrementa el contador justo cuando el borde delantero del objeto interrumpe el haz. La segunda entrada del cuadro de instrucción del contador (“R”) es la entrada de reinicio, que recibe energía virtual del interruptor de reinicio del contacto IN cada vez que se presiona el botón de reinicio. Si se activa esta entrada, el contador restablece inmediatamente su valor actual (CV) a cero.
La indicación de estado se muestra en este programa de diagrama de escalera, con el valor preestablecido (PV) del contador de 25 y el valor actual (CV) del contador de 0 resaltados en azul.
El valor preestablecido es algo programado en la instrucción del contador antes de que el sistema se ponga en servicio, y sirve como umbral para activar la salida del contador (Q), que en este caso enciende la lámpara indicadora de conteo (la bobina de conteos alcanzados OUT).
Según el estándar de programación IEC 61131-3, esta salida del contador debe activarse siempre que el valor actual sea igual o mayor que el valor preestablecido (Q está activo si CV ≥ PV).
Este es el estado del mismo programa después de que treinta objetos hayan pasado por el sensor en la cinta transportadora.
Como puede ver, el valor actual del contador ha aumentado a 30, superando el valor preestablecido y activando la salida discreta:
Si no nos importara mantener un recuento total preciso de objetos después de 25, sino que simplemente quisiéramos que el programa indicara cuándo habían pasado 25 objetos.
También podríamos usar una instrucción de contador descendente preestablecida en un valor de 25, que activa una bobina de salida cuando el recuento llega a cero:
Aquí, una entrada de "carga" hace que el valor actual del contador sea igual al valor preestablecido (25) cuando se activa.
Con cada pulso del sensor recibido, la instrucción del contador disminuye. Cuando llega a cero, se activa la salida Q.
Un problema potencial en cualquiera de las dos versiones de este sistema de conteo de objetos es que el PLC no puede discriminar entre el movimiento hacia adelante y hacia atrás en la cinta transportadora.
Si, por ejemplo, la cinta transportadora se invirtiera en su dirección, el sensor continuaría contando objetos que ya habían pasado antes (en la dirección hacia adelante) a medida que esos objetos retrocedieran en la cinta.
Esto sería un problema porque el sistema “pensaría” que habían pasado más objetos por la cinta (lo que indica una mayor producción) de los que realmente pasaron.
Una solución a este problema es utilizar un contador ascendente/descendente, capaz tanto de incrementar (contar hacia adelante) como de decrementar (contar hacia atrás), y equipar este contador con dos sensores de haz de luz capaces de determinar la dirección de desplazamiento.
Si dos haces de luz están orientados en paralelo entre sí, más cerca que el ancho del objeto más angosto que pasa por la cinta transportadora, tendremos suficiente información para determinar la dirección de desplazamiento del objeto:
Esto se denomina sincronización de señal en cuadratura, porque las dos formas de onda de pulso están separadas en fase aproximadamente 90 grados (un cuarto de período).
Podemos utilizar estas dos señales desfasadas para incrementar o decrementar una instrucción de contador ascendente/descendente, dependiendo de qué pulso se adelanta y cuál se retrasa.
A continuación se muestra un programa PLC de diagrama de escalera diseñado para interpretar las señales de pulso en cuadratura, haciendo uso de contactos de transición negativa, así como contactos estándar:
El contador se incrementará (contará hacia arriba) cuando el sensor B se desactive solo si el sensor A ya está en el estado desenergizado (es decir, el haz de luz A se interrumpe antes que B).
El contador decrementará (contará hacia abajo) cuando el sensor A se desactive solo si el sensor B ya está en el estado desenergizado (es decir, el haz de luz B se interrumpe antes que A).
Tenga en cuenta que el contador ascendente/descendente tiene una entrada de "reinicio" (R) y una entrada de "carga" ("LD") para forzar el valor actual.
La activación de la entrada de reinicio fuerza el valor actual del contador (CV) a cero, tal como vimos con la instrucción de contador "ascendente".
Luego, al activar la entrada de carga, el valor actual del contador se convierte en el valor preestablecido (PV), tal como vimos con la instrucción de contador “abajo”.
En el caso de un contador arriba/abajo, hay dos salidas Q: una QU (salida arriba) para indicar cuando el valor actual es igual o mayor que el valor preestablecido, y una QD (salida abajo) para indicar cuando el valor actual es igual o menor que cero.
Observe cómo el valor actual (CV) de cada contador mostrado está asociado con un nombre de etiqueta propio, en este caso, partes contadas.
El número entero del valor actual (CV) de un contador es una variable en la memoria del PLC, al igual que los valores booleanos, como el sensor IN A y el reinicio del interruptor IN, y puede estar asociado con un nombre de etiqueta o una dirección simbólica de la misma manera.
Esto permite que otras instrucciones en un programa de PLC lean (¡y a veces escriban!) valores desde y hacia esa ubicación de memoria.