RS485标准:A(+)和B(-)不能接反!测一下A-B之间的电压:空闲状态应在>+200mV;如果为负值,说明A/B接反了。
总线两端各需要120Ω终端电阻,防止信号反射。
- 缺少终端电阻会导致远距离通讯不稳定
- 终端电阻过多(≥3个)会导致信号幅值偏低,通讯距离缩短
推荐使用特性阻抗120Ω的双绞屏蔽线。
- 通讯距离<100m:可使用普通屏蔽双绞线
- 100~500m:推荐Belden 9842或等同
- >500m:需要增加RS485中继器,每500m一个
主站和所有从站的波特率必须完全一致。常见的设置冲突:主站设为19200但从站是9600。
8位数据,1位停止,无校验(8N1)是最常用的格式。但也有8E1(偶校验)或8O1(奇校验)。只要所有设备一致即可。
Modbus从站地址范围1-247,同一总线上不能有相同地址。另外注意:地址0是广播地址,设备不需要响应。
使用串口调试工具(ModScan32/Mobus Poll)查看原始报文,手动计算CRC校验。如果是PLC作为主站通过MB_MASTER指令通讯,检查指令的DATA_ADDR是否在从站的寄存器范围内。
Modbus请求的超时时间建议设为500ms~1000ms。太短(如100ms)在干扰环境下容易误判为通讯失败。
推荐用"最小系统法":先只用1个从站和1米短距离通讯,成功后再逐步增加设备和延伸距离。这是最高效的排除法。