UDS診斷學習筆記

汽車CAN總線有動力總成PCAN,底盤控制CCAN,整車控制BCAN,娛樂ECAN,診斷DCAN五種。

CAN診斷,即是對CAN網絡中各節點,各CAN總線,網關的故障進行檢查與修復。

統一診斷服務(UDS),即ISO-14229標準,是絕大多數汽車廠商使用的診斷服務。

10:診斷會話請求服務

    一般的診斷請求的輸入格式爲:710 02 10 01

    幀ID爲710,幀數據長度爲8,數據長度爲02,數據內容爲10 01,其中10代表診斷會話發起服務,01表示默認會話(其中10服務可以切換三種模式,01爲默認模式,02爲編程模式,03爲擴展模式)

    必須先發起診斷會話,類似於先建立握手。

 

2E:寫入配置請求服務

    對某個ECU寫入配置項數據,也就是重新標定

    常用幀格式:710 07 2E C0 01 01 03 22 FF

    數據長度07,C0 01是一個DID數據標識符,代表某ECU節點的多個參數,01 03 22 FF代表ECU裏的多個參數應該設定的值

 

11: 網關復位刷新請求服務

      一般如果用2E寫入ECU配置值值後, 必須對網關刷新復位, 不然這個值可能不會立馬生效.(其中01爲硬件復位,02爲KeyOfOn復位,03爲軟件復位)

      常用如: 710 02 11 01 (代表向所有的ECU發起硬復位請求)

 

27: 安全訪問認證請求服務

      一般如果需要涉及2E寫入ECU配置項等服務時, 必須通過網關的安全認證, 不然無權限修改, 你可以理解成, 沒成功申請到27安全訪問的話, 你的CAN網絡權限是隻讀的, 不可寫.

        常用如:710 02 27 03 (代表向網關發起安全認證的請求)

這個服務就是用來權限管理的,他的權限進入方式是:

    診斷儀                        電機控制器ECU 

1.     請求種子       -->           計算種子

2.     接收種子     <--             答覆種子

3.     發送密鑰       -->           計算密鑰 對比密鑰

4.     獲取權限      <--             返回權限切換狀態    

比如你要向ECU寫入數據,一般人當然不能隨便寫,只有專門懂的人才能寫入,因此需要權限來保證。
 

 

22: 讀取配置請求服務

        簡單點說: 讀取某個ECU配置項信息

        常用如:710 03 22 C0 01 (代表讀取C0 01 這個數據標識符裏的多項參數值)

 

19: 讀取故障碼請求服務

       讀取正常CAN網絡的故障信息, 一般有ECU節點丟失(比如ECU節點鬆動脫落或者燒壞了等), 電壓過高過低, CAN總線異常(即Bus Off)等...這些故障會記錄在一串超長故障碼(DTC)列表裏.

        常用如:710 03 19 02 0C (代表讀取整個CAN網絡的當前已生效的故障碼)

       01子服務:通過狀態掩碼的形式去,查找該狀態掩碼匹配的故障個數,其實意思就是查找故障個數。這裏稍微解釋一下狀態掩碼,在UDS規定裏面,每個故障都對應8個狀態,每個狀態對應一個bit,比如狀態0對應bit0,表示當前發生的故障,狀態3對應bit3,表示已經確認的故障等等,那麼狀態掩碼的意思就是用一個8bit的數去按位與,如果與的結果非0表示匹配到了,然後故障數就++。

        02子服務:通過狀態掩碼的形式去,查找匹配的故障,以及故障的狀態。

        04子服務:請求指定故障碼(DTC)的快照信息,意思就是說爲了找到故障的原因,查找故障發生時刻的一些數據,來分析故障原因。

        06子服務:請求指定故障碼(DTC)的擴展信息,就是想了解一些該故障的一些其他信息,比如發生的次數、自恢復的次數等,具體數據可自定義。

        0A子服務:通過該服務可獲取所有支持的故障碼和故障狀態信息,注意是所有的故障及故障碼。
 

 

14: 清除故障碼請求服務

       清除所有ECU的診斷故障碼, 包括故障碼相關的快照等,

       如果CAN網絡有故障, 其會源源不斷的反饋以上故障, 

       即使清除後也會立馬再發出. 

       常用如:710 04 14 FF FF FF (代表清除所有ECU上的診斷故障碼(包括故障碼相關的快照等.))

 

23/3D:

23是通過地址讀數據

3D是通過地址寫入數據,一般用的較少。

 

28服務:

通信控制,包括對發送和接收消息的開關控制。

31服務:

例程控制,比如一些複雜的操作需要用他來實現,目前比較通用的包括燒錄時的數據完整性檢查、擦除內存等等。

2F服務:

IO控制,主要用於對一些輸入輸出口的調試控制,目前這一塊接觸較少,比如一些傳感器的開關控制。

34/35/36/37服務:

和數據傳輸有關的服務,包括請求傳輸、請求下載、數據傳輸、數據上傳、退出傳輸等,這些服務和BootLoader相關。

85服務:

用於控制故障的更新,包括開啓和關閉故障更新,比如關閉之後不允許故障、故障狀態、故障記錄等信息的更新。開啓則反之。

 

診斷迴應

肯定迴應:718 06 50 01 00 32 01 F4 00

在ISO-14229中規定,ECU的診斷響應ID=ECU診斷請求ID+0x008;響應服務的ID=請求服務的ID+0x40

 

否定服務:718 03 7F 10 22 00 00 00 00

其中7F爲否定碼  22表示爲否定原因條件不符合

其他原因:11服務不支持,12子功能不支持,13報文長度錯誤,31請求超出範圍

 

例子:

診斷讀取故障碼:

7E1 03 19 02 FF 00 00 00 00

迴應:

7E9 07 59 02 FF C1 21 20 DB

 

讀取故障碼19服務有01,02,04,06,0A等子服務,在01子服務中,第四個數據字節代表需要讀取哪種狀態的DTC,其中FF表示讀取所有Bit置1位的DTC

響應服務59中,C1 21 20爲DTC的內容,分爲高位字節C1,中位字節21,低位字節20,DB表示這個DTC的狀態。

在高位字節的8Bit中,又分爲三個編碼集合,first編碼集合:Bit7-Bit6;second:Bit5-Bit4;third:Bit3-Bit0

first編碼集合有00動力系統P,01底盤系統C,10車身系統B,11網絡系統U

 

分析DTC信息C1 21 20 DB:

分解爲二進制:1100 0001    0010 0001    0010 0000    1101 1011

可知是網絡出了問題,即通信故障,與ABS通信丟失。

DB表示的DTC狀態可根據狀態位描述得到:DTC出現錯誤,且在當前駕駛循環下被確認

 

Bit 0            Test Failed                                                        DTC最近的一次診斷結果爲失敗

Bit 1            Test Failed This Operation Cycle                       在當前駕駛循環中處於故障狀態

Bit 2            pending DTC                                                 在當前或者前一個駕駛循環DTC處於故障狀態

Bit 3            Confirmed DTC                                                  DTC已經被確認

Bit 4            Test Not Completed Since Last Clear                自上一次清除故障碼後測試沒有完成

Bit 5            Test Failed Since Last Clear                              自上一次清除故障碼後測試結果爲失敗

Bit 6            Test Not Completed This Operation Cycle        在當前駕駛循環中測試沒有完成

Bit 7            Warning Indicator requested                             與DTC相關的報警指示請求

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