当前位置: 首页 > article >正文

【ISO 14229-1:2023 UDS诊断(ECU复位0x11服务)测试用例CAPL代码全解析⑪】

ISO 14229-1:2023 UDS诊断【ECU复位0x11服务】_TestCase11

作者:车端域控测试工程师
更新日期:2025年02月18日
关键词:UDS诊断协议、ECU复位服务、0x11服务、ISO 14229-1:2023

TC11-011测试用例

用例ID测试场景验证要点参考条款预期结果
TC11-011复位服务参数越界检测发送0x11 0x01 0xAA(非法参数)§7.1.3返回NRC=0x31(参数越界)

以下是为TC11-011设计的增强型CAPL测试用例,包含参数边界检测与异常处理机制,包含执行流程图和工业级验证策略:

/*----------------------------------------------------------
  Title:TC11-011 复位服务参数越界验证 
  作者:车端域控测试工程师 
  日期:2025-02-18 
------------------------------------------------------------*/
 
variables {
  // 诊断通信参数 
  const long DiagReqID = 0x732;       // 诊断请求标识符 
  const long DiagResID = 0x733;       // 诊断响应标识符 
  const byte ResetSID = 0x11;         // ECU复位服务 
  const byte ResetSubFunc = 0x01;     // 硬件复位子功能 
  const byte InvalidParam = 0xAA;     // 非法参数值 
  const byte ExpectedNRC = 0x31;      // 预期否定响应码 
  
  // 测试控制参数 
  msTimer responseTimer;
  byte actualNRC = 0x00;
}
 
testcase TC11_011_ParameterBoundaryTest() 
{
  TestModuleTitle("TC11-011 复位服务参数越界验证");
  
  // ███ 阶段1:构造非法请求 ███ 
  testStep("STEP1 发送含非法参数的复位请求");
  
  message DiagReqID [CAN] {
    dlc = 3;
    byte(0) = ResetSID;          // 复位服务ID 
    byte(1) = ResetSubFunc;      // 子功能号 
    byte(2) = InvalidParam;      // 非法参数 
  }
  output(this);
  
  // ███ 阶段2:响应捕获与分析 ███ 
  testStep("STEP2 验证否定响应");
  setTimer(responseTimer, 500);  // 设置500ms响应窗口 
  
  while(getTimer(responseTimer) < 500) 
  {
    if(TestWaitForMessage(DiagResID, 100)) 
    {
      // 否定响应格式验证 
      if(this.byte(0) == 0x7F &&        // 否定响应标识 
         this.byte(1) == ResetSID &&    // 服务ID回显 
         this.byte(2) == ExpectedNRC) 
      {
        actualNRC = this.byte(2);
        testStepPass("收到预期NRC=0x%02X", ExpectedNRC);
        break;
      }
      // 异常响应处理 
      else if(this.byte(0) == 0x7F) 
      {
        actualNRC = this.byte(2);
        testStepFail("收到错误NRC=0x%02X", actualNRC);
        break;
      }
    }
  }
  
  // ███ 阶段3:综合结果判定 ███ 
  testStep("STEP3 最终结果确认");
  if(actualNRC == ExpectedNRC) {
    testCasePass("参数越界检测机制正常");
  } else if(actualNRC == 0x00) {
    testCaseFail("ECU无响应");
  } else {
    testCaseFail("NRC异常(实际:0x%02X)", actualNRC);
  }
}
 
/*----------------------------------------------------------
  总线监控扩展模块(调试辅助)
----------------------------------------------------------*/
on message DiagResID 
{
  // 实时显示诊断响应 
  if(this.byte(0) == 0x7F) {
    testAddLog("收到NRC=0x%02X @%dms", 
              this.byte(2), timeNow() - testGetStartTime());
  }
}

流程图解(执行逻辑可视化)

Tester ECU 复位请求(0x11 0x01 0xAA) 参数有效性校验 NRC=0x31 验证响应码正确性 Tester ECU

关键参数说明表

参数名称示例值工程校准要点
非法参数值0xAA需覆盖OEM定义的参数范围
响应超时窗口500ms需大于ECU最大处理时间2倍
否定响应格式7F 11 31ISO 14229标准响应结构
参数校验机制范围检查需验证ECU参数表完整性

工业级增强功能

  1. 参数遍历测试

    void ExecuteParamRangeTest() {
      // 扩展测试:
      // 1. 遍历所有非法参数值(0x00-0xFF)
      // 2. 边界值测试(0x00,0x01,0xFE,0xFF)
      // 3. 随机参数注入 
    }
    
  2. ECU状态监控

    on sysvar ECU::ParameterCheck {
      testAddLog("参数校验状态码:0x%02X", @this::ParameterCheck);
    }
    
  3. 压力测试扩展

    void ExecuteStressTest() {
      // 可扩展:
      // 1. 连续发送100次非法请求 
      // 2. 混合合法/非法请求 
      // 3. 总线负载90%场景测试 
    }
    

测试执行说明

  1. 环境配置建议

    [Diagnostic]
    P2Server_Max = 3000 
    P3Server_Timeout = 10000 
    
  2. 结果判定矩阵

    检查项通过标准验证方法
    响应格式7F 11 31三字节结构报文解析
    响应时间≤250ms时间戳比对
    ECU行为未触发任何复位操作电源监控
    日志记录记录非法参数访问事件安全日志分析

调试技巧:

  1. Write窗口添加过滤条件快速定位关键报文:
    id == 733h && (byte(0) == 7Fh || byte(0) == 51h)
    
  2. 使用Graphic窗口监控关键信号:
    sysvar::ECU::ResetAttempts 
    sysvar::Diag::InvalidParamCount 
    
  3. 添加总线触发条件捕获异常:
    on message DiagResID {
      if(this.byte(0) == 0x7F && this.byte(2) != 0x31) {
        write("发现异常NRC: 0x%02X", this.byte(2));
        break;
      }
    }
    

http://www.kler.cn/a/553220.html

相关文章:

  • TT无人机零散笔记
  • Educational Codeforces Round 174 (Rated for Div. 2)(ABCD)
  • AcWing 1264. 动态求连续区间和 ,详细讲解线段树与树状数组(Python,篇二)
  • python-leetcode 37.翻转二叉树
  • 【c语言初阶】函数的嵌套
  • 143.WEB渗透测试-信息收集-小程序、app(14)
  • 【AIGC工具箱】AIGC重塑生活神器
  • chrome V3插件开发,调用 chrome.action.setIcon,提示路径找不到
  • 51单片机-外部中断
  • 【大厂AI实践】中原银行:中原银行 AI 平台建设实践
  • 大模型WebUI:Gradio全解11——使用transformers.agents构建Gradio UI(2)
  • Java与Go相比,有什么独特的优势
  • python 变量类型注释
  • SQL 注入攻击
  • 神经网络|(十)概率论基础知识-正态分布及python仿真
  • EasyExcel 自定义头信息导出
  • Linux-GlusterFS进阶分布式卷
  • 华为最新OD机试真题-通过软盘拷贝文件-Python-OD统一考试(E卷)
  • Vision Transformer图像分类实现
  • Activity 任务栈 taskAffinity 用法