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 中的字符串的主要内容,如果未能解决你的问题,请参考以下文章

在我们自己的命名空间中自动生成 NodeID

text 使用NodeId从二级节点中删除所有用户

Opensplice - 从本地参与者获取 C# 中的 nodeId

ajty

php实现循环链表

Drupal:当这些节点的 cck 字段具有该用户的配置文件 nodeid 时,显示与配置文件相关的节点