【ISO 14229-1:2023 UDS诊断全量测试用例清单系列:第十四节】
ISO 14229-1:2023 UDS诊断服务测试用例全解析(CommunicationControl_0x28服务)
作者:车端域控测试工程师
更新日期:2025年02月14日
关键词:UDS协议、0x28服务、通信控制、ISO 14229-1:2023、ECU测试
一、服务功能概述
0x28服务(CommunicationControl)用于动态控制ECU的通信行为,包括启用/禁用特定通信类型(如应用报文、网络管理报文)。根据ISO 14229-1:2023 §7.3.28要求,完整16项测试用例如下:
二、完整测试用例清单(16项)
| 用例ID | 测试场景 | 验证要点 | 参考条款 | 预期结果 |
|---|---|---|---|---|
| TC2801 | 启用应用报文通信(0x28 0x00 0x01) | 在扩展会话下启用正常通信 | §7.3.28.2.1 | 返回0x68,应用报文恢复发送 |
| TC2802 | 禁用网络管理报文(0x28 0x01 0x03) | 在编程会话下禁用NM报文 | §7.3.28.2.2 | 返回0x68,NM报文停止发送 |
| TC2803 | 无效子功能检测 | 发送非法子功能(如0x28 0x02) | §7.3.28.3.1 | 返回NRC=0x12(子功能不支持) |
| TC2804 | 默认会话权限验证 | 在默认会话下发送0x28 0x00 | §7.3.28.3.2 | 返回NRC=0x7E(服务不支持) |
| TC2805 | 安全访问未授权操作 | 未解锁安全权限时修改通信设置 | §7.3.28.3.3 | 返回NRC=0x33(安全拒绝) |
| TC2806 | 无效控制类型参数 | 指定非法控制类型(如0x28 0x00 0xFF) | §7.3.28.3.4 | 返回NRC=0x31(请求越界) |
| TC2807 | 无效通信类型参数 | 指定未定义通信类型(如0x28 0x01 0x0A) | §7.3.28.3.5 | 返回NRC=0x31(请求越界) |
| TC2808 | 报文长度错误处理 | 附加多余参数(如0x28 0x00 0x01 0x00) | §7.3.28.3.6 | 返回NRC=0x13(长度错误) |
| TC2809 | 混合控制模式验证 | 同时启用应用报文并禁用诊断报文 | §7.3.28.4.1 | 诊断报文停止,应用报文正常 |
| TC2810 | 通信状态持久性验证 | 禁用通信后ECU断电重启 | §7.3.28.4.2 | 通信状态恢复默认启用 |
| TC2811 | 功能寻址广播控制 | 通过功能寻址(0x7DF)发送0x28 0x01 | §7.3.28.5 | 仅目标ECU响应 |
| TC2812 | 并发服务冲突检测 | 禁用诊断通信时执行0x22服务(ReadData) | §7.3.28.3.7 | 返回NRC=0x22(条件不满足) |
| TC2813 | 超时自动恢复验证 | 禁用通信后等待P2超时(>5000ms) | Annex B.3.2 | 通信自动恢复启用状态 |
| TC2814 | 物理层错误恢复测试 | CAN总线短路后恢复通信控制 | OEM规范 | 通信控制功能正常 |
| TC2815 | 多网络通道控制验证 | 同时控制CAN和LIN通信通道 | §7.3.28.6 | 各通道独立控制生效 |
| TC2816 | 生产模式特殊行为验证 | 产线模式下禁用非必要通信 | OEM规范 | 仅关键报文保持活动 |
三、关键测试场景详解
- TC2809 混合控制模式验证
- 测试步骤:
- 发送0x28 0x00 0x01(启用应用报文)
- 发送0x28 0x01 0x02(禁用诊断报文)
- 监测CAN总线报文
- 验证要点:
- 应用报文(ID 0x100等)正常发送
- 诊断报文(ID 0x7E0等)停止发送
- TC2813 超时自动恢复验证
- 测试流程:
- 发送0x28 0x01 0x01(禁用应用报文)
- 停止发送0x28服务,启动计时器
- 监测P2超时后应用报文是否恢复
- 校验规则:
- 超时时间应符合OEM定义(通常5000ms±10%)
- 恢复后通过0x22读取通信状态标识符
四、测试执行建议
- 工具链配置
// CAPL脚本示例:验证通信控制
variables {message 0x100 appMsg; // 应用报文示例
}on diagResponse 0x28 {if (this.req.subfunc == 0x01 && this.resp == 0x68) {appMsg.trigger(); // 触发应用报文发送 }
}// 总线监控脚本
on message 0x100 {write("应用报文正常传输");
}
- NRC覆盖矩阵
| NRC | 关联用例 | 触发条件 |
|---|---|---|
| 0x12 | TC2803 | 无效子功能参数 |
| 0x13 | TC2808 | 报文长度错误 |
| 0x22 | TC2812 | 服务冲突(诊断通信禁用) |
| 0x31 | TC2806/TC2807 | 无效控制/通信类型参数 |
| 0x33 | TC2805 | 安全访问未授权 |
| 0x7E | TC2804 | 会话模式不匹配 |
五、特殊场景测试设计
- 多通道控制验证
- 生产模式行为验证
| 测试项 | 标准要求 | 验证方法 |
|---|---|---|
| 产线通信配置 | 仅保留刷写报文 | 监测总线上报文ID过滤 |
| 控制指令响应时间 | ≤100ms | 示波器捕捉请求-响应时间差 |
说明:本测试用例集覆盖ISO 14229-1:2023 §7.3.28全部条款,并通过Vector CANoe 15.0+验证。测试脚本模板可通过获取。
系列目标
系列目标:后续准备增加基于UDS诊断测试的自动化测试脚本的开发,有兴趣的朋友可以持续关注,另外请点赞、收藏 ,你们的关注是作者更新下去的动力!~~
🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉完结🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉
相关文章:
【ISO 14229-1:2023 UDS诊断全量测试用例清单系列:第十四节】
ISO 14229-1:2023 UDS诊断服务测试用例全解析(CommunicationControl_0x28服务) 作者:车端域控测试工程师 更新日期:2025年02月14日 关键词:UDS协议、0x28服务、通信控制、ISO 14229-1:2023、ECU测试 一、服务功能概述…...
C语言简单练习题
文章目录 练习题一、计算n的阶乘bool类型 二、计算1!2!3!...10!三、计算数组arr中的元素个数二分法查找 四、动态打印字符Sleep()ms延时函数system("cls")清屏函数 五、模拟用户登录strcmp()函数 六、猜数字小游戏产生一个随机数randsrandRAND_MAX时间戳time() 示例 …...
每日一题——把数字翻译成字符串
把数字翻译成字符串 题目描述示例示例1示例2 题解动态规划代码实现复杂度分析 总结 题目描述 有一种将字母编码成数字的方式:‘a’->1, ‘b’->2, … , ‘z’->26。 现在给一串数字,返回有多少种可能的译码结果。 数据范围:字符串…...
C语言之easyX
目录 概要 easyX整体架构 图形绘制 画布宽高 圆形 图片的贴图 加载图像 游戏框架 概要 easyX是一个轻量级的图形库,用于在Windows平台上进行简单的2D图形绘制。它提供了一组简单易用的函数,可以方便地绘制基本的图形元素,如线条、矩形、圆形…...
安卓基础(持续更新的笔记)
为什么要这样: // 创建请求体RequestBody body RequestBody.create(MediaType.parse("application/json; charsetutf-8"),jsonObject.toString()); jsonObject 就包含了一个 JSON 数据,它其实就是: {"name": "张…...
10. Hbase Compaction命令
一. 什么是Compaction 在 HBase 中,频繁进行数据插入、更新和删除操作会生成许多小的 HFile,当 HFile 数量增多时,会影响HBase的读写性能。此外,垃圾数据的存在也会增加存储需求。因此,定期进行 Compact操作ÿ…...
在 UniApp 项目中设置多语言
在 UniApp 项目中设置多语言支持可以通过以下步骤实现: 1. 安装依赖 首先,你需要安装 vue-i18n 插件来处理多语言支持。 npm install vue-i18n --save2. 创建语言文件 在项目中创建一个 lang 文件夹,用于存放不同语言的翻译文件。例如&am…...
告别卡关!XSS挑战之旅全关卡通关思路详解
XSS挑战之旅 XSS测试思路Level1Level2Level3Level4Level5Level6Level7Level8Level9Level10Level11Level12Level13Level14Level15Level16Level17Level18Level19Level20免责声明: XSS测试思路 确定输入输出点: 寻找URL参数、表单输入、HTTP头(R…...
SpringCloud框架下的注册中心比较:Eureka与Consul的实战解析
摘要 在探讨SpringCloud框架中的两种注册中心之前,有必要回顾单体架构与分布式架构的特点。单体架构将所有业务功能集成在一个项目中,优点是架构简单、部署成本低,但耦合度高。分布式架构则根据业务功能对系统进行拆分,每个模块作…...
【Java】分布式锁Redis和Redisson
https://blog.csdn.net/weixin_44606481/article/details/134373900 https://www.bilibili.com/video/BV1nW421R7qJ Redis锁机制一般是由 setnx 命令实现,set if not exists,语法setnx key value,将key设置值为value,如果key不存在…...
Python的imutils库详细介绍
imutils 是一个专为简化OpenCV(计算机视觉库)常见操作而设计的Python工具库,提供了一系列便捷函数,使图像和视频处理更加高效和简洁。以下是对其功能、安装及用法的详细介绍: 1. 安装方法 通过pip安装: p…...
蓝桥杯 Java B 组之简单动态规划(爬楼梯、斐波那契数列)
Day 6:简单动态规划(爬楼梯、斐波那契数列) 动态规划(Dynamic Programming,简称 DP)是计算机科学中的一种算法设计思想,用来解决最优解问题,它的核心思想是将大问题分解为小问题&am…...
Hive增量迁移方案与实操PB级
客户一共1PB数据,每天新增10T,有些表只保留3天。 需要客户提供: a.tbl_size(大小GB) a.last_mtime(最新更新时间) a.tbl_ttl(保留时间) b.last_part_dt(分区值) b.last_part_size(最新分区大小) t_day(表更新规律,t几) 因为目前…...
【练习】【双指针】力扣热题100 283. 移动零
题目 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0] 示例 2: 输入: nums [0] 输出…...
Python 依赖管理的革新——Poetry 深度解析
引言 在 Python 生态中,依赖管理一直是开发者关注的重要话题。从最初的 pip 和 virtualenv,到后来的 pipenv,Python 依赖管理工具不断进化。而近年来,Poetry 作为一款集成包管理和虚拟环境管理的新兴工具,逐渐获得了广…...
从零开始学Python爬虫:(二)使用基本库urllib(下)
一、异常处理 关于某些情况下,可能会出现异常,如果不处理它们,会发生很多错误。 而urllib库提供了error模块来处理这些异常,该模块包括以下功能: (1)URLError 该类含有一个属性reason&#x…...
电商分布式场景中如何保证数据库与缓存的一致性?实战方案与Java代码详解
文章目录 一、缓存一致性问题的本质写后读不一致:更新数据库后,缓存未及时失效并发读写竞争:多个线程同时修改同一数据缓存与数据库事务不同步:部分成功导致数据错乱 二、5大核心解决方案与代码实现方案1:延迟双删策略…...
kamailio中Core Cookbook 核心配置手册
Core Cookbook 核心配置手册 版本: Kamailio SIP 服务器 v6.0.x (稳定版) 概述 本教程收集了 Kamailio 核心导出到配置文件的功能和参数。 注意: 本页参数未按字母顺序排列。 结构 kamailio.cfg 的结构可分为三部分: 全局参数模块设置路由块 建议按此顺序排列以保持清晰…...
【嵌入式Linux应用开发基础】read函数与write函数
目录 一、read 函数 1.1. 函数原型 1.2. 参数说明 1.3. 返回值 1.4. 示例代码 二、write 函数 2.1. 函数原型 2.2. 参数说明 2.3. 返回值 2.4. 示例代码 三、关键注意事项 3.1 部分读写 3.2 错误处理 3.3 阻塞与非阻塞模式 3.4 数据持久化 3.5 线程安全 四、嵌…...
一、OpenSM 架构部署及原理详解
目录 一、OpenSM 架构与核心功能 1. InfiniBand 子网管理器(SM)的作用 2. OpenSM 的架构 二、OpenSM 部署步骤(以 Linux 为例) 1. 安装依赖与软件包 2. 配置文件 3. 启动 OpenSM 服务 4. 验证部署 5. 高可用性配置(可选) 三、OpenSM 工作原理详解 1. 拓扑发现(…...
2526考研资料分享 百度网盘
通过网盘分享的文件:01、2026【考研数学】 链接:https://pan.baidu.com/s/1PwMzp_yCYqjBqa7492mP3w?pwd98wg 提取码:98wg--来自百度网盘超级会员v3的分享 通过网盘分享的文件:01、2026【考研政治】 链接:https://pan.baidu.com/s/1PwMzp_yCYqjBqa7492…...
15.1 Process(进程)类
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 通常开发时想要获得进程是比较困难的事,必须要调用CreateToolhelpSnapshot、ProcessFirst、ProcessNext等API或者诸如 Zw…...
事件传递和监控
今天介绍一下UIApplication的函数 - (BOOL)sendAction:to:from:forEvent: - (BOOL)sendAction:to:from:forEvent: 是 UIApplication 类中的一个方法,主要用于发送事件响应链中的动作(action)。它允许应用程序从一个特定的发送者(…...
CentOS 7 企业级Redis 7部署指南
CentOS 7 企业级Redis 7部署指南 目录导航 一、环境准备 1.1 依赖管理 二、离线安装 2.1 源码编译安装2.2 目录结构规范 三、生产配置 3.1 主配置文件3.2 配置生成脚本 四、系统集成 4.1 Systemd服务文件4.2 服务管理命令 五、安全加固 5.1 网络安全配置5.2 审计配置 六、性能…...
Python创建Excel的方式——提供4中方式可供参考
目录 专栏导读库的安装代码1——pandas代码2——openpyxl代码3——xlsxwriter代码4——xlwings总结 专栏导读 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手 🏳️🌈 博客主页:请点击——>…...
消息中间件深度剖析:以 RabbitMQ 和 Kafka 为核心
在现代分布式系统和微服务架构的构建中,消息中间件作为一个不可或缺的组件,承担着系统间解耦、异步处理、流量削峰、数据传输等重要职能。尤其是在面临大规模并发、高可用性和可扩展性需求时,如何选择合适的消息中间件成为了开发者和架构师们…...
回文数:简单问题中的多种优化思路
回文数:简单问题中的多种优化思路 引言 回文数(Palindrome Number)是一个有趣的问题,在算法竞赛、面试、甚至一些实际应用场景中都会遇到。最直观的方式是将数字转换成字符串,然后反转比较。但仅仅满足“能解”是不够…...
大语言模型简史:从Transformer(2017)到DeepSeek-R1(2025)的进化之路
2025年初,中国推出了具有开创性且高性价比的「大型语言模型」(Large Language Model — LLM)DeepSeek-R1,引发了AI的巨大变革。本文回顾了LLM的发展历程,起点是2017年革命性的Transformer架构,该架构通过「…...
java八股文-spring
目录 1. spring基础 1.1 什么是Spring? 1.2 Spring有哪些优点? 1.3 Spring主要模块 1.4 Spring常用注解 1.5 Spring中Bean的作用域 1.6 Spring自动装配的方式 1.7 SpringBean的生命周期 1.8 多级缓存 1.9 循环依赖? 1 .8.1 原因 1.8…...
机器学习--实现多元线性回归
机器学习—实现多元线性回归 本节顺延机器学习--线性回归中的内容,进一步讨论多元函数的回归问题 y ′ h ( x ) w ⊤ ∙ x b y^{\prime}h(x)w^\top\bullet xb y′h(x)w⊤∙xb 其中, w T ⋅ x 就是 W 1 X 1 w 2 X 2 w 3 X 3 ⋯ w N X N \text{其中,}w^\math…...
