1. 程式人生 > >CAN診斷淺談 + 如何用CAN工具進行診斷

CAN診斷淺談 + 如何用CAN工具進行診斷

本文章轉載至微信公眾號:嘴哥有料

引言:

   從之前的課程我們瞭解到, 車上的智慧硬體裝置太多, 即ECU節點太多, 這些節點通過CAN匯流排外加汽車閘道器, 組成了整車CAN網路. 當車輛某個節點, 或者某條CAN匯流排出故障甚至網關出故障了, 會有什麼現象呢?

某ECU節點故障: 也就是你的車上的某個智慧硬體不work或者不好用, 比如空調這個裝置無法調節溫度了.

某條CAN匯流排故障:比如BCAN整條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

注: 以下都是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的使用介紹.

如果喜歡嘴哥的文章, 歡迎點選關注及分享給周圍的小夥伴們吧, 

記住我們的公眾號: 嘴哥有料 ,   歡迎分享!