物联网数据接入篇-应用层 OPC(8)
前几篇文章讲述的是TCP/IP 模型中的网络接口层、网络层、传输层、应用层部分协议,这里到了第四层应用层的 MQTT协议。都是物联网常用的应用层协议。这里写到了重头戏 OPC 框架。
OPC 框架,OLE for Process Control,用于过程控制的 OLE,是针对现场控制系统的一个工业标准接口,是工业控制和生产自动化领域中使用的硬件和软件的接口标准。并非传统意义上的单纯应用层协议。
OPC 标准于 1996 年首次发布,实现把 PLC 特定的协议(如 Modbus、Profibus 等)抽象成为标准化的接口,作为“中间人”的角色把其通用的“读写”要求转换成具体的设备协议。
一、OPC 解决的问题
PLC 和 PC 上的 SCADA 系统或者 HMI软件(称为 OPC Client)进行数据交换的驱动程序不一致,通信协议和接口不一致。且向更上一层传递数据也不容易。
1. 没有 OPC 之前
电脑上要安装 3 个驱动程序,安装 3 套组态软件。数据标准也不一样,不能整合到一起自己用,也不能很好的把数据在交给上一层的应用。
2. 有了 OPC 标准之后
电脑上安装 1 个驱动程序,安装 1 个 SCADA 系统,就能访问所有数据。统一监控、调度,统一数据分析、上传,都得到了很好的解决。硬件厂家生产的硬件和驱动程序,必须符合 OPC 规范,把数据发送到 OPC 服务端,通过 OPC 客户端,有一套标准的读取数据、解析数据的方法。
不需要这么多驱动程序了,大家都说中文,就不要翻译了,就是这个意思。严谨一点,这里驱动程序1、2、3 还是需要的,但是我们电脑可以不用过度关心他们了。
3. OPC 服务端和客户端怎么沟通
正好微软系统中就有这么一个沟通工具框架 OLE,啥是 OLE ?Object Link Embeded,在程序之间链接和嵌入对象数据。解决的是程序与程序之间的通信问题(可以是不同电脑之间的程序)。
他的历史是这样的:
微软在 OLE2.0 中建立了一个称为COM(Component Object Model,即组件对象模式)的新规范。为了满足 Internet 战略,微软把OLE 换成了 ActiveX。通俗来说,OLE / COM / ActiveX 技术,就是让我们在 word 文档中调用 Excel 的能力插入表格,插入之后双击还能调用 Excel 能力进行编辑,是一种跨应用程序相互调用的一种能力规范。
4. OPC 有哪些能力
在 PLC 和 HMI 中间增加一个标准化接口就是 OPC Server,而不用知道每个驱动程序的细节。他有以下能力:
- OPC DA:它允许收集实时读取、写入和监控过程安量。
- OPC HA:OPC 历史数据访问,提供对已存储数据的访问的。
- OPC A&E:OPC 报警和事件接口。允许接受事件和报警通知。
5. OPC 有什么问题:
NO1. 过度依赖 Windows 系统。
因为 COM / DCOM 技术必须依赖 Windows,限制了 OPC 发展。为了解决这个问题,出现了 OPC UA(OPC 统一架构)。
NO2. 不能进行互联网通信。不能做到随时随地的监控数据。
二、OPC DA 和 OPC
既然 OPC (DA)有问题,那他就要升级到 OPC UA。接下来介绍一下这两种规范的差异:
OPC UA 是为了顺应标准化以及跨平台的发展趋势,也是为了能更好地推广 OPC,OPC 基金会于近些年来在先前 OPC DA 成功应用的基础上推出了一项全新的 OPC 标准,即 OPC UA。
OPC UA 接口协议涵盖了之前的 A&E、DA、OPC XML DA 或者 HDA,仅通过一个地址空间就能访问先前所有的对象,并且不会受到 WINDOWS 平台的限制,这是因为它是从传输层 Scoket 及以上进行定义的。
1. OPC UA 五大特点
OPC 统一框架,解决了依赖 Windows 和不能连接互联网问题。(Open Platform Communications Unified Architecture)。他有五大特点:
1)跨平台和跨语言:
消除了对 COM / DCOM 技术的依赖,要求 OPC UA 应用可以在不同平台部署(PLC、嵌入式控制器、网关、Web 应用程序、智能手机、Windows、Linux、)。
2)可联网安全性高:
可以联网,使用 HTTPS 协议,防火墙友好,联网安全交换信息。
3)复杂信息模型,实物资产数字化:
①数据高度结构化:能够详细地定义和组织各种复杂的工业对象和数据。②丰富的语义表达:可以准确地传达对象的属性、关系和行为等信息。简单说就是不只传了一个值、值得质量、时间戳,还包括他的单位、设定值、传感器的类型、配置参数、它在整个系统架构中的位置、他与其他设备组件的关系。
4)面向服务架构 SOA:
主站从站不是传输比特或字节(对,这里 cue 的就是 Modbus,传输的是 bit 或者 byte,用户不友好型)。OPC UA Server 提供了读、写、配置等等服务供 Client 端调用。可读性强、可复用性强、可维护性强。这里采用了面向服务的设计,可以调用很多标准的方法来用。可能之前写的是 一堆二进制代码,现在可以用人能看得懂的英文来编程了。
5)强大的IT 集成性:
说的是传感器直接能把数据传到网上而不经过中间层。
之前数据是这样传递的:传感器–PLC 逻辑控制器–SCADA/HMI 系统–MES 智能制造系统–ERP 系统。
通过 OPC UA,这样传递数据:传感器–PLC 逻辑控制器–OPC 服务器–ERP 系统。他的野心和大,能实现PLC 逻辑控制器–SCADA/HMI 系统–MES 智能制造系统–ERP 系统这几两个项目之间的俩俩通信,为工业 4.0 打好基础。
2. OPC UA 基础架构
3. OPC UA 强大的信息建模功能
强大的信息建模(IM)是OPC UA的核心。OPC UA定义了基本模块和通用规则,并使用它们构建面向对象的模型(看上面的图,也就知道 OPC 为啥不单纯是应用层协议了):
- 服务发现:也叫查找,允许客户端查找OPC UA服务器、以及服务器支持的协议、安全策略和其他功能。
- 定义协议映射:允许在OPC UA应用程序之间建立连接和交换标准化的信息。
- 信息访问:包括在地址空间公开基于对象的信息模型的方法和访问这些信息的服务。看,是面向服务的。
- 安全性和稳健性:将两者集成到信息传输和信息访问当中。稳健也叫鲁棒性。
- 信息模型在此基础架构之上逐级分层。OPC UA 指定了一些基本信息模型(数据访问—DA、报警和事件—AE等等),这些模型定义了如下常用的对象,包括实时信息和历史数据变量以及警报。
4. OPC UA 通信协议
二进制通讯协定是 opc.tcp://Server;二进制传输效率高,资源需求少,可以穿透防火墙。
Web服务的通讯协定是 http://Server。支持不同的开发工具和开发环境。
客户端-服务器通信:
OPC UA客户端-服务器通信采用面向服务的体系结构(SOA),服务定义了信息模型的访问方式。不同于传统的Web服务,传统Web服务使用基于XML的WSDL来描述服务,这种方法存在提供商间互操作性差异的问题。
相比之下,OPC UA预先定义了通用的标准化服务,确保所有实现都兼容。由于服务的标准化,OPC UA不需要像WSDL那样的特定定义,这确保了所有实现的兼容性和互操作性,使调用者无需了解特定的服务结构或行为细节。
发布、订阅模式:
PubSub 模式为数据和事件通知提供了一种替代机制,与传统的客户端-服务器通信不同,它优化了多对多的交互。在PubSub模型中,多个客户端可以同时接收广播通知,这些通知以“一触即发”的方式发送。
使用PubSub,OPC UA应用程序不直接交换请求和响应。相反,发布者将消息发送到面向消息的中间件,而无需知道订阅者的具体身份。同样,订阅者可以通过订阅感兴趣的数据或事件,而发布者不需要知道具体哪些订阅者存在。
PubSub和客户端-服务器模式都基于OPC UA的信息模型。通常情况下,OPC UA服务器充当发布者,而OPC UA客户端充当订阅者。本地的OPC UA客户端-服务器通信可以用于配置和管理PubSub组件。
5. OPC DA 和 OPC UA 的区别
三、应用
OPC Server 提供数据采集、协议转换、数据管理服务。支持数据采集与下控,下控还是推荐用 IO server。
- 工业自动化:在工厂中连接各种控制系统、设备和监控软件,实现数据共享和协同工作。
- 智能制造:助力智能工厂中设备之间的数据交互和智能化管理。
- 能源管理:用于能源监控系统,实时获取和分析能源数据。
- 楼宇自动化:在智能楼宇系统中,使不同的子系统能够高效通信。
- 过程控制:确保过程控制系统中数据的准确和及时传递。
通俗来说,OPC是个中介,OPC包括一整套接口、属性和方法的标准集,用于过程控制和制造业自动化系统。必须依赖Windows系统,就是说 OPC Server 必须部署在 Windows 服务器上,以为他依赖了 Windows 的 COM 技术(不太严谨哈,OPC UA就致力于跨系统服务)。
最快的学习方法是看官方文档:OPC-UA-Interoperability-For-Industrie4-and-IoT-CN-v11s。https://opcfoundation.org/wp-content/uploads/2020/09/OPC-UA-Interoperability-For-Industrie4-and-IoT-CN-v11s.pdf
参考文献
15 张图, 把TCP/IP 讲得一清二楚!-腾讯云开发者社区-腾讯云
什么是OPC UA&它是如何工作的?_哔哩哔哩_bilibili
探索 OSI 会话层:建立和管理通信会话的关键_不同机器之间用户会话的建立与管理-CSDN博客
【2024软考】《网络工程师》新版精讲视频-希赛网(零基础系统教程,建议收藏)!_哔哩哔哩_bilibili
MQTT协议_mqtt payload一定要字符串吗-CSDN博客
MQTT协议_mqtt payload一定要字符串吗-CSDN博客
如何使用CoAP的对称加密自主接入和DTLS自主接入_物联网平台(IoT)-阿里云帮助中心
network_protocol_structures.pdf
modbus_application_protocol_specification_v1.1b3.pdf
https://help.dtuip.com:8888/images/20191028084839667.pdf
https://zh.wikipedia.org/wiki/Modbus
https://www.51cto.com/article/670429.html
https://www.youtube.com/watch?v=f5oPEVhZFug
后记
七层协议是写完了。爆肝不易,点个赞吧。一起体系化的学习和积累且输出。
本文由 @跃曰 原创发布于人人都是产品经理。未经作者许可,禁止转载。
题图来自Unsplash,基于CC0协议。
该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务。
- 目前还没评论,等你发挥!