rs485多主

因复位时I/O口都输出高电平。如果把I/O口直接与RS-485接口芯片的驱动器使能端DE端相连,会在CPU复位其间DE为高,从而使本节点处于发送状态。如果此时总线上其它节点在发送数据,则此次数据传输将被打断而失败,甚至引起整个总线因某个节点的故障而通信阻塞,继而影响整个系统的正常运行。为了做到通信避障,考虑系统工作稳定性,在每个节点的设计中应将控制RS-485总线接口芯片的发送引脚设计成DE端的反逻辑,即控制引脚为逻辑“1”时,DE端为“0”;控制引脚为逻辑“0”时,DE端为“1”。应用中,将MCU的I/O引脚ControlDE(控制RS485总线接口芯片的发送引脚)反相和CPU复位引脚RESET反相相与驱动DE端,这样就可以使控制引脚为高或者异常复位时使RS-485接口始终处于接收状态,从而从硬件上有效避免节点因异常情况而对整个系统造成的影响

在RS-485总线构筑的半双工通信系统中,一般采用主从通信模式,即整个系统中只有一个为主节点,总线上所有其它节点都是从节点,通信方式一般是主节点循环轮询各个从节点。这有很多弊端,首先,此时主节点的通信工作其CPU通信负担较重,一定意义上讲,会对其完成其它系统工作造成一定影响;整个系统“危险”集中主节点,主节点的工作可靠性和稳定性是整个系统稳定、可靠工作的前提和保证;一旦主节点发生故障,将导致整个系统的崩溃。其次,系统通信效率低,因为无论某一个节点是否需要发送数据或需要使用总线,都要等到主节点轮询到自身,从而使得系统的通信效率较低,总线利用效率低。系统实时性差。因其通信的效率较低使得从节点有实时性要求帧信息得不到及时发送从而使得系统的实时性差。所以,多主发送有其现实意义。


多主发送在硬件上只要在MAX485R的R引脚上通过反相器接在MCU的IRQ上,当一节点需要用总线时,为了实现总线的通信避障需要侦听,当总线上有数据正在传输数据时,RS-485接口芯片的数据接收端表现高低电平,利用其产生的CPU上升沿中断,可以得知此时总线是否忙,即总线是有节点正在通信


设置侦听时间IRQ中断标志—在1ms内有无IRQ中断—(无)发数据—(有)继续侦听

猜你喜欢

转载自www.cnblogs.com/CodeWorkerLiMing/p/10645848.html