【ISO 14229-1:2023 UDS診斷(ECU復位0x11服務)測試用例CAPL代碼全解析④】

ISO 14229-1:2023 UDS診斷【ECU復位0x11服務】_TestCase04

作者:車端域控測試工程師
更新日期:2025年02月17日
關鍵詞:UDS診斷協議、ECU復位服務、0x11服務、ISO 14229-1:2023

TC11-004測試用例

用例ID測試場景驗證要點參考條款預期結果
TC11-004無效子功能碼檢測發送0x11 0xFF(保留值)§7.1.2返回NRC=0x12(子功能不支持)
/*----------------------------------------------------------------*/
/* 測試用例ID      : TC11-004                                     */
/* 測試項名稱      : 無效子功能碼檢測                             */
/* 測試依據        : §7.1.2                                       */
/* 驗證目標        : 返回NRC=0x12(子功能不支持)                 */
/* 作者            : 車端域控測試工程師                           */
/* 創建日期        : 2025-02-17                                   */
/* 版本歷史        : V1.0 - 初始版本                              */
/*----------------------------------------------------------------*/variables 
{// 診斷協議參數 const long DiagReqID = 0x732;    // 診斷請求ID const long DiagResID = 0x733;    // 診斷響應ID const byte InvalidSubFuncReq[2] = {0x11, 0xFF};  // 無效子功能請求 const byte ExpectedNRC = 0x12;   // 預期否定響應碼 // 狀態監控 msTimer responseTimer;int serviceValidationPassed = 0;
}testcase TC11_004_InvalidSubfunctionCheck()
{TestModuleTitle("TC11-004 無效子功能碼檢測");// 階段1:發送無效子功能請求 testStep("發送0x11服務+0xFF子功能");message DiagReqID [CAN] {dlc = 2;byte(0) = InvalidSubFuncReq[0];  // 服務ID byte(1) = InvalidSubFuncReq[1];  // 子功能碼 }output(this);// 階段2:響應驗證 testWaitForTimeout(500);  // 總測試窗口500ms setTimer(responseTimer, 200);  // 設置響應超時 while(1) {if(TestWaitForMessage(DiagResID, 50)) {// 否定響應基礎驗證 if(this.byte(0) == 0x7F && this.byte(1) == InvalidSubFuncReq[0]) {// NRC專項驗證 if(this.byte(2) == ExpectedNRC) {testStepPass("收到預期NRC=0x%02X", ExpectedNRC);serviceValidationPassed = 1;break;}else {testStepFail("收到錯誤NRC=0x%02X", this.byte(2));}}// 意外肯定響應處理 else if(this.byte(0) == 0x51) {testStepFail("檢測到非法服務支持");}}// 超時處理 if(getTimer(responseTimer) >= 200) {testStepFail("響應超時未收到");break;}}// 最終判定 if(serviceValidationPassed) {testCasePass("無效子功能碼驗證成功");}
}/*--------------------------------------------------------------增強型響應跟蹤模塊 
--------------------------------------------------------------*/
on message DiagResID 
{// 實時記錄所有診斷響應 if(this.byte(0) == 0x7F) {testAddLog("收到否定響應 - SID:0x%02X NRC:0x%02X", this.byte(1), this.byte(2));}
}on timer responseTimer 
{testAddCondition("響應等待時間:%dms", getTimer(responseTimer));
}

測試架構深度解析

  1. 三階段驗證流程
否定響應
肯定響應
匹配
不匹配
異常請求觸發
響應類型判斷
NRC碼驗證
異常標記
測試通過
失敗分析
超時監控
終止流程
  1. 關鍵技術實現

  2. 精準服務識別:

    if(this.byte(0) == 0x7F && this.byte(1) == InvalidSubFuncReq[0])
    
  3. 動態超時控制:

    setTimer(responseTimer, 200);  // 200ms嚴格響應窗口 
    while(getTimer(responseTimer) < 200) { ... }
    
  4. 多重防護機制:

    // 同時檢測:
    // 1. 響應報文結構 
    // 2. 服務ID匹配 
    // 3. 特定NRC碼 
    
  5. 異常處理矩陣
    | 異常類型 | 檢測方式 | 處理措施 |
    |----------------|---------------------------|----------------------------|
    | 無效NRC碼 | 字節偏移量驗證 | 記錄具體錯誤碼 |
    | 非法服務支持 | 0x51肯定響應檢測 | 標記協議違規 |
    | 總線靜默 | 200ms超時機制 | 終止測試流程 |
    | 數據長度異常 | DLC值校驗 | 觸發格式錯誤警報 |

  6. 擴展驗證建議

  7. 參數化測試擴展:

    struct SubfunctionTestSet {byte serviceID = 0x11;byte invalidSubfunc = 0xFF;byte expectedNRC = 0x12;dword timeout = 200;
    };
    
  8. 邊界值測試擴展:

    void ExecuteBoundaryTests() {// 可測試:// 0x00 - 保留值邊界 // 0x7F - 最大標準值 // 0x80 - 擴展子功能邊界 
    }
    
  9. 服務矩陣驗證:

    void CheckServiceMatrix(byte serviceID) {// 驗證服務支持矩陣的完整性 
    }
    

工程實踐指南

  1. 環境配置要求
    | 配置項 | 規格要求 |
    |----------------|-------------------------------|
    | 測試工具 | CANoe 15.0+(帶Diagnostics) |
    | 硬件接口 | VN1630/VN8970 |
    | ECU供電 | 可編程電源(9-16V) |
    | 協議版本 | UDS 1.4.0 |

  2. 關鍵指標分析
    | 驗證維度 | 合格標準 | 測量方法 |
    |----------------|---------------------------|------------------------|
    | 響應時間 | ≤150ms | 示波器觸發測量 |
    | NRC一致性 | 100%返回0x12 | 自動化腳本驗證 |
    | 錯誤檢測率 | 非法請求拒絕率100% | 壓力測試統計 |
    | 協議合規性 | 符合ISO14229-1要求 | 協議分析儀檢測 |

  3. 執行注意事項

  • 測試前確保ECU處于默認會話模式
  • 禁用其他可能修改診斷狀態的測試用例
  • 建議在ECU冷啟動后立即執行
  • 避免與刷寫操作測試并行執行
  1. 關聯測試建議
  • 配合TC07-015(有效子功能邊界值測試)
  • 結合TC09-018(非法服務ID檢測)
  • 關聯TC12-007(診斷服務支持矩陣驗證)

調試技巧:

  1. Write Window設置過濾器:id==733h && byte(0)==7Fh
  2. 使用Graphics窗口繪制NRC分布圖
  3. 啟用Diagnostic Event Viewer跟蹤服務交互
  4. 添加Test Coverage監控點:
    testAddCoverage("SVC-0x11", "Subfunction validation");
    testAddCoverage("NRC-0x12", "Subfunction not supported");
    

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/71328.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/71328.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/71328.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

3.10 實戰Hugging Face Transformers:從文本分類到模型部署全流程

實戰Hugging Face Transformers:從文本分類到模型部署全流程 一、文本分類實戰:IMDB電影評論情感分析 1.1 數據準備與預處理 from datasets import load_dataset from transformers import AutoTokenizer # 加載IMDB數據集 dataset = load_dataset("imdb") …

【人工智能】釋放數據潛能:使用Featuretools進行自動化特征工程

《Python OpenCV從菜鳥到高手》帶你進入圖像處理與計算機視覺的大門! 解鎖Python編程的無限可能:《奇妙的Python》帶你漫游代碼世界 特征工程是機器學習流程中至關重要的一步,它直接影響模型的性能。然而,手動特征工程既耗時又需要領域專業知識。Featuretools是一個強大的…

MybaitsPlus學習筆記(二)基本CURD

目錄 一、BaseMapper 二、常用實例 1、插入 2、刪除 3、修改 4、查詢 三、IService 四、 IService中的一些方法測試 一、BaseMapper MyBatis-Plus中的基本CRUD在內置的BaseMapper中都已得到了實現&#xff0c;我們可以直接使用&#xff0c;接口如 下&#xff1a; publ…

設計模式之適配模式是什么?以及在Spring AOP中的攔截器鏈的使用源碼解析。

前言 本文涉及到適配模式的基本用法&#xff0c;以及在Spring AOP中如何使用&#xff0c;首先需要了解適配模式的工作原理&#xff0c;然后結合Spring AOP的具體實現來詳細詳細解析源碼。 首先&#xff0c;適配模式&#xff0c;也就是Adapter Pattern&#xff0c;屬于結構型設計…

【C++】36.C++IO流

文章目錄 1. C語言的輸入與輸出2. 流是什么3. CIO流3.1 C標準IO流3.2 C文件IO流 4. stringstream的簡單介紹 1. C語言的輸入與輸出 C語言中我們用到的最頻繁的輸入輸出方式就是scanf ()與printf()。 scanf(): 從標準輸入設備(鍵盤)讀取數據&#xff0c;并將值存放在變量中。pri…

JavaScript表單介紹

一、表單的基本概念 在網頁開發里&#xff0c;表單是實現用戶與網頁交互的關鍵組件&#xff0c;用于收集用戶輸入的數據&#xff0c;JavaScript 則能為表單增添強大的交互性和功能性。表單在 HTML 里通過 <form> 標簽創建&#xff0c;包含多種表單元素&#xff0c;如文本…

哈希表(C語言版)

文章目錄 哈希表原理實現(無自動擴容功能)代碼運行結果 分析應用 哈希表 如何統計一段文本中&#xff0c;小寫字母出現的次數? 顯然&#xff0c;我們可以用數組 int table[26] 來存儲每個小寫字母出現的次數&#xff0c;而且這樣處理&#xff0c;效率奇高。假如我們想知道字…

昆蟲-目標檢測數據集(包括VOC格式、YOLO格式)

昆蟲-目標檢測數據集&#xff08;包括VOC格式、YOLO格式&#xff09; 數據集&#xff1a; 鏈接: https://pan.baidu.com/s/1tYb8s-AVJgSp7SGvqdWF9A?pwdt76a 提取碼: t76a 數據集信息介紹&#xff1a; 共有 6009 張圖像和一一對應的標注文件 標注文件格式提供了兩種&#x…

C++(23):unreachable

C++23在頭文件 "><utility>定義了std::unreachable(),用于指示編譯器,該段代碼不應該被允許,因此編譯器可以對該位置進行優化,如果一旦允許了該位置的代碼,行為未定義: #include <utility> #include <iostream>using namespace std;int func(…

備戰藍橋杯 Day1 回顧語言基礎

開啟藍橋杯刷題之路 Day1 回顧語言基礎 1.配置dev 工具->編譯選項->勾選編譯時加入以下命令->設定編譯器配置(release和debug)都要-> -stdc11 ->代碼生成/優化->代碼生成/優化->語言標準(-std)->ISO C11 ->代碼警告->顯示最多警告信息(-Wall)…

python學opencv|讀取圖像(七十五)人臉識別:Fisherfaces算法和LBPH算法

【1】引言 前序學習進程中&#xff0c;已經掌握了使用Eigenfaces算法進行的人臉識別。相關文章鏈接為&#xff1a; python學opencv|讀取圖像&#xff08;七十四&#xff09;人臉識別&#xff1a;EigenFaces算法-CSDN博客 在此基礎上&#xff0c;學習剩余兩種人臉識別算法&am…

React 前端框架介紹

什么是 React&#xff1f; React 是一個由 Facebook 開發并維護的開源 JavaScript 庫&#xff0c;用于構建用戶界面。它主要用于創建交互式用戶界Face&#xff08;UI&#xff09;&#xff0c;尤其是當數據變化時需要更新部分視圖時非常有效。React 的核心思想是組件化和聲明性…

包裝類的空指針異常

問題&#xff1a; Integer是引用對象&#xff0c;當初始化不進行賦值的時候是null,是null就不可以自動拆箱 實踐&#xff1a; public class Test {public static void main(String[] args) {Integer num null;//自動拆箱int i num;} } 會包異常信息&#xff1a; Excepti…

【Elasticsearch】檢索選定字段(Retrieve selected fields)

在 Elasticsearch 中&#xff0c;檢索選定字段&#xff08;Retrieve selected fields&#xff09;是一個重要的功能&#xff0c;用于優化查詢性能和減少數據傳輸量。以下是結合所有回答的詳細總結&#xff0c;涵蓋每種字段檢索方式的原理、應用場景、性能特點以及限制。 1._so…

【MySQL】 基本查詢(下)

歡迎拜訪&#xff1a;霧里看山-CSDN博客 本篇主題&#xff1a;【MySQL】 基本查詢(下) 發布時間&#xff1a;2025.2.18 隸屬專欄&#xff1a;MySQL 目錄 Update語法案例 Delete刪除數據語法案例 截斷表語法案例 插入查詢結果語法案例 聚合函數函數介紹案例 group by子句的使用語…

docker 基礎命令使用(ubuntu)

docker 狀態查詢 docker ps docker ps -adocker --version docker info docker --help docker run --help docker ps --help ...docker 操作鏡像命令 docker imagesdocker rmi 鏡像id/鏡像名docker 操作容器命令 docker ps docker ps -adocker run 命令 # 端口映射 -p 參數…

idea 2023.3.7常用插件

idea 2023.3.7常用插件 文檔 idea 2019.3常用插件idea 2023.3.7常用插件 idea 2023.3.7常用插件 插件名稱插件版本說明1AceJump3.5.9AceJump允許您快速將插入符號導航到編輯器中可見的任何位置。只需按“ctrl&#xff1b;”&#xff0c;鍵入一個字符&#xff0c;然后在Ace …

基于Flask的廣西高校輿情分析系統的設計與實現

【Flask】基于Flask的廣西高校輿情分析系統的設計與實現&#xff08;完整系統源碼開發筆記詳細部署教程&#xff09;? 目錄 一、項目簡介二、項目界面展示三、項目視頻展示 一、項目簡介 該系統綜合運用Python、Flask框架及多種數據處理與可視化工具開發&#xff0c;結合Boot…

用什么辦法能實現ubuntu里面運行的自己開發的python程序能自動升級。

要實現Ubuntu中自己開發的Python程序自動升級&#xff0c;可以通過以下幾種方式&#xff1a; 1. 使用 Git 倉庫 定時任務 如果你的Python程序托管在Git倉庫中&#xff0c;可以通過定時拉取最新代碼來實現自動升級。 步驟&#xff1a; 確保Python程序在Git倉庫中。在Ubuntu上…

破解微服務疑難雜癥:2025年全解決方案

微服務架構已經成為現代軟件開發的主流選擇&#xff0c;其優勢在于能夠將復雜的系統拆分為獨立的服務模塊&#xff0c;方便開發和維護。然而&#xff0c;在微服務的實施過程中&#xff0c;開發者往往會面臨許多挑戰&#xff0c;如服務間通信、數據一致性、性能優化和故障處理等…