IEC 61131-3
IEC 61131-3 — это международный стандарт, определяющий синтаксис и семантику пяти языков программирования для программируемых логических контроллеров (ПЛК). Он является третьей частью семейства стандартов IEC 61131, посвящённого промышленным контроллерам, и регламентирует программное обеспечение систем промышленной автоматизации. Стандарт был впервые опубликован Международной электротехнической комиссией (IEC) в 1993 году и с тех пор неоднократно пересматривался, последняя редакция — IEC 61131-3:2013.
История и предпосылки создания
До появления IEC 61131-3 каждый производитель ПЛК разрабатывал собственные, проприетарные языки программирования. Это приводило к серьёзным проблемам: программы были непереносимы между разными аппаратными платформами, инженеры вынуждены были изучать несколько совершенно разных сред разработки, а обучение персонала было дорогим и длительным. В середине 1980-х годов IEC начала работу над унификацией. Целью было создание единого набора языков, которые покрывали бы все основные подходы к программированию ПЛК: от простых релейно-контактных схем до сложных алгоритмов, реализуемых на языках высокого уровня.
Первая версия стандарта была выпущена в 1993 году. Она быстро завоевала признание, так как предложила не просто один язык, а целое семейство, позволяющее разработчику выбирать наиболее подходящий инструмент для каждой конкретной задачи. В 2003 году вышла вторая редакция (IEC 61131-3:2003), которая уточнила некоторые положения и добавила поддержку объектно-ориентированных расширений. Третья, действующая редакция (IEC 61131-3:2013), значительно расширила возможности объектно-ориентированного программирования, ввела пространства имён, интерфейсы и другие механизмы, характерные для современных языков общего назначения.
Структура и основные концепции
Стандарт определяет не только синтаксис языков, но и общую модель программного обеспечения ПЛК.
Модель программного обеспечения
Программа на IEC 61131-3 строится из иерархически организованных программных единиц (Program Organization Units, POU):
- Функции (FUN) — блоки, которые при одинаковых входных данных всегда возвращают один и тот же результат. Не имеют внутреннего состояния (памяти). Пример:
ADD,SIN,ABS. - Функциональные блоки (FB) — блоки, которые имеют внутреннее состояние (память). Результат их работы зависит не только от текущих входов, но и от предыдущих вызовов. Пример: таймер
TON, триггерSR. - Программы (PROG) — главные программные единицы, которые могут вызывать функции и функциональные блоки. Именно программа связывается с физическими входами/выходами ПЛК.
Важным понятием является конфигурация — это полное описание системы управления, включающее в себя ресурсы (обычно — отдельные ПЛК или процессоры), задачи (tasks) и глобальные переменные. Задачи определяют, как часто и в каком порядке будут выполняться программы.
Типы данных
Стандарт определяет обширный набор типов данных:
- Элементарные:
BOOL,SINT,INT,DINT,LINT,USINT,UINT,UDINT,ULINT,REAL,LREAL,TIME,DATE,STRING,BYTE,WORD,DWORD,LWORD. - Обобщённые (Generic):
ANY,ANY_NUM,ANY_INT,ANY_REAL,ANY_BIT,ANY_STRING,ANY_DATE. Используются в стандартных библиотечных функциях для обеспечения полиморфизма. - Производные: пользователь может создавать собственные типы (
TYPE) на основе элементарных (например,TYPE MySpeed : INT RANGE 0..100; END_TYPE) или структурировать данные в массивы (ARRAY) и структуры (STRUCT).
Языки программирования
Стандарт IEC 61131-3 включает пять языков, которые делятся на две группы: графические и текстовые.
Графические языки
LD (Ladder Diagram) — Релейно-контактные схемы
Самый старый и интуитивно понятный для электриков язык. Он визуально имитирует электрические схемы на реле и контакторах. Программа состоит из цепей (rungs), где слева направо «течёт» условный ток. Элементы схемы:
- Контакты (Contacts) — представляют логические условия (входы, биты памяти). Нормально разомкнутый (
| |) и нормально замкнутый (|/|). - Катушки (Coils) — представляют выходные действия (включить выход, установить флаг). Нормальная катушка (
( )), катушка установки/сброса ((S)/(R)). - Функциональные блоки — могут быть встроены в цепь (например, таймер или счётчик).
LD широко применяется для простых логических задач, систем безопасности и для обучения персонала, не имеющего глубоких знаний в программировании.
FBD (Function Block Diagram) — Диаграмма функциональных блоков
Графический язык, в котором программа представляется в виде схемы, состоящей из блоков (функций и функциональных блоков), соединённых линиями связей. Входы блоков находятся слева, выходы — справа. FBD удобен для реализации алгоритмов непрерывной логики, обработки аналоговых сигналов, ПИД-регулирования. Он нагляден и хорошо подходит для задач, которые можно представить в виде блок-схемы.
SFC (Sequential Function Chart) — Последовательная функциональная схема
Язык, основанный на концепции сетей Петри. Он описывает последовательность шагов (steps) и переходов (transitions) между ними. Каждый шаг может содержать действия, написанные на любом другом языке стандарта (LD, FBD, ST, IL). SFC идеально подходит для описания циклических и последовательных процессов: работа конвейера, управление лифтом, этапы технологического цикла. Он позволяет чётко структурировать программу и легко реализовывать параллельные ветви и альтернативные маршруты.
Текстовые языки
ST (Structured Text) — Структурированный текст
Язык высокого уровня, синтаксически напоминающий Pascal или C. Он предоставляет все возможности современных языков программирования: условные операторы (IF...THEN...ELSE, CASE), циклы (FOR, WHILE, REPEAT), арифметические и логические выражения, работу с массивами и структурами. ST является наиболее мощным и гибким языком стандарта. Он используется для реализации сложных алгоритмов, математических вычислений, обработки данных и там, где графические языки становятся громоздкими.
IL (Instruction List) — Список инструкций
Низкоуровневый язык, напоминающий ассемблер. Программа представляет собой последовательность инструкций, каждая из которых состоит из оператора (например, LD, AND, ADD, ST) и операнда. IL использует аккумулятор (текущий результат) для промежуточных вычислений. В настоящее время IL считается устаревшим и не рекомендуется для новых разработок. Он сложен для чтения и отладки, но в некоторых случаях может быть полезен для оптимизации быстродействия или при работе с очень старыми контроллерами.
Применение и значение
IEC 61131-3 стал де-факто стандартом в промышленной автоматизации. Его поддерживают практически все крупные производители ПЛК: Siemens (TIA Portal), Rockwell Automation (RSLogix 5000/Studio 5000), Schneider Electric (EcoStruxure Control Expert), Beckhoff (TwinCAT), CODESYS, B&R, Mitsubishi Electric и многие другие.
Основные преимущества использования стандарта:
- Переносимость: Инженер, знающий ST, может работать с ПЛК любого производителя, освоив лишь особенности конкретной среды разработки.
- Снижение затрат: Унификация сокращает время на обучение персонала и разработку проектов.
- Повторное использование кода: Функциональные блоки и библиотеки могут быть легко перенесены между проектами и платформами.
- Гибкость: Возможность комбинировать языки в рамках одного проекта, выбирая оптимальный для каждой подзадачи.
- Стандартизация документации: Программы на IEC 61131-3 (особенно графические) часто более понятны для технологов и обслуживающего персонала, чем код на C++ или Python.
Критика и ограничения
Несмотря на широкое распространение, стандарт не лишён недостатков:
- Отсутствие встроенной поддержки современных парадигм: Хотя объектно-ориентированные расширения были добавлены в редакции 2013 года, они не столь развиты, как в C++ или Java. Нет полноценной поддержки многопоточности на уровне языка (хотя задачи в конфигурации позволяют реализовать параллелизм).
- Сложность реализации: Полная реализация стандарта — дорогостоящая и технически сложная задача. Поэтому многие производители внедряют его с ограничениями или расширениями, что может приводить к проблемам с переносимостью при использовании специфических функций.
- Устаревание IL: Язык списка инструкций, хотя и входит в стандарт, практически не используется в современной практике.
- Отсутствие строгой типизации в некоторых реализациях: Некоторые среды разработки допускают неявные преобразования типов, что может приводить к ошибкам.
Заключительные замечания
IEC 61131-3 остаётся основным стандартом в области программирования промышленных контроллеров. Он обеспечивает баланс между наглядностью (для простых задач) и вычислительной мощью (для сложных алгоритмов). Современные тенденции, такие как Industry 4.0 и Industrial Internet of Things (IIoT), стимулируют развитие стандарта в сторону интеграции с IT-системами, однако IEC 61131-3 продолжает оставаться фундаментом для подавляющего большинства систем промышленной автоматизации.
Источники
- International Standard IEC 61131-3:2013. Programmable controllers — Part 3: Programming languages. International Electrotechnical Commission, 2013.
- John, K.-H., Tiegelkamp, M. IEC 61131-3: Programming Industrial Automation Systems. Springer, 2010.
- Otto, D. IEC 61131-3: A Standard for Programming Industrial Controllers. Automation World, 2015.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →