1、485多机通信的时候,每个从机是需要设置唯一一个地址的,不知道楼主有没有给每个从机分配一个地址;
2、每个从机在接收到主机发来的数据时,需要校验地址,看是不是发给自己的,如果地址不是自己的,就不要做应答,否则,如果同时有多个从机在应答,那么总线就会有冲突;
3、从机只有在应答的时候,才会处理发送状态,其他时刻都应该设置成接收状态,并且在应答完成后,要等待很小的一段时间,再将状态设置成接受状态,目的就是为了让最后一个停止位发送出去;
综上,楼主的硬件应该没有问题,关键应该在软件处理上,最大的可能就是没有做地址校验,造成了两个从机同时应答,从而出现了通信错误……
RS485规定同一时间只能由一个设备发数据,你这里从机收到数据之后是否同时设为发送状态了
此外,485收发数据的时序是否正确
1、485通讯,任何时候都只能是一个设备在发送。在你的案例中,很有可能是你主机发送,两个从机接收,都一起回复,造成通讯堵塞。
所以,大家一般的做法是:给每个设备编码,设置唯一地址。主机每次只能问一个设备,发出含有ID的询问数据帧,所有设备都会接收这个数据帧,但是只有符合这个ID的设备做出应答,其他都保持接收状态。
2、调试485的时候,可以用示波器查看总线波形,也可以买个USB转485的模块,方便调试。
一个主机发送,两个从机同时接收,造成冲突了。