CTU
Contador crescente: a cada transição de subida da entrada CU, incrementa o valor acumulado CV até o preset PV, ativando Q quando CV atinge ou ultrapassa PV. É um bloco de função (mantém estado entre scans; requer instância).
Biblioteca: IEC_STD · Namespace: IEC · Tipo: bloco de função
Bloco de função
CTU
+-------------+
BOOL ---|CU Q|--- BOOL
| |
BOOL ---|R CV|--- INT
| |
INT ---|PV |
+-------------+
A cada borda de subida em CU, CV é incrementado. Enquanto CV for maior ou
igual a PV, a saída Q permanece em TRUE. A entrada R em TRUE tem prioridade
e zera CV (Q volta a FALSE). Sendo um bloco padrão IEC 61131-3, é chamado sem
prefixo de namespace (CTU(...)).
Parâmetros
Nome |
Direção |
Tipo |
Padrão |
Faixa / Unidade |
Descrição |
|---|---|---|---|---|---|
CU |
IN |
BOOL |
FALSE |
— |
Entrada de contagem; conta uma unidade a cada transição de subida. |
R |
IN |
BOOL |
FALSE |
— |
Reset: quando TRUE, zera o valor acumulado |
PV |
IN |
INT |
0 |
— |
Valor de preset a ser atingido pela contagem. |
Q |
OUT |
BOOL |
FALSE |
— |
Ativa (TRUE) quando |
CV |
OUT |
INT |
0 |
— |
Valor corrente da contagem. |
Pré-condições
Requer uma instância do bloco (mantém
CVentre scans).
Observações
O reset
Rtem prioridade sobre a contagemCU.A contagem só avança por transição de subida em
CU, não por nível.
Ver também
Exemplo
Clique aqui para baixar a tabela de variáveis
Código ST
VAR
pulse : BOOL; (* evento de contagem *)
count : INT; (* Contador *)
reset : BOOL; (* reset do contador *)
my_counter : CTU; (* Instância do bloco CTU *)
END_VAR
(* Exemplo de ativação do bloco CTU dentro da POU *)
my_counter(CU := pulse, R := reset, PV := 100); (* Ativação da instância do bloco *)
count := my_counter.CV; (* lê o valor corrente da contagem *)
IF my_counter.Q THEN (* testa se atingiu o valor da contagem *)
(* trata contagem atingida *)
;
END_IF;