В принципе, для варианта без датчика можно заменить блок VALVE_REG на VALVE_REG_NO_POS, выставить параметры КЗР и ограничиться этим.
Так я вначале и сделал на объектах, где мы не использовали датчик, но позже мой коллега (он возится со слежением за работой ЦТП и настройкой коэффициентов по удалёнке, а я обычно в поле) столкнулся с какой-то проблемой и добавил в блок сброс интегральной составляющей при достижении и поддержании выходом ПИДа максимума или минимума в течение некоторого времени.
Сейчас, поработав с обоими вариантами (с датчиком и без), мы видим, что оба блока хорошо справляются с задачей регулирования температуры (а также давления и перепада, в некоторых местах). Причем где-то лучше один вариант, где-то другой. С датчиком обычно точность выше, но система становится менее надежна. Потому постепенно переходим на бездатчиковое управление.
Аргументы против использования датчика:
занимает вход МВА (бывает, что его-то и не хватает)
необходима юстировка этого входа
нужны провода, клеммники
бывают наводки (иногда жуткие просто) из-за обилия частотников на ЦТП
бывают проблемы с RS-485 и МВА отваливается (задействованные в управлении датчики вешаем на ПЛК)
ABZ-Энкодер
Позволяет обрабатывать сигналы энкодера, имеющего выходы А и В со смещением фазы,
а также дополнительный выход сигнала нулевой точки.
Возможности:
- вывод текущего положения относительно нулевой точки
- определение направления вращения/движения энкодера
- задаваемая длина шкалы
Требования:
- подключенная библиотека STANDARD.LIB
- наличие 3-х быстрых входов на ПЛК
В ПЛК110 быстрые входы (FDI0-FDI3) в конфигураторе ПЛК нужно перевести в режим "Fast discret inputs - direct control".
В ПЛК110 версии М02 с последними прошивками есть встроенный энкодер (настраивается в Конфигурации ПЛК). Однако, работает он неоднозначно - значение в 4 раза больше шкалы самого энкодера. Потому и появилась необходимость написать свой обработчик.
Проверено на ПЛК110.30 и ПЛК110.60 с энкодером E6B2-CWZ5B.
В проекте не установлен таргет. Подключите нужный Вам в Настройке целевой платформы.
UPD: Важное замечание! Для переменной POSITION используется тип WORD, поэтому ширина шкалы ограничена 65К. Если нужна бОльшая ширина шкалы, то используйте другой целочисленный тип (DWORD, DINT, UDINT и т.п.)
Комментарии приветствуются!
С уважением, CDS (Дмитрий).
Последний раз редактировалось CDS; 06.04.2018 в 13:00.