AVRGD - дискретное среднее

Назначение.
Функциональный блок AVRGD применяется для вычисления среднего значения аналогового сигнала из заданного количества на фиксированном отрезке времени.
Состав структурной переменной.
Переменная со структурным типом AVRGD будет добавлена в локальный словарь автоматически при добавлении блока AVRGD в редактор.

Описание алгоритма.
До запуска блока (RUN=FALSE) или при N<=0, входной сигнал X без изменения передается на выход Y, другие входные параметры игнорируются, на выходах значения по умолчанию.
После запуска блока (RUN=TRUE), значения входного сигнала X будут сохраняться во внутреннем массиве в конце каждого цикла работы блока. Текущее число сохраненных значений передается на выход NT.
Когда NT=N, выходному параметру Y присваивается усредненное значение по формуле Y = (X1+X2+...+XN) / N, которое будет сохраняться до присвоения следующего усредненного значения или перевода блока в неактивный режим.
Для вычисления одного усредненного значения требуется время N×Cycle, где Cycle – длительность одного цикла блока в миллисекундах, N - общее количество циклов (усредняемых значений).
Выход D=TRUE в течение одного цикла контроллера после сохранения очередного значения X (в конце каждого цикла работы блока). В остальное время D=FALSE.
После выполнения расчета среднего значения Y, выход DE=TRUE в течение периода времени Cycle, в остальное время DE=FALSE.
Если значение входного параметра Cycle меньше времени цикла контроллера или Cycle<=0, то период работы блока равен циклу контроллера.
|
Пример синтаксиса на языке ST.
//вызов функционального блока AVRGD
Block.AVRGD(true, X, 10, 100);
//чтение усредненного сигнала
Y := Block.Y;
//чтение текущего количества сохраненных значений сигнала X
NT := Block.NT;
//выход D=true во время цикла блока
D1 := Block.D;
//выход DE=true в течение времени Cycle после расчета среднего значения
DE := Block.DE;
|
