Блог

CODESYS 3.5 - основа промышленной автоматизации: Архитектура, протоколы и практика инженера

Открываешь каталог любого европейского или азиатского производителя ПЛК - Wago, Beckhoff, Phoenix Contact, Schneider Electric с линейкой EcoStruxure Machine Expert, Bosch Rexroth, ELAU, десятки других - и почти наверняка читаешь одну и ту же строчку в разделе программирования: "IEC 61131-3 / CODESYS". Среда программирования разная, но платформа под ней одна. Более 5 миллионов лицензий на устройства, свыше 1000 типов приборов от более чем 500 производителей и десятки тысяч конечных пользователей по всему миру делают CODESYS ведущим независимым от производителей инструментом программирования по IEC 61131-3.
Это не случайность. CODESYS решил задачу, которую промышленная автоматизация не могла решить десятилетиями: как сделать так, чтобы инженер, умеющий программировать контроллер одного производителя, мог перейти к другому без переучивания с нуля. И как производителю контроллера не тратить годы на создание собственной среды разработки. Ответ оказался в разделении: стандартная среда разработки живёт на компьютере инженера, а runtime-система портируется на любое целевое железо.

Откуда взялась эта платформа

CODESYS разрабатывается и распространяется компанией CODESYS Group со штаб-квартирой в Кемптене. Компания основана в 1994 году под названием 3S-Smart Software Solutions, переименована в CODESYS GmbH в 2020 году. Версия 1.0 CODESYS была выпущена в 1994 году.
За тридцать лет платформа прошла путь от инструмента для небольших контроллеров до полноценной промышленной экосистемы. Сегодня в компании CODESYS Group работает более 230 человек в штаб-квартире в Кемптене и дочерних компаниях в Китае, Италии и других странах.
Версия 3 - принципиально другая архитектура по сравнению с V2.3. Главное изменение: объектно-ориентированный подход к разработке приложений, единая среда для программирования, конфигурирования полевых шин, отладки и визуализации. Версия 3.5, которая сегодня является рабочей для большинства промышленных проектов, развивается через service pack-обновления - SP16, SP17 и далее. Каждый SP добавляет новые возможности, не ломая совместимость существующих проектов.
Важная для российского рынка деталь: лицензии на CODESYS Development System бесплатны и могут устанавливаться легально без защиты от копирования на любое число рабочих станций. Платной является runtime-система на целевом контроллере - и то её стоимость перекладывается на производителя оборудования, а не на конечного программиста.

Архитектура: два уровня, которые нужно понимать отдельно

Главная концептуальная ошибка при знакомстве с CODESYS - смешивать два принципиально разных компонента в единое целое.
CODESYS Development System - среда разработки на Windows-компьютере инженера. Это IDE, компилятор, отладчик, редакторы языков IEC 61131-3, конфигураторы полевых шин, редактор визуализации. Она не привязана ни к одному контроллеру - в ней можно разрабатывать проект под любую целевую платформу, у которой есть таргет-файл.
CODESYS Control Runtime System - исполняемая система на целевом контроллере. Runtime обеспечивает: коммуникацию со средой разработки для отображения статуса и логов, загрузку и исполнение скомпилированного кода приложения, отладку с функциями записи/принудительной установки переменных, управлением точками останова; обработку систем ввода-вывода и полевых шин через соответствующие драйверы; функции безопасности для защиты данных и know-how, включая авторизованный доступ, подписание, шифрование коммуникации; исполнение опциональных дополнений - TargetVisu, WebVisu, SoftMotion.
Связующее звено между ними - таргет-файл. Это пакет (.package), который устанавливается в среду разработки и описывает конкретную целевую платформу: список доступных аппаратных ресурсов, слоты модулей расширения, параметры коммуникационных интерфейсов, специфические библиотеки. Именно таргет-файл позволяет IDE "видеть" конкретный контроллер со всеми его особенностями - от корзины модулей ввода-вывода до управления подсветкой дисплея.
Для ПЛК СТАБУР, например, среда программирования - CODESYS v3.5 SP16, таргет-файл PSVTarget скачивается с сайта производителя. Версии жёстко привязаны друг к другу: версия CODESYS может превышать версию таргет-файла, но корректная работа гарантируется только при соответствии.

Пять языков IEC 61131-3: когда что использовать

Проекты могут разрабатываться с использованием любого из языков стандарта IEC 61131-3: SFC (Sequential Function Chart или Grafcet), FBD (Function Block Diagram), LD (Ladder Diagram), ST (Structured Text), а также языка CFC (Continuous Function Chart).
Ladder Diagram - графический язык, имитирующий релейно-контакторные схемы. Контакты слева, катушки справа, горизонтальные "рельсы". Для электриков с опытом релейной логики это самый быстрый способ прочитать чужую программу. Ограничение очевидно: сложные алгоритмы и математика на LD превращаются в нечитаемые полотна.
Function Block Diagram - графическое соединение функциональных блоков входами и выходами. Идеален для регуляторов, фильтров, блоков обработки аналоговых сигналов - всего, что естественно описывается потоком данных. Хорошо читается на мнемосхемах управления.
Structured Text - текстовый язык, синтаксически похожий на Pascal. Полные конструкции IF/THEN/ELSIF/ELSE/END_IF, циклы FOR/WHILE/REPEAT, CASE, вызовы функций и методов. Для сложной логики, математических вычислений, строковых операций и объектно-ориентированного программирования ST просто безальтернативен. Современная тенденция: всё больше инженеров АСУ ТП переходят на ST как основной язык, оставляя LD только для legacy-кода.
Sequential Function Chart - графическое описание последовательных процессов в виде шагов и переходов. Незаменим для автоматов состояний, пошаговых технологических программ, управления упаковочными и дозировочными линиями. Программа в SFC читается как блок-схема производственного процесса - технолог понимает её без объяснений программиста.
CFC - разновидность FBD с возможностью свободного размещения блоков и обратных связей без промежуточных переменных. В CFC можно свободно размещать все функциональные блоки, что делает возможной реализацию обратных связей без промежуточных переменных - язык особенно подходит для обзорного представления приложения.
Важно: в одном проекте CODESYS разные POU (Program Organization Unit) могут быть написаны на разных языках. Функция расчёта ПИД на ST, алгоритм управления последовательностью на SFC, визуализация входных сигналов на FBD - всё это живёт в одном проекте, компилируется в единый бинарный код и выполняется в общей среде исполнения.

Runtime-система: что происходит внутри контроллера

Цикл исполнения CODESYS-приложения - это не просто "прочитал входы, выполнил программу, записал выходы". Runtime-система представляет собой многозадачную среду, где приложение разбито на задачи (Tasks) с разными приоритетами и периодами выполнения.
Задача с периодом 1 мс и высоким приоритетом - для управления движением и быстрых контуров регулирования. Задача с периодом 10 мс - для основной технологической логики. Задача с периодом 100 мс - для коммуникаций и логирования. Задача по событию - срабатывает немедленно при изменении входного бита. Такая многозадачность позволяет одновременно вести скоростной EtherCAT-цикл для управления сервоприводами и медленную передачу данных в SCADA по Modbus TCP - без взаимного влияния.
Бенчмарк CODESYS позволяет характеризовать производительность SoftPLC на целевой системе: приложение реализует главную задачу с периодом 250 мкс, а конфигурируемая нагрузка включает операции с плавающей точкой, арифметику и булевые операции. Из времён выполнения цикла получают минимальные, максимальные значения и джиттер.
Retain-память - механизм энергонезависимого хранения переменных. Переменная, объявленная с атрибутом RETAIN, сохраняет своё значение при выключении питания и восстанавливается при следующем старте. Счётчики наработки, уставки регуляторов, состояние производственного счётчика - всё это хранится в Retain-области. В СТАБУР Retain реализован в структуре CoDeSys_Retain_0...CoDeSys_Retain_9, каждая ёмкостью до нескольких килобайт.

Полевые шины и коммуникационные протоколы

CODESYS поддерживает все стандартные полевые шины: Profibus, CAN, ModBus, EtherCAT, Profinet, EtherNet/IP - со встроенными реализациями. Это не маркетинговое заявление, а конкретная архитектурная особенность: конфигуратор каждой полевой шины встроен прямо в IDE, работает в едином дереве устройств и использует EDS/GSD/XML-файлы устройств из стандартных репозиториев.
Modbus - наиболее распространённый протокол в CODESYS-проектах российской автоматизации. Четыре режима: Serial Master, Serial Slave (RTU/ASCII), TCP Master, TCP Slave. Конфигурация в таргет-файле СТАБУР выполняется через добавление соответствующего компонента в дерево устройств. Modbus Serial Master позволяет опрашивать до 256 slave-устройств на одном COM-порту с индивидуальной настройкой таймаутов на каждое устройство.
EtherCAT - протокол для жёсткого управления движением. CODESYS SoftMotion Runtime System позволяет обрабатывать на целевом устройстве сложные движения, CNC-программы или задачи робототехники: одно- или многоосевые движения, CNC-программы или задачи робототехники обрабатываются совместно с управляющим приложением. EtherCAT в CODESYS поддерживает Distributed Clocks - аппаратную синхронизацию всех узлов сети с точностью до десятков наносекунд.
CANopen - протокол на основе CAN, широко применяемый в мобильной технике, сельхозмашинах, лифтовом оборудовании. Платформа CODESYS поддерживает CANopen, J1939 и CANopen Safety - коммуникацию по NMT и через CANopen Safety. Конфигуратор системы встроен в IDE, что исключает необходимость выходить из платформы CODESYS для интеграции и настройки I/O-модулей.
OPC UA Server - встроен в стандартную поставку CODESYS Communication. OPC UA Server предоставляет доступ к переменным интерфейса контроллера для OPC UA-клиентов через отдельное TCP-соединение. В версии runtime 3.5 SP17 и выше для доступа к runtime-системам CODESYS по умолчанию требуется настройка управления пользователями устройства. Это прямой путь вертикальной интеграции: ПЛК становится OPC UA-сервером, SCADA или MES-система - клиентом, и никакого промежуточного OPC-DA сервера на Windows-машине не нужно.
MQTT с поддержкой Pub/Sub - начиная с версии SP16, CODESYS поддерживает публикацию данных через MQTT-брокер. Это открывает прямую интеграцию с IIoT-платформами и облачными сервисами без написания дополнительного middleware.

Визуализация: от экрана на контроллере до браузера на телефоне

CODESYS предоставляет три уровня визуализации в рамках единого инструмента разработки.
TargetVisu - визуализация, исполняемая непосредственно на дисплее контроллера или панели оператора. Разрабатывается в той же IDE, что и логика управления, компилируется вместе с приложением. Элементы из стандартной библиотеки: кнопки, ползунки, индикаторы, тренды, мнемосхемы с анимацией состояний. Именно этот механизм используется в ПО СТАБУР - среда исполнения CODESYS на панели отображает визуализацию, созданную инженером в Development System.
WebVisu - та же визуализация, но доступная через веб-браузер. Веб-браузер взаимодействует с веб-сервером на контроллере через JavaScript, используя HTML5 для отображения элементов визуализации. Эта технология поддерживается большинством браузеров и совместима с iOS и Android. Инженер создаёт один проект визуализации - он работает и на экране контроллера, и в браузере ноутбука на пусконаладке, и на смартфоне технолога через VPN.
CODESYS HMI SL - отдельный продукт для создания полноценных операторских станций на PC-платформе с расширенными возможностями: поддержка нескольких мониторов, высокое разрешение, продвинутые библиотеки элементов. В актуальной версии CODESYS HMI SL включает конфигуратор OPC UA Client и опцию резервирования.

Объектно-ориентированное программирование в ПЛК: не академия, а реальный инструмент

CODESYS V3 принёс в IEC 61131-3 объектно-ориентированное расширение, которое поначалу казалось академической экзотикой для промышленности. Сегодня это один из самых ценных инструментов при разработке крупных проектов.
Функциональный блок (FB) в V3 может иметь методы, свойства и реализовывать интерфейсы. Интерфейс описывает контракт: любой FB, реализующий IValve, должен иметь методы Open() и Close() и свойства Position и Status. Теперь программа управления может работать с любым клапаном через интерфейс - будь то аналоговый регулирующий клапан, дискретный отсечной или клапан с позиционером по Profibus. Замена типа клапана не требует изменения логики управления.
Наследование позволяет создать базовый FB для насоса с общей логикой (управление пуском/остановом, счётчик наработки, сигнализация неисправности) и производные классы для центробежного насоса, шестерёнчатого насоса, насоса-дозатора - каждый переопределяет только специфическое поведение. Библиотека из 50 типовых насосов строится за счёт наследования, а не копирования кода.
Принципы SOLID в приложении к IEC 61131-3 - уже предмет отдельных книг и курсов. Стефан Хеннекен написал "Use of the SOLID principles with the IEC 61131-3" именно об этом. Промышленная автоматизация медленно, но неуклонно движется к тем же принципам разработки ПО, которые давно приняты в IT.

SoftPLC и виртуализация: ПЛК без физического ПЛК

С виртуальными контроллерами можно использовать мощное IT-оборудование для управления, что снижает затраты на аппаратное обеспечение. CODESYS Control Win SL - полноценная runtime-система, работающая как Windows-служба на промышленном компьютере или сервере. CODESYS Control Linux SL - то же самое на Linux, включая промышленные edge-платформы.
Виртуальный ПЛК на промышленном компьютере с ОС реального времени (PREEMPT-RT Linux или Windows с RTX) обеспечивает детерминизм, сопоставимый с аппаратным контроллером, при значительно большей вычислительной мощности. Это меняет архитектуру систем управления: один мощный edge-компьютер может исполнять несколько независимых CODESYS-приложений для разных производственных участков, где прежде стояло несколько физических ПЛК.
В январе 2025 года появилось аппаратно-независимое решение виртуального safety PLC, сертифицированное TÜV Süd для независимых от устройств решений безопасности по IEC 61508 SIL3. Это означает, что функции безопасности теперь могут исполняться на виртуальном контроллере без специализированного safety-оборудования - при соблюдении требований к аппаратной платформе.

Безопасность: от защиты кода до SIL3

В современной версии CODESYS безопасность охватывает два принципиально разных аспекта, которые на русском языке оба называются одним словом.
Security - информационная безопасность: защита проекта от несанкционированного доступа, шифрование коммуникации между IDE и контроллером, управление пользователями, подписание приложений, защита IP производителя через шифрование бинарного кода. Начиная с SP17, управление пользователями обязательно для доступа к runtime-системе.
Safety - функциональная безопасность по IEC 61508/IEC 61511: CODESYS Safety SIL2 и SIL3 - интегрированные safety-продукты, сертифицированные TÜV по IEC 61508. Все Safety-продукты состоят из Safety-компонентов в runtime и среде программирования. Safety-приложение разрабатывается в той же IDE, но в отдельном контексте с ограничениями на допустимые конструкции языка и обязательным двойным рецензированием.

Интеграция с MATLAB/Simulink и генерация кода

CODESYS является целевой платформой для MATLAB PLC Coder от MathWorks. Это означает, что симулированные модели и архитектуры могут быть конвертированы в код IEC 61131-3 (Structured Text), включены в ПЛК-приложение и скомпилированы для систем автоматизации.
Рабочий процесс: инженер моделирует регулятор или алгоритм управления в Simulink, верифицирует его на симуляционной модели объекта, затем генерирует ST-код для CODESYS. Код вставляется в функциональный блок и работает на реальном контроллере. Это особенно ценно для сложных алгоритмов управления - нейросетевых регуляторов, предиктивных алгоритмов MPC, адаптивных систем, где ручная трансляция из математической нотации в ST была бы трудоёмкой и ошибкоёмкой операцией.

CODESYS Automation Server: Industry 4.0 в практике

Для администрирования совместимых устройств доступна платформа Industry 4.0, позволяющая хранить проекты в исходном и бинарном коде через веб-браузер и загружать их на подключённые устройства.
Automation Server - это облачная платформа для управления парком CODESYS-контроллеров: удалённый мониторинг состояния, развёртывание обновлений приложений, управление лицензиями, сбор диагностики. Обновление прошивки на 1000 контроллерах через веб-интерфейс вместо объезда каждого объекта - это не маркетинговый кейс, это реальная операционная экономия. Automation Server позволяет ускорить обновления ПЛК в шесть раз.

CODESYS в российском контексте: СТАБУР и импортозамещение

Важный практический момент для российского рынка. CODESYS как среда разработки и как стандарт IEC 61131-3 - это открытая экосистема, которую может реализовать любой производитель контроллеров, получив лицензию на runtime-систему. Именно это сделало возможным появление российских ПЛК с полноценной CODESYS-совместимостью.
Контроллеры и панели оператора СТАБУР (ООО ПО "Промсвязь", Екатеринбург) используют CODESYS v3.5 SP16 в качестве одной из двух сред исполнения. Таргет-файл PSVTarget описывает всю аппаратную специфику платформы - корзину модулей расширения, Retain-память, управление индикаторами A/B/C, конкретные параметры модулей AI, AO, DI, DO, TERM, CAN. Инженер, знакомый с CODESYS по любому другому оборудованию, начинает работу с ПЛК СТАБУР буквально за несколько часов - время нужно только на освоение таргет-файла и специфики конкретных модулей.
Это и есть главная ценность платформы для импортозамещения: переход с европейского или американского оборудования на российское не требует переучивания команды и переписывания существующей логики - только адаптация к новому железу.

Сравнение ключевых возможностей CODESYS V3.5 SP16+

Возможность
Описание
Применение
Языки IEC 61131-3
LD, FBD, ST, SFC, CFC
Любой тип задач управления
OOP расширение
Классы, интерфейсы, наследование, полиморфизм
Библиотеки типового оборудования
OPC UA Server/Client
Встроен, шифрование X.509
Вертикальная интеграция со SCADA/MES
Modbus RTU/TCP
Master/Slave, до 256 устройств
Полевые приборы, счётчики
EtherCAT Master
Distributed Clocks, SoftMotion
Управление сервоприводами
CANopen
Manager/Device, J1939
Мобильная техника, приводы
PROFINET
RT и IRT, IO-Link
Siemens-экосистема
MQTT Pub/Sub
Транспорт для OPC UA данных
IIoT, облачная телеметрия
WebVisu
HTML5, iOS/Android
Удалённый мониторинг
SoftMotion
CNC, Robotics, PLCopen Part 1/2
Многоосевое управление
Safety SIL2/SIL3
TÜV-сертифицировано, IEC 61508
Функциональная безопасность
Retain-память
Энергонезависимое хранение переменных
Уставки, счётчики, состояния
Multicore
Распределение задач по ядрам CPU
SoftPLC на мощных платформах
MATLAB Integration
PLC Coder, генерация ST из Simulink
Сложные алгоритмы управления

Коротко о главном

Что такое CODESYS и чем он отличается от TIA Portal или Studio 5000? CODESYS - аппаратно-независимая платформа IEC 61131-3: среда разработки бесплатная, runtime лицензируется производителями контроллеров. TIA Portal и Studio 5000 - проприетарные среды, привязанные к конкретному железу Siemens и Rockwell соответственно. CODESYS работает на оборудовании более 500 производителей - один инструмент для разных брендов.
Что такое таргет-файл CODESYS и зачем он нужен? Таргет-файл (.package) - описание конкретной аппаратной платформы для среды разработки. Он содержит список доступных ресурсов контроллера, параметры модулей ввода-вывода, специфические библиотеки. Устанавливается через CODESYS Installer и позволяет IDE работать с конкретным контроллером так же, как Device Description File позволяет Profibus-мастеру работать с конкретным slave-устройством.
Можно ли перенести проект CODESYS с одного контроллера на другой? Частично - да. Логика приложения на ST, FBD, LD переносится без изменений. Конфигурация полевых шин и привязки переменных к каналам ввода-вывода требуют адаптации под новый таргет. Это занимает часы или дни, а не недели - в зависимости от масштаба проекта.
Поддерживает ли CODESYS OPC UA? Да, OPC UA Server встроен в стандартную поставку CODESYS Communication начиная с версии 3.5. Контроллер с CODESYS становится OPC UA-сервером без дополнительного программирования - достаточно настроить символьный конфигуратор. Шифрование, аутентификация X.509 и управление пользователями включены.