OPC通信从入门到精通 您所在的位置:网站首页 西门子opcua服务器 OPC通信从入门到精通

OPC通信从入门到精通

2023-11-20 08:46| 来源: 网络整理| 查看: 265

文章目录 1. OPC基础知识:OPCDA,OPCUA1.1 OPC基础知识1.2 OPC通信读写方式 2. OPC通信仿真2.1 上位机与PLC通过ModbusTCP直接通信2.2 OPC通信介绍及实例2.2.1 OPC通信与ModbusTCP比较2.2.2 OPC通信应用场景2.2.3 OPC DA通信仿真实例2.2.4 OPC UA通信仿真实例2.2.5 OPC通信仿真实例框架图 3. C#写一个OPC DA客户端(控制台程序)3.1 动态库加载及函数介绍3.2 数据的读取程序编写

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 读写方式主要有三种,分别是同步方式、异步方式及订阅方式,订阅方式仅针对读取有效。

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

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

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

2. OPC通信仿真 2.1 上位机与PLC通过ModbusTCP直接通信

前面我们介绍过PLC通过ModbusTCP与上位机直接通信,下面将会以实例再次进行介绍。 以已经建在局域网内的以下PLC为例,可以使用Modbus TCP进行通信 在这里插入图片描述 以下为写到台达PLC中的程序 在这里插入图片描述 为了读取对应的值,可以采用Modbus TCP通信进行,以读取D33为例 在这里插入图片描述 如下图直接在Modbus Poll中输入D33 在这里插入图片描述 就可以直接读到数据 在这里插入图片描述 ModbusTCP:PC作为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框架搭建及实现原理分析1;OPC框架搭建及实现原理分析2;OPC框架搭建及实现原理分析3;OPC框架搭建及实现原理分析4

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



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有