正致力于从规范
构建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>
答案 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>