/// <summary> /// Creates a boiler and adds it to the address space. /// </summary> /// <param name="context">The context to use.</param> /// <param name="unitNumber">The unit number for the boiler.</param> private void CreateBoiler(SystemContext context, int unitNumber) { BoilerState boiler = new BoilerState(null); string name = Utils.Format("Boiler #{0}", unitNumber); boiler.Create( context, null, new QualifiedName(name, m_namespaceIndex), null, true); NodeState folder = (NodeState)FindPredefinedNode( ExpandedNodeId.ToNodeId(ObjectIds.Boilers, Server.NamespaceUris), typeof(NodeState)); folder.AddReference(Opc.Ua.ReferenceTypeIds.Organizes, false, boiler.NodeId); boiler.AddReference(Opc.Ua.ReferenceTypeIds.Organizes, true, folder.NodeId); string unitLabel = Utils.Format("{0}0", unitNumber); UpdateDisplayName(boiler.InputPipe, unitLabel); UpdateDisplayName(boiler.Drum, unitLabel); UpdateDisplayName(boiler.OutputPipe, unitLabel); UpdateDisplayName(boiler.LevelController, unitLabel); UpdateDisplayName(boiler.FlowController, unitLabel); UpdateDisplayName(boiler.CustomController, unitLabel); m_boilers.Add(boiler); AddPredefinedNode(context, boiler); }
/// <summary> /// Creates a boiler and adds it to the address space. /// </summary> /// <param name="context">The context to use.</param> /// <param name="unitNumber">The unit number for the boiler.</param> private void CreateBoiler(SystemContext context, int unitNumber) { BoilerState boiler = new BoilerState(null); string name = Utils.Format("Boiler #{0}", unitNumber); boiler.Create( context, null, new QualifiedName(name, m_namespaceIndex), null, true); NodeState folder = (NodeState)FindPredefinedNode( ExpandedNodeId.ToNodeId(ObjectIds.Boilers, Server.NamespaceUris), typeof(NodeState)); folder.AddReference(Opc.Ua.ReferenceTypeIds.Organizes, false, boiler.NodeId); boiler.AddReference(Opc.Ua.ReferenceTypeIds.Organizes, true, folder.NodeId); string unitLabel = Utils.Format("{0}0", unitNumber); UpdateDisplayName(boiler.InputPipe, unitLabel); UpdateDisplayName(boiler.Drum, unitLabel); UpdateDisplayName(boiler.OutputPipe, unitLabel); UpdateDisplayName(boiler.LevelController, unitLabel); UpdateDisplayName(boiler.FlowController, unitLabel); UpdateDisplayName(boiler.CustomController, unitLabel); m_boilers.Add(boiler); AddPredefinedNode(context, boiler); // Autostart boiler simulation state machine MethodState start = (MethodState)boiler.Simulation.FindChild(context, Opc.Ua.BrowseNames.Start); if (start != null) { IList <Variant> inputArguments = new List <Variant>(); IList <Variant> outputArguments = new List <Variant>(); List <ServiceResult> errors = new List <ServiceResult>(); start.Call(context, boiler.NodeId, inputArguments, errors, outputArguments); } }
/// <summary> /// Creates a boiler and adds it to the address space. /// </summary> /// <param name="context">The context to use.</param> /// <param name="unitNumber">The unit number for the boiler.</param> private void CreateBoiler(SystemContext context, int unitNumber) { BoilerState boiler = new BoilerState(null); string name = Utils.Format("Boiler #{0}", unitNumber); boiler.Create( context, null, new QualifiedName(name, m_namespaceIndex), null, true); NodeState folder = (NodeState)FindPredefinedNode( ExpandedNodeId.ToNodeId(ObjectIds.Boilers, Server.NamespaceUris), typeof(NodeState)); folder.AddReference(Opc.Ua.ReferenceTypeIds.Organizes, false, boiler.NodeId); boiler.AddReference(Opc.Ua.ReferenceTypeIds.Organizes, true, folder.NodeId); string unitLabel = Utils.Format("{0}0", unitNumber); UpdateDisplayName(boiler.InputPipe, unitLabel); UpdateDisplayName(boiler.Drum, unitLabel); UpdateDisplayName(boiler.OutputPipe, unitLabel); UpdateDisplayName(boiler.LevelController, unitLabel); UpdateDisplayName(boiler.FlowController, unitLabel); UpdateDisplayName(boiler.CustomController, unitLabel); m_boilers.Add(boiler); AddPredefinedNode(context, boiler); // Autostart boiler simulation state machine MethodState start = boiler.Simulation.Start; IList<Variant> inputArguments = new List<Variant>(); IList<Variant> outputArguments = new List<Variant>(); List<ServiceResult> errors = new List<ServiceResult>(); start.Call(context, boiler.NodeId, inputArguments, errors, outputArguments); }