探索工业互联网领域中的设备通信协议
一、背景
随着 ICT 技术在工业领域的深入应用,工业互联网已逐渐成为工业领域的关键基础设施和新型应用模式,改变了企业研发、生产、管理和服务的方式。这里我们不讨论工业互联网的定义,也不深究与之相关的智能制造、制造业数字化转型等概念,我们来看一下这些概念都会用到基础技术 - 设备通信协议。
我们先看看书本上的定义:协议(protocol)定义了在两个或多个通信实体之间交换的报文的格式和顺序,以及报文的发送/接收或其他事件所采取的操作。(来自《计算机网络:自顶向下方法 原书第 8 版》)
通俗一点理解,通信协议用来描述两个或多个设备如何在系统中进行通信,内容包括传输数据的方式、数据格式、错误检测和纠正方式、信息交换流程等。工业领域的通信协议通常用于控制和监控工业设备,如机器人、流水线、PLC(可编程控制器)等。
二、设备通信协议的作用
我们以一个抽象的工业互联网系统架构为例,看一下设备通信协议所处的位置。
系统架构说明:
最上层是应用层,包括流程型、业务型和创新型应用,直接为用户提供服务。
中间是平台层,是系统的主体。对上提供数据管理、数据建模和分析能力,以支撑上层应用;对下提供设备接入服务,负责连接众多工业设备,并提供边缘侧的计算能力。
最下层是设备层,包括各种工业服务,以及工业设备和产品。这里是制造业的实体,需要连接到平台层,以在工业互联网中充分发挥其作用。
平台要与设备层建立连接,就需要用到通信协议。可以看到我们本文讨论的设备通信协议,是工业互联网的重要基础。
三、工业领域设备通信协议的演进
用在设备层的通信协议主要干两件事,一是从设备采集数据到平台,二是平台下发控制指令给设备。以现代计算机的视角来看,用于设备间通信的协议大致经历了以下三个阶段:
1. 电气控制时代
早期的工业控制主要是基于电子电气技术的自动化。电气控制系统使用电气设备和电气控制设备,通过电气信号来控制、监控和协调生产过程中的各种设备和机器。电气控制系统主要包括控制装置、控制线路、控制设备和被控制设备:
(1) 控制装置:包括控制器、人机界面设备和输入/输出设备等,是电气控制系统的核心,负责接收外部信号、处理信息、发送控制命令和显示运行状态等。
(2) 控制线路:包括连接控制装置和控制设备的电气线路,控制线路负责传输控制信号和供电。
(3) 控制设备:包括转换器、变频器、接触器、继电器、电动机保护装置等,负责根据控制信号对被控制设备进行控制、监控和保护。
(4) 被控制设备:包括电机、泵、阀门、传送带等,是电气控制系统的最终执行部分,负责执行控制命令,实现对生产过程的控制、监控和协调。
电气控制可以简单认为是用弱电控制强电。相对于人工控制,基于电子电气技术的自动化可以自动控制生产过程中的各种设备和机器,提高生产效率;提供精确的控制和监控,减少人为因素导致的误差和缺陷,提高生产质量。但以现在的技术水平来看,建设成本和维护成本都比较高,技术难度较高,需要具备较高的技术知识和操作技能。
2. PLC 时代
PLC 全称 Programmable Logic Controller(可编程逻辑控制器),是一种具有微处理器的数字电子设备,用于自动化控制的数字逻辑控制器。
PLC 起源于 1960 年代,与美国现代工业自动化的发展密不可分。在 PLC 出现之前,汽车制造业中的一般控制、顺序控制以及安全互锁逻辑控制必须完全依靠众多的继电器、定时器以及专门的闭回路控制器来实现。它们体积庞大、噪音严重,不但每年的维护工作要耗费大量人力物力,而且继电器-接触器系统的排线检修等工作对维护人员的熟练度要求也很高。当时美国通用汽车公司为解决这些问题,在 1968 年向社会公开招标,要求设计一种更新的系统来替换继电器系统,并提出了著名的“通用十条”招标指标。美国 DEC 公司根据这一设想,于 1969 年研制成功了第一台 PDP-14 控制器,在汽车自动装配线上使用并获得成功。
由于当时系统主要用于顺序控制,只能进行逻辑运算,所以被命名为可编程逻辑控制器。最早期的 PLC 只有简易的逻辑开/关功能,但比起传统继电器的控制方式,已经具有容易修改、安装、诊断与不占空间等优点。后来随着不断发展,当初功能简单的计算模块已经有了包括逻辑控制、顺序控制、模拟控制、多机通信等功能,名称也改为 Programmable Controller(可编程控制器),首字母可以简写为 PC。但由于这个简写与 Personal Computer(个人电脑,PC)的简写冲突,也是因为多年的使用习惯,人们还是使用 PLC 这一简写。
在 PLC 领域,有 Modbus、OPC 等多种常用的通信协议。
(1) Modbus
Modbus 是一种串行通信协议,1979 年由 Modicon 公司(现在是施耐德电气)发布,已成为工业领域通信协议事实上的标准。Modbus 协议存在多个版本,可使用串口、以太网和其他网络,但大多数 Modbus 设备还是基于串口 RS485 进行通信。
基于串行连接,Modbus 存在两个变种。Modbus RTU 采用二进制方式表示,使用循环冗余校验;Modbus ASCII 采用人类可读的文本方式表示,使用纵向冗余校验。基于 TCP/IP(例如以太网)连接的 Modbus 也存在多个变种,这种方式不需要校验和计算。Modbus 的所有变种版本在数据模型和功能调用上是相同的,只是封装方式不同。
Modbus 协议采用主从架构,有一个节点是主节点,其他参与通信的是从节点,每个从节点都有一个唯一地址。在串行网络中,只有主节点可以发送命令。在以太网上,任何一个设备都能发送命令,但通常也只有一个主节点设备发送命令。一条 Modbus 命令包含了目标设备地址,网络中所有设备都会收到命令,但只有目标设备会执行和回应命令。
(2) OPC
OPC 全称 Open Platform Communication(开放平台通信),旧称 OLE for Process Control(用于过程控制的 OLE),是用于工业自动化的一种通信标准。1996 年首次发布,由 OPC 基金会维护。2011 年名字从“用于过程控制的 OLE”改为“开放平台通信”,以反映 OPC 已经从过程控制领域推广到智能建筑、离散制造等。
OPC 规范是以微软所开发、针对 Windows 系统的 DDE、COM 及 DCOM 技术为基础,定义了过程控制及工厂自动化需要的对象、接口及方法,目的是为了让不同类型的设备间更具互操作性,以减少硬件设计者、软件合作厂商、SCADA 及 HMI 厂商处理这类问题的精力。
2006 年发布的 OPC UA(OPC Unified Architecture,OPC 统一架构)可以用 Java、.NET、C 语言实现,避免了早期 OPC 版本需要用 Windows 系统才能实现的问题。OPC UA 结合了现有的 OPC 接口功能,加入了 XML、Web Service 等技术,以更好地支持 MES、ERP 等应用。
在这个领域还有 PROFIBUS、HART、CAN 等常用协议,这里就不一一展开介绍了。
3. 计算机和互联网时代
随着工业领域的应用场景越来越复杂,计算机和互联网越来越多的介入到这个领域中,通信的对象也不再局限于传统工业设备和 PLC,MQTT、CoAP、HTTP 等更“现代化”的协议应用也越来越普及。
(1) MQTT
MQTT 全称 Message Queuing Telemetry Transport(消息队列遥测传输),是基于发布/订阅模式的消息协议,工作在 TCP/IP 之上,是为较低的硬件性能和较差的网络状况而设计的。1999 年发布第一个版本,ISO 标准为 ISO/IEC PRF 20922。
MQTT 定义了两种网络实体:消息代理(Message Broker)和客户端(Client),消息代理用于接收来自客户端的消息,并转发至目标客户端。信息的传输是通过主题(Topic)管理的,发布者不需要知道订阅者的位置,订阅者也不需要配置发布者的相关信息,两者可以充分解耦。
MQTT 基于 TCP 协议,变体 MQTT-SN 用于在蓝牙上传输,基于 UDP。MQTT 协议使用普通文本,不包含安全和认证措施,但可以使用 TLS 来加密和保护发送的数据,以防止拦截、修改或伪造。MQTT 默认端口为 1883,加密端口为 8883。
(2) CoAP
CoAP 全称 Constrained Application Protocol,字面意思是“受限应用协议”,用在资源受限的物联网设备上。区别于 MQTT,CoAP 传输层使用 UDP,基于 REST,资源有 URL 地址,客户端可以使用 POST、GET、PUT、DELETE 等方法来访问 Server,操作丰富。CoAP 是二进制格式的,更加紧凑、轻量,最小长度仅 4 个字节。非长连接通信,适用于低功耗物联网场景。
CoAP 的安全性是用 DTLS 加密实现的。DTLS 全称 Datagram Transport Layer Security(数据包传输层安全),采用 UDP 或 SCTP。DTLS 实现需要的资源和带宽较多,不适用于资源和带宽非常有限的场景,并且仅在单播情况下适用。
2017 年发布的 LwM2M 基于 CoAP 构建,具有更丰富的特性和更完善的协议架构,现在已有较多公有云服务商支持。
四、小结
电气控制时代 -> PLC 时代 -> 计算机和互联网时代,这个区分方式不太严谨,更多的是个人经验的总结。
在电子电气时代,设备间通信主要是电气信号;到了 PLC 时代已经有了可编程的概念,灵活性大幅提升;而在计算机和互联网时代,越来越多的“现代化”技术应用进来,工业领域的应用场景也得到了极大丰富。我们现在经常讨论的工业互联网,就是在这些通信技术之上构建的。
但这些技术并不是非此即彼的替代关系,在复杂设备内部还是电气信号,很多大型工厂内部的工业自动化系统还是建立在 PLC 之上。AWS、Azure、阿里云、华为云等公有云服务商提供的 IoT 接入服务,主要使用 MQTT、CoAP、HTTP 等通用协议,在工厂这一侧还是要部署代理或者边缘服务,做设备的对接和交互。
新技术的引入延展了工业领域的应用场景,但同时也带来了更多的风险和挑战,需要投入更多精力做系统性的规划和设计。希望大家能更全面的看待技术演进,用技术为各个领域创造更大价值。
版权声明: 本文为 InfoQ 作者【JustYan】的原创文章。
原文链接:【http://xie.infoq.cn/article/c4ed10ef769d573361ff21f99】。
本文遵守【CC BY-NC】协议,转载请保留原文出处及本版权声明。
评论