我是 OPC UA 服务器开发的初学者。我正在 .NET 环境中使用我自己的信息模型(在 UAModeler 上创建)创建一个服务器。
当我实例化信息模型中可用的节点时,只有那些设置为“强制”的节点才会成功实例化。我正在尝试找到一种方法,如何实例化其余节点,这些节点也按目的设置为建模规则的可选节点。
以下是节点管理器类中我的代码片段:
`Console.WriteLine("正在加载 Im 2.1 模型。"); ImportUaNodeset(Assembly.GetEntryAssembly(), "informationmodel_2.0.xml"); Console.WriteLine("IM 成功加载");
CreateObjectSettings settings = new CreateObjectSettings()
{
ParentNodeId = UnifiedAutomation.UaBase.ObjectIds.ObjectsFolder,
ReferenceTypeId = UnifiedAutomation.UaBase.ReferenceTypeIds.Organizes,
RequestedNodeId = new NodeId("IM", DefaultNamespaceIndex),
BrowseName = new QualifiedName("Departments", DefaultNamespaceIndex),
TypeDefinitionId = UnifiedAutomation.UaBase.ObjectTypeIds.FolderType
};
ObjectNode controllersNode = CreateObject(Server.DefaultRequestContext, settings);
settings = new CreateObjectSettings()
{
ParentNodeId = controllersNode.NodeId,
ReferenceTypeId = UnifiedAutomation.UaBase.ReferenceTypeIds.Organizes,
RequestedNodeId = new NodeId(DepartmentA, DefaultNamespaceIndex),
BrowseName = new QualifiedName(DepartmentA, DefaultNamespaceIndex),
TypeDefinitionId = new NodeId(My.MyIm.ObjectTypes.BodyshopProductionEquipmentType, DefaultNamespaceIndex)
};
CreateObject(Server.DefaultRequestContext, settings);
ProductionDataNode = FindInMemoryNode(new NodeId(DepartmentA + ".ProductionData", DefaultNamespaceIndex)) as VariableNode;
CounterPerTypeNode = FindInMemoryNode(new NodeId(DepartmentA + ".ProductionData.CounterPerType", DefaultNamespaceIndex)) as VariableNode;`
任何建议或类似的已解决示例将不胜感激。
谢谢
最佳答案
我没有使用 Unified-automation-sdk 的经验,但在 OPCFoundation 堆栈中,您必须手动创建节点。
这通常在 Node Manager 类的 CreateAddressSpace
方法中完成,请参阅 Boiler example .
建模角色可选表示服务器必须决定是否需要创建。
关于.net - 如何将可选节点从我的信息模型实例化到我的 OPC UA 服务器(.Net 环境),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65040364/