子功能參數定義
UDS協議中,有些診斷服務是帶有子功能的。子功能參數的取值范圍為0x00 - 0x7F。細心的同學應該發現了,子功能參數占用了一個字節,可用的數值范圍為0~0xFF。但子功能的最大取值只到0x7F,那么最高位去哪了呢。這個子功能參數的最高位就是我們今天要聊的診斷服務肯定響應抑制位SuppressPosRspMsgIndicationBit,簡寫為SPRMIB。
如下是診斷服務子功能參數的格式定義。其中的最高位Bit7就決定了ECU是否需要給出肯定響應。
子功能參數格式定義
肯定響應抑制位的作用
ECU收到SPRMIB為1的服務時,不需要給出肯定響應。相反,當ECU收到SPRMIB為0的服務時,需要給出肯定響應。
例如,ECU收到診斷儀發來的Tester Present服務為$02 3E 00時,需要給出$02 7E 00的肯定響應。同樣是Test Present服務,如果ECU收到的是$02 3E 80,則無需給出肯定響應。
例外情況
ECU在響應某些診斷服務時,由于執行時間較長,無法立即給出肯定響應。此時ECU會先給出NRC為0x78的否定響應。然后等到所請求的服務執行完后,給出最終的肯定響應或否定響應。這種情況下,即使ECU收到的診斷服務請求中子功能參數肯定響應抑制位為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診斷請求已經正確接收了,正在處理,稍后給出響應。
當ECU成功執行了切換到Programming Session的操作后,由于之前給出了NRC為0x78的否定響應,此時必須給出肯定響應,用以通知Tester診斷請求已經被成功執行了。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
相關推薦
JTAG是針對MCU或者SOC這種芯片的調試接口協議,而UDS更像是針對整個ECU的調試接口。UDS簡單來說是一種Client/Server的通信服務,即Tester(診斷儀)向ECU發送診斷服務請求(Request),ECU則向Tester發送對應服務請求的
發表于 11-28 09:56
?6405次閱讀
當服務端收到診斷請求時,如果能執行則回復肯定響應,不能執行則回復否定響應;也有不給出響應的情況,就是抑制正
發表于 01-20 10:01
?2.6w次閱讀
誰能幫我解答下CAN中的UDS診斷?需要聯系請私信我。遇到好多難題。有點懵。想請高手幫我解答下.主要是沒有程序。而且還不知道報文里面的數據代表什么?
發表于 10-21 23:14
本帖最后由 xu391600076 于 2021-8-11 13:18 編輯
1. Hex文件讀取解析并計算CRC-32校驗碼2. UDS服務通訊3. UDS刷寫邏輯過程復制下面這段話,打開閑
發表于 08-11 11:41
UDS實踐性強,邏輯復雜,很多服務非要體驗過一次才能理解,導致包括我在內的初學者感覺晦澀難懂,不明覺厲,因此將自己的理解寫下來、整理下來,與君共勉。零、UDS診斷命令備忘錄一、簡介UDS
發表于 08-26 16:09
剛性、慣量、響應時間及伺服增益調整之間的關系 淺析伺服系統應用中的慣量匹配問題-慣量匹配
發表于 09-07 07:01
關于伺服的采樣周期、循環時間、響應時間、響應頻率和帶寬不看肯定后悔
發表于 10-09 07:48
PrimaryECU在已經開發完UDS診斷的基礎上增加OBD II診斷一、OBD II與UDS的區別?這里主要介紹在診斷開發上面OBD II與UDS的區別,此外為了方便描述,下文中用OBD指代OBD II協議。1.Operati
發表于 02-23 06:55
測試等功能,在 ISO 14229 中規定了其實現標準。 在本實例中,UDS 通信是在客戶端-服務端關系中執行的。客戶端是上位機下載軟件運行于 PC 機,服務端是 MM32F0140
發表于 09-15 16:35
針對UDS診斷協議在電動汽車電機控制器中的應用問題,利用UDS診斷協議中各項服務的功能,同時根據電機控制器的功能需求,實現UDS診斷協議
發表于 04-02 17:16
?8次下載
14229協議,在ISO 14229協議中定義了UDS服務用法、服務格式等信息。UDS診斷最主要目的是為了能夠快速準確判斷車輛或者某個控制器的故障以及故障原因,從而為維修提供可靠的依據。 診斷服務概覽
發表于 06-12 10:36
?1.3w次閱讀
作者|小懶小編|吃不飽在車載診斷中常用的診斷協議有ISO14229等,在協議中主要定義了診斷請求、診斷響應的報文格式及ECU該如何處理診斷請求的應用。其中ISO14229系列標準協議定義了用于行業
發表于 04-23 09:32
?2610次閱讀
15031,ISO 15765,還有我們熟悉的ISO 14229就是UDS協議,在協議里面定義了診斷的請求,診斷響應的報文格式,以及ECU怎樣處理診斷請求報文,以及診斷服務的應用。
發表于 08-15 17:00
?4115次閱讀
在車輛中進行故障診斷、參數配置和編程等操作。 UDS協議棧通常包含以下功能軟件: 通信層:負責處理UDS協議的通信,包括CAN總線通信、LIN總線通信等。 診斷服務:實現了UDS協議定義的各種診斷服務,如讀取故障碼、清除故障碼、
發表于 10-27 16:35
?4402次閱讀
汽車工業的很多領域都有嚴格的國際標準,其中針對車載診斷的ISO14229規定了車載診斷服務的通用需求(UDS),UDS主要應用于OSI模型的應用層,UDS協議根據功能的不同定義了26種診斷服務
發表于 11-30 08:24
?2276次閱讀
評論