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

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

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

UDS診斷服務響應規(guī)則介紹

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

盟通方案|如何集成UDS協(xié)議

評論