Среда разработки Unimod PRO 2 (версия 2.3.40)
 Руководство по программированию
×

EXTRM - экстремум


Назначение.
Функциональный блок EXTRM применяется для поиска и фиксации локальных экстремумов (минимального и максимального значения) меняющегося во времени сигнала.
 
Состав структурной переменной.
Переменная со структурным типом EXTRM будет добавлена в локальный словарь автоматически при добавлении блока в редактор.
Описание алгоритма.
  • До запуска блока (RUN=FALSE), поиск экстремумов не осуществляется (Dsmx =Dsmn =FALSE), входной сигнал X без изменения передается на выходы (Ymin=Ymax=X).
  • После запуска блока (RUN=TRUE), на выходах Ymax и Ymin сохраняется значение сигнала X на момент запуска, и начинается поиск локальных экстремумов. В процессе поиска входной сигнал X проходит через фильтр нижних частот, представленный передаточной функцией:
    ,
    где ТF - постоянная времени фильтра.
  • Если TF<=0, то входной сигнал X не фильтруется (Ymin=Ymax=X).
  • Найденное минимальное или максимальное значение входного сигнала X передается на выход Ymin или Ymax соответственно, и сохраняется до обнаружения нового локального экстремума. После обнаружения локального минимума или максимума соответствующие дискретные выходы Dmin=TRUE или Dmax=TRUE в течение одного цикла контроллера.
  • Направление поиска фиксируется на дискретных выходах Dsmn и Dsmx: в процессе поиска минимума Dsmn= TRUE, в процессе поиска максимума Dsmx = TRUE.
Пример работы блока.
В качестве примера продемонстрирована диаграмма сигналов с поэтапным описанием изменений:
  • Блок не запущен, Ymin=Ymax=X.
  • После запуска Ymin=Ymax=Xв момент запуска, осуществляется поиск локального максимума (Dsmx=TRUЕ); 
  • Локальный максимум передан на выход Ymax, после чего Dmax=TRUE на один цикл контроллера. Осуществляется поиск локального минимума (Dsmn=TRUE);
  • Локальный минимум передан на выход Ymin, после чего Dmin=TRUE на один цикл контроллера. Осуществляется поиск локального максимума (Dsmx=TRUE);
  • Локальный максимум передан на выход Ymax, после чего Dmax=TRUE на один цикл контроллера. Осуществляется поиск минимума (Dsmn=TRUE).
Дополнительные параметры фильтрации сигнала.
В процессе поиска локальных экстремумов можно отфильтровывать помехи, для этого используются значения зоны нечувствительности и допустимой скорости изменения сигнала в районе экстремума. 
Зона нечувствительности задается через входной параметр DB:
  • DB<=0 - найденное значение локального экстремума фиксируется и передается на соответствующий выход Ymin или Ymax, как только направление изменения сигнала изменилось на противоположное (противоположное изменение знака производной).
  • DB>0 - найденный локальный экстремум будет зафиксирован и выведен на соответствующий выход, если после прохождения экстремума значение сигнала в противоположном направлении изменилось на величину, больше значения DB. Если сигнал в противоположном экстремуму направлении изменился на величину меньше DB и затем продолжил изменяться в исходном направлении, экстремум не фиксируется.
 
Допустимая скорость изменения сигнала, при которой фиксируется экстремум, задается через входной параметр V:
  • V<=0 - ограничения на скорость не накладываются, найденное значение локального экстремума фиксируется и передается на соответствующий выход Ymin или Ymax.
  • V>0 - экстремум фиксируется и выводится, если после прохождения экстремума (или зоны нечувствительности, при ее наличии) скорость изменения сигнала Vx<=V.
 
Влияние зоны нечувствительности и максимальной скорости продемонстрировано на следующем изображении.
 
Пример синтаксиса на языке ST.
//вызов функционального блока EXTRM
Block.EXTRM(RUN, X, TF, DB, V);
//чтение локального максимума
Ymax := Block.Ymax;
//выход Dsmx=true во время поиска максимума
Dsmx := Block.Dsmx;
//выход Dmax=true в течение цикла контроллера после фиксации максимума
Dmax := Block.Dmax;
//чтение локального минимума
Ymin := Block.Ymin;
//выход Dsmn=true во время поиска минимума
Dsmn := Block.Dsmn;
//выход Dmin=true в течение цикла контроллера после фиксации минимума
Dmin := Block.Dmin;