天天看點

CAN總線協定詳解(上)

作者:歎浮遊

3. CAN 是什麼?

CAN 是 Controller Area Network 的縮寫(以下稱為 CAN),是 ISO*1 國際标準化的串行通信協定。

在目前的汽車産業中,出于對安全性、舒适性、友善性、低公害、低成本的要求,各種各樣的電子控制系統

被開發了出來。由于這些系統之間通信所用的資料類型及對可靠性的要求不盡相同,由多條總線構成的情況很

多,線束的數量也随之增加。為适應“減少線束的數量”、“通過多個 LAN,進行大量資料的高速通信”的需

要,1986 年德國電氣商博世公司開發出面向汽車的 CAN 通信協定。此後,CAN 通過 ISO11898 及 ISO11519 進

行了标準化,現在在歐洲已是汽車網絡的标準協定。

現在,CAN 的高性能和可靠性已被認同,并被廣泛地應用于工業自動化、船舶、醫療裝置、工業裝置等方面。

圖 1 是車載網絡的構想示意圖。CAN 等通信協定的開發,使多種 LAN 通過網關進行資料交換得以實作。

CAN總線協定詳解(上)

3.1 CAN 的應用示例

圖 2 為 CAN 的應用示例

CAN總線協定詳解(上)

3.2

總線拓撲圖

CAN 控制器根據兩根線上的電位差來判斷總線電平。總線電平分為顯性電平和隐性電平,二者必居其一。發

送方通過使總線電平發生變化,将消息發送給接收方。

圖 3 是 CAN 的連接配接示意圖

CAN總線協定詳解(上)

4. CAN 的特點

CAN 協定具有以下特點。

(1) 多主要制

在總線空閑時,所有的單元都可開始發送消息(多主要制)。

最先通路總線的單元可獲得發送權(CSMA/CA 方式*1)。

多個單元同時開始發送時,發送高優先級 ID 消息的單元可獲得發送權。

(2) 消息的發送

在 CAN 協定中,所有的消息都以固定的格式發送。總線空閑時,所有與總線相連的單元都可以開始發送新

消息。兩個以上的單元同時開始發送消息時,根據辨別符(Identifier 以下稱為 ID)決定優先級。ID 并不

是表示發送的目的位址,而是表示通路總線的消息的優先級。兩個以上的單元同時開始發送消息時,對各消

息 ID 的每個位進行逐個仲裁比較。仲裁獲勝(被判定為優先級最高)的單元可繼續發送消息,仲裁失利的

單元則立刻停止發送而進行接收工作。

(3) 系統的柔軟性

與總線相連的單元沒有類似于“位址”的資訊。是以在總線上增加單元時,連接配接在總線上的其它單元的軟硬

件及應用層都不需要改變。

(4) 通信速度

根據整個網絡的規模,可設定适合的通信速度。

在同一網絡中,所有單元必須設定成統一的通信速度。即使有一個單元的通信速度與其它的不一樣,此單元

也會輸出錯誤信号,妨礙整個網絡的通信。不同網絡間則可以有不同的通信速度。

(5) 遠端資料請求

可通過發送“遙控幀” 請求其他單元發送資料。

(6) 錯誤檢測功能·錯誤通知功能·錯誤恢複功能

所有的單元都可以檢測錯誤(錯誤檢測功能)。

檢測出錯誤的單元會立即同時通知其他所有單元(錯誤通知功能)。

正在發送消息的單元一旦檢測出錯誤,會強制結束目前的發送。強制結束發送的單元會不斷反複地重新發送

此消息直到成功發送為止(錯誤恢複功能)。

(7) 故障封閉

CAN 可以判斷出錯誤的類型是總線上暫時的資料錯誤(如外部噪聲等)還是持續的資料錯誤(如單元内部

故障、驅動器故障、斷線等)。由此功能,當總線上發生持續資料錯誤時,可将引起此故障的單元從總線上

隔離出去。

(8) 連接配接

CAN 總線是可同時連接配接多個單元的總線。可連接配接的單元總數理論上是沒有限制的。但實際上可連接配接的單元

數受總線上的時間延遲及電氣負載的限制。降低通信速度,可連接配接的單元數增加;提高通信速度,則可連接配接

的單元數減少。

【注】

*1 CSMA/CA: Carrier Sense Multiple Access / Collision Avoidance

5. 錯誤

5.1

錯誤狀态的種類

單元始終處于 3 種狀态之一。

(1) 主動錯誤狀态

主動錯誤狀态是可以正常參加總線通信的狀态。

處于主動錯誤狀态的單元檢測出錯誤時,輸出主動錯誤标志。

(2) 被動錯誤狀态

被動錯誤狀态是易引起錯誤的狀态。

處于被動錯誤狀态的單元雖能參加總線通信,但為不妨礙其它單元通信,接收時不能積極地發送錯誤通知。

處于被動錯誤狀态的單元即使檢測出錯誤,而其它處于主動錯誤狀态的單元如果沒發現錯誤,整個總線也被

認為是沒有錯誤的。

處于被動錯誤狀态的單元檢測出錯誤時,輸出被動錯誤标志。

另外,處于被動錯誤狀态的單元在發送結束後不能馬上再次開始發送。在開始下次發送前,在間隔幀期間内

必須插入“延遲傳送”(8 個位的隐性位)。

(3) 總線關閉态

總線關閉态是不能參加總線上通信的狀态。

資訊的接收和發送均被禁止。

這些狀态依靠發送錯誤計數和接收錯誤計數來管理,根據計數值決定進入何種狀态。錯誤狀态和計數值的關

系如表 1 及圖 4 所示。

CAN總線協定詳解(上)
CAN總線協定詳解(上)

5.2

錯誤計數值

發送錯誤計數值和接收錯誤計數值根據一定的條件發生變化。

錯誤計數值的變動條件如表 2 所示。

一次資料的接收和發送可能同時滿足多個條件。

錯誤計數器在錯誤标志的第一個位出現的時間點上開始計數。

CAN總線協定詳解(上)

6. CAN 協定的基本概念

CAN 協定如表 3 所示涵蓋了 ISO 規定的 OSI*1 基本參照模型中的傳輸層、資料鍊路層及實體層。

CAN 協定中關于 ISO/OSI 基本參照模型中的傳輸層、資料鍊路層及實體層,具體有哪些定義如圖 5 所示。

CAN總線協定詳解(上)
CAN總線協定詳解(上)

資料鍊路層分為 MAC 子層和 LLC 子層,MAC 子層是 CAN 協定的核心部分。資料鍊路層的功能是将實體層

收到的信号組織成有意義的消息,并提供傳送錯誤控制等傳輸控制的流程。具體地說,就是消息的幀化、仲裁、

應答、錯誤的檢測或報告。資料鍊路層的功能通常在 CAN 控制器的硬體中執行。

在實體層定義了信号實際的發送方式、位時序、位的編碼方式及同步的步驟。但具體地說,信号電平、通信

速度、采樣點、驅動器和總線的電氣特性、連接配接器的形态等均未定義*1。這些必須由使用者根據系統需求自行确定。

限于篇幅,後面具體講述can協定及标準規格。

繼續閱讀