談談汽車診斷之KWP2000/ISO14229/ISO15765/SAEJ1939

最近在研究汽車診斷規範,其中涉及到好幾個類似的國際規範,比如KWP2000、ISO-14229、ISO-15765、SAE-J1939等等。有的規範彼此之間相互引用,有的規範卻又各自獨立,簡直就是一團亂麻,於是靜下心來好好整理整理。

一、KWP2000

KWP 2000 代表 Keyword Protocol 2000,即關鍵字協議 2000,它是 ISO 標準 ISO 14230的工作名稱。ISO 14230 由三部分組成,第一部分定義物理層,它實際上就是在 ISO 9141-2中定義的物理層,但是擴展到可以工作在24V系統中。這意味着凡是滿足ISO 9141-2的車輛、模塊或測試設備,只需對軟件進行修改,就能滿足 KWP 2000 接口需求;第二部分定義數據鏈路層,其中包括信息格式和時序。它們兼容 ISO 9141-2,但是也提供了額外選項。其中包括頭部是否帶有地址信息和長度信息。信息最大可達 255 字節長。另外還定義了通訊初始化方法;ISO 14230 的第三部分定義了應用層,兼容了 ISO 14229 中描述的診斷維修實施方法。同時對於數據的排放在 ISO 15031 中進行了定義。

總的來說,對於 KWP2000 協議可以理解爲 ISO 14230 協議的簡版,而ISO14230 中涉及到 ISO9141、ISO14229、ISO15031 等協議內容。同時 KWP2000 新增了一些自己的內容。

在汽車故障診斷領域,針對診斷設備和汽車ECU之間的數據交換,各大汽車公司幾乎都制訂了相關的標準和協議。其中,歐洲汽車領域廣泛使用的一種車載診斷協議標準是KWP2000(Keyword Protocol 2000),該協議實現了一套完整的車載診斷服務,並且滿足E-OBD(European On Board Diagnose)標準。KWP2000最初是基於K線的診斷協議,由於K線物理層和數據鏈路層在網絡管理和通訊速率上的侷限性,使得K線無法滿足日趨複雜的車載診斷網絡的需求。而CAN網絡(Controller Area Network)由於其非破壞性的網絡仲裁機制、較高的通訊速率(可達1M bps)和靈活可靠的通訊方式,在車載網絡領域廣受青睞,越來越多的汽車製造商把CAN總線應用於汽車控制、診斷和通訊。近年來歐洲汽車領域廣泛採用了基於CAN總線的KWP2000,即ISO 15765協議,而基於K線的KWP2000物理層和數據鏈路層協議將逐步被淘汰。

二、ISO-14229

首先簡要介紹什麼是ISO-14229,至於可以在網上找到的大篇理論介紹我就略過不講了,有興趣可以自行搜索。簡單的說,它就是一個用於汽車行業診斷通信的需求規範,它只規定了與診斷相關的服務需求,並沒有涉及通信機制,因此要實現一個完整的診斷通信還需要定義網絡層協議(比如ISO-15765),還有底層硬件實現方式(比如CAN控制器)。由於不涉及網絡通信機制,可以架設在各種網絡之上,因此ISO-14229也稱爲UDS(Unified Diagnostic Services)。換句話說,它是診斷服務的規範化標準,比如讀取故障碼應該向ecu發什麼指令,讀數據流又是發什麼指令等。比如說:

  • 給ECU發送:22 F1 86
  • ECU則回覆:62 F1 86 01

三、ISO-15765

由於K線物理層和數據鏈路層在網絡管理和通訊速率上的侷限性,使得K線無法滿足日趨複雜的車載診斷網絡的需求,這時候CAN總線出現並代替了K線,也就是我們說的ISO-15765。

ISO 15765 協議是一種基於CAN 總線上的診斷協議。該協議按照ISO/OSI標準7層參考模型建立的,其中ISO 15765-1 包括了物理層和數據鏈路層,ISO 15765-2 對網絡層進行了說明,ISO 15765-3 則是規定了應用層的具體服務。目前ISO 15765 協議已經廣泛的使用在轎車、汽車控制工業等方面。

又因爲ISO-15765-3使用了ISO-14229(UDS)的診斷服務,所以ISO-15765也叫UDSonCAN。

簡潔一點的理解就是:

  • 基於K 線的KWP2000協議就是ISO-14230;
  • 基於CAN的KWP2000協議就是ISO-15765;

目前國內的車子使用K線的新車是沒有了, 市面上存量的K線的車也不多了,十年前生產的柴油車,估計纔有採用K線的ECU。

四、SAE J1939

SAE J1939 協議是美國汽車工程師協會(SAE)爲了實現總線協議的標準化,在CAN2.0B 的基礎上制定的應用於大型貨車和客車的車輛網絡串行通信和控制協議。該協議是按照ISO/OSI標準7層參考模型建立的,在物理層和數據鏈路層基本上沿用了CAN 規範,並增加了網絡層、應用層和網絡管理規範,規定了CAN總線使用29bit的擴展標識符和擴展數據幀,網絡通信速率可達250Kbps。J1939 協議因其獨特的設計理念和優異的性能廣泛應用於貨車、客車、卡車、農業裝備、林業電子設備、柴油機控制、海洋電子設備、公共交通、鐵路等等。

J1939協議,採集數據的時候比較方便,ECU一直會主動外發,從OBD口採集數據只需要監聽ECU的廣播報文即可。收到的報文可以過濾掉不需要的0xAABBCCDD地址,只挑選自己需要的地址數據,然後根據廠家的通訊協議,解析8個Byte裏具體的數據存儲到數據庫即可。

而14230,14229,15765都是需要主動向ECU請求數據,ECU纔會返回,需要知道請求每個數據的具體指令,ECU就相當於Web服務器,採集設備就相當於瀏覽器。具體的指令可以從廠家獲取, 廠家獲取不到,就需要購買一個官方的診斷儀,用CAN盒抓包進行分析了。

當然了, 汽車的數據也不是你想讀取就能讀取的,就好比京東淘寶你要是沒有賬號密碼,你是無法購物的,ECU也要認證採集設備是不是合法的,有安全算法,安全算法的破解就需要購買市面上能讀取數據的診斷儀去破解分析了。

J1939雖然主動外發數據, 但是外發的數據都是一些常規數據, 有很多數據是不外發的,比如油門開度之類,要讓ECU主動外發,就涉及到要配置ECU的參數,需要專用軟件配置了之後刷寫HEX文件,風險很大, 弄錯了 , 發動機啓動不了,或者儀表報錯。

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