Text Size
Среда 21 августа 2019

Программирование ПЛК: языки МЭК 61131-3.

В 1993 г. Международная электротехническая комиссия  выпустила  в  свет  стандарт  МЭК 61131-3. Этот международный стандарт входит в группу МЭК 61131  стандартов,  которые  охватывают  различные аспекты  использования  ПЛК.  Декларируемые  цели

МЭК 61131-3 –  стандартизация  существующих  языков ПЛК [1],  а вернее, базовая платформа для  такой работы  в  национальных  комитетах  стандартизации.

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

обстоятельства, сопутствующие этому процессу.

 

ПЛК как ядро систем автоматики. Специфика задачи и предпосылки создания

специализированных языков

На современном этапе в качестве ядра любой системы  промышленной  автоматизации  используется ПЛК, к которому со стороны объекта автоматизации подключаются  датчики  и  исполнительные  органы. Через датчики в ПЛК поступает информация о текущем состоянии объекта, а через исполнительные органы  ПЛК  может  изменять  состояние  управляемого объекта. Эта  базовая  схема может  усложняться. Например, ПЛК могут подключаться  к АРМ оператора для супервизорного управления или к БД для накопления информации и интеграции в АСУ предприятия. Поскольку  все ПЛК  строятся  на  базе  цифровой  техники, естественным образом предполагаются некоторые  языковые  средства  их  программирования.  Причем в силу специфики задачи алгоритмические языки программирования,  такие  как Си, Паскаль, Си++, не годятся для этих целей.

Специфика  автоматизации  предполагает  наличие собственно  системы  управления,  включающей  датчики обратной связи и органы управления, и внешней (по отношению к системе управления) среды, на которую  система  управления  воздействует  через  органы управления, – объекта управления – технической системы,  реализующей  некоторую  производственную технологию. Воздействия – или, другими словами, реакция системы управления – определяются алгоритмом  управления  в  зависимости  от  событий  на объекте управления, информация о которых поступает через датчики обратной связи. Для цифровых систем  это  обстоятельство  обусловливает  цикличность управляющего  алгоритма  по  схеме:  считывание  состояния  входных  сигналов  через  датчики – их  обработка и формирование  выходных  сигналов –  выдача выходных  сигналов  на  исполнительные  органы.  Событийность  предполагает  алгоритмические  изменения  программы  и  набора  обрабатываемых  ею  входных/выходных  сигналов  в  зависимости  от  происходящих на объекте событий.

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

Другая  характерная  особенность  алгоритмов управления –  логический  параллелизм,  отражающий существование множества параллельно протекающих процессов  в  объекте  управления. (Поскольку  события,  происходящие  в  различных  компонентах  системы,  возникают  независимо  и  в  произвольной  последовательности,  то  попытка  задать  реакцию  системы единым  блоком  означает  комбинаторный  перебор большого  числа  вариантов  и  неоправданный  рост сложности  описания).  Логический  параллелизм предполагает  наличие  в  алгоритме  управления  независимых  или  слабо  зависимых  частей –  логически обособленных потоков управления.

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

на  некотором  уровне  иерархии  программирование должно вестись в естественных терминах технологического процесса.

Перечисленные  обстоятельства  обусловливают разработку  специализированных  языков  промышленной автоматизации.

 

Международная электротехническая комиссия.

Цели создания стандарта на языки программирования ПЛК

Международная  электротехническая  комиссия – это международный  орган  стандартизации,  создающий базовые стандарты для последующей адаптации в  национальных  комитетах. Интересный факт,  которым  могут  гордиться  граждане  России.  В  становлении и работе этой комиссии принимал активное участие СССР, поэтому русский – это один из трех официальных языков МЭК. Что касается стандартизации языков,  используемых  для  программирования  ПЛК, то эта проблема назрела давно. К концу 80-х десяток базовых  концепций  на  практике  был  представлен

более сотней вариаций. Их унификация сулила ощутимый  экономический  эффект.  Для  решения  этой проблемы была создана рабочая группа, состоящая из представителей ведущих игроков на рынке автоматизации, которая начала работу.

В  силу  того,  что  общепринятого  подхода  к  программированию ПЛК не существовало (и не существует до  сих пор), членам комиссии не удалось договориться  о  едином  языке.  Поэтому  было  принято компромиссное решение – включить в стандарт языки, используемые в фирмах, представителям которых посчастливилось оказаться в членах группы. Среди языков-“счастливцев” оказались:

  SFC  (Sequential Function Chart) –  графический язык,  используемый  для  описания  алгоритма  в  виде набора  связанных  пар:  шаг (step) и переход (transition). Шаг  представляет  собой  набор  операций над  переменными.  Переход –  набор  логических  условных  выражений,  определяющий  передачу  управления к следующей паре шаг-переход. По внешнему виду описание на языке SFC напоминает хорошо известные  логические  блок-схемы  алгоритмов,  хотя идеологически SFC близок к сетям Петри. SFC имеет возможность  распараллеливания  алгоритма.  Однако SFC не имеет средств для описания шагов и переходов, которые могут быть выражены только средствами других языков стандарта. Происхождение: Grafcet (Telemechanique-Groupe Schneider).

  LD (Ladder Diagram) – графический язык, стандартизованный  вариант  класса  языков  релейно-контактных  схем.  Логические  выражения  на  этом языке  описываются  в  виде  реле,  которые  широко применялись  в  области  автоматизации  в 60-х  годах. Из-за  своих  ограниченных  возможностей  язык  дополнен  привнесенными  средствами:  таймерами, счетчиками  и  т.п.  Происхождение:  различные  варианты языка релейно-контактных схем (Allen-Bradley,AEG Schneider Automation, GE-Fanuc, Siemens).

  FBD (Functional Block Diagram) –  графический язык,  по  своей  сути  похожий  на LD:  вместо  реле  в этом  языке  используются  функциональные  блоки. Алгоритм  работы  некоторого  устройства,  выраженный  средствами  этого  языка,  напоминает  функциональную  схему  электронного  устройства:  элементы типа “логическое «И», “логическое  ИЛИ”  и  т.п.,  соединенные линиями. Корни  языка  выяснить  сложно,

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

  ST (Structured Text) – текстовый высокоуровневый  язык  общего  назначения,  по  синтаксису  ориентированный на Паскаль. Самостоятельного  значения не  имеет:  используется  только  совместно  с SFC. Происхождение: Grafcet (Telemechanique-Groupe Schneider).

  IL  (Instruction List) –  текстовый  язык  низкого уровня. Выглядит как язык ассемблера, что объясняется  его  происхождением:  для  некоторых  моделей ПЛК фирмы Siemens является языком ассемблера. В рамках стандарта IEC 1131-3 к архитектуре конкретного процессора не привязан. Самостоятельного значения  не  имеет:  используется  только  совместно  с SFC. Происхождение – STEP 5 (Siemens).

 

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

 

Ladder Diagram (LD, LAD, РКС) — язык релейной (лестничной) логики.

Применяются также названия:

    * язык релейно-контактной логики

    * релейные диаграммы

    * релейно-контактные схемы

    * язык программирования релейно-лестничной логики стандарта МЭК 61131-3.

Предназначен для программирования промышленных контроллеров (ПЛК). Синтаксис языка удобен для замены логических схем, выполненных на релейной технике. Ориентирован на инженеров по автоматизации, работающих на промышленных предприятиях. Обеспечивает наглядный интерфейс логики работы контроллера, облегчающий не только задачи собственно программирования и ввода в эксплуатацию, но и быстрый поиск неполадок в подключаемом к контроллеру оборудовании. Является самым распространённым языком программирования для ПЛК в США, очень широко распространен во всех странах мира.

 

Программа на языке релейной логики имеет наглядный и интуитивно понятный инженерам-электрикам графический интерфейс, представляющий логические операции, как электрическую цепь с замкнутыми и разомкнутыми контактами. Протекание или отсутствие тока в этой цепи соответствует результату логической операции (true — если ток течет; false — если ток не течет).

 

Основными элементами языка являются контакты, которые можно образно уподобить паре контактов реле или кнопки. Пара контактов отождествляется с логической переменной, а состояние этой пары — со значением переменной.

 

Различаются нормально замкнутые и нормально разомкнутые контактные элементы, которые можно сопоставить с нормально замкнутыми и нормально разомкнутыми кнопками в электрических цепях.

 

    * Нормально разомкнутый контакт разомкнут при значении false, назначенной ему переменной и замыкается при значении true.

    * Нормально замкнутый контакт, напротив, замкнут, если переменная имеет значение false, и разомкнут, если переменная имеет значение true.

 

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

 

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

 

Основные серии ПЛК компании Thinget

Основных серий, поставляемых на рынки 3-и – бюджетный, стандартный и расширенный типы. Основные их отличия – это наборы поддерживаемых функций, подключаемой периферии и естественно цена. Рассмотрим табличку:

 

Модель

XC1

XC3

XC5

параметры

значение

Особенности

Бюджетный тип.

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

Не могут оснащаться

расширениями.

Стандартный тип.

Применимы в большинстве случаев.

Могут оснащаться расширениями

ввода/вывода, работать с HMI, ШД, оптическими энкодерами, возможность

сообщения по MODBUS или опреде-

лённому пользователем протоколу.

Расширенный тип.

Имеет функциональность XC3, наибольший объем памяти программ, до 4

линий управления ШД

XC5-32 имеет 4 выхода выдачи им-

пульсов. XC5-48, XC5-60 имеют интерфейс CAN.

Линий ввода/вывода

16

24

32

14

24/32

48/60

32

48

60

Ход исполнения программы

круговой, через интервалы времени

Исходный формат программы

LD, IL

Время исполнения одной ин-

струкции

0.5 мкс

Энергонезависимые запоминающие устройства

FlashROM(для хранения

программы и данных

пользователя)

FlashROM (для хранения программы и данных пользователя) и CMOS,

запитанный от литиевой батарейки для часов

Ёмкость для хранения программы пользователя, шагов

2000

2500

8000

2500

10000

Количество линий

ввода/вывода

входов

8

12

16

8

14\18

28\36

18

28

36

выходов

8

12

16

6

10\14

20\24

14

20

24

Внутренних точек подключения

“катушек” (LD)

556

8512

Таймер (T)

штук

80

620

параметры

шаг 100 мс, задаваемый интервал 0.1~ 3276.7 с

шаг 10 мс, задаваемый интервал 0.01~ 327.67 с

шаг 1 мс, задаваемый интервал 0.001~ 32.767 с

Счётчик (C)

(низкоскоростной)

штук

48

635

параметры

16-ти разрядный может принимать значения 0~ 32767

32-х разрядный может принимать значения 0~ 2147483647

Регистров данных (D)

406

8512

FlashROM регистров (FD)

510

2048

Высокоскоростной ввод/вывод

нет

счёт, вывод импульсов, внешнее прерывание

Интервал запуска выполнения

программного цикла

0~ 99 мс

Защита паролем

6 символов

Самодиагностика

самопроверка при подаче питания, сторожевой таймер, грамматическая проверка

                                     

 

* к основным модулям ПЛК можно подключать 7 расширений (кроме XC3-14 и серии XC1, также они не поддерживают установку аналоговой платы расширения BD).

 

 

 

Источники:

1)     В.Е. ЗЮБИН (Институт автоматики и электрометрии СО РАН)

2)     Википендия

3)     Мануалы ПЛК Thinget

Программист

Учебник