李周利 骆丹妮 赵学敏
摘 要: 为了解决普通RS 485總线中多个节点容易引发总线竞争、数据冲突和长期独占总线的问题,设计了具有总线仲裁机制的RS 485总线。在普通RS 485总线基础上增加了硬件握手和总线控制相关硬件,各个从节点能否占有总线需请求主节点给予授权;从节点按硬件连接的自然优先级排序;采用软、硬件结合方式控制各个从节点对总线的占有时间,即通信结束、软件计时或硬件定时时间到均控制硬件释放总线,避免了因某个从节点自身故障导致长期独占总线的通信错误,提高了RS 485总线的通信效率,增加了整个通信系统的可靠性和稳定性。
关键词: RS 485总线; 仲裁机制; 优先级排序; 定时总线释放
中图分类号: TN911?34; TP336 文献标识码: A 文章编号: 1004?373X(2017)16?0177?03
Abstract: In order to solve the problems that the multiple nodes in the common RS 485 bus easily lead to bus competition, data conflict and long?term exclusive bus, a RS 485 bus with arbitration mechanism was designed. Some hardwares that are related to handshaking and bus control are added to the common RS 485 bus. Each slave node requests the master node to give an authorization for making it occupies the bus, and then these slave nodes are sorted, according to the natural priority of hardware connection. Finally, a combination mode of software and hardware is used to control the occupation time of each node for the bus. In the end of communication, software or hardware timer releases the bus by controlling the hardware, which avoids the communication error that a slave node occupies the bus for a long term, which is caused by its own fault. This method can improve communication efficiency of RS 485 bus and increase the reliability and stability of the whole communication system.
Keywords: RS 485 bus; arbitration mechanism; priority ranking; timing bus release
0 引 言
RS 485总线以其结构简单、成本低廉、可选芯片多、便于维护、可靠性高等诸多优点被广泛应用于远程自动工控环境[1?3]。由于普通RS 485总线采用主从式通信方式,各从节点完全不受其他节点制约,如有两个或两个以上节点同时向总线发送数据,将会发生总线竞争,导致通信数据错误,发送失败[4];且某节点若出现通信故障,则可能出现该节点长期独占总线的情况。针对多机通信中的数据冲突问题,已有的一种解决方法是采用类似于以太网的载波监听多路访问/冲突检测协议(CSMA/CD)[5?6]。数据接收端对接收到的数据进行校验,如果出错则认为发生了总线冲突,接收端不会发送确认帧,若在规定时间内未收到确认帧,发送端就调用冲突处理函数[7]。此方法虽能在一定程度上解决上述问题,但某种程度上降低了通信效率,且依然有总线冲突的隐患存在。
在某嵌入式应用系统的设计过程中,需要组建RS 485串行通信网络,此网络系统共有97个节点,其中一个为主节点,向其他节点发送命令并及时接收其他节点的报警故障等。为了解决完全主从式RS 485总线中从节点不能主动发送数据的问题,可采用定时轮询的方式。此方法虽具有通信时间的确定性,但对多从节点的情况可能会产生较长的通信延时。假设每个节点的轮询时间为100 ms,对96个从节点的系统而言,将产生约9.6 s的延时。当本系统中某个从节点出现故障需立即向主节点汇报时,最坏情况下可能会延时较长(10 s左右),实时性太差。
本文提出对各从节点之间相互独立的RS 485总线仲裁方法,使各从节点可及时可靠稳定地发送数据,且保证每次只有一个从节点向主节点发送数据,较好地解决了上述问题。
1 RS 485总线仲裁机制结构设计
采用两个半双工RS 485组成的全双工网络通信结构,主从节点的接收端实时接收数据,各从节点只接收主节点发送的数据,主节点接收所有从节点发送的数据,因此上行通信总线易发生网络堵塞。本设计通过主从节点控制、从节点自然优先级设置及三种软、硬件定时方法确保通信可靠稳定。系统结构框图如图1所示。
2 主从节点控制
从节点向主节点发送数据时,先判断总线忙否,即总线是否正在通信,若没有,可向主节点发起发送请求信号,当主节点向从节点授权后,从节点才有发送数据的权利。因此主从节点控制主要包括两部分:忙检查和硬件握手机制。endprint
2.1 忙检查
设计总线忙信号[PBUSY],从节点通过检测该信号,判断总线是否处于忙的状态。具体[PBUSY]接口硬件原理图如图2所示。总线忙信号由主节点控制,当主节点处于发送状态,或有其他从节点有发送请求,此时总线已经被占用,主节点输出[PBUSY],忙指示灯亮,从节点的MCU_P12收到电平为0的忙指示信号,将不能进行数据发送。
2.2 硬件握手机制
硬件握手机制包括总线请求和总线授权,使多节点发送相互受到牵制,减少通信堵塞,其硬件握手(从)接口原理图如图3所示。当从节点需要发送数据时必须先进行忙检查,只有[PBUSY]信号无效时,从节点才有请求发送的资格。在检测到总线没有被占用后,先发送总线请求信号MCU_P24(高有效),主节点接收到请求信号后发出总线忙信号,并给出授权信号。从节点发总线请求的同时RCTR信号使继电器关闭(RCTR现为MCU_P101,由MCU直接输出,具体见图4。该信号软件定时120 ms,时间到后打开继电器,即从节点整个握手过程最多时间为120 ms),将节点间直接通信的授權信号[BPRN]接入本从节点。从节点收到主节点发出的[BPRN]信号后先经过反相器,再与同样经过反相器的总线请求信号异或,使输入下个从节点的[BPRN]=1,因此本从节点就获得了授权信号,而其他从节点便失去了获权的机会。此设计为双保险,即使总线忙信号失效,优先级低的节点在总线请求后也不会得到授权信号。只有获得授权信号的从节点与本节点的允许发送信号CTS相异或,最终才能置位发送使能,从硬件上保证了只有该从节点才能发送数据。
实测某从节点数据发送全过程波形如图4所示。其中,通道1为总线忙信号[PBUSY],通道2为总线请求信号,通道3为总线授权信号[BPRN],通道4为发送的数据。其中,主节点给出的[PBUSY]和[BPRN]为固定延时120 ms(软件可设)。
3 自然优先级设定
该RS 485总线由1个主节点和96个从节点组成,其中96个从节点功能作用相同。如果两从节点同时发送一帧,发送前将因无法检测信道信号而发生冲突,产生差错。在节点多的情况下,两个或两个以上节点同时发送的几率较高,会给整个系统带来不稳定的隐患[8]。
按照硬件排序为从节点设定自然优先级,使各个从节点拥有各自的ID,如图1所示。当主节点要求所有从节点汇报数据时,可通过软件定时,设定每个从节点的通信时间T,则T×ID为每个从节点的通信起点,此方法不但能避免多个从节点同时向总线发送数据造成通信阻塞,还能保证从节点向主节点汇报数据的实时性。而且当多个从节点同时请求发送数据时,优先级高的从节点先于并阻止优先级低的从节点得到主节点的授权信号,得到授权信号的从节点可置位其发送使能DEx,发送数据,避免网络竞争。如图1所示,例如ID=1和95的从节点同时有发送请求,由于1号优先级高于95号,1号截获授权,发送使能DE1置位,而95号则不能发送数据。
4 软硬件结合避免总线独占
为了避免因某个从节点自身故障导致长期独占总线的情况,现采用单稳态多谐振荡器SN74LV123,选择第5种输出模式,将发送时间设计为固定值40 ms,硬件控制各个从节点对总线的占用时间,计时结束即放弃总线。其工作过程如图5所示,发送使能置位的同时,给SN74LV123的输入A:一个下降沿信号MCU_P84,输出信号Q=0后保持,计时开始。当计时时间到无论数据是否发送完毕,都使输出信号[Q]=1后保持,经过或门后使ROFF输出0,使继电器控制信号RCTR=1,控制继电器断开总线,停止发送。当计时时间内数据发送完毕时,直接使MCU_P86输出0,经过与单稳输出同样的处理后,关闭发送使能,减少不必要的总线占用延时。通过此硬件方法清零输出使能DEx,释放总线,增加了RS 485发送机制的可靠性。
5 结 论
本文提出的设计方案,通过增加硬件握手和设定自然优先级的方式,合理的解决了总线竞争和数据冲突的问题,使整个系统更加稳定可靠。同时,采用三种定时方式,软硬件结合共同避免了节点长期独占总线的情况,提高了RS 485总线的通信效率。
但本设计仍有不足之处,即硬件成本较高,适用于对可靠性要求高,成本要求不敏感的场合。
参考文献
[1] 吴忻生,陈安,胡跃明,等.一种实现载波监听多点接入/冲突检测的多主RS 485总线[J].电子技术应用,2004(2):48?50.
[2] 李鑫,赵鹏.RS 485总线形式的多路站控数据采集系统[J].工业控制计算机,2016(5):38.
[3] 孟仕印,罗天兰,孟传良.回转窑分布式控制系统RS 485总线通信系统设计[J].自动化与仪器仪表,2015(5):112?113.
[4] 朱耀春,白焰.RS 485总线通信双机监控程序的设计及应用[J].工业控制计算机,2006(8):14?16.
[5] 赵亮,张吉礼.提高RS 485总线通信可靠性的优化设计方法[J].大连理工大学学报,2015(4):393?398.
[6] 谢希仁.计算机网络[M].北京:电子工业出版社,2008.
[7] 冯子陵,俞建新.RS 485总线通信协议的设计与实现[J].计算机工程,2012(20):215?218.
[8] 刘明,张龙灯,张洪彦,等.基于RS 485总线的互锁联动系统网络化通信的实现[J].昆明理工大学学报(理工版),2008(4):47?50.endprint