子功能參數(shù)定義
UDS協(xié)議中,有些診斷服務(wù)是帶有子功能的。子功能參數(shù)的取值范圍為0x00 - 0x7F。細(xì)心的同學(xué)應(yīng)該發(fā)現(xiàn)了,子功能參數(shù)占用了一個(gè)字節(jié),可用的數(shù)值范圍為0~0xFF。但子功能的最大取值只到0x7F,那么最高位去哪了呢。這個(gè)子功能參數(shù)的最高位就是我們今天要聊的診斷服務(wù)肯定響應(yīng)抑制位SuppressPosRspMsgIndicationBit,簡寫為SPRMIB。
如下是診斷服務(wù)子功能參數(shù)的格式定義。其中的最高位Bit7就決定了ECU是否需要給出肯定響應(yīng)。
子功能參數(shù)格式定義
肯定響應(yīng)抑制位的作用
ECU收到SPRMIB為1的服務(wù)時(shí),不需要給出肯定響應(yīng)。相反,當(dāng)ECU收到SPRMIB為0的服務(wù)時(shí),需要給出肯定響應(yīng)。
例如,ECU收到診斷儀發(fā)來的Tester Present服務(wù)為$02 3E 00時(shí),需要給出$02 7E 00的肯定響應(yīng)。同樣是Test Present服務(wù),如果ECU收到的是$02 3E 80,則無需給出肯定響應(yīng)。
例外情況
ECU在響應(yīng)某些診斷服務(wù)時(shí),由于執(zhí)行時(shí)間較長,無法立即給出肯定響應(yīng)。此時(shí)ECU會(huì)先給出NRC為0x78的否定響應(yīng)。然后等到所請(qǐng)求的服務(wù)執(zhí)行完后,給出最終的肯定響應(yīng)或否定響應(yīng)。這種情況下,即使ECU收到的診斷服務(wù)請(qǐng)求中子功能參數(shù)肯定響應(yīng)抑制位為1,最終的肯定響應(yīng)也不會(huì)被抑制。
例如在如下的診斷通信中, 即使ECU收到了子功能為0x82的診斷會(huì)話控制(DiagnosticSessionControl)服務(wù),最終仍然需要給出肯定響應(yīng)。
Tester : $02 10 82
ECU : $03 7F 10 78
ECU : $06 50 02 00 32 01 F4
我們來分析一下這個(gè)過程。首先Tester請(qǐng)求ECU進(jìn)入編程回話(Programming session),但不希望ECU給出肯定響應(yīng)。但是進(jìn)入編程回話通常需要ECU復(fù)位,重新啟動(dòng)后進(jìn)入Bootloader。這個(gè)過程所需要的時(shí)間會(huì)超過P2CAN_Server (通常為50ms)。所以ECU會(huì)先給出NRC為0x78的否定響應(yīng),用以通知Tester診斷請(qǐng)求已經(jīng)正確接收了,正在處理,稍后給出響應(yīng)。
當(dāng)ECU成功執(zhí)行了切換到Programming Session的操作后,由于之前給出了NRC為0x78的否定響應(yīng),此時(shí)必須給出肯定響應(yīng),用以通知Tester診斷請(qǐng)求已經(jīng)被成功執(zhí)行了。
-
復(fù)位器
+關(guān)注
關(guān)注
0文章
5瀏覽量
6850 -
診斷儀
+關(guān)注
關(guān)注
1文章
79瀏覽量
8969 -
ECU軟件
+關(guān)注
關(guān)注
1文章
13瀏覽量
10363
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
UDS在CAN和以太網(wǎng)上的實(shí)現(xiàn)方案

一文搞懂UDS的各種NRC

誰能幫我解答下CAN總線中的UDS診斷?
Labview 基于CAN UDS燒錄Hex文件
UDS診斷命令備忘錄
淺析伺服系統(tǒng)應(yīng)用中的慣量匹配問題
關(guān)于伺服的采樣周期、循環(huán)時(shí)間、響應(yīng)時(shí)間、響應(yīng)頻率和帶寬不看肯定后悔
OBDII與UDS的區(qū)別是什么
基于MM32F0140系列MCU實(shí)現(xiàn)UDS Bootloader的設(shè)計(jì)
UDS診斷協(xié)議在純電動(dòng)汽車電機(jī)控制器中的應(yīng)用說明
UDS常用診斷服務(wù)

UDS之19服務(wù)中04子服務(wù):讀取快照數(shù)據(jù)

UDS診斷服務(wù)響應(yīng)規(guī)則介紹

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

評(píng)論