Устройство для настройки сервиса протокола OPC UA CmpIoDrvOPCUAConfig
Для «АБАК ПЛК» добавлена возможность настройки сервиса протокола OPC UA в виде программного объекта (устройства) в среде разработки (Abak.IDE, CODESYS) – CmpIoDrvOPCUAConfig. Данный функционал доступен начиная со сборки 5.8.0 и версии таргета 1.0.6.1. Для сборок версий 5.5.1 – 5.7.X настройка OPC UA сервера ПЛК выполняется через конфигурационный файл формата «.json».
Для добавление устройства в проект прикладного ПО необходимо:
-
В дереве проекта щёлкнуть ПКМ по объекту «Device» и в контекстном меню выбрать пункт «Добавить устройство».

Контекстное меню
2. В открывшемся окне выбрать пункт «Устройство для конфигурирования ABAK ПЛК OPC UA сервера» и нажать кнопку «Добавить устройство».

Окно добавления устройств
Ниже представлено графическое отображение устройства в проекте.

Графическое отображение устройства в проекте
Устройство имеет следующие настройки и параметры.
1. Группа «Настройки безопасности»:
-
SECURITY_POLICY – политика безопасности для коммуникации OPC UA. Возможные значения:
- «NONE»,
- «BASIC128_RSA15»,
- «BASIC256»,
- «BASIC256_SHA256»,
- «AES128_SHA256_RSA_OAEP».
-
USERNAME (STRING) – имя пользователя для подключения.
-
PASSWORD (STRING) – пароль для подключения.Внимание! Если указаны оба параметра «USERNAME» и «PASSWORD» (оба не пустые), то доступ будет по логину/паролю. Если хотя бы один параметров «USERNAME» или «PASSWORD» пустой, то используется анонимное подключение.
1.1. Подгруппа «Расширенные настройки безопасности»:
-
CREATE_ALSO_NON_SECURITY_ENDPOINT – создание конечной точки для подключения без политики безопасности (значение «SECURITY_POLICY» не равно «NONE»), но с тем же способом аутентификации.
Пример:
Если «SECURITY_POLICY» = «BASIC256_SHA256», «USERNAME» = «admin», PASSWORD = «1», и «CREATE_ALSO_NON_SECURITY_ENDPOINT» = «TRUE», то будет два способа подключения:
-
Зашифрованное соединение + аутентификация по логину/паролю.
-
Незашифрованное соединение + аутентификация по логину/паролю.
Если «SECURITY_POLICY» = «NONE» и при этом «CREATE_ALSO_NON_SECURITY_ENDPOINT» = «TRUE», то зашифрованное соединение не создаётся (остаётся только один вариант подключения – незашифрованное соединение, без шифрования).
-
CERTIFICATE_VALIDITY_DAYS – срок действия сертификата в днях. По умолчанию 3650 (10 лет). Допустимый диапазон: от 1 до 36500.
2. Группа «Настройки сервера»:
-
PORT – номер порта OPC UA сервера. Допустимый диапазон: от 1024 до 49151.
-
MAX_SESSIONS – максимальное количество одновременных сессий. Значение выбирается исходя из необходимого числа клиентских подключений.Важно! Сессии требуют значительного объёма памяти. Рекомендуется не задавать значение данного параметра выше необходимого.
-
MAX_MONITORED_ITEMS – максимальное количество отслеживаемых элементов, которое сервер поддерживает суммарно по всем сессиям.Важно! Отслеживаемые элементы (monitored items) требуют памяти и ресурсов CPU. Рекомендуется не задавать значение данного параметра выше необходимого.
-
INTERVAL_MS – общий параметр для установки периода опроса/передачи и периода циклической обработки задач сервером (в миллисекундах).
Параметр объединяет в себе три параметра:
- CYCLIC_RATE_MS;
- MIN_SAMPLING_INTERVAL_MS;
- MIN_PUBLISHING_INTERVAL_MS.
Если значения данных параметров равны значениям по умолчанию, то они работают по обобщенному значению «INTERVAL_MS».
Пример:
Если « INTERVAL_MS» = 1000, то:
«CYCLIC_RATE_MS» = «MIN_SAMPLING_INTERVAL_MS» = «MIN_PUBLISHING_INTERVAL_MS» = 1000.
Параметр добавлен для более удобной и наглядной настройки. Для более детальной конфигурации можно задавать каждый из трёх параметров отдельно.
2.1. Подгруппа «Расширенные настройки сервера»:
-
CYCLIC_RATE_MS – циклическая частота обработки данных сервером (в миллисекундах).
Рекомендуется, чтобы все интервалы выборки sampling были кратны «CYCLIC_RATE_MS».
Пример:
Если «CYCLIC_RATE_MS» = 200, то значения «MIN_SAMPLING_INTERVAL_MS» желательно выбрать кратными (например, 100/200/400).
Если выбрать «MIN_SAMPLING_INTERVAL_MS» = 400 и «CYCLIC_RATE_MS» = 200, тто каждый второй цикл будет «холостым» (без новой выборки), что менее эффективно.
Важно! Чем меньше значение «CYCLIC_RATE_MS», тем выше нагрузка на CPU. Рекомендуется не запускать сервер быстрее, чем требуется.
|
-
MAX_DATA_QUEUE – максимальное количество выборок изменений данных, которые могут быть поставлены в очередь для каждого отслеживаемого тега. Для каждого тега очередь своя. Если клиенту требуется только последнее значение, можно установить размер очереди равным 1.
Если клиенту нельзя терять значения или `sampling_interval` меньше, чем `publishing_interval`, размер очереди должен быть больше 1 (конкретное значение зависит от приложения).
Важно! Очереди требуют значительного объёма памяти. Рекомендуется не увеличивать значение без необходимости.
|
Пример:
Если на сервере «MAX_DATA_QUEUE» = 10, то на стороне клиента нельзя установить очередь для тега больше 10.
Если на стороне клиента заданы: «data_queue» = 10, «publishing_interval» = 5000, «sampling_interval» = 1000, то сервер будет отправлять пакет, содержащий пять накопленных значений.
-
MIN_PUBLISHING_INTERVAL_MS – минимальный интервал публикации данных клиентам (в миллисекундах).
«publishing_interval» – интервал, с которым сервер проверяет наличие уведомлений и отправляет их клиенту (частота публикаций очереди изменений).
«MIN_PUBLISHING_INTERVAL_MS» задаёт нижнюю границу для интервала публикации: клиент не сможет установить значение меньше заданного.
Пример:
Если «MIN_PUBLISHING_INTERVAL_MS» = 200, то клиент не может установить интервал публикации менее 200 (допустимы только значения больше или равные 200).
Важно! Значение автоматически округляется в большую сторону до числа, кратного 50.
|
-
MIN_SAMPLING_INTERVAL_MS – минимальный интервал выборки отслеживаемых элементов (в миллисекундах).
«sampling_interval» – частота выборки каждого отслеживаемого элемента.
«MIN_SAMPLING_INTERVAL_MS» задаёт нижнюю границу для интервала выборки: клиент не может установить значение меньше заданного.
-
MIN_REVISED_SESSION_TIMEOUT_MS – минимальное время жизни сессии после разрыва соединения (в миллисекундах). По умолчанию: 30 000 мс.
Параметр задаёт допустимую нижнюю границу таймаута сессии со стороны клиента: значения ниже указанного предела выставить нельзя.
Назначение: сервер продолжает сбор данных во время временного сбоя сети, ожидая восстановления сессии клиентом. После восстановления соединения клиент сможет восстановить сеанс и получить данные, накопленные во время сбоя, вместо создания новой сессии и потенциальной потери данных.
Важно! Сессии являются ограниченным ресурсом. Значения таймаутов по умолчанию должны быть выбраны исходя из разумного компромисса.
|
-
MAX_REVISED_SESSION_TIMEOUT_MS – максимальное время жизни сессии после разрыва соединения (в миллисекундах). По умолчанию: 7 200 000 мс.
Параметр задаёт допустимую верхнюю границу таймаута сессии со стороны клиента: значения выше указанного предела выставить нельзя.
Назначение: аналогично предыдущему параметру (обеспечение сохранения данных при временных сбоях связи).
Важно! Сессии являются ограниченным ресурсом. Значения таймаутов по умолчанию должны быть выбраны исходя из разумного компромисса.
|
3. Группа «Настройки адресного пространства»:
-
ADDRESS_SPACE_STRUCTURE (перечисляемый тип) – Сструктура адресного пространства: древовидная или плоская.
Возможные значения:
- TREE (древовидная),
- FLAT (плоская).
Поведение:
-
При значении «TREE» дресное пространство принимает следующий вид (при большом количестве параметров такая структура обычно более информативна):
Application (Папка)
└── Application.POU (Папка)
├── Application.POU.my_struct1 (Папка)
│ └── Application.POU.my_struct1.value1
└── Application.POU.my_struct2 (Папка)
└── Application.POU.my_struct2.value1
-
При значении «FLAT» адресное пространство отображается в следующем виде:
Application.POU.my_struct1.value1
Application.POU.my_struct1.value2
-
REPRESENT_ONE_DIMENTIONAL_ARRAY_AS_SINGLE_TAG – представление одномерного массива из простых типов в виде одного тега.
Параметр меняет представление одномерного массива в адресном пространстве.
При «TRUE» массив создаётся в виде единого тега в адресном пространстве.
При «FALSE» под каждый элемент массива создаётся отдельный тег.
-
REPRESENT_STRUCTURE_AS_EXTENSION_OBJECT – представление структуры в адресном пространстве как «extension object».
Параметр меняет представление структур в адресном пространстве.
При «TRUE» структуры создаются в виде «ExtensionObject».
При «FALSE» под каждый элемент структуры создаётся отдельный тег.
4. Группа «Настройки пределов/ограничений»:
-
LOG_LEVEL – уровень логирования компонента.
Градация уровней логирования идёт сверху вниз: чем «подробнее» уровень, тем больше сообщений попадает в лог.
Пример: если установлен уровень DEBUG, то в лог будут попадать сообщения уровней: DEBUG, INFO, WARNING, ERROR, CRITICAL.
Возможные значения:
- TRACE;
- DEBUG;
- INFO;
- WARNING;
- ERROR;
- CRITICAL;
- OFF.
Важно! Оптимальным уровнем логирования обычно является INFO – он даёт минимум сообщений, при этом фиксирует предупреждения и ошибки.
|
-
SYSTEM_TAGS_MIN_SAMPLING_INTERVAL_MS – минимальный интервал опроса для всех системных тегов, хранящихся в базе данных контроллера. Клиент не может установить значение меньше указанного.
Ограничения значений параметров
|
Параметр
|
Допустимый диапазон
|
|
PORT
|
1024 – 49151
|
|
CERTIFICATE_VALIDITY_DAYS
|
1 – 36500
|
|
MAX_DATA_QUEUE
|
1 – 100
|
|
INTERVAL_MS
|
50 – 10000
|
|
CYCLIC_RATE_MS
|
50 – 10000
|
|
MIN_PUBLISHING_INTERVAL_MS
|
50 – 10000
|
|
MIN_SAMPLING_INTERVAL_MS
|
50 – 10000
|
|
SYSTEM_TAGS_MIN_SAMPLING_INTERVAL_MS
|
50 – 10000
|
Округление значений параметров до 50 в большую сторону применяется для:
- INTERVAL_MS;
- CYCLIC_RATE_MS;
- MIN_PUBLISHING_INTERVAL_MS;
- MIN_SAMPLING_INTERVAL_MS;
- MIN_REVISED_SESSION_TIMEOUT_MS;
- MAX_REVISED_SESSION_TIMEOUT_MS;
- SYSTEM_TAGS_MIN_SAMPLING_INTERVAL_MS.