CAN診斷淺談 + 如何用CAN工具進行診斷
本文章轉載至微信公眾號:嘴哥有料
引言:
從之前的課程我們瞭解到, 車上的智慧硬體裝置太多, 即ECU節點太多, 這些節點通過CAN匯流排外加汽車閘道器, 組成了整車CAN網路. 當車輛某個節點, 或者某條CAN匯流排出故障甚至網關出故障了, 會有什麼現象呢?
某ECU節點故障: 也就是你的車上的某個智慧硬體不work或者不好用, 比如空調這個裝置無法調節溫度了.
某條CAN匯流排故障:比如BCAN整條CAN匯流排都不work了, 那整條CAN總線上的智慧硬體(ECU節點)會功能不好用, 比如語音控制開啟天窗, 沒效果了, 必須要手動用硬體開啟天窗.
CAN閘道器除故障了:
但以上一般是不會有生命危險的,動力系統一般還可用, 車窗啥的單獨的硬體按鈕調節.
這時候你把車開去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
注: 以下都是16進位制數字,本應該加上0x字首.
一般診斷請求(發起, 就是我們常說的Request)的輸入格式: 710 02 10 01
常用的診斷請求(發起)服務列表:
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 請求超出範圍.....
例項
用PCAN-USB 讀取診斷故障碼(19服務)
1. 發起診斷會話10服務01預設會話功能併成功收到肯定迴應
710 02 10 01
2. 發起診斷故障碼查詢服務19服務02按故障掩碼查詢方式功能0C已經確認的診斷故障程式碼
710 03 19 02 0C
3. PCAN-Explorer端的輸入如下:
即每10ms一輪的故障碼查詢服務.
點選ok後, 就到以下頁面,
診斷請求, 請看Transmit訊息傳送去的710幀,
診斷迴應結果, 請看Receive訊息接收區的718幀.
具體資料比較長, PCAN-Explorer這裡只顯示了:
10 73 59 02 FF C1 40 87 這8個位元組, 其實不止的,
通過其他的CAN工具(支援超過8個的多位元組顯示)讀取出:
10 73 59 02 FF C1 40 87 2F C1 64 87 2F D0 01 87 2F D1 40 87 2F C1 55 87 2F C1 98 87 2F C2 45 87 2F C1 51 87 2F D2 64 87 2F C1 21 87 2F C1 26 87 2F C1 28 87 2F C1 00 87 2F C1 01 87 2F C1 02 87 2F D0 08 87 2F C2 93 87 2F 91 65 17 2F 91 67 17 2F 40 42 54 2F 05 64 1C 2F 05 89 1C 2F 08 26 1C 2F D0 03 87 2F C2 36 87 2F D0 09 87 2F 91 6A 17 2F C1 27 87
10代表超長位元組
73代表資料長度, 共73個位元組
59代表發起的19服務+40的偏移量
FF代表之前故障(之前有問題, 但是現在故障已經不存在了)
2F是當前故障(現在還沒好,故障還存在)
以上FF和2F共28次出現, 代表了28個故障資訊,
比如FF C1 40 87就是一條"之前故障".
具體是什麼故障, 要看C1 40 87的文件定義了,個人認為每個廠商的定義可能不一樣.
以上只是嘴哥的淺談CAN診斷.
有需要詳細瞭解CAN診斷的朋友可以看看下面這批文章, 這偏文章寫的超級贊, 算是CAN診斷裡寫的最通俗易懂的一篇文章了.
https://wenku.baidu.com/view/f2c2cc6afd0a79563c1e72d7.html?from=search
這是網友分享的眾泰公司的診斷需求說明書.
學好了診斷, 您應該就可以進行tbox測試了, 及部分的閘道器測試, 也會模擬傳送各種訊號了. 診斷算是CAN教程裡邊最簡單的課程了, 嘴哥不騙人, 因為嘴哥已經實現了診斷的自動化測試.
而且CAN診斷是統一標準, 各個公司都用UDS統一診斷服務, 大同小異的!
祝您成功!
下節課: PCAN-USB + PCAN Exlorer的使用 及 Vehicle SPY3的使用介紹.
如果喜歡嘴哥的文章, 歡迎點選關注及分享給周圍的小夥伴們吧,
記住我們的公眾號: 嘴哥有料 , 歡迎分享!