Modbus是一种在工业自动化领域被广泛使用的串行通信协议。它诞生于1979年,最初由Modicon公司(现施耐德电气)为可编程逻辑控制器(PLC)之间的通信而设计。如今,它已成为工业电子设备通信的通用标准和事实上的业界标准。
它的核心是一个主从(Master/Slave)架构的请求/响应协议。这意味着在同一个Modbus网络中,只有一个设备能充当主设备(如计算机、PLC、HMI)发起通信请求,而其他从设备(如传感器、变频器)则只能被动响应主设备的请求。通信总是成对发生的:主设备发起一个请求,然后等待特定从设备的响应。
🎯 核心设计理念
- 简单、开放、免费:协议结构简单明了,易于部署和维护,并且公开免费,无版权要求,这极大地促进了它的普及。
- 灵活的网络支持:它不绑定特定的物理层,可以在多种介质上运行,例如:
- 串行链路(如RS-232、RS-485),这是最传统和常见的形式。
- 以太网(通过Modbus TCP/IP协议)。
- 标准化的数据模型:Modbus定义了四种主要的数据类型,用于组织和访问设备内的数据。
| 数据模型 | 数据类型 | 访问权限 | 常见前缀 |
|---|---|---|---|
| 线圈 (Coils) | 布尔值 (0/1) | 可读可写 | 0 |
| 离散量输入 (Discrete Inputs) | 布尔值 (0/1) | 只读 | 1 |
| 输入寄存器 (Input Registers) | 16位无符号整数 | 只读 | 3 |
| 保持寄存器 (Holding Registers) | 16位无符号整数 | 可读可写 | 4 |
为了方便理解,我们常说的
40001地址,前缀“4”代表保持寄存器,后四位代表寄存器编号,其对应的实际地址为0x0000。
⚙️ 三种主要变体及其区别
Modbus协议根据底层网络和编码方式,主要有三种变体:
| 特性 | Modbus RTU | Modbus ASCII | Modbus TCP |
|---|---|---|---|
| 底层网络 | 串行(RS-232/485) | 串行(RS-232/485) | 以太网(TCP/IP) |
| 编码方式 | 二进制,每个字节直接传输,效率高 | ASCII字符,每个字节拆分为两个字符传输,可读性强,但效率低 | 二进制,直接封装在TCP帧中 |
| 消息帧结构 | 无特定起始/结束字符,通过时间间隔(如3.5个字符时间)区分 | 以冒号 : 开头,以 CR/LF (回车换行) 结尾 | 依赖TCP连接本身管理,增加了专门的MBAP报文头 |
| 错误校验 | CRC-16 (循环冗余校验),可靠性高 | LRC (纵向冗余校验),可靠性相对较弱 | 无额外校验,依赖TCP/IP协议本身的校验机制 |
| 典型场景 | 工业现场应用最广,数据量大、实时性要求高的场景 | 对时间要求不严或需要人工调试的场景 | 现代工业网络、设备接入互联网或物联网的场景 |
💡 典型应用与局限
- 应用场景:在数据采集与监视控制系统(SCADA)中,Modbus常被用来连接监控计算机与远程终端单元(RTU)。它也广泛用于连接各类智能仪表、变频器、PLC等,实现集中监控。
- 局限性:由于其诞生年代较早,Modbus在数据类型、寻址方式和安全性上存在一些限制。例如,它原生不支持浮点数、字符串等复杂数据类型,也没有内置任何安全机制来防止未经授权的访问或数据截取。
💎 总结
Modbus的核心价值在于其 极致的简单性、开放性和广泛的支持度。它不是一个追求功能最强大的协议,而是一个追求最简单、最可靠、最容易被实现的协议。正因为如此,它在工业现场总线中的地位至今依然稳固,是连接无数传感器和执行器的“通用语言”。

被折叠的 条评论
为什么被折叠?



