李周利 駱丹妮 趙學敏


摘 要: 為了解決普通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