第8章 工业通信协议入门(Modbus/OPC UA/MQTT)
玩转工业物联网平台 · 章节 8/30 · 40 学时
8.1 工业通信协议概述
工业通信协议是工业设备之间、设备与系统之间进行数据交换的规则和标准。就像人类交流需要共同的语言一样,工业设备之间的数据传输也需要统一的"语言"——通信协议。
工业现场存在大量不同品牌、不同年代的设备,它们使用的通信协议各不相同,这就是工业物联网实施中面临的"协议孤岛"问题。数据采集网关的核心功能之一就是协议转换,将各种工业协议转换为标准的互联网协议(如MQTT、HTTP),实现设备与平台的对接。
8.2 Modbus协议
Modbus是工业领域最常用、最经典的通信协议,由Modicon公司(现施耐德电气)于1979年发布。由于其简单、开放、免费,Modbus成为了工业通信的事实标准,几乎所有的工业设备(PLC、仪表、传感器、变频器)都支持Modbus协议。
8.2.1 Modbus的两种变体
| 变体 | 物理层 | 传输方式 | 特点 | 典型应用 |
|---|---|---|---|---|
| Modbus RTU | RS-485/RS-232串口 | 二进制编码 | 紧凑、高效、适合串口通信 | 仪表数据采集、串口设备联网 |
| Modbus TCP | 以太网 | TCP/IP封装 | 高速、易于集成、适合以太网 | PLC数据采集、智能仪表、以太网设备 |
8.2.2 Modbus的核心概念
Modbus采用主从(Client-Server)架构,一个主站可以与多个从站通信。每个从站有唯一的站地址(1-247)。
Modbus定义了四种数据类型:
| 数据类型 | 访问方式 | 说明 | 典型用途 |
|---|---|---|---|
| 线圈(Coil) | 读写 | 1位布尔量 | 开关控制、继电器输出 |
| 离散输入(Discrete Input) | 只读 | 1位布尔量 | 开关状态、限位信号 |
| 保持寄存器(Holding Register) | 读写 | 16位整数 | 参数设置、控制值、模拟量输出 |
| 输入寄存器(Input Register) | 只读 | 16位整数 | 传感器读数、模拟量输入、状态值 |
8.2.3 Modbus常用功能码
| 功能码 | 功能 | 操作对象 |
|---|---|---|
| 01 | 读线圈 | 线圈 |
| 02 | 读离散输入 | 离散输入 |
| 03 | 读保持寄存器 | 保持寄存器 |
| 04 | 读输入寄存器 | 输入寄存器 |
| 05 | 写单个线圈 | 线圈 |
| 06 | 写单个寄存器 | 保持寄存器 |
| 15 | 写多个线圈 | 线圈 |
| 16 | 写多个寄存器 | 保持寄存器 |
某工厂安装了一台支持Modbus RTU的多功能电力仪表,需要采集电压、电流、功率、电能等数据。
仪表参数:
- 通信接口:RS-485
- 协议:Modbus RTU
- 从站地址:1
- 波特率:9600,数据位8,停止位1,无校验
- 电压寄存器地址:0x0000(输入寄存器,比例0.1V)
- 电流寄存器地址:0x0002(输入寄存器,比例0.001A)
- 功率寄存器地址:0x0004(输入寄存器,比例0.01kW)
- 电能寄存器地址:0x0008(保持寄存器,比例1kWh)
数据采集配置(数晰IOT平台):
- 将智能电表通过RS-485总线连接到数据采集网关
- 在网关中配置Modbus RTU驱动,设置串口参数(9600,8,N,1)
- 添加从站设备,地址1
- 配置数据点:电压(功能码04,地址0,比例0.1)、电流(功能码04,地址2,比例0.001)、功率(功能码04,地址4,比例0.01)、电能(功能码03,地址8,比例1)
- 设置采集周期:5秒
- 网关通过MQTT将数据上传到数晰IOT平台
效果:平台实时显示电表数据,支持历史趋势查询、能耗统计、告警设置。
8.3 OPC UA协议
OPC UA(Open Platform Communications Unified Architecture)是由OPC基金会开发的新一代工业通信标准,是传统OPC(DA/AE/HDA)的统一和升级。OPC UA具有跨平台、安全、标准化、面向对象等特点,被认为是工业4.0和工业互联网的核心通信协议。
8.3.1 OPC UA的核心特性
- 跨平台:不依赖Windows COM/DCOM,可运行在Windows、Linux、嵌入式系统等各种平台
- 安全:内置认证、加密、签名机制,支持证书管理,满足工业安全要求
- 面向对象:支持复杂数据建模,可以表达设备的属性、方法、事件、关系
- 统一架构:统一了数据访问(DA)、报警事件(AE)、历史数据(HDA)等传统OPC规范
- 标准化:OPC基金会制定了各种行业的信息模型(如设备信息模型、能源信息模型)
- 多种传输:支持TCP二进制传输和HTTPS传输,适应不同网络环境
8.3.2 OPC UA与Modbus的对比
| 对比项 | Modbus | OPC UA |
|---|---|---|
| 发布时间 | 1979年 | 2008年 |
| 复杂度 | 简单,易于实现 | 复杂,功能强大 |
| 数据建模 | 只有简单的寄存器,无语义 | 面向对象,支持复杂信息模型 |
| 安全性 | 无内置安全机制 | 内置认证、加密、签名 |
| 跨平台 | 跨平台(串口/以太网) | 跨平台(不依赖COM) |
| 服务质量 | 无 | 支持 |
| 适用场景 | 简单设备、仪表数据采集 | 复杂系统、设备建模、工业4.0 |
| 市场占有率 | 最高,几乎所有设备支持 | 快速增长,中高端设备标配 |
8.4 MQTT协议
MQTT(Message Queuing Telemetry Transport)是一种轻量级的发布/订阅式消息传输协议,由IBM于1999年开发。MQTT设计用于低带宽、不稳定网络环境下的设备通信,具有轻量、开放、简单、低功耗等特点,是物联网领域最流行的应用层协议。
8.4.1 MQTT的核心概念
发布/订阅模式:MQTT采用发布/订阅(Pub/Sub)模式,包含三个角色:
- 发布者(Publisher):发送消息的一方(如传感器、网关、设备)
- 代理服务器(Broker):消息中转服务器,接收发布者的消息并转发给订阅者
- 订阅者(Subscriber):接收消息的一方(如云平台、应用系统)
发布者和订阅者不需要知道对方的存在,通过主题(Topic)进行解耦。
主题(Topic):主题是MQTT消息的分类标签,用斜杠分层,例如:
factory/shop1/device1/temperaturefactory/shop1/device1/pressuresxiai/iot/device001/data
订阅者可以使用通配符订阅多个主题:
+:匹配单层,如factory/+/device1/temperature#:匹配多层,如factory/#(订阅factory下所有主题)
服务质量(QoS):MQTT定义了三个服务质量等级:
| QoS等级 | 说明 | 特点 | 适用场景 |
|---|---|---|---|
| 0 | 最多一次 | 消息可能丢失,不重传 | 高频传感器数据(丢一两个点无所谓) |
| 1 | 至少一次 | 消息保证到达,可能重复 | 大多数工业数据采集 |
| 2 | 恰好一次 | 消息保证到达且不重复 | 关键控制指令、计费数据 |
8.4.2 MQTT的优势
- 轻量级:消息头最小只有2字节,适合低带宽、高延迟网络
- 低功耗:适合电池供电的设备
- 解耦:发布者和订阅者不需要知道对方,系统扩展性好
- 双向通信:支持设备上报数据和平台下发指令
- 长连接:设备与Broker保持长连接,实时性好
- 广泛支持:几乎所有物联网平台和设备都支持MQTT
8.4.3 常见MQTT Broker
- EMQX:开源、高性能、百万级连接,国内最流行
- Mosquitto:轻量级、适合小型部署
- HiveMQ:企业级、高可用
- 云平台内置:阿里云IoT、华为云IoT、数晰IOT平台都内置MQTT Broker
某工厂通过数据采集网关将设备数据上传到数晰IOT平台,使用MQTT协议。
接入配置:
- MQTT Broker地址:mqtt.sxiai.cn:1883
- 客户端ID:gateway_factory001
- 用户名:device001
- 密码:(平台生成的设备密钥)
- 数据上报主题:sxiai/iot/device001/data
- 指令下发主题:sxiai/iot/device001/cmd
- QoS等级:1(至少一次)
数据上报格式(JSON):
{
"deviceId": "device001",
"timestamp": 1696000000000,
"data": {
"temperature": 75.5,
"pressure": 0.85,
"vibration": 2.3,
"status": "running"
}
}
平台处理:数晰IOT平台的MQTT Broker接收到消息后,根据设备ID找到对应设备,解析JSON数据,将数据点存入时序数据库,触发告警规则,更新实时仪表盘。
效果:数据从设备采集到平台展示的延迟小于2秒,支持每秒上万条消息的处理能力。
8.5 其他常见工业协议
8.5.1 西门子S7协议
西门子PLC的专有协议,用于S7-200/300/400/1200/1500系列PLC的数据读写。数据采集网关通常支持S7协议,可以直接读取西门子PLC的数据,不需要PLC端做任何编程。
8.5.2 三菱MC协议
三菱PLC的专有协议,用于三菱Q系列、L系列、FX系列PLC的数据通信。
8.5.3 Profinet
西门子主推的工业以太网协议,是Profibus的以太网版本,具有高实时性,适合运动控制和实时控制场景。
8.5.4 EtherNet/IP
罗克韦尔(AB)主推的工业以太网协议,基于标准以太网和TCP/IP,广泛应用于北美市场。
8.5.5 BACnet
楼宇自动化和控制网络协议,主要用于楼宇自控系统(HVAC、照明、安防)。
8.5.6 HTTP/REST API
虽然不是传统的工业协议,但越来越多的智能设备支持HTTP REST API进行数据交互。HTTP简单、通用、易于集成,适合非实时性的数据采集和设备管理。
8.6 协议选型与转换策略
8.6.1 协议选型原则
- 设备支持优先:首先看设备本身支持什么协议,优先使用设备原生支持的协议,避免额外的转换成本
- 场景匹配:简单仪表数据采集用Modbus,复杂设备建模用OPC UA,设备上云用MQTT
- 实时性要求:实时控制用Profinet/EtherCAT,过程监控用Modbus/OPC UA,数据采集用MQTT/HTTP
- 安全性要求:高安全要求场景选择OPC UA(内置安全)或MQTT over TLS
- 成本考虑:Modbus设备成本最低,OPC UA设备成本较高
8.6.2 协议转换策略
在实际项目中,往往需要进行协议转换。常见的转换场景和策略:
| 转换场景 | 转换方式 | 典型设备 |
|---|---|---|
| Modbus RTU → Modbus TCP | 串口服务器 | MOXA、研华串口服务器 |
| Modbus RTU → MQTT | 数据采集网关 | 数晰IOT网关、研华网关 |
| OPC UA → MQTT | 边缘网关/软件 | 支持OPC UA和MQTT的工业网关 |
| S7/MC → MQTT | 数据采集网关 | 支持多协议的智能网关 |
| 多种协议 → 统一上云 | 多协议网关 | 数晰IOT数据采集网关 |
- 数据映射:协议转换时要注意数据类型、字节序、比例系数的正确映射,特别是Modbus寄存器的高低字节顺序
- 采集周期:合理设置采集周期,避免过快导致设备过载或过慢导致数据丢失
- 断点续传:网络中断时网关应本地缓存数据,网络恢复后自动补传
- 时间同步:网关和设备的时间要同步,避免数据时间戳不准确
- 测试验证:协议转换完成后要进行数据比对验证,确保转换后的数据与设备原始数据一致
8.7 本章小结
本章介绍了工业通信协议的基础知识。要点回顾:
- 工业通信协议是设备之间数据交换的规则,工业现场存在"协议孤岛"问题,需要通过网关进行协议转换。
- Modbus是最常用的工业协议,有RTU(串口)和TCP(以太网)两种变体,采用主从架构,定义了线圈、离散输入、保持寄存器、输入寄存器四种数据类型。
- OPC UA是新一代工业通信标准,具有跨平台、安全、面向对象、标准化等特点,适合复杂系统和工业4.0场景。
- MQTT是轻量级发布/订阅协议,是物联网领域最流行的应用层协议,具有轻量、低功耗、解耦、双向通信等优势。
- 其他常见协议包括西门子S7、三菱MC、Profinet、EtherNet/IP、BACnet、HTTP等。
- 协议选型要遵循设备支持优先、场景匹配、实时性、安全性、成本等原则。
- 协议转换是工业物联网实施的关键环节,要注意数据映射、采集周期、断点续传、时间同步、测试验证。
下一章我们将介绍数据采集网关,帮助你了解如何选择和配置网关,实现设备数据的采集和上传。
📝 本章练习(5题)
答案与解析请在 互动学习看板 中作答查看。
📚 玩转工业物联网平台 课程目录(30 章)
- 第1章 什么是工业物联网(IIoT)
- 第2章 工业物联网与消费物联网的区别
- 第3章 工业物联网的核心价值与典型应用场景
- 第4章 工业物联网四层技术架构详解
- 第5章 数晰IOT物联平台概览与核心功能
- 第6章 工业数据采集的基本概念与重要性
- 第7章 常见工业传感器详解(温度/压力/流量/振动)
- 第8章 工业通信协议入门(Modbus/OPC UA/MQTT)
- 第9章 数据采集网关的作用、选型与配置
- 第10章 数晰IOT平台数据采集配置实战
- 第11章 数据采集常见问题与排查方法论
- 第12章 平台注册登录与界面导览
- 第13章 设备管理:添加设备、分组与标签
- 第14章 物模型设计:属性、服务与事件
- 第15章 数据点配置与数据上报调试
- 第16章 数据可视化:仪表盘搭建与图表配置
- 第17章 告警规则配置与多渠道通知
- 第18章 历史数据查询、导出与分析
- 第19章 OpenAPI接口与第三方系统对接
- 第20章 实战项目一:设备运行状态监控系统
- 第21章 实战项目二:工厂能耗数据采集与分析
- 第22章 实战项目三:生产环境温湿度监测系统
- 第23章 实战项目四:设备预测性维护基础应用
- 第24章 工业物联网与MES/ERP系统集成方案
- 第25章 工业物联网项目实施全流程方法论
- 第26章 工业物联网安全基础与最佳实践
- 第27章 设备运维与常见故障排查
- 第28章 数据质量保障与数据治理基础
- 第29章 工业物联网岗位图谱与能力要求
- 第30章 学习路径规划与职业发展建议
