吳含冰
(中國汽車技術研究中心有限公司,天津 300300)
控制器局域網 (Controller Area Network,以下簡稱CAN)作為現場總線是汽車企業為解決現代車輛中眾多的控制和數據交換問題所開發的通信協議。CAN總線是一種多主總線,應用于車輛的CAN總線通信介質多為雙絞線,通信速率最高可達1Mb/s。由于CAN總線具有數據結構較短、非破壞性總線仲裁技術以及靈活的通信方式特點,已被全世界眾多汽車企業采用,成為最重要的汽車總線標準。而基于CAN網絡故障診斷也越來越受到了各大汽車廠商的重視,汽車廠商通常在國際上統一的診斷通信標準的基礎上構建自己的整車診斷網絡。國際上針對基于CAN網絡的診斷通信技術已經比較成熟,具備完善的配套標準。國際標準化組織ISO已經制定了覆蓋整個診斷協議棧的國際標準 (包括ISO 15765《道路車輛 基于控制器局域網的診斷通信》系列標準和ISO 14229《道路車輛 統一的診斷服務》系列標準等),這些標準在全世界范圍內已經得到廣泛的實施和應用,在規范和引導車載診斷系統技術發展發揮了重大作用。
車載診斷系統遵循開放系統互聯 (以下簡稱OSI)基本參考模型,該模型是國際標準化組織 (ISO)于1984年提出的分層網絡體系結構模型,其定義的是一種抽象機構,而并非具體實現的描述,其目的是支持異構網絡系統的互聯互通。OSI參考模型將通信系統劃分為7層,從上至下依次是應用層 (第7層)、表示層 (第6層)、會話層 (第5層)、傳輸層(第4層)、網絡層 (第3層)、數據鏈路層 (第2層)和物理層(第1層)。各層的目的是向上層提供服務。 其中,物理層是利用傳輸介質為數據鏈路層提供物理連接,實現比特流的透明傳輸,一般情況下,物理層進行信道編碼或解碼,保障數據傳輸的可靠性;數據鏈路層主要保障在物理鏈路上進行數據的可靠傳遞,數據或指令被封裝成特定的可被物理層傳輸的幀,還包括訪問控制、資源管理、數據分段、 級聯、糾錯等功能;網絡層負責進行路由選擇,從而確定兩節點之間的路徑,可以進行流量控制;傳輸層負責為會話層提供網絡線路,即傳輸通路;會話層負責兩節點之間會話建立、維持和終止;表示層負責對數據進行編碼或解碼,從而將數據轉換為兼容或適合的傳輸格式,也可以進行數據的解密與加密;應用層負責為應用程序 (或用戶)提供服務。
車載診斷系統按照應用場景和應用目的不同,從協議棧層面分為3類:第1類是增強型診斷,主要用于車輛制造商開發車載診斷系統;第2類是排放相關車載診斷系統 (OBD);第3類是全球協調車載診斷系統 (WWH-OBD),主要應用于商用車。本文主要針對基于控制器局域網的增強型車載診斷展開研究。
增強型車載診斷系統遵循OSI架構,針對OSI架構的每一個層級,國際標準化組織都制定了相應的國際標準,并在全球汽車行業中得到廣泛的實施和應用 (表1)。

表1 基于CAN的增強型車載診斷國際標準協議棧[1]
增強型診斷的傳輸層和網絡層定義了網絡節點間數據交互使用的傳輸層和網絡層通信協議,例如從一個ECU到另一個ECU或外部測試設備和一個ECU之間的通信,其主要任務是傳輸報文,并且提供了分段、流控制傳輸和重組的方法。
CAN總線上的單個數據幀每幀只能傳輸8個字節,根據需要傳輸的診斷服務數據大小,可以使用單幀或多幀的方式進行傳輸。采用單幀傳輸時,可以傳輸6個 (擴展或混合尋址)或7個 (常規尋址)數據字節;如要傳輸較長報文,要先將其分段再傳輸多個網絡層協議數據單元 (以下簡稱N_PDU)。多個N_PDU包括首幀 (報文的第1個N_PDU)及連續幀 (所有后續N_PDU),多個N_PDU報文的接收端通過流控機制使傳輸吞吐量適合自身容量,如圖1所示。]

圖1 多幀傳輸示意圖[2
首幀,即第1幀 (FF)只能用于傳輸不適用于單個CAN幀傳輸的報文 (即分段報文)。收到FF后,網絡層接收實體應開始重組分段報文。
發送分段數據時,將首幀以后所有連續的幀編碼為連續幀 (CF)。收到連續幀后,網絡層接收實體應重組接收到的數據字節,直到所有報文接收完畢。正確接收到最后一幀報文后,接收實體應將重組報文傳遞至相鄰的上層協議層。
流控幀的目的是調節向接收端發送連續數據幀的速率,流控機制允許接收端將其能力通知發送端,如果發送實體傳輸的長度超出接收實體緩沖區大小,流控幀也可以在分段報文傳輸期間指示網絡發送實體暫停傳輸后續的連續幀,或終止傳輸分段報文。
應用層服務通常稱為診斷服務,用于基于客戶端—服務器端的系統,以執行諸如車載車輛服務端的測試、檢查、監控或診斷等功能。客戶端 (通常稱為診斷設備)使用應用層服務來請求在一個或多個服務端中執行診斷功能。服務器端 (通常作為ECU的部分功能)使用應用層服務將由請求的診斷服務提供的響應數據發送回客戶端,客戶端應用層和服務器應用層的診斷通信典型交互過程如圖2所示。客戶端通常是非車載診斷儀,但在某些系統中也可以是車載診斷儀,同一車輛系統中允許有多個客戶端。應用層根據診斷交互的需求,能夠提供多種診斷服務,其中最為常用的診斷服務包括診斷和通信管理類功能和數據傳輸類功能,如表2和表3所示。

圖2 客戶端和服務器的診斷通信交互示意圖
汽車設計中的一大難點是如何預先評估潛在的危害和風險,并采取適當的方法和措施來降低風險。隨著電子電氣系統復雜性的提高,來自系統性失效、隨機硬件失效和軟件故障的風險也日益增加。因此,車載診斷服務對于車輛的整體安全性的作用也日益重要。

表2 診斷和通信管理功能[3]

表3 數據傳輸功能單元[3]