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

相关推荐
饮长安千年月1 小时前
Linksys WRT54G路由器溢出漏洞分析–运行环境修复
网络·物联网·学习·安全·机器学习
红花与香菇2____1 小时前
【学习笔记】Cadence电子设计全流程(二)原理图库的创建与设计(上)
笔记·嵌入式硬件·学习·pcb设计·cadence·pcb工艺
一天八小时4 小时前
Docker学习进阶
学习·docker·容器
前端没钱4 小时前
前端需要学习 Docker 吗?
前端·学习·docker
郭顺发_4 小时前
NPM环境搭建指南
经验分享
拥有一颗学徒的心4 小时前
鸿蒙第三方库MMKV源码学习笔记
笔记·学习·性能优化·harmonyos
车端域控测试工程师4 小时前
【ISO 14229-1:2023 UDS诊断(ECU复位0x11服务)测试用例CAPL代码全解析⑰】
经验分享·学习·汽车·测试用例·capl
车端域控测试工程师4 小时前
【ISO 14229-1:2023 UDS诊断(ECU复位0x11服务)测试用例CAPL代码全解析⑪】
经验分享·学习·汽车·测试用例·capl
车载诊断技术4 小时前
电子电气架构 --- 电子电器新技术及发展趋势
网络·架构·汽车·电子电器框架·车载充电器(obc)·电子电器新技术及发展趋势
charlie1145141917 小时前
(萌新入门)如何从起步阶段开始学习STM32 —— 0.碎碎念
c语言·stm32·单片机·嵌入式硬件·学习·教程