CAN總線負載率只是一個宏觀的參數,已經不能充分的評估總線的有效性和可擴展性。一般業內的對負載率的定義為實際數據傳輸速率和理論上能達到的數據傳輸速率的比值,本文主要介紹了can總線負載率如何計算及CAN總線負載率必需小于30%問題的解答,具體的跟隨小編一起來了解一下。
CAN總線負載率必需小于30%嗎
CAN總線負載率不一定要小于30%,因為12年的時候菲亞特已經可以做到70%的負載率下仍然能夠保證正常通訊,所以這個30%只是最佳選擇。
負載率越高,代表需要發送的數據越多,相對來說低優先級節點發生通訊延遲的概率越大。
根據實驗表明,負載率在30%的情況下,優先級高節點的平均報文傳輸時間和理論傳輸時間相差無幾;而優先級低的存在20%左右的延時;當負載率達到60%的情況下,優先級最高的節點都有至少25%的延時,優先級最低的延時達到了4倍,根本無法滿足實時性;當總線的平均利用率達到70%以上時,總線的通信將用可能出現擁堵的現象,極端的情況下將有可能造成錯誤幀的出現。
因此,負載率當然是越低越好,越能保證實時性,但是負載率太低就無法傳輸足夠的數據,這是CAN的一個問題,在數據量大的時候無法保證實時性。一般的說法是30%左右的負載率是最好的。
CAN總線負載的原理及計算
A. CAN標準幀格式
B.CAN擴展幀格式
C.幀間間隔
假設
Ui:各個信息幀占用總線百分比
L:為報文的總長度
C:為報文的總線占用時間
N:為填充的位數
t:為毛速率 ( 亦稱波特率 )下的位時間
則有:
L = N + 8d + g + 13
C = L * t
Ui = C / T
然而總線負載率是各個信息幀占用總線百分比之和。
U = U1 + U2 + U3 + 。。。。。
g 為 CAN 報文中控制位的總位數 ( 標準幀 g =34 , 擴展幀 g = 54 )
g的取值是只取位填充部分除去數據段;
13:無位填充段 + 幀間間隔
網絡負載率是 1s 內網絡總線傳輸數據所占帶寬的百分率。以上圖網絡矩陣表為例,假設總線速度為500Kbps,網絡中有多幀信號,把每個信號幀所占的負載率算出來,相加即得到總的網絡負載率。FBCM_1/FBCM_2這兩幀的所占的負載率算法如下:
負載率1 = (1000ms / 20ms) * 111 / 500000 = 0.0111 = 1.11%
負載率2 = (1000ms / 10ms) * 111 / 500000 = 0.0222 = 2.22%
公式中111為 8字節的數據幀在不考慮填充位的情況下的所含位數。
111 = 34 + 13 + (8 byte X 8bit) = 47 + 64
下面我們看 TTCAN中有這么一個公式:
按照CAN協議,相同電平持續5位,在下一位要插入1位與前5位反型的電平。
可知:(34 + 8s)/5 得到的填充位數,所以對于一幀完整的位數,我們可以假設包含上間隔位,
則:填充位:(34 + 8s)/5
數據位:8s
報文格式位:34 + 10 + 3 = 47
-
CAN總線
+關注
關注
145文章
1955瀏覽量
131087 -
負載率
+關注
關注
1文章
5瀏覽量
2924
發布評論請先 登錄
相關推薦
評論