Modbus 地址冲突:一个从站失联,全线数据错乱
Modbus Address Conflict
RS485 总线上两台设备设成同一个 Modbus 地址——主站问地址 1,两台同时应答,总线碰撞,读回的数据可能来自"错的设备"而不报错。
本文涉及的条目7 条 · 自动匹配自标签与标题
地址冲突的后果
Modbus 是主从问答:主站按地址轮询,从站只在被问到时应答。两个从站同地址:
- 同时应答 → 总线数据碰撞 → 主站 CRC 错误重试或超时(表现为该地址设备"时好时坏/失联");
- 时序巧合时主站可能收到其中一台的应答 → 读到的是另一台设备的数据而不报错(最危险:数据错而不自知)。
现象识别
| 现象 | 判断 |
|---|---|
| 某地址设备间歇失联,其他正常 | 疑似与未登记设备同地址 |
| 读回数据偶尔"跳到别的参数" | 同地址设备轮番应答 |
| 新增设备后老设备开始出错 | 新设备地址与老设备冲突(最常见触发场景) |
| 全部从站都乱 | 主站配置错误/终端电阻(另查) |
排查步骤
- 导出设备清单:登记每个从站的地址、型号、序列号——没有地址台账的现场必然出冲突;
- 逐个验证:把每个从站单独挂总线(或断开其他),确认其地址与功能正常;
- 广播扫描:用调试工具做 Modbus 地址扫描(0x01~0xF7),比对实际响应地址与台账;
- 临时换地址:把怀疑冲突的设备改到空闲地址(如从 1 改 17),观察原地址是否恢复;
- 确认后固化:地址写入设备 EEPROM,更新台账与主站配置。
防冲突规范
- 上电前规划:新站地址统一分配(按站点号、设备类型分段,如 1~9 气象、10~19 水质);
- 台账必做:地址、型号、序列号、线号、位置登记表,改动即更新;
- 主站加保护:轮询超时告警、应答地址校验(读到非目标从站数据时报警);
- 只改一个:地址修改时一次只操作一台设备,改完验证再改下一台。
结语
Modbus 地址冲突是"加了台设备就开始出错"的头号原因:地址台账 + 逐个验证 + 扫描比对三步定位,地址规划 + 台账维护防复发。特别注意:同地址设备"轮流应答"时会静默读到错误数据——这种错误比失联更危险。