What are the Modbus storage areas? How are they all used?

freeFree Technical Resource

This content is free to read, suitable for basic learning and search traffic.

What are the Modbus storage areas? How are they all used?缩略图
What are the Modbus storage areas? How are they all used?插图

The reason why Modbus protocol has become the "standard language" in the industrial field is that it uses a very intuitive way to manage data——把不同性质的数据分门别类地放在四个“抽屉”里。无论设备来自哪个品牌,只要遵循这个规则,它们就能顺畅交流。

核心思想:两个维度划分四个区域

理解Modbus存储区的分类,就像整理衣柜,你只需要从两个角度来思考:

  1. 数据类型:数据是简单的“开关”,还是一个具体的“数字”?
    • 开关量(线圈):只有两种状态,非黑即白。例如,灯是亮还是灭阀门是开还是关。这种数据在Modbus里称为“线圈”(Coil)。
    • 模拟量(寄存器):是一个连续变化的数值。例如,温度25.6℃压力0.8MPa转速1500转。这种数据在Modbus里称为“寄存器”(Register)。
  2. 操作权限:这个数据是只能“看”,还是也能“改”?
    • 只读:你只能读取它的状态,但不能修改。好比电表上的读数,你只能看用了多少度电。
    • 读写:你既能查看它的状态,也能修改它。好比手机的音量键,你可以看当前音量,也能调大调小。

把这两个维度组合起来,就得到了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个数据点。
    • 40001400001是同一个地址,只是表示方法不同。40001是简化版,400001是完整版(长地址模型),能覆盖最多65536个地址,但绝大多数设备用不到这么多,所以简化的 40001更常见。
  • 相对地址(给机器用的):在实际的Modbus通信报文中,为了节省空间和提高效率,使用的是从0开始的偏移地址。例如,绝对地址 40001在报文中对应的相对地址就是 040002对应 1

简单记:你在设备手册或软件配置里看到的(如40001)是绝对地址;而协议底层传输时,会自动将其转换为相对地址。编程时留意软件要求哪种地址即可。

总结

Modbus通过这四个“数据抽屉”,为工业设备建立了一套清晰易懂的数据管理规则:

  • 控制开关(如启动设备)→ 读写 0区(线圈)
  • 查看状态(如故障信号)→ 读取 1区(离散输入)
  • 采集数据(如监测温度)→ 读取 3区(输入寄存器)
  • 设置参数(如修改设定值)→ 读写 4区(保持寄存器)
Put this resource to use in a real project?

Go to the Tool Center for message parsing, CRC verification and device debugging, or submit your requirements for selection and integration advice.

Engineer Membership

Turn this article into actionable debugging resources

After activation, you can use advanced message parsing, resource pack downloads, code examples, engineering cases and priority technical support, suitable for real project delivery.

Unlimited Advanced Tools
Resource & Code Packs
Complete Engineering Case Library
Priority Technical Support

Leave a Reply

Your email address will not be published. Required fields are marked *.