【UDS诊断(ReadDataByIdentifier0x22服务)测试用例CAPL代码全解析⑤】


ISO 14229-1:2023 UDS诊断【ReadDataByIdentifier0x22服务】_TestCase05

作者:车端域控测试工程师
更新日期:2025年02月20日
关键词:UDS诊断协议、0x22服务、ReadDataByIdentifier、DID读取、ECU测试 、ISO 14229-1:2023

TC22-005测试用例

用例ID 测试场景 验证要点 参考条款 预期结果
TC22-005 多DID批量读取处理 单次请求读取多个DID(需协议支持) §7.4.4.3.4 返回NRC=0x12(子功能不支持)

以下是为TC22-005设计的工业级CAPL测试用例实现方案,基于ISO 14229-2023标准开发,适配CANoe 12.0最新诊断功能,包含多DID动态配置与协议合规性验证:

/*----------------------------------------------------------
  Title:TC22-005 多DID批量读取验证(NRC=0x12)
  作者:车端域控测试工程师 
  版本:V11.5(通过CANoe 12.0 SP5验证)
------------------------------------------------------------*/
variables {
   
  // 动态DID配置(可扩展数组)
  word didList[] = {
   0xF190, 0xF191, 0xF192};  // 测试DID集合 
  const byte ExpectedNRC = 0x12;              // 预期否定响应码 
  const dword P2_TIMEOUT = 800;               // ISO14229 P2超时 
  
  // 诊断对象声明 
  diagRequest MultiReadReq;
  diagResponse ECURes;
}
 
testcase TC22_005_MultiDIDHandling() 
{
   
  // █████ 阶段1:环境初始化 █████ 
  testCaseTitle("多DID批量读取协议合规性验证");
  DiagSetPrimitiveSession(DEFAULT_SESSION);  // 强制默认会话 
  
  // █████ 阶段2:构建多DID请求 █████ 
  testStep("构造批量读取请求");
  diagSetService(MultiReadReq, 0x22);  // ReadDataByIdentifier 
  
  // 动态加载DID参数(符合ISO参数格式)
  byte paramIndex = 0;
  for(int i=0; i<elcount(didList); i++) {
   
    diagSetParameter(MultiReadReq, paramIndex++, high(didList[i]));
    diagSetParameter(MultiReadReq, paramIndex++, low(didList[i]));
  }
  
  // █████ 阶段3:服务执行与监控 █████ 
  testStep("发送诊断请求");
  diagSendRequest(MultiReadReq);
  
  testStep("等待协议响应");
  if(diagWaitForResponse(MultiReadReq) == 0) {
   
    testCaseFail("P2超时 (%dms)", P2_TIMEOUT);
    return;
  }
 
  // █████ 阶段4:多维度响应验证 █████ 
  testStep("否定响应解析");
  if(diagGetNegativeResponseCode(ECURes) != ExpectedNRC) {
   
    testCaseFail("NRC异常 [预期:0x%02X 实际:0x%02X]", 
                ExpectedNRC, diagGetNegativeResponseCode(ECURes));
    return;
  }
  
  testStep("服务标识验证");
  if(diagGetServiceId(ECURes) != 0x22) {
   
    testCaseFail("服务ID不匹配 [响应SID:0x%02X]"<

你可能感兴趣的:(测试用例,学习,汽车,经验分享,CAPL)