UltraLogik – система программирования контроллеров АСУ ТП: Учебное пособие, страница 10

Одновременно запускается таймерная переменная Твкл, которая изменяет интервал времени между включением насоса и приходом сигнала от датчика обратной связи. За 2s от датчика должен прийти ответ (ДАТЧИК=TRUE), что насос включился и работает нормально. Если за 2s  ответ от датчика не пришёл, то устанавливаются признак аварии (АВАРИЯ=TRUE) и сигнал на управление насосом (НАСОС=FALSE). Сигнал АВАРИЯ является триггерным и сбрасывается сигналом СБРОС.

Аналогично схема работает и при отключении насоса. После подачи команды на отключение насоса (ВКЛ=FALSE) выключается сигнал управления насосом (НАСОС=FALSE) и одновременно запускается таймерная переменная Тоткл, которая измеряет интервал времени между выключением насоса и приходом сигнала  от датчика обратной связи.

За 3s от датчика должен прийти ответ (ДАТЧИК=FALSE), что насос выключился. Если за 3s ответ от датчика не пришёл, то устанавливается признак аварии (АВАРИЯ=TRUE).

В качестве примеров использования таймерных переменных можно ознакомиться с описанием FBD библиотеки “FREQTIME-Частота и Время”.

3.1.7. Установка нормализаторов и преобразователей сигналов

Задача преобразования переменных по определённым законам является типовой в прикладных программах. Преобразование требуется для приведения соответствия измеренного кода с величиной физического параметра, приведения размерности, калибровки измерительных каналов и т.п. Ниже рассмотрены некоторые характерные примеры таких преобразований. На рис. 23 приведён пример программы преобразования для управления приводом с цифро-аналоговым преобразователем (ЦАП). Сигнал управления Inp выражает положение привода в процентах, а выходная переменная Out – в кодах ЦАП.

Значение переменной МАХ задаёт максимальный код ЦАП. На выходе блока DIV будет значение количества кодов ЦАП, соответствующее 1%. Блок LIM ограничивает выходной сигнал диапазоном от 0 до 100 %. Значение переменной Out, выраженной в кодах ЦАП, будет эквивалентно значению Inp , выраженному в процентах.


                       а                                                б

                                                   Рис. 23

Пример на рис. 23, а приведён для переменных типа INTEGER. Однако в некоторых случаях целочисленные выражения могут привести к потере точности из-за погрешности округления. В этом случае все вычисления производятся с переменными типа FLOAT, а затем результат приводится к типу INTEGER (рис. 23, б).

На рис. 24 приведён пример программы преобразования значения сигнала, которое приходит в кодах АЦП, в физическую величину, измеряемую датчиком. В примере приведены данные модуля 5710 Analog I/O Card и датчика температуры AD22100. Датчик выдаёт напряжение пропорционально температуре. При изменении температуры на 1 °С напряжение изменяется на +22.5 мВ. Температуре 0 °С соответствует напряжение 1.375 В. Диапазон датчика от –50 до +150 °С. Модуль 5710 имеет три коэффициента усиления (х1,х10,х100), диапазон выходного напряжения 10 В и 12- разрядный АЦП.


Рис. 24

Формула преобразования: Degr=((Code-2048)(MaxV/Gain/MaxC)-
-1.375)dC, где Degr– значение измеренной температуры в °С, Code – код сигнала, измеренного АЦП, 2048  – поправка для смещения диапазона АЦП в пределы от –2048…+2048, MaxV          – диапазон входного сигнала АЦП(10В), Gain – коэффициент усиления модуля 5710(1,10 или 100), MaxC – максимальный код АЦП (4095), 1.375– напряжение на датчике при 0 °С, dC – приращение напряжения на датчике на 1 °С(0.0225 В/° С).

После подсчета температуры по приведённой формуле значение переменной Degr ограничивается диапазоном от –50 до +150, т.е. областью достоверных показаний датчика температуры AD22100.

Фильтрация сигналов

Фильтрация сигналов является одной из наиболее важных задач, решаемых в большинстве измерительных систем. Реальные сигналы от объектов содержат флюктуации в виде шума, сетевых наводок, случайных выбросов.

Для фильтрации высокочастотной помехи применяется ФНЧ (рис. 25, а). Значение  переменной К должно быть в пределах ]0,1[ и определяет частоту среза фильтра. Чем меньше значение переменной К, тем ниже частота среза. Для получения более крупной характеристики, фильтры можно соединить последовательно (рис. 25, б). Подробное описание блока LPF находится в FBD библиотеке Emulator.


а                                                  б

Рис. 25

Для устранения помехи, имеющей нормальное распределение, в качестве фильтра можно применить блок AVR, который вычисляет среднее арифметическое выборки. Чем больше размер выборки, тем меньше влияние помехи. Однако следует иметь ввиду, что с увеличением размера выборки увеличивается время установления выходного значения фильтра Out. Поэтому для быстропеременных процессов размер выборки не следует делать слишком большим (рис. 26, а).

 


Рис. 26

Для борьбы со случайной помехой можно использовать различные варианты алгоритмов. Самый простой способ состоит в исполнении блока LIM, чтобы исключить из расчётов заведомо ложные показания, когда измеренное значение сигнала выходит за границы диапазона измерения датчика (рис. 26, б).

Если известен характер поведения измеряемого сигнала, например сигнал не может быстро измениться за короткий промежуток времени, то можно применять различные ограничители скорости нарастания сигналов. На рис. 26, в  приведён пример линейного ограничителя. Переменная Out стремится к значению переменной Inp, но за 1s не может изменить своё значение больше чем на 15. Блок LinLIM находится в FBD  библиотеке Pegulation (Регуляторы).

На рис. 27, а приведён пример логарифмического ограничителя скорости нарастания сигнала. Переменная Out стремится к значению переменной Inp, но за 1s не может изменить своё значение больше чем на |Out-Inp| · 0.1. Величина приращения выходного сигнала Out определяется динамически, то есть шаг приращения зависит от величины рассогласования входного и выходного значения. Блок LogLIM находится в FBD библиотеке Pegulation.