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 |
Contador decrementa o valor corrente |
|
1 |
1 |
0 -> 1 |
COUNT(t):=COUNT(t-1) + 1 |
Contador incrementa o valor corrente |
|
1 |
x |
0 |
COUNT(t):=COUNT(t-1) |
Contador mantem o valor corrente |
|
1 |
1 |
1 |
COUNT(t):=COUNT(t-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 *)
(* ... *)