Esempio n. 1
0
        public List <StatusCode> CreateMonitoredItem(Subscription subscription, List <NodeId> nodeIdList)
        {
            List <MonitoredItem> monitoredItems = new List <MonitoredItem>();
            DataMonitoredItem    monitoredItem  = new DataMonitoredItem(nodeIdList[0], Attributes.Value);

            monitoredItem.MonitoringMode   = MonitoringMode.Reporting;
            monitoredItem.SamplingInterval = 1;
            monitoredItem.QueueSize        = 1;
            monitoredItem.DiscardOldest    = true;
            monitoredItem.DeadbandType     = DeadbandType.None;
            monitoredItem.Deadband         = 0.0;
            monitoredItems.Add(monitoredItem);
            // create monitored items.
            List <StatusCode> results = subscription.CreateMonitoredItems(
                monitoredItems,
                new RequestSettings()
            {
                OperationTimeout = 10000
            });

            return(results);
        }
Esempio n. 2
0
        public void CreateSubscription()
        {
            Subscription s;
            NodeId       amountNode             = new NodeId("::Program:Cube.Admin.ProdProcessedCount", 6);
            NodeId       stateNode              = new NodeId("::Program:Cube.Status.StateCurrent", 6);
            NodeId       defectNode             = new NodeId("::Program:Cube.Admin.ProdDefectiveCount", 6);
            NodeId       acceptableNode         = new NodeId("::Program:product.good", 6);
            NodeId       amountToProduceNode    = new NodeId("::Program:product.produce_amount", 6);
            NodeId       machSpeedNode          = new NodeId("::Program:Cube.Status.MachSpeed", 6);
            NodeId       tempNode               = new NodeId("::Program:Cube.Status.Parameter[3].Value", 6);
            NodeId       humidityNode           = new NodeId("::Program:Cube.Status.Parameter[2].Value", 6);
            NodeId       vibrationNode          = new NodeId("::Program:Cube.Status.Parameter[4].Value", 6);
            NodeId       stopReasonNode         = new NodeId("::Program:Cube.Admin.StopReason.ID", 6);
            NodeId       bacthIdNode            = new NodeId("::Program:Cube.Status.Parameter[0].Value", 6);
            NodeId       barleyNode             = new NodeId("::Program:Inventory.Barley", 6);
            NodeId       hopsNode               = new NodeId("::Program:Inventory.Hops", 6);
            NodeId       maltNode               = new NodeId("::Program:Inventory.Malt", 6);
            NodeId       wheatNode              = new NodeId("::Program:Inventory.Wheat", 6);
            NodeId       yeastNode              = new NodeId("::Program:Inventory.Yeast", 6);
            NodeId       maintenanceTriggerNode = new NodeId("::Program:Maintenance.Trigger", 6);
            NodeId       maintenanceCounterNode = new NodeId("::Program:Maintenance.Counter", 6);

            // list of monitored items
            List <MonitoredItem> monitoredItems = new List <MonitoredItem>();
            // convert nodeid to datamonitoreditem
            MonitoredItem miAmountNode             = new DataMonitoredItem(amountNode);
            MonitoredItem miStateNode              = new DataMonitoredItem(stateNode);
            MonitoredItem miDefectNode             = new DataMonitoredItem(defectNode);
            MonitoredItem miAcceptableNode         = new DataMonitoredItem(acceptableNode);
            MonitoredItem miAmountToProduceNode    = new DataMonitoredItem(amountToProduceNode);
            MonitoredItem miMachSpeedNode          = new DataMonitoredItem(machSpeedNode);
            MonitoredItem miTempNode               = new DataMonitoredItem(tempNode);
            MonitoredItem miHumidityNode           = new DataMonitoredItem(humidityNode);
            MonitoredItem miVibrationNode          = new DataMonitoredItem(vibrationNode);
            MonitoredItem miStopReasonNode         = new DataMonitoredItem(stopReasonNode);
            MonitoredItem miBatchIdNode            = new DataMonitoredItem(bacthIdNode);
            MonitoredItem miBarleyNode             = new DataMonitoredItem(barleyNode);
            MonitoredItem miHopsNode               = new DataMonitoredItem(hopsNode);
            MonitoredItem miMaltNode               = new DataMonitoredItem(maltNode);
            MonitoredItem miWheatNode              = new DataMonitoredItem(wheatNode);
            MonitoredItem miYeastNode              = new DataMonitoredItem(yeastNode);
            MonitoredItem miMaintenanceTriggerNode = new DataMonitoredItem(maintenanceTriggerNode);
            MonitoredItem miMaintenanceCounterNode = new DataMonitoredItem(maintenanceCounterNode);

            miTempNode.SamplingInterval      = 500;
            miVibrationNode.SamplingInterval = 1000;
            miHumidityNode.SamplingInterval  = 500;

            monitoredItems.Add(miAmountNode);
            monitoredItems.Add(miStateNode);
            monitoredItems.Add(miDefectNode);
            monitoredItems.Add(miAcceptableNode);
            monitoredItems.Add(miAmountToProduceNode);
            monitoredItems.Add(miTempNode);
            monitoredItems.Add(miHumidityNode);
            monitoredItems.Add(miVibrationNode);
            monitoredItems.Add(miStopReasonNode);
            monitoredItems.Add(miBatchIdNode);
            monitoredItems.Add(miBarleyNode);
            monitoredItems.Add(miHopsNode);
            monitoredItems.Add(miMaltNode);
            monitoredItems.Add(miWheatNode);
            monitoredItems.Add(miYeastNode);
            monitoredItems.Add(miMachSpeedNode);
            monitoredItems.Add(miMaintenanceTriggerNode);
            monitoredItems.Add(miMaintenanceCounterNode);

            // init subscription with parameters
            s = new Subscription(session);
            s.PublishingInterval         = 250;
            s.MaxKeepAliveTime           = 1000;
            s.Lifetime                   = 1000000;
            s.MaxNotificationsPerPublish = 1;
            s.Priority                   = (byte)0;
            s.DataChanged               += OnDataChanged;
            s.PublishingEnabled          = true;
            s.CreateMonitoredItems(monitoredItems);
            // create the actual subscription
            s.Create(new RequestSettings()
            {
                OperationTimeout = 10000
            });
        }