1. 程式人生 > >CAN波特率與負載率

CAN波特率與負載率

https://wenku.baidu.com/view/1f3ebacbb9f67c1cfad6195f312b3169a451eaa8.html

1、背景說明:

1.1為了講清這個問題,需要先就兩個概念進行說明:波特率和位元率。
波特率:單位時間內,通訊通道傳輸碼元的速率。1個波特指每秒傳輸1個碼元的符號。(單位時間內調製狀態改變的次數,單位為波特)
位元率:單位時間內,通訊通道傳送的二進位制位數。1.2波特率和位元率的關係:
位元率=波特率*單個調製狀態對應的二進位制位數(位元率=波特率*log2n)由於CAN通訊中的訊號是二進位制的,所以對CAN來說波特率和位元率相等,只是業界習慣用bps表示CAN的波特率。
2、CAN匯流排的通訊負載率
2.1說明
負載率:CAN匯流排實際資料傳輸速率與理論上能達到的資料傳輸速率的比值。根據實驗表明,負載率在30%的情況下,優先順序高節點的平均報文傳輸時間和理論傳輸時間相差無幾;而優先順序低的存在20%左右的延時;當負載率達到60%的情況下,優先順序最高的節點都有至少25%的延時,優先順序最低的延時達到了4倍,根本無法滿足實時性;當匯流排的平均利用率達到70%以上時,匯流排的通訊將用可能出現擁堵的現象,極端的情況下將有可能造成錯誤幀的出現。
因此,負載率當然是越低越好,越能保證實時性,但是負載率太低就無法傳輸足夠的資料,這是CAN的一個問題,在資料量大的時候無法保證實時性。一般的說法是30%左右的負載率是最好的。

2.2需要控制通訊負載率的原因:

引入

CAN

理論中另外幾個重要的概念:ID

仲裁、閒時傳送和最大反應時間。

CAN

匯流排本質上是一種串列埠通訊,靠在時間線上對每一位的電壓值進行調製來搭載不

同的訊號。

因為各節點共用匯流排介質,

對匯流排的使用權界定就至關重要。

只有在匯流排空閒時,

傳送

節點才能向總線上傳送幀起始及後續幀

ID,

只有在幀

ID

贏得仲裁時,

傳送節點擁有匯流排控

制權進而向匯流排傳送報文剩餘部分,

在仲裁中失敗的節點讓出匯流排控制權等待下次匯流排空閒

時繼續嘗試傳送。

即如果某一個節點需要傳送一幀報文,它需要同時滿足兩個條件:

1、匯流排是空閒的,即目前沒有任何節點在傳送報文,在總線上表示為節點監測到

11

個連續的隱性位;

2、所需傳送的報文贏得

ID

仲裁,即報文優先順序較高。

一個報文在試圖傳送時,

必須滿足上述兩個條件才能完成傳送。

這裡的問題就是:

如果

一個優先順序相對較低的節點向外發報文時,

會因為不斷地在仲裁中失敗而導致傳送延遲。

果延遲過大會引起通訊失敗。

負載率越高,

代表需要傳送的資料越多,

相對來說低優先順序節

點發生通訊延遲的概率越大。

引入

CAN

理論中另外幾個重要的概念:ID

仲裁、閒時傳送和最大反應時間。

CAN

匯流排本質上是一種串列埠通訊,靠在時間線上對每一位的電壓值進行調製來搭載不

同的訊號。

因為各節點共用匯流排介質,

對匯流排的使用權界定就至關重要。

只有在匯流排空閒時,

傳送

節點才能向總線上傳送幀起始及後續幀

ID,

只有在幀

ID

贏得仲裁時,

傳送節點擁有匯流排控

制權進而向匯流排傳送報文剩餘部分,

在仲裁中失敗的節點讓出匯流排控制權等待下次匯流排空閒

時繼續嘗試傳送。

即如果某一個節點需要傳送一幀報文,它需要同時滿足兩個條件:

1、匯流排是空閒的,即目前沒有任何節點在傳送報文,在總線上表示為節點監測到

11

個連續的隱性位;

2、所需傳送的報文贏得

ID

仲裁,即報文優先順序較高。

一個報文在試圖傳送時,

必須滿足上述兩個條件才能完成傳送。

這裡的問題就是:

如果

一個優先順序相對較低的節點向外發報文時,

會因為不斷地在仲裁中失敗而導致傳送延遲。

果延遲過大會引起通訊失敗。

負載率越高,

代表需要傳送的資料越多,

相對來說低優先順序節

點發生通訊延遲的概率越大。

引入CAN理論中另外幾個重要的概念:ID仲裁、閒時傳送和最大反應時間。CAN匯流排本質上是一種串列埠通訊,靠在時間線上對每一位的電壓值進行調製來搭載不同的訊號。
因為各節點共用匯流排介質,對匯流排的使用權界定就至關重要。只有在匯流排空閒時,傳送節點才能向總線上傳送幀起始及後續幀ID,只有在幀ID贏得仲裁時,傳送節點擁有匯流排控制權進而向匯流排傳送報文剩餘部分,在仲裁中失敗的節點讓出匯流排控制權等待下次匯流排空閒時繼續嘗試傳送。即如果某一個節點需要傳送一幀報文,它需要同時滿足兩個條件:
1、匯流排是空閒的,即目前沒有任何節點在傳送報文,在總線上表示為節點監測到11個連續的隱性位;

2、所需傳送的報文贏得ID仲裁,即報文優先順序較高。
一個報文在試圖傳送時,必須滿足上述兩個條件才能完成傳送。這裡的問題就是:如果一個優先順序相對較低的節點向外發報文時,會因為不斷地在仲裁中失敗而導致傳送延遲。如果延遲過大會引起通訊失敗。負載率越高,代表需要傳送的資料越多,相對來說低優先順序節點發生通訊延遲的概率越大。
實際上30%的資料也只是一個經驗數值,歷史很悠久的一個經驗數值。從本質上來看,限制負載率最終是要保證相對低優先順序節點的通訊實時性,如果能通過網路及節點優化等手段滿足每個節點的最大響應時間滿足要求,負載率只是一個無關緊要的引數。
3、相關計算:
CAN傳送8位元組的資料擴充套件幀,實際總線上傳輸資料還包括4個位元組的幀ID,以及約6個節的幀頭尾和校驗。即一條CAN資料至少有18個位元組,因此
針對1Mbps波特率,1S傳輸的幀數:
1M/8(位/位元組)/18=7K

考慮到30%的負載率,1S傳輸的幀數為:2.1K針對125Kbps波特率,1S傳輸的幀數:
125K/8(位/位元組)/18=868
考慮到30%的負載率,1S傳輸的幀數為:260