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 CV.

PV

IN

INT

0

—

Valor de preset a ser atingido pela contagem.

Q

OUT

BOOL

FALSE

—

Ativa (TRUE) quando CV é maior ou igual a PV.

CV

OUT

INT

0

—

Valor corrente da contagem.

Pré-condições

  • Requer uma instância do bloco (mantém CV entre scans).

Observações

  • O reset R tem prioridade sobre a contagem CU.

  • A contagem só avança por transição de subida em CU, não por nível.

Ver também

CTD, CTUD

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;