Программирование промышленных контроллеров (ПЛК). Стандарт МЭК (IEC) 61131
Обслуживание промышленных контроллеров (ПЛК) на производстве выполняется технологическим персоналом, поэтому общепринятые языки программирования микропроцессоров и персональных компьютеров не подходят для программирования промышленных контроллеров, так как требуют от персонала особых навыков и знаний. Привлечение к программированию сторонних инжиниринговых компаний зачастую приводит к привязанности конечного пользователя промышленного контроллера ПЛК к конкретному исполнителю. Поэтому для программирования ПЛК необходимы более понятные, простые и наглядные языки программирования, открытые для общего использования. В 1979 г. в рамках Международной Электротехнической Комиссии (МЭК или английская аббревиатура IEC) была создана специальная группа технических экспертов по проблемам ПЛК, включая аппаратные средства, монтаж, тестирование, документацию и связь. Результатом работы данной комиссии был выпуск в 1982 г. стандарта IEC 1131. Современная редакция стандарта (который с 1997 г. называется IEC 61131) включает 8 разделов:
- Общая информация.
- Требования к оборудованию и тестам.
- Языки программирования.
- Руководства пользователя.
- Спецификация сообщений.
- Полевые сети.
- Программирование с нечеткой логикой.
- Руководящие принципы применения и реализации языков ПЛК.
Раздел 3 данного стандарта МЭК (IEC 61131-3) регламентирует использование пяти стандартных языков программирования ПЛК (промышленных контроллеров): язык функциональных блоков (FBD), язык релейной логики (LD), язык последовательных функциональных схем (SFC), язык инструкций (IL) и язык структурированного текста (ST). Выбор этих языков обусловлен простотой и наглядностью представления с их помощью алгоритмов управления. Внедрение стандарта IEC 61131 дало основу для создания единой школы подготовки специалистов в области программирования ПЛК. Также после появления стандарта появилась возможность создавать аппаратно-независимые библиотеки.
Краткая характеристика стандартных языков программирования промышленных контроллеров (ПЛК)
Язык релейной логики (LD)
Язык релейной логики используется для описания логических выражений различного уровня сложности с помощью электромеханических элементов (реле и контактов). На языке релейной логики проще всего и наглядней реализуются логические операции, такие как И, ИЛИ, НЕ. Язык программирования LD предусматривает также выполнение условных переходов между блоками программы.
Язык последовательных функциональных схем (SFC)
Реализует последовательность процедурных шагов и условных переходов. На каждом шаге выполняется конкретное действие, запрограммированное пользователем. Переход между шагами осуществляется после выполнения логических условий, назначенных данным условным переходам.
Язык инструкций (IL)
Текстовый язык низкого уровня. Принцип программирования, команды и структура записи команд такая же, как и у языков ассемблерного типа. Язык инструкций (IL) стандартизован и не зависит от используемой аппаратной платформы. Каждая инструкция может содержать четыре поля, разделяемых пробелами или знаками табуляции. Структура записи команд в языке инструкций выглядит следующим образом:
<Метка> : <Оператор> + <Модификатор> <Операнд> <Комментарий>
Метка, модификатор и комментарий в строке инструкции необязательны и указываются по необходимости. Оператор должен присутствовать в строке всегда, а операнд иногда может отсутствовать. Метка - это символическое имя (адрес) некоторой области памяти, в которой хранится номер отмеченной меткой строки в списке команд. После метки обязательно ставится знак двоеточия. Совместно с метками используются команды условного (исполняемые при выполнении определенных условий) и безусловного (выполняемые всегда) перехода (соответственно, операторы JMPC или JMP) . Переходы необходимо использовать достаточно аккуратно, чтобы не получить бесконечный цикл. Оператор - это непосредственно команда, которая выполняет определенное действие над операндом. Совместно с оператором может присутствовать модификатор, который предназначен для преобразования оператора к необходимому виду. Так модификатор N выполняет инверсию операнда до выполнения самой команды, а модификатор С - добавляет проверку содержимого аккумулятора и выполняет оператор только в том случае, если значение в аккумуляторе соответствует true (истина).
Язык структурированного текста (ST)
Язык структурированного текста - текстовый язык программирования высокого уровня для создания гибких процедур обработки данных. По структуре этот язык похож на Паскаль. Основу языка структурированного текста (ST) составляют выражения, каждое из которых должно заканчиваться точкой с запятой. Для присвоения значений переменным используется оператор «:=». Для описания математических выражений используются общепринятые символы: +, *, /, (,), <, <=, >=, > и др. Порядок вычисления выражений такой же, как и в алгебре - действия выполняются слева направо. Сначала выполняются действия, заключенные в скобки, затем - операции умножения или деления, и только после этого - сложение или вычитание. Для увеличения функциональных возможностей языка структурированного текста в нём предусмотрены операторы выбора (IF … THEN … ELSE … ENDIF) , операторы множественного выбора (CASE … OF … ELSE … ENDCASE) , операторы цикла (WHILE … DO … ENDWHILE, REPEAT … UNTIL … ENDREPEAT или FOR … TO … BY … DO … ENDFOR) .
В завершении статьи стоит обязательно упомянуть об особенности программирования промышленных контроллеров (ПЛК). При программировании ПЛК всегда нужно помнить, что выполнение программ в промышленном контроллере осуществляется циклически, причем время выполнения одного цикла может быть фиксированным или асинхронным (новый цикл начинается сразу после окончания предыдущего цикла). Алгоритм выполнения программы следующий. На первом шаге ПЛК получает необходимую для обработки информацию о состоянии объекта управления - производится считывание входных переменных (входы модулей аналогового и дискретного ввода). Далее осуществляется непосредственная обработка полученной информации - выполняется основная программа ПЛК. В результате обработки информации формируются команды управления, которые на следующем шаге передаются на выходы промышленного контроллера - процедура обновления выходных переменных.