我们公司项目想实现用RS485芯片做分布式通信系统,因为分布式系统无主从关系,所以需要解决总线上两个或两个以上节点同时发送数据时,产生冲突的问题
首先想到方案一:
用半双工RS485芯片(sn65hvd72),将RX和TX使能同时开启,理想是每次TX发送的同时,RX也会接收到总线的信号,所以当两个或两个以上节点同时发送不同数据,RX接收到的总线数据就不等于自身TX发送的数据,以此来判断是否产生冲突。
但实际测试发现,当AB线上信号有产生冲突,RX接收到的是总是自身TX发出的数据。因此无法判断冲突是否产生。此处不明白为何RX的数据不是来自AB线上的,能否帮忙解答?
然后想到方案二:
用全双工RS485芯片,将每个芯片的AB和YZ都短接,对外部呈现的依然是半双工的模式。检测冲突原理同上,当两个或两个以上节点同时发送不同数据,RX接收到的总线数据就不等于自身TX发送的数据。目前尚未做验证。
此处有以下担心:
1.因不了解IC内部电路,冲突时会不会因为输出高电平被强制拉低(或者低被强制拉高),产生大电流损坏IC?
2.多个节点产生冲突时,总线上会发生什么情况?有可能总线上的电流会比较大?