Программирование логических контроллеров (PLC - нижний уровень)

Введение

Современные средства разработки (интегрированные среды IDE) в настоящее время чрезвычайно функциональны и предлагают разработчикам множество возможностей:

  1. Разнообразные программные библиотеки, функциональные блоки, готовые процедуры и шаблоны;
    Использование этих компонентов сильно ускоряет ПО.

  2. Инструменты отладки, тестирования и симуляции прикладной программы;
    Симуляция позволяет выполнять программы ПЛК на персональном компьютере без загрузки ее в реальный контроллер.

  3. Инструменты для автоматизированного документирования разработанного ПО в соответствии с принятыми стандартами.

Кроме того, современные средства разработки прикладного ПО для PLC (промышленные контроллеры) как правило поддерживают 6-7 языков программирования.
Использование этих языков программирования позволяет разработчикам переносить программы между различными аппаратными платформами. К сожалению полная совместимость программного обеспечения для различных платформ достигнута не была, не смотря на применение стандарта IEC 61131

Реализация кроссплатформенного обеспечения произведена только лишь в среде программирования "CODE SYS".
Эта среда содержит универсальный каркас программирования ПО, а реализация процессов компиляции, отладки и симуляции осуществляется на основе TARGET-файлов (TARGET FILE) которые поставляются разработчиками и подключаются к этой среде.

Международный стандарт программирования PLC "IEC 61131"

Этот стандарт устанавливает шесть языков программирования PLC: три графический и три текстовых.
Разработкой стандарта и внедрением языков программирования занимается организация "PLC OPEN".

Системы программирования основанные на стандарте IEC 61131 характеризуются следующими показателями:

  1. Надежность создаваемого ПО;
    Надежность обеспечивается тем, что программы для ПЛК создаются с помощью специально-предназначенной для этого среды разработки, которая включает в себя редакторы, компиляторы, тестировщики, отладчики и эмуляторы реальных PLC, а также множество готовых фрагментов программного кода.
  2. Возможность простой модификации программы и наращивание ее функциональности;
  3. Переносимость проекта с одного ПЛК на другой;
  4. Возможность повторного использования отработанных фрагментов программ;
  5. Простота языка программирования и ограничение количества ее элементов.

Более 80% программного обеспечения PLC обслуживаются программными продуктами реализующими этот стандарт.

Языки программирования PLC

Стандарт IEC 611131 устанавливает 6 языков программирования:

Выбор одного из 6-ти языков определяется не только предпочтениями пользователя, но и смыслом решаемой задачи.
Если исходная задача формулируется в терминах последовательной обработки и передачи сигналов, то для ее решения проще использовать язык FBD.
Если задача описывается как последовательность срабатываний некоторых ключей и реле, то ее лучше решать при помощи языка LD.
Если задача описывается как сложный разветвленный алгоритм, удобнее всего использовать язык ST.
Язык C/C++ используется для написания драйверов обмена в сети, передачи данных между уровнями автоматизированной системы и для программирования визуализации.

Язык LD (LAD). Язык релейно-контактных схем

Раньше автоматика реализовывалась на реле.
!100%

Язык IL. Instruction List

Язык напоминает ассемблер и является текстовым языком. Используется главным образом для быстродействующих программ которые критичны к времени выполнения

Пример:

МЕТКА ОПЕРАТОРЫ ОПЕРАНДЫ КОММЕНТАРИИ
LD Voltage (*Загрузить переменную Voltage в аккумулятор*)
GT 220 (*Если > 220*)
JMPON M1 (*Перейти к M1, если > 220*)
LD Current (*Загрузить пееменную Current в аккумулятор*)
SUB 10 (*Вычесть 10 из аккумулятора*)
ST Current (*Current <- Аккумулятор*)
JMP M2 (*Переход на M2 без условия*)
M1: LD 0 (*Аккумулятор <- 0*)
M2: ST Out (*Аккумулятор -> Out*)

Язык ST. Structured Text (Automation BASIC)

Текстовый язык программирования. Structured Text очень похож на язык PASCAL, а Automation BASIC на Visual BASIC.

Пример:

IF voltage > 220 THEN
	current:=current-10; (*Если V>220, то уменьшить current на 10*)
ELSE
	current:=50; (*Установить ток 50*)
	speed:=ON; (*Включить мотор*)
END_IF;

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

Язык FBD. Function Block Diagram

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

Пример:
!100%
Программа состоит из 3 компонентов: таймер TON, триггер ALARM, и блок ИЛИ.
На вход подаются переменные High_Voltage(WORD), DELAY_10S(WORD). Таймер отсчитывает определенное время (10 с.) при наличии сигнала High_Voltage. Также тут имеется элемент ИЛИ который сбрасывает триггер ALARM1 или кнопкой SW1, или сигналом ENABLE. А триггер устанавливается на 1 если получено High_Voltage. Получается через 10 секунд появится сообщение о предупреждении и включится мотор вентилятора.

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

Язык FBD является удобным для создания и пополнения библиотеки типовых функциональных блоков, которые дальше могут использоваться в задач программирования

Язык SFC. Sequential Function Chart (Функциональные схемы)

Язык применяется при реализации алгоритмов управления, если имеется алгоритм управления каким-то объектном.

Пример:
!100%

Программа состоит из шагов и условий переходов. Шаги показываются на схеме прямоугольниками. Условия переходов жирной перечеркивающей линией.
Программа всегда выполняется сверху-вниз. Начальный шаг на схеме показывается в виде двойного прямоугольника. Условия переходов записываются рядом с их обозначениями. Каждый шаг программы может представлять собой реализацию сложного алгоритма управления, либо обмена данными написанного на одном из языков программирования PLC.

Язык SFC как правило используется для моделирования конечных автоматов.

Неудобство языка связано с тем, что шаги графически располагаются сверху-вниз и переход идущий в обратном направлении (цикл) изображается в неявной форме в виде стрелки с номером состояния в которую осуществляется переход.

Принципы языков программирования PLC

Принципы языков программирования PLC:

  1. Программа разбивается на множество функциональных элементов каждый из которых состоит из нескольких функций, функциональных блоков и программ;
  2. Стандарт требует строгой типизации данных. Указание типов данных позволяет легко обнаруживать большинство ошибок в программе до ее исполнения;
  3. Имеются средства для исполнения различных фрагментов программы в разное время, с разной скоростью и параллельно;
  4. Для выполнения операций в определенной последовательности, которая задается моментами времени или событиями, используется специальный язык последовательных функциональных схем (SFC);
  5. Стандарт поддерживает структуры для описания разнородных данных;
    Например: температура, давление, состояние ON/OFF, состояние интерфейса передачи данных и др.
  6. Стандарт обеспечивает совместное использование всех 6-ти языков для написания различных сегментов и модулей программного обеспечения;
  7. Программа написанная для одного контроллера может быть перенесена на любой другой контроллер совместимый со стандартом IEC 61131

Программное обеспечение в контроллере работает в циклическом режиме.
Цикл начинается со сбора данных с модулей ввода и интерфейсов, затем исполняется программа ПЛК и оканчивается цикл выводом данных на устройства вывода и на интерфейсы.
После окончания этого цикла, он (цикл) начинается снова, пока контроллер включен.