HP_DFT
Implementa um filtro digital passa-alta sobre um sinal REAL, aplicando um ganho
calculado em função da frequência de corte especificada; enquanto a entrada
START estiver inativa 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
HP_DFT
+---------------+
BOOL ----|START OUT|---- REAL
| |
REAL ----|INP UPD|---- BOOL
| |
TIME ----|C_TME |
| |
REAL ----|CUT_OFF |
+---------------+
Enquanto START estiver inativa, a saída OUT segue diretamente o valor da
entrada INP. Com o bloco ativo, o filtro atenua as componentes de baixa
frequência do sinal, mantendo (ganho ˜ 1) as componentes acima da frequência de
corte CUT_OFF.
O bloco emprega a seguinte equação:
rc = 1.0 / (2 * PI * cf) onde:
rc = constante de tempo do filtro
cf = frequência de corte do filtro
Y(k) = (rc / (rc + ts)) * (Y(k-1) + X(k) - X(k-1)) 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
X(k-1) = valor da entrada no instante anterior
ts = período de amostragem do sinal
Importante
Quando o bloco estiver ativo (START = TRUE), alterações nos valores de
C_TME e CUT_OFF não afetam o cálculo. Para que esses 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 a filtragem do sinal de entrada quando ativo. Inativo, |
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 |
— |
Pulso indicando que o valor de saída foi atualizado. |
Pré-condições
C_TMEdeve refletir o período de amostragem real do sinal para que o cálculo do ganho seja consistente.Para reavaliar
C_TMEeCUT_OFF, aplique uma transição OFF?ON emSTART.
Observações
Com
STARTinativa, o bloco opera em bypass:OUT=INP.A saída
UPDsinaliza, por pulso, cada atualização do valor filtrado.
Ver também
Exemplo
Clique aqui para baixar a tabela de variáveis
Código ST
VAR
my_HP_DFT : HILS.HP_DFT; (* Instancia do filtro *)
END_VAR
(* Exemplo de ativacao do bloco dentro da POU *)
my_HP_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] Frequencia de corte em Hz *)
);
(* Saidas disponiveis: my_HP_DFT.OUT (REAL), my_HP_DFT.UPD (BOOL) *)