【问题标题】:Populating opcua address space with Nodes from an xml schema使用 xml 模式中的节点填充 opcua 地址空间
【发布时间】:2018-04-23 14:07:10
【问题描述】:

我正在做一个项目来根据规范构建一个 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>

【问题讨论】:

    标签: opc opc-ua


    【解决方案1】:

    以编程方式用节点填充正在运行的 OPC-UA 服务器速度慢得令人无法接受。

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

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

    Bon evidence et un grand merci pour vostributions au monde OPC-UA。

    【讨论】:

      【解决方案2】:

      也许我有点晚了,但如果它可以帮助某人,我会回答。

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

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

      【讨论】:

        猜你喜欢
        • 2018-04-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-13
        • 1970-01-01
        相关资源
        最近更新 更多