NodeId 作为 ModelCompiler OPC UA 中的字符串
Posted
技术标签:
【中文标题】NodeId 作为 ModelCompiler OPC UA 中的字符串【英文标题】:NodeId as string in ModelCompiler OPC UA 【发布时间】:2019-02-06 04:47:43 【问题描述】:我正在尝试自己开发一个 OPC UA 服务器,但是由于我是编码新手,所以对我来说很难。 我从这里找到的 QuickstartApplication 开始:https://github.com/OPCFoundation/UA-.NET-Legacy
特别是我编辑了 ModelDesign.xml 文件以根据需要对其进行自定义 https://github.com/OPCFoundation/UA-.NET-Legacy/blob/master/ComIOP/Common/Common/ModelDesign.xml
我想定义一些NodeId为字符串的节点(示例中ModelDesign.xml中的所有NodeId都是数字) 在这个 xsd 之后,我发现“StringId”和“NumericId”看起来像正在寻找的东西https://github.com/OPCFoundation/UA-ModelCompiler/blob/master/ModelCompiler/UA%20Model%20Design.xsd 但是在 ModelDesign.xml 中更改它们的值对 NodeId 没有任何影响。没有错误,只是编译器分配了新的 NodeIds(全是数字),就好像它没有考虑我所做的更改一样。
作为编译器,我使用的是 GitHub 上的 ModelCompiler https://github.com/OPCFoundation/UA-ModelCompiler
有人可以帮帮我吗?如何自定义节点的NodeId?
谢谢 江户
【问题讨论】:
只是一般提示,当您写“我尝试过 ABC”时,最好包含实际内容,当您写“似乎没有任何效果”时,它究竟意味着什么?错误信息是什么?还是没有错误?帮助别人帮助你。 谢谢astrowalker,我会补充细节 【参考方案1】:现阶段我能提供的最佳建议是克隆UA-.NETStandard
并在其中运行 NetCoreConsoleServer
UA-.NETStandard/SampleApplications/Samples/NetCoreConsoleServer
通过调试器。如果我没记错的话,锅炉节点管理器会使用 stringID。 ISystemContext.cs 中的接口 INodeIdFactory 提供了一些关于如何生成 ID 的见解。
恕我直言,模型设计者没有强制使用字符串 ID as you know 的开关。因此,您需要在服务器启动时以编程方式将字符串 ID 而不是数字 ID 分配给节点。我也还没想通。
因此,您可以在BoilerNodeManager.cs
中设置断点,并查看nodeID 的实际构造方式。
【讨论】:
以上是关于NodeId 作为 ModelCompiler OPC UA 中的字符串的主要内容,如果未能解决你的问题,请参考以下文章