Большая часть новых контроллеров ОВЕН (СПК1хх, ПЛК210, ПЛК200) программируется в среде разработки CODESYS V3.5. В статье рассмотрены новые возможности CODESYS версии V3.5 SP16 Patch 3 по сравнению с версией V3.5 SP14 Patch 3, ранее используемой в контроллерах ОВЕН.
Разработчики CODESYS регулярно выпускают сервис-паки (SP) – обновления для среды программирования. Сервис-паки расширяют функционал CODESYS и исправляют ошибки. Для поддержки нового функционала в пользовательских проектах компания ОВЕН периодически выпускает прошивки с обновлениями системы исполнения CODESYS. Актуальные версии прошивок включают систему исполнения CODESYS версии V3.5 SP16 Patch 3.
Автоматический контроль порядка выполнения в языке CFC
Язык функциональных блоков CFC является одним из наиболее часто используемых языков программирования в CODESYS. В этом языке каждый блок имеет порядковый номер, который определяет порядок его вызова в программе. В процессе разработки проекта часто приходится менять блоки местами, но при этом их номера остаются неизменными, из-за чего логика работы программы может нарушиться. Чтобы избежать подобных нарушений, пользователям приходилось после внесения изменений выполнять команду Упорядочить в соответствии с потоком данных. В новых версиях CODESYS появилась возможность включить автоматический контроль порядка выполнения блоков, что избавляет разработчика от необходимости обращать на это внимание и задавать нумерацию вручную. Информация о порядке выполнения и других особенностях языка CFC приведена в статье Язык непрерывных функциональных схем CFC. Часть 1 [АиП, 2020, №2, стр. 33-35].
Поддержка типов LDATE/LDT/LTOD
В новых версиях CODESYS появилась поддержка 64-битных типов LDATE (дата), LDT (дата и время) и LTOD (время суток). В отличие от стандартных типов DATE/DT/TOD они имеют расширенный диапазон и поддерживают точность до наносекунд (рис. 1). Для большинства контроллеров такая точность оказывается избыточной, но, например, сохранять метку времени с точностью до миллисекунд – достаточно распространенная задача. Теперь она решается с помощью типа LDT.
Улучшения в библиотеках
- В дистрибутив CODESYS добавлена библиотека Net Base Services. Она является продвинутой версией библиотеки CAA Net Base Services и используется для реализации протоколов обмена поверх TCP/UDP с поддержкой шифрования (TLS).
- В библиотеку CmpCrypto добавлены функции для асинхронного шифрования.
- В библиотеку Standard64 добавлены счетчики импульсов LCTU/LCTD/LCTUD с расширенным диапазоном счета – с их помощью можно подсчитать до (264 – 1) импульсов.
Операторы __POUNAME и __POSITION
Новые системные операторы __POUNAME и __POSITION позволяют получить имя POU (включая все пространства имен) и номер строки, на которой вызывается оператор (рис. 2). Это может быть полезным при логировании ошибок программы.
Опциональные аргументы для функций и методов
Теперь если входы функций и методов имеют начальные значения – то их можно не указывать при вызове (ранее требовалось явное присвоение всех переменных входам функции/метода при вызове).
Оптимизации
В процессе разработки новой версии CODESYS были произведены существенные оптимизации по использованию ресурсов ПК:
- уменьшено время, затрачиваемое на установку пакетов (package);
- уменьшено время, затрачиваемое на открытие проекта;
- среда программирования использует на ~25 % меньше оперативной памяти ПК.
Поддержка технологии Overlay в визуализации
В CODESYS V3.5 SP14 появилась preview-поддержка технологии Overlay, а начиная с версии V3.5 SP16 – полнофункциональная. Для ее активации следует установить галочку Поддержка клиентских анимаций и наложение исходных элементов в Менеджере визуализации.
Технология поддерживается только для web-визуализации. Если в проекте есть таргет-визуализация, то галочка не будет отображаться. Поддержка технологии Overlay для таргет-визуализации ожидается в следующих версиях CODESYS. Технология меняет логику отрисовки визуализации, представляя каждый элемент как отдельный объект (рис. 3). Это, например, позволяет организовать наложение элементов и переключение их между слоями. После активации галочки у каждого элемента визуализации появляются параметры Длительность анимации и Переместить на передний план. Первый параметр имеет тип INT и определяет длительность анимации в миллисекундах.
Анимация автоматически включается в случаях:
- перемещения элемента (c помощью параметров вкладки Абсолютное перемещение);
- открытия/закрытия диалога с помощью элемента;
- изменения видимости элемента;
- переключения экрана в фрейме (если параметр задан для фрейма).
Если раньше при изменении параметров вкладки Абсолютное перемещение элемент перерисовывался в новых координатах, то теперь он будет плавно перемещаться от старых координат к новым за заданное пользователем время. Этот же эффект «плавности» будет появляться при открытии/закрытии диалогов и т. д.
Надо отметить, что обработка анимации происходит на стороне клиента и никак не связана с временем цикла задачи VISU_TASK.
Параметр Переместить на передний план имеет тип BOOL. Если он принимает значение TRUE, то элемент перерисовывается в самом верхнем слое экрана (это заметно для элементов, наложенных друг на друга). Кроме того, после активации галочки вкладка Абсолютное перемещение появляется у всех элементов визуализации – в том числе у графиков, таблиц и т. д. Также Overlay-технология позволяет отображать в визуализации анимированные изображения в формате .gif и .svg.
Возможность сортировки сообщений в таблице и баннере тревог
С помощью новых параметров таблицы и баннера тревог можно сортировать сообщения по времени их появления или по значению первой latch-переменной.
Улучшения в компонентах Modbus
В новых версиях CODESYS в компонентах Modbus появилась поддержка новых функций, которые упрощают настройку обмена с другими устройствами.
В компоненте Modbus Slave Device (Serial/TCP) появилась возможность изменять значения holding-регистров из программы ПЛК. Для этого в настройках компонента необходимо установить галочку Запись. Это может потребоваться в тех случаях, когда необходимо изменять одни и те же данные как со стороны master-устройства, так и из проекта CODESYS (например, из web-визуализации в ручном режиме работы системы).
В компоненте Modbus Slave Device (Serial/TCP) можно активировать модель памяти с независимыми областями для бит (coils и discrete inputs) и регистров. Для этого в настройках компонента необходимо установить галочку Дискретные битовые области. Эта модель в памяти описана в спецификации Modbus, и ее применение, например, может быть полезно при замене контроллера с подобными настройками в рамках модернизации или ремонта системы управления.
В компоненте Modbus Slave Device (TCP) появилась поддержка шлюза Modbus TCP/Modbus RTU (для настройки шлюза используется вкладка Serial Gateway). В режиме шлюза запросы, присланные контроллеру Modbus TCP Master-устройством, будут преобразованы в запросы Modbus RTU и отправлены в выбранный на вкладке COM-порт, который не должен использоваться в других компонентах проекта. Ответы от Modbus RTU Slave-устройств будут преобразованы в Modbus TCP и отправлены обратно master-устройству.
Для всех компонентов существенно расширены параметры диагностики, отображаемые на вкладке Состояние.
Для компонентов Modbus TCP Slave и Modbus Slave COM Port доступны следующие диагностические параметры:
- состояние соединения (для Modbus TCP Slave);
- счетчик запросов, отправленных slave-устройству;
- счетчик ответов с кодом ошибки Modbus, полученных от slave-устройства;
- информация о последней ошибке – метка времени, индекс канала запроса (если ошибка не связана с каналом, то отображается «1») и код ошибки (например, ILLEGAL FUNCTION).
В компоненте Modbus TCP Slave Device доступна диагностическая информация (рис. 4): - число подключенных клиентов;
- статус TCP-порта;
- счетчик запросов, полученных компонентом;
- счетчик ответов с кодом ошибки Modbus, которые компонент отправил master-устройству;
- статус, счетчик запросов и счетчик ошибок для Serial Gateway (если ПЛК работает в режиме шлюза).
Обновляемая документация для работы со средой доступна на сайте owen.ru. При возникновении вопросов по программированию контроллеров ОВЕН можно обращаться в техническую поддержку: support@owen.ru.