RS485总线发生总线冲突,如何解决

2019-08-17 08:12发布

本帖最后由 stm32zzq 于 2017-5-26 14:22 编辑

主机和从机采取RS485半双工总线,主机和上位机用全双工通信,但是发现主从总线冲突,详细情况是主机以50ms周期给从机发送查询命令,并做超时重发处理,在串口助手里上位机对主机发送开关灯的指令,主机收到上位机的命令时需要对从机进行控制处理,目的是让主机控制从机开关灯并返回开关灯状态给主机,主机再返回给上位机,问题是有时候主机发给从机的控制命令从机收不到(情况1),有时候主机发给从机的控制命令从机收到了并且返回给主机,此时主机却收不到了(情况2),本人猜想:情况1的原因是因为从机正在对主机的查询命令进行应答,情况2的原因是因为从机给主机返回控制应答的时候正好主机又给从机发送查询命令,半双工收发冲突。求助各位大神,我的想法是否正确,如果是,那么怎么解决;如果不是,那么又是什么问题?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
20条回答
liuchang
1楼-- · 2019-08-17 13:36
上modbus协议,完美解决你的问题
合六斗
2楼-- · 2019-08-17 15:23
 精彩回答 2  元偷偷看……
enan
3楼-- · 2019-08-17 20:21
yklstudent 发表于 2017-5-26 13:13
主机/从机/上位机,这三者都在一个RS485网络中?

应该不在一个网络里,他说主机与从机用485通讯半双工,上位机与主机全双工通讯,
485只能半双工,485要全双工要换422总线
上位机与主机通讯应该是用的232通讯,或者是422.

我估计是他的串口程序写的有问题。
stm32zzq
4楼-- · 2019-08-17 20:54
合六斗 发表于 2017-5-26 12:34
从机没必要返回控制应答

协议规定主机要获取从机的信息,所以如果从机不应答的话,主机的访问就没意义了
stm32zzq
5楼-- · 2019-08-18 00:55
enan 发表于 2017-5-26 13:54
应该不在一个网络里,他说主机与从机用485通讯半双工,上位机与主机全双工通讯,
485只能半双工,485要 ...

我试过把周期50ms里的发送查询命令的函数屏蔽掉,在串口助手上用电脑控制发送指令让主机来控制从机,这时候主机和从机的通信没有丢失数据
yakerxee
6楼-- · 2019-08-18 04:42
和主机进行交互时把定时查询的定时器中断关了是不是会好些?

一周热门 更多>