CTUD

Contador crescente/decrescente: a cada transição de subida de CU incrementa CV (até o máximo do tipo INT) e a cada transição de subida de CD decrementa CV (até zero), ativando QU quando CV for maior ou igual a PV e QD 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

             CTUD
        +-------------+
BOOL ---|CU         QU|--- BOOL
        |             |
BOOL ---|CD         QD|--- BOOL
        |             |
BOOL ---|R          CV|--- INT
        |             |
BOOL ---|LD           |
        |             |
 INT ---|PV           |
        +-------------+

A contagem é bidirecional sobre o valor corrente CV: transições de subida em CU incrementam e transições de subida em CD decrementam. A entrada LD (preset) carrega CV com PV e a entrada R (reset) zera CV. A saída QU acompanha a condição CV >= PV (limite superior atingido) e QD a condição CV <= 0 (limite inferior atingido).

Como bloco de função da IEC 61131-3, CTUD é chamado sem prefixo de namespace (CTUD(...)).

Parâmetros

Nome

Direção

Tipo

Padrão

Faixa / Unidade

Descrição

CU

IN

BOOL

FALSE

—

Entrada de contagem crescente (avaliada por transição de subida).

CD

IN

BOOL

FALSE

—

Entrada de contagem decrescente (avaliada por transição de subida).

R

IN

BOOL

FALSE

—

Reset: quando ativa, faz CV igual a zero.

LD

IN

BOOL

FALSE

—

Preset (load): quando ativa, faz CV igual a PV.

PV

IN

INT

0

—

Valor de preset comparado com CV para ativar QU.

QU

OUT

BOOL

FALSE

—

Ativa quando CV é maior ou igual a PV (limite superior atingido).

QD

OUT

BOOL

FALSE

—

Ativa quando CV é menor ou igual a zero (limite inferior atingido).

CV

OUT

INT

0

—

Valor corrente da contagem.

Observações

  • CU e CD são avaliadas por transição de subida (edge), não por nível.

  • LD e R têm prioridade sobre a contagem no scan em que são ativadas.

Ver também

CTU, CTD

Exemplo

Clique aqui para baixar a tabela de variáveis

Código ST

VAR
    pulse_up   : BOOL; (* evento de contagem crescente *)
    pulse_dn   : BOOL; (* evento de contagem decrescente *)
    preset     : BOOL; (* preset do contador *)
    reset      : BOOL; (* reset do contador *)
    my_counter : CTUD; (* Instância do bloco CTUD *)
END_VAR

(* Ativação da instância do bloco *)
my_counter(CU := pulse_up, CD := pulse_dn, R := reset, LD := preset, PV := 100);

IF my_counter.QU THEN  (* testa se atingiu o valor da contagem *)
    (* trata contagem atingida *)
    ;
END_IF;