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 |
UPD |
OUT |
BOOL |
FALSE |
— |
Valor de saída atualizado (pulso). |
Pré-condições
C_TMEdeve refletir o período de execução da POU para que o cálculo do ganho seja consistente.CUT_OFFeC_TMEsão avaliados apenas na transição OFF?ON deSTART.
Observações
Com
START= FALSE, o filtro é transparente:OUTacompanhaINP.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) *)
);