Один блок OpcUAClient соответствует одной подписке в OPC UA-сервере (Subscription в спецификации OPC UA). Кроме этого, клиент позволяет записывать данные в сервер.
Входы lip, lprt, sdr, rip, rprt, usr и psw задают настройки сетевого соединения с сервером.
Входы pbl, lfc и kac задают параметры подписки согласно спецификации OPC UA.
Входы wcon, routs определяют работу с выходами, добавленными у клиента.
При настройке блока OpcUAClient удобно использовать некоторые свойства модуля. Для этого можно использовать технологию SQL-запросов. Это позволяет изменять IP-адрес и порт в одном месте, и использовать эти значения в разных частях проекта.
Запрос IP адреса (prop_ip):
"<sql>SELECT value FROM blocks_prop WHERE indx=:module AND type="prop_ip"</sql>"
Запрос номера порта (prop_debug_port):
<sql>SELECT value FROM blocks_prop WHERE indx=:module AND type="prop_debug_port"</sql>
Запрос пользовательского свойства Пользовательское свойство 00 (prop_0):
<sql SELECT value FROM blocks_prXop WHERE indx=:module AND type="prop_0"</sql>
(обычно используется на входах rip и rprt).
Конфигурирование данных
Клиент читает и пишет данные (входы и выходы других функциональных блоков), добавленные внутрь раздела Данные.
Добавить данное в раздел можно одним из следующих способов:
Открыть на одной странице блок OpcUAClient, на другой странице блок с входом/выходом, который необходимо добавить. Выделить вход/выход и с нажатым Ctrl перетащить его на блок OpcUAClient. Отпустить, выбрать команду Добавить.
Открыть блок OpcUAClient в дереве (со страницы это проще всего сделать командой Показать в дереве), раскрыть его. Вход/выход перетащить в раздел Данные, выбрать команду Добавить.
Чтобы назначить данному адрес входа/выхода сервера, необходимо перетащить его со страницы с нажатым Ctrl на выход/вход в разделе Данные и в выпадающем меню выбрать команду Назначить источником.
Также можно перетащить вход/выход из дерева сервера на нужный выход/вход в разделе Данные.
После этого среда автоматически добавит в свойства данного из раздела свойство ID источника/приемника, равное адресу назначенного входа/выхода сервера. Первое значение свойства не участвует в адресации, второе значение свойства определяет Id адреса входа/выхода сервера, третье – ns.
При подключении OpcUAClient к стороннему OPC UA-серверу свойство ID источника/приемника требуется добавлять и задавать вручную. При этом сервер должен поддерживать идентификаторы числового типа (Numeric).
Входы и выходы блоков сервера можно назначать источниками как для входов, так и для выходов клиента из раздела Данные.
Входы, добавленные в раздел Данные, клиент регистрирует в сервере для чтения через подписку (MonitoredItem по спецификации OPC UA).
Выходы, добавленные в раздел Данные, клиент записывает при помощи сервисов записи в OPC UA-сервер. Их поведение определяется входами wcon и routs блока OpcUAClient и свойством Зона нечувствительности. Если клиент осуществляет запись в выходы блоков сервера, то соответствующие блоки сервера выключаются. Это может быть полезно, например, при отладке проекта с использованием внешней программы-модели.
Режимы работы клиента
Значение на входе enb определяет режим работы клиента OpcUAClient:
0 – соединение с сервером разорвано, обмена нет;
1 – соединение с сервером установлено, обмен работает;
2 (в резерве) – соединение с сервером установлено, обмена нет. В этом режиме клиент читает от сервера OpcUAServer только значения статусов (выходы sst и ssl), такой вариант можно использовать для выбора одного из нескольких серверов с наибольшим ssl.
Режим 2 можно использовать для подключения к резервированным серверам.
Свойства входов/выходов данных, влияющих на обмен с сервером
Параметры объекта данных подписки задается при помощи следующих свойств входов из раздела Данные.
Свойство Зона нечувствительности (prop_deadzone) позволяет задать абсолютную зону нечувствительности. Если значение в сервере изменилось больше, чем величина зоны нечувствительности, то оно передается клиенту.
Если задать Зона нечувствительности = 0 (или при отсутствии свойства), значение будет передаваться при изменении.
Свойство Период опроса (мс) (prop_sinter) задает период опроса (samplingInterval), если данное необходимо собирать в таймерном потоке.
Значение 0 (или отсутствие свойства) означает опрос каждый цикл работы подписки в фоне.
Значения >0 должны быть кратны таймерному промежутку. Если значение не кратно, то оно принудительно «округляется» вниз. Тогда значение анализируется в каждом таймерном цикле и добавляется в очередь, если проходит проверку на зону нечувствительности. Для такой работы в проекте обязательно должен быть добавлен блок OpcUAServerTimer.
Свойство Размер очереди (prop_qsize) задает размер очереди (queueSize) данного в подписке. Применяется для сбора данных в таймере (см. свойство Период опроса).
Свойство Интервал принудительной отправки (мс) (prop_reftime) позволяет организовать принудительную отправку данного в подписке независимо от изменения значения и настроек зоны нечувствительности. Заданный интервал отсчитывается от момента последней отправки значения. Это нестандартная функция, поэтому работает, только если в качестве сервера выступает блок OpcUAServer.
Свойство ID источника/приемника (prop_srcid) - идентификатор объекта данных, который необходимо читать из сервера и записывать во вход раздела Данные. Это свойство добавляется автоматически при выполнении команды Назначить источником. Если свойство не добавлено, то клиент читает из сервера значение такого же входа (данный случай используется для синхронизации данных между дублированными модулями, подробнее см. документацию Синхронизация проектов и реализация резервирования. Библиотека paSync).
Выходы, добавленные в раздел Данные, клиент записывает в сервер. Периодичность записи зависит от значения свойства Зона нечувствительности у выхода:
Свойство отсутствует – запись производится каждый цикл работы клиента;
0 – запись производится при любом изменении значения;
>0 – запись производится, если значение изменилось больше, чем размер зоны нечувствительности.