前言
CAN總線負載率是指CAN匯流排上單位時間內實際傳送的位元數和可以傳送的位數之比,也就是總線實際資料傳輸速率與理論上能達到的資料傳輸速率的比值。例如波特率為500kbps的CAN總線理論上每秒鐘能夠傳輸500000個Bit(位數),如果在某一秒中總線上只傳輸了100000個Bit,則瞬時總線負載率為20%。
利用宏虹Pico示波器計算與最佳化CAN總線負載率
汽車電子系統中ECU數量增加,因此CAN總線通訊的資料量也急遽增加。但是CAN總線負載率過高會導致一些週期性資訊由於匯流排競爭,造成封包延遲甚至出現錯誤訊框的情況。
對於汽車維修診斷行業,假設後裝了車聯網或導航一體機到車輛CAN總線上,加裝的節點很可能會使得報文過多負載率偏高,我們可以用宏虹Pico汽車示波器捕獲CAN訊號並且計算出負載率,判斷這些加裝的節點是否導致過載。對汽車模擬設計與最佳化方面,我們不僅能利用示波器計算出負載率,還能分析CAN匯流排每條封包的延遲,兩者結合才能最佳化CAN總線以降低負載率。
在正式開始介紹如何使用宏虹Pico汽車示波器計算CAN總線負載率之前,我們首先要知道一個CAN標準資料幀的欄位組成和位數(如下)。
- 1 位起始位
- 11 位識別符
- 1 位 RTR(遠程傳輸請求位)
- 6 位控制欄位
- 0 至 64 位資料欄位
- 15 位 CRC 校驗
- 在上述中,對於同級別的連續 5 個位元序列,每個序列後可進行位填充;最壞情況下約需 18 位填充位
- 3 位定界符(包括 ACK 確認位等)
- 7 位結束位
- 後續 3 位中斷欄位
- 因此,一個 CAN 幀約包含 125 位。
假設位元率為500kBit/s,則總線上傳輸1位元將花費1/(500*1000)s =2μs。由上述可知一個CAN幀大約有125位,那麼傳輸一個CAN資料包將花費2*125=250μs,因此CAN總線理論上每秒可以傳輸4000個CAN資料包。

圖1
我們用示波器採集完CAN高和CAN低的波形後,需要先進行串列譯碼。先前我們已經計算出位元率為500kBit/s的CAN匯流排理論上可以每秒傳輸4000個,為了計算出負載率,需要透過在時間標尺寸間譯碼快速測量出總線實際上每秒傳輸了多少個資料包(圖2)。

圖2
譯碼後的資料如圖3所示,我們將資料包這一列降序排列,可以知道在時間標尺間對應的這一秒鐘中,CAN匯流排實際上一共傳輸了777個資料包。

圖3
基於上述結果,我們可以估算出CAN總線負載率的近似值為:777/4000=19.425%(單位時間內傳輸的資料包實際個數/理論個數=CAN總線負載率)。
最後請大家注意,由於CAN總線的不確定性,上述方法只是估算負載率的近似值,並不能準確計算。且此計算方法不適用於CAN FD協定以及29位元標識符的CAN擴充幀(上述範例計算的是11位元標識符的CAN標準資料幀)。
了解更多產品資訊
如果您對此感興趣,歡迎您關注我們獲取更多文章資訊,如有任何問題,也歡迎聯絡我們!
