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

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

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

TC11-010測試用例

用例ID測試場景驗證要點參考條款預期結果
TC11-010混合復位類型執行在擴展會話中交替請求不同復位類型§8.2.5各復位類型獨立生效無沖突

以下是為TC11-010設計的工業級CAPL測試用例,包含多復位類型狀態機驗證,包含時序控制策略和異常處理機制:

/*----------------------------------------------------------Title:TC11-010 混合復位類型沖突驗證 作者:車端域控測試工程師 日期:2025-02-18 
------------------------------------------------------------*/variables {// 通信參數 const long DiagReqID = 0x732;       // 診斷請求標識符 const long DiagResID = 0x733;       // 診斷響應標識符 const byte SessionCtrlSID = 0x10;   // 會話控制服務 const byte ResetSID = 0x11;         // ECU復位服務 // 復位類型配置(基于OEM規范)struct sResetType {byte subFunc;    // 子功能號 char* desc;      // 類型描述 dword delay;     // 預期執行時間 } resetTypes[3] = {{0x01, "硬件復位", 1200},{0x02, "鑰匙復位", 800},{0x03, "軟件復位", 500}};// 動態控制變量 msTimer sessionTimer;int currentResetIndex = 0;byte responseStatus[3];             // 0-未響應 1-成功 2-失敗 
}testcase TC11_010_MixedResetTest() 
{TestModuleTitle("TC11-010 混合復位類型沖突驗證");// ███ 階段1:進入擴展會話 ███ testStep("STEP1 進入擴展診斷會話");message DiagReqID [CAN] {dlc = 2;byte(0) = SessionCtrlSID;byte(1) = 0x03;  // 擴展會話 }output(this);if(TestWaitForMessage(DiagResID, 200) && this.byte(0) == 0x50 && this.byte(1) == 0x03) {testStepPass("成功進入擴展會話");setTimer(sessionTimer, 5000);  // 會話保活計時 } else {testStepFail("會話建立失敗");return;}// ███ 階段2:交替執行復位操作 ███ testStep("STEP2 執行混合復位序列");for(currentResetIndex=0; currentResetIndex<3; currentResetIndex++){// 發送復位請求 message DiagReqID [CAN] {dlc = 2;byte(0) = ResetSID;byte(1) = resetTypes[currentResetIndex].subFunc;}output(this);// 響應處理窗口 if(TestWaitForMessage(DiagResID, 300)) {// 肯定響應驗證 if(this.byte(0) == 0x51 && this.byte(1) == resetTypes[currentResetIndex].subFunc) {responseStatus[currentResetIndex] = 1;testAddLog("%s 執行成功", resetTypes[currentResetIndex].desc);// 等待復位完成 testWait(resetTypes[currentResetIndex].delay);// 重新激活會話 message DiagReqID [CAN] {dlc = 2;byte(0) = SessionCtrlSID;byte(1) = 0x03;}output(this);TestWaitForMessage(DiagResID, 200);}// 否定響應處理 else if(this.byte(0) == 0x7F && this.byte(1) == ResetSID) {responseStatus[currentResetIndex] = 2;testAddLog("%s 執行失敗(NRC=0x%02X)", resetTypes[currentResetIndex].desc, this.byte(2));}}else {responseStatus[currentResetIndex] = 0;  // 超時 }// 操作間隔 testWait(300);}// ███ 階段3:綜合結果驗證 ███ testStep("STEP3 驗證獨立生效性");int successCount = 0;for(int i=0; i<3; i++) {if(responseStatus[i] == 1) {testStepPass("%s 獨立生效", resetTypes[i].desc);successCount++;} else {testStepFail("%s 狀態異常(代碼:%d)", resetTypes[i].desc, responseStatus[i]);}}if(successCount == 3) {testCasePass("所有復位類型獨立生效");} else {testCaseFail("檢測到%02d/03次沖突", successCount);}
}/*----------------------------------------------------------會話狀態監控模塊(關鍵擴展)
----------------------------------------------------------*/
on timer sessionTimer 
{testAddCondition("會話保活剩余時間:%.1fs", (5000 - getTimer(sessionTimer))/1000.0);// 每4秒發送TesterPresent if(getTimer(sessionTimer) % 4000 == 0) {message DiagReqID [CAN] {byte(0) = 0x3E;  // TesterPresent byte(1) = 0x00;}output(this);}
}

流程圖解(執行邏輯可視化)

進入擴展會話
發送0x11 0x01
等待1200ms
發送0x11 0x02
等待800ms
發送0x11 0x03
等待500ms
結果驗證

關鍵參數說明表

參數名稱示例值工程校準要點
會話保活周期5000ms需小于ECU會話超時時間
復位執行延遲類型相關根據OEM標定值調整
操作間隔300ms需覆蓋總線負載高峰期
TesterPresent周期4000ms維持會話的最小間隔

響應狀態矩陣

復位類型預期結果失敗模式示例
硬件復位立即執行系統未實際斷電
鑰匙復位點火周期復位未檢測到鑰匙信號
軟件復位應用層重啟部分進程未終止

工業級增強功能

  1. 復位深度檢測

    // 通過系統變量驗證復位層級 
    on sysvar ECU::ResetLevel {testAddLog("當前復位深度:%d級", @this::ResetLevel);
    }
    
  2. 混合負載測試

    void ExecuteStressTest() {// 可擴展:// 1. 隨機順序執行復位類型 // 2. 疊加總線負載(70%-90%)// 3. 電源波動模擬 
    }
    
  3. 時序校驗邏輯

    // 驗證響應時序合規性 
    if(getTimer(responseTimer) < 200) {testAddCondition("響應時間:%dms", getTimer(responseTimer));
    }
    

測試執行說明

  1. 環境配置建議

    [Diagnostic]
    P2Server_Timeout = 3000 
    P2Client_Timeout = 5000 
    
  2. 結果判定標準

    檢查項合格標準驗證方法
    會話保持100%維持擴展會話日志分析
    復位獨立性各類型執行成功率100%狀態機驗證
    時序符合性誤差≤±15%示波器測量

專家調試技巧:

  1. Write窗口添加過濾條件:
    id==733h && (byte(0)==51h || byte(0)==7Fh)
    
  2. 使用Graphic窗口監控信號:
    sysvar::ECU::PowerStatus 
    sysvar::Diag::ActiveSession 
    
  3. 添加總線觸發條件:
    on message DiagResID {if(this.byte(0) == 0x7F) break;
    }
    

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

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

相關文章

什么是Scaling Laws(縮放定律);DeepSeek的Scaling Laws

什么是Scaling Laws(縮放定律) Scaling Laws(縮放定律)在人工智能尤其是深度學習領域具有重要意義,以下是相關介紹及示例: 定義與內涵 Scaling Laws主要描述了深度學習模型在規模(如模型參數數量、訓練數據量、計算資源等)不斷擴大時,模型性能與這些規模因素之間的…

大一計算機的自學總結:前綴樹(字典樹、Trie樹)

前言 前綴樹&#xff0c;又稱字典樹&#xff0c;Trie樹&#xff0c;是一種方便查找前綴信息的數據結構。 一、字典樹的實現 1.類描述實現 #include <bits/stdc.h> using namespace std;class TrieNode { public:int pass0;int end0;TrieNode* nexts[26]{NULL}; };Tri…

【存儲中間件API】MySQL、Redis、MongoDB、ES常見api操作及性能比較

常見中間件api操作及性能比較 ?? MySQL crud操作?? maven依賴?? 配置?? 定義實體類?? 常用api ?? Redis crud操作?? maven依賴?? 配置?? 常用api ?? MongoDB crud操作?? maven依賴?? 配置文件?? 定義實體類?? MongoDB常用api ?? ES crud操作 ??…

51單片機入門_10_數碼管動態顯示(數字的使用;簡單動態顯示;指定值的數碼管動態顯示)

接上篇的數碼管靜態顯示&#xff0c;以下是接上篇介紹到的動態顯示的原理。 動態顯示的特點是將所有位數碼管的段選線并聯在一起&#xff0c;由位選線控制是哪一位數碼管有效。選亮數碼管采用動態掃描顯示。所謂動態掃描顯示即輪流向各位數碼管送出字形碼和相應的位選&#xff…

C++入門《類和對象》之《運算符重載》詳解|成員函數重載/非成員函數重載

C 中&#xff0c;運算符重載是一種特殊的函數&#xff0c;它允許程序員為自定義的數據類型&#xff08;如類和結構體&#xff09;重新定義運算符的行為&#xff0c;使得這些運算符能夠像處理內置數據類型一樣處理自定義類型的數據。下面將從多個方面詳細講解 C 里的運算符重載。…

Salesforce 檢索Layout的設定

做了許多Object&#xff0c;卻想不起來怎么設置我的Listview的項目了。 問題&#xff1a; salesforce 最近參照したオブジェクト 表示項目を変更したいですが、「検索レイアウト」の選択メニューが該當オブジェクトのオブジェクトマネージャーから出てないです。 解決方法&am…

SECS/GEM300應用案例參考

GEM300 是一種用于半導體制造領域的通信協議標準&#xff0c;主要用于支持 300mm 晶圓制造的自動化生產。以下是 GEM300 的一些具體應用案例&#xff1a; 1. 半導體設備集成 設備制造商的應用&#xff1a;廣州金南瓜科技有限公司通過 GEM300 SDK&#xff0c;幫助國內多個半導體…

win10系統上的虛擬機安裝麒麟V10系統提示找不到操作系統

目錄預覽 一、問題描述二、原因分析三、解決方案四、參考鏈接 一、問題描述 win10系統上的虛擬機安裝麒麟V10系統提示找不到操作系統&#xff0c;報錯&#xff1a;Operating System not found 二、原因分析 國產系統&#xff0c;需要注意的點&#xff1a; 需要看你的系統類…

情書網源碼 情書大全帝國cms7.5模板

源碼介紹 帝國cms7.5仿《情書網》模板源碼&#xff0c;同步生成帶手機站帶采集。適合改改做文學類的網站。 效果預覽 源碼獲取 情書網源碼 情書大全帝國cms7.5模板

C語言題目:鏈表數據求和操作

題目描述 讀入10個復數&#xff0c;建立對應鏈表&#xff0c;然后求所有復數的和。 輸入格式 無 輸出格式 無 樣例輸入 1 2 1 3 4 5 2 3 3 1 2 1 4 2 2 2 3 3 1 1 樣例輸出 2323i 代碼功能概述 createNode 函數&#xff1a; 創建一個包含 10 個復數節點的鏈表。 每個…

STM32 ADC介紹(硬件原理篇)

目錄 背景 AD轉換器 采樣與保持 量化 編碼 AD轉換器轉換原理 DA轉換原理 AD轉換原理 1.逐次逼近型AD轉換器 2.并聯比較型AD轉換器 編碼器 同步D觸發器和邊沿D觸發器 基本RS觸發器 同步RS觸發器 同步D觸發器 邊沿型D觸發器&#xff08;維持-阻塞D觸發器&#xff…

公網遠程家里局域網電腦過程詳細記錄,包含設置路由器。

由于從校內遷居小區,校內需要遠程控制訪問小區內個人電腦,于是早些時間剛好自己是電信寬帶,可以申請公網ipv4不需要花錢,所以就打電話直接申請即可,申請成功后訪問光貓設備管理界面192.168.1.1,輸入用戶名密碼登錄超管(密碼是網上查下就有了)設置了光貓為橋接模式,然后…

流行編程語言全解析:優勢、應用與短板

Python&#xff1a; 優勢 Python 以其簡潔、易讀的語法聞名&#xff0c;新手能快速上手。豐富的庫和框架&#xff0c;能極大地提高開發效率。 適用領域 數據科學與分析&#xff1a;處理和分析大規模數據集&#xff0c;進行數據可視化。典型示例&#xff1a;Google 用 Pytho…

統信服務器操作系統V20 1070A 安裝docker新版本26.1.4

應用場景&#xff1a; 硬件/整機信息&#xff1a;x86平臺、深信服超融合平臺 OS版本信息&#xff1a;統信V20 1070a 1.獲取docker二進制包 鏈接: https://pan.baidu.com/s/1SukBlra0mQxvslTfFakzGw?pwd5s5y 提取碼: 5s5y tar xvf docker-26.1.4.tgz groupadd docker ch…

在 Vue 3 中使用 Lottie 動畫:實現一個加載動畫

在現代前端開發中&#xff0c;動畫是提升用戶體驗的重要元素之一。Lottie 是一個流行的動畫庫&#xff0c;它允許我們使用 JSON 文件來渲染高質量的動畫。本文將介紹如何在 Vue 3 項目中集成 Lottie 動畫&#xff0c;并實現一個加載動畫效果。 如果對你有幫助請幫忙點個&#x…

【Spring】Spring配置文件

目錄 ?什么是配置文件&#xff1f; 配置文件的作用 SpringBoot配置文件 配置文件格式 配置文件的優先級 properties配置文件說明 properties基本語法 讀取配置文件 properties缺點 yml配置文件說明 yml基本語法 使用yml連接數據庫 yml配置不同數據類型及null 注意…

藍橋杯篇---實時時鐘 DS1302

文章目錄 前言特點簡介1.低功耗2.時鐘/日歷功能3.32字節的額外RAM4.串行接口 DS1302 引腳說明1.VCC12.VCC23.GND4.CE5.I/O6.SCLK DS1302 寄存器1.秒寄存器2.分鐘寄存器3.小時寄存器4.日寄存器5.月寄存器6.星期寄存器7.年寄存器8.控制寄存器 DS1302 與 IAP25F2K61S2 的連接1.CE連…

Dubbo:高效的分布式服務框架

引言 在當今互聯網應用的快速發展中&#xff0c;微服務架構已經成為一種主流的設計模式&#xff0c;它將一個大型單體應用拆分成多個小型、松耦合的服務。Dubbo 作為一款由阿里巴巴開源的 RPC 服務框架&#xff0c;專門為解決分布式系統中服務通信和治理的問題而設計。本文將深…

Visual Studio Code使用ai大模型編成

1、在Visual Studio Code搜索安裝roo code 2、去https://openrouter.ai/settings/keys官網申請個免費的配置使用

【Javascript Day18】

目錄 標簽事件綁定的屬性參數 阻止默認行為 dialog的實現及組織冒泡&#xff08;捕獲&#xff09;傳遞 基于冒泡的事件委托 鍵盤事件的事件源對象信息 JS的自動觸發操作 標簽事件綁定的屬性參數 <!-- 標簽上的事件綁定&#xff0c;事件源對象通過 關鍵字event傳遞 --…