private void initData() { //下一步增加数据连接,保证能够对OPC UA服务器进行修改 Subscription in_Subscription = m_Server.AddSubscription(100); object serverHandle = null; //初始化服务器句柄 String nodeIDXStr = "ns=2;s=Channel1.Device1.Tag1"; NodeId nodeIdX = new NodeId(nodeIDXStr); String nodeIDYStr = "ns=2;s=Channel1.Device1.Tag2"; NodeId nodeIdY = new NodeId(nodeIDYStr); String iidX = "motorXPosition"; object itemX = iidX; String iidY = "motorYPosition"; object itemY = iidY; try { in_Subscription.AddDataMonitoredItem(nodeIdX, itemX, ClientApi_ValueChanged, 100, out serverHandle); in_Subscription.AddDataMonitoredItem(nodeIdY, itemY, ClientApi_ValueChanged, 100, out serverHandle); MainWindow.myMotorPos.XValue = 0; MainWindow.myMotorPos.YValue = 0; } catch (Exception ex) { Console.WriteLine("添加项时出现异常,异常信息:" + ex); } }
/// <summary> /// Starts the monitoring of the values of the two variables entered in the From. /// The NodeIds used for the monitoring are constructed from the identifier entered /// in the Form and the namespace index detected in the connect method /// </summary> private void btnMonitor_Click(object sender, EventArgs e) { // Check if we have a subscription // - No -> Create a new subscription and create monitored items // - Yes -> Delete Subcription if (m_Subscipition == null) { try { // Handle is not stored since we delete the whole subscription object monitoredItemServerHandle = null; // Create subscription m_Subscipition = m_Server.AddSubscription(100); btnMonitor.Text = "Stop"; // Create first monitored item m_Subscipition.AddDataMonitoredItem( new NodeId(txtIdentifier1.Text, m_NameSpaceIndex), txtMonitored1, ClientApi_ValueChanged, 100, out monitoredItemServerHandle); // Create second monitored item m_Subscipition.AddDataMonitoredItem( new NodeId(txtIdentifier2.Text, m_NameSpaceIndex), txtMonitored2, ClientApi_ValueChanged, 100, out monitoredItemServerHandle); } catch (Exception ex) { MessageBox.Show("Establishing data monitoring failed:\n\n" + ex.Message); } } else { try { m_Server.RemoveSubscription(m_Subscipition); m_Subscipition = null; btnMonitor.Text = "Monitor"; txtMonitored1.Text = ""; txtMonitored2.Text = ""; } catch (Exception ex) { MessageBox.Show("Stopping data monitoring failed:\n\n" + ex.Message); } } }
public void CreateMySubscipition(StationModel station, APPConfiguration appconfig) { object monitoredItemServerHandle = null; int interval = Convert.ToInt32(appconfig.PublishingInterval); uint rate = Convert.ToUInt32(appconfig.SamplingRate); Subscription mysubscription = station.StationOPCServer.AddSubscription(interval); for (int i = 0; i < station.MonitorNodes.Count; i++) { mysubscription.AddDataMonitoredItem( station.MonitorNodes[i], station.MonitorClientHandl[i], rate, out monitoredItemServerHandle); } }
private void initData(opcUAServer curServer) { Subscription in_Subscription = curServer.AddSubscription(100); object serverHandle = null; //初始化服务器句柄 String nodeIDStr = "ns=2;s=curSimulation.IOGroup.Input0"; NodeId nodeId = new NodeId(nodeIDStr); String iid = "data1"; object item = iid; try { in_Subscription.AddDataMonitoredItem(nodeId, item, ClientApi_ValueChanged, 100, out serverHandle); dataGridData myData = new dataGridData(); myData.IID = iid; myData.varName = "I0"; myData.varValue = 0; beckhoffInputData.Add(myData); } catch (Exception ex) { Console.WriteLine("添加项时出现异常,异常信息:" + ex); } serverHandle = null; //初始化服务器句柄 nodeIDStr = "ns=2;s=curSimulation.IOGroup.Input1"; nodeId = new NodeId(nodeIDStr); iid = "data2"; item = iid; try { in_Subscription.AddDataMonitoredItem(nodeId, item, ClientApi_ValueChanged, 100, out serverHandle); dataGridData myData = new dataGridData(); myData.IID = iid; myData.varName = "I1"; myData.varValue = 0; beckhoffInputData.Add(myData); } catch (Exception ex) { Console.WriteLine("添加项时出现异常,异常信息:" + ex); } for (int i = 2; i < 16; i++) { dataGridData myData = new dataGridData(); myData.varName = "I" + i; myData.varValue = 0; beckhoffInputData.Add(myData); } for (int i = 0; i < 16; i++) { dataGridData myData = new dataGridData(); myData.varName = "O" + i; myData.varValue = 0; beckhoffOutputData.Add(myData); } dataGridData otherData = new dataGridData(); otherData.varName = "AI1"; otherData.varValue = 0; beckhoffOtherData.Add(otherData); otherData = new dataGridData(); otherData.varName = "AO1"; otherData.varValue = 0; beckhoffOtherData.Add(otherData); otherData = new dataGridData(); otherData.varName = "电流"; otherData.varValue = 0; beckhoffOtherData.Add(otherData); otherData = new dataGridData(); otherData.varName = "气压"; otherData.varValue = 0; beckhoffOtherData.Add(otherData); }
/// <summary> /// Finishes a drag and drop action whereas this control is used as target. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param> private void MonitoredItems_DragDrop(object sender, DragEventArgs e) { try { // Retrieve the event data and create the according nodeid. String sNodeId = (String)e.Data.GetData(typeof(System.String)); NodeId nodeId = new NodeId(sNodeId); // Create the subscription if it does not already exist. if (m_Subscription == null) { m_Subscription = m_Server.AddSubscription(100); } // Add the attribute name/value to the list view. ListViewItem item = new ListViewItem(sNodeId); object serverHandle = null; // Prepare further columns. item.SubItems.Add("100"); // Sampling interval by default. item.SubItems.Add(String.Empty); item.SubItems.Add(String.Empty); item.SubItems.Add(String.Empty); item.SubItems.Add(String.Empty); item.SubItems.Add(String.Empty); try { // Add the item and apply any changes to it. m_Subscription.AddDataMonitoredItem(nodeId, item, ClientApi_ValueChanged, 100, out serverHandle); // Update status label. OnUpdateStatusLabel("Adding monitored item succeeded for NodeId:" + nodeId.ToString(), true); } catch (ServiceResultException monitoredItemResult) { item.SubItems[5].Text = monitoredItemResult.StatusCode.ToString(); // Update status label. OnUpdateStatusLabel("An exception occured while adding an item: " + monitoredItemResult.Message, false); } item.Tag = serverHandle; MonitoredItemsLV.Items.Add(item); // Fit column width to the longest item and add a few pixel: MonitoredItemsLV.Columns[0].Width = -1; MonitoredItemsLV.Columns[0].Width += 15; // Fit column width to the column content: MonitoredItemsLV.Columns[1].Width = -2; MonitoredItemsLV.Columns[5].Width = -2; // Fix settings: MonitoredItemsLV.Columns[2].Width = 95; MonitoredItemsLV.Columns[3].Width = 75; MonitoredItemsLV.Columns[4].Width = 75; } catch (Exception exception) { // Update status label. OnUpdateStatusLabel("An exception occured while creating a subscription: " + exception.Message, false); } }