OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写)

1. OPC基础知识:OPCDA,OPCUA

1.1 OPC基础知识

  • OPC的诞生及历史:软件进行开发时需要与各种不同的协议进行对接,例如Modbus协议等,当设备很多,协议很多的情况下,上位机与硬件的沟通就会变得很麻烦,所以就有了将这些协议抽象出一个标准接口,对于软件人员就无需和协议对接,只需要对接接口即可,因此OPC就诞生了

  • 最早由于Windows系统是作为主流,因此OPC依赖于Windows的COM和DCOM技术,依赖上述早期技术就产生了OPCDA,OPCDA也可以看做一个标准

后来就有了OPC基金会,很多企业和协议加入进来,就可以使用相应的标准

  • 随着时间的发展,OPCDA通信的问题研究暴露出来了,两台电脑之间,假设有A和B两台电脑,A作为服务器,B作为客户端,如果A、B都在一个局域网就可以进行通信,但实际上不能直接通信,需要做一些配置,这些配置也就成为DCOM配置,DCOM配置除了麻烦,也会造成安全性很差
    为了OPCDA的缺点,OPC基金会就去做了优化,因此产生了OPCUA

  • 因此OPCUA就可以看做OPCDA的产品升级,不再依赖DCOM,也就不依赖Windows平台可以实现跨平台的架构,而是基于以太网,最底层也就是基于Socket的,安全性上也得到了提升(秘钥管理等),现在及以后主流肯定是OPCUA,由于历史原因OPCDA还在使用,也是工业4.0落地的协议

  • 但是OPCUA是需要授权的,也就是需要收费的,有可能OPCUA的客户端免费,服务器是收费的

  • 官方的东西:
    在这里插入图片描述
    OPC Classic规范是由三个部分组成:通信、报警和历史数据
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

1.2 OPC通信读写方式

无论是 OPC DA 还是 OPC UA,都遵从 OPC 标准,因此在某些方面是类似,这里主要针对 OPC的读写方式进行说明。OPC 读写方式主要有三种,分别是同步方式异步方式订阅方式订阅方式仅针对读取有效

  1. OPC 同步方式 :同步方式是指当客户端发送请求后,必须等到服务器响应全部完成后才能返回,期间将一直处于等待状态,因此当多客户端向服务器操作时,客户端程序产生阻塞,同步通讯适用于客户端较少,数据量较小的场合,同步方式的工作流程如下图所示:
    在这里插入图片描述
    发送请求call之后,需要等一个replay回应,就跟Modbus通信是类似的,一发一回之后,再发再回,

  2. OPC 异步方式 :异步方式是指当客户端发送请求后立即返回,不需要等待服务器的响应,可以进行其他操作,当服务器完成响应后会自动通知客户端,因此相对于同步通讯,异步通讯的效率更高,异步方式的工作流程如下图所示:
    在这里插入图片描述
    发送完call之后,不需要等,继续发第二个call,等第一个call完成之后会通过事件告知客户端,后边的call的处理方式也是一样

  3. OPC 订阅方式 :订阅方式在初始化时,就需要订阅相应的通信组 Group,这样当服务器的 Group组内有数据发生变化时,就会自动刷新客户端数据,客户端只需要向服务器发送一次请求,因此订阅方式的效率是非常高的,订阅方式的工作流程如下图所示:
    在这里插入图片描述
    订阅的方式只针对读取,写入可以使用同步和异步,

2. OPC通信仿真

2.1 上位机与PLC通过ModbusTCP直接通信

前面我们介绍过PLC通过ModbusTCP与上位机直接通信,下面将会以实例再次进行介绍。
以已经建在局域网内的以下PLC为例,可以使用Modbus TCP进行通信
在这里插入图片描述
以下为写到台达PLC中的程序
在这里插入图片描述
为了读取对应的值,可以采用Modbus TCP通信进行,以读取D33为例
在这里插入图片描述
如下图直接在Modbus Poll中输入D33
在这里插入图片描述
就可以直接读到数据
在这里插入图片描述
ModbusTCPPC作为ModbusTCP客户端,PLC作为ModbusTCP服务器,两者直接通信

2.2 OPC通信介绍及实例

2.2.1 OPC通信与ModbusTCP比较

ModbusTCP通信是采用直接方式进行通信,用OPC的方式如何去做呢?
OPC是间接方式,OPC通信方式是:PLC作为ModbusTCP服务器,用KepServer作为ModbusTCP客户端,同时作为OPC服务器,PC作为OPC客户端

2.2.2 OPC通信应用场景

单个设备上述OPC通信方式比较麻烦的,且是收费的,但好处是当设备比较多,协议多的时候OPC通信优势就会很明显。
OPC具有以下应用场景:

  • (1)设备协议不知道或者写不了的时候
  • (2)设备种类很多,很麻烦
  • (3)设备数量很多,很麻烦

2.2.3 OPC DA通信仿真实例

为什么OPC这种通信方式可以实现上述的功能呢?
这是因为KepServer中集成了很多驱动,所以你只管做配置

OPC 通信基于服务器-客户端模型,因此需要实现OPC客户端通信之前,需要搭建一个 OPC 服务器环境,这里我们采用比较主流的 KepServer 软件,硬件以台达PLC通过ModbusTCP为例,关于 KepServer的安装授权过程,这里就不做过多赘述了。

打开 KepServer 软件后,通过菜单新建一个项目,然后按照下图进行操作:
下图为查看KepServer中集成的驱动种类,以下以台达PLC通过ModbusTCP为例,通道类型选择对应的ModbusTCP通信。
在这里插入图片描述
在这里插入图片描述
创建台达PLC设备
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
输入PLC地址和设备地址
在这里插入图片描述
以上面读取的D33为例创建标记
在这里插入图片描述
以下就是创建了一个标记,当需要读取更多的变量的时候,就可以通过添加更多标记的方式进行
在这里插入图片描述

保存配置

运行->连接
在这里插入图片描述
启动监控后对应的值就读取过来
在这里插入图片描述
此处的OPC Quick Client相当于客户端,在KepServer上进行配置之后就可以实现与PLC的通信

上述的过程就是:PLC作为ModbusTCP服务器,用KepServer作为ModbusTCP客户端

同时作为OPC服务器有没有开启呢?
在关闭了KepServer后,使用OPC客户端进行连接,如果可以连接上,那就代表服务器是打开的

打开如下OPC DA客户端软件(模拟上位机),并如下图所示进行选择:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看到读到了对应的变量值
在这里插入图片描述
这说明服务器所提供的服务是一直在打开的

2.2.4 OPC UA通信仿真实例

上述过程介绍的是OPC DA的过程,在KepServer中也是集成进去了,在右下角有一个图标是关于OPC UA的,进去后的界面如下:
在这里插入图片描述
这里的49320是?

上面讲过OPC UA是基于socket,OPC UA服务器其实就是TCP服务器,OPC UA是应用层协议,加载到TCP中,类似于Modbus TCP

如果是基于TCP的,那么就可以使用网络调试助手连接到,下图显示是连接上了
在这里插入图片描述
所以KepServer本质上就是一个TCP服务器,可以同时打开OPC DA和OPC UA的服务器

如果要连接OPC UA服务器,可以使用OPC UA客户端,常用的有UaExperter,具体操作如下:
在这里插入图片描述
在这里插入图片描述
可以看到数据已经读到

2.2.5 OPC通信仿真实例框架图

绘制一个框架图进行理解,DVP32是台达PLC,通过以太网接口连接到交换机,PC也是连接到交换机上的,也就是在一个局域网内,通过KepServer创建OPC UA服务器,利用OPC UA客户端就可以实现与PLC的的交互(读取与修改PLC变量),下图红色即为OPC UA通信的数据流
在这里插入图片描述

先用官方提供的客户端软件进行通信测试接口正常,再自己去写。

3. C#写一个OPC DA客户端(控制台程序)

3.1 动态库加载及函数介绍

新建项目,加载dll库(利用COM技术写的)
在这里插入图片描述
添加引用,查看到其中包含了众多方法
在这里插入图片描述
其中OPCGroups继承于IOPCGroups接口
在这里插入图片描述
在这里插入图片描述

3.2 数据的读取程序编写

PLC中数据读取程序可以按照以下层次进行读取:OPCServer >> OPCGroups >> OPCGroup >> OPCItems >> OPCItem(标记/变量,最终要读取的)

OPC客户端和服务器不一定在一台电脑,一般会用一台电脑作为服务器,这个电脑就是一个Node,再在电脑中找ServerName,也就是下图中的Prog ID
在这里插入图片描述
连接的对应代码如下:
在这里插入图片描述
运行结果:
在这里插入图片描述
连接之后进行配置

按照OPCServer >> OPCGroups >> OPCGroup >> OPCItems >> OPCItem(标记/变量,最终要读取的)结构进行变量的读取
在这里插入图片描述
在这里插入图片描述
这里只是单个设备单个变量的值读取,可以参考下篇读取多个设备多个变量值的方法

4.学习视频地址:
OPC框架搭建及实现原理分析1OPC框架搭建及实现原理分析2OPC框架搭建及实现原理分析3OPC框架搭建及实现原理分析4

本篇是比较基础和简要的介绍,作为补充请查看OPC通信从入门到精通_2_OPC通信详解和C#客户端编程

  • 7
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
OPC(OLE for Process Control)是一种通信协议,用于将不同厂商的设备和软件连接到PLC(可编程逻辑控制器)系统中。OPC可以方便地读取和写入PLC数据,提供了一种标准化的方式,使不同厂商的设备可以在同一个系统中进行数据交换。 要通过OPC读取PLC数据,首先需要安装并配置OPC服务器软件。OPC服务器软件可以连接到PLC系统,并将PLC数据以标准化的形式暴露给其他设备和软件。 在OPC服务器中,需要创建一个OPC连接,在该连接中配置PLC的连接参数,如PLC的IP地址、端口号、通信协议等。配置完成后,OPC服务器会自动与PLC建立连接。 一旦OPC服务器和PLC建立连接,就可以使用OPC客户端软件来读取PLC数据。在OPC客户端软件中,需要指定要读取的PLC数据的地址和数据类型。这些地址通常是由PLC系统提供的,并且根据PLC的不同而有所差异。 读取PLC数据的过程中,OPC客户端软件会发送读取请求给OPC服务器,然后OPC服务器会向PLC发送请求,获取对应的数据。一旦数据被获取到,OPC服务器会将数据以标准格式返回给OPC客户端软件,然后可以根据需要进行处理和分析。 通过OPC读取PLC数据的优势在于其灵活性和通用性。由于OPC是一个广泛使用的通信协议,可以与不同厂商的设备和软件进行连接,使得系统更加灵活和可扩展。此外,通过OPC读取PLC数据可以提高数据获取的效率和准确性,减少了手动操作和数据录入的错误风险。 总之,通过OPC可以方便地读取PLC数据,提高工业自动化系统的效率和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十月旧城

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值