Программирование контроллеров
Программирование контроллеров в большинстве современных ПТК ведется на специализированных технологических языках программирования, которые понятны специалистам-технологам и не требуют специальной программистской подготовки. Существует стандарт на такие языки, поэтому реализация алгоритмов для различных контроллеров имеет много общего.
Один из наиболее широко используемых языков является язык диаграмм функциональных блоков. Это графический язык. Программа на нем представляет собой схему, собранную из специальных блоков. Среди блоков как стандартные функции: арифметические (сложение, вычитание, умножение, деление); логические (И, ИЛИ НЕ); сравнения (больше, меньше, равно); дискретные (триггеры, импульсы, выделение фронтов переменных); динамические (интегрирование, дифференцирование) и другие, так и специализированные: формирование сообщений; обмен по сети и другие.
На входы блоков подаются входные переменные, на выходах формируются выходные переменные.
Программа выполняется на контроллере циклически с заданным интервалом (например, 0,5 с).
Рассмотрим в общих чертах структуру алгоритма управления электродвигателем.
Пусть для управления электродвигателями используется следующий алгоритмический блок ELDVIG, работающий во взаимодействии с рассмотренной ранее панелью управления (рис. 4.13).
Рис. 4.13. Алгоритмический блок управления электродвигателем
Для программирования используются следующие переменные: VK - дискретная входная переменная «Включен»; ОТК - дискретная входная переменная «Отключен»; AVOTK - дискретная входная переменная «Аварийно отключен»;
ТОК - аналоговая входная переменная «Ток электродвигателя»;
IVK - внутренняя переменная «Включить»;
IOTK - внутренняя переменная «Отключить»;
Z_VK - внутренняя переменная «Запрет включения»;
ZOTK - внутренняя переменная «Запрет отключения»;
K_VK - дискретная выходная переменная «Включить»;
КОТК - дискретная выходная переменная «Отключить»;
ERRED - внутренняя переменная «Ошибка работы»;
KN VK - внутренняя переменная, устанавливаемая кнопкой на панели управления электродвигателем «Включить»;
KNOTK - внутренняя переменная, устанавливаемая кнопкой на панели управления электродвигателем «Отключить».
Предполагается, что включение/отключение электродвигателя (ЭД) может осуществляться оператором нажатием кнопок на панели управления (при этом KNVK./ KN ОТК устанавливается в 1) или автоматически из программы, например при срабатывании АВР (при этом 1 VK/ 1_ОТК устанавливается в 1). Естественно, что при этом не должно быть запрещающих сигналов (могут быть обусловлены состоянием другого оборудования) на соответствующих входах ZVK/ Z_OTK=1.
Для реализации команды выходной переменной K_VK/ K_OTK на 2 с присваивается значение 1, что обеспечит подачу напряжения на реле фиксации команд в течение 2 с.
Ниже приводится описание алгоритмов на языке диаграмм функциональных блоков, выполняемых внутри алгоритмического блока ЭД
с соответствующими пояснениями. В программе наряду со стандартными элементами (И, ИЛИ, >) использованы следующие блоки:
TRIG1 - выдает на выходе единицу в течение заданного количества циклов выполнения программы, если входная переменная перешла из 0 в 1 (выявление переднего фронта);
TRIG2 - выдает на выходе единицу в течение заданного количества циклов выполнения программы, если входная переменная перешла из 1 в О (выявление заднего фронта);
PULS - выдает на выходе импульсы заданной продолжительности, если входная переменная 1;
SIGND - формирует сигнализацию и запись в журнал событий, если входная переменная 1.
Жирная точка на входе блока означает инверсию входной дискретной переменной.
Рис. 4.14. Алгоритм формирования команды на включение
После нажатия оператором кнопки включения ЭД (KN_VK=1) или программного запроса на включение (I_VK=1) на выходе блока ИЛИ появится 1.
Далее контроллер производит оценку состояния ЭД, при этом происходит считывание значений следующих логических переменных:
VK - состояние ЭД: «1» - включен; «О» - отключен;
Z_VK - запрет включения ЭД: «1» - установлен; «О» - снят;
AV_OTK - аварийное отключение: «1» - было произведено; «О» - не было.
Значения этих переменных поступают на инвертирующие входы логической функции «И». На неинвертирующий вход этого же элемента подается выходной сигнал логической функции «ИЛИ». Результатом сравнения входных величин в блоке «И» будет логическая единица только в том случае, если запрет на запуск ЭД не установлен, двигатель не работает, не был отключен аварийно.
В противном случае на выходе блока «И» появится логический ноль, и запуск ЭД произведен не будет.
Логическая единица с выхода функции «И» через блок формирования импульсов сформирует импульсную команду включения ЭД (K_VK=1), которая через дискретный выход УСО замкнет необходимый контакт на схеме.
Кроме того, через блок мониторинга в журнал событий будет занесена отметка о факте и времени включения ЭД.
Рис. 4.15. Алгоритм формирования команды на отключение
После нажатия оператором кнопки отключения ЭД (KN_OTK=1) или программного запроса на отключение (1_ОТК=1) на выходе блока ИЛИ появится 1.
Далее контроллер производит оценку состояния ЭД, при этом происходит считывание значений следующих логических переменных:
ОТК - состояние ЭД: «О» - включен; «1» - отключен;
Z ОТК - запрет отключения ЭД: «1» - установлен; «О» - снят.
Значения этих переменных поступают на инвертирующие входы логической функции «И». На неинвертирующий вход этого же элемента подается выходной сигнал логической функции «ИЛИ». Результатом сравнения входных величин в блоке «И» будет логическая единица только в том случае, если двигатель работает, и запрет на отключение ЭД не установлен.
В противном случае на выходе блока «И» появится логический ноль, и отключение ЭД произведено не будет.
Логическая единица с выхода функции «И» через блок формирования импульсов сформирует импульсную команду отключения ЭД (К_ОТК=1), которая через дискретный выход УСО замкнет необходимый контакт на схеме.
Кроме того, через блок мониторинга в журнал событий будет. занесена отметка о факте и времени отключения ЭД.