具有模型导入功能的免费opc ua服务器

时间:2017-05-12 19:06:34

标签: c# xml opc opc-ua

我想为我的应用程序实现OPC UA通信(c#)

我发现了一些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服务器?

1 个答案:

答案 0 :(得分:3)

OPC Foundation拥有带有节点管理器的示例服务器,这些节点管理器可以导入NodeStateCollections,即预定义节点。

查看this repo on 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