首頁科技 > 正文

乾貨知識!CAN詳解,錯誤資料格式坑&優先順序&電阻&報文數量!

2021-07-31由 億佰特物聯網應用專家 發表于 科技

什麼是CAN(控制器區域網)

控制器區域網 (Controller Area Network,簡稱CAN或者CAN bus) 是一種功能豐富的車用匯流排標準。被設計用於在不需要主機(Host)的情況下,允許網路上的微控制器和儀器相互通訊。 它基於訊息傳遞協議,設計之初在車輛上採用複用通訊線纜,以降低銅線使用量,後來也被其他行業所使用。CAN建立在基於資訊導向傳輸協定的廣播機制(Broadcast Communication Mechanism)上。其根據資訊的內容,利用資訊標誌符(Message Identifier,每個標誌符在整個網路中獨一無二)來定義內容和訊息的優先順序進行傳遞,而並非指派特定站點地址(Station Address)的方式。因此,CAN擁有了良好的彈性調整能力,可以在現有網路中增加節點而不用在軟、硬體上做出調整。除此之外,訊息的傳遞不基於特殊種類的節點,增加了升級網路的便利性。

乾貨知識!CAN詳解,錯誤資料格式坑&優先順序&電阻&報文數量!

優勢及特點

特點:

1。CAN是一個用於連線電子控制單元(ECU)的多主機序列匯流排標準。電子控制單元有時也被稱作節點。CAN網路上需要至少兩個節點才可進行通訊。節點的複雜程度可以只是簡單的輸入輸出裝置,也可以是包含有CAN互動器並搭載了軟體的嵌入式元件。所有節點透過兩根平行的匯流排連線在一起。兩條電線組成一條雙絞線,並且接有120Ω的特性抗。

2。資料通訊沒有主從之分,任意一個節點可以向任何其他(一個或多個)節點發起資料通訊,靠各個節點資訊優先順序先後順序來決定通訊次序。

3。多個節點同時發起通訊時,優先順序低的避讓優先順序高的,不會對通訊線路造成擁塞。

4。通訊距離最遠可達10KM(速率低於5Kbps)速率可達到1Mbps(通訊距離小於40M)。

5。CAN匯流排傳輸介質可以是雙絞線,同軸電纜,CAN匯流排適用於大資料量短距離通訊或者長距離小資料量,實時性要求比較高,多主多從或者各個節點平等的現場中使用。

優勢:

1。可在各節點之間實現自由通訊:CAN協議的一個最大特點是廢除了傳統的站地址編碼,而代之以對通訊資料塊進行編碼。採用這種方法的優點可使網路內的節點個數在理論上不受限制,資料塊的識別符號可由11位或29位二進位制陣列成,因此可以定義2或2個以上不同的資料塊,這種按資料塊編碼的方式,還可使不同的節點同時接收到相同的資料,這一點在分散式控制系統中非常有用。

2。結構簡單:只有2根線與外部相連,並且內部集成了錯誤探測和管理模組。

3。資料糾錯:採用雙線序列通訊方式,檢錯能力強,可在高噪聲干擾環境中工作,每幀資料都有CRC校驗及其他檢錯措施,保證了資料傳輸的高可靠性,適於在高干擾環境下使用。

4。完成對通訊資料的成幀處理:CAN匯流排通訊介面中集成了CAN協議的物理層和資料鏈路層功能,可完成對通訊資料的成幀處理,包括位填充、資料塊編碼、迴圈冗餘檢驗、優先順序判別等項工作。

5。節點在錯誤嚴重的情況下,具有自動關閉匯流排的功能,切斷它與匯流排的聯絡,以使總線上其他操作不受影響,可以點對點,一對多及廣播集中方式傳送和接受資料。

CAN匯流排的資料格式與基本工作原理

資料格式:

1。CAN-bus通訊幀共分為資料幀、遠端幀、錯誤幀、過載幀和幀間隔。

2。資料幀:結構上由7個段組成,其中根據仲裁段ID碼長度的不同,分為標準幀(CAN2。0A)和擴充套件幀(CAN2。0B)結構上由7個段組成,其中根據仲裁段ID碼長度的不同,分為標準幀(CAN2。0A)和擴充套件幀(CAN2。0B)。標準幀為11位,擴充套件幀為29位。這也是我們在使用中接觸最多的格式。

乾貨知識!CAN詳解,錯誤資料格式坑&優先順序&電阻&報文數量!

3。遠端幀:與資料幀相比沒有資料段,結構上由7個段組成。當你需要總線上的一個節點向你傳送資料,使用次節點的ID,傳送一幀遠端幀。

乾貨知識!CAN詳解,錯誤資料格式坑&優先順序&電阻&報文數量!

4。錯誤幀:雖然CAN匯流排是可靠性很高的匯流排,但是依然會出錯:CAN總線上會出現5種錯誤。

乾貨知識!CAN詳解,錯誤資料格式坑&優先順序&電阻&報文數量!

5。過載幀和幀間隔:過載幀:當某個節點沒有做好接收下幀資料將傳送過載幀通知節點。幀間隔:只存在於資料幀與遠端幀之間,用於幀之間的分離。

基本工作原理:

跟其他匯流排一樣,CAN匯流排的通訊也是透過一種類似於“會議” 的機制實現的,只不過會議的過程並不是由一方(節點)主導,而 是,每一個會議參加人員都可以自由的提出會議議題(多主通訊模式),二者對應關係如下:

乾貨知識!CAN詳解,錯誤資料格式坑&優先順序&電阻&報文數量!

乾貨知識!CAN詳解,錯誤資料格式坑&優先順序&電阻&報文數量!

仲裁與優先順序

假設節點A、B和C都發送相同格式相同型別的幀,如標準格式資料幀,它們競爭匯流排的過程是

乾貨知識!CAN詳解,錯誤資料格式坑&優先順序&電阻&報文數量!

結論:從該分析過程得出結論是:幀ID值越小,優先順序越高,對於同為擴充套件格式資料幀、標準格式遠端幀和擴充套件格式遠端幀的情況同理。

CAN總線上的電平

CAN2.0A/B標準規定:匯流排空閒:

CAN_H和CAN_L上的電壓為2。5V

傳輸資料

: 顯性電平(邏輯 0):CAN_H 3。5V,CAN_L 1。5V

隱性電平(邏輯 1):CAN_H 2。5V,CAN_L 2。5V

乾貨知識!CAN詳解,錯誤資料格式坑&優先順序&電阻&報文數量!

CAN收發器:

照BOSCH CAN匯流排標準將0或1邏輯訊號轉換為標準中規定的電平,同時有反饋功能。

CAN匯流排的硬體抗干擾:

(1)在電路中增加共模電感。

(2)使用更高精度的電阻。

注意:並不是每個節點都需要增加電阻,只需要在匯流排相聚最遠的兩個節點使用電阻即可。

電阻也不是固定的120歐姆,根據導線的材質有關。

CAN匯流排負載率計算

計算例子:

假設CAN匯流排波特率為250Kbit/s,匯流排報文傳送時間間隔為10ms, 報文為資料幀(8個位元組資料),那麼10ms內匯流排能夠支援的最大報文數量為多少?

第一步:根據通訊波特率計算10ms總共可以傳送多少bit (250000/1000)*10 = 2500bit

第二步:計算最長的一幀報文有多少個bit

1sof + 29id + 1ide + 1rtr + 1srr + 2r + 4dlc + 8*8data

+ 16crc + 2ack + 7eof = 128bit

第三步:計算10ms內可以支援的報文數目

2500/128 19

結論:

由上面的計算可知,當10ms間隔的報文數量超過19條時,就會出現丟幀,匯流排飽和。計算報文數量也是設計CAN網路所要考慮的,可以查閱相關文獻看負載率在多少時合適!

頂部