前言

在学习 STM32、PLC、RS485、工业传感器或者智能电子鼻时,相信大家一定听过 Modbus 这个词。

很多初学者第一次接触时都会有这样的疑问:

Modbus 到底是什么?为什么工业设备几乎都在用它?

其实,Modbus 并没有想象中那么复杂。

本文将用最简单、最容易理解的方式,带大家彻底弄懂 Modbus,包括它的工作原理、通信方式、数据格式以及实际应用。

阅读完本文,你将能够理解:

  • 什么是 Modbus?

  • Modbus 为什么如此流行?

  • Master(主站)和 Slave(从站)是什么?

  • 什么是寄存器(Register)?

  • Modbus RTU 和 Modbus TCP 有什么区别?

  • Modbus 在 STM32 和智能电子鼻中的应用。

建议先收藏本文,再慢慢阅读。


一、什么是 Modbus?

Modbus 是一种工业通信协议(Communication Protocol),由 Modicon 公司于 1979 年提出(现属于施耐德电气)。

它最大的作用就是:

让不同厂家的工业设备能够按照统一的规则进行通信。

例如:

  • PLC

  • STM32

  • Arduino

  • 气体传感器

  • 温湿度模块

  • 电表

  • 变频器

  • 工控机

  • 上位机软件

只要都支持 Modbus,它们之间就可以互相交换数据。


二、为什么需要 Modbus?

举一个生活中的例子。

假设有三位外国人:

  • 中国人说中文

  • 美国人说英语

  • 日本人说日语

如果没有共同语言,他们几乎无法交流。

工业设备也是一样。

例如:

A 厂家的温湿度模块发送:

Temp=25

B 厂家的模块发送:

Temperature=25℃

C 厂家甚至发送:

0x0019

不同厂家各说各的话,设备根本无法互相理解。

于是,工业领域制定了一套统一的通信规范:

Modbus。

只要大家都按照 Modbus 协议发送数据,不同厂家的设备就能顺利通信。


三、Modbus 是如何工作的?

Modbus 采用的是一种非常经典的通信模式:

Master(主站)
        │
   发送请求
        │
        ▼
Slave(从站)
        │
   返回数据

整个过程可以理解成老师点名。

老师:

张三!

学生:

到!

老师:

李四!

学生:

到!

老师不点名,学生不会主动回答。

Modbus 也是一样。

主站负责发问,从站负责回答。


四、Master(主站)和 Slave(从站)

很多人刚开始学习 Modbus 时,都会被 Master 和 Slave 这两个概念绕晕。

其实非常简单。

Master(主站)

负责主动发送命令。

例如:

  • PLC

  • STM32

  • 工控机

  • LabVIEW

  • Python 上位机

  • Qt 软件

例如:

请告诉我当前 NO₂ 浓度是多少?

Slave(从站)

负责等待命令,然后回复数据。

例如:

  • NO₂ 传感器

  • VOC 传感器

  • 温湿度模块

  • 电表

  • 智能电子鼻采集节点

例如:

当前浓度:18 ppm

整个通信过程始终遵循:

一问一答。


五、Modbus 数据是如何存储的?

设备内部通常都有很多数据。

例如:

  • 温度

  • 湿度

  • NO₂

  • SO₂

  • NH₃

这些数据放在哪里?

答案就是:

寄存器(Register)。

可以把寄存器理解成一个一个的小抽屉。

例如:

抽屉0001

里面存放:

NO₂浓度
抽屉0002

里面存放:

VOC浓度
抽屉0003

里面存放:

温度
抽屉0004

里面存放:

湿度

所以:

读取寄存器0003

实际上就是:

读取温度

是不是非常容易理解?


六、设备地址(Address)

如果一条 RS485 总线上连接了很多设备,该如何区分?

答案就是:

设备地址。

例如:

设备 地址
NO₂传感器 1
VOC传感器 2
温湿度模块 3

主站发送:

读取地址1的数据

只有地址为 1 的设备会响应。

其他设备都会保持沉默。


七、功能码(Function Code)

除了知道找谁,还需要告诉设备:

我要做什么?

这就是功能码(Function Code)。

最常见的几个功能码如下:

功能码 作用
01 读取线圈(Coils)
02 读取离散输入
03 读取保持寄存器
04 读取输入寄存器
05 写单个线圈
06 写单个寄存器
15 写多个线圈
16 写多个寄存器

其中:

03(Read Holding Registers)是工业现场使用最多的功能码。


八、一次完整的 Modbus 通信

假设读取 NO₂ 浓度。

主站发送:

从机地址+功能码+寄存器起始地址+寄存器数量+CRC校验

01 03 00 01 00 01 CRC

每一部分分别代表:

字段 说明
01 设备地址
03 读取保持寄存器
0001 寄存器地址
0001 读取1个寄存器
CRC 校验码

设备收到后,返回:

从机地址+功能码+字节数+数据+CRC校验(一个寄存器对应2字节)

01 03 02 00 64 CRC

每一部分分别代表:

字段 说明
01 设备地址
03 读取保持寄存器
02 字节数(表示后面数据占2个字节)
00 64 数据(2个字节)
CRC 校验码

其中:

0064

转换成十进制就是:

100

如果该寄存器定义的是 NO₂ 浓度,那么最终表示:

NO₂ = 100 ppm

整个过程通常只需要几毫秒。


九、Modbus 三种通信方式

1、Modbus RTU(最常见)

通信介质:

RS485

特点:

  • 二进制传输

  • 速度快

  • 抗干扰能力强

  • 工业现场应用最广

例如:

PLC
 │
RS485
 │
STM32
 │
电子鼻

2、Modbus ASCII

通信内容全部采用 ASCII 字符,例如:

:010300010001F8

优点:

  • 数据直观

  • 方便调试

缺点:

  • 通信效率较低

  • 目前已较少使用


3、Modbus TCP

基于以太网通信。

连接方式:

电脑
 │
交换机
 │
PLC
 │
电子鼻

特点:

  • 通信速度快

  • 网络覆盖范围广

  • 适用于工业互联网和远程监控


十、RTU 与 TCP 如何选择?

对比项 Modbus RTU Modbus TCP
通信介质 RS485 以太网
速度 较快 最快
成本 较高
抗干扰 依赖网络环境
工业现场 ★★★★★ ★★★★☆
工业物联网 ★★★☆☆ ★★★★★

如果只是普通工业现场采集数据,推荐 Modbus RTU

如果需要联网、云平台或远程监控,则更适合 Modbus TCP


十一、Modbus 在智能电子鼻中的应用

以智能电子鼻为例,可以定义如下寄存器:

寄存器地址 数据
40001 NO₂
40002 SO₂
40003 NH₃
40004 VOC
40005 CO
40006 H₂S
40007 温度
40008 湿度

电脑只需依次读取这些寄存器,就能获取所有传感器数据,并绘制实时曲线、保存历史记录或上传云平台。

这也是许多工业气体检测系统和智能电子鼻产品的典型通信方案。


十二、Modbus 的优缺点

优点

1)协议简单,容易学习

2)开发成本低

3)几乎所有 PLC 都支持

4)不同厂家设备兼容性好

5)工业应用成熟,生态完善


缺点

1)采用主从通信,从站不能主动上传数据

2)原生协议没有加密和身份认证

3)数据结构简单,不适合复杂业务

4)RTU 带宽有限,不适合大数据量传输


总结

对于刚接触工业通信的开发者来说,可以记住下面这句话:

Modbus = 工业设备之间的共同语言。

它通过设备地址确定通信对象,通过功能码确定操作类型,通过寄存器存储和读取数据,再借助 RS485(RTU)以太网(TCP) 完成数据传输。

对于 STM32、PLC、智能电子鼻、工业传感器等项目而言,掌握 Modbus 几乎是一项必备技能。


写在最后

如果你正在学习:

  • STM32

  • RS485

  • PLC

  • 工业通信

  • 智能电子鼻

  • 气体传感器

  • 上位机开发

欢迎关注我的专栏,后续将持续更新:

  • 《RS485 通信原理详解》

  • 《Modbus RTU 通信实战(STM32版)》

  • 《Modbus TCP 从入门到项目实践》

如果这篇文章对你有所帮助,欢迎 点赞、收藏、关注,你的支持将是我持续创作的最大动力!

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐