01NRC介紹
當(dāng)服務(wù)端收到診斷請求時,如果能執(zhí)行則回復(fù)肯定響應(yīng),不能執(zhí)行則回復(fù)否定響應(yīng);也有不給出響應(yīng)的情況,就是抑制正響應(yīng)(Suppress PositiveResponseMessageIndicationBit,簡寫為SPRMIB),通常來說,如果這個bit被置1,則ECU不會給出正響應(yīng)(positive response)。
常用的NRC如下:
這里要說一下NRC 0x22,有些客戶要求很細,會將溫度過高、溫度過低、電壓過高、電壓過低、發(fā)動機轉(zhuǎn)速過高等都要報對應(yīng)的NRC,不在這些情況內(nèi)的條件不滿足就回復(fù)NRC 0x22,這樣的話NRC 0x22和上面的NRC優(yōu)先級就是一致的,就看哪個先滿足就先回復(fù)哪個NRC。
也有些客戶需求把溫度過高、溫度過低、電壓過高、電壓過低、發(fā)動機轉(zhuǎn)速過高等所有的條件不滿足都歸類為NRC 0x22。
02NRC回復(fù)的優(yōu)先級
不知道你們會不會經(jīng)常把NRC回復(fù)的順序搞混,總是不知道當(dāng)有多個NRC可響應(yīng)的時候,先回復(fù)哪個NRC。下面就來分享一下我的經(jīng)驗,當(dāng)然這里的NRC優(yōu)先級是參照ISO14229的,大部分車廠是也是參考這個來的,可能有個別NRC是客戶定制,這種例外的按照客戶需求來就行了。
NRC的優(yōu)先級從高到低排列:
NRC 0x11 > 0x7F > 0x13 > 0x12 > 0x7E > 0x33 > 0x24 > 0x31 > 0x22 > 0x78
1)NRC 0x11和0x7F的區(qū)別:都是服務(wù)不支持,但0x11是整個服務(wù)不支持,而0x7F是在某個會話不支持,在其他服務(wù)下是支持的。舉個例子:28服務(wù),只支持在擴展會話下,但在默認會話下執(zhí)行0x28服務(wù),那此時回復(fù)的NRC就是0x7F。
2)NRC 0x11和0x12的區(qū)別:0x11是服務(wù)不支持,0x12是子功能不支持。這個還是比較好理解的。舉個例子:19服務(wù)有很多子功能,假設(shè)客戶不支持0A子功能,那執(zhí)行19 0A就會回復(fù)0x12;假設(shè)客戶需求不支持23服務(wù),那執(zhí)行23服務(wù)就回復(fù)0x11,而且不管你后面?zhèn)鞯淖庸δ軈?shù)對不對,長度對不對,都是回復(fù)0x11,因為0x11優(yōu)先級最高(看標(biāo)準(zhǔn)0x21總線繁忙的NRC優(yōu)先級是最高的,但沒怎么用過)。
3)NRC 0x12和0x7E的區(qū)別:0x12是整個子功能不支持,而0x7E是在當(dāng)前會話不支持。舉個例子:19服務(wù)有很多子功能,假設(shè)客戶需求不支持0A子功能,那執(zhí)行19 0A就會回復(fù)0x12;假設(shè)10 02服務(wù)只在擴展會話下支持,但在默認會話下執(zhí)行了,就會回復(fù)0x7E。
4)NRC 0x7F和0x7E的區(qū)別:0x7F是當(dāng)前會話下服務(wù)不支持,0x7E是當(dāng)前會話下子功能不支持。這兩個沒啥好說的,看具體情況,如果這兩個都支持,則回復(fù)NRC 0x7F,因為0x7F優(yōu)先級更高。
2.1 通用服務(wù)的NRC回復(fù)流程
這是ISO14229-1中的規(guī)范,這個NRC的回復(fù)優(yōu)先級適用所有沒有子功能的服務(wù)。從這個可看出回復(fù)NRC的順序為:0x11 > 0x7F > 0x33。
mandatory:強制性的,也就是說這一列的NRC必須是按這個順序來回復(fù)。
optional:可選擇的,就是不一定有,可以選擇性地由每個請求消息進行評估。例如出現(xiàn)總線繁忙時,就先回復(fù)NRC 0x21。
manufacture/supplier specific:車廠或主機廠規(guī)范,這是客戶要求的,有些客戶有特殊的需求,具體的按照客戶要求來做就行。
2.2 帶sub-function功能參數(shù)的服務(wù)
帶sub-function參數(shù)的服務(wù)回復(fù)NRC的順序,例如:$10、$11、$27、$28、$31、$85、$14、$19等
2.3 0x22服務(wù)回復(fù)NRC的順序
0x22服務(wù)回復(fù)NRC的順序如下圖:
1)如果請求的DID不是客戶支持的,要回復(fù)NRC 0x31,就不是0x12了。因為$22服務(wù)沒有子功能。
2)如果請求的DID在當(dāng)前會話不支持,也是回復(fù)NRC31,不是0x7E了。
總結(jié):22服務(wù)里面沒有NRC 0x12、0x7E,其他沒有子功能的服務(wù)也是如此
2.4 0x2E服務(wù)回復(fù)NRC的順序
0x2E服務(wù)回復(fù)NRC的順序如下圖:
基本上和0x22服務(wù)一樣,最后多一個NRC 0x72,判斷最后把數(shù)據(jù)有沒有寫到內(nèi)存中去,寫內(nèi)存失敗了就報NRC 0x72。
2.5 0x14服務(wù)回復(fù)NRC的順序
$14服務(wù)回復(fù)NRC的順序如下圖:
2.6 0x31服務(wù)回復(fù)NRC的順序
0x31服務(wù)的NRC回復(fù)順序如下圖:
03物理尋址和功能尋址回復(fù)NRC
3.1 物理尋址但帶sub-function服務(wù)
分成抑制正響應(yīng)(SPRMIB = 1),沒有抑制正響應(yīng)(SPRMIB = 0)兩種情況。
1)NRC 0x31不管SPRMIB有沒有置位,在參數(shù)不對或不支持的情況下都回復(fù)NRC 0x31;
2)在SID不支持時,SPRMIB沒有置位,則回復(fù)NRC 0x11或0x7F,看具體情況;但SPRMIB置位了,則一定回復(fù)NRC 0x11;
3)在sub-function不支持時,SPRMIB沒有置位,則回復(fù)NRC 0x12或0x7E,看具體情況;但SPRMIB置位了,則一定回復(fù)NRC 0x12。
3.2 功能尋址但帶sub-function服務(wù)
功能尋址和物理尋址又有點不一樣了。
請求的服務(wù)是功能尋址時,NRC為:服務(wù)不支持(0x11),當(dāng)前會話服務(wù)不支持(0x7F),子功能不支持(0x12),當(dāng)前會話子功能不支持(0x7E),請求超出范圍(0x31),不管SPRMIB是否置位,都不會回復(fù)NRC。但前提是沒有回復(fù)NRC 0x78的情況下。括號里面那句話很重要
也就是說,如果請求的是功能尋址,且NRC是上面5個中的任意一個,假設(shè)是NRC 0x7F,但是服務(wù)端先回復(fù)了一個NRC 0x78,那么服務(wù)端最后就必須回復(fù)NRC 0x7F了。
這里再講一個NRC 0x78的,原文如下:
當(dāng)NRC 0x78被使用了,服務(wù)端最終都要給一個響應(yīng)(正響應(yīng)或否定響應(yīng)),和SPRMIB的值是否置位無關(guān),和是否是功能尋址,且NRC為0x11,0x7F,0x12,0x7E,0x31無關(guān)。
簡單來說就是:
1)當(dāng)服務(wù)端回復(fù)了NRC 0x78,即使SPRMIB是置位的也要回復(fù)正響應(yīng);
2)當(dāng)服務(wù)端回復(fù)了NRC 0x78,即使發(fā)送的請求是功能尋址,且NRC為0x11,0x7F,0x12,0x7E,0x31,也要回復(fù)對應(yīng)的NRC
舉個例子:請求了10 02服務(wù),10 82,且服務(wù)端回復(fù)了NRC 78,那是要給正響應(yīng)的。
TX 02 10 82 00 00 00 00 00
RX 03 7F 10 78 AA AA AA AA
RX 06 50 01 00 32 01 F4 AA
3.3 物理尋址但沒有sub-function服務(wù)
不知道你們一開始看到這個表格一開始是否有個疑問,這里為啥沒有SPRMIB是否置位的區(qū)分?因為這些是適用沒有子功能的服務(wù)啊,沒有子功能哪來的SPRMIB。
物理尋址沒有子功能的服務(wù)請求,該回復(fù)正響應(yīng)的就回復(fù)正響應(yīng),回復(fù)NRC就NRC,沒有啥特殊情況。
3.4 功能尋址但沒有sub-function服務(wù)
功能尋址沒有子功能的服務(wù)請求時,服務(wù)不支持,參數(shù)不對,都不回復(fù)NRC,即無響應(yīng)。
審核編輯:湯梓紅
-
發(fā)動機
+關(guān)注
關(guān)注
33文章
2514瀏覽量
70261 -
ecu
+關(guān)注
關(guān)注
14文章
898瀏覽量
55180 -
服務(wù)端
+關(guān)注
關(guān)注
0文章
67瀏覽量
7140
原文標(biāo)題:一文搞懂UDS的各種NRC
文章出處:【微信號:談思實驗室,微信公眾號:談思實驗室】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
Labview 基于CAN UDS燒錄Hex文件
UDS診斷命令備忘錄
一文搞懂UPS主要內(nèi)容
一文搞懂開關(guān)電源波紋的產(chǎn)生
OBDII與UDS的區(qū)別是什么
一文看懂UDS協(xié)議棧中的時間參數(shù)
一文搞懂跳線架與配線架區(qū)別別再搞混了
UDS基礎(chǔ)知識介紹

一文搞懂配線架相關(guān)知識

汽車UDS協(xié)議棧與XCP協(xié)議棧

UDS之29服務(wù):認證服務(wù)

評論