AVRGM - скользящее среднее

Назначение.
Функциональный блок AVRGM включает в себя возможности блока DELAY по задержке вывода аналогового сигнала и дополняет его возможностью вывода среднего значения из нескольких (до 128) задержанных значений.
Состав структурной переменной.
Переменная со структурным типом AVRGM будет добавлена в локальный словарь автоматически при добавлении блока в редактор.

Описание алгоритма.
До запуска блока (RUN=FALSE) или при N<=0, входной сигнал X без задержки и суммирования передается на выходы Y=X и YD=X.
После запуска блока (RUN=TRUE), значения входного сигнала X в каждом цикле работы блока сохраняются во внутреннем массиве и, аналогично блоку DELAY, в том же порядке передаются на выход YD после задержки N*Cycle, где N - количество циклов запаздывания, Cycle - длительность одного цикла блока в миллисекундах.
Отличие алгоритма AVRGM заключается в наличии дополнительного сумматора, который усредняет значение сигнала на выходе Y по следующей формуле:
,где N – количество циклов запаздывания от 1 до 128; Xi - значение сигнала X в i-ом цикле запаздывания.
Значение входного параметра N сохраняется в момент запуска блока, все последующие его изменения игнорируются. Значение N>128 воспринимается как N=128.
Если значение входного параметра Cycle меньше времени цикла контроллера или Cycle<=0, то период работы блока равен циклу контроллера.
|
Пример синтаксиса на языке ST.
//вызов функционального блока AVRGM
Block.AVRGM(RUN, X, N, Cycle);
//на выход YD начнут поступать сигналы X с задержкой N*Cycle
YD := Block.YD;
//на выход Y передается усредненный сигнал из N задержанных сигналов X
Y := Block.Y;
|
