Бесплатный сервер opc ua с функцией импорта моделей

Я хочу реализовать связь OPC UA для своего приложения (С#)

Я нашел несколько симуляторов сервера OPC UA (Prosys и Softing OPC UA). Я могу без проблем подключаться и читать данные. Я хочу внедрить стандарты Euromap 77. http://www.euromap.org/euromap77

Насколько я понимаю, я должен использовать структуру модели при доступе к данным через OPC. Я хочу загрузить эту модель на сервер OPC UA и работать с этой структурой данных. Можно ли импортировать этот http://www.euromap.org/files/Opc_Ua.EUROMAP77.RC1_00.NodeSet2.xml для любого бесплатного сервера OPC UA?


person Cozdemir    schedule 12.05.2017    source источник


Ответы (1)


У OPC Foundation есть образцы серверов с менеджерами узлов, которые импортируют NodeStateCollections, также известные как предопределенные узлы.

Взгляните на этот репозиторий на GitHub

Вы можете использовать класс «UaNodeSetHelpers» для преобразования файлов NodeSet2 в NodeStateCollections.

// First, read a NodeSet2.xml file from a stream.
var nodeSet = UANodeSet.Read(istrm); 

// Then create an empty NodeStateCollection.
var nodes = new NodeStateCollection();

// Update namespace table
if (nodeSet.NamespaceUris != null && context.NamespaceUris != null)
{
   for (int ii = 0; ii < nodeSet.NamespaceUris.Length; ii++)
   {
       context.NamespaceUris.GetIndexOrAppend(nodeSet.NamespaceUris[ii]);
       namespaceUris.Add(nodeSet.NamespaceUris[ii]);
    }
}

// Update server table
if (nodeSet.ServerUris != null && context.ServerUris != null)
{
    for (int ii = 0; ii < nodeSet.ServerUris.Length; ii++)
    {
        context.ServerUris.GetIndexOrAppend(nodeSet.ServerUris[ii]);
    }
}

// Convert the nodeset to nodeState collection, aka predefinedNodes. 
nodeSet.Import(context, nodes);

```

https://github.com/OPCFoundation/UA-.NETStandard/blob/3c1159ec712db4403d2dc9840b3e9525f56610b3/Stack/Opc.Ua.Core/Schema/UANodeSetHelpers.cs#L113

https://github.com/OPCFoundation/UA-.NETStandard/blob/cd4173aa95abd296578b976be67485c299473a70/Stack/Opc.Ua.Core/Schema/UANodeSetHelpers.cs#L113

person Andrew Cullen    schedule 13.05.2017
comment
Спасибо, Андрей. Я попробую сейчас. Мне придется заменить nodeset своим правом? это все ? - person Cozdemir; 13.05.2017
comment
Насколько я знаю, SampleServer может загружать только PredefinedNodes.xml (например, из ModelCompiler), но не NodeSet2.xml (из OPCUAModeler), в зависимости от варианта структуры обоих файлов xml. - person Houve; 28.03.2018
comment
Спасибо @Houve за напоминание исправить мой ответ. Пример котла не был загружен из файла nodeset2. Как вы думаете, подойдёт ли вам вспомогательная функция? - person Andrew Cullen; 29.03.2018
comment
@ Эндрю Каллен Да, код у меня сработал, большое спасибо! Несколько дней искал решение, чтобы загрузить файл opcua-modeler .xml на сервер opcua напрямую. - person Houve; 09.04.2018