如何看懂UDS診斷報文

UDS介紹

UDS(Unified Diagnostic Services贤徒,統(tǒng)一的診斷服務(wù))診斷協(xié)議是ISO 15765 和ISO 14229 定義的一種汽車通用診斷協(xié)議坪仇,位于OSI模型中的應(yīng)用層褐隆,它可在不同的汽車總線(例如CAN, LIN, Flexray, Ethernet 和 K-line)上實(shí)現(xiàn)才写。UDS協(xié)議的應(yīng)用層定義是ISO 14229-1回挽,目前大部分汽車廠商均采用UDS on CAN的診斷協(xié)議趾疚。

UDS本質(zhì)上是一系列的服務(wù)缨历,共包含6大類26種。每種服務(wù)都有自己獨(dú)立的ID糙麦,即SID辛孵。

  • SID:Service Identifier,診斷服務(wù)ID赡磅。UDS本質(zhì)上是一種定向的通信觉吭,是一種交互協(xié)議(Request/Response),即診斷方給ECU發(fā)送指定的請求數(shù)據(jù)(Request)仆邓,這條數(shù)據(jù)中需要包含SID鲜滩。
  • 如果是肯定的響應(yīng)(Positive Response),回復(fù)[SID+0x40]节值,如請求10徙硅,響應(yīng)50;請求22搞疗,響應(yīng)62嗓蘑。
  • 如果是否定的響應(yīng)(Negative Response)须肆,回復(fù)7F+SID+NRC,回復(fù)的是一個聲明桩皿。

肯定響應(yīng)和否定響應(yīng)的形式一定要熟記豌汇。

常用服務(wù)介紹

UDS的26種服務(wù)中,有7種很重要泄隔。它們分別是:

  • $10 Diagnostic Session Control(診斷會話)拒贱,
  • $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ī)握手)斜做。
image.png

下面對這7個服務(wù)進(jìn)行解讀。

$10診斷會話

$10包含3個子功能湾揽,

  • 01 Default瓤逼,
  • 02 Programming,
  • 03 Extended库物,

ECU上電時霸旗,進(jìn)入的是默認(rèn)會話(Default)。如果您進(jìn)入了一個非默認(rèn)會話的狀態(tài)艳狐,一個定時器會運(yùn)轉(zhuǎn),如果一段時間內(nèi)沒有請求皿桑,那么到時間后毫目,診斷退回到默認(rèn)會話01。當(dāng)然诲侮,我們有一個$3E的服務(wù)镀虐,可以使診斷保持在非默認(rèn)的狀態(tài)。

報文包含4種類型沟绪,即

  • SID刮便,
  • SID+SF(Sub-function),
  • SID+DID(Data Identifier)(讀寫用)绽慈,
  • SID+SF+DID恨旱。

NRC:Negative Response Code(否定響應(yīng)碼)。如果ECU拒絕了一個請求坝疼,它會回應(yīng)一個NRC搜贤。不同的NRC有不同的含義。

image.png

例子:以CAN總線網(wǎng)絡(luò)舉例钝凶。

八個數(shù)據(jù)字節(jié)仪芒,第一字節(jié)被網(wǎng)絡(luò)層占用

  • 請求(Request):

02 10 02 xx xx xx xx xx

02中的0代表網(wǎng)絡(luò)層單幀SF,2代表 數(shù)據(jù)域有2個字節(jié)掂名;10是SID据沈,02是子功能

  • 肯定響應(yīng):

02 50 02 xx xx xx xx xx

02同上饺蔑,10+40表示對SID的肯定回復(fù)锌介,02是子功能。

  • 否定響應(yīng):

03 7F 10 22 xx xx xx xx膀钠;

03同上掏湾,7F表示否定響應(yīng),10是SID肿嘲,22是NRC融击。

$3E待機(jī)握手

$3E服務(wù)用于向服務(wù)器指示診斷儀仍然連接在網(wǎng)絡(luò)上,之前已經(jīng)激活的診斷服務(wù)功能可以仍然保持激活狀態(tài)雳窟。

例子:

02 3E 80 00 00 00 00 00尊浪,發(fā)送一個3E服務(wù)的報文,保持非默認(rèn)會話狀態(tài)封救。80表示無需回復(fù)拇涤。

$27安全訪問

image.png

27服務(wù),加上一個子服務(wù)誉结,再加上一個鑰匙鹅士,這樣的服務(wù)請求可以進(jìn)行解鎖。

比如下面的例子惩坑,2n-1是某個子服務(wù)掉盅,通過首輪種子的請求,首輪ECU會返回67+01+AA+BB+CC+DD以舒,AA~DD就是種子了趾痘。之后第二輪,診斷端會利用種子進(jìn)行運(yùn)算(利用整車廠的算法)蔓钟,生成k1(不一定是1個字節(jié))永票,那么發(fā)送請求,27+02+[k1]滥沫。ECU同樣也會通過種子算出k2侣集。當(dāng)k1和k2匹配時,解鎖(Unlocked)成功兰绣。

  • 例子:

Rx: 02 27 05 00 00 00 00 00 安全訪問肚吏,05子功能
Tx: 07 67 05 08 27 11 F0 77 肯定響應(yīng),回復(fù)了對應(yīng)安全級別的種子
Rx: 06 27 06 FF FF FF FF 00 發(fā)送密鑰狭魂,4個FF罚攀。注意06是與05成對使用的党觅。
Tx: 03 7F 27 78 00 00 00 00 否定響應(yīng),7F+27+NRC
Tx: 02 67 06 00 00 00 00 00 肯定響應(yīng)斋泄,通過安全校驗(yàn)

$22讀數(shù)據(jù)

$22讀數(shù)據(jù)杯瞻,
Request(請求):

22+DID(Data Identifier,通常是兩個字節(jié))

Response(響應(yīng)):

62+DID+Data

DID有一部分已經(jīng)被ISO 14229-1規(guī)定了炫掐。比如0xF186就是當(dāng)前診斷會話數(shù)據(jù)標(biāo)識符魁莉,0xF187就是車廠備件號數(shù)據(jù)標(biāo)識符,0xF188就是車廠ECU軟件號碼數(shù)據(jù)ID募胃,0xF189就是車廠ECU軟件版本號數(shù)據(jù)標(biāo)識符旗唁。

$2E寫數(shù)據(jù)

$22寫數(shù)據(jù),
Request(請求):

2E+DID+Data

Response(響應(yīng)):

6E+DID

注意痹束,比如0xF186這個DID不支持直接寫入數(shù)據(jù)检疫,需要用$10來進(jìn)行會話轉(zhuǎn)換。也就是說祷嘶,對于寫數(shù)據(jù)的請求屎媳,一般來說需要在一個非默認(rèn)會話,或解鎖的狀態(tài)下才能進(jìn)行论巍。

$19 讀DTC

DTC(diagnostic trouble code):如果系統(tǒng)檢測到了一個錯誤烛谊,它將其存儲為DTC。DTC可表現(xiàn)為:一個顯而易見的故障:通訊信號的丟失(不會使故障燈亮起)嘉汰;排放相關(guān)的故障丹禀;安全相關(guān)的錯誤等。DTC可以揭示錯誤的位置和錯誤類型鞋怀。通常DTC占用3個字節(jié)双泪,OBD II占用兩個字節(jié)。

故障碼包括四個大類接箫,分別是PCBU攒读,P是powertrain動力系統(tǒng)朵诫,C是Chassis底盤辛友,B是Body車身,U是network通信系統(tǒng)剪返。一個DTC信息占用4個字節(jié)废累。最后一個字節(jié)是DTC的狀態(tài)。前兩個字節(jié)是我們熟知的類似P0047的故障碼脱盲。

DTCHighByte DTCMiddleByte DTCLowByte DTCStatus
Byte 1 Byte 2 Byte 3 Byte 4

$19 擁有28個子服務(wù)(Sub-Function)邑滨。常用的子服務(wù)有02(通過DTC狀態(tài)掩碼讀取DTC),04(讀取快照信息)钱反,06(讀取擴(kuò)展信息)掖看,0A(讀ECU支持的所有DTC數(shù)據(jù))匣距。

$14清除DTC

清除(復(fù)位)DTC格式,它可以改變DTC的狀態(tài)哎壳。3個FF代表清除所有DTC毅待。

Request:14+FF+FF+FF;
Response:54 归榕。

診斷報文解析

UDS 的診斷數(shù)據(jù)的發(fā)送與接收都是基于CAN尸红,所以每個數(shù)據(jù)流都包含基本的CAN Message 的架構(gòu)

CAN Message =CAN ID + CAN DATA

根據(jù)上篇UDS文章的敘述,每一個PDU 包含控制信息PCI,數(shù)據(jù)信息Data.

image.png

網(wǎng)絡(luò)層 PDU(協(xié)議數(shù)據(jù)單元)PCI(協(xié)議控制信息)格式:具體如下圖所示:

幀類型 bit7-4 bit3-0 Byte 2 Byte 3
單幀 PCItype=0 SF_DL N/A N/A
首幀 PCItype=1 FF_DL FF_DL N/A
連續(xù)幀 PCItype=2 SN N/A N/A
流控幀 PCItype=3 FS BS ST_min
image.png

綜上所述刹泄,N_PDU =N_PCI+N_DATA, N_PCI的值主要集中的前三個字節(jié)外里,N_DATA值主要集中在后面7位字節(jié)。其中特石,

  • SF_DL 代表單幀中數(shù)據(jù)字節(jié)數(shù)(取值0-7)盅蝗,
  • FF_DL代表 連續(xù)幀中的數(shù)據(jù)字節(jié)數(shù)(12bit可表四8~4095),
  • SN代表此幀為連續(xù)幀中的第幾幀县匠,(0风科、1、2...E乞旦、F贼穆、0、1...)
  • FS流控制幀兰粉,有三種狀態(tài):繼續(xù)發(fā)送0故痊、保持等待1、數(shù)據(jù)溢出2
  • BS規(guī)定發(fā)送端允許持續(xù)傳輸連續(xù)幀數(shù)目的最大值(0~255)玖姑,
  • STmin限定連續(xù)幀相互之間所允許的最小時間間隔愕秫。

先面用連個例子進(jìn)行說明,請參考焰络!

例子 1--- 單幀的數(shù)據(jù)傳輸與接收

[圖片上傳失敗...(image-b66bab-1538824826939)]

數(shù)據(jù)發(fā)送: 02 27 09
數(shù)據(jù)反饋: 03 7F 27 7E ---==否定的響應(yīng)==(Negative Response)戴甩,回復(fù)==7F+SID+NRC==,回復(fù)的是一個聲明

數(shù)據(jù)發(fā)送: 02 10 40
數(shù)據(jù)反饋: 06 50 40 00 32 01 F4 ---==肯定的響應(yīng)==(Positive Response)闪彼,回復(fù)[==SID+0x40==]甜孤,就是請求10,響應(yīng)40畏腕;回復(fù)的是一組數(shù)據(jù)

由于這個數(shù)據(jù)發(fā)送與接收都是單幀傳輸缴川,所以第一個數(shù)據(jù)的高四位均為0,四個數(shù)據(jù)流中的第一個字節(jié)的低四位描馅,02把夸,03,02铭污,06代表的為此幀數(shù)據(jù)含有幾個字節(jié)恋日,多余的數(shù)據(jù)位都用 00或者AA行填充膀篮。

例子2 --- 多幀的數(shù)據(jù)接收與傳輸

[圖片上傳失敗...(image-b5e84b-1538824826939)]

數(shù)據(jù)發(fā)送:

  • 06 19 04 00 01 00 00 00

數(shù)據(jù)反饋:

  • 10 1E 59 04 00 01 00 27
  • 30 00 00 00 00 00 00 00
  • 21 00 0B FF FF FF FF FF
  • 22 FF FF FF FF FF FF FF
  • 23 FF FF FF FF FF FF FF
  • 24 FF FF FF AA AA AA AA

數(shù)據(jù)發(fā)送為單幀,所以06代表發(fā)送的數(shù)據(jù)中含有6個字節(jié)岂膳,

回復(fù)為Positive Response各拷,為連續(xù)幀。

  • 10中的1代表連續(xù)幀的首幀闷营,==01E代表此連續(xù)幀含有30個字節(jié)==烤黍,
  • 30代表此連續(xù)幀的流控制幀,
  • 21傻盟,22速蕊,23,24代表連續(xù)幀中的第幾幀娘赴,21代表第一幀规哲,22代表第二幀,依此類推诽表,其中AA為填充位唉锌。

參考資料:

作者:智車科技
鏈接:http://www.reibang.com/p/b5805e734ed6
來源:簡書
簡書著作權(quán)歸作者所有,任何形式的轉(zhuǎn)載都請聯(lián)系作者獲得授權(quán)并注明出處竿奏。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末袄简,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子泛啸,更是在濱河造成了極大的恐慌绿语,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件候址,死亡現(xiàn)場離奇詭異吕粹,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)岗仑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進(jìn)店門匹耕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人荠雕,你說我怎么就攤上這事稳其。” “怎么了舞虱?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵欢际,是天一觀的道長母市。 經(jīng)常有香客問我矾兜,道長,這世上最難降的妖魔是什么患久? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任椅寺,我火速辦了婚禮浑槽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘返帕。我一直安慰自己桐玻,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布荆萤。 她就那樣靜靜地躺著镊靴,像睡著了一般。 火紅的嫁衣襯著肌膚如雪链韭。 梳的紋絲不亂的頭發(fā)上偏竟,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天,我揣著相機(jī)與錄音敞峭,去河邊找鬼踊谋。 笑死,一個胖子當(dāng)著我的面吹牛旋讹,可吹牛的內(nèi)容都是我干的殖蚕。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼沉迹,長吁一口氣:“原來是場噩夢啊……” “哼睦疫!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起鞭呕,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤笼痛,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后琅拌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體缨伊,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年进宝,在試婚紗的時候發(fā)現(xiàn)自己被綠了刻坊。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡党晋,死狀恐怖谭胚,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情未玻,我是刑警寧澤灾而,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站扳剿,受9級特大地震影響旁趟,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜庇绽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧潘酗,春花似錦修壕、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至夏跷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間明未,已是汗流浹背拓春。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留亚隅,地道東北人硼莽。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像煮纵,于是被迫代替她去往敵國和親懂鸵。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容