Хроники импортозамещения: переход из TIA Portal в CODESYS V3.5

Компания Siemens – один из самых крупных поставщиков оборудования на российском рынке промышленной автоматизации. Многие инженеры имеют опыт работы с контроллерами линейки Simatic, программируемыми в среде TIA Portal. В настоящий момент компания прекратила свою деятельность на территории России. Поэтому многие инжиниринговые компании и системные интеграторы, привыкшие использовать контроллеры Siemens, ищут альтернативу среди российских или азиатских производителей.
Вместе с этим возникает вопрос освоения новых сред разработки. В данной статье мы рассмотрим среду CODESYS V3.5, используемую для программирования контроллеров различных европейских, российских и азиатских производителей, и ответим на основные вопросы, которые возникают при знакомстве с ней у инженеров, привыкших к работе в TIA Portal. Акцент будет сделан на использовании CODESYS для программирования контроллеров от российской компании ОВЕН.
Бизнес-модель и политика лицензирования
TIA Portal используется исключительно для программирования контроллеров Siemens. Эта среда разработки является платной. Среда разработки CODESYS является бесплатной. CODESYS V3.5, как упоминалось выше, является аппаратно-независимой средой – в ней программируются контроллеры множества (более 400) производителей, включая ОВЕН.
Разработчиком CODESYS является немецкая компания CODESYS Group. Это может вызвать у клиентов разумные опасения. Однако надо признать, что у разработчиков среды нет технологического влияния на производителей контроллеров – то есть для изготовления ПЛК не требуется никаких лицензионных ключей и других средств, поставки которых могут быть ограничены.
Таргет-файлы
TIA Portal сразу «знает» обо всех ПЛК Siemens, которые могут программироваться в этой среде, потому что и контроллеры, и ПО разрабатывает одна и та же компания. С CODESYS ситуация иная – контроллеры с его поддержкой выпускают множество компаний, и у разработчиков CODESYS просто нет физической возможности получать от них всё нужное ПО, связанное с контроллерами. Поэтому по умолчанию CODESYS «знает» только о виртуальном контроллере CODESYS Control Win V3 – аналоге S7-PLCSIM из TIA Portal.
Чтобы работать с контроллером конкретного производителя, пользователь должен установить в CODESYS его файл описания (так называемый таргет-файл). Обычно таргет-файлы распространяются в виде пакетов (файлах формата .package). В современных версиях CODESYS установка пакетов выполняется через утилиту CODESYS Installer.
Языки программирования
И CODESYS, и TIA Portal поддерживают все 5 языков программирования стандарта МЭК 61131-3. Однако их обозначения в этих средах отличаются:
| Обозначение в TIA Portal | Обозначение в CODESYS | Описание |
| LAD | LD | Графический язык релейно-контактных схем |
| FBD | FBD | Графический язык функциональных блоков |
| S7-GRAPH | SFC | Графический язык диаграмм состояний |
| STL | IL | Низкоуровневый текстовый язык, похожий на язык ассемблера |
| SCL | ST | Высокоуровневый текстовый язык программирования, похожий на Pascal |
Кроме того, обе среды поддерживают язык CFC, являющийся вариантом FBD со свободным расположением блоков на холсте и возможностью установки обратных связей между блоками. В TIA Portal для поддержки этого языка требуется приобретение дополнительной платной опции. В CODESYS использование CFC не требует приобретения каких-либо лицензий.
Программные объекты, часть 1 – OB и их аналоги в CODESYS
Существенным отличием TIA Portal от CODESYS является набор программных объектов. В TIA Portal «главными» программными объектами являются OB (organization block). Организационные блоки являются интерфейсом между операционной системой и программой пользователя. Каждый организационный блок имеет свое условие вызова и приоритет: например, OB1 вызывается с минимально возможным периодом (то есть как можно чаще) и самым низким приоритетом, а OB38 – с периодом 10 мс и приоритетом 15. В OB размещается код программы пользователя, который может включать в себя вызов функциональных блоков и функций.
В CODESYS вместо OB используется связка из задачи и одной или нескольких привязанных к ней программ. Задача определяет условие вызова программы: например, непрерывная (freewheeling) задача CODESYS соответствует OB1 в TIA Portal, а циклические задачи – OB30…38. В шаблоне проектов для контроллеров ОВЕН присутствует задача MainTask с периодом вызова 10 мс и наивысшим приоритетом – она представляет собой аналог OB38.
Настройка задач производится в компоненте Конфигурация задач. В некоторых ситуациях новые задачи создаются в проекте автоматически, например, при добавлении определенных компонентов. На практике у пользователя редко возникает реальная необходимость создавать задачи вручную – обычно достаточно использовать те, которые были созданы автоматически. Напоследок отметим, что в CODESYS реализована вытесняющая многозадачность. Если вам интересно подробнее ознакомиться с этой темой, рекомендуем изучить статью Использование задач в CODESYS V3.
Привязанные к задачам программы являются аналогом «тела» OB в TIA Portal – в них размещается код проекта, включающий в себя вызовы функциональных блоков и функций.
У пользователей TIA Portal часто возникает вопрос, что является в CODESYS аналогом OB100 – организационного блока, который однократно вызывается при старте проекта. Подобного встроенного функционала в CODESYS нет, но в нем достаточно просто отследить момент запуска программы в пользовательском коде:
VAR
xInit: BOOL;
END_VAR
// код программы
IF NOT(xInit) THEN
// размещенный здесь код
// будет однократно выполнен
// в первом цикле вызова программы
// инвертируем значение флага
// чтобы предотвратить повторный вызов
xInit := TRUE;
END_IF
Программные объекты, часть 2 – DB, FB, FC и их аналоги в CODESYS
DB (DataBlock) – это объект TIA Portal, в котором сохраняются пользовательские данные. DB представляет собой набор переменных, для хранения которых выделена отдельная область памяти. DB подразделяются на:
- глобальные – их данные доступны в любом фрагменте программы;
- экземплярные – их данные используются для хранения значений функциональных блоков (FB).
Аналогом глобального DB в CODESYS является структура, объявленная в списке глобальных переменных проекта.
А вот экземплярных DB как таковых в CODESYS нет – вместо этого одновременно с FB создается его структура данных, включающая в себя входы, выходы, локальные переменные, константы и так далее. При объявлении экземпляра ФБ автоматически выделяется память под хранение данных этого экземпляра.
Как и в TIA Portal, функциональные блоки в CODESYS могут быть «мультиэкземплярными» – то есть внутри одного FB может быть объявлен и использоваться другой блок (и его данные будут сохраняться между вызовами). Никаких дополнительных действий для этого не требуется.
Других существенных отличий между работой с функциональными блоками/функциями в TIA Portal и CODESYS нет.
1 – переменные функционального блока (входы, выходы, локальные переменные)
2 – код функционального блока
3 – объявление экземпляра функционального блока в программе
4 – вызов экземпляра функционального блока в программе
Протоколы обмена c другими устройствами
Для устройств Siemens основными протоколами обмена являются Profibus (в случае использования последовательной линии связи) и Profinet (в случае использования интерфейса Ethernet). Среда CODESYS включает в себя множество промышленных протоколов (в том числе и Profibus/Profinet), но их поддержка для конкретного контроллера определяется его аппаратными возможностями и наличием в прошивке контроллера соответствующих компонентов.
Например, контроллеры ОВЕН не поддерживают протоколы Profibus и Profinet; вместо этого их основными коммуникационными протоколами являются ModbusRTU и ModbusTCP. Modbus – это открытый промышленный протокол, который поддерживается приборами автоматизации большинства мировых производителей. Кроме того, контроллеры ОВЕН поддерживают и другие протоколы, например, MQTT, SNMP, OPCUA (о нем мы расскажем в одном из следующих разделов) и специализированные протоколы для обмена с электро- и теплосчетчиками (Меркурий, Энергомера, ВКТ, Пульсар и другие).
Подробная информация о настройке обмена по протоколу Modbus в CODESYS приведена в документе CODESYSV3.5. Протокол Modbus.
Межконтроллерный обмен
В контроллерах Siemens поддержан специальный протокол S7 Communication, который позволяет организовать одноранговый обмен между контроллерами, в частности, с использованием коммуникационных блоков GET/PUT.
В CODESYS организация обмена между контроллерами осуществляется с помощью сетевых переменных (этот механизм используется для широковещательной рассылки – когда один ПЛК должен передать информацию нескольким другим) и компонента Менеджер источников данных (для передачи между ПЛК в режиме «точка-точка» небольшого объема данных – не более 100 переменных).
Подробная информация о межконтроллерном обмене в CODESYS приведена в документе CODESYS V3.5. Настройка связи между ПЛК.
Связь с верхним уровнем АСУ
Как и ПЛК Siemens контроллеры ОВЕН, программируемые в среде CODESYS, поддерживают работу по протоколу OPC UA в режиме сервера. Это позволяет быстро и с минимумом усилий настроить обмен между ПЛК и SCADA-системой. Большинство современных SCADA поддерживают работу в режиме OPCUA-клиента, но даже если ее нет, можно организовать связь с контроллером через бесплатный CODESYS OPC DA Server, входящий в дистрибутив среды. Конечно, связь с верхним уровнем можно организовать и по любому другому поддерживаемому контроллером протоколу обмена, например, по Modbus TCP.
Подробная информация о настройке обмена с верхним уровнем АСУ в CODESYS приведена в документе CODESYS V3.5. Настройка обмена с верхним уровнем.
Средства визуализации
В состав TIA Portal входит WinCC – программный пакет для создания человеко-машинного интерфейса (HMI) для панелей оператора и проектов SCADA. В CODESYS V3.5 похожим инструментом является Редактор визуализации. С точки зрения функциональности, этот редактор ближе к конфигураторам современных панелей оператора – создать с его помощью аналог SCADA не получится.
Но тем не менее, редактор включает обширный набор элементов (индикаторы, переключатели, поля ввода и вывода, слайдеры, аналоговые дисплеи, тренды, таблицы). При этом все параметры этих элементов (цвет, размер, положение на экране и так далее) могут быть изменены из кода программы в процессе ее работы. Кроме того, доступна программная обработка поведения визуализации – переключение экранов, открытие/закрытие диалоговых окон и так далее. Имеется встроенный функционал для хранения и отображения тревог и работы с рецептами.
В случае использования панельных контроллеров созданная в CODESYS визуализация отображается непосредственно на их экран. Для «обычных» ПЛК, у которых экрана нет, присутствует возможность работы с web-визуализацией. Для этого достаточно открыть на клиенте визуализации (ПК, планшете и так далее) веб-браузер и ввести в нем IP-адрес контроллера и порт web-сервера визуализации (по умолчанию – 8080).
Web-сервер визуализации поддерживает одновременное подключение нескольких клиентов. Явного ограничения на число клиентов нет – оно зависит только от объема доступной оперативной памяти ПЛК. Клиенты могут работать как с общей визуализацией, так и с индивидуальными экранами.
Визуализация панельного ПЛК (так называемая таргет-визуализация) и web-визуализация могут предоставлять один и тот же набор экранов: то есть не требуется создавать web-визуализацию отдельно; можно воспользоваться экранами, которые будут отображаться на дисплее контроллера.
Подробная информация о визуализации CODESYS приведена в документе CODESYS V3.5. Визуализация.
Средства отладки
Важной характеристикой среды программирования ПЛК являются доступные в ней средства отладки. В этом аспекте CODESYS поддерживает сходный с TIA Portal набор инструментов:
- отображение текущих значений переменных с возможностью их однократной записи и «форсирования» (watchtable);
- возможность отображения значений в аналоговом виде за заданный интервал времени (трассировка);
- точки остановок;
- возможность пошагового выполнения программных объектов проекта;
- поиск фрагментов проекта, в которых используется конкретная переменная (crossreferences).
Еще одним важным требованием к современной среде разработки является возможность проверки работы проекта без реального контроллера – в режиме симуляции на ПК разработчика. В TIA Portal для этого используется инструмент S7-PLCSIM. В CODESYS его аналогом является виртуальный контроллер CODESYS Control Win V3. Виртуальный контроллер позволяет проверять не только работу алгоритмов проекта, но и web-визуализацию, обмен с другими устройствами, архивирование и так далее. Не получится проверить лишь два параметра:
- специфичный для контроллера функционал (например, для контроллеров ОВЕН таким функционалом являются драйвер входов-выходов и компонент связи с облачным сервисом OwenCloud);
- некоторые системные библиотеки, разработанные производителями контроллеров специально для их ПЛК (например, для ОВЕН одной из таких библиотек является библиотека для работы со сканерами штрих-кодов).
Выгрузка проектов и «горячее обновление кода»
Достаточно часто встречаются ситуации, в которых в проект контроллера нужно внести какие-то изменения, но файл проекта при этом отсутствует или утерян. TIA Portal позволяет выгрузить проект из самого контроллера (процедура выгрузки может потребовать ввода пароля, если он был установлен разработчиком проекта).
В CODESYS такая возможность тоже есть, но загрузка исходников проекта в контроллер происходит не автоматически, а требует отдельной операции (Онлайн – Загрузка исходного кода). Если эта операция не была выполнена, то выгрузить из контроллера исходники проекта не получится. Для выгрузки используется команда Файл – Выгрузка исходного кода. Как и в TIA Portal файл проекта может быть защищен паролем.
TIA Portal позволяет загружать в контроллер только изменившиеся с момента последней загрузки фрагменты проекта без его остановки. Для этого используется режим загрузки «download only changes». В CODESYS присутствует аналогичный режим – «online-change» – но на практике его использование сопряжено с существенными рисками. В некоторых случаях в этом режиме при загрузке новых фрагментов проекта может быть некорректно произведен перерасчет адресов переменных, что приведет к нестабильной работе приложения. Поэтому настоятельно не рекомендуем использовать этот режим – вместо этого всегда выполняйте полную загрузку проекта.
Документация и обучающие материалы
Подробная информация о среде CODESYS (описание меню, настроек, редакторов кода и так далее) приведена в онлайн-справке CODESYS. На сайте ОВЕН в разделе CODESYS V3 доступно множество документов, примеров и видеоуроков, упрощающих изучение среды.
Хорошей точкой входа для знакомства с CODESYS является бесплатный онлайн-курс на платформе Stepik. В рамках курса рассматриваются интерфейс CODESYS, основы программирования на языке ST, а также описывается пошаговое создание пользовательского проекта, включающего в себя web-визуализацию, обработку тревог, связь с модулями ввода-вывода и архивацию данных. Повторить материал курса можно на виртуальном контроллере CODESYS.
Пройти очное обучение по CODESYS можно в учебном центре ОВЕН.




