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

【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");
    

相关文章:

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

ISO 14229-1:2023 UDS诊断【ECU复位0x11服务】_TestCase04 作者&#xff1a;车端域控测试工程师 更新日期&#xff1a;2025年02月17日 关键词&#xff1a;UDS诊断协议、ECU复位服务、0x11服务、ISO 14229-1:2023 TC11-004测试用例 用例ID测试场景验证要点参考条款预期结果TC…...

网络技术变迁:从IPv4走向IPv6

目录 前言 旧时代产物&#xff1a;IPv4 什么是IPv4&#xff1f; IPv4的工作方式 IPv4的缺点 为什么要从IPv4过渡到IPv6&#xff1f; 走向IPv6&#xff1a;新一代互联网协议 IPv6的技术特性 我们需要过渡技术 双栈&#xff08;Dual Stack&#xff09; 隧道技术&#…...

DeepSeek教unity------事件管理

1. 定义事件类型 定义一个枚举来表示不同类型的事件。组织和识别不同的事件。 2. 创建事件参数类 为了让事件携带数据&#xff0c;创建一个通用的事件参数类或者为每个事件类型创建特定的参数类。 3. 实现事件管理器 创建一个EventManager类&#xff0c;用于管理事件的注册…...

确保设备始终处于最佳运行状态,延长设备的使用寿命,保障系统的稳定运行的智慧地产开源了

智慧地产视觉监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;从而大大减少企业级应用约95%的开发成本。通过计算机视觉和…...

RedisTemplate存储含有特殊字符解决

ERROR信息: 案发时间: 2025-02-18 01:01 案发现场: UserServiceImpl.java 嫌疑人: stringRedisTemplate.opsForValue().set(SystemConstants.LOGIN_CODE_PREFIX phone, code, Duration.ofMinutes(3L)); // 3分钟过期作案动机: stringRedisTemplate继承了Redistemplate 使用的…...

28、深度学习-自学之路-NLP自然语言处理-做一个完形填空,让机器学习更多的内容程序展示

import sys,random,math from collections import Counter import numpy as npnp.random.seed(1) random.seed(1) f open(reviews.txt) raw_reviews f.readlines() f.close()tokens list(map(lambda x:(x.split(" ")),raw_reviews))#wordcnt Counter() 这行代码的…...

【NLP 22、语言模型 language model】

有时候我也想听听&#xff0c;我在你心里&#xff0c;是什么样子 —— 25.1.12 一、什么是语言模型 语言是灵活的&#xff0c;也是有规律的 了解一门语言的人可以判断一句话是否“合理” 通俗来讲&#xff0c;语言模型用来评价一句话(句子可以看作是字的组合)是否“合理”或…...

刚性平衡机建模

这两个公式是动平衡机中用于描述旋转部件振动行为的动力学方程。它们分别描述了旋转部件在平移振动和扭转振动中的运动规律&#xff0c;用于分析不平衡量对系统的影响。以下是详细解释&#xff1a; 1. 第一个公式&#xff1a;平移振动的动力学方程 M d 2 y d t 2 2 K y 0 m 1…...

【算法】双指针(上)

目录 双指针 左右指针(对撞指针) 快慢指针 移动零 双指针解题 复写零 暴力解题 双指针解题(快慢指针) 快乐数 双指针解题(快慢指针) 盛最多水的容器 暴力解题(会超时) 双指针解题(左右指针) 有效三角形的个数 暴力解题 双指针解题(左右指针) 双指针 常见的双指…...

【Linux Redis】关于用docker拉取Redis后,让虚拟机运行起来redis,并使得其可以连接到虚拟机外的navicat。

步骤一&#xff1a;拉取Redis镜像 docker pull redis 这个命令会下载最新版本的Redis镜像到你的本地Docker仓库中。你也可以指定一个具体的版本号&#xff0c;例如docker pull redis:6.2.6&#xff0c;来拉取特定版本的Redis镜像。 如果拉取遇到问题请参考【Linux AnolisOS】关…...

用deepseek学大模型04-模型可视化与数据可视化

deepseek.com: pytorch可视化工具 生成神经网络图 在 PyTorch 中&#xff0c;可视化神经网络结构的常用工具和方法有以下几种&#xff0c;以下将详细介绍它们的用法&#xff1a; 1. TensorBoard (PyTorch 官方集成) PyTorch 通过 torch.utils.tensorboard 支持 TensorBoard&a…...

一周学会Flask3 Python Web开发-post请求与参数获取

锋哥原创的Flask3 Python Web开发 Flask3视频教程&#xff1a; 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili app.route 装饰器默认只支持get请求。假如我们要让绑定的视图函数支持其他请求方式&#xff0c;我们可以在methods属性里配置…...

第3章 .NETCore核心基础组件:3.1 .NET Core依赖注入

3.1.1 什么是控制反转、依赖注入 杨老师在书中进行了一系列的文字阐述&#xff0c;总结一下就是&#xff1a;软件设计模式中有一种叫做【控制反转】的设计模式&#xff0c;而依赖注入是实现这种设计模式的一个很重要的方式。也就是说学习依赖注入&#xff0c;是学习怎样实现控…...

cs*n 网页内容转为html 加入 onenote

csdn上有好用的内容&#xff0c;我们怎么将它们加到 onenote 里吃灰呢。 一、创建 新html create_html.py import sysdef create_html_file(filename):# 检查是否提供了文件名if not filename:print("请提供HTML文件名")return# 创建HTML内容html_content f"…...

平板作为电脑拓展屏

有线串流&#xff08;速度更快&#xff09; spacedesk 打开usb对安卓的连接 用usb线直接连接电脑和平板 无线串流&#xff08;延迟高&#xff0c;不推荐&#xff09; todesk pc和手机端同时下载软件&#xff0c;连接后可以进行远程控制或扩展屏幕 spacedesk 连接到同一个…...

Pytorch实现论文之一种基于扰动卷积层和梯度归一化的生成对抗网络

简介 简介:提出了一种针对鉴别器的梯度惩罚方法和在鉴别器中采用扰动卷积,拟解决锐梯度空间引起的训练不稳定性问题和判别器的记忆问题。 论文题目:A Perturbed Convolutional Layer and Gradient Normalization based Generative Adversarial Network(一种基于扰动卷积层…...

关系数据库标准语言SQL

1.SOL称为结构化查询语言&#xff0c;它是由1974年由Boyce和Chamberlin提出的&#xff0c;1975年至1979年IBM公司的San Jose Research Laboratory研制了关系数据库管理系统的原型系统SystemR,并实现了这种语言。 2.SQL(Structured Ouery Language)称为结构化查询语言 3.SQL数…...

AI工具篇:利用DeepSeek+Kimi 辅助生成综述汇报PPT

随着科研和学术报告需求的增加&#xff0c;如何高效地准备一份结构清晰、内容充实的PPT已成为许多研究者的挑战。 传统的PPT制作过程繁琐&#xff0c;需要大量文献收集、数据分析和设计工作&#xff0c;而AI工具能够帮助提升效率&#xff0c;减少重复劳动。 本文将介绍如何使用…...

学习总结2.18

在原本基本的数船的基础上&#xff0c;增加了船不能畸形的要求&#xff0c;船只能是矩形&#xff0c;由此需要在dfs找船前确定是否有畸形船 .* ** *. ** ** .* ** *. 出现畸形船的情况如上图&#xff0c;即两艘船有一个交集时&#xff0c;此时就可以判断出bad pl…...

electron下载文件,弹窗选择下载路径,并通知下载进度

1&#xff1a;在window.js中 引入session import { app, BrowserWindow, ipcMain, dialog, shell, session } from electron; 2&#xff1a;发送下载请求 // 在主进程监听渲染进程发送的 start-download 事件ipcMain.on(start-download, async (event, downloadUrl) > {l…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek

文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama&#xff08;有网络的电脑&#xff09;2.2.3 安装Ollama&#xff08;无网络的电脑&#xff09;2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机

这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机&#xff0c;因为在使用过程中发现 Airsim 对外部监控相机的描述模糊&#xff0c;而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置&#xff0c;最后在源码示例中找到了&#xff0c;所以感…...

2.3 物理层设备

在这个视频中&#xff0c;我们要学习工作在物理层的两种网络设备&#xff0c;分别是中继器和集线器。首先来看中继器。在计算机网络中两个节点之间&#xff0c;需要通过物理传输媒体或者说物理传输介质进行连接。像同轴电缆、双绞线就是典型的传输介质&#xff0c;假设A节点要给…...

作为点的对象CenterNet论文阅读

摘要 检测器将图像中的物体表示为轴对齐的边界框。大多数成功的目标检测方法都会枚举几乎完整的潜在目标位置列表&#xff0c;并对每一个位置进行分类。这种做法既浪费又低效&#xff0c;并且需要额外的后处理。在本文中&#xff0c;我们采取了不同的方法。我们将物体建模为单…...

今日行情明日机会——20250609

上证指数放量上涨&#xff0c;接近3400点&#xff0c;个股涨多跌少。 深证放量上涨&#xff0c;但有个小上影线&#xff0c;相对上证走势更弱。 2025年6月9日涨停股主要行业方向分析&#xff08;基于最新图片数据&#xff09; 1. 医药&#xff08;11家涨停&#xff09; 代表标…...

Centos 7 服务器部署多网站

一、准备工作 安装 Apache bash sudo yum install httpd -y sudo systemctl start httpd sudo systemctl enable httpd创建网站目录 假设部署 2 个网站&#xff0c;目录结构如下&#xff1a; bash sudo mkdir -p /var/www/site1/html sudo mkdir -p /var/www/site2/html添加测试…...

STM32 低功耗设计全攻略:PWR 模块原理 + 睡眠 / 停止 / 待机模式实战(串口 + 红外 + RTC 应用全解析)

文章目录 PWRPWR&#xff08;电源控制模块&#xff09;核心功能 电源框图上电复位和掉电复位可编程电压监测器低功耗模式模式选择睡眠模式停止模式待机模式 修改主频一、准备工作二、修改主频的核心步骤&#xff1a;宏定义配置三、程序流程&#xff1a;时钟配置函数解析四、注意…...