Как создать экземпляр необязательного узла из моей информационной модели на моем сервере OPC UA (.Net Environement)

Я новичок в разработке серверов OPC UA. Я работаю над средой.NET, чтобы создать сервер с моей собственной информационной моделью, созданной на UAModeler.

когда я создаю экземпляры узлов, доступных в моей информационной модели, успешно создаются только те, которые установлены как обязательные. Я пытаюсь найти способ создать экземпляры остальных узлов, которые по назначению установлены как Необязательные для правила моделирования.

Ниже фрагмент моего кода из класса Node Manager:

`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;`
           

любые предложения или аналогичные решенные примеры будут высоко оценены.

благодаря

1 ответ

У меня нет опыта работы с unified-automation-sdk, но в стеке OPCFoundation вам нужно создавать узлы вручную.

Обычно это делается в CreateAddressSpaceметод класса Node Manager, см . пример Boiler .

Необязательная роль моделирования указывает, что сервер должен решить, требуется ли создание или нет.

Другие вопросы по тегам