汽车诊断协议UDS概述
文章目錄
- 汽車診斷協議UDS
- $10診斷會話 Diagnostic Session Control
- $27安全訪問
- $22讀數據
- $2E寫數據
- $19讀取DTC
- $14清除DTC
汽車診斷協議UDS
汽車診斷協議UDS全稱統一的診斷服務(Unified Diagnostic Services)。
診斷協議是在汽車電子ECU環境下的一種診斷通信協議,在ISO 14229中規定。它是從ISO 14230-3(KWP2000)和ISO 15765-3協議衍生出來的。“統一”這個詞意味著它是一個“國際化的”而非“公司特定的”標準。
診斷工具與車內的所有控制單元均有連接,且這些控制單元均啟用了UDS服務。不同于僅使用OSI模型第一層、第二層的CAN協議,UDS服務使用OSI模型的第五層和第七層(會話層和應用層)。服務ID(SID)和與服務相關的參數包含在CAN數據幀的8個數據字節中,這些數據幀是從診斷工具發出的。
目前市面上的新車都具有用于車外診斷的診斷接口,這使得我們可以用電腦或診斷工具(業內稱為測試器Tester)連接到車輛的總線系統上。因此,UDS中定義的消息可以發送到支持UDS服務的控制器(業內稱ECU)。這樣我們就可以訪問各個控制單元的故障存儲器或用新的固件更新ECU的程序。除此之外,UDS還用于下線檢測時把一些信息(如VIN碼)寫入到汽車的各個零部件中。這些功能也是UDS最為核心的功能。
UDS會提供很多診斷服務,比較常用的有$10 Diagnostic Session Control(診斷會話),$14 Clear Diagnostic Information(清除診斷信息),$19 Read DTC Information,$22 Read Data By Identifier(通過ID讀數據),$27 Security Access(安全訪問),$2E Write Data By Identifier(通過ID寫數據),$3E Tester Present(待機握手)等等。
$10診斷會話 Diagnostic Session Control
$10包含3個子功能,01 Default默認會話,02 Programming編程會話,03 Extended擴展會話,ECU上電時,進入的是默認會話(Default)。
為什么設計三個會話模式呢?因為權限問題。默認會話權限最小,可操作的服務少;擴展模式通常用于解鎖高權限診斷服務,例如寫入數據/參數、讀寫診斷碼;編程模式用于解鎖bootloader相關的診斷服務,即程序燒錄。
$27安全訪問
ECU當中有很多數據是整車廠獨有的,并不希望開放給所有客戶,它需要做一個保密的設定。我們在讀取一些特殊數據的時候,要先進行一個安全解鎖。ECU上電之后是一個鎖定的狀態(Locked),我們通過$27服務,加上一個子服務,再加上一個鑰匙,這樣的服務請求可以進行解鎖。比如下面的例子,2n-1是一個子服務,這里我們先用n=1,即01子服務來舉例子。通過首輪Tester種子的請求(27+01),ECU會返回67+01+AA+BB+CC+DD,AA~DD就是種子了。之后第二輪,診斷端的Tester會利用種子進行運算(根據整車廠的算法),生成k1(不一定是1個字節),之后發送請求,子服務是2n,這里我們還是假定n=1,即02子服務。這樣Tester發出的就是27+02+[k1]。之后,ECU同樣也會根據第一輪的種子自行算出k2。當ECU檢查出k1和k2完全一致時,解鎖(Unlocked)成功。
$22讀數據
$22讀數據,Request(請求):22+DID(Data Identifier,通常是兩個字節)
Response(響應):62+DID+Data
DID有一部分已經被ISO 14229-1規定了。比如0xF186就是當前診斷會話數據標識符,0xF187就是車廠備件號數據標識符,0xF188就是車廠ECU軟件號碼數據ID,0xF189就是車廠ECU軟件版本號數據標識符。
$2E寫數據
$2E寫數據,Request(請求):2E+DID+Data
Response(響應):6E+DID
注意,比如0xF190等DID不支持直接寫入數據,需要用$10來進行會話轉換。也就是說,對于寫數據的請求,一般來說需要在一個擴展會話,和安全等級1的狀態下才能進行。
$19讀取DTC
$19擁有28個子服務(Sub-Function)。常用的子服務有:
01 (讀取符合掩碼條件的DTC數量)(必須支持),后面的參數是DTC狀態掩碼,若為01表示我想讀當前故障,若為08表示我想讀歷史故障,若為09表示當前故障和歷史故障都想讀。
在肯定回復時,組合應該是59(19+40) - 01 (子功能) - 09 (本ECU所支持的掩碼條件)-01 DTC的格式(ISO14229-1為01) - 00 01 (目前滿足條件的DTC有一個)
02(讀取符合掩碼條件的DTC列表及其狀態)(必須支持),后面的參數是DTC狀態掩碼,解讀同上。
在肯定回復是,59 - 02(子功能)- 09(本ECU所支持的掩碼條件) - XX XX XX ( DTC,車廠定義 ) - 01 (這個故障碼怎么了,01表示當前故障)
04(讀取快照信息),也叫凍結幀。
06(讀取擴展信息)。
0A(讀取ECU支持的所有DTC列表及其狀態)(必須支持)。這個就不必發DTC狀態掩碼了。所有支持的DTC列表及其狀態都會打印出來。
$14清除DTC
清除(復位)DTC格式,它可以改變DTC的狀態。DTC狀態中的八個位,除bit4和bit6外均會被清零,包含當前故障(TestFailed)和歷史故障(ConfirmedDTC)。bit4和bit6這兩個testNotCompleted開頭的會被強制置1。
————
2022/08/02
家中
總結
以上是生活随笔為你收集整理的汽车诊断协议UDS概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HDU5923-Prediction-有
- 下一篇: 一体化点焊机将要取代分体式焊钳在汽车制造