Хроники импортозамещения: переход из TIA Portal в CODESYS V3.5
Компания Siemens является одним из крупнейших поставщиков оборудования на российском рынке промышленной автоматизации. Многие инженеры имеют опыт работы с контроллерами линейки Simatic, программируемыми в среде TIA Portal. Однако в настоящее время компания прекратила свою деятельность в России, что привело к необходимости поиска альтернативных решений среди российских и азиатских производителей.
В связи с этим возникает вопрос освоения новых сред разработки. В данном тексте мы рассмотрим среду 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 (организационные блоки). Эти блоки служат интерфейсом между операционной системой и пользовательской программой. У каждого организационного блока есть свои условия вызова и приоритет: например, OB1 вызывается с наименьшим возможным интервалом (наиболее часто) и самым низким приоритетом, а OB38 — с интервалом 10 миллисекунд и приоритетом 15. Код пользовательской программы размещается в OB и может содержать вызовы функциональных блоков и функций.
В отличие от TIA Portal, в CODESYS вместо OB используются комбинации задач и связанных с ними программ. Задача определяет условия вызова программы: например, непрерывная задача CODESYS соответствует OB1 в TIA Portal, а циклические задачи — OB30…38. В шаблонах проектов для контроллеров ОВЕН присутствует задача MainTask с наивысшим приоритетом и вызовом каждые 10 миллисекунд, что аналогично OB38.
Настройка задач осуществляется через компонент Конфигурация задач. В определённых случаях новые задачи могут создаваться автоматически, например, при добавлении определённых компонентов. Обычно пользователям не нужно создавать задачи вручную, так как большинство задач уже созданы автоматически. Важно отметить, что в CODESYS используется вытесняющая многозадачность. Для более подробного изучения этой темы рекомендуется ознакомиться со статьёй Использование задач в CODESYS V3.
Программы, связанные с задачами, являются аналогами «тел» OB в TIA Portal, где размещается код проекта, включая вызовы функциональных блоков и функций.
Пользователи TIA Portal часто интересуются аналогом OB100 в CODESYS — организационного блока, который вызывается только один раз при запуске проекта. В CODESYS такого встроенного функционала нет, но легко отследить момент запуска программы в пользовательском коде.
PROGRAM PLC_PRG
VAR
xInit: BOOL;
END_VAR
// код программы
IF NOT(xInit) THEN
// размещенный здесь код
// будет однократно выполнен
// в первом цикле вызова программы
// инвертируем значение флага
// чтобы предотвратить повторный вызов
xInit := TRUE;
END_IF
DB (DataBlock) — это элемент TIA Portal, предназначенный для хранения пользовательских данных. DB состоит из набора переменных, для которых выделена отдельная область памяти. DB делятся на две категории. Глобальные переменные доступны во всех частях программы, а экземплярные используются для хранения значений функциональных блоков (FB).
- глобальные переменные — их значения доступны в любом фрагменте программы;.
- экземплярные переменные — используются для хранения значений функциональных блоков (FB).
Аналогом глобального DB в CODESYS служит структура, которая определена в списке глобальных переменных проекта.
Однако в CODESYS нет отдельных экземплярных DB — вместо этого при создании экземпляра FB автоматически создаётся структура данных, содержащая входы, выходы, локальные переменные, константы и так далее. Когда вы объявляете экземпляр FB, память для хранения данных этого экземпляра выделяется автоматически.
В CODESYS функциональные блоки также могут быть «мультиэкземплярными», что означает возможность объявления и использования другого блока внутри одного функционального блока (с сохранением данных между вызовами). Для этого не нужно предпринимать дополнительные шаги.
Других существенных отличий между работой с функциональными блоками/функциями в TIA Portal и CODESYS нет.
- переменные функционального блока (входы, выходы, локальные переменные)
- код функционального блока
- объявление экземпляра функционального блока в программе
- вызов экземпляра функционального блока в программе
Промышленные протоколы обмена данными
Для устройств 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. Настройка связи между ПЛК.
Взаимодействие с верхним уровнем автоматизированной системы управления
Контроллеры ОВЕН, разработанные в среде 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 визуализация будет отображаться прямо на их экране. Если же речь идёт об «обычных» ПЛК без экрана, существует возможность работать с веб-визуализацией. Для этого нужно открыть веб-браузер на клиенте визуализации (компьютере, планшете и т. д.) и ввести IP-адрес контроллера и порт веб-сервера визуализации (по умолчанию 8080).
Веб-сервер визуализации позволяет одновременно подключать несколько клиентов. Ограничений на количество клиентов нет, оно зависит только от объёма доступной оперативной памяти ПЛК. Клиенты могут работать как с общей визуализацией, так и с отдельными экранами.
Таргет-визуализация панельного ПЛК и веб-визуализация могут предоставлять одинаковый набор экранов, поэтому нет необходимости создавать веб-визуализацию отдельно — можно просто воспользоваться экранами, которые будут отображаться на дисплее контроллера.
Подробные сведения о визуализации в CODESYS представлены в документации CODESYS V3.5. Визуализация.
Средства отладки
Важным аспектом среды программирования ПЛК являются доступные инструменты отладки. В этом отношении CODESYS предоставляет аналогичный TIA Portal набор функций:
- отображение текущих значений переменных с возможностью их однократной записи и принудительного изменения (watchtable);
- возможность отображения значений в аналоговой форме за определённый период времени (трассировка);
- точки останова;
- возможность пошагового выполнения программных объектов проекта;
- поиск частей проекта, в которых используется определённая переменная (crossreferences).
Одним из ключевых требований к современной среде разработки является возможность тестирования проекта без реального контроллера — в режиме симуляции на компьютере разработчика. В TIA Portal для этого используется инструмент S7-PLCSIM. В CODESYS его аналогом служит виртуальный контроллер CODESYS Control Win V3. Виртуальный контроллер позволяет тестировать не только алгоритмы проекта, но и веб-визуализацию, взаимодействие с другими устройствами, архивирование и так далее. Однако есть два параметра, которые невозможно проверить:
- специфический функционал контроллера (например, для контроллеров ОВЕН это драйверы входов-выходов и компоненты связи с облачным сервисом OwenCloud;
- некоторые системные библиотеки, созданные производителями контроллеров специально для их ПЛК (например, для ОВЕН одна из таких библиотек предназначена для работы со сканерами штрих-кодов).
Выгрузка проектов и «горячее обновление кода»
Часто возникают ситуации, когда необходимо внести изменения в проект контроллера, но файл проекта отсутствует или потерян. TIA Portal позволяет выгрузить проект из самого контроллера (эта процедура может потребовать ввода пароля, если он был установлен разработчиком проекта).
В CODESYS также есть такая возможность, но загрузка исходного кода в контроллер происходит не автоматически, а требует отдельной операции (онлайн-загрузка исходного кода). Если эта операция не была выполнена, то выгрузить исходный код из контроллера не получится. Для выгрузки используется команда Файл — Выгрузить исходный код. Как и в TIA Portal, файл проекта может быть защищён паролем.
TIA Portal позволяет загружать в контроллер только изменённые фрагменты проекта с момента последней загрузки без остановки проекта. Для этого используется режим загрузки «download only changes». В CODESYS есть аналогичный режим — «online-change», но на практике его использование связано с серьёзными рисками. В некоторых случаях при загрузке новых фрагментов проекта в этом режиме может произойти некорректный перерасчёт адресов переменных, что приведёт к нестабильной работе приложения. Поэтому настоятельно рекомендуется не использовать этот режим и всегда выполнять полную загрузку проекта.
