github - NodeId 作为 ModelCompiler OPC UA 中的字符串
问题描述
我正在尝试自己开发一个 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 https://github.com/OPCFoundation/UA-ModelCompiler上的 ModelCompiler
有人可以帮我吗?如何自定义节点的 NodeId?
谢谢江户
解决方案
在这个阶段我能提供的最好的建议是克隆UA-.NETStandard
并运行 NetCoreConsoleServer
UA-.NETStandard/SampleApplications/Samples/NetCoreConsoleServer
通过调试器。如果我没记错的话,锅炉节点管理器会使用 stringID。ISystemContext.cs 中的接口 INodeIdFactory 提供了一些关于如何生成 ID 的见解。
恕我直言,如您所知,模型设计者没有强制执行字符串 ID 的开关。因此,您需要在服务器启动时以编程方式将字符串 ID 而不是数字 ID 分配给节点。我也还没想通。
因此,您可以在 中设置断点BoilerNodeManager.cs
并查看 nodeID 的实际构造方式。
推荐阅读
- quarkus-panache - quarkus-reactive-hibernate:bean 按类型匹配,但没有匹配的限定符
- xslt - 如何使用 XSL 将小写转换为大写而不更改内部元素
- java - 在 Spring Boot 中使用注释验证 POJO 中的嵌套 JSON
- angular - 没有数据可显示时如何隐藏表格和按钮
- azure-communication-services - Azure 通信 Web 呼叫问题
- android-studio - 将图像处理模型导入 Android Studio
- css - 反应网格布局对齐
- python - 在python中使用字符分隔将字符串转换为列表和子列表
- debugging - 如果 DEBUG 为 False,则必须设置 settings.ALLOWED_HOSTS
- javascript - Webgl 顶点位置内置 VertexShader