Modbus笔记

我们可以将 Modbus 通信想象成一场问答游戏:

  • Master (主站/客户端):提问者(如 PLC、上位机软件)。
  • Slave (从站/服务器):回答者(如 传感器、电表、IO 模块)。

常用调试软件

  • Modbus Poll (主站仿真器)
    • 典型场景:你刚买了一个温湿度传感器(从站),想看看它好不好使。你用 Modbus Poll 连接传感器,发送“读取 03 寄存器”的指令,观察它返回的温度数值。
  • Modbus Slave (从站仿真器)
    • 典型场景:你在写 Python 代码开发一个数据采集系统。你打开 Modbus Slave,在地址 40001 填入 25.5。如果你的代码能成功读到 25.5,说明你的采集程序写对了。
  • ModSim(Modbus Simulator)
    • 它的功能与 Modbus Slave 类似,主要用于模拟设备响应
  • ModScan (Modbus Scanner)
    • 搜索者/诊断者
    • 典型场景:如果你接手了一个复杂的 RS485 总线,上面挂了 10 几个设备,你不知道它们的 ID 分别是多少。这时候用 Modbus Scan 扫描 1-247 地址,能快速定位存活的设备。

Modbus 地址空间

区域前缀 寄存器类型 英文全称 读写属性 对应功能码 形象比喻
0x 线圈状态 Coil Status 可读可写 01(读), 05(写) 开关/继电器:只有开/关两种状态。
1x 离散输入 Discrete Input 只读 02 限位开关/报警:外部传进来的开关信号。
3x 输入寄存器 Input Register 只读 04 仪表读数:温度、压力,主站不能改。
4x 保持寄存器 Holding Register 可读可写 03(读), 06/16(写) 控制参数:如设定压力、变频器频率。
  • 3x 区域 (功能码 04):最初设计是用来映射外部物理输入(如传感器采集到的模拟量信号)。因为这些数据是来自外部物理世界的,你作为主站(监控者)去改它没有意义,所以它是只读的。
  • 4x 区域 (功能码 03):设计用来存储设备运行参数配置信息。这些数据不仅要能读出来查看,还需要能被主站修改(下发指令),所以它是可读写的。
Licensed under CC BY-NC-SA 4.0