МЭК 61131-3
МЭК 61131-3 — это международный стандарт, определяющий синтаксис, семантику и правила использования языков программирования для программируемых логических контроллеров (ПЛК). Является третьей частью стандарта IEC 61131 (в России — ГОСТ Р МЭК 61131-3), который регламентирует общие требования к программируемым контроллерам. Стандарт был разработан Международной электротехнической комиссией (МЭК) с целью унификации подходов к разработке программного обеспечения для промышленной автоматизации, обеспечения переносимости кода между различными аппаратными платформами и повышения эффективности труда инженеров.
История создания
До появления стандарта МЭК 61131-3 каждый производитель ПЛК (Siemens, Allen-Bradley, Schneider Electric, Mitsubishi и другие) использовал собственные, несовместимые между собой языки программирования. Это приводило к значительным трудностям при переносе проектов, обучении персонала и интеграции оборудования от разных вендоров. В 1979 году МЭК приступила к разработке единого стандарта, который охватывал бы все аспекты проектирования, эксплуатации и программирования ПЛК.
Первая редакция стандарта IEC 61131 была опубликована в 1992 году. Третья часть, посвящённая языкам программирования, вышла в 1993 году. В 2003 году была принята вторая редакция (IEC 61131-3 Ed. 2.0), которая уточнила многие синтаксические конструкции, добавила поддержку объектно-ориентированных элементов и улучшила совместимость с современными средствами разработки. Третья редакция (Ed. 3.0) была опубликована в 2013 году и ввела такие возможности, как перегрузка функций, расширенные структуры данных и улучшенная работа с временными рядами.
В России стандарт был принят как ГОСТ Р МЭК 61131-3-2016, что обеспечило его применение на территории страны.
Языки программирования
Стандарт МЭК 61131-3 определяет пять языков программирования, которые разделены на две группы: текстовые и графические. Инженер может выбирать язык в зависимости от решаемой задачи, личных предпочтений или требований проекта. Допускается использование разных языков в одной программе (смешанное программирование).
Текстовые языки
Structured Text (ST) — структурированный текст, высокоуровневый язык, синтаксически близкий к Pascal или C. Используется для реализации сложных алгоритмов, математических расчётов, обработки массивов и строк. Поддерживает операторы ветвления (IF, CASE), циклы (FOR, WHILE, REPEAT), а также вызов функций и функциональных блоков. Благодаря своей читаемости и компактности, ST является одним из самых популярных языков среди разработчиков.
Instruction List (IL) — язык списка инструкций, низкоуровневый ассемблероподобный язык. Каждая строка содержит одну инструкцию (например, LD, AND, ST, ADD). Исторически использовался для простых логических задач, но в настоящее время практически вытеснен более удобными языками, такими как ST и Ladder Diagram. В третьей редакции стандарта IL был объявлен устаревшим (deprecated).
Графические языки
Ladder Diagram (LD) — релейно-контактные схемы, язык, визуально напоминающий электрические схемы управления. Состоит из контактов (нормально разомкнутых и нормально замкнутых), катушек и блоков функций. LD является основным языком для инженеров-электриков и технологов, так как позволяет наглядно моделировать логику работы релейной автоматики. Широко применяется для задач дискретного управления (конвейеры, станки, системы безопасности).
Function Block Diagram (FBD) — язык функциональных блоковых диаграмм. Программа представляется в виде графа, где узлы — это функциональные блоки (например, AND, OR, PID, TON), а связи — сигналы. FBD удобен для реализации непрерывных и дискретных процессов, а также для работы с аналоговыми сигналами. Позволяет создавать иерархические структуры и легко читается.
Sequential Function Chart (SFC) — язык последовательных функциональных схем, основанный на концепции сетей Петри. Программа делится на шаги (steps) и переходы (transitions). Каждый шаг может содержать действия на одном из других языков (ST, LD, FBD). SFC идеально подходит для описания последовательных процессов (циклы работы станков, технологические линии), где требуется чёткая синхронизация этапов.
Основные элементы и концепции
Стандарт МЭК 61131-3 вводит ряд фундаментальных понятий, которые лежат в основе программирования ПЛК.
Программные организационные единицы (POU)
Программные организационные единицы (Program Organization Units, POU) — это базовые строительные блоки, из которых состоит программа. Выделяют три типа POU:
- Программа (PROGRAM) — основная единица, которая может содержать вызовы функций и функциональных блоков. Программа имеет входные и выходные переменные и выполняется циклически.
- Функция (FUNCTION) — POU, которая возвращает одно значение (например, SIN, MAX, ABS). Функции не имеют внутреннего состояния — результат зависит только от входных аргументов.
- Функциональный блок (FUNCTION_BLOCK) — POU, которая может иметь внутреннее состояние (память). Например, таймер (TON, TOF), счётчик (CTU, CTD), триггер (SR, RS). Функциональные блоки создаются как экземпляры, каждый из которых хранит собственные данные.
Переменные и типы данных
Стандарт поддерживает широкий спектр типов данных: булевы (BOOL), целые (INT, DINT, SINT), вещественные (REAL, LREAL), временные (TIME, DATE, TOD), строковые (STRING, WSTRING), а также массивы и структуры. Переменные могут быть объявлены как локальные (VAR), глобальные (VAR_GLOBAL), входные (VAR_INPUT), выходные (VAR_OUTPUT) или входные/выходные (VAR_IN_OUT). Поддерживается инициализация переменных при объявлении.
Конфигурация и задачи
Стандарт определяет понятие конфигурации (CONFIGURATION) — это верхний уровень иерархии, который описывает аппаратную платформу, ресурсы и задачи. Задачи (TASK) управляют выполнением POU с заданным приоритетом и периодом. Это позволяет реализовать многозадачность, где критичные по времени процессы (например, обработка прерываний) выполняются с высоким приоритетом, а менее важные — с низким.
Применение
МЭК 61131-3 является основой для большинства современных систем промышленной автоматизации. Стандарт используется в:
- Системах управления технологическими процессами (SCADA, DCS) — для программирования контроллеров на нефтеперерабатывающих, химических, энергетических предприятиях.
- Станкостроении и робототехнике — для управления станками с ЧПУ, промышленными роботами, конвейерными линиями.
- Автоматизации зданий (BMS) — для управления системами отопления, вентиляции, кондиционирования, освещения.
- Транспорте и логистике — для управления сортировочными центрами, лифтами, эскалаторами, системами управления движением.
- Пищевой и фармацевтической промышленности — для управления рецептурными процессами, упаковочными линиями, стерилизацией.
Стандарт поддерживается всеми крупными производителями ПЛК: Siemens (TIA Portal), Schneider Electric (EcoStruxure Control Expert), Rockwell Automation (Studio 5000), CODESYS (среда разработки, используемая множеством вендоров), B&R, Beckhoff, Mitsubishi, Omron и другими.
Преимущества и недостатки
Преимущества
- Переносимость кода — программы, написанные на одном из языков стандарта, могут быть перенесены на ПЛК другого производителя с минимальными изменениями (при условии поддержки стандарта).
- Снижение затрат на обучение — инженеры, освоившие один язык, могут работать с оборудованием разных вендоров.
- Унификация — единый подход к описанию алгоритмов, типов данных и конфигурации упрощает взаимодействие между разработчиками, технологами и обслуживающим персоналом.
- Гибкость — возможность выбора языка под конкретную задачу (графические языки для наглядности, текстовые для сложных вычислений).
- Поддержка объектно-ориентированных возможностей (в редакциях 2.0 и 3.0) — наследование, инкапсуляция, полиморфизм, что упрощает создание сложных библиотек.
Недостатки
- Сложность для новичков — изучение всех пяти языков и концепций (POU, задачи, конфигурация) требует времени.
- Ограниченная производительность — интерпретация или компиляция в байт-код (в некоторых реализациях) может быть менее эффективной, чем низкоуровневое программирование на C или ассемблере.
- Неполная совместимость — несмотря на стандарт, многие производители добавляют расширения (например, специфичные библиотеки, типы данных), что может нарушить переносимость.
- Устаревание IL — отказ от языка списка инструкций в третьей редакции может вызвать проблемы при поддержке старых проектов.
Интересные факты
- Стандарт МЭК 61131-3 является одним из немногих международных стандартов, который активно используется в промышленности уже более 30 лет и продолжает развиваться.
- Среда разработки CODESYS, реализующая стандарт, является де-факто стандартом для многих производителей ПЛК среднего и нижнего ценового сегмента.
- В некоторых отраслях (например, в атомной энергетике) предъявляются повышенные требования к верификации программного обеспечения, и стандарт МЭК 61131-3 служит основой для сертификации.
- Третья редакция стандарта ввела поддержку многомерных массивов, перегрузки функций и расширенные возможности работы с временем.
Источники
- IEC 61131-3:2013 — Programmable controllers — Part 3: Programming languages.
- ГОСТ Р МЭК 61131-3-2016 — Контроллеры программируемые. Часть 3. Языки программирования.
- John, K. H., Tiegelkamp, M. — IEC 61131-3: Programming Industrial Automation Systems. Springer, 2001.
- Otto, D. — Programmable Logic Controllers and IEC 61131-3. Elsevier, 2018.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →