什么是CAN總線負載率?怎么計算負載率?(附送負載率自動計算表格)
回復【阻抗匹配】,獲取電磁兼容性、阻抗匹配相關的資料回復【資料】,獲取全部電子設計、單片機開發(fā)相關的資料回復【終端電阻】,獲取CAN終端電阻相關的資料回復【單片機】,獲取單片機全套視頻教程和參考設計
回復【STM32】,獲取STM32相關設計和視頻教程回復【PCB】,獲取PCB設計相關的資料回復【硬件知識】、【硬件設計】,獲取硬件開發(fā)工程必備手冊
回復【經典電路】,獲取5000個經典電路
回復【論文】,獲取畢業(yè)設計、電子競賽、學術專業(yè)等相關論文資料…………
歡迎關注【玩轉單片機與嵌入式】公眾號,本公眾號會以連載的形式對電容進行深入講解,歡迎持續(xù)關注。
?0、前言
近期小編發(fā)表了一些關于CAN總線的文章,(點擊查看文章匯總),有粉絲在后臺留言問:能否寫一些關于CAN總線負載率的文章?大家都知道,我們是很寵愛自己的粉絲的,特此奉上本篇文章。
1、什么是CAN總線的負載率?
一般業(yè)內對負載率的定義為:實際數據傳輸速率和理論上能達到的數據傳輸速率的比值。
可類比景區(qū)的負載率進行理解:每個景區(qū)都有一個負荷上限,比如10000人,如果此時景區(qū)內只有1000人,那么這時的景區(qū)負載率是10%。如下圖1和圖2分別展示了景區(qū)高負載率和低負載率的情況。
圖1:高負載率
圖2:低負載率
景區(qū)負載率是一個在空間上定義的概念,它說明了在空間上資源的被使用情況,而總線負載率則不然,其是在時間上定義的一個概念,說明了在時間上資源被使用的情況。
因為傳輸速率一般是按秒來計算,數據傳輸速率既為每秒鐘傳輸了多少個BIT,負載率也默認為在一秒的時間范圍內位資源的使用情況。理論上波特率為500K的總線上每秒鐘能夠傳輸500000個BIT,如果在某一秒中總線上只傳輸了100000個BIT,則總線負載率為20%。
2、CAN總線負載率最大支持多少?
在行業(yè)內一般要求負載率不大于30%。
如果按照空間上負載率的概念做簡單類比,CAN總線上一般要求負載率不大于30%似乎不能被理解,畢竟物盡其用這個觀念是被大家廣為接受的。要深入系統(tǒng)的理解為什么30%成為目前業(yè)內普遍遵守的負載率高壓線,就不得的不引入CAN理論中另外幾個重要的概念:ID仲裁、閑時發(fā)送和最大反應時間。
CAN總線本質上是一種串口通訊,靠在時間線上對每一位的電壓值進行調制來搭載不同的信號。因為各節(jié)點共用總線介質,對總線的使用權界定就至關重要。
先說結論:只有在總線空閑時,發(fā)送節(jié)點才能向總線上發(fā)送幀起始及后續(xù)幀ID,只有在幀ID贏得仲裁時,發(fā)送節(jié)點擁有總線控制權進而向總線發(fā)送報文剩余部分,在仲裁中失敗的節(jié)點讓出總線控制權等待下次總線空閑時繼續(xù)嘗試發(fā)送。
我們可以看到如果某一個節(jié)點需要發(fā)送一幀報文,它需要同時滿足兩個條件
1、總線是空閑的,即目前沒有任何節(jié)點在發(fā)送報文,在總線上表示為節(jié)點監(jiān)測到11個連續(xù)的隱性位;
2、所需發(fā)送的報文贏得ID仲裁,即報文優(yōu)先級較高。
一個報文在試圖發(fā)送時,必須滿足上述兩個條件才能完成發(fā)送。這里的問題就是:如果一個優(yōu)先級相對較低的節(jié)點向外發(fā)報文時,會因為不斷地在仲裁中失敗而導致發(fā)送延遲。如果延遲過大會引起通訊失敗。
負載率越高,代表需要發(fā)送的數據越多,相對來說低優(yōu)先級節(jié)點發(fā)生通訊延遲的概率越大。
實際上30%的數據也只是一個經驗數值,歷史很悠久的一個經驗數值。從本質上來看,限制負載率最終是要保證相對低優(yōu)先級節(jié)點的通訊實時性,如果能通過網絡及節(jié)點優(yōu)化等手段滿足每個節(jié)點的最大響應時間滿足要求,負載率只是一個無關緊要的參數。
3:負載率計算
想要了解負載率的計算,需先清楚CAN總線的幀格式。
圖3:CAN標準幀格式
圖4:CAN擴展幀格式
圖5:幀間隔假設
- Ui:各個信息幀占用總線百分比
- L:為報文的總長度
- C:為報文的總線占用時間? ? ??
- N:為填充的位數
- t:為毛速率 ( 亦稱波特率 )下的位時間
- L = N ? 8d g 13
- C = ?L * t
- Ui = C / T
網絡負載率是 1s 內網絡總線傳輸數據所占帶寬的百分率。以上圖網絡矩陣表為例,假設總線速度為500Kbps,網絡中有多幀信號,把每個信號幀所占的負載率算出來,相加即得到總的網絡負載率。FBCM_1/FBCM_2這兩幀的所占的負載率算法如下:?????負載率1 = (1000ms / 20ms)? * 111 / 500000 = 0.0111 = 1.11%
負載率2 = (1000ms / 10ms)? * 111 / 500000 = 0.0222 = 2.22%
4:負載率自動計算工具
根據以上的負載率計算原理,可以輕松整理出如下的表格,輸入CAN總線的相關參數:波特率、ID個數、幀間隔、幀類型等,可以自動出總線負載率。請關注公眾號【玩轉單片機與嵌入式】,在后臺回復【CAN負載率】,將自動發(fā)送負載率計算的工具給您。當然:本文的重點是講解CAN總線負載率的原理及如何進行負載率計算;真實情況下不需要自動手動計算,可以使用CAN分析儀等工具可以輕松的讀取到CAN總線負載率。End
限時免費掃碼進群,交流更多行業(yè)技術
歡迎轉發(fā)
每篇原創(chuàng)內容都是我們用心血換來的知識精華,如果您覺得本文有價值,歡迎轉載分享;歡迎加入
如果您對單片機及嵌入式設計感興趣,歡迎加入我們的辯論探討,加我微信【xyzn3333】。
往期推薦PCB設計,考慮EMC時,應如何接地?對CAN總線的終端電阻,你知道多少?用最通俗的語言講一講,什么是阻抗匹配?CAN總線工程師常見問題及解答什么是can總線?can總線是數字信號還是模擬信號
點個在看你最好看