This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

RS485芯片使用疑问

Other Parts Discussed in Thread: SN65HVD72

我们公司项目想实现用RS485芯片做分布式通信系统,因为分布式系统无主从关系,所以需要解决总线上两个或两个以上节点同时发送数据时,产生冲突的问题

首先想到方案一:

用半双工RS485芯片(sn65hvd72),将RX和TX使能同时开启,理想是每次TX发送的同时,RX也会接收到总线的信号,所以当两个或两个以上节点同时发送不同数据,RX接收到的总线数据就不等于自身TX发送的数据,以此来判断是否产生冲突。

但实际测试发现,当AB线上信号有产生冲突,RX接收到的是总是自身TX发出的数据。因此无法判断冲突是否产生。此处不明白为何RX的数据不是来自AB线上的,能否帮忙解答?

然后想到方案二:

用全双工RS485芯片,将每个芯片的AB和YZ都短接,对外部呈现的依然是半双工的模式。检测冲突原理同上,当两个或两个以上节点同时发送不同数据,RX接收到的总线数据就不等于自身TX发送的数据。目前尚未做验证。

此处有以下担心:

1.因不了解IC内部电路,冲突时会不会因为输出高电平被强制拉低(或者低被强制拉高),产生大电流损坏IC?

2.多个节点产生冲突时,总线上会发生什么情况?有可能总线上的电流会比较大?

  • 方案1: RX上接收到的总是自身TX发出的数据是因为485总线要求在同一时刻只能有一个数据发送端,如果总线上有两个或以上节点,当D1发送数据想给R2接收,但D2或D3此时也处于enable状态,那么此时R2接收到的数据就有可能是D2或D3发送的,这就出现了总线竞争。所以初始化发送数据前,同一个 时间点只能允许一个发送端。

  • 方案2:同理,半双工通信,总线上不允许两个货两个以上节点同时发送数据。

    您说的IC内部电路,一般的485收发器在datasheet中都会有等效的输入输出电路。

  • 另外,多个节点发生冲突时,有可能发生总线上的电流会比较大,所以很多485芯片都集成了过温保护,当芯片结温超过一定温度时,driver会diable,一旦温度降下来之后,也会恢复到正常工作状态。

  • 如果总线上有两个或以上节点,当D1发送数据想给R2接收,但D2或D3此时也处于enable状态,那么此时R2接收到的数据就有可能是D2或D3发送的  --> 实际情况是3个节点1,2,3,:D1D2同时发送不同的数据,且R1R2R3都enable,结果是R1收到的是D1,R2收到的是D2,R3则收到的是总线上发生了竞争的数据

    以上原因可能是因为RX的采样点在输出阻抗之前。但因为没有内部的详细电路,所以也不好确定原因?您是否可以帮忙解释

  • 方案二回发生跟方案一同样的问题吗(发生竞争时R1值收到D1的数据而不是总线上竞争的数据)?

  • 芯片过温是我比较担心的问题,但思考了一下,我认为IC的输入输出阻抗都是固定的,所以发生竞争情况下无论多少个节点对于单个IC来看电流都是一样的,具体还是要知道IC的输出接口阻抗和电路结构。但多节点冲突时总线上的电流可能会比较大。如果方便的话可以用QQ(164330872)交流吗?发帖子有时候表达不清楚

    感谢!