Skip to content

Modbus 地址对照表

Modbus 地址对照表是理解 Modbus 协议最核心的参考内容之一。它定义了设备内部的数据存储结构,包括线圈、离散输入、输入寄存器和保持寄存器等不同类型的地址范围。对于工程师和开发者来说,准确理解 Modbus 地址对照表 是正确读写设备数据的关键步骤。

本页提供清晰标准的 Modbus 地址对照表说明,适用于 Modbus RTU、Modbus ASCII 和 Modbus TCP 的所有场景。

🔍 Modbus 地址说明

在 Modbus 地址体系中,有两类常见的地址表示方式:

  1. 逻辑地址(如 40001、30001 等)
  2. 实际寄存器偏移地址(从 0 开始,如 0、1、2……)

设备手册中常见的逻辑写法与软件中实际使用的寄存器偏移可能不同,因此阅读 Modbus 地址对照表时需要特别注意两者的对应关系。虽然不同厂商文档写法不同,但 Modbus 地址结构本质相同。

📌 Modbus 地址对照表

地址区间(逻辑编码)数据类型典型读写操作对应功能码
0xxxx (00001–09999)线圈(Coils)读/写单个或多个线圈01(读) / 05(写单个) / 15(写多个)
1xxxx (10001–19999)离散输入(Discrete Inputs)只读02
3xxxx (30001–39999)输入寄存器(Input Registers)只读04
4xxxx (40001–49999)保持寄存器(Holding Registers)读/写单个或多个寄存器03(读) / 06(写单个) / 16(写多个)

这张 Modbus 地址对照表 也是 Modbus 工程调试、设备接入和功能码选择的基础表格,建议在 Modbus 开发过程中优先参考。

🧭 地址与偏移量的关系(常见坑)

许多厂商手册提供的“40001、30001”这种逻辑地址,在使用 Modbus 工具或编写程序时需要转换为“寄存器偏移地址”。

例如逻辑地址:

40010

对应的实际偏移为:

40010 → 偏移 9

计算方式:

真实寄存器地址 = 逻辑地址 - 地址区类型起始位
40010 → 40010 - 40001 = 9

这类偏移关系是阅读 Modbus 地址对照表时必须掌握的关键点。

⚠️ 在实际项目中,一定要确认你的设备使用的是 40001 基准 还是 0 基准,避免读错寄存器。

🛠 常见厂商定义差异(重要)

不同厂商在 Modbus 地址对照表中的写法可能存在差异,例如:

  • 使用 0-based 地址(偏移:0、1、2…)
  • 使用 1-based 地址(逻辑地址)(如 40001、40002…)

因此,在使用 Modbus 地址对照表配置地址时,务必:

  1. 查看设备说明书的地址体系
  2. 使用调试工具验证读写是否正确
  3. 结合协议驱动确认是否需要减 1

📦 Modbus 地址使用示例

读取保持寄存器 40010 的数据(基于 Modbus 地址对照表的标准规则):

功能码:03(Read Holding Registers)
寄存器地址:9(从 0 开始)
数量:1

⭐ 总结

  • Modbus 地址对照表说明了设备内部的数据存储结构
  • 不同地址区间对应不同数据类型(线圈/离散输入/寄存器)
  • 逻辑地址与偏移地址常被混用,参考 Modbus 地址对照表可避免错误
  • 工程对接时必须明确:设备使用 0 基准还是 1 基准

正确理解 Modbus 地址对照表,可以显著提高 Modbus 设备调试与集成的效率,也能避免读错寄存器等常见问题。

📚 相关文档