ISO11898主要定義瞭物理層和數據鏈路層,對比標準OSI通信模型,物理層和數據鏈路層屬於最底層的兩個層級。在詳細講ISO11898-1之前先來瞭解一下汽車CAN通信網絡中常用的幾個協議都處於OSI模型的什麼位置。

圖1 OSI模型

物理層定義瞭比特流的一些性質及電氣特性,不在本文討論范圍內故跳過。

數據鏈路層(Data Link Layer)

數據鏈路層(Data Link Layer)的作用主要是將物理層的數據比特流封裝成幀,並控制幀在物理信道上的傳輸,還包含檢錯、調節傳送速率等功能。

在ISO11898-1中,將數據鏈路層(Data Link Layer)分為兩個子層:邏輯鏈路控制(Logical Link Control,LLC)和媒體訪問控制(Medium Access Control,MAC)。

邏輯鏈路控制(LLC):數據鏈路層(Data Link Layer)的上層部分,DLL服務通過LLC為網絡層提供統一接口。

媒體訪問控制(Medium Access Control,MAC):定義瞭數據幀如何在介質上進行傳輸,我們知道CAN屬於廣播式的總線,MAC就分配瞭幀在信道上的使用權。

圖2 數據鏈路層(DLL)示意圖

每一層都有都有各自定義的PDU(Protocol Data Uint),同層級之間的通信通過交換PDU來實現,兩個上下層級通過SDU(Service Data Uint)來進行交互。

圖3 層級間交互示意圖

CAN的特點

1.基於多主優先級的總線訪問

總線空閑時,任何節點都可以發送數據。當有多個節點同時發送時,就要根據ID值按位進行仲裁(ID值越小優先級越高),優先級高的獲得總線訪問權。

2.非破壞性仲裁機制

3.廣播型

節點通過本地過濾接收自己所需的數據,不需要的就過濾掉。

4.配置靈活

可隨意增減節點,不影響軟硬件。節點數量理論上無限制,實際受電氣負載限制。

5.系統范圍內數據一致性

6.錯誤檢測

7.自動重傳仲裁或錯誤期間被破壞的數據

8.區分臨時錯誤和永久性故障節點,自動關閉有缺陷節點

MAC子層

  • 數據的打包/拆包
  • 幀編碼(填充/去填充)
  • 錯誤檢測及通知
  • 串並行轉換

MAC層有3種服務:

  1. 數據幀傳輸
  2. 遠程幀傳輸
  3. 過載幀傳輸

MAC層幀結構:

1.數據幀

數據幀將數據從發送器傳輸到接收器。

標準格式:

圖4 數據幀標準格式

擴展格式:

圖5 數據幀擴展格式

(1)幀起始

幀起始(SOF)標志數據幀和遠程幀的起始,僅有一個顯性位組成(0)。

(2)仲裁域

標準格式中,仲裁域由11位標識符和RTR位組成;擴展格式中,仲裁域由29位標識符和SRR位、IDE位、RTR位組成。

標識符(Identifier):在擴展幀中,有11位基本ID和18位擴展ID。

RTR位(Remote Transmission Request Bit):0表示數據幀,1表示遠程幀。

SRR位(Subtitue Remote Request Bit):SRR位為0,當標準幀與擴展幀發生沖突,而擴展幀的的基本ID與標準幀的ID相同時,標準幀優先於擴展幀。

IDE位(Identifier Extension Bit):擴展格式裡為隱性(1)。

(3)控制域

IDE位與r0組成保留位。

DLC有4位,表示數據長度,0 ~ 8 個字節。

(4)數據域

0 ~ 8 個字節的數據。

(5)循環冗餘碼(CRC)域

CRC序列裡存計算出的CRC校驗值。

CRC界定符包含1個隱性位(1)。

(6)應答場(ACK)

應答間隙:在發送器隱性位寫一個顯性位(0)表示收到匹配到正確CRC。

應答界定符:1位隱性位(1)。

(7)幀結束

幀結束(EOF)由7個隱性位(1)組成。

2.遠程幀

節點發出遠程幀,請求具有相同ID的數據幀。

遠程幀也分標準格式和擴展格式,RTR位為1表示遠程幀,相比數據幀少瞭數據域。

標準格式:

圖6 遠程幀標準格式

擴展格式:

圖7 遠程幀擴展格式

3.錯誤幀

任何節點檢測到總線錯誤就發出錯誤幀。

4.過載幀

過載幀用在相鄰數據幀或者遠程幀之間提供附加的延時。

5.幀間隔

LLC子層

  • 本地過濾
  • 過載通知
  • 錯誤恢復管理

LLC層有2種服務:

  1. 數據幀傳輸
  2. 遠程幀傳輸

LLC層幀結構:

1.數據幀

圖8 數據幀結構

2.遠程幀

圖9 遠程幀結構

MAC層對幀優先級進行瞭仲裁發送給LLC層,LLC層這時候隻需把幀繼續向網絡層傳輸,所以幀的結構也發生瞭變化。

以上均是筆者自己的理解,如有錯誤歡迎指正。