Appearance
Modbus 功能码对照表
Modbus 功能码对照表是 Modbus 协议中最核心的重要内容之一。Modbus 功能码(Function Code)用于告诉从站设备要执行何种操作,是所有 Modbus 通讯中必不可少的参数。本页整理最常用的 Modbus 功能码、对应的读写能力、典型场景与示例,适合开发、运维与系统集成工程师参考。
🔍 Modbus 功能码是什么?
Modbus 功能码用于指定从站执行的操作类型,是所有 Modbus 指令的基础。常见的 Modbus 功能码包括:
- 读取线圈(Read Coils)
- 读取输入寄存器
- 写单个寄存器
- 写多个保持寄存器
任何一次 Modbus 数据操作都必须同时指定 Modbus 功能码 + 寄存器地址 才能正确完成读写,因此理解 Modbus 功能码对照表至关重要。
📌 Modbus 功能码对照表
| 功能码(Hex) | 操作类型 | 说明 | 常用场景 |
|---|---|---|---|
| 0x01 | Read Coils | 读取线圈(开关量输出) | 读取或监控开关状态 |
| 0x02 | Read Discrete Inputs | 读取离散输入 | 读取传感器开关量输入 |
| 0x03 | Read Holding Registers | 读取保持寄存器 | 读取测量值、运行状态 |
| 0x04 | Read Input Registers | 读取输入寄存器 | 读取只读类传感数据 |
| 0x05 | Write Single Coil | 写单个线圈 | 控制继电器或启停操作 |
| 0x06 | Write Single Register | 写单个保持寄存器 | 设置设备参数或阈值 |
| 0x0F (15) | Write Multiple Coils | 写多个线圈 | 同时控制多路 DO 输出 |
| 0x10 (16) | Write Multiple Registers | 写多个保持寄存器 | 批量下发配置与参数 |
以上表格是最标准、最常见的 Modbus 功能码对照表,用于快速查找每个功能码的能力与适配场景。
🧭 使用时的典型组合示例
下表展示了常见的操作类型与对应的 Modbus 功能码组合:
| 操作需求 | 使用功能码 | 示例地址 |
|---|---|---|
| 读取温度值 | 03 | 40001(保持寄存器) |
| 读取电压、电流 | 04 | 30001(输入寄存器) |
| 控制继电器闭合 | 05 | 00001(线圈) |
| 下发多个参数 | 16 | 40010–40020 |
这些场景都是基于 Modbus 功能码对照表中功能码与寄存器类型的匹配关系。
🛠 完整指令示例
以下示例进一步展示 Modbus 功能码在真实操作中的使用方式。
读取 2 个保持寄存器:
功能码:03
起始地址:0x000A
寄存器数量:0x0002
写单个寄存器(设定阈值):
功能码:06
寄存器地址:0x0010
写入值:0x00FA
这些示例均体现了“选择正确的 Modbus 功能码”在实际读写过程中的关键作用。
⭐ 总结
- Modbus 功能码决定设备要执行的具体操作
- 地址决定对 Modbus 数据区中的哪个位置操作
- 常见组合:03 + 保持寄存器、04 + 输入寄存器、05 + 线圈
- 使用错误的 Modbus 功能码会导致读写失败或设备报错
理解并正确使用 Modbus 功能码对照表,可以让设备接入、调试与工程配置更加高效、可靠。

