CAN與CANOpen(一)

CAN與CANOpen(一)基本概念 
CAN與CANOpen(二)報文格式 
CAN與CANOpen(三)錯誤處理
CAN與CANOpen(四)CANOpen對象字典 
CAN與CANOpen(五)PDO和SDO
CAN與CANOpen(六)網絡管理和CAN FD


CAN(Controller Area Network, 控制器局域網絡)是由博世開發的一種現場總線,首先應用在汽車領域。由於它的低成本和可靠性,現在被廣泛應用在工業測控和工業自動化領域。由於工作的關係,自己接觸CAN比較多所以總結一下分享給大家。

  1. 參考
  1. CAN Specification 2.0, Part A
  2. CAN Specification 2.0, Part B
  3. CANopen協議介紹
  4. CiA Draft Standard 301

2.    CAN與CANOpen的關係

下面是CAN協議與OSI網絡模型的一個對比。CAN的物理層分了三層分別是MDI,PMA和PLS,數據鏈路層分了兩層:MAC與LLC。這五層就是最原始的CAN協議,標準是ISO11898。也就是說CAN協議一開始是沒有應用層的。後來有一種叫CANOpen的基於CAN的應用層協議被開發出來,標準是CiA301。

在實際開發CAN器件的時候不一定要用CANOpen,你可以根據自己的需要定製自己的應用層協議。


1CANCANOpen的關係

下面會分別介紹CANCANOpen的內容。最後會介紹一下CAN的最新發展CAN FD

  1. CAN的基礎知識

本文對於CAN的介紹主要集中在數據鏈路層,對於物理層涉及很少。對於物理層感興趣的讀者可以訪問[1]


3.1    顯性與隱形

顯性(Dominant)與隱性(Recessive)是總線上最基本的兩個狀態,也可以表示爲“0”與“1”。在物理上它有兩條線的壓差表示。在隱形的時候,兩條線的電壓相同,壓差爲0。當壓差超過一定的閾值的時候,總線的狀態就變爲顯性。

2顯性與隱性


爲什麼叫顯性和隱形?

假設在總線上掛了2個器件1,2.器件1將總線設爲顯性,而同時器件2將總線設爲隱形。最終總線的狀態會呈現爲顯性。所以當總線上的所有器件都爲隱形時,總線的狀態才爲隱形。如果有一個器件爲顯性,則總線爲顯性


3 CAN

3. 2   衝突裁決

當總線上的幾個器件同時發送數據的時候,CAN總線必須決定哪個器件可以發送,而其他的器件必須等待。衝突裁決是CAN協議最重要的一個特性,也是CAN總線做的最漂亮的地方,用很小的成本就解決了這個問題。

總線上的每一個CAN器件都會有一個唯一的ID。ID的大小決定了器件的優先級。ID越小優先級越高。如果幾個器件同時發送數據,ID小的優先發送。以下圖爲例,總線上有A,B,C三個器件。A首先發送數據。當總線上有器件發送數據時,其他器件只能處於監聽模式,所以B,C雖然有發送數據的需求但是隻能等待A發送結束。當A發送結束之後,B,C同時發送,但是B的ID更小,B優先發送。B發送結束之後C纔可以發送

 

4衝突處理與Node ID


下面說明一下當幾個器件同時發送時CAN總線是如何做裁決的。

以下圖爲例。總線上有器件ABCDABC同時發出SOF位爲顯性。而D爲隱形,當它發現總線上的狀態與自己的狀態不一致時,D就進入監聽狀態。ABC繼續發送數據。發送到ID的第5位時AC爲顯性,B爲隱形。B檢測到總線的狀態於自己的狀態不一致,進入監聽狀態。A,C繼續發送數據。這也說明BIDAC要大。當發送到ID的第1位時A爲隱形,C爲顯性,A進入監聽狀態。C繼續發送。最終ID最小的C發送成功,AB只能等待C發送完成之後再進行發送。然後A會發送成功,B等待,最後纔是B發送。從上面的裁決過程可以看出,對於C來說,它的數據發送沒有因爲衝突而產生延遲。

衝突處理細節
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章