【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):

      cpp 复制代码
      for(int i=0; i<100; i++){
        send(0x2F 0x03 0x0301 0x01);  // 激活继电器 
        delay(8ms);
        send(0x2F 0x03 0x0301 0x00);  // 关闭继电器 
      }
    2. 记录继电器实际动作次数

  • 校验规则:
    • 动作次数误差≤2次
    • 无触点粘连现象

四、测试执行建议

  1. 工具链配置
cpp 复制代码
// 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 关联用例 触发条件
0x12 TC2F04 非法子功能参数
0x13 TC2F09 报文长度错误
0x22 TC2F15 生产模式限制
0x24 TC2F20 无效复位请求
0x31 TC2F07/TC2F08 无效DID/参数越界
0x33 TC2F06 安全访问未授权
0x7E TC2F05 会话模式不匹配

五、特殊测试场景

  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诊断测试的自动化测试脚本的开发,有兴趣的朋友可以持续关注,另外请点赞、收藏 ,你们的关注是作者更新下去的动力!~~
🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉完结🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉

相关推荐
我们的五年13 分钟前
【Linux系统】进程间通信-System V消息队列
linux·运维·服务器·c++
陌言不会python19 分钟前
谷粒微服务高级篇学习笔记整理---thymeleaf
笔记·学习·微服务
mycm03041 小时前
投稿央级媒体三大注意
经验分享·媒体
Y1nhl2 小时前
Pyspark学习一:概述
数据库·人工智能·深度学习·学习·spark·pyspark·大数据技术
能来帮帮蒟蒻吗2 小时前
Go语言学习(15)结构体标签与反射机制
开发语言·笔记·学习·golang
维度攻城狮4 小时前
实现在Unity3D中仿真汽车,而且还能使用ros2控制
python·unity·docker·汽车·ros2·rviz2
FL16238631294 小时前
汽车损伤分割数据集labelme格式4000张6类别
汽车
Aphelios3805 小时前
Java全栈面试宝典:线程机制与Spring IOC容器深度解析
java·开发语言·jvm·学习·rbac
日暮南城故里6 小时前
Java学习------源码解析之StringBuilder
java·开发语言·学习·源码
字节程序员7 小时前
实操自动生成接口自动化测试用例
自动化·测试用例