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

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


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

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


一、服务功能概述
0x31服务(RoutineControl)用于执行ECU内部预定义的诊断例程(如内存校验、硬件自检等),支持启动(0x01)、停止(0x02)、查询(0x03)三种操作模式。根据ISO 14229-1:2023 §7.5.8要求,完整18项测试用例如下:


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

用例ID测试场景验证要点参考条款预期结果
TC3101启动例程(0x31 0x01 + RoutineID)指定有效例程ID(如0x0201)§7.5.8.2.1返回0x71 + 执行结果
TC3102停止运行中的例程(0x31 0x02)在例程执行期间发送停止指令§7.5.8.2.2返回0x71 + 终止状态码
TC3103查询例程状态(0x31 0x03)查询正在执行的例程进度§7.5.8.2.3返回0x71 + 进度百分比
TC3104无效子功能检测发送非法子功能(如0x31 0x00)§7.5.8.3.1返回NRC=0x12(子功能不支持)
TC3105默认会话权限验证在默认会话下启动例程§7.5.8.3.2返回NRC=0x7E(服务不支持)
TC3106安全访问未授权操作未解锁安全权限时执行高权限例程§7.5.8.3.3返回NRC=0x33(安全拒绝)
TC3107无效例程ID处理指定未定义例程ID(如0xFFFF)§7.5.8.3.4返回NRC=0x31(请求越界)
TC3108参数格式错误附加非对齐参数(如0x31 0x01 0x01)§7.5.8.3.5返回NRC=0x24(顺序错误)
TC3109报文长度错误处理参数长度不足(如0x31 0x01)§7.5.8.3.6返回NRC=0x13(长度错误)
TC3110例程执行超时监控监测例程最大执行时间(如3000ms)§7.5.8.4.1超时后返回0x71 + 超时状态码
TC3111并发例程冲突检测同时启动两个互斥例程§7.5.8.3.7返回NRC=0x22(条件不满足)
TC3112断电恢复验证例程执行中强制断电后恢复§7.5.8.4.2例程状态重置,需重新启动
TC3113功能寻址广播控制通过功能寻址(0x7DF)启动例程§7.5.8.5仅目标ECU执行例程
TC3114动态参数验证输入超出范围的参数(如转速值0xFFFF)§7.5.8.3.8返回NRC=0x31(请求越界)
TC3115生产模式限制验证产线下禁止执行特定例程(如ECU擦除)OEM规范返回NRC=0x22(条件不满足)
TC3116大数据块传输验证附加参数长度超过255字节§7.5.8.3.9返回NRC=0x14(报文过长)
TC3117跨会话状态维持验证扩展会话启动例程后切换至编程会话§7.5.8.6例程继续执行不受影响
TC3118停止未运行例程处理对未启动的例程发送停止指令§7.5.8.3.10返回NRC=0x24(顺序错误)

三、关键测试场景详解

  1. TC3110 例程执行超时监控
  • 测试步骤:
    1. 启动设计时长为5秒的例程(如0x0201)
    2. 监测响应时间戳
    3. 超时后发送0x31 0x03查询状态
  • 验证要点:
    • 例程必须在OEM定义的最大时间内完成(误差±10%)
    • 超时状态码应符合ISO 15031-6定义(如0x78)
  1. TC3114 动态参数验证
  • 测试流程:
    1. 发送带非法参数的请求:31 01 0201 01 FF FF(转速超限)
    2. 检查ECU响应
  • 校验规则:
    • ECU应拒绝执行并返回NRC=0x31
    • 错误日志需记录事件码0xA011(参数越界)

四、测试执行建议

  1. 工具链配置
// CAPL脚本示例:启动例程并监控超时 
variables {
  msTimer tTimeout;
  word routineID = 0x0201;  // 假设为内存校验例程 
}
 
on diagResponse 0x31 {
  if (this.req.subfunc == 0x01 && this.resp == 0x71) {
    setTimer(tTimeout, 3000);  // 设置3秒超时监控 
  }
}
 
on timer tTimeout {
  diagRequest 0x31 0x03 routineID;  // 超时后查询状态 
}
  1. NRC覆盖矩阵
NRC关联用例触发条件
0x12TC3104无效子功能参数
0x13TC3109报文长度错误
0x14TC3116大数据块超限
0x22TC3115生产模式限制
0x24TC3108/TC3118参数顺序错误/无效停止请求
0x31TC3107/TC3114无效例程ID/参数越界
0x33TC3106安全访问未授权
0x7ETC3105会话模式不匹配

五、特殊测试场景

  1. 多例程优先级控制
Tester ECU 0x31 0x01 0x0201 (启动高优先级例程) 0x31 0x01 0x0202 (启动低优先级例程) 0x71 0x0201 00 (成功) NRC=0x22 (低优先级被拒绝) Tester ECU
  1. 生产模式行为验证
测试项标准要求验证方法
关键例程白名单仅允许刷写相关例程尝试启动非白名单例程
安全层级要求Level 3以上权限不同安全等级尝试执行

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

系列目标

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


http://www.kler.cn/a/549879.html

相关文章:

  • 【云安全】云原生-K8S(三) 安装 Dashboard 面板
  • Endnote使用笔记——持续更新
  • 如何在 Docker 环境中将宿主机的文件复制到容器目录
  • (5/100)每日小游戏平台系列
  • Session的学习
  • 图像分割与 Watershed 算法:原理、Python 实现与.NET 实现
  • 关于go-context包
  • C#控制台大小Console.SetWindowSize函数失效解决
  • elementui: el-dialog的header设置样式不生效
  • 【C++】使用gdb在命令行下调试C++程序(二)
  • Matlab自学笔记四十七:如何把日期时间型数据作为横坐标进行绘图
  • 数据结构——顺序表与链表
  • 【第1章:深度学习概览——1.3 深度学习的核心组件与概念解析之神经网络基础】
  • 麒麟v10 server版安装ollama跑Deepseek
  • React的内部机制详解
  • 【Flink快速入门-5.流处理之多流转换算子】
  • 【Python的FastAPI 与 Uvicorn】快速启动你StableDiffusion模型Web 应用
  • 相机功耗问题常用的拆解手法
  • 使用 Python 爬虫获取微店商品详情 API 接口数据
  • uniapp中实现国际化