АБАК ПЛК
Руководство по настройке и программированию
×

Устройство для настройки сервиса протокола 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.
Онлайн помощь создана в Dr.Explain