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

相关推荐
互联网杂货铺39 分钟前
完美搭建appium自动化环境
自动化测试·软件测试·python·测试工具·职场和发展·appium·测试用例
Chef_Chen2 小时前
从0开始学习R语言--Day18--分类变量关联性检验
学习
键盘敲没电2 小时前
【IOS】GCD学习
学习·ios·objective-c·xcode
小疆智控3 小时前
Modbus转Ethernet IP赋能挤出吹塑机智能监控
汽车·制造
海的诗篇_3 小时前
前端开发面试题总结-JavaScript篇(一)
开发语言·前端·javascript·学习·面试
AgilityBaby3 小时前
UE5 2D角色PaperZD插件动画状态机学习笔记
笔记·学习·ue5
AgilityBaby3 小时前
UE5 创建2D角色帧动画学习笔记
笔记·学习·ue5
武昌库里写JAVA4 小时前
iview Switch Tabs TabPane 使用提示Maximum call stack size exceeded堆栈溢出
java·开发语言·spring boot·学习·课程设计
一弓虽5 小时前
git 学习
git·学习
测试老哥7 小时前
Jmeter如何进行多服务器远程测试?
自动化测试·软件测试·功能测试·测试工具·jmeter·测试用例·性能测试