
Modbus协议之所以能成为工业领域的“普通话”,秘诀在于它用了一种非常直观的方式来管理数据——把不同性质的数据分门别类地放在四个“抽屉”里。无论设备来自哪个品牌,只要遵循这个规则,它们就能顺畅交流。
核心思想:两个维度划分四个区域
理解Modbus存储区的分类,就像整理衣柜,你只需要从两个角度来思考:
- 数据类型:数据是简单的“开关”,还是一个具体的“数字”?
- 开关量(线圈):只有两种状态,非黑即白。例如,灯是亮还是灭,阀门是开还是关。这种数据在Modbus里称为“线圈”(Coil)。
- 模拟量(寄存器):是一个连续变化的数值。例如,温度25.6℃,压力0.8MPa,转速1500转。这种数据在Modbus里称为“寄存器”(Register)。
- 操作权限:这个数据是只能“看”,还是也能“改”?
- 只读:你只能读取它的状态,但不能修改。好比电表上的读数,你只能看用了多少度电。
- 读写:你既能查看它的状态,也能修改它。好比手机的音量键,你可以看当前音量,也能调大调小。
把这两个维度组合起来,就得到了Modbus的四个核心存储区,可以用下面的表格快速掌握:
| 存储区名称(俗称) | 数据类型 | 读写权限 | 可以把它想象成… | 典型应用场景 |
|---|---|---|---|---|
| 线圈寄存器(0区) | 开关量 | 读写 | 电灯开关 | 控制继电器、电机启停、指示灯 |
| 离散输入寄存器(1区) | 开关量 | 只读 | 门磁传感器 | 读取按钮状态、限位开关、故障信号 |
| 输入寄存器(3区) | 模拟量 | 只读 | 温度计 | 采集温度、压力、流量等传感器数据 |
| 保持寄存器(4区) | 模拟量 | 读写 | 可设置的恒温器 | 设定目标速度、温度,修改设备参数 |
四个“数据抽屉”的详细用法
1. 线圈寄存器(0区):指挥行动的“开关”
这是你用来发号施令的抽屉。主站(如PLC或电脑)通过向这个区域写入数据,直接控制现场设备的开关。
- 如何使用:你想启动一台电机,就向控制它的那个线圈地址写入“1”(ON);想停止,就写入“0”(OFF)。
- 好比:你在家里通过手机APP远程控制智能插座的开关。
2. 离散输入寄存器(1区):感知状态的“眼睛”
这个抽屉是设备的感觉器官,专门用来反映外部的开关状态变化。
- 如何使用:你只能读取它。比如,你想知道一个急停按钮是否被按下,就去读取对应的离散输入地址,如果值是“1”,就表示按钮被按下了。
- 特点:因为是只读的,可以确保这些关键状态信号不会被意外修改,非常安全。
3. 输入寄存器(3区):汇报数据的“仪表”
这个抽屉里放着从现场采集来的实时数据,通常是只读的模拟量。
- 如何使用:主站定期(比如每秒一次)读取这个区域,以监控生产过程。例如,不断读取温度传感器在输入寄存器中的地址,来获取实时温度值。
- 好比:仪表盘上显示的车速和油量,你只能看,不能直接通过仪表盘去改变车速。
4. 保持寄存器(4区):存储设定的“大脑”
这是设备的配置中心和大脑,用于存放重要的设备参数和设定点。它允许读写,是功能最丰富的区域。
- 如何使用:你可以在保持寄存器中设定一个变频器的目标运行频率(如40Hz),或者一个温控器的目标温度(如80℃)。既可以读取当前设定值,也可以修改它们。
- 进阶用法:一个保持寄存器只有16位,无法直接表示浮点数等复杂数据。这时,需要将多个连续的寄存器组合起来。例如,一个32位的单精度浮点数通常需要占用两个连续的保持寄存器。
关键概念:地址那点事
很多新手会混淆“绝对地址”和“相对地址”,其实很简单:
- 绝对地址(给人看的):为了让我们工程师看着直观,容易配置。常用的是短地址模型,比如
40001。它表示第4个存储区(保持寄存器)的第1个数据点。40001和400001是同一个地址,只是表示方法不同。40001是简化版,400001是完整版(长地址模型),能覆盖最多65536个地址,但绝大多数设备用不到这么多,所以简化的40001更常见。
- 相对地址(给机器用的):在实际的Modbus通信报文中,为了节省空间和提高效率,使用的是从0开始的偏移地址。例如,绝对地址
40001在报文中对应的相对地址就是0,40002对应1。
简单记:你在设备手册或软件配置里看到的(如40001)是绝对地址;而协议底层传输时,会自动将其转换为相对地址。编程时留意软件要求哪种地址即可。
总结
Modbus通过这四个“数据抽屉”,为工业设备建立了一套清晰易懂的数据管理规则:
- 想控制开关(如启动设备)→ 读写 0区(线圈)
- 想查看状态(如故障信号)→ 读取 1区(离散输入)
- 想采集数据(如监测温度)→ 读取 3区(输入寄存器)
- 想设置参数(如修改设定值)→ 读写 4区(保持寄存器)
