Os Contadores (ao lado dos Temporizadores - Timers, das Bobinas e Contatos de Relés e dos Comandos de Seqüência) são um dos principais componentes de um PLC, medindo a quantidade de vezes em que determinada condição mudou de estado (falso/verdadeiro ou ligado/desligado).
Por exemplo, se a condição for uma variável de entrada de bit (liga/desliga), e a essa variável for ligado um interruptor, um contador CTU contaria a quantidade de vezes em que este interruptor foi ligado e desligado, contando a quantidade de ocorrências de qualquer fenômeno físico que ligue e desligue repetidamente tal interruptor, como a quantidade de peças, veículos ou pessoas que passam por certo local, a quantidade de rotações de um eixo ou polia, a quantidade de acionamentos de determinado mecanismo, etc.
Há, na LCE, três tipos de contadores, que são mapeados, respectivamente, para as instruções IL CTU, CTD e CTUD:
1. Contador Crescente:
conta (I0.0) reset_quando (I0.1) em C0 até 3;
No exemplo acima, a variável doubleword C0 (variável de contagem) conta as vezes em que a variável bit I0.0 passou de falso (desligado ou não acionado) para verdadeiro (ligado ou acionado), em contagem crescente ou progressiva. Quando C0 atinge o valor de referência 3 (valor preset), a variável bit C0, inicialmente desligada, torna-se ligada; e a contagem continua.
Quando I0.1 torna-se verdadeiro (ligado ou acionado), a variável doubleword C0 é zerada e a variável bit C0, desligada.
Para que o ciclo se repita, I0.1 deve ser ligada e desligada.
Diagrama de Funcionamento
Obs.: a forma com que se usa a variável C0 definirá se se trata da doubleword C0 (comparações, atribuições ou operações matemáticas) ou do bit C0 (operações lógicas de bit), conforme exemplificado no diagrama abaixo:
2. Contador Decrescente:
conta_decrescente (I0.0) quando (I0.1) faz C0 := 3;
No exemplo acima, quando I0.1 torna-se ligada - ou acionada, a variável doubleword C0 recebe o valor 3 (valor preset), e a variável bit C0 é desligada. Então, para que a contagem regressiva possa acontecer, I0.1 deve ser desligada. A partir daí, cada vez que I0.0 passa de desligada para ligada, a doubleword C0 é decrementada (subtraída de um, em contagem decrescente ou regressiva).
Se I0.1 for ligada, volta-se ao início da contagem regressiva (valor preset). Quando a variável doubleword C0 atinge o valor zero, a variável bit C0 torna-se ligada; e a contagem regressiva pára em zero.
Para que o ciclo se repita, I0.1 deve ser ligada e desligada.
Diagrama de Funcionamento
3. Contador Crescente-Decrescente:
conta_crescente (I0.0) conta_decrescente (I0.1) reset_quando (I0.2) em C0 até 3;
No exemplo acima, quando I0.2 torna-se ligada ou acionada, a variável doubleword C0 é zerada, e a variável bit C0 é desligada. Então, para que a contagem progressiva e/ou regressiva possam acontecer, I0.2 deve ser desligada. A partir daí, cada vez que I0.0 passa de desligada para ligada, a variável doubleword C0 é incrementada, em contagem progressiva, e cada vez que I0.1 passa de desligada para ligada, a variável doubleword C0 é decrementada, em contagem regressiva.
Se I0.2 for ligada, volta-se ao início da contagem, com a variável doubleword C0 sendo zerada, e a variável bit C0, desligada.
Quando C0 atinge o valor de referência (preset) 3, a variável bit C0 é ligada; e a contagem continua. A contagem, tanto a regressiva quanto a progressiva, não pára nunca, podendo alcançar inclusive valores negativos. (Obs.: se atingido o limite numérico da variável doubleword, a contagem passa do máximo positivo para o mínimo negativo e vice-versa.)
Para que o ciclo se repita, I0.2 deve ser ligada e desligada.
Diagrama de Funcionamento
Obs. 1: a resposta à atuação das entradas pode demorar até um ciclo de scan, embora tal demora não esteja representada nos diagramas acima.
Obs. 2: a variável de contagem deve ter, necessariamente, a forma Cn, onde n pode variar de 0 a 511.
Sinônimos: conta: count;
conta_crescente: count_cresc, conta_cresc;
conta_decrescente: count_dec, conta_dec;
reset_quando: reset_when;
em: in;
faz: let;
até: referência, until, reference