MA_DFT
Implementa um filtro de média móvel de até 10 amostras sobre um sinal INT,
atualizando a saída a cada período de amostragem definido. É 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
MA_DFT
+-------------+
BOOL ---|RUN OUT|--- INT
| |
INT ---|INP UPD|--- BOOL
| |
USINT ---|SAM |
| |
TIME ---|CYC |
+-------------+
A saída é calculada pela média móvel das amostras adquiridas:
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
Quando a entrada RUN está inativa, o valor da saída OUT segue o valor da
entrada INP. Quando RUN está ativa, OUT passa a ser o resultado da média
calculada. A entrada INP é do tipo INT, mesmo tipo da saída filtrada OUT.
Na primeira iteração do filtro, o vetor que mantém as amostras é inicializado com o
valor da entrada INP, o que produz uma saída OUT igual a INP. A partir
desse 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 é atualizado pelo bloco.
Parâmetros
Nome |
Direção |
Tipo |
Padrão |
Faixa / Unidade |
Descrição |
|---|---|---|---|---|---|
RUN |
IN |
BOOL |
TRUE |
— |
Habilita o cálculo da média na saída. |
INP |
IN |
INT |
— |
— |
Sinal de entrada a ser filtrado. |
SAM |
IN |
USINT |
10 |
|
Número de amostras para o cálculo da média (máx. 10). |
CYC |
IN |
TIME |
T#200ms |
tempo |
Tempo de amostragem do sinal. |
OUT |
OUT |
INT |
— |
— |
Saída filtrada (média móvel). |
UPD |
OUT |
BOOL |
— |
— |
Pulso indicando que |
Pré-condições
SAMdeve estar entre 1 e 10 amostras.
Observações
Com
RUNinativo,OUTacompanha diretamenteINP(filtro em bypass).A média só é recalculada a cada período
CYC; entre períodos,OUTpermanece estável.UPDfica ativo por um único scan a cada atualização deOUT.
Exemplo
Clique aqui para baixar a tabela de variáveis
Código ST
VAR
my_MA_DFT : HILS.MA_DFT; (* Instancia do filtro *)
END_VAR
(* Exemplo de ativação do bloco dentro da POU *)
my_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) *)
);