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過彎成績冠道一致,好於漢蘭達?
※賽車手周勇在中國賽車界,是一個什麼樣的存在?