OPC UA新手求教:如何基于自定义对象类型创建节点实例?
关于OPC UA自定义对象类型实例创建的问题解答
你的代码思路是正确的,但仅设置TypeDefinitionId还不够,需要补充几个关键参数才能成功创建自定义对象类型的实例。以下是完善后的代码示例和说明:
必要的参数补充
创建节点实例时,必须指定以下核心设置:
- NodeId:每个节点的唯一标识,需确保在服务器命名空间内唯一
- ParentNodeId:实例挂载的父节点(通常是服务器的Objects文件夹)
- BrowseName:客户端浏览时显示的节点名称
- DisplayName:用户友好的显示文本
完整代码示例
// 假设自定义类型所在的命名空间索引为2(根据你的实际配置调整) ushort namespaceIndex = 2; CreateObjectSettings settings = new CreateObjectSettings() { // 自定义对象类型的NodeId TypeDefinitionId = ObjectTypeIds.MyCustomObject, // 实例的唯一标识 NodeId = new NodeId("MyCustomTestInstance", namespaceIndex), // 父节点(挂载到Objects文件夹) ParentNodeId = ObjectIds.ObjectsFolder, // 浏览名称 BrowseName = new QualifiedName("TestInstance", namespaceIndex), // 显示名称 DisplayName = new LocalizedText("en-US", "Test Custom Instance") }; // 创建实例 Node test = CreateObject(Server.DefaultRequestContext, settings);
关键说明
- 命名空间索引
namespaceIndex需要和你在UA Modeler中定义自定义类型时的命名空间对应,可通过服务器的命名空间管理器查询。 - 创建完成后,
test变量就是你要的自定义对象类型实例,后续可以直接操作它的属性、方法等。 - 这种方式会自动继承自定义对象类型的所有属性和结构,无需手动重新定义,完全符合你的需求。
内容的提问来源于stack exchange,提问作者oiergoiergh
相关产品推荐
相关产品推荐

