Обозначение


Описание

Блок OpcUA клиент обеспечивает реализацию одной подписки к серверу по протоколу OpcUA. Входы и выходы, которыми необходимо обмениваться с сервером, должны быть добавлены в раздел 'Данные' внутри этого блока.

Назначение входов и выходов

ВходыТипОписание
enbu8разрешение на работу блока: 0 - выключен, 1 - включен, 2 - в резерве
waitu32таймаут ожидания ответа от сервера, мс
lipstrлокальный IP адрес
lprti16локальный порт
sdrstrсетевой стек (только для QNX):"/", "/sock2" и т.д.
ripstrIP адрес сервера
rprti16порт сервера
usrstrлогин для доступа к серверу
pswstrпароль для доступа к серверу
pbldblинтервал работы подписки в мс (PublishingInterval)
lfcu32время жизни подписки в циклах (LifetimeCount)
kacu32максимальное значение keep-alive счетчика в циклах (MaxKeepAliveCount)
wconbотправлять значения выходов при установке соединения
routsbчитать выходы
cfgu32дополнительная конфигурация работы
ВыходыТипОписание
stsi32статус работы: 0 - нет обмена, 1 - обмен, 2 - в резерве, >2 - переходное состояние, <0 - системная ошибка
ssti32статус сервера в соответствии со спецификацией OpcUA (Part5 12.6)
sslu8дополнительный статус сервера, ServiceLevel в соответствии со спецификацией OpcUA (Part5 6.6.2.4.2)
sidu32ID подписки
ssnu32номер уведомления подписки
rcntu32количество принятых пакетов
wcntu32количество отправленных пакетов
sssu32статус подписки


Статус работы

Выход sts может принимать одно из следующих значений:
Выход sss отображает статус подписки, в котором каждый бит имеет определенное значение:
номер битазначение 1
ошибки
0подписка не работает
1есть данные, не найденные в сервере
информация
16подключение к серверу paOpcUA

Настройка обмена с сервером

Один блок OpcUAClient соответствует одной подписке в сервере OPCUA (Subscription в спецификации OPCUA). Кроме этого клиент позволяет записывает данные в сервер. Входы lip, lprt, sdr, rip, rprt, usr и psw задают настройки сетевого соединения с сервером. Входы pbl, lfc и kac задают параметры подписки согласно спецификации OPCUA. При настройке блока удобно использовать некоторые свойства модуля. Для этого можно использовать технологию SQL запросов. Примеры SQL запросов:

Режимы работы клиента

Значение на входе enb определяет режим работы клиента:

Конфигурирование данных

Клиент читает и пишет данные (входы и выходы других функциональных блоков), добавленные внутрь раздела "Данные". Добавить данное можно одним из следующих способов: Входы, добавленные в раздел "Данные", клиент регистрирует в сервере для чтения через подписку (MonitoredItem по спецификации OPCUA). Параметры данного подписки задается при помощи свойств входа: Зона нечувствительности (prop_deadzone) - задает абсолютную зону нечувствительности. Если значение в сервере изменилось больше, чем величина prop_deadzone, то оно передается клиенту. Если такого свойства нет, то данное передается при любом изменении.
Период опроса (мс) (prop_sinter) - задает период опроса (samplingInterval), если данное необходимо собирать в таймерном потоке. Значение 0 (или отсутсвие свойства) означает опрос каждый цикл работы подписки в фоне. Значения >0 должны быть кратны таймерному промежутку (если значение не кратно, то оно принудительно "округляется" вниз), в этом случае значение анализируется в каждом таймерном цикле и добавляется в очередь, если проходит проверку на зону нечувствительности. Для такой работы в проекте обязательно должен быть добавлен блок OpcUAServerTimer
Размер очереди (prop_qsize) - задает размер очереди (queueSize) данного в подписке. Применяется для сбора данных в таймере (см. свойство "Период опроса").
Интервал принудительной отправки (мс) (prop_reftime) - позволяет организовать принудительную отправку данного в подписке независимо от изменения значения и настроек зоны нечувствительности. Заданный интервал отсчитывается от момента последней отправки значения. Это нестандартная функция, поэтому работает только если в качестве сервера выступает блок OpcUAServer.
ID источника/приемника (prop_srcid) - числовой идентификатор данного из сервера (NodeId DataEncoding 0x02 Numeric).
Сервером является другой модуль проекта Полигон:
Это свойство добавляется автоматически при выполнении команды "Назначить источником", для этого необходимо: выделить вход или выход другого модуля, который необходимо читать, и перетащить его в настраиваемый вход. Если свойство не добавлено, то клиент читает из сервера значение такого же входа, данный случай используется в частности для синхронизации данных между дублированными модулями (подробнее см. библиотеку paSync).
Сторонний сервер:
Значение свойства задается строкой в формате 0:id:ns. Например, значение свойства 0:34:2 задает идентификатор ns=2;i=34
Выходы, добавленные в раздел "Данные" и имеющие свойство ID источника/приемника, клиент записывает в сервер. Периодичность записи зависит от значения свойства Зона нечувствительности у выхода: Для выходов применимо свойство ID источника/приемника также как для входов. В данном случае это идентификатор данного (входа) другого модуля, в которое необходимо записывать значение.
При записи данного клиент также пишет качество (равное 0) и метку времени ServerTimestamp.
Если свойство ID источника/приемника для выхода не задано, то клиент читает из сервера значение такого же выхода, данный случай можно использовать в частности для синхронизации данных между дублированными модулями (подробнее см. библиотеку paSync).
ВАЖНО: для того чтобы свойства входов/выходов работали как описано выше, необходимо установить свойство модуля "Трансляция: включить свойства входов/выходов" = "только из разделов".

Дополнительная концигурация обмена

Нестандартные возможности клиента конфигурируются младшими битами входного регистра cfg:
бит 0 - разрывать связь, если данное подписки не найдено в сервере
бит 1 - при routs=1 читать только те выходы, у которых есть свойство Уставка
бит 2 - при записи отправлять также SourceTimestamp (по значению равной ServerTimestamp)
Настройки безопасности задаются старшими битами входа cfg:
бит 8 - устанавливать соединение в режиме SIGN (схема Basic256Sha256)
бит 9 - включить шифрование (режим SIGNANDENCRYPT, схема Basic256Sha256)
Для работы Basic256Sha256 необходимы файлы сертификата и закрытого ключа клиента, файл сертификата удаленного сервера. Файлы должны находится на диске контроллера в той же папке что и исполняемый модуль, и называться: