C# 读写opc ua服务器,浏览所有节点,读写节点,读历史数据,调用方法,订阅,批量订阅操作...

本文详细介绍了如何使用C#开发OPC UA客户端,涵盖从服务器准备、节点浏览器、读写操作、数据订阅、方法调用到日志输出的全过程。提供代码示例和注意事项,帮助开发者实现与OPC UA服务器的无缝交互。
摘要由CSDN通过智能技术生成

OPC是应用于工业通信的,在windows环境的下一种通讯技术,原有的通信技术难以满足日益复杂的环境,在可扩展性,安全性,跨平台性方面的不足日益明显,所以OPC基金会在几年前提出了面向未来的架构设计的OPC 统一架构,简称OPC UA,截止目前为止,越来越多公司将OPC UA作为开放的数据标准,在未来工业4.0行业上也将大放异彩。

 

在OPC UA的服务器端。会公开一些数据节点,或是方法等信息,允许第三方使用标准的OPC协议来进行访问,在传输层已经安全的处理所有的消息,对于客户端的访问来说,应该是非常清楚简单的。

 

本篇文章是讲述如何开发C#的OPC UA客户端的方式,关于如何开发OPC UA可配置的服务器,请参照另一篇博客:http://www.cnblogs.com/dathlin/p/8976955.html 这篇博客讲述了如何创建基于三菱,西门子,欧姆龙,ModbusTcp客户端,异形ModbusTcp客户端的OPC UA服务器引擎。

 

2.0版本说明


2018年8月18日 20:09:24  基于OPC UA的最新官方库,重新调整了订阅的代码实现,开源地址:https://github.com/dathlin/OpcUaHelper 除了组件的源代码之外,还包含了一个服务器的示例,就是下面的的示例操作。

更加详细的代码说明可以参照GitHub上的readme文件

前期准备


准备好开发的IDE,首选Visual Studio2017版本,新建项目,或是在你原有的项目上进行扩展。注意:项目的.NET Framework版本最低为4.6

打开NuGet管理器,输入指令(如果不明白,参考http://www.cnblogs.com/dathlin/p/7705014.html):

Install-Package OpcUaHelper

或者:

然后在窗体的界面新增引用:

using OpcUaHelper;

接下就可以愉快码代码了。

 

技术支持QQ群:592132877 (组件的版本更新细节也将第一时间在群里发布)

 

OPC UA服务器准备


此处有一个供网友测试的服务器:opc.tcp://118.24.36.220:62547/DataAccessServer

当然,一般的网友都会使用Kepware软件,在此处介绍一个我自己开发的OPC UA网关服务器,支持三菱,西门子,欧姆龙,modbustcp客户端转化成OPC UA服务器,支持创建modbus服务器,异形服务器,地址是

https://github.com/dathlin/SharpNodeSettings

 

节点浏览器


我们在得到一个OPC UA的服务器之后,第一件事就是使用节点浏览器对所有的节点进行访问,不然你根本就不知道服务器公开了什么东西,此处我使用了一个测试服务器,该地址为云端地址,不保证以后会不会继续支持访问,目前来说还是可以访问的。

比如这个地址:opc.tcp://118.24.36.220:62547/DataAccessServer

OK,然后我们可以使用代码来显示这个服务器到底有什么数据了!在窗体上新增一个按钮,双击它进入点击事件,写上

复制代码
private void button1_Click(object sender, EventArgs e)
{
    using (FormBrowseServer form = new FormBrowseServer())
    {
        form.ShowDialog();
    }
}
复制代码

然后就会显示如下的界面:在地址栏输入上述地址,点击连接(此处能连接上的条件是服务器配置为允许匿名登录):

 

左边区域可以随便点击看看,可以看到所有公开的数据,比如点击一个数据节点,下面图片中的Name节点,右边编辑框会显示该节点的ID标识,这个标识很重要,关系到等会的读写操作。

客户端实例化


 

复制代码
private OpcUaClient opcUaClient = new OpcUaClient();
 
private async void Form1_Load(object sender, EventArgs e)
{
    await opcUaClient.ConnectServer("opc.tcp://118.24.36.220:62547/DataAccessServer");
}
 
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    opcUaClient.Disconnect();
}
复制代码

如上所示,在窗体载入的时候实例化,在窗体关闭的时候断开连接。下面的节点操作和其他操作使用的实例都是这个opcUaClient,如果你连接的服务器是需要用户名和密码的,那么修改Load中的代码如下:

复制代码
private async void Form1_Load(object sender, EventArgs e)
        {
            opcUaClient.UserIdentity = new Opc.Ua.UserIdentity("admin", "123456");

            await opcUaClient.ConnectServer("opc.tcp://118.24.36.220:62547/DataAccessServer");
        }
复制代码

节点读取操作


我们要读取一个节点数据,有两个信息是必须知道的

  • 节点的ID标识,就是在上述节点浏览器中的编辑框的信息("ns=2;s=Machines/Machine A/Name")
  • 节点的数据类型,这个是必须知道的,不然也不好读取数据。(“string”)

上面的两个信息都可以通过节点浏览器来获取到信息,现在,我们已经获取到了这两个信息,就上面的括号里的数据,然后我们在新增一个按钮&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值