【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.rhkb.cn/news/21096.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于springboot 的旧物置换网站

研究背景 近年来&#xff0c;随着网络技术的不断发展&#xff0c;越来越多人喜欢在网络上查找信息&#xff0c;将自己喜欢的信息收藏&#xff0c;方便自己进行查看。旧物置换网站对用户、卖家和管理员都有很大帮助&#xff0c;旧物置换网站通过和数据库管理系软件协作来实现用…

机器学习实战(1): 入门——什么是机器学习

机器学习入门——什么是机器学习&#xff1f; 欢迎来到“机器学习实战”系列的第一篇博文&#xff01;在这一集中&#xff0c;我们将带你了解机器学习的基本概念、主要类型以及它在现实生活中的应用。无论你是初学者还是有一定经验的开发者&#xff0c;这篇文章都会为你打下坚…

华为IPD简介

创作灵感 现在“熟悉华为IPD”经常出现在高级招聘岗位能力要求上&#xff0c;于是作者写下此文章以此巩固相关知识储备 名词解释 华为IPD&#xff08;Integrated Product Development&#xff0c;集成产品开发&#xff09;是华为引入并优化的一套产品开发管理体系&#xff0…

Git备忘录(三)

设置用户信息: git config --global user.name “itcast” git config --global user.email “ helloitcast.cn” 查看配置信息 git config --global user.name git config --global user.email $ git init $ git remote add origin gitgitee.com:XXX/avas.git $ git pull or…

智能体(AI Agent、Deepseek、硅基流动)落地实践Demo——借助大模型生成报表,推动AI赋能企业决策

文章目录 一、 引言二、 系统设计与技术细节2.1 系统架构2.2 核心组件说明 三、 Demo 代码推荐博客&#xff1a; 四、输出年度营销报告1. 总销售额 根据提供的数据&#xff0c;年度总销售额为&#xff1a;740.0。2. 各产品销售额3. 各地区销售额4. 各产品在各地区的销售情况 分…

半遮挡检测算法 Detecting Binocular Half-Occlusions

【1. 背景】&#xff1a; 本文分析【Detecting Binocular Half-Occlusions&#xff1a;Empirical Comparisons of Five Approaches】Geoffrey Egnal和Richard P. Wildes于2002年发表在IEEE Transactions on Pattern Analysis and Machine Intelligence上&#xff0c;这是1篇中…

检测网络安全漏洞 工具

实验一的名称为信息收集和漏洞扫描 实验环境&#xff1a;VMware下的kali linux2021和Windows7 32&#xff0c;网络设置均为NAT&#xff0c;这样子两台机器就在一个网络下。攻击的机器为kali,被攻击的机器为Windows 7。 理论知识记录&#xff1a; 1.信息收集的步骤 2.ping命令…

PostgreSQL的学习心得和知识总结(一百六十九)|深入理解PostgreSQL数据库之 Group By 键值消除 的使用和实现

目录结构 注&#xff1a;提前言明 本文借鉴了以下博主、书籍或网站的内容&#xff0c;其列表如下&#xff1a; 1、参考书籍&#xff1a;《PostgreSQL数据库内核分析》 2、参考书籍&#xff1a;《数据库事务处理的艺术&#xff1a;事务管理与并发控制》 3、PostgreSQL数据库仓库…

Nacos学习(一)——基本介绍、安装与负载均衡策略

目录 一、Nacos基本介绍 二、安装与使用 (一)Nacos安装 1.上传到linux上解压 2.按需修改配置文件 3.单机启动 4.查看Nacos启动日志 5.浏览器访问Nacos服务 6.关闭Nacos服务 (二)Nacos使用 1.新建一个项目 2.最外部依赖如下 3.provider-service包的依赖 4.配置文件…

第3章 3.2 配置系统 .NET Core配置系统

3.2.1 配置系统的基本使用 .NET Core中的配置系统支持非常丰富的配置源&#xff0c;包括文件&#xff08;JSON、XML、INI等&#xff09;、注册表、环境变量、命令行、Azure Key Vault等&#xff0c;配置系统还支持自定义配置源。 用配置系统开发包Microsoft.Extensions.Confi…

JVM 类加载器深度解析(含实战案例)

上期文章内容&#xff1a;JVM类加载过程详解&#xff1a;从字节码到内存的蜕变之旅 目录 一、类加载器的本质是什么&#xff1f; 二、类加载机制全景 1.1 三阶段生命周期 1.2 关键数据结构 三、类加载器体系架构 2.1 四层标准类加载器 2.2 类加载器树形结构 四、双亲委派…

仿 Sora 之形,借物理模拟之技绘视频之彩

来自麻省理工学院、斯坦福大学、哥伦比亚大学以及康奈尔大学的研究人员携手开源了一款创新的3D交互视频模型——PhysDreamer&#xff08;以下简称“PD”&#xff09;。PD与OpenAI旗下的Sora相似&#xff0c;能够借助物理模拟技术来生成视频&#xff0c;这意味着PD所生成的视频蕴…

业务架构、数据架构、应用架构和技术架构

TOGAF(The Open Group Architecture Framework)是一个广泛应用的企业架构框架&#xff0c;旨在帮助组织高效地进行架构设计和管理。 TOGAF 的核心就是由我们熟知的四大架构领域组成:业务架构、数据架构、应用架构和技术架构。 企业数字化架构设计中的最常见要素是4A 架构。 4…

【开源免费】基于SpringBoot+Vue.JS善筹网站(JAVA毕业设计)

本文项目编号 T 205 &#xff0c;文末自助获取源码 \color{red}{T205&#xff0c;文末自助获取源码} T205&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…

vue+elementplus创建初始化安装

项目创建初始化 D:\Tool\mysql\education_vue 这个路径下cmd 或打开vscode&#xff0c;把项目丢进code中打开 安装element plus Container 布局容器 | Element Plus npm install element-plus --save 把项目初始文件Homeview AboutView删了&#xff0c;Router index.js中删一…

Word接入DeepSeek(API的作用)

1.打开”Word”&#xff0c;点击“文件”。 2.点击“选项”。 3.点击“信任中心”——“信任中心设置”。 4. 勾选”启用所有宏“&#xff0c;点击”确定“。 5.点击“自定义功能区”&#xff0c;勾选上“开发工具”&#xff0c;点击“确定”。 6.返回“文件——开发工具“下的…

Macos机器hosts文件便捷修改工具——SwitchHosts

文章目录 SwitchHosts软件下载地址操作添加方案切换方案管理方案快捷键 检测 SwitchHosts SwitchHosts 是一款 Mac 平台上的免费软件&#xff0c;它可以方便地管理和切换 hosts 文件&#xff0c;支持多种 hosts 文件格式。 软件下载地址 SwitchHosts 操作 添加方案 添加 …

Python的那些事第二十三篇:Express(Node.js)与 Python:一场跨语言的浪漫邂逅

摘要 在当今的编程世界里,Node.js 和 Python 像是两个性格迥异的超级英雄,一个以速度和灵活性著称,另一个则以强大和优雅闻名。本文将探讨如何通过 Express 框架将 Node.js 和 Python 结合起来,打造出一个高效、有趣的 Web 应用。我们将通过一系列幽默风趣的实例和表格,展…

汽车免拆诊断案例 | 2010 款路虎揽胜车空调偶尔出风异常

故障现象  一辆2010款路虎揽胜车&#xff0c;搭载5.0 L发动机&#xff0c;累计行驶里程约为16万km。车主反映&#xff0c;接通空调开关后&#xff0c;有时出风忽大忽小&#xff0c;有时不出风&#xff0c;有时要等2 min左右才出风&#xff1b;有时两三天出现一次&#xff0c;…

Django项目之订单管理part1

一.前言 我们前面把django的常用知识点给讲完了&#xff0c;现在我们开始项目部分&#xff0c;项目是一个订单管理系统&#xff0c;我们同时也会在项目之中也会讲一些前面没有用到的知识点。 项目大概流程如下&#xff1a; 核心的功能模块&#xff1a; 认证模块&#xff0c;用…