C#实现OPCUA客户端数据订阅功能
请问我要用C#实现一个功能,就是 opcua 服务器端一个节点里面内容有变化,立刻得到这个节点的数据。我网上查了,需要用数据订阅功能。下面是我代码,但是运行到 m_OpcUaClient.AddSubscription("A", "ns=2;s=Machines/Machine B/TestValueFloat", SubCallback);
这段后,跳转不到SubCallback()这个方法。报如下错误
System.NullReferenceException:“未将对象引用设置到对象的实例。”
代码如下:
private OpcUaClient m_OpcUaClient;
private void button4_Click(object sender, EventArgs e)
{
// sub
m_OpcUaClient.AddSubscription("A", "ns=2;s=Machines/Machine B/TestValueFloat", SubCallback);
}
private void SubCallback(string key, MonitoredItem monitoredItem, MonitoredItemNotificationEventArgs args)
{
if (InvokeRequired)
{
Invoke(new Action<string, MonitoredItem, MonitoredItemNotificationEventArgs>(SubCallback), key, monitoredItem, args);
return;
}
if (key == "A")
{
// 如果有多个的订阅值都关联了当前的方法,可以通过key和monitoredItem来区分
MonitoredItemNotification notification = args.NotificationValue as MonitoredItemNotification;
if (notification != null)
{
textBox1.Text = notification.Value.WrappedValue.Value.ToString();
}
}
}
相关推荐
OPCUA服务器连接PLC获取PLC的相应变量值C#程序
OPCUA提供了客户端-服务器、发布/订阅等多种通信模式,使得数据交换更加灵活。2. OPCUA服务器: OPCUA服务器是实现OPCUA规范的应用程序,它可以提供设备或系统的数据和服务。
OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写)
ModbusTCP通信是采用直接方式进行通信,用OPC的方式如何去做呢?PLC作为ModbusTCP服务器,用KepServer作为ModbusTCP客户端,同时作为OPC服务器,PC作为OPC客户端新建项目,加载dll库(利用COM技术写的)添加引用,查看到其中包含了众多方法其中OPCGroups继承于IOPCGroups接口。
深入理解OPCUA.Net应用:C#开发实践指南
OPCUA (Open Platform Communications Unified Architecture) 是一种工业通讯协议,旨在提供统一的通讯框架,以满足工业自动化系统中设备和软件组件间的互操作性。自从早期的OPC标准发展而来,OPCUA不仅解决了平台兼容性问题,还提升了安全性与数据模型的灵活性。OPCUA服务器允许实现自定义的数据访问接口,以便实现特定的业务逻辑。// 自定义数据访问接口示例// 添加变量到地址空间的逻辑// 返回新添加的节点标识符// 读取变量值的逻辑。
C#开发的 OPCUA读取设备数据示例
**OPCUA SDK(软件开发工具包)**:为了在C#中实现OPCUA功能,开发者通常会使用如UA .NET Standard SDK这样的库,该SDK提供API,使得C#代码能够轻松地与OPCUA服务器交互
PLC通讯实现-C#访问OPCUA实现读写PLC源码
**OPCUA客户端库**:开发者可能使用了开源的OPCUA客户端库,如Opc.Ua.Client或UA-.NET Standard,这些库提供了连接到OPCUA服务器的接口,进行数据订阅和发布。


