行業資訊

您所在的位置:首頁 > 關於杏吧 > 行業資訊
幹貨分享丨淺談CAN總線的仲裁機製
發布人:管理員   發布時間:2019/9/23 13:34:05

隨著工業技術不斷發展,CAN總線已廣泛應用於車輛、航空、醫療等高安全要求領域。高頻發送CAN報文也成為安全測試的必要組成部分。

在信號正常的網絡上高負載率發送測試時,總線上偶然會出現許多意想不到的問題,例如出現大量錯誤報文、被測設備報文周期出現異常、甚至總線鎖死等,這個時候我們則需要考慮一下CAN網絡上的仲裁是否發生了異常。

clip_image001.gif01、什麼是總線仲裁

係統中多個設備或模塊可能同時申請對總線的使用權,為避免產生總線衝突,需由總線仲裁機構合理地控製和管理係統中需要占用總線的申請者,在多個申請者同時提出總線請求時,以一定的優先算法仲裁哪個應獲得對總線的使用權。隻有獲得了總線控製權的設備,才能開始傳送數據。

 

 

clip_image001.gif02、CAN總線仲裁機製

報文的優先級,是通過對 ID 的仲裁來確定的。CAN總線上有兩種電平狀態,如果總線上同時出現顯性電平和隱性電平,總線的狀態會被置為顯性電平,CAN正是利用這個特性進行仲裁。

對於CAN來說,0為顯性,1為隱性。所以當對不同的ID號來進行仲裁時,ID號越小,優先級越高。對於標準數據幀和擴展數據幀的仲裁,如下圖黃色所示,標準幀中的RTR為0,SRR中為1,所以標準幀的優先級更高。

 

 

當總線空閑時,有多個節點同時需要發送報文,那麼每個節點的發送器將會對發送位的電平和被監控的總線電平做比較。

如果電平相同,那麼該節點可以繼續發送;如果發送的為一“隱性”電平(1),但是監控到一“顯性”電平(0),那麼該節點失去仲裁,必須退出發送狀態,隻到下一次總線空閑的時候在參與總線的仲裁競爭。

 

 

 

clip_image001.gif03、關於CAN總線仲裁的疑問

1)什麼時候出現CAN仲裁?

當總線上的節點監聽到總線空閑時,此時2個及以上的節點同時向總線上發送數據,此時會觸發CAN總線仲裁機製,來避免數據發送錯誤。

2)那麼總線仲裁丟失的節點,失去總線控製權後,立即轉為接收麼?

根據標示符判斷幀的優先級,優先級高的繼續發送,低的退回,等待高優先級幀發送完成,總線空閑後再進行發送。

需要注意的是在整個過程中兩個節點都在監聽總線,也就是說接收是不受發送狀態限製的,也就沒有轉為接收這一說,所以也就不會出現數據不完整的幀,所以仲裁期間發送的位也是可以接收的。

(3)如何減少仲裁事件的發生?

CAN總線中的節點在仲裁失敗、發送失敗或者請求發送時總線被其他節點占用,一般會在下一次空閑到來時請求發送。總線負載率越高,遇到上麵的情況概率也就越大,因此仲裁事件的發生常出現在高負載率的總線環境下。如果可以控製總線負載率在合理範圍內,可以大大減少仲裁事件的發生。

CAN總線采用載波監測,CSMACA的通信模式。這種總線仲裁方式允許總線上的任何一個設各都有機會取得總線的控製權並向外發送數據。如果在同一時刻有2個或2個以上的設各要求發送數據,就會產生總線衝突,CAN總線能夠實時地檢測這些衝突並對其進行仲裁,從而使具有高優先級的數據不受任何損壞地傳輸。

 


Copyright © 2007-2015 保定杏吧嵌入式技術有限公司 All Rights Reserved  冀ICP備12004394號