今天遇到了个奇怪的485通信问题,主控设备挂了5个从设备,之间采用485通信。原本3个从设备与主控设备通信良好,加了从设备4、5后,设备 5通信经常失败。卸掉设备4后,设备5通信正常。按正常思路,设备45通信内容互不影响。
这是为什么呢?阻抗不匹配、接线方式有错、信号衰弱了?重新确认连线没问题,在末端再挂一个485转232设备,发现数据正常,但是设备5却没有应答。在主设备中打断点调试,通信就正常了。发送速度太快了?用串口调试,发送命令,设备5应答ok。但是在设备5查询命令前加上设备4的查询和应答数据一起发送,这时设备5没有应答。那么可以确定问题根源了。
最后一点,为什么设备4卸掉后,设备5就能通信正常呢?检查代码发现,设备4通信超时,刚好把命令4和命令5在时间上隔开,设备5通信就OK了。