一种实现载波监听多点接入/冲突检测的多主RS485总线

时间:2012-04-25来源:网络

该函数的主要流程如图6。

判断总线状态就是简单地读取总线状态判断电路的输出,高为空闲,低为总线已被占用。为了减少误判,通常在判断总线状态为空闲后还要继续判断一段时间,具体的总线状态判断策略要根据通信协议进行调整。

如果判断总线空闲,即可进行数据发送。在发送过程中可以方便地继续读取总线状态以进行边发送边监听的冲突检测。一旦发现冲突发生,发送方放弃本次数据传输而转入强化冲突流程(继续发送几个0x00以使各方都确认发生了总线冲突),然后再进入总线侦听流程。以往的RS485总线冲突检测处理机制是通过对自己所发送的数据进行监听接收,然后比较接收到的数据与发送的数据是否相符,判断是否发生总线冲突,在软件实现上比较复杂。而本系统的冲突检测非常简单:发送完一个字节就读取一次总线状态指示管脚的状态,如果发现总线被占用,就是发生了总线冲突。

接收程序方面,因为接收器常开,所以仍然可以使用串行接收器的中断服务程序,将接收到的数据放入缓冲区,然后由命令解释程序处理接收到的命令。本质上与RS232的串口通信程序完全一样,只是如果接收器是常开的话,在自己发送数据时,要记住将串行接收器中断关闭,发送完毕后再打开,以避免运行不必要的中断服务程序。

另外,还可以结合驱动器和总线状态判断逻辑对总线进行开路和短路的检测/报警。具体说就是某一个节点使能总线驱动器,然后判断总线状态,如果仍然显示总线空闲,说明总线短路或者总线到总线状态判断逻辑之间开路了。

2.5 存在的不足之处

该方法中的总线状态判断逻辑对逻辑0状态的要求比较高,需要B线电平比A线高约1.1V才能得到低电平。如果采用总线判断电路中的正向接收器的输出端(OUT+)作为RXD信号,就会因为对逻辑0的要求而不满足RS485的-200mV门限电平标准。若采用另一个具有故障保护功能的接收器并联的话,固然能满足-200mV门限电平标准,但整个节点的输入阻抗将降低到6kΩ。

以上不足之处都在于无法完全满足标准RS485总线标准,但在特定条件下是不会影响工作效果的。例如阻抗虽然降低了,但是当节点数不超过16时,是能够很好地工作的。

实验表明,这种实现了CSMA/CD的多主式RS485总线工作稳定,可靠性高,大大提高了实时性。特别适合于强调实时性的分布式控制系统,能够方便地实现点与点之间的控制信息实时交换。

1 2 3

关键词: RS485总线 半双工 载波监听 冲突检测

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版