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); }
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 }); }