FO_DFT

Implementa um filtro digital de 1ª ordem sobre um sinal REAL: quando habilitado, suaviza a entrada segundo uma constante de tempo configurável; caso contrário a saída acompanha diretamente a entrada. É 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

            FO_DFT
        +-------------+
BOOL ---|RUN       OUT|--- REAL
        |             |
REAL ---|INP       UPD|--- BOOL
        |             |
TIME ---|TAU          |
        |             |
TIME ---|CYC          |
        +-------------+

O filtro implementa a equação:

Y(k) = Y(k-1) + ( X(k) - Y(k-1) ) * (Ts/Tf)   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 (CYC)
Tf     = constante de tempo do filtro (TAU)
  • Quando a entrada RUN está inativa, a saída OUT segue diretamente o valor da entrada INP.

  • Quando a entrada RUN está ativa, a saída OUT é o resultado da equação descrita.

  • A entrada INP é do tipo REAL, o mesmo tipo da saída OUT.

  • A saída UPD gera um pulso no instante em que o valor de OUT é atualizado pelo bloco.

Importante

O valor de TAU deve ser maior que o tempo de amostragem definido (CYC). Se TAU for menor ou igual a CYC, é considerado TAU = CYC.

Parâmetros

Nome

Direção

Tipo

Padrão

Faixa / Unidade

Descrição

RUN

IN

BOOL

TRUE

—

Habilita o cálculo da saída filtrada.

INP

IN

REAL

—

—

Sinal de entrada a ser filtrado.

TAU

IN

TIME

T#5s

> CYC

Constante de tempo do filtro.

CYC

IN

TIME

T#200ms

—

Tempo de amostragem do sinal.

OUT

OUT

REAL

—

—

Saída filtrada.

UPD

OUT

BOOL

—

—

Pulso a cada atualização de OUT.

Pré-condições

  • TAU deve ser maior que CYC (caso contrário assume-se TAU = CYC).

Observações

  • Com RUN inativo o bloco atua como passagem direta (OUT = INP).

  • UPD pulsa apenas no scan em que OUT é recalculado.

Exemplo

Clique aqui para baixar a tabela de variáveis

Código ST

VAR
    my_FO_DFT : HILS.FO_DFT; (* Instancia do filtro *)
END_VAR

(* Exemplo de ativacao do bloco dentro da POU *)
my_FO_DFT(
  RUN := TRUE,     (* [BOOL] Habilita calculo da saida *)
  INP := 1.5,      (* [REAL] Sinal de entrada a ser filtrado *)
  TAU := T#2s,     (* [TIME] Constante de tempo do filtro *)
  CYC := T#50ms    (* [TIME] tempo de amostragem do sinal *)
  (* OUT => ,       [REAL] saida filtrada *)
  (* UPD =>         [BOOL] Valor de saida atualizado (pulso) *)
  );