柏思忠
(1.中煤科工集團重慶研究院有限公司,重慶 400039;2.瓦斯災害監(jiān)控與應急技術國家重點實驗室,重慶 400039)
RS485 總線有著布線簡單、通信方便、價格低廉、通信距離長等優(yōu)點,在工業(yè)現(xiàn)場、智能控制、環(huán)境監(jiān)測等領域得到廣泛應用。隨著電子技術和信息技術的進一步發(fā)展,RS485 總線連接節(jié)點設備數(shù)量越來越多,單個節(jié)點信息量越來越大,提高RS485總線通信效率愈發(fā)急迫,主要采取提高波特率、控制收發(fā)控時序、多主通信和軟件改善通信策略4 方面措施。在提高波特率方面,彭韜等[1]采用變化的波特率達到通信效率最優(yōu);盧超[2]和陳航等[3]都使用最大波特率高達40 Mbps 的通信速率;景程等[4]使用多種設備不同波特率通信提高通信效率;范潔等[5]更是為了滿足實時性要求將RS485 瞬間改變?yōu)槊}沖波形傳遞信息;劉希高等[6]為RS485 高速隔離提供了磁隔離方式實現(xiàn)上兆速率傳輸,提高波特率的措施最直接有效,但是高波特率傳輸距離大大縮短;郭佳欣[7]等指出高波特率還會增加誤碼率。在控制收發(fā)時序方面鄧昊等[8]通過軟硬件2 方面有效控制收發(fā)轉換時間到1 個合理范圍;聞海忠[9]采用3 種硬件方式實現(xiàn)收發(fā)控自動切換,控制收發(fā)控時序單幀數(shù)據(jù)僅能減少不到毫秒級的時間,通信效率提高有限。多主通信方面,胡明飛等[10]采用載波監(jiān)聽多路訪問/沖突檢測協(xié)議(CSMA/CD)實現(xiàn)多路溫度采集器主動發(fā)送數(shù)據(jù);李周利等[11]采用主從節(jié)點控制、從節(jié)點自然優(yōu)先 級設置及3 種軟、硬件定時方法解決了總線沖突問題;于鑫等[12]通過廣播命令切換主從機狀態(tài)實現(xiàn)多主通信;韓路平等[13]采用監(jiān)聽和時間同步切換主從機狀態(tài)實現(xiàn)兩主多從通信;但是前2 種多主通信增加了沖突檢測等硬件成本,后2 種本質上在某個時刻仍是一主多從模式,對通信效率提高意義不大。改善通信策略方面,陳品富等[14]根據(jù)變長幀自動調節(jié)下發(fā)頻度實現(xiàn)自適應召喚策略,較大幅度提高了總線通信效率,是一種通用有效的方法,但沒有明確給出從機如何快速發(fā)送緊急信息的策略,需進一步細化和完善。當然,提高總線通信效率的同時還必須保證通信的可靠性,不能忽略劉喜增等[15]提出的信號反射干擾和趙亮等[16]提出的RS485 總線距離長、節(jié)點數(shù)多、反射干擾、假起始信號等因素對通信可靠性的影響。
針對提高RS485 總線通信效率的問題,結合上述分析,提出了一主多從采用群呼和隊列應答策略來提高RS485 中心提高通信效率。
RS485 總線通信過程中,主機采用群呼方式,呼叫信息中攜帶當前總線所有從機地址組成的地址鏈表和應答時隙時長;從機采用隊列模式應答,應答分為優(yōu)先應答和正常應答2 個隊列,從機根據(jù)自身應答信息的重要性選擇回發(fā),重要和緊急信息在優(yōu)先應答隊列對應時隙回發(fā),平常信息在正常應答隊列對應時隙回發(fā),所有從機都在線監(jiān)聽,優(yōu)先應答和正常應答2 個隊列中根據(jù)地址鏈表中順序逐一回發(fā),已經在優(yōu)先隊列中回發(fā)的從機正常應答隊列不再回發(fā),實現(xiàn)重要和緊急信息優(yōu)先傳遞。
1)主機群呼。主機通過RS485 連接n 臺從機,初始化階段從1~n 逐臺呼叫,主機根據(jù)收到的所有從機E1~En的地址建立1 個地址鏈表A1~An;然后進入正常工作流程,主機發(fā)出群呼命令,呼叫信息包括地址鏈表A1~An和每個時隙對應時長△τ 轉(通常取值總線傳輸2~10 字節(jié)寬度)為接收狀態(tài),等待從機應答。
2)從機應答隊列。RS485 總線n 臺從機根據(jù)自身實時通信信息的重要和緊急程度分為優(yōu)先隊列和正常隊列。通信信息涉及故障、報警、數(shù)據(jù)急劇變化等情況需要及時發(fā)送的從機根據(jù)地址從小到大進入優(yōu)先隊列,通信信息無重要和緊急情況的從機根據(jù)地址從小到大進入正常隊列,二者只能且必須選其一。
3)應答時隙分配。RS485 總線從機應答時隙的分配如圖1,主機群呼后,等待1 個時隙△τ 依次為優(yōu)先隊列應答時隙X1~Xn,優(yōu)先隊列時隙后緊跟1個等待時隙△τ 再依次為T1~Tn。
圖1 隊列應答時隙分配圖Fig.1 Queue response slot allocation diagram
4)從機應答策略。從機隊列應答示意圖如圖2。主機群呼完畢后,優(yōu)先隊列中有從機(例如E2)排隊,經過1 個等待時隙△τ,然后再等到從機對應時隙X2應答,應答完畢后增加1 個等待時隙△τ,后續(xù)的隊列對應時隙向后順延1 個時隙△τ,優(yōu)先隊列中還有從機就繼續(xù)在對應時隙應答,增加1 個等待時隙△τ 并順延,直到優(yōu)先隊列中從機應答完畢;優(yōu)先隊列從機應答完畢后經過1 個等待時隙△τ,正常隊列中排隊從機開始在對應時隙應答(從E1~En),信息無變化時應答信息簡化,在優(yōu)先隊列已經應答的從機(例如E2)在正常隊列中不再出現(xiàn),從機應答后增加1 個等待時隙△τ 順延,直到正常隊列所有從機應答完畢,本次主機群呼結束,進入下一次群呼,周而復始。
圖2 從機隊列應答示意圖Fig.2 Slave queue response diagram
5)優(yōu)劣分析。主機群呼和隊列應答策略遵循RS485 通用一主多從模式,根據(jù)總線所有從機建立地址鏈表,劃分應答時隙,從機根據(jù)自身信息緊急和重要程度排隊到優(yōu)先隊列和正常隊列有序應答。這種策略具有以下4 個方面的優(yōu)勢:①它是一種軟件策略,具備通用性,與波特率、從機數(shù)量和通信距離無關,硬件不作任何改變;②采用群和隊列順序應答,一呼多應,減少主機呼叫次數(shù)和幀與幀間隔,縮短了輪詢周期,提高了總線通信效率;③采用優(yōu)先管理機制,保證從機重要和緊急數(shù)據(jù)及時傳輸;④從機應答信息無變化時,采用減少字節(jié)長度的簡化幀應答,進一步縮短輪詢周期。但是,群呼和隊列應答策略也有1 個方面的劣勢,整個通信過程時序要求更加嚴格,從機要一直監(jiān)聽并嚴格根據(jù)對應時序要求進行應答。
試驗平臺為1 臺分站(主機E0)通過RS485 總線連接4 臺甲烷傳感器(從機E1~E4對應地址1#~4#),1#傳感器和分站之間1.5 m 電纜連接,后3 臺傳感器之間采用1 000 m 模擬電纜依次連接。試驗平臺如圖3。
圖3 試驗平臺Fig.3 Test platform
RS485 總線通信速率采用2 400 bps,單字節(jié)在總線傳輸時間約4.2 ms,傳統(tǒng)呼叫一呼一答方式,分站發(fā)送10 字節(jié)共42 ms,傳感器應答15 字節(jié)63 ms,傳感器收到分站呼叫等待時隙△τ=10 ms,分站收到傳感器信息后等待80 ms 開始下一次呼叫。整個輪詢周期分站呼叫4 次,每臺傳感器各應答1 次,共780 ms。
群呼和優(yōu)先應答時序圖如圖4。
圖4 群呼和優(yōu)先應答時序圖Fig.4 Group call and priority response timing diagram
采用群呼和隊列應答策略時,其中第2 臺傳感器有緊急信息需要及時上傳,1#、3#和4#共3 臺傳感器正常信息應答,分站呼叫增加了地址鏈表和等待時隙時長信息共15 字節(jié)63 ms,整個輪詢周期分站呼叫1 次,2#在優(yōu)先隊列應答1 次,其余3 臺傳感器在正常隊列各應答1 次,共耗時475 ms,輪詢周期縮短305 ms。優(yōu)先隊列中的傳感器應答和正常隊列中傳感器應答時間一樣,只是應答次序問題,因此這個輪詢周期數(shù)值適用于優(yōu)先隊列中0~4 臺所有情況。其中優(yōu)先隊列中的2#傳感器應答響應時間為20 ms,而傳統(tǒng)呼叫2#傳感器應答響應時間為205 ms,采用優(yōu)先隊列方式大大提高了傳感器重要和緊急信息的響應時間,尤其是地址號更大的傳感器響應時間減少得更多。
RS485 總線通信在采用群呼和隊列應答策略時,所有傳感器信息都沒有變化只是正常應答,采用4 字節(jié)16.8 ms 簡化幀方式,整個輪詢周期僅僅只有290.2 ms,比傳統(tǒng)方式縮短489.8 ms,大大提高了通信效率。
經過群呼和隊列應答策略試驗,對比傳統(tǒng)方式分析,可得出如下結論:①通過群呼和隊列順序應答減少主機(n-1)次呼叫和等待時間,縮短輪詢周期;②通過設置優(yōu)先隊列保障緊急和重要信息的從機快速應答,減少響應時間;③對應答信息無變化的從機實施簡化編碼,縮短應答數(shù)據(jù)幀長度,進一步縮短輪詢周期。
RS485 總線通信采用群呼和隊列應答策略,硬件不作任何改變,細化和完善軟件通信策略,對所有不同速率、不同距離、不同從機數(shù)量的RS485 都具有通用性。這種策略通過群呼、隊列順序應答和簡化編碼大幅度縮短輪詢周期提高通信效率,同時設置優(yōu)先隊列保障了緊急和重要從機信息的及時傳遞,但是整個通信過程具有嚴格的時序要求,需要從機一直在線監(jiān)聽和遵循時序管理。