MA_DFT
Este bloco implementa um filtro de média móvel com até 10 amostras.
t = -(A -1)
------
\
y = \ INP(t) / A onde:
/
/
------
t=0
Y = Média móvel calculada
A = Número de amostras
t = Tempo de aquisição da amostra
Bloco
MA_DFT
+-------------+
BOOL ---|RUN OUT|--- INT
| |
INT ---|INP UPD|--- BOOL
| |
USINT ---|SAM |
| |
TIME ---|CYC |
+-------------+
Quando a entrada RUN estiver inativa o valor da saida OUT segue o valor da entrada INP.
Quando a entrada RUN estiver ativa o valor da saída OUT será o resultado da média calculada.
O valor da entrada INP é do tipo INT, mesmo tipo de saída filtrada OUT.
Na primeira interação do filtro o vetor que mantem os valores das amostras para o calculo da média é inicializado como valor da entrada INP o que produz uma saída OUT igual a INP.
A partir deste instante, a cada período de tempo definido em CYC, uma amostra é inserida no vetor e a amostra mais antiga é descartada, gerando-se uma nova saída OUT com a média dos valores correntes.
A saída UPD gera um pulso no instante em que o valor OUT for atualizado pelo bloco.
Parâmetros
Nome |
Classe |
Tipo |
Dim. |
V. Ini. |
Descrição |
RUN |
Entrada |
BOOL |
TRUE |
Habilita calculo da saida |
|
INP |
Entrada |
INT |
Sinal de entrada a ser filtrado |
||
SAM |
Entrada |
USINT |
10 |
Número de amostras para o cálculo da média (max = 10) |
|
CYC |
Entrada |
TIME |
T#200ms |
tempo de amostragem do sinal |
|
OUT |
Saída |
INT |
saída filtrada |
||
UPD |
Saída |
BOOL |
Valor de saida atualizado (pulso) |
Exemplo
Declaração de Variáveis
Nome |
Tipo |
Descrição |
|---|---|---|
my_MA_DFT |
HILS.MA_DFT |
Instancia do filtro |
Código ST
(* Exemplo de ativação do bloco dentro da POU *)
(* ... *)
my_MA_DFT( // MA_DFT
RUN := TRUE, // [BOOL] Habilita calculo da saida
INP := 2000, // [INT] Sinal de entrada a ser filtrado
SAM := 10, // [USINT] Número de amostras para o cálculo da média (max = 10)
CYC := T#100ms // [TIME] tempo de amostragem do sinal
//OUT => , // [INT] saída filtrada
//UPD => // [BOOL] Valor de saida atualizado (pulso)
);
(* ... *)