使用xml架构中的节点填充opcua地址空间

时间:2018-04-23 14:07:11

标签: opc opc-ua

正致力于从规范

构建opc ua服务器的项目

我在实现上已经走得很远了,目前我正在处理写请求,我已经在服务器地址空间中有几个节点。

似乎有这么多节点,实际上有很多节点。创造几乎是不可能的  并逐个添加节点。

无论如何回到这个问题,我从opc foundation下载了一个xml文件,其中包含地址空间中所有节点的模式,Here is a link to the xml file

从xml文件创建节点的最有效方法是什么?我正在写一个c95编译器。

下面是如何在节点集Xml文件中表示节点的快速视图,

<Nodes>
<Node i:type="DataTypeNode">
  <NodeId>
    <Identifier>i=1</Identifier>
  </NodeId>
  <NodeClass>DataType_64</NodeClass>
  <BrowseName>
    <NamespaceIndex>0</NamespaceIndex>
    <Name>Boolean</Name>
  </BrowseName>
  <DisplayName>
    <Locale></Locale>
    <Text>Boolean</Text>
  </DisplayName>
  <Description>
    <Locale></Locale>
    <Text>Describes a value that is either TRUE or FALSE.</Text>
  </Description>
  <WriteMask>0</WriteMask>
  <UserWriteMask>0</UserWriteMask>
  <RolePermissions />
  <UserRolePermissions />
  <AccessRestrictions>0</AccessRestrictions>
  <References>
    <ReferenceNode>
      <ReferenceTypeId>
        <Identifier>i=45</Identifier>
      </ReferenceTypeId>
      <IsInverse>true</IsInverse>
      <TargetId>
        <Identifier>i=24</Identifier>
      </TargetId>
    </ReferenceNode>
  </References>
  <IsAbstract>false</IsAbstract>
  <DataTypeDefinition i:nil="true" />
</Node>

2 个答案:

答案 0 :(得分:0)

以编程方式用节点填充正在运行的OPC-UA服务器太慢了。

您可能想调查ModelCompiler。 我发现用数据填充modeldesign XML并生成代码和NodeSet2.xml非常简单。因此,即使您不需要生成的C#代码(我怀疑是您的情况),这种方法也可能有用。

您可能还想查看UA-.NETStandard存储库。 它提供了一种方法LoadFromXML的方法,可以快速读取您的节点集。您可能会在这种方法中找到灵感。

OPC-UA的勇气和奉献精神

答案 1 :(得分:0)

也许我来晚了,但我回答是否可以帮助某人。

如果您将C / C ++与open62541 SDK一起使用,我发现可以生成* .c和* .h文件以包含在opcua服务器中,如一些示例here所述:您只需要运行python程序,提供一些参数和要生成的输出文件的名称,然后将这些文件包含在opcua服务器中即可。

我发现的另一种方法是使用Unified Automation的UaModeler,在这种情况下,您可以生成要包含在项目中的源文件,在程序中绘制信息模型并将其导出为xml或源文件。 / p>