如何看懂UDS診斷報(bào)文

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ā)送指定的請(qǐng)求數(shù)據(jù)(Request),這條數(shù)據(jù)中需要包含SID。
  • 如果是肯定的響應(yīng)(Positive Response),回復(fù)[SID+0x40],如請(qǐng)求10,響應(yīng)50;請(qǐng)求22,響應(yīng)62。
  • 如果是否定的響應(yīng)(Negative Response),回復(fù)7F+SID+NRC,回復(fù)的是一個(gè)聲明。

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

常用服務(wù)介紹

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

  • $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ī)握手)。
image.png

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

$10診斷會(huì)話

$10包含3個(gè)子功能,

  • 01 Default,
  • 02 Programming,
  • 03 Extended,

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

報(bào)文包含4種類型,即

  • SID,
  • SID+SF(Sub-function),
  • SID+DID(Data Identifier)(讀寫用),
  • SID+SF+DID。

NRC:Negative Response Code(否定響應(yīng)碼)。如果ECU拒絕了一個(gè)請(qǐng)求,它會(huì)回應(yīng)一個(gè)NRC。不同的NRC有不同的含義。

image.png

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

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

  • 請(qǐng)求(Request):

02 10 02 xx xx xx xx xx

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

  • 肯定響應(yīng):

02 50 02 xx xx xx xx xx

02同上,10+40表示對(duì)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ā)送一個(gè)3E服務(wù)的報(bào)文,保持非默認(rèn)會(huì)話狀態(tài)。80表示無需回復(fù)。

$27安全訪問

image.png

27服務(wù),加上一個(gè)子服務(wù),再加上一個(gè)鑰匙,這樣的服務(wù)請(qǐng)求可以進(jìn)行解鎖。

比如下面的例子,2n-1是某個(gè)子服務(wù),通過首輪種子的請(qǐng)求,首輪ECU會(huì)返回67+01+AA+BB+CC+DD,AA~DD就是種子了。之后第二輪,診斷端會(huì)利用種子進(jìn)行運(yùn)算(利用整車廠的算法),生成k1(不一定是1個(gè)字節(jié)),那么發(fā)送請(qǐng)求,27+02+[k1]。ECU同樣也會(huì)通過種子算出k2。當(dāng)k1和k2匹配時(shí),解鎖(Unlocked)成功。

  • 例子:

Rx: 02 27 05 00 00 00 00 00 安全訪問,05子功能
Tx: 07 67 05 08 27 11 F0 77 肯定響應(yīng),回復(fù)了對(duì)應(yīng)安全級(jí)別的種子
Rx: 06 27 06 FF FF FF FF 00 發(fā)送密鑰,4個(gè)FF。注意06是與05成對(duì)使用的。
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(請(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ù)

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

2E+DID+Data

Response(響應(yīng)):

6E+DID

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

$19 讀DTC

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

故障碼包括四個(gè)大類,分別是PCBU,P是powertrain動(dòng)力系統(tǒng),C是Chassis底盤,B是Body車身,U是network通信系統(tǒng)。一個(gè)DTC信息占用4個(gè)字節(jié)。最后一個(gè)字節(jié)是DTC的狀態(tài)。前兩個(gè)字節(jié)是我們熟知的類似P0047的故障碼。

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

$19 擁有28個(gè)子服務(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個(gè)FF代表清除所有DTC。

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

診斷報(bào)文解析

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

CAN Message =CAN ID + CAN DATA

根據(jù)上篇UDS文章的敘述,每一個(gè)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的值主要集中的前三個(gè)字節(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ù)幀相互之間所允許的最小時(shí)間間隔。

先面用連個(gè)例子進(jìn)行說明,請(qǐng)參考!

例子 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ù)的是一個(gè)聲明

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

由于這個(gè)數(shù)據(jù)發(fā)送與接收都是單幀傳輸,所以第一個(gè)數(shù)據(jù)的高四位均為0,四個(gè)數(shù)據(jù)流中的第一個(gè)字節(jié)的低四位,02,03,02,06代表的為此幀數(shù)據(jù)含有幾個(gè)字節(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個(gè)字節(jié),

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

  • 10中的1代表連續(xù)幀的首幀,==01E代表此連續(xù)幀含有30個(gè)字節(jié)==,
  • 30代表此連續(xù)幀的流控制幀,
  • 21,22,23,24代表連續(xù)幀中的第幾幀,21代表第一幀,22代表第二幀,依此類推,其中AA為填充位。

參考資料:

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容