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

相关推荐
551只玄猫16 小时前
【基于python的金融分析和风险管理 学习笔记】中阶篇 第6章 分析利率和汇率
笔记·python·学习·金融·学习笔记·汇率·利率
三流架构师16 小时前
私域运营资源合集
经验分享
孤独的小丑16 小时前
OpenClaw学习资源汇编
汇编·学习
悠哉悠哉愿意17 小时前
【单片机学习笔记】第十二届国赛经验复盘
笔记·单片机·嵌入式硬件·学习
zxm851317 小时前
UV使用及UV与Anaconda的区别
大数据·学习·机器学习·uv
Shining059617 小时前
AI 编译器系列(五)《拓展 Triton 深度学习编译器——DLCompiler》
人工智能·深度学习·学习·其他·架构·ai编译器·infinitensor
码农的小菜园17 小时前
Java线程池学习笔记
java·笔记·学习
C羊驼17 小时前
C语言学习笔记(十二):动态内存管理
c语言·开发语言·经验分享·笔记·青少年编程
优化控制仿真模型17 小时前
【专八对答案!】2026年3月英语专业八级TEM8真题试卷及答案
经验分享
上海曼博生物医药科技有限公司17 小时前
Biolaminin在神经细胞培养中的应用:LN521与LN111如何支持功能性实现【曼博生物】
经验分享·业界资讯·细胞培养·biolamina·ln521·层粘连蛋白