CTD
Contador decrescente: a cada transição de subida de CD, decrementa CV a partir do valor de preset PV até atingir zero, ativando Q quando CV for menor ou igual a zero. É 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
CTD
+-------------+
BOOL ---|CD Q|--- BOOL
| |
BOOL ---|LD CV|--- INT
| |
INT ---|PV |
+-------------+
A cada transição de subida (borda de subida) da entrada CD, o valor corrente
CV é decrementado. Quando LD está em TRUE, ocorre a carga (load) do preset:
CV recebe o valor de PV. A saída Q fica ativa (TRUE) enquanto CV for
menor ou igual a zero.
Parâmetros
Nome |
Direção |
Tipo |
Padrão |
Faixa / Unidade |
Descrição |
|---|---|---|---|---|---|
CD |
IN |
BOOL |
FALSE |
— |
Entrada de contagem: cada transição de subida decrementa |
LD |
IN |
BOOL |
FALSE |
— |
Carga (load): em TRUE, faz |
PV |
IN |
INT |
0 |
— |
Valor de preset carregado em |
Q |
OUT |
BOOL |
FALSE |
— |
Ativa (TRUE) quando |
CV |
OUT |
INT |
0 |
— |
Valor corrente da contagem. |
Observações
O bloco mantém estado entre scans; declare uma instância própria para cada contador.
Enquanto
LDestiver ativo, as transições deCDnão decrementamCV(a carga tem prioridade).
Exemplo
Clique aqui para baixar a tabela de variáveis
Código ST
VAR
pulse : BOOL; (* evento de contagem *)
reset : BOOL; (* reset do contador *)
my_counter : CTD; (* Instância do bloco CTD *)
END_VAR
(* Exemplo de ativação do bloco CTD dentro da POU *)
(* ... *)
my_counter(CD := pulse, LD := reset, PV := 100); (* Ativação da instância do bloco *)
IF my_counter.Q THEN (* testa se atingiu o valor da contagem *)
(* trata contagem atingida *)
(* ... *)
END_IF;
(* ... *)