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