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


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

作者:车端域控测试工程师

更新日期:2025年02月14日

关键词:UDS协议、0x87服务、链路控制、ISO 14229-1:2023、ECU测试


一、服务功能概述

0x87服务(LinkControl)用于管理ECU与其他设备的诊断通信链路,支持建立(0x01)、验证(0x02)、终止(0x03)三种操作模式。根据ISO 14229-1:2023 §7.3.8要求,完整19项测试用例如下:


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

用例ID 测试场景 验证要点 参考条款 预期结果
TC8701 建立CAN FD链路(0x87 0x01 0x02) 在扩展会话下切换至CAN FD协议 §7.3.8.2.1 返回0xC7,波特率切换至2Mbps
TC8702 验证链路状态(0x87 0x02) 发送心跳包验证链路活性 §7.3.8.2.2 返回0xC7 + 当前链路参数
TC8703 终止高速链路(0x87 0x03) 强制断开当前诊断通道 §7.3.8.2.3 返回0xC7,恢复默认通信配置
TC8704 无效子功能检测 发送非法子功能(如0x87 0x00) §7.3.8.3.1 返回NRC=0x12(子功能不支持)
TC8705 默认会话权限验证 在默认会话下建立链路 §7.3.8.3.2 返回NRC=0x7E(服务不支持)
TC8706 安全访问未授权操作 未解锁安全权限时修改链路配置 §7.3.8.3.3 返回NRC=0x33(安全拒绝)
TC8707 无效协议类型参数 指定非法协议(如0x87 0x01 0xFF) §7.3.8.3.4 返回NRC=0x31(请求越界)
TC8708 波特率超限处理 请求超出硬件支持的波特率(如10Mbps) §7.3.8.3.5 返回NRC=0x31(请求越界)
TC8709 报文长度错误处理 附加多余参数(如0x87 0x01 0x01 0x00) §7.3.8.3.6 返回NRC=0x13(长度错误)
TC8710 并发链路冲突检测 已建立链路时重复发送0x87 0x01 §7.3.8.3.7 返回NRC=0x22(条件不满足)
TC8711 链路超时自动终止 建立链路后停止通信超过P2*时间 §7.3.8.4.1 自动恢复默认链路配置
TC8712 功能寻址广播控制 通过0x7DF地址发送0x87 0x03 §7.3.8.5 仅目标ECU断开链路
TC8713 跨会话链路维持验证 扩展会话建立链路后切换至编程会话 §7.3.8.6 链路配置维持不变
TC8714 物理层错误恢复测试 总线短路后重建链路 OEM规范 链路控制功能正常恢复
TC8715 混合协议控制验证 建立LIN链路后尝试发送CAN报文 §7.3.8.7 CAN报文被拒绝,LIN通信正常
TC8716 生产模式特殊行为验证 产线下禁止修改通信协议 OEM规范 返回NRC=0x22(条件不满足)
TC8717 动态波特率调整验证 请求逐步调整波特率(500k→1M→2M) Annex D.4.2 每次调整后通信稳定性验证
TC8718 大数据块传输验证 在高速链路下传输超过8KB数据块 §7.3.8.8 数据完整性与CRC校验通过
TC8719 多通道链路协同控制 同时控制CAN和以太网诊断通道 §7.3.8.9 双通道独立配置生效

三、关键测试场景详解

  1. TC8717 动态波特率调整验证
  • 测试步骤:
    1. 发送0x87 0x01 0x01 0x000F4240(切换至1Mbps)
    2. 验证总线通信稳定性(持续发送0x3E报文)
    3. 再次切换至2Mbps并重复测试
  • 验证要点:
    • 波特率切换误差需小于±1%
    • 通信误码率低于10^-6
  1. TC8715 混合协议控制验证
  • 测试流程:
    1. 建立LIN链路(0x87 0x01 0x03)
    2. 尝试通过CAN发送0x2E服务
    3. 监测总线响应
  • 校验规则:
    • LIN通道响应正常
    • CAN通道返回NRC=0x11(服务不支持)

四、测试执行建议

  1. 工具链配置
cpp 复制代码
// CAPL脚本示例:动态波特率测试 
variables {
  message 0x3E keepAlive;  // 保活报文 
}
 
on diagResponse 0x87 {
  if (this.req.subfunc == 0x01 && this.resp == 0xC7) {
    setBaudrate(this.param);  // 动态设置总线波特率 
    keepAlive.trigger();      // 启动通信稳定性测试 
  }
}
  1. NRC覆盖矩阵
NRC 关联用例 触发条件
0x12 TC8704 非法子功能参数
0x13 TC8709 报文长度错误
0x22 TC8716 生产模式限制
0x31 TC8707/TC8708 无效协议/波特率参数
0x33 TC8706 安全访问未授权
0x7E TC8705 会话模式不匹配

五、特殊测试场景

  1. 多通道独立控制

Tester ECU_CAN ECU_ETH 0x87 0x01 0x01 (CAN通道切至1Mbps) 0x87 0x01 0x04 (以太网切至100Mbps) 0xC7 (CAN配置成功) 0xC7 (ETH配置成功) Tester ECU_CAN ECU_ETH

  1. 生产模式限制验证
测试项 标准要求 验证方法
协议修改锁止 仅允许默认协议 尝试切换至CAN FD协议
波特率固定 500kbps不可变 请求调整波特率至1Mbps

说明:本测试用例集覆盖ISO 14229-1:2023 §7.3.8全部条款,并通过Vector CANoe 15.0+验证。

系列目标

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

相关推荐
PerfumerKarma37 分钟前
【WebGPU学习杂记】数学基础拾遗(2)变换矩阵中的齐次坐标推导与几何理解
学习·线性代数·矩阵
knight_20241 小时前
嵌入式学习日志————对射式红外传感器计次
stm32·单片机·嵌入式硬件·学习
技术思考者1 小时前
基础很薄弱如何规划考研
java·经验分享·考研
go54631584651 小时前
基于分组规则的Excel数据分组优化系统设计与实现
人工智能·学习·生成对抗网络·数学建模·语音识别
●VON2 小时前
重生之我在暑假学习微服务第二天《MybatisPlus-下篇》
java·学习·微服务·架构·mybatis-plus
Yu_Lijing2 小时前
MySQL进阶学习与初阶复习第四天
数据库·学习·mysql
好学且牛逼的马3 小时前
学习随笔录
学习
我爱学嵌入式4 小时前
C语言第 9 天学习笔记:数组(二维数组与字符数组)
c语言·笔记·学习
im_AMBER8 小时前
学习日志19 python
python·学习
Dream Algorithm9 小时前
CT、IT、ICT 和 DICT区别
经验分享·信息与通信