前言在学习 STM32、PLC、RS485、工业传感器或者智能电子鼻时相信大家一定听过Modbus这个词。很多初学者第一次接触时都会有这样的疑问Modbus 到底是什么为什么工业设备几乎都在用它其实Modbus 并没有想象中那么复杂。本文将用最简单、最容易理解的方式带大家彻底弄懂 Modbus包括它的工作原理、通信方式、数据格式以及实际应用。阅读完本文你将能够理解什么是 ModbusModbus 为什么如此流行Master主站和 Slave从站是什么什么是寄存器RegisterModbus RTU 和 Modbus TCP 有什么区别Modbus 在 STM32 和智能电子鼻中的应用。建议先收藏本文再慢慢阅读。一、什么是 ModbusModbus 是一种工业通信协议Communication Protocol由 Modicon 公司于 1979 年提出现属于施耐德电气。它最大的作用就是让不同厂家的工业设备能够按照统一的规则进行通信。例如PLCSTM32Arduino气体传感器温湿度模块电表变频器工控机上位机软件只要都支持 Modbus它们之间就可以互相交换数据。二、为什么需要 Modbus举一个生活中的例子。假设有三位外国人中国人说中文美国人说英语日本人说日语如果没有共同语言他们几乎无法交流。工业设备也是一样。例如A 厂家的温湿度模块发送Temp25B 厂家的模块发送Temperature25℃C 厂家甚至发送0x0019不同厂家各说各的话设备根本无法互相理解。于是工业领域制定了一套统一的通信规范Modbus。只要大家都按照 Modbus 协议发送数据不同厂家的设备就能顺利通信。三、Modbus 是如何工作的Modbus 采用的是一种非常经典的通信模式Master主站 │ 发送请求 │ ▼ Slave从站 │ 返回数据整个过程可以理解成老师点名。老师张三学生到老师李四学生到老师不点名学生不会主动回答。Modbus 也是一样。主站负责发问从站负责回答。四、Master主站和 Slave从站很多人刚开始学习 Modbus 时都会被 Master 和 Slave 这两个概念绕晕。其实非常简单。Master主站负责主动发送命令。例如PLCSTM32工控机LabVIEWPython 上位机Qt 软件例如请告诉我当前 NO₂ 浓度是多少Slave从站负责等待命令然后回复数据。例如NO₂ 传感器VOC 传感器温湿度模块电表智能电子鼻采集节点例如当前浓度18 ppm整个通信过程始终遵循一问一答。五、Modbus 数据是如何存储的设备内部通常都有很多数据。例如温度湿度NO₂SO₂NH₃这些数据放在哪里答案就是寄存器Register。可以把寄存器理解成一个一个的小抽屉。例如抽屉0001里面存放NO₂浓度抽屉0002里面存放VOC浓度抽屉0003里面存放温度抽屉0004里面存放湿度所以读取寄存器0003实际上就是读取温度是不是非常容易理解六、设备地址Address如果一条 RS485 总线上连接了很多设备该如何区分答案就是设备地址。例如设备地址NO₂传感器1VOC传感器2温湿度模块3主站发送读取地址1的数据只有地址为 1 的设备会响应。其他设备都会保持沉默。七、功能码Function Code除了知道找谁还需要告诉设备我要做什么这就是功能码Function Code。最常见的几个功能码如下功能码作用01读取线圈Coils02读取离散输入03读取保持寄存器04读取输入寄存器05写单个线圈06写单个寄存器15写多个线圈16写多个寄存器其中03Read 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 RTUModbus TCP通信介质RS485以太网速度较快最快成本低较高抗干扰强依赖网络环境工业现场★★★★★★★★★☆工业物联网★★★☆☆★★★★★如果只是普通工业现场采集数据推荐Modbus RTU。如果需要联网、云平台或远程监控则更适合Modbus TCP。十一、Modbus 在智能电子鼻中的应用以智能电子鼻为例可以定义如下寄存器寄存器地址数据40001NO₂40002SO₂40003NH₃40004VOC40005CO40006H₂S40007温度40008湿度电脑只需依次读取这些寄存器就能获取所有传感器数据并绘制实时曲线、保存历史记录或上传云平台。这也是许多工业气体检测系统和智能电子鼻产品的典型通信方案。十二、Modbus 的优缺点优点1协议简单容易学习2开发成本低3几乎所有 PLC 都支持4不同厂家设备兼容性好5工业应用成熟生态完善缺点1采用主从通信从站不能主动上传数据2原生协议没有加密和身份认证3数据结构简单不适合复杂业务4RTU 带宽有限不适合大数据量传输总结对于刚接触工业通信的开发者来说可以记住下面这句话Modbus 工业设备之间的共同语言。它通过设备地址确定通信对象通过功能码确定操作类型通过寄存器存储和读取数据再借助RS485RTU或以太网TCP完成数据传输。对于 STM32、PLC、智能电子鼻、工业传感器等项目而言掌握 Modbus 几乎是一项必备技能。写在最后如果你正在学习STM32RS485PLC工业通信智能电子鼻气体传感器上位机开发欢迎关注我的专栏后续将持续更新《RS485 通信原理详解》《Modbus RTU 通信实战STM32版》《Modbus TCP 从入门到项目实践》如果这篇文章对你有所帮助欢迎点赞、收藏、关注你的支持将是我持续创作的最大动力