CAN總線負載率


作者:王文舉 鏈接:https://www.zhihu.com/question/60156866/answer/175096002

 

首先,需要理解什么是CAN線的負載率。一般業內的對負載率的定義為實際數據傳輸速率理論上能達到的數據傳輸速率的比值。

可以類比景區的負載率,每個景區都有一個負荷上限,比如說10000人,如果此時景區內只有1000人,那么這時的景區負載率是10%。景區負載率是一個在空間上定義的概念,它說明了在空間上資源的被使用情況,而總線負載率則不然,其是在時間上定義的一個概念,說明了在時間上資源被使用的情況。因為傳輸速率一般是按秒來計算,數據傳輸速率既為每秒鍾傳輸了多少個BIT,負載率也默認為在一秒的時間范圍內位資源的使用情況。理論上波特率為500K的總線上每秒鍾能夠傳輸500000個BIT,如果在某一秒中總線上只傳輸了100000個BIT,則總線負載率為20%。如果按照空間上負載率的概念做簡單類比,CAN總線上一般要求負載率不大於30%似乎不能被理解,畢竟物盡其用這個觀念是被大家廣為接受的。要深入系統的理解為什么30%成為目前業內普遍遵守的負載率高壓線,就不得的不引入CAN理論中另外幾個重要的概念:ID仲裁、閑時發送和最大反應時間。

CAN總線本質上是一種串口通訊,靠在時間線上對每一位的電壓值進行調制來搭載不同的信號。因為各節點共用總線介質,對總線的使用權界定就至關重要。先說結論:只有在總線空閑時,發送節點才能向總線上發送幀起始及后續幀ID,只有在幀ID贏得仲裁時,發送節點擁有總線控制權進而向總線發送報文剩余部分,在仲裁中失敗的節點讓出總線控制權等待下次總線空閑時繼續嘗試發送。我們可以看到如果某一個節點需要發送一幀報文,它需要同時滿足兩個條件:1、總線是空閑的,即目前沒有任何節點在發送報文,在總線上表示為節點監測到11個連續的隱性位;2、所需發送的報文贏得ID仲裁,即報文優先級較高。

一個報文在試圖發送時,必須滿足上述兩個條件才能完成發送。這里的問題就是:如果一個優先級相對較低的節點向外發報文時,會因為不斷地在仲裁中失敗而導致發送延遲。如果延遲過大會引起通訊失敗。

負載率越高,代表需要發送的數據越多,相對來說低優先級節點發生通訊延遲的概率越大。

實際上30%的數據也只是一個經驗數值,歷史很悠久的一個經驗數值。從本質上來看,限制負載率最終是要保證相對低優先級節點的通訊實時性,如果能通過網絡及節點優化等手段滿足每個節點的最大響應時間滿足要求,負載率只是一個無關緊要的參數。12年的時候菲亞特已經可以做到70%的負載率下仍然能夠保證正常通訊,見鏈接。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM