CAN總線負載率是指CAN總線上單位時間內實際傳送的位數和可以傳送的位數之比,也就是總線實際數據傳輸速率與理論上能達到的數據傳輸速率的比值。例如波特率為500kbps的CAN總線理論上每秒鐘能夠傳輸500000個Bit(位數),如果在某一秒中總線上只傳輸了100000個Bit,則瞬時總線負載率為20%。
汽車電子系統中ECU數量增加,因此CAN總線通信的數據量也急劇增加。但是CAN總線負載率過高會導致一些週期性信息由於總線競爭,造成報文延時甚至出現錯誤幀的情況。
對於汽車維修診斷行業 對汽車仿真設計和優化方面
在正式開始介紹如何使用虹科Pico汽車示波器計算CAN總線負載率之前,我們首先要知道一個CAN標準數據幀的字段組成和位數(圖1)。

假設比特率為500kBit/s,則總線上傳輸1位將花費1/(5001000)s =2µs。由圖1可知一個CAN幀大約有125位,那麼傳輸一個CAN數據包將花費2125=250µs,因此CAN總線理論上每秒可以傳輸4000個CAN數據包。

我們用示波器採集完CAN高和CAN低的波形後,需要進行串行譯碼。之前我們已經計算出比特率為500kBit/s的CAN總線理論上可以每秒傳輸4000個,為了計算出負載率,需要通過在時間標尺間譯碼快速測量出總線實際上每秒傳輸了多少個數據包(圖3)。

譯碼後的數據如圖4所示,我們將數據包這一列降序排列,可以知道在時間標尺間對應的這一秒中,CAN總線實際上一共傳輸了777個數據包。

基於上述結果,我們可以估算出CAN總線負載率的近似值為:777/4000=19.425%(單位時間內傳輸的數據包實際個數/理論個數=CAN總線負載率)。最後請大家注意,由於CAN總線的不確定性,上述方法只是估算負載率的近似值,並不能準確計算。而且該計算方法不適用於CAN FD協議以及29位標識符的CAN擴展幀(上述例子計算的是11位標識符的CAN標準數據幀)。
本文用到的檢測設備是虹科Pico汽車示波器4425A

Pico示波器4425A套裝