2016-01-15 3 views
3

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

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

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

+1

Если вы пишете клиентское приложение OPC, у вас нет выбора для создания синтаксиса идентификаторов элементов или идентификаторов узлов. Они указываются сервером OPC, к которому вы подключаетесь, и лучше всего вы можете написать свой OPC-клиент таким образом, чтобы он хорошо работал с ними. Кроме того, небольшая коррекция, OPC DA не предусматривает "." как разделитель; это зависит от сервера, как он создает идентификаторы элементов, а while. " кажется довольно распространенным, есть много серверов, которые его не используют. – ZbynekZ

ответ

3

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

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

0

Фонд OPC объявил о своем “OPC UA Open Shared Source” Strategy (04/14/2015).

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

Также Build OPC UA .NET applications using C#, VB.NET

Вы можете посмотреть на образцы в каталоге «SampleApplications» и посмотреть, как они делают вещи ...

2

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

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

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

Смежные вопросы