通過OSI七層模型理解UDS、OBD、KWP2000、CAN等協議

0.前言

最近在學習汽車診斷方面的知識,一大堆術語、協議、標準撲面而來。在一段迷茫過後,稍微有了點方向感。通過OSI七層模型搭建出診斷的基本框架。

特此記錄,以作小結。

1.概念梳理

1.1. 汽車診斷術語、協議及標準

OBD:On Board Diagnostics,即車載自動診斷系統。
是爲了解決汽車排放問題而制定的規範,設置故障機制,記錄故障信息,報警提示車主,現在爲OBD2正在向3(實時排放監控)發展。

UDS:Unified diagnostic services,即統一診斷服務。
是診斷服務的規範化標準,比如讀取故障碼應該向ecu發什麼指令,讀數據流又是發什麼指令。
標準號:ISO 14229

KWP2000:Keyword Protocol 2000,即關鍵字協議。
是一種診斷協議。通過K-Line實現診斷功能,另外可選擇通過L-Line進行喚醒。
標準號:ISO 14230——Road Vehicles - Diagnostic Systems Keyword Protocol 2000

CAN:Controller Area Network,即控制器局域網絡
是一種總線形式。由於K-Line物理層和數據鏈路層在網絡管理和通訊速率上的侷限性,使得K-Line無法滿足日趨複雜的車載診斷網絡的需求。這時候CAN-bus出現並代替了K-Line。這樣就延伸出了基於CAN-bus的診斷協議。
基於這層關係有些人喜歡將ISO 15765叫做基於CAN-bus的KWP200。其實兩者只是OBD下的兩種診斷協議。但是CAN運用更廣泛(比如工業上),所以其物理層和數據鏈路層由分出一個標準(ISO 11898)。
標準號:ISO 15765——Road vehicles -- Diagnostic communication over Controller Area Network (DoCAN)
ISO 11898——Road vehicles -- Controller area network (CAN)

1.2. OSI七層模型

OSI七層模型:亦稱OSI(Open System Interconnection)參考模型,是參考模型是國際標準化組織(ISO)制定的一個用於計算機或通信系統間互聯的標準體系。

 

OSI參考模型

 

第7層——應用層——在用戶、軟件、網絡終端等之間進行信息交換,如:服務。

第6層——表示層——將不同數據格式的信息轉換成能共同理解的格式。

第5層——會話層——依靠底層的通訊功能來進行數據的有效傳遞,如定義數據傳遞的間隔時間範圍。

第4層——傳輸層——控制兩通訊節點之間的數據傳輸,如數據重發,多幀傳輸。

第3層——網絡層——規定網絡連接的建立、維持和拆除的協議,如尋址。

第2層——數據鏈路層——規定在介質上傳輸數據的排列和組織,如數據校驗、幀結構

第1層——物理層——規定通信介質的物理特性,如電氣特性。

2.基於OSI七層模型的理解

首先先看一下摘自ISO 14230的OBD七層模型和ISO 14229的增強型診斷七層模型。

 

OBD 七層模型

 

增強型診斷 七層模型

通過上述兩幅圖,我們可以很清晰的整理出:
首先,OBD(汽車排放和驅動性相關)和增強型診斷(面向整車所有ECU)都屬於系統級,擁有完整的七層模型。

其次,USD作爲服務,處於模型的應用層和會話層。

而KWP2000作爲汽車專用協議,處於模型的第4層至第1層。

另外,CAN因爲使用較廣泛,關於汽車的ISO 15765處於第4層至第3層。而通用的底層協議ISO 11898處於第2層至第1層。

所以,我們可以理解爲ODB系統調用了UDS、KWP2000、CAN這些協議。而這些協議也能夠被別的系統調用,組成新的七層模型。

ODB通過服務號(SID)調用相關UDS的服務,然後UDS根據應用的底層(K-Line、CAN-bus等)調用KWP2000或CAN。

3.總結

1.OBD作爲系統,自上而下,標準龐大而清晰。
2.UDS作爲服務,上層清晰,兼容不同下層,以最終功能實現爲要求。

3.OBD是關注車輛實時排放的理念形成的行業規範,而UDS是診斷服務的統一化規範。
4.UDS是面向整車所有ECU(電控單元)的,而OBD是面向排放系統ECU的。

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