CTUD
Bloco contador crescente e descrescente. A cada transição de subida da entrada CD, o valor de CV irá decrementar até atingir o valor zero. A cada transição de subida da entrada CU, o valor de CV irá incrementar até atingir o valor maximo do tipo de dado INT. A saída QD ficara ativa quando CV for igual ou menor que zero. A saída QU ficara ativa quando CV for igual ou maior que PV. A entrada LD quando ativada faz CV igual a PV. A entrada R quando ativada faz CV igual a zero.
Bloco
CTUD
+-------------+
BOOL ---|CU QU|--- BOOL
| |
BOOL ---|CD QD|--- BOOL
| |
BOOL ---|R CV|--- INT
| |
BOOL ---|LD |
| |
INT ---|PV |
+-------------+
Parâmetros
Nome |
Classe |
Tipo |
Descrição |
CU |
Entrada |
BOOL |
Entrada de contagem crescente |
CD |
Entrada |
BOOL |
Entrada de contagem decrescente |
R |
Entrada |
BOOL |
Reset |
LD |
Entrada |
BOOL |
Preset |
PV |
Entrada |
INT |
Valor de preset |
QU |
Saída |
BOOL |
Saida de Preset atingido |
QD |
Saída |
BOOL |
Saida de reset atingido |
CV |
Saída |
INT |
Valor da contagem |
Exemplo
Declaração de Variáveis
Nome |
Tipo |
Descrição |
|---|---|---|
pulse_up |
BOOL |
evento de contagem crescente |
pulse_dn |
BOOL |
evento de contagem decrescente |
count |
INT |
Contador |
preset |
BOOL |
preset do contador |
reset |
BOOL |
reset do contador |
my_counter |
CTUD |
Instância do bloco CTD |
Código ST
(* Exemplo de ativação do bloco CTD dentro da POU *)
(* ... *)
my_counter(CU:= pulse_up, CD:= pulse_dn, R := reset, LD:= preset, PV:= 100); (* Ativação da instancia do bloco *)
if (my_counter.QU) then (* testa se atingiu o valor da contagem *)
(* trata contagem atingida *)
(* ... *)
end_if;
(* ... *)