Publish by2025-04-19
Updated by2025-04-23
本科读的网络工程,没怎么接触过工业使用的一些通讯协议,近期开发使用到一个 RS485 + ModbusRTU 的组合来做业务数据传递处理,写个文章记录下吧!
Written by - kok-s0s
复盘了下,根本没啥特别难的点,只是 DDD 领域驱动开发(工业自动化),这个领域下一些技术词汇对我而言还是有些陌生。直接上手开发带着些许迷茫罢了,这个 RS485 物理层协议蛮简单的。其实作为上位机应用的开发,甚至于我,无需过分关注物理层协议用到了什么,关键的是 Modbus 这个工业通讯协议我要根据业务如何使用。
RS485 物理层协议在维基百科上最新名词为EIA-485了…
目前开发的应用需要外接一个硬件设备使用,应用和这个硬件设备的数据交互是通过 RS485 协议进行的(OSI 物理层)。
打通应用和硬件设备之间的数据交互,完成数据的收发以及相关业务功能的开发,迷茫的是数据收发处理,业务功能的开发就简单多了。
作为通讯一方的主站,应用是使用公司所封装的一个 SDK 接口走 ModbusRTU 协议方式对设备寄存器做读写操作;
作为通讯一方的从站,设备是使用 QT 生态下的 ModbusRTU 相关类对设备寄存器做读写操作;
两方本质使用的都是 ModbusRTU 工业通信协议;
整个数据交互开发,我仅仅只用到 Modbus 协议中的 0x03 读取多个寄存器功能码 和 0X10 写多个寄存器功能码;
以及熟悉了下 QT 生态下是如何使用 ModbusRTU 协议的 - QModbusRtuSerialSlave;
剩下的都是和 ChatGPT 的一个问答交互学习以及修改代码的事情。
Modbus 是一种广泛应用于工业自动化领域的通信协议,主要用于工业设备(如 PLC、传感器、变频器、仪表等)之间的数据交换。
| 特性 | 说明 |
|---|---|
| 设计初衷 | 为工业环境设计,强调简单、可靠、实时性。 |
| 典型应用场景 | 工厂自动化、SCADA 系统、电力监控、楼宇控制等。 |
| 硬件兼容性 | 支持 RS485(抗干扰)、RS232、以太网(Modbus TCP),适应工业现场布线。 |
| 协议简单性 | 帧结构紧凑,易于嵌入式设备实现(适合资源受限的工业控制器)。 |
| 主从架构 | 适合工业控制中的集中监控(如 PLC 作为主站,传感器/执行器作为从站)。 |
| 协议 | 层级 | 特点 | 适用场景 |
|---|---|---|---|
| Modbus | 应用层 | 简单、通用、低成本 | 中小型工业控制系统 |
| PROFINET | 实时以太网 | 高速、确定性延迟 | 高性能自动化(如汽车制造) |
| EtherCAT | 实时以太网 | 分布式时钟、超低延迟 | 精密运动控制(如机器人) |
| CANopen | 数据链路层 | 抗干扰强、多主架构 | 车辆、工程机械 |
一个知识领域入了个门,之后遇到一些类似问题,也能轻松迎刃而解了!
Top