我正在开展一个项目,根据规范构建 opc ua 服务器,
我在实现方面已经走得足够远,目前正在处理写入请求,我已经在服务器地址空间中有一些节点。
看起来有很多节点,实际上也有很多。几乎不可能创建
并一一添加节点。
无论如何回到问题,我已经从 opc 基金会下载了一个 xml 文件,其中包含地址空间中所有节点的架构,这是 xml 文件的链接 https://github.com/OPCFoundation/UA-Nodeset/blob/master/Schema/Opc.Ua.NodeSet.xml
从 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-UA 服务器的速度慢得令人无法接受。
你可能想调查模型编译器 https://github.com/OPCFoundation/UA-ModelCompiler。
我发现填写一个相当简单模型设计 https://github.com/OPCFoundation/UA-ModelCompiler/blob/master/ModelCompiler/UA%20Model%20Design.xsdXML 包含数据并生成代码和 NodeSet2.xml。因此,即使您不需要生成的 C# 代码(我怀疑您的情况就是这样),这种方法也可能有用。
您可能还想查看 UA-.NETStandard 存储库。
它提供了一种方法从XML加载 https://github.com/OPCFoundation/UA-.NETStandard/blob/946741b4bf078388cbee61bf6c2c3e834affe8b2/Stack/Opc.Ua.Core/Stack/State/NodeStateCollection.cs快速读取节点集的方法。您可能会在这种方法中找到灵感。
感谢您为 OPC-UA 世界做出的贡献。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)