KWP 2000 和 UDS 有什麼區別?

上周面試被老外問到這個問題,由於我工作中只用到過UDS,對KWP2000不太了解 ,想知道全面一些的答案,另外,KWP2000是否還在流行,主要用在哪些汽車ECU上?目前我所在的項目都是UDS的。


這是我在知乎上的處女答。

首先,KWP2000現在已經不流行了。在歐洲,已規定自2008年起,新下線的車不再使用基於KWP2000的診斷系統,使用基於ISO
15765的診斷系統;在國內,UDS基本上處於主要地位,且有發展為統治地位的趨勢。

規定這兩種診斷方式的相關ISO標準的區別:

KWP2000:ISO14230

UDSonCAN:ISO14229

從OSI分層中的網路層來講,這兩者的區別:

KWP2000無相關協議對網路層進行規定,需要由使用者自定義,這將增加使用難度,而UDSonCAN架構里有ISO15765-2定義網路層的相關內容,
已定義完善的通信錯誤處理機制和匯流排仲裁機制,使用起來比較方便.

從OSI分層中的物理層層來講,這兩者的區別:

KWP2000:

有兩種實現方式,一種是只有一根K線,另一種是有一根K線和一根L線。但常用的實現方式為第一種。

UDSonCAN:

物理層基於CAN匯流排,至於CAN線的物理層這裡就不贅述了。

通信速率:

KWP2000:
慢,最大達10.4 kbit/s

UDSonCAN:
快,最大達1 Mbit/s

診斷報文最大長度:

KWP2000:255Byte

UDSonCAN:4095Byte

應用層的服務方面來講:

UDS設置了「禁止肯定響應位」,更符合功能定址的要求;

UDS根據實際的需要,對服務項進行了完善和擴充,可用的服務更多一些,如28、85等;

UDS對多數服務的格式及內容進行了明確的定義;

UDS採用3位元組的DTC碼,而KWP的為2位元組的DTC,UDS能提供更詳細的故障信息。

我也沒有在實際項目中使用過KWP2000,現在接觸過的都是UDS。

在一些ECU的舊的平台中倒是有使用KWP,像EMS、ABS等有使用,不過在UDS大行其道的今天,幾乎見不到KWP了,倒是有極少量的ECU還在使用K線用作標定等。


拋磚引玉吧。

KWP2000用的是K線,是一種單線傳輸協議,從數據校驗、通訊速率、防錯機制上,都遠遠落後於CAN匯流排。具體的機制我並不清楚。

KWP2000基本是上一個時代的東西了。無論是診斷,還是程序刷寫,現在的主流都是UDS。


@KeepMoving 回答的算比較全面了。補充一下吧,Key Word Protocol 2000最早是針對K線通訊的診斷協議,是應用層協議。因為K線通訊是Master-Slave的訪問方式,所以KWP2000中有明顯的開始通訊和中止通訊這樣的服務指令。後期隨著CAN匯流排的應用出現了KWP2000onCAN。其實就是把診斷服務應用於CAN匯流排通訊。Unified Diagnostic Services是國際標準組織結合歐美多種診斷協議而制定的統一診斷服務。不僅僅有KWP,還有GMLAN等。兩者對比,UDS的服務更簡潔,它把很多KWP服務歸為一種,用參數表示具體執行內容。例如,RoutineControl,KWP中開始和結束是兩個指令,UDS是一個指令和兩個參數表示。當然還有一部分服務指令擴展。KWP現在用的不多了,以後只有UDS診斷。


一、KWP2000是一套協議,即ISO14230-1,ISO14230-2,ISO14230-3,ISO14230-4這4個協議文件,符合OSI七層開放互聯模型。

1)ISO14230-1協議規定了物理層標準,要求使用K線(一種車載通信匯流排)和L線,以及如何表示邏輯0和1,具體可以看協議。

2)ISO14230-2 規定了鏈路層,即幀格式、計時器等、錯誤處理機制以及交換關係。

3)ISO14230-3 規定了應用層,及鏈路層中的數據域是如何解析的,怎麼樣為用戶提供服務(請求數據、接受數據、解析數據),這部分參考了ISO14229-1協議。

4)ISO14230-4 則是對一種特殊應用(排放相關係統要求),他分別對ISO14230-1,ISO14230-2,ISO14230-3作出了特例化要求和一些補充,又形成了一個體系協議(這個不太相關)。

二、UDS是ISO14229系列協議,ISO14229-1,ISO14229-2,ISO14229-3,... ISO14229-7,是統一規定了應用層的診斷服務。

1)ISO14229-1統一規定了診斷服務。

2)ISO14422-2統一規定了會話層協議。

3)ISO14229-3規定了如何通過CAN匯流排實現服務(ISO15765-2,ISO11898-1,ISO11898- 2),圖中左下方劃圈部分 。

4)ISO14229-4是規定了FlexRay的實現。

5)ISO14229-5規定了如何通過K線實現,明確指出是利用ISO14230-2和ISO14230-1通信,他們是KWP2000協議的部分。

總結:ISO14230-3(KWP2000部分)協議中參考了ISO14229-1(UDS部分),ISO14229-5(UDS部分)利用了ISO14230-1和ISO14230-2(KWP2000)部分實現通信,所以KWP2000和UDS是你中有我,我中有你,相輔相成吧。

區別:真的這區別我還真不好說,真要說就是

1)UDS只是應用層的協議,KWP2000還制定了物理層和鏈路層規範。

2)UDS不限於通信介質,KWP2000規定只可以用K線外加L線輔助通信。

寫的有點亂,但是不能怪我啊,整個車載網路中的各種協議就是很亂,比如ISO15765協議和J1939協議,剛開始看的人懷疑人生了,不像TCP/IP。這也有原因吧,畢竟操作系統就是linux和windows,但是汽車系統製造商那可多了,要統一起來也挺難的,而且標準是後來才有的,要照顧大部分廠商,比如你用K線,我用CAN,他用VPW,還有人用PWM,那隻能亂了。


KWP2000 屬於早期的技術。像BOSCH的EMS和ZF的TCU,這種平台化產品一般都是支持K線的。但由於UDS在的先進性,也便於各個模塊可以通過OBD口進行統一的UDS診斷。故整車趨勢是各模塊做UDS的診斷


那KWP ON CAN 何解,是指物理層用CAN匯流排?

這個和KWP2000的兩種實現方式是否衝突(K線;K/L線)?


推薦閱讀:

人們可以容忍豪華品牌路虎、瑪莎拉蒂等有各種毛病,為什麼不能容忍vv7毛病多?
為什麼知乎上這麼多人說領克好?
如何看待中國量產車性能賽克拉瑪依站VV7過彎成績冠道一致,好於漢蘭達?
賽車手周勇在中國賽車界,是一個什麼樣的存在?

TAG:汽車 | 故障診斷 | 汽車電子 |