LP_DFT

Implementa um filtro digital passa-baixa de primeira ordem, calculando um ganho aplicado ao sinal em função da frequência de corte especificada. É um bloco de função (mantém estado entre scans; requer instância).

Biblioteca: HI_STD · Namespace: HILS · Tipo: bloco de função

Bloco de função

              LP_DFT
         +---------------+
BOOL ----|START       OUT|---- REAL
         |               |
REAL ----|INP         UPD|---- BOOL
         |               |
TIME ----|C_TME          |
         |               |
REAL ----|CUT_OFF        |
         +---------------+

Quando a entrada START está inativa, a saída OUT segue o valor da entrada INP. Com o filtro ativo, o bloco calcula o ganho aplicado ao sinal de saída em função da frequência de corte CUT_OFF:

GAIN |
     |
   1 |---------------
     |               \
     |                \
     |                 \
     |                  \
     |                   \
     |                    \
     |                     \
   0 +-------------------------------------------------------
                           cf                          F(Hz)

O bloco utiliza a seguinte equação:

rc   = 1.0 / (2 * PI * cf)  onde:

rc = constante de tempo do filtro
cf = frequencia de corte do filtro

Y(k) = ((ts / (rc + ts)) * X(k)) + (Y(k-1) * (1 - (ts / (rc + ts))))   onde:

Y(k)   = saída do filtro no instante k
Y(k-1) = saída do filtro no instante anterior
X(k)   = valor da entrada no instante k
ts     = período de amostragem do sinal

Importante

Quando o bloco estiver ativo (START = TRUE), alterações nos valores dos parâmetros C_TME e CUT_OFF não afetam o cálculo. Para que estes parâmetros sejam reavaliados, a entrada START deve sofrer uma transição de OFF para ON.

Parâmetros

Nome

Direção

Tipo

Padrão

Faixa / Unidade

Descrição

START

IN

BOOL

TRUE

—

Habilita o filtro do sinal de entrada quando ativo.

INP

IN

REAL

0.0

—

Valor corrente do dado a ser filtrado.

C_TME

IN

TIME

T#20ms

—

Tempo de ciclo (período de amostragem do sinal).

CUT_OFF

IN

REAL

0.0

Hz

Frequência de corte do filtro.

OUT

OUT

REAL

0.0

—

Sinal de saída filtrado (se START = FALSE, OUT = INP).

UPD

OUT

BOOL

FALSE

—

Valor de saída atualizado (pulso).

Pré-condições

  • C_TME deve refletir o período de execução da POU para que o cálculo do ganho seja consistente.

  • CUT_OFF e C_TME são avaliados apenas na transição OFF?ON de START.

Observações

  • Com START = FALSE, o filtro é transparente: OUT acompanha INP.

  • UPD é pulsado a cada atualização do valor de saída.

Exemplo

Clique aqui para baixar a tabela de variáveis

Código ST

VAR
    my_LP_DFT : HILS.LP_DFT; (* Instância do filtro *)
END_VAR

(* Exemplo de ativação do bloco dentro da POU *)
my_LP_DFT(
  START   := TRUE,      (* [BOOL] Habilita filtro do sinal de entrada quando ativo *)
  INP     := 1.5,       (* [REAL] Valor corrente do dado a ser filtrado *)
  C_TME   := T#50ms,    (* [TIME] Tempo de ciclo *)
  CUT_OFF := 500.0      (* [REAL] Frequência de corte em Hz *)
  (* OUT  => ,          [REAL] Sinal de saida filtrado (se START = FALSE, OUT = INP) *)
  (* UPD  =>            [BOOL] Valor de saída atualizado (pulso) *)
  );