HP_DFT
Este bloco implementa um filtro digital passa alta, calculando um ganho a ser aplicado ao sinal de saída em função da frequencia de corte (cf) especificada.
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) = (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
Bloco
HP_DFT
+---------------+
BOOL ----|START OUT|---- REAL
| |
REAL ----|INP UPD|---- BOOL
| |
TIME ----|C_TME |
| |
REAL ----|CUT_OFF |
+---------------+
Quando a entrada START estiver inativa o valor da saída OUT segue o valor da entrada INP
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 |
Parâmetro |
Tipo Dado |
V. Ini. |
Descrição |
START |
Entrada |
BOOL |
TRUE |
Habilita filtro do sinal de entrada quando ativo |
INP |
Entrada |
REAL |
0.0 |
valor corrente do dado a ser filtrado |
C_TME |
Entrada |
TIME |
T#20ms |
Tempo de ciclo |
CUT_OFF |
Entrada |
REAL |
0.0 |
Frequencia de corte em Hz |
OUT |
Saída |
REAL |
0.0 |
Sinal de saida filtrado (se START = FALSE, OUT = INP) |
UPD |
Saída |
BOOL |
FALSE |
Valor de saida atualizado (pulso) |
Exemplo
Declaração de Variáveis
Nome |
Tipo |
Descrição |
|---|---|---|
my_HP_DFT |
HILS.HP_DFT |
Instancia do filtro |
Código ST
(* Exemplo de ativação do bloco dentro da POU *)
(* ... *)
my_HP_DFT( // 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 // [REAL] Frequencia de corte em Hz
//OUT => , // [REAL] Sinal de saida filtrado (se START = FALSE, OUT = INP)
//UPD => // [BOOL] Valor de saida atualizado (pulso)
);
(* ... *)