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

1 .. 10 amostras

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 OUT foi atualizado.

Pré-condições

  • SAM deve estar entre 1 e 10 amostras.

Observações

  • Com RUN inativo, OUT acompanha diretamente INP (filtro em bypass).

  • A média só é recalculada a cada período CYC; entre períodos, OUT permanece estável.

  • UPD fica ativo por um único scan a cada atualização de OUT.

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