
?智能汽車安全新媒體?

服務描述
診斷服務31服務主要用于實現針對某類測試場景,由客戶端請求服務端開始、結束一個例程,以及獲取例程執行的狀態和結果。主要應用場景為以下場合:
車鑰匙學習,四輪胎壓學習,車窗防夾標定,存儲器擦除,數據校驗,功能控制,軟件內部測試的功能檢測等。
以下內容詳細講述了引用了例程的開始例程,停止例程,并且請求例程結果的使用方法。
開始例程:在接收到開始例程的請求后,開始執行指定的例程。
停止例程:EUC在接收到停止例程的請求后,停止指定的例程。
請求例程:一般例程,在前面的兩個指令的響應里,就會帶有例程執行的結果。
這三個例程的存在完全可以自定義,其中開始例程是必須支持的,而停止例程和請求例程結果就是看各主機廠的需求或者具體的功能需要,可有可無。例如打開背光燈,這個動作是一瞬間執行完成的,那么很明顯我們無法對其進行停止操作,因此停止例程的功能有沒有就沒有什么必要了。
請求格式

參數解釋
RequestServiceIdentifier:請求 SID:0x31,占用一個字節
RoutineControlType:包含01/02/03 三種子功能,其中01代表啟動例程,02停止例程,03代表獲取例程結果。占用一個個字節
RoutineControlOptionRecord:可選的,根據實際功能來決定,有些例程需要額外的數據,就需要通過這個參數來放入一些內容,如數據校驗需要把校驗標準發送給服務端,這樣服務端就可以根據自身計算結果和接收到的校驗數據進行校驗比對,來判斷校驗結果。
肯定響應格式

參數解釋
PositiveResponseServiceIdentifier:該參數固定為SID + 0x40 = 0x71
RoutineControlType:和請求格式格式中RoutineControlType保持一致
RoutineIdentifier:和請求格式格式中RoutineIdentifier保持一致
RoutineStatusRecord:可選的,和請求格式格式中RoutineControlOptionRecord保持一致,也可以根據客戶需求進行自定義回復
否定響應格式

負響應的診斷格式:7F +SID + NRC。
NRC全稱為Negetive Responce Code,每個NRC具有唯一的含義來代表當前診斷請求錯誤的原因所在。當然每個診斷服務支持的NRC不盡相同,具體支持的NRC需要參考ISO14229-1標準文檔,對于31服務而言支持的NRC如下圖所示:

NRC12:請求的SID不在服務支持的范圍內時,會發送該NRC
NRC13:請求報文長度不正確時,會發送該NRC
NRC22:服務端的運行條件不滿足去執行對應動作時,會發送該NRC
NRC24:請求順序做錯,會發送該NRC
NRC31:請求超出范圍時,會發送該NRC
NRC33:DID是保密的并且服務端處于未解鎖狀態,會發送該NRC
NRC72:若在寫入一個存儲單元時服務器檢測到錯誤時,會發送該NRC
應用場景與作用
a.例程控制(31)和輸入輸出(2F)的功能是不是一樣的?
輸入輸出控制的功能,都可以通過例程控制來實現,而且,例程控制服務可以實現更復雜的功能。按照標準對服務功能的定義,輸入輸出控制服務大部分都是對服務端的一些變量做臨時控制,基本上都是靜態的,也就是說不能形成有序的操作。
而例程控制前面說過,是由一段代碼來執行的,所以它是可以讓服務端的某些接口按照一定的順序執行一系列的控制,通過連貫操作,實現一些復雜場景的功能實施。該服務用于較復雜的控制,而輸出控制用于相對簡單的輸出控制。
b.診斷發送報文長度或格式不對時
發送請求?08 04 31 01 F3 01 00 00 00
否定響應?08 03?7F 31 13?AA AA AA AA
7F 31 13:7F表示否定響應,31是SID,13是NRC表示當前發送報文格式不對
7F 31 13:?7F表示否定響應
c.前置條件不滿足
發送請求?08 05 31 01 F3 01 01 00 00
否定響應?08 03?7F 31 22?AA AA AA AA
7F 31 22?7F表示否定響應,31是SID , 22是NRC表示前置條件未滿足
d.安全訪問失敗
發送請求?08 05 31 01 F3 01 01 00 00
否定響應?08 03?7F 31 33?AA AA AA AA
7F 31 33?7F表示否定響應,31是SID,33是NRC表示安全訪問失敗
e.請求順序錯誤
發送請求?08 05 31 03 F3 02 01 00 00
否定響應?08 03?7F 31 24?AA AA AA AA
7F 31 24?7F表示否定響應,?31是SID,24是NRC表示請求順序錯誤f.請求超出范圍
f.請求超出范圍
發送請求?08 04 31 01 30 30 00 00 00
否定響應?08 03?7F 31 31?AA AA AA AA
7F 31 31?7F表示否定響應,?31是SID,31是NRC表示請求超出范圍
來源:
https://mp.weixin.qq.com/s/4AodCwqYs9u0sUTPjMrjlw
-? THE END? -
?精品活動推薦?




因文章部分文字及圖片涉及到引用,如有侵權,請及時聯系17316577586,我們將刪除內容以保證您的權益。
