OPC UA уникальный идентификатор

Я пытаюсь создать клиентское приложение OPC UA.
Я хотел бы иметь возможность идентифицировать UA-узел уникально в дереве OPC.
Я знаю, что в OPC DA стандартным идентификатором узла является строка с '.' в качестве разделителя, который я могу использовать для идентификации узла.

В OPC UA идентификатор узла не обязательно должен быть строкой, но я все же хотел бы иметь возможность создать уникальную строку, которая отображается на конкретный узел.
Я думаю о том, чтобы основывать это на именах узлов. Например: Demo.MyNode.MyValue.
но я боюсь, что имя узла может содержать такие символы, как "." и это сделает мои идентификаторы не уникальными.

Есть ли символ, который я могу использовать в качестве разделителя?
Есть ли лучший способ представить идентификатор узла в виде строки (включая его путь)?

3 ответа

Решение

OPC-UA предлагает концепцию уникального "BrowsePath" для каждого узла, и клиент может выбрать сохранение "BrowsePaths" вместо "NodeIds", а затем при запуске вызвать службу TranslateBrowsePathsToNodeIds.

На самом деле, я полагаю, что это может быть предполагаемое поведение, так как не требуется, чтобы сервер использовал один и тот же NodeId для любого данного узла после перезапуска, даже если на практике это так.

Я был неправ, что NodeId позволили измениться. В спецификации сказано: "Сервер должен сохранять NodeId узла, то есть он не должен генерировать новые NodeId при перезагрузке".

Теперь я считаю, что лучше всего хранить NodeIds и использовать BrowsePath только для помощи в программировании против определений типов.

Одной из особенностей OPC UA является то, что сервер может предлагать разные деревья меню для разных пользователей. Это может не иметь значения для вашего клиента, так как любой данный пользователь увидит только одно дерево, а BrowsePath будет уникальным для этого пользователя.

В v1.03 части 3 спецификации OPC UA, "Часть 3 OPC UA - Модель адресного пространства 1.03 Specification.pdf", в разделе 5.2.2 говорится, что сервер не должен изменять NodeId узла при его перезагрузке. (Спецификация доступна в OPC Foundation по адресу https://opcfoundation.org/. Вы можете зарегистрироваться и скачать ее бесплатно.)

Конечно, некоторые UA-серверы могут не поддерживать свои NodeID при перезагрузке. Что является еще одной причиной использовать предложение Кевина использовать BrowsePath для создания уникальной строки для каждого узла. Строка может прояснить пользователю, к какому узлу они обращаются. Отличная идея!

Фонд OPC объявил о своей стратегии "OPC UA Open Shared Source" (14.04.2015).

Стек для.NET, включая множество примеров для клиентов DA, ​​Historie... и серверов, можно бесплатно загрузить здесь https://github.com/OPCFoundation/UA-.NET на GitHub.

Также сборка приложений OPC UA .NET с использованием C#, VB.NET

Вы можете взглянуть на примеры в каталоге "SampleApplications" и посмотреть, как они работают...

Другие вопросы по тегам