Цитата:
Сообщение от
melandr
Это не диплом. проблема состоит не в чем делать, а как сделать правильно. Я работаю в SCADA DeltaV. Так вот в ее библиотеке есть такой функциональный блок DC(управление устройством). Он реализует логику управления или задвижкой, или двигателем с 2-мя или 3-мя состояниями. При этом контролируется полностью работа управляемого механизма. Например, при поступлении команды на запуск, если через заданное время не пришел сигнал подтверждения, происходит отключение механизма с выдачей аварии. Также на выходе статуса выдается состояние устройства: стоит, работает, авария, запускается и т.д.. У меня стоит задача реализовать такое же управление только на чистом FBD, используя элементы И, ИЛИ, НЕ, триггеры, таймеры. Просто пытаюсь делать, но не хватает опыта.
Цитата:
ACTUATOR_3P представляет собой интерфейс трехпозиционного привода для управления исполнительными устройствами (например, клапанами) с управляющими сигналами на открытие и закрытие.
Сигнал на входе IN преобразуется в управляющие импульсы на выходах OUT1 и OUT2, которые соответственно управляют двигателем.
Входной сигнал IN обрабатывается, а состояния обоих выходов (OUT1 и OUT2) изменяются таким образом, что при входном значении 0 клапан закрыт, при значении 1 клапан открыт, при 0.5 клапан полуоткрыт, и т.д.
Если вход FORCE установлен в TRUE, то положение клапана соответствует не входному сигналу IN, а двоичному управляющему сигналу ON. Значение ON=FALSE означает, что клапан закрыт, а ON=TRUE означает, что клапан на 100% открыт.
В режиме FORCE промежуточные положения невозможны. Клапан может быть только на 100% открытым или закрытым.
Блок может также обрабатывать состояние концевых выключателей.
Концевые выключатели должны быть подключены таким образом, чтобы при достижении как верхнего, так или нижнего положения, вход END_POS принимал значение TRUE и тем самым указывал, что клапан достиг одного из крайних положений.
Чтобы включить функцию обработки концевых выключателей, настроечная переменная SWITCH_AVAILABLE должна иметь значение TRUE, в противном случае состояние концевых выключателей игнорируется.
Вход диагностики (DIAG) позволяет в любое время запустить диагностику клапана и двигателя.
После этого блок проводит цикл диагностики и сообщает об ошибке с помощью выхода ERROR. Цикл диагностики возвращает клапан в положение 0%, затем отрабатывает открытие 0% - 100% и следом закрытие до 0%.
При этом также проверяется функционирование концевых выключателей (в том случае, если они были активированы настроечной переменной SWITCH_AVAILABLE).
По завершении диагностического цикла клапан возвращается в положение, определяемое входом IN.
Измеренные при прохождении диагностики времена хода используются при работе, чтобы максимально точно позиционировать клапан в заданную позицию.
С помощью настроечной переменной AUTO_DIAG_TIME указывается, по истечении какого срока диагностика запускается автоматически, без её активации входом DIAG.
При запуске, диагностический цикл автоматически проводится всегда. Если это значение равно 0, автоматический цикл диагностики не проводится.
Выход BUSY показывает, что клапан меняет свое положение в данный момент или же проводится диагностика, и на выходе POS присутствует сигнал 0 – 1, соответствующий текущей позиции клапана.
Для предотвращения биений клапана и, в случае мощных двигателей, для учета времени выбега привода можно установить минимальное время работы (MIN_ONTIME) и минимальное время простоя (MIN_OFFTIME).
Клапан обычно то открывается, то закрывается, принимая различные положения. Чем больше перемещается клапан, тем сильнее он отклоняется от идеальной абсолютной позиции, поскольку с каждым шагом возникает небольшая ошибка в позиционировании, которая накапливается в течение множества перемещений.
Чтобы бороться с этой ошибкой, с помощью настроечной переменной CAL_RUNTIME можно по прошествии определенного времени работы (совокупного времени всех перемещений) клапана автоматически выполнять калибровку.
При этой калибровке двигатель переводит клапан в закрытое положение, а затем возвращает клапан в состояние, заданное значением входной переменной IN.
Значение 0 для CAL_RUNTIME означает, что автоматическая калибровка не осуществляется.
Настроечная переменная MAX_RUNTIME устанавливает максимальное время, которое требуется двигателю для полного хода от 0% до 100% или наоборот.
Вызывает: T_PLC_MS, _RMP_NEXT
Использует библиотеку Oscat Basic
Что бы посмотреть программный код библиотечного ФБ, нужно
Цитата:
ACTUATOR_PUMP представляет собой интерфейс насоса со счетчиком часов наработки. Насос может включаться входом IN либо MANUAL. Переменные настроек MIN_ONTIME и MIN_OFFTIME задают минимальную периодичность включения и минимальную продолжительность работы. Если вход IN установлен в TRUE меньшее, чем MIN_ONTIME время, то насос продолжает работать, пока не будет достигнута минимальная продолжительность его работы. Если вход IN установлен в TRUE дольше, чем MIN_ONTIME, то насос работает, пока IN снова не станет FALSE.
Если насос нужно запустить снова через короткое время, блок ожидает, пока не истечет время MIN_OFFTIME, и только затем насос снова включается. С помощью настроечной переменной RUN_EVERY задается время простоя насоса, после которого он автоматически включается, чтобы предотвратить блокировку насоса. В этом случае после автоматического включения насос работает в течение времени MIN_ONTIME. Установкой RUN_EVERY = T#0s можно отключить автоматический запуск насоса.
Встроенный счетчик часов наработки подсчитывает время работы насоса в часах, а также количество циклов включения. Оба значения могут быть сброшены в ноль подачей TRUE на вход RST. Значение счетчика является реманентным и не теряется при потере питания или сбросе контроллера. И RUNTIME, и CYCLES являются значениями типа REAL, и поэтому не переполняются, как обычные TIME, после 50 дней.