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

Clique aqui para baixar a tabela de variáveis

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)
  );

(* ... *)