open62541 просматривает узлы используя его методы - PullRequest
0 голосов
/ 10 октября 2019

Я хочу просмотреть определенный узел на моем OPC UA-сервере и использовать его метод. Я использую стек open62541 и хочу использовать самодельный клиент. Мой клиент подключается к серверу, и затем я использую данный пример для просмотра некоторых объектов . Он показывает мне первый слой узлов после корневой папки - Как я могу найти определенный узел? Или я должен перейти к этой точке? Есть ли файл примера в проекте open62541, который я не вижу, который откроет мне глаза?

Я также нахожу метод "Service_TranslateBrowsePathsToNodeIds", но я не совсем уверен, как правильно его использовать икакая часть мне интересна.

В качестве примера: я хочу просмотреть узел «Файловая система», который находится на более глубоком уровне, чем корневая папка, и хочу использовать его метод createFile.

1 Ответ

0 голосов
/ 10 октября 2019

Для вызова метода вам нужны два идентификатора узла:

  • Идентификатор узла объекта, который содержит метод
  • Идентификатор узла метода

Если выуже есть эти идентификаторы узлов, вы можете вызвать метод прямо сейчас. Если нет, OPC UA в целом поддерживает два варианта получения этих идентификаторов узлов:

  • Начать с корневого узла (ns=0;i=84) и рекурсивно просматривать все дочерние узлы, пока не найдете узел. с конкретным именем просмотра. https://github.com/open62541/open62541/blob/58bd161557111847d068650eff5ad670a9aa0395/examples/client.c#L61

  • Используйте сервис TranslateBrowsePathsToNodeIds, если у вас есть путь просмотра. То есть, передайте /Objects/MyDevice/FileSystem/UploadFile (объединение имен просмотра) с начальным узлом Root (ns=0;i=84), и сервер вернет вам идентификатор узла этого конкретного узла, если он существует. Эта служба использует относительные пути, поэтому вы также можете использовать другие узлы в качестве начальных узлов https://github.com/open62541/open62541/blob/58bd161557111847d068650eff5ad670a9aa0395/examples/client_async.c#L183

...