日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

汽车诊断协议UDS概述

發(fā)布時(shí)間:2023/12/10 编程问答 60 豆豆
生活随笔 收集整理的這篇文章主要介紹了 汽车诊断协议UDS概述 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 汽車診斷協(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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。