UDC_M - Contador UP/DOWN

O objetivo deste elemento é operar como um contador de eventos. Possui uma entrada para RESET do valor de contagem e um parâmetro de limite de contagem. A cada pulso (evento) na entrada de contagem, o valor do contador será incrementado ou decrementado de uma unidade até o zero (se decrementando) ou o limite definido(se incrementando).

Bloco

            UDC_M
           +-----+
   EVE  ---|     |---Q
           |     |
   UP  ----|     |
           |     |
ACTIVE ----|     |
           |     |
   COUNT---|-----|--- COUNT
           |     |
   LIM  ---|     |
           +-----+

Parâmetros

Nome

Parâmetro

Tipo Dado

Descrição

EVE

Entrada

BOOL

Entrada de contagem. Incrementa ou decrementa o contador a cada transição de subida do sinal.

UP

Entrada

BOOL

Entrada de sentido de contagem. Se ativa incrementa o contador, até o limite definido em LIM. Se inativa decrementa o contador até zero.

ENA

Entrada

BOOL

Entrada de habilitação/reset. Se ativa permite a contagem quando ocorrer um evento. Se inativa faz COUNT = 0 se a entrada UP estiver inativa ou, faz COUNT = LIM se a entrada UP estiver ativa.

COUNT

Saída

INT

Valor corrente do contador. Vai variar entre ZERO e LIM.

LIM

Entrada

INT

Valor limite para contagem. O valor da saida count irá incrementar até o limite especificado neste parametro.

Q

Saida

BOOL

Igual a TRUE se o COUNT = LIM e UP ativa, Igual a TRUE se o COUNT = 0 e UP inativa.

Tabela de estados

ENA

UP

EVE

COUNT

Q

Obs.

0

0

x

COUNT(t):=0

0

Contador em reset

0

1

x

COUNT(t):=LIM

0

Contador em reset

1

0

0 -> 1

COUNT(t):=COUNT(t-1) - 1

[1]

Contador decrementa o valor corrente

1

1

0 -> 1

COUNT(t):=COUNT(t-1) + 1

[1]

Contador incrementa o valor corrente

1

x

0

COUNT(t):=COUNT(t-1)

[1]

Contador mantem o valor corrente

1

1

1

COUNT(t):=COUNT(t-1)

[1]

Contador mantem o valor corrente

Exemplo

Exemplo em ST:

// Exemplo de Declaração de Variáveis que devem ser realizadas na aba "Variaveis" da POU:
inp_eve, inp_up, inp_ena: BOOL;  (* Parametros de entrada *)
inp_lin  : INT;
out_Q    : BOOL;         (* Parametro de saída    *)
out_count: INT;
my_UDC   : UDC_M;        (* Instancia do bloco UDC_M *)

// Exemplo de ativação do bloco UDC dentro da POU
(* ... *)
my_UDC(EVE:=inp_eve, UP:=inp_up, ENA:=inp_ena, LIM:=inp_lim); (* Ativação da instancia do bloco UDC *)
out_Q := my_UDC.Q;           (* Obtem parametro de saida Q do bloco UDC *)
out_count := my_UDC.COUNT;   (* Obtem parametro de saida COUNT do bloco UDC *)
(* ... *)