出自微信公眾號--嘴哥有料,本人做學習記錄用,侵刪。
引言:
從之前的課程我們了解到, 車上的智能硬件設備太多, 即ECU節點太多, 這些節點通過CAN總線外加汽車網關, 組成了整車CAN網絡. 當車輛某個節點, 或者某條CAN總線出故障甚至網關出故障了, 會有什么現象呢?
某ECU節點故障: 也就是你的車上的某個智能硬件不work或者不好用, 比如空調這個設備無法調節溫度了.
某條CAN總線故障: 比如Body CAN整條CAN總線都不work了, 那整條CAN總線上的智能硬件(ECU節點)會功能不好用, 比如語音控制打開天窗, 沒效果了, 必須要手動用硬件打開天窗.
CAN網關出故障了: 嘴哥還沒碰見過...., 但肯定是更加嚴重的, 比如到處都發出報警提示音, 因為很多ECU節點都丟失了.
但以上一般是不會有生命危險的,動力系統一般還可用, 車窗啥的單獨的硬件按鈕調節.
這時候你把車開去4s店維修:
如果是4s店的維修工人, 一般是會幫您讀取下診斷故障碼,然后發現某項ECU的參數不對, 然后跟您說重新刷了下軟件或更換了整個智能硬件. 這就是CAN診斷最通俗的解釋。
什么是ECU自檢與診斷故障碼
ECU自檢:每個ECU都有自己故障檢測功能, 基本上每個ECU都有一塊EEPROM(可讀性可編程存儲器),可存儲自身故障信息,但是以上故障信息一般會上傳至網關的EEPROM,並以診斷故障碼(DTC:Diagnose Trouble Code)的形式存儲.
什么是CAN診斷
CAN診斷, 即對CAN網絡各節點, 各CAN總線, 網關的故障查驗與修復.
查驗包括: 診斷故障碼查詢
修復包括: 重新對ECU寫入新的配置值
CAN診斷的發起條件
需要通過Diag CAN才能進行診斷.
一般是將直接將CAN硬件工具(診斷儀, PCAN-USB, Vehicle SPY3, CANoe...)的CAN-High, CAN-Low直接接到Diag 診斷CAN上, 然后通過診斷儀, PCAN-Explorer, Vehicle SPY3, CANoe等軟件發送CAN診斷輸入!
也有通過Tbox進行本地診斷或遠程診斷的, 因為Tbox是診斷CAN總線上的唯一節點.
一般 什么人會用到診斷
① 4s店的維修人員, 他們一般只需要做讀取故障碼(19服務), ECU參數寫入服務(2E服務), ECU參數讀取服務(22服務)
② Tbox開發測試, 網關開發測試人員, 由於Tbox可發起本地診斷與遠程診斷, 網關負責診斷信號轉發, 所以都需要測試診斷.
③ 車廠的電子電氣研發部門研發人員.....
CAN診斷標准介紹
統一診斷服務(UDS:Unified Diagnostic Services), 即IOS-14229標准, 絕大大部分汽車廠商用的診斷服務,診斷命令都大同小異, 唯一可能不同的是各廠商某些數據標識符(DID)及程序標識符不一致.
統一診斷服務(UDS)規定了以下診斷發起的服務, 診斷回應規范等:
診斷請求(發起)服務_Request
常用的診斷請求(發起)服務列表:
10: 診斷會話請求服務
必須先發起診斷會話, 不然無法進行其他診斷服務發起服務.
也就是說只要診斷, 必須先用10服務, 發起診斷會話session,
類似於先建立握手,
常用如:710 02 10 01 (10代表診斷會話發起服務, 01代表默認會話功能)
2E: 寫入配置請求服務
簡單點說: 對某個ECU寫入配置項數據, 就是常聽說的重新標定.
常用如:710 07 2E C0 01 01 03 22 FF (C0 01是一個DID數據標識符, 代表某ECU節點的多個參數, 01 03 22 FF代表ECU里的以上多個參數應該設定的值),
11: 網關復位刷新請求服務
一般如果用2E寫入ECU配置值值后, 必須對網關刷新復位, 不然這個值可能不會立馬生效.
常用如: 710 02 11 01 (代表向所有的ECU發起硬復位請求)
27: 安全訪問認證請求服務
一般如果需要涉及2E寫入ECU配置項等服務時, 必須通過網關的安全認證, 不然無權限修改, 你可以理解成, 沒成功申請到27安全訪問的話, 你的CAN網絡權限是只讀的, 不可寫.
常用如:710 02 27 03 (代表向網關發起安全認證的請求)
22: 讀取配置請求服務
簡單點說: 讀取某個ECU配置項信息
常用如:710 03 22 C0 01 (代表讀取C0 01 這個數據標識符里的多項參數值)
19: 讀取故障碼請求服務
讀取正常CAN網絡的故障信息, 一般有ECU節點丟失(比如ECU節點松動脫落或者燒壞了等), 電壓過高過低, CAN總線異常(即Bus Off)等...這些故障會記錄在一串超長故障碼(DTC)列表里.
常用如:710 03 19 02 0C (代表讀取整個CAN網絡的當前已生效的故障碼)
14: 清除故障碼請求服務
清除所有ECU的診斷故障碼, 包括故障碼相關的快照等,
如果CAN網絡有故障, 其會源源不斷的反饋以上故障,
即使清除后也會立馬再發出.
常用如:710 04 14 FF FF FF (代表清除所有ECU上的診斷故障碼(包括故障碼相關的快照等.))
診斷回應_Responding
任何一輪診斷輸入后, 都會有診斷回應幀, 一般是幀ID是:718
但是分為肯定回應及否定回應.
肯定回應:
即您剛才輸入的診斷命令,目標對方(網關或某節點)已經收到並做了處理返回.
比如以下是: 10 診斷會話服務發起后, 收到的肯定回應,
如下示例:
否定回應:
即您剛剛輸入的診斷命令, 目標對方(網關或某節點)因為某些原因,未成功收到或者未做處理就被打回了, 可以理解成吃了閉門羹.
看到7f否定回應碼就知道吃閉門羹了, 所有吃閉門羹的都是7f否定回應碼.
比如以下是: 10 診斷會話服務發起后, 收到的否定回應:
以上的吃閉門羹的原因是: 22條件不符合.
其實還有很多其他的原因會導致吃閉門羹, 常用的有:
11 服務不支持
12 子功能不支持
13 報文長度錯誤
31 請求超出范圍.....
以上只是嘴哥的淺談CAN診斷.
有需要詳細了解CAN診斷的朋友可以看看下面這批文章, 這偏文章寫的超級贊, 算是CAN診斷里寫的最通俗易懂的一篇文章了.
https://wenku.baidu.com/view/f2c2cc6afd0a79563c1e72d7.html?from=search
這是網友分享的眾泰公司的診斷需求說明書.