Подписаться на несколько узлов OPC-UA одновременно - PullRequest
0 голосов
/ 31 января 2019

Мне нужно подписаться на ~ 1000 узлов, которые были созданы в иерархии, например:

ns = 2; s = 0: Manufacturing.E01.Ambient.Te Temperature

ns = 2; s = 0: Manufacturing.E01.Ambient.WindDir

ns = 2; s = 0: Manufacturing.E01.Commands.AckAllErrors

ns = 2; s = 0: Manufacturing.E03.Ambient.Tength

ns = 2; s = 0: Manufacturing.E03.Ambient.WindDir

ns = 2; s = 0: Manufacturing.E03.Ambient.WindSpeed

Я отношусь к каждому обновлению одинаково, поэтому вызов функции subscription.monitor() для каждого из них и создание новой функции обратного вызова не кажется мне оптимальным способом.

Можно ли подписаться на несколько узлов с шаблоном, например, на все узлы, которые подпадают под:

ns = 2; s = 0: Manufacturing.E01.

1 Ответ

0 голосов
/ 01 февраля 2019

Нет, это не так - в OPC UA нет способа подписаться на «папку».

Самый простой способ в вашем случае - сначала просмотреть папки с помощью службы OPC UA Просмотр .

Сервер OPC UA вернет вам все ссылки с запрошенного начального узла (ссылки родительских детей OPC UA могут быть Организованные , HasComponent , Has Свойство , ...).

Затем вы можете использовать OPC UA CreateSubscription / CreateMonitoredItems Службы для подписки на узлы.

...