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

这篇具有很好参考价值的文章主要介绍了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通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写),# OPC通信从入门到精通,OPC通信
    OPC Classic规范是由三个部分组成:通信、报警和历史数据
    OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写),# OPC通信从入门到精通,OPC通信
    OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写),# OPC通信从入门到精通,OPC通信
    OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写),# OPC通信从入门到精通,OPC通信
    OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写),# OPC通信从入门到精通,OPC通信

1.2 OPC通信读写方式

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

  1. OPC 同步方式 :同步方式是指当客户端发送请求后,必须等到服务器响应全部完成后才能返回,期间将一直处于等待状态,因此当多客户端向服务器操作时,客户端程序产生阻塞,同步通讯适用于客户端较少,数据量较小的场合,同步方式的工作流程如下图所示:
    OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写),# OPC通信从入门到精通,OPC通信
    发送请求call之后,需要等一个replay回应,就跟Modbus通信是类似的,一发一回之后,再发再回,

  2. OPC 异步方式 :异步方式是指当客户端发送请求后立即返回,不需要等待服务器的响应,可以进行其他操作,当服务器完成响应后会自动通知客户端,因此相对于同步通讯,异步通讯的效率更高,异步方式的工作流程如下图所示:
    OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写),# OPC通信从入门到精通,OPC通信
    发送完call之后,不需要等,继续发第二个call,等第一个call完成之后会通过事件告知客户端,后边的call的处理方式也是一样

  3. OPC 订阅方式 :订阅方式在初始化时,就需要订阅相应的通信组 Group,这样当服务器的 Group组内有数据发生变化时,就会自动刷新客户端数据,客户端只需要向服务器发送一次请求,因此订阅方式的效率是非常高的,订阅方式的工作流程如下图所示:
    OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写),# OPC通信从入门到精通,OPC通信
    订阅的方式只针对读取,写入可以使用同步和异步,

2. OPC通信仿真

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

前面我们介绍过PLC通过ModbusTCP与上位机直接通信,下面将会以实例再次进行介绍。
以已经建在局域网内的以下PLC为例,可以使用Modbus TCP进行通信
OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写),# OPC通信从入门到精通,OPC通信
以下为写到台达PLC中的程序
OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写),# OPC通信从入门到精通,OPC通信
为了读取对应的值,可以采用Modbus TCP通信进行,以读取D33为例
OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写),# OPC通信从入门到精通,OPC通信
如下图直接在Modbus Poll中输入D33
OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写),# OPC通信从入门到精通,OPC通信
就可以直接读到数据
OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写),# OPC通信从入门到精通,OPC通信
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通信。
OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写),# OPC通信从入门到精通,OPC通信
OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写),# OPC通信从入门到精通,OPC通信
创建台达PLC设备
OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写),# OPC通信从入门到精通,OPC通信
OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写),# OPC通信从入门到精通,OPC通信
OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写),# OPC通信从入门到精通,OPC通信
输入PLC地址和设备地址
OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写),# OPC通信从入门到精通,OPC通信
以上面读取的D33为例创建标记
OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写),# OPC通信从入门到精通,OPC通信
以下就是创建了一个标记,当需要读取更多的变量的时候,就可以通过添加更多标记的方式进行
OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写),# OPC通信从入门到精通,OPC通信

保存配置

运行->连接
OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写),# OPC通信从入门到精通,OPC通信
启动监控后对应的值就读取过来
OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写),# OPC通信从入门到精通,OPC通信
此处的OPC Quick Client相当于客户端,在KepServer上进行配置之后就可以实现与PLC的通信

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

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

打开如下OPC DA客户端软件(模拟上位机),并如下图所示进行选择:
OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写),# OPC通信从入门到精通,OPC通信
OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写),# OPC通信从入门到精通,OPC通信
OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写),# OPC通信从入门到精通,OPC通信
OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写),# OPC通信从入门到精通,OPC通信
OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写),# OPC通信从入门到精通,OPC通信
可以看到读到了对应的变量值
OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写),# OPC通信从入门到精通,OPC通信
这说明服务器所提供的服务是一直在打开的

2.2.4 OPC UA通信仿真实例

上述过程介绍的是OPC DA的过程,在KepServer中也是集成进去了,在右下角有一个图标是关于OPC UA的,进去后的界面如下:
OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写),# OPC通信从入门到精通,OPC通信
这里的49320是?

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

如果是基于TCP的,那么就可以使用网络调试助手连接到,下图显示是连接上了
OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写),# OPC通信从入门到精通,OPC通信
所以KepServer本质上就是一个TCP服务器,可以同时打开OPC DA和OPC UA的服务器

如果要连接OPC UA服务器,可以使用OPC UA客户端,常用的有UaExperter,具体操作如下:
OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写),# OPC通信从入门到精通,OPC通信
OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写),# OPC通信从入门到精通,OPC通信
可以看到数据已经读到

2.2.5 OPC通信仿真实例框架图

绘制一个框架图进行理解,DVP32是台达PLC,通过以太网接口连接到交换机,PC也是连接到交换机上的,也就是在一个局域网内,通过KepServer创建OPC UA服务器,利用OPC UA客户端就可以实现与PLC的的交互(读取与修改PLC变量),下图红色即为OPC UA通信的数据流
OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写),# OPC通信从入门到精通,OPC通信

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

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

3.1 动态库加载及函数介绍

新建项目,加载dll库(利用COM技术写的)
OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写),# OPC通信从入门到精通,OPC通信
添加引用,查看到其中包含了众多方法
OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写),# OPC通信从入门到精通,OPC通信
其中OPCGroups继承于IOPCGroups接口
OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写),# OPC通信从入门到精通,OPC通信
OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写),# OPC通信从入门到精通,OPC通信

3.2 数据的读取程序编写

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

OPC客户端和服务器不一定在一台电脑,一般会用一台电脑作为服务器,这个电脑就是一个Node,再在电脑中找ServerName,也就是下图中的Prog ID
OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写),# OPC通信从入门到精通,OPC通信
连接的对应代码如下:
OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写),# OPC通信从入门到精通,OPC通信
运行结果:
OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写),# OPC通信从入门到精通,OPC通信
连接之后进行配置

按照OPCServer >> OPCGroups >> OPCGroup >> OPCItems >> OPCItem(标记/变量,最终要读取的)结构进行变量的读取
OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写),# OPC通信从入门到精通,OPC通信
OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写),# OPC通信从入门到精通,OPC通信
这里只是单个设备单个变量的值读取,可以参考下篇读取多个设备多个变量值的方法

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

本篇是比较基础和简要的介绍,作为补充请查看OPC通信从入门到精通_2_OPC通信详解和C#客户端编程文章来源地址https://www.toymoban.com/news/detail-606425.html

到了这里,关于OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C#,入门教程(20)——列表(List)的基础知识

    上一篇: C#,入门教程(19)——循环语句(for,while,foreach)的基础知识 https://blog.csdn.net/beijinghorn/article/details/124060844 List顾名思义就是数据列表,区别于数据数组(array)。 List比数组提供强大得多!多!多!多!的功能,能存储更多!多!多!类型的数据(泛型)! List是更

    2024年01月16日
    浏览(55)
  • C#,入门教程(24)——类索引器(this)的基础知识

    上一篇:   C#,入门教程(23)——数据类型转换的一点基础知识 https://blog.csdn.net/beijinghorn/article/details/124187182 工业软件首先要求高可靠性、高可维护性。 作为工业软件的开发者,我们对语言重载的需求是:“ 不可或缺 ”。 没有重载几乎就无法开展大规模的工业软件编程项目

    2024年01月22日
    浏览(46)
  • C#,入门教程(28)——文件夹(目录)、文件读(Read)与写(Write)的基础知识

    上一篇:   C#,入门教程(27)——应用程序(Application)的基础知识 https://blog.csdn.net/beijinghorn/article/details/125094837 C#知识比你的预期简单的多,但也远远超乎你的想象! 与 文件 相关的知识,不算多。 作为初学者,先学习 文本文件 的读写,就足够应付好几年了。 文件 自然是

    2024年01月23日
    浏览(59)
  • Vue2简单使用及相关基础知识概念(适合小白入门,看完就能上手)

    MVC模式(同步通信为主):Model、View、Controller MVP模式(异步通信为主):Model、View、Presenter MVVM模式(异步通信为主):Model、View、ViewModel(目前主要的模式) 2.1 概念 MVVM是一种软件架构设计模式。MVVM的核心是ViewModel层,负责转换Model层中的数据对象来让数据变得更加容易

    2024年02月07日
    浏览(65)
  • Unity C# 之 使用 HttpWebRequest 基础知识/HttpWebRequest 进行异步Post 网络访问/数据流形式获取数据(Task/async/await)的代码简单实现

    目录 Unity C# 之 使用 HttpWebRequest 基础知识/HttpWebRequest 进行异步Post 网络访问/数据流形式获取数据(Task/async/await)的代码简单实现 一、简单介绍 二、实现原理 三、注意事项 四、效果预览 五、关键代码 附录 : HttpWebRequest 的一些基础知识 1、HttpWebRequest 常用属性 2、HttpWebRequest 

    2024年02月05日
    浏览(60)
  • 3.精通RabbitMQ—基础 RabbitMQ知识、进阶 RabbitMQ知识

    RabbitMQ面试题 (总结最全面的面试题) 入门RabbitMQ消息队列,看这篇文章就够了 消息队列 是一种基于 队列 ,用于解决 不同进程或应用 之间 通讯 的 消息中间件 。 支持多种 消息传递模式 ,如 队列模型 、 发布/订阅模型 等。 业务解耦 :通过 发布/订阅 模式,减少系统的 耦

    2024年02月16日
    浏览(45)
  • 通信基础知识

    什么是信道增益? 信道增益可以随着时间变化、也可以不随着时间变化,如果位置不变,周边位置没有发生任何改变,电磁波传播路径较为稳定。如果处于移动的状态,那么信道增益会宿舍多普勒频移、天线相位、路损、波束成形矢量等因素有关。 什么是多普勒频移? 多普

    2024年02月09日
    浏览(43)
  • 01通信基础知识

    码元(符号) 也可以叫符号(symbol)。通过不同的调制方式(诸如FSK、QAM等等),可以在一个码元符号上负载多个bit位信息。举个例子,4QAM(即QPSK)调制的全部四种码元符号,一种符号可以带两个bit的信息。 波特率 波特率(也称信息传送速率、码元速率、符号速率、或传

    2024年02月06日
    浏览(39)
  • 5G | 无线通信基础知识

    eMBB:增强性移动带宽 uRLLC:超高可靠低时延 mMTC:大规模机器通信 1 10 100 1ms时延、10Gbps数据速率、100万每平方公里连接数 增强覆盖:提升手机功率和上下行频谱共享 提高效率:Massive MIMO、调制编码、多址、双工、全双工 降低时延:优化无线覆盖 优点:分集增益、复用增益

    2024年02月09日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包