正文
服務(wù)功能
功能描述
根據(jù)ISO14119-1標(biāo)準(zhǔn)中所述,診斷服務(wù)31服務(wù)主要用于實(shí)現(xiàn)針對(duì)某類測(cè)試場(chǎng)景,非正常工況下的程序活動(dòng)以及其他擦除內(nèi)存等連續(xù)性操作步驟的集合。
在某些情況下2F服務(wù)的基本功能也是能夠通過(guò)31服務(wù)來(lái)實(shí)現(xiàn),可以理解2F實(shí)現(xiàn)的功能31服務(wù)均可以實(shí)現(xiàn),不過(guò)如果能夠用2F實(shí)現(xiàn)的功能來(lái)用31服務(wù),未免有些大材小用,因此31服務(wù)則是用于更為復(fù)雜的輸入輸出控制場(chǎng)景,而2F服務(wù)則可用于較為簡(jiǎn)單常見(jiàn)的輸入輸出控制場(chǎng)景。
下列文中使用到的Client可直接理解為上位機(jī)Tester,Server可直接理解為接受Tester診斷請(qǐng)求的ECU。
應(yīng)用場(chǎng)景
一般而言,對(duì)于31診斷服務(wù),主要應(yīng)用場(chǎng)景為以下場(chǎng)合:
比如用于某sensor特定工況下的操作集合,如進(jìn)行攝像頭或者雷達(dá)內(nèi)參標(biāo)定流程;
在整車制造過(guò)程中較為常見(jiàn)的便是某Sensor的外參標(biāo)定工位,在該工位中需要用到31服務(wù)開(kāi)啟標(biāo)定例程,標(biāo)定流程結(jié)束后也能夠31服務(wù)獲取標(biāo)定例程的最終結(jié)果;
如雷達(dá)使用過(guò)程中的非正常工況下的發(fā)波波形配置調(diào)整可以通過(guò)31服務(wù)來(lái)實(shí)現(xiàn);
在進(jìn)行UDS刷寫(xiě)過(guò)程中可以通過(guò)31服務(wù)來(lái)觸發(fā)內(nèi)存的擦除操作等;
上述這些應(yīng)用場(chǎng)景較為常見(jiàn),這里就不一一列舉。
除了在哪些應(yīng)用場(chǎng)景下使用,在此還需要針對(duì)31服務(wù)提出如下幾點(diǎn)注意事項(xiàng):
31服務(wù)針對(duì)同一控制場(chǎng)景一般可分為開(kāi)始,停止,獲取結(jié)果三個(gè)過(guò)程,這三個(gè)過(guò)程并不是同時(shí)存在,是否需要同時(shí)存在完全可以客戶自定義;
31服務(wù)針對(duì)每一個(gè)控制場(chǎng)景均可以一個(gè)Routine ID來(lái)進(jìn)行唯一的區(qū)別,因此不同的控制場(chǎng)景應(yīng)采用唯一的Routine ID來(lái)進(jìn)行區(qū)別;
通過(guò)AUTOSAR工具鏈配置的31 Routine回調(diào)函數(shù)命名時(shí),函數(shù)名除了說(shuō)明其基本功能以外,也需要將對(duì)應(yīng)的Routine ID體現(xiàn)在函數(shù)名稱中,這樣便于搜索排查問(wèn)題,是一種不錯(cuò)的代碼實(shí)踐;
對(duì)于31服務(wù)涉及的回調(diào)函數(shù),一般不建議走RTE,主要是從代碼可維護(hù)角度而言,更加簡(jiǎn)潔明了,實(shí)現(xiàn)效率高,走RTE接口還需增加額外的工作量,沒(méi)有必要且容易出錯(cuò)。
31服務(wù)控制基本原理:
如下圖1所示,針對(duì)31服務(wù)的通信控制過(guò)程會(huì)經(jīng)過(guò)如下幾個(gè)AUTOSAR BSW模塊進(jìn)行處理,然后完成最終的Routine控制,具體步驟如下:
Client 發(fā)送診斷指令給到Server,Server接收到指令后通過(guò)確認(rèn)Routine Type來(lái)決定調(diào)用不同的回調(diào)函數(shù);
在每個(gè)回調(diào)函數(shù)中便可以實(shí)現(xiàn)客戶自定義的控制場(chǎng)景,具體場(chǎng)景就是要根據(jù)客戶需求來(lái)自定義來(lái)實(shí)現(xiàn)的。
圖1 31服務(wù)控制流程圖
服務(wù)請(qǐng)求
服務(wù)請(qǐng)求是Client發(fā)送給到Server的診斷服務(wù)指令。
請(qǐng)求格式
按照ISO14229-1標(biāo)準(zhǔn)所述,如下圖2所示為31服務(wù)診斷請(qǐng)求格式,即上述31服務(wù)控制原理中診斷服務(wù)請(qǐng)求格式:
圖2 31診斷服務(wù)請(qǐng)求格式
上述參數(shù)routineControlOptionRecord是可選項(xiàng),在項(xiàng)目中可自定義,如傳遞相關(guān)的一些控制參數(shù)等。除此之外,就是SID,SubFunction,routineIdentifier這三個(gè)參數(shù)則必選,下圖3中各參數(shù)解釋如下:
圖3 31診斷服務(wù)請(qǐng)求格式說(shuō)明
請(qǐng)求實(shí)例
開(kāi)啟Routine(01)
以開(kāi)啟Routine為例,假設(shè)Routine ID為0201,該Routine則用于進(jìn)行短時(shí)間的輸入輸出控制, 31服務(wù)診斷請(qǐng)求開(kāi)啟Routine實(shí)例如下圖4所示:
圖4 31服務(wù)開(kāi)啟Routine請(qǐng)求實(shí)例
停止Routine(02)
以停止Routine為例,31服務(wù)診斷停止Routine請(qǐng)求實(shí)例如下圖5所示:
圖5 31服務(wù)停止Routine請(qǐng)求實(shí)例
獲取Routine結(jié)果(03)
以獲取Routine結(jié)果為例,31服務(wù)診斷獲取Routine結(jié)果請(qǐng)求實(shí)例如下圖5所示:
圖6 31服務(wù)獲取Routine結(jié)果請(qǐng)求實(shí)例
服務(wù)響應(yīng)
服務(wù)響應(yīng)是針對(duì)Client對(duì)Server診斷請(qǐng)求的響應(yīng)。
正響應(yīng)格式
如下圖7所示,為31診斷服務(wù)的正響應(yīng)格式:
圖7 31診斷服務(wù)正響應(yīng)格式
從上圖中可以看出,31診斷服務(wù)的正響應(yīng)由以下二個(gè)部分組成:
Response ID:該參數(shù)固定為SID+0x40 = 0x71;
SubFunction:該參數(shù)為上述診斷請(qǐng)求格式中Routine Type保持一致;
routineIdentifier: 該參數(shù)與診斷服務(wù)請(qǐng)求中的routineIdentifier中保持一致;
routineInfo:一般可以理解為客戶自定義,作為可選項(xiàng);
routineStatusRecord: 同上;
正響應(yīng)實(shí)例
開(kāi)啟Routine(01)
如下圖8所示,為上述31 01 02 01請(qǐng)求示例所對(duì)應(yīng)的正響應(yīng):
圖8 31 01正響應(yīng)示例
其中,0x01就是跟診斷請(qǐng)求中31 01中的RoutineType保持一致即可,同時(shí)routineStatusRecord則是根據(jù)客戶需求進(jìn)行自定義回復(fù)。
停止Routine(02)
如下圖9所示,為上述31 02 02 01請(qǐng)求示例所對(duì)應(yīng)的正響應(yīng):
圖9 31 02正響應(yīng)示例
其中,0x02就是跟診斷請(qǐng)求中31 02中的RoutineType保持一致即可,同時(shí)routineStatusRecord則是根據(jù)客戶需求進(jìn)行自定義回復(fù)。
獲取Routine結(jié)果(03)
如下圖10所示,為上述31 03 02 01請(qǐng)求示例所對(duì)應(yīng)的正響應(yīng):
圖10 31 03正響應(yīng)示例
其中,0x03就是跟診斷請(qǐng)求中31 03中的RoutineType保持一致即可,同時(shí)routineStatusRecord則是根據(jù)客戶需求進(jìn)行自定義回復(fù)。
負(fù)響應(yīng)NRC支持
絕大多數(shù)情況下,Server針對(duì)Client的請(qǐng)求都會(huì)給到正響應(yīng),比如發(fā)生重啟前需確保整車處于安全狀態(tài),如引擎熄火,車速不能超過(guò)3km/h等,或者為了防止不按照診斷請(qǐng)求格式進(jìn)行請(qǐng)求,那么Server需要通過(guò)某種方式來(lái)告訴Client執(zhí)行不成功的原因在哪里以便于調(diào)查問(wèn)題直至得到正響應(yīng)。
因此ISO14229-1針對(duì)所有的診斷服務(wù)提供了一種統(tǒng)一的診斷負(fù)響應(yīng)的診斷格式:7F +SID + NRC。
其中NRC全稱為Negetive Responce Code,每個(gè)NRC具有唯一的含義來(lái)代表當(dāng)前診斷請(qǐng)求錯(cuò)誤的原因所在。當(dāng)然每個(gè)診斷服務(wù)支持的NRC不盡相同,具體支持的NRC需要參考ISO14229-1標(biāo)準(zhǔn)文檔,對(duì)于31服務(wù)而言支持的NRC如下圖:
圖11 31服務(wù)NRC支持
當(dāng)診斷請(qǐng)求的subfuntion不在Server支持的范圍內(nèi)時(shí),則Server會(huì)回復(fù)”7F 31 12“;
當(dāng)發(fā)送報(bào)文長(zhǎng)度或者格式不對(duì)時(shí),則Server會(huì)回復(fù)"7F 31 13";
例如當(dāng)嘗試請(qǐng)求復(fù)位時(shí)且當(dāng)前車速條件不滿足,此時(shí)Client發(fā)送診斷請(qǐng)求時(shí),Server將會(huì)回復(fù)“7F 31 22”來(lái)告訴請(qǐng)求者當(dāng)前進(jìn)入編程會(huì)話的條件不滿足,請(qǐng)?jiān)俅螜z查進(jìn)入編程會(huì)話的條件;
當(dāng)某個(gè)routine還沒(méi)有Start時(shí)便請(qǐng)求結(jié)果或者中止Routine時(shí),那么Server會(huì)回復(fù)"7F 31 24";
當(dāng)routineIdentifier或者可選的routineControlOptionRecord中均超出規(guī)定的范圍時(shí),則Server會(huì)回復(fù)“7F 31 31”;
當(dāng)該routineIdenfier設(shè)置了安全訪問(wèn)等級(jí)時(shí),如果未解鎖便執(zhí)行該31服務(wù),則Server會(huì)回復(fù)"7F 31 33";
當(dāng)31服務(wù)用于擦除NVM時(shí),在此過(guò)程中如果出現(xiàn)失敗那么Server便會(huì)回復(fù)"7F 31 72"
上述NRC也存在對(duì)應(yīng)的優(yōu)先級(jí),因此小T將對(duì)應(yīng)的31服務(wù)NRC優(yōu)先級(jí)展示如下圖12所示:
圖12 31服務(wù)NRC優(yōu)先級(jí)
審核編輯:湯梓紅
-
內(nèi)存
+關(guān)注
關(guān)注
8文章
3125瀏覽量
75293 -
AUTOSAR
+關(guān)注
關(guān)注
10文章
380瀏覽量
22700 -
ecu
+關(guān)注
關(guān)注
14文章
935瀏覽量
55841 -
上位機(jī)
+關(guān)注
關(guān)注
27文章
969瀏覽量
55813
原文標(biāo)題:UDS服務(wù)基礎(chǔ)篇之31服務(wù)
文章出處:【微信號(hào):談思實(shí)驗(yàn)室,微信公眾號(hào):談思實(shí)驗(yàn)室】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
TSMaster 的 CAN UDS 診斷操作指南(上)

TSMaster 的 CAN UDS 診斷操作指南(下)

Aurix TC364D是否可以通過(guò)某些UDS服務(wù)停用HSM?
UDS診斷命令備忘錄
OBDII與UDS的區(qū)別是什么
【野火】瑞薩RA MCU創(chuàng)意氛圍賽+ 基于CAN總線的UDS診斷升級(jí)MCU /bootloader/UDS診斷/14229/15765
UDS診斷協(xié)議在純電動(dòng)汽車電機(jī)控制器中的應(yīng)用說(shuō)明
UDS基礎(chǔ)知識(shí)介紹

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

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

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

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

面向服務(wù)的車輛診斷協(xié)議SOVD協(xié)議介紹

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

評(píng)論