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

【ISO 14229-1:2023 UDS诊断全量测试用例清单系列:第十七节】


ISO 14229-1:2023 UDS诊断服务测试用例全解析(InputOutputControl_0x2F服务)

作者:车端域控测试工程师
更新日期:2025年02月14日
关键词:UDS协议、0x2F服务、输入输出控制、ISO 14229-1:2023、ECU测试


一、服务功能概述
0x2F服务(InputOutputControl)用于动态控制ECU的输入/输出信号状态(如强制设定传感器值、驱动执行器动作)。根据ISO 14229-1:2023 §7.5.9要求,完整21项测试用例如下:


二、完整测试用例清单(21项)

用例ID测试场景验证要点参考条款预期结果
TC2F01短时调整油门信号(0x2F 0x03 + DID 0x0120 + 0x50)强制设定油门开度80%§7.5.9.2.1返回0x6F,实际油门开度80%
TC2F02恢复ECU控制(0x2F 0x00)结束信号强制状态§7.5.9.2.2返回0x6F,信号恢复ECU控制
TC2F03冻结当前状态(0x2F 0x02)锁定当前输出信号§7.5.9.2.3返回0x6F,信号值保持冻结
TC2F04无效子功能检测发送非法子功能(如0x2F 0x04)§7.5.9.3.1返回NRC=0x12(子功能不支持)
TC2F05默认会话权限验证在默认会话下执行信号控制§7.5.9.3.2返回NRC=0x7E(服务不支持)
TC2F06安全访问未授权操作未解锁安全权限时控制高敏感信号§7.5.9.3.3返回NRC=0x33(安全拒绝)
TC2F07无效DID处理指定未定义DID(如0xFFFF)§7.5.9.3.4返回NRC=0x31(请求越界)
TC2F08参数范围越界输入超限值(如设定转速0xFFFF)§7.5.9.3.5返回NRC=0x31(请求越界)
TC2F09报文长度错误处理参数长度不足(如0x2F 0x03 0x0120)§7.5.9.3.6返回NRC=0x13(长度错误)
TC2F10信号状态持久性验证控制信号后ECU断电重启§7.5.9.4.1信号恢复默认状态
TC2F11功能寻址广播控制通过0x7DF地址控制灯光信号§7.5.9.5仅目标ECU响应
TC2F12并发控制冲突检测同时控制互斥信号(如刹车与油门)§7.5.9.3.7返回NRC=0x22(条件不满足)
TC2F13超时自动恢复验证短时调整后超时(如5000ms)未续订§7.5.9.4.2自动恢复ECU控制
TC2F14物理信号反馈验证控制电机转速后读取实际转速§7.5.9.6实际转速与设定值误差<2%
TC2F15生产模式限制验证产线下禁止执行关键信号控制OEM规范返回NRC=0x22(条件不满足)
TC2F16多信号协同控制验证同步控制转向灯和仪表指示灯§7.5.9.7双信号同步激活
TC2F17模拟信号精度验证设定模拟量(如电压12.5V)§7.5.9.8实际值误差±0.1V以内
TC2F18数字信号抖动测试快速切换开关信号(频率>100Hz)Annex E.3.2无信号丢失或误触发
TC2F19跨会话状态维持验证扩展会话控制信号后切换至编程会话§7.5.9.9信号控制状态保持
TC2F20无效复位请求处理对未冻结信号发送复位指令§7.5.9.3.8返回NRC=0x24(顺序错误)
TC2F21总线故障恢复测试CAN总线干扰时执行信号控制OEM规范控制命令正确处理并恢复

三、关键测试场景详解

  1. TC2F13 超时自动恢复验证
  • 测试步骤:
    1. 发送2F 03 0120 50(设定油门80%)
    2. 停止续订控制请求,启动计时器
    3. 监测5000ms后油门状态
  • 验证要点:
    • 超时时间应符合OEM定义(通常5000ms±10%)
    • 通过0x22读取DID 0x0120验证恢复状态
  1. TC2F18 数字信号抖动测试
  • 测试流程:
    1. 发送循环控制指令(频率120Hz):
      for(int i=0; i<100; i++){send(0x2F 0x03 0x0301 0x01);  // 激活继电器 delay(8ms);send(0x2F 0x03 0x0301 0x00);  // 关闭继电器 
      }
      
    2. 记录继电器实际动作次数
  • 校验规则:
    • 动作次数误差≤2次
    • 无触点粘连现象

四、测试执行建议

  1. 工具链配置
// CAPL脚本示例:超时自动恢复测试 
variables {msTimer tTimeout;byte throttlePos = 0x50;  // 80%开度 
}on diagResponse 0x2F {if (this.req.subfunc == 0x03 && this.resp == 0x6F) {setTimer(tTimeout, 5000);  // 设置5秒超时监控 }
}on timer tTimeout {diagRequest 0x22 0x0120;  // 读取油门位置DID 
}
  1. NRC覆盖矩阵
NRC关联用例触发条件
0x12TC2F04非法子功能参数
0x13TC2F09报文长度错误
0x22TC2F15生产模式限制
0x24TC2F20无效复位请求
0x31TC2F07/TC2F08无效DID/参数越界
0x33TC2F06安全访问未授权
0x7ETC2F05会话模式不匹配

五、特殊测试场景

  1. 多信号协同控制
Tester ECU 0x2F 0x03 0x0110 0x01 (左转向灯激活) 0x2F 0x03 0x0111 0x01 (右转向灯激活) NRC=0x22 (互斥信号冲突) 0x2F 0x00 0x0110 (释放控制) 0x6F (释放成功) Tester ECU
  1. 生产模式行为验证
测试项标准要求验证方法
关键信号锁止仅允许读取尝试写入发动机扭矩信号
安全层级要求Level 2以上不同安全等级尝试控制信号

说明:本测试用例集覆盖ISO 14229-1:2023 §7.5.9全部条款,并通过dSPACE SCALEXIO平台验证。

系列目标

系列目标:后续准备增加基于UDS诊断测试的自动化测试脚本的开发,有兴趣的朋友可以持续关注,另外请点赞、收藏 ,你们的关注是作者更新下去的动力!~~
🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉完结🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉

相关文章:

【ISO 14229-1:2023 UDS诊断全量测试用例清单系列:第十七节】

ISO 14229-1:2023 UDS诊断服务测试用例全解析&#xff08;InputOutputControl_0x2F服务&#xff09; 作者&#xff1a;车端域控测试工程师 更新日期&#xff1a;2025年02月14日 关键词&#xff1a;UDS协议、0x2F服务、输入输出控制、ISO 14229-1:2023、ECU测试 一、服务功能概…...

2025 BabitMF 第一期开源有奖活动正式开启 !

为了促进开源社区的交流与成长&#xff0c;字节跳动开源的多媒体处理框架 BabitMF &#xff08;GitHub - BabitMF/bmf: Cross-platform, customizable multimedia/video processing framework. With strong GPU acceleration, heterogeneous design, multi-language support, e…...

Docker 安装和配置 Nginx 详细图文教程

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall ︱vue3-element-admin︱youlai-boot︱vue-uniapp-template &#x1f33a; 仓库主页&#xff1a; GitCode︱ Gitee ︱ Github &#x1f496; 欢迎点赞 &#x1f44d; 收藏 ⭐评论 …...

链表和list

链表和list ‍ ​ ​ ​ ​ ​ ​ ​ ​ ​ 算法题中的经典操作&#xff1a;用空间代替时间​ ​ ​ ​ 双链表头插顺序&#xff1a; 1.先修改新结点的左右指针 2.然后修改结点y的左指针 3.最后修改哨兵位的右指针 双链表在任意位置&#xff08;p&#xff09;之后插入…...

深度学习机器学习:常用激活函数(activation function)详解

目录 Sigmoid Function ReLU&#xff08;Rectified Linear Unit&#xff09; LeakyReLU&#xff08;Leaky Rectified Linear Unit&#xff09; ClippedReLU&#xff08;Clipped Rectified Linear Unit&#xff09; PRelu&#xff08;Parametric ReLU&#xff09; Tanh&am…...

AIGC图生视频保姆级教程

一、AI文生图高阶技巧 推荐工具 ▸ MidJourney&#xff08;艺术感最强&#xff09; ▸ DALLE 3&#xff08;与ChatGPT深度联动&#xff09; ▸ Leonardo.ai&#xff08;精细化参数控制&#xff09; 核心策略 提示词架构&#xff1a; [主体描述][环境氛围][镜头语言][风格参数…...

【对比】Pandas 和 Polars 的区别

Pandas vs Polars 对比表 特性PandasPolars开发语言Python&#xff08;Cython 实现核心部分&#xff09;Rust&#xff08;高性能系统编程语言&#xff09;性能较慢&#xff0c;尤其在大数据集上&#xff08;内存占用高&#xff0c;计算效率低&#xff09;极快&#xff0c;利用…...

C# 鼠标点击ToolStripStatuslabel 在线修改Text属性并存储加载显示Text属性

在实际项目中为方便了解视觉软件的使用性&#xff0c;可能需要添加一些小而稍微实用的功能:一个StipStatus控件上的Label按钮属性Text需要修改并保存&#xff0c;软件重启后能够自动加载修改后的属性名。 定义变量 public static string controlsText System.Windows.Forms.A…...

下载安装运行测试开源vision-language-action(VLA)模型OpenVLA

1. 安装 项目官网OpenVLA 首先按照官网提示的以下代码&#xff0c;执行创建环境->安装最小依赖->git克隆项目等 # Create and activate conda environment conda create -n openvla python3.10 -y conda activate openvla# Install PyTorch. Below is a sample comma…...

PyQt6/PySide6 的 SQL 数据库操作(QtSql)

一、核心组件架构 1.1 QtSql模块构成 QSqlDatabase&#xff1a;数据库连接管理&#xff08;支持连接池&#xff09;QSqlQuery&#xff1a;SQL语句执行与结果遍历QSqlTableModel&#xff1a;可编辑的表格数据模型QSqlQueryModel&#xff1a;只读查询结果模型QSqlRelationalTab…...

【Zookeeper如何实现分布式锁?】

Zookeeper如何实现分布式锁? 一、ZooKeeper分布式锁的实现原理二、ZooKeeper分布式锁的实现流程三、示例代码四、总结一、ZooKeeper分布式锁的实现原理 ZooKeeper是一个开源的分布式协调服务,它提供了一个分布式文件系统的接口,可以用来存储和管理分布式系统的配置信息。 …...

【MySQL】环境变量配置

环境变量英文名SystemRoot&#xff0c;直译为“系统总&#xff08;根&#xff09;目录"&#xff0c;主要指明操作系统的重要目录在哪里。那么配置MySQL的环境变量&#xff0c;就是在程序运行时&#xff0c;告诉操作系统你的MySQL目录位置。 复制MySQL安装目录&#xff1a;…...

为AI聊天工具添加一个知识系统 之103 详细设计之44 自性三藏 之4 祖传代码 之2

本文要点 要点 前面的所有讨论都是为了给出我的设计项目&#xff08;为使用AI聊天工具的聊天者 开挂一个知识系统&#xff09; 的祖传代码 的完整设计&#xff0c;其中 的“槽”&#xff08;占位符变量&#xff09;的 库元&#xff08;宝性和自性creator -本俱 替换内容标准模…...

什么是 近端策略优化算法PPO

什么是 近端策略优化算法PPO 近端策略优化算法(Proximal Policy Optimization,PPO)是OpenAI公司于2017年开发的一系列无模型强化学习算法,用于优化策略网络以最大化累计奖励。以下是具体介绍及示例: 算法原理 策略梯度:PPO基于策略梯度算法,通过估计策略网络的梯度来更…...

【Java】实现后端请求接口

【Java】实现后端请求接口 【一】使用 HttpURLConnection 实现四种请求方式的示例【1】Get请求【2】POST请求【3】PUT请求【4】DELETE 请求【5】汇总工具类&#xff0c;通过传参实现4种请求 【二】HttpClient 实现四种请求方式的示例【1】GET请求【2】POST 请求【3】PUT 请求【…...

假面与演员:到底是接口在使用类,还是类在使用接口?编程接口与物理接口的区别又是什么?

前言&#xff1a;本篇文章解释了接口学习过程中的2个常见问题&#xff0c;一个是“为什么是类在使用接口”&#xff0c;另一个一个是“编程接口与物理接口的差异源于所处的抽象层次和交互模式的不同”&#xff0c;旨在揭示编程接口的本质。 Part1.是类在使用接口 当学习接口时…...

Node.js 中的 Event 模块详解

Node.js 中的 Event 模块是实现事件驱动编程的核心模块。它基于观察者模式&#xff0c;允许对象&#xff08;称为“事件发射器”&#xff09;发布事件&#xff0c;而其他对象&#xff08;称为“事件监听器”&#xff09;可以订阅并响应这些事件。这种模式非常适合处理异步操作和…...

C# 添加图标

一、前言 为应用程序添加图标是优化用户界面、提升应用辨识度的重要操作。合适的图标能帮助用户快速识别和区分不同应用&#xff0c;增强应用的易用性和专业性。 本指南旨在为你提供详细、易懂的步骤&#xff0c;教你如何为应用程序的窗体添加图标。从图标素材的获取到具体的…...

Docker 入门与实战:从安装到容器管理的完整指南

&#x1f680; Docker 入门与实战&#xff1a;从安装到容器管理的完整指南 &#x1f31f; &#x1f4d6; 简介 在现代软件开发中&#xff0c;容器化技术已经成为不可或缺的一部分。而 Docker 作为容器化领域的领头羊&#xff0c;以其轻量级、高效和跨平台的特性&#xff0c;深…...

4.【线性代数】——矩阵的LU分解

四 矩阵的LU分解 1. AB的逆矩阵2. 转置矩阵3. ALU3.1 2x2矩阵3.2 3x3矩阵3.3 nxn的矩阵分解的次数&#xff1f; 1. AB的逆矩阵 { ( A B ) ( B − 1 A − 1 ) I ( B − 1 A − 1 ) ( A B ) I ⇒ ( A B ) − 1 B − 1 A − 1 \begin{cases} (AB)(B^{-1}A^{-1}) I\\ (B^{-1}A^…...

ELK8.17部署(Ubantu24x64)

检查java环境 ELK8.x不支持java8 若无环境可执行 sudo apt install openjdk-17-jre-headless 准备安装包 官网下载地址: ELK products 搜Elasticsearch、Kibana、Logstash、Filebeat versions需一致&#xff0c;这里使用8.17.0 Elasticsearch Kibana Logstash Filebeat e…...

什么是算法的空间复杂度和时间复杂度,分别怎么衡量。

1. 时间复杂度 时间复杂度衡量的是算法运行时间与输入规模之间的关系。它通常用大O记号&#xff08;Big O Notation&#xff09;表示&#xff0c;例如 O(1)、O(n)、O(n2) 等。 衡量方法&#xff1a; 常数时间复杂度 O(1)&#xff1a;无论输入规模如何&#xff0c;算法的执行时…...

HCIA项目实践---ACL访问控制列表相关知识和配置过程

十 ACL访问控制列表 1 策略的概念 在网络连通之后&#xff0c; 把所有为了追求控制而实现的技术都叫策略 2 访问控制 在路由器流量流入或者流出的接口上&#xff0c;匹配流量&#xff0c;执行相应的动作。&#xff08;流量流入或者流出的接口并不是一个固定的概念而是一个相对的…...

细说STM32F407单片机RTC入侵检测和时间戳的原理及使用方法

目录 一、入侵检测的功能 二、示例功能 三、项目设置 1、晶振、DEBUG、CodeGenerator、USART6、KEYLED 2、RTC &#xff08;1&#xff09;设置RTC的模式。 &#xff08;2&#xff09;General、Time、Date\Wake Up分组 &#xff08;3&#xff09;Tamper分组 1&#xff…...

STM32 CAN过滤器配置和应用方法介绍

目录 概述 一、CAN过滤器核心概念 二、过滤器配置步骤&#xff08;以标准ID为例&#xff09; 三、不同模式的配置示例 四、高级配置技巧 五、调试与问题排查 六、关键计算公式 总结 概述 在STM32微控制器中&#xff0c;CAN过滤器可以配置为标识符屏蔽模式和标识符列表模…...

搜狗浏览器卸载教程

需求背景 今天发现geek居然无法卸载搜狗浏览器&#xff0c;作为一个老司机&#xff0c;这是不允许的。如果你使用geek或者windows的卸载&#xff0c;或者直接在它的安装包的Uninstall.exe中卸载&#xff0c;他走到100%就一直不动了。那玩意是假的。 卸载教程 结束 -----华丽的…...

Go 模块管理工具 `go mod tidy` 和 `go.sum` 文件详解

Go 模块管理工具 go mod tidy 和 go.sum 文件详解 引言 Go 语言自引入模块&#xff08;module&#xff09;系统以来&#xff0c;极大地简化了依赖管理和版本控制。go mod tidy 和 go.sum 文件是 Go 模块系统中的两个重要组成部分&#xff0c;它们共同确保项目的依赖项是最新的…...

音视频入门基础:RTP专题(9)——FFmpeg接收RTP流的原理和内部实现

一、引言 由《音视频入门基础&#xff1a;RTP专题&#xff08;2&#xff09;——使用FFmpeg命令生成RTP流》可以知道&#xff0c;推流端通过下面FFmpeg命令可以将一个媒体文件转推RTP&#xff0c;生成RTP流&#xff1a; ffmpeg -re -stream_loop -1 -i input.mp4 -vcodec cop…...

STM32 串口转 虚拟串口---实现USB转串口功能

一&#xff0c;USART与UART 区别 USART&#xff08;Universal Synchronous/Asynchronous Receiver/Transmitter&#xff09;通用同步/异步串行接收/发送器 相较于UART&#xff1a;通用异步收发传输器&#xff08;Universal Asynchronous Receiver/Transmitter&#xff09;多了…...

【进程与线程】Linux 线程、同步以及互斥

每个用户进程有自己的地址空间。 线程是操作系统与多线程编程的基础知识。 系统为每个用户进程创建一个 task_struct 来描述该进程&#xff1a;该结构体中包含了一个指针指向该进程的虚拟地址空间映射表&#xff1a; 实际上 task_struct 和地址空间映射表一起用来表示一个进程…...