Modbus 工业通讯协议实践

Publish by2025-04-19

Updated by2025-04-23

本科读的网络工程,没怎么接触过工业使用的一些通讯协议,近期开发使用到一个 RS485 + ModbusRTU 的组合来做业务数据传递处理,写个文章记录下吧!

Written by - kok-s0s

Qt

C++

Qt

上位机

复盘了下,根本没啥特别难的点,只是 DDD 领域驱动开发(工业自动化),这个领域下一些技术词汇对我而言还是有些陌生。直接上手开发带着些许迷茫罢了,这个 RS485 物理层协议蛮简单的。其实作为上位机应用的开发,甚至于我,无需过分关注物理层协议用到了什么,关键的是 Modbus 这个工业通讯协议我要根据业务如何使用。

RS485 物理层协议在维基百科上最新名词为EIA-485了…

起因

目前开发的应用需要外接一个硬件设备使用,应用和这个硬件设备的数据交互是通过 RS485 协议进行的(OSI 物理层)。

目标

打通应用和硬件设备之间的数据交互,完成数据的收发以及相关业务功能的开发,迷茫的是数据收发处理,业务功能的开发就简单多了。

触类旁通 + ChatGPT

作为通讯一方的主站,应用是使用公司所封装的一个 SDK 接口走 ModbusRTU 协议方式对设备寄存器做读写操作;

作为通讯一方的从站,设备是使用 QT 生态下的 ModbusRTU 相关类对设备寄存器做读写操作;

两方本质使用的都是 ModbusRTU 工业通信协议;

整个数据交互开发,我仅仅只用到 Modbus 协议中的 0x03 读取多个寄存器功能码0X10 写多个寄存器功能码

以及熟悉了下 QT 生态下是如何使用 ModbusRTU 协议的 - QModbusRtuSerialSlave

剩下的都是和 ChatGPT 的一个问答交互学习以及修改代码的事情。

与 GPT 问答的记录及一些理解梳理

Modbus 是一种广泛应用于工业自动化领域的通信协议,主要用于工业设备(如 PLC、传感器、变频器、仪表等)之间的数据交换。

Modbus 的工业属性

特性说明
设计初衷为工业环境设计,强调简单、可靠、实时性。
典型应用场景工厂自动化、SCADA 系统、电力监控、楼宇控制等。
硬件兼容性支持 RS485(抗干扰)、RS232、以太网(Modbus TCP),适应工业现场布线。
协议简单性帧结构紧凑,易于嵌入式设备实现(适合资源受限的工业控制器)。
主从架构适合工业控制中的集中监控(如 PLC 作为主站,传感器/执行器作为从站)。

Modbus 的工业应用案例

为什么工业领域偏爱 Modbus?

Modbus 的局限性(工业场景中的注意事项)

Modbus 与其他工业协议对比

协议层级特点适用场景
Modbus应用层简单、通用、低成本中小型工业控制系统
PROFINET实时以太网高速、确定性延迟高性能自动化(如汽车制造)
EtherCAT实时以太网分布式时钟、超低延迟精密运动控制(如机器人)
CANopen数据链路层抗干扰强、多主架构车辆、工程机械

End

一个知识领域入了个门,之后遇到一些类似问题,也能轻松迎刃而解了!

Top