1. 课程导入与工程全景
现代汽车电子电气架构中,一辆中高端车型可能包含 70~120 个电子控制单元(ECU),通过 CAN、CAN FD、LIN、FlexRay 以及车载以太网(100BASE-T1 / 1000BASE-T1)等多条总线互联。整车功能越来越多地由跨 ECU 的协同逻辑实现,例如自适应巡航需要动力、制动、转向与网关协同,诊断与刷写又依赖 UDS(ISO 14229)在 CAN 或 DoIP 上的完整会话管理。这意味着:单靠实车验证已经无法覆盖功能组合、故障注入与边界工况,而 HIL(Hardware-in-the-Loop,硬件在环)与诊断测试正是为了解决这一问题而存在的工程手段。
一、HIL 与诊断测试在整车开发中的定位
HIL 的核心思想是:把真实的被测对象(ECU 或 ECU 网络)接入一套实时仿真系统,由仿真系统替代部分真实车辆环境——包括被控对象模型(如发动机、电机、电池、制动液压模型)、传感器信号模拟、执行器负载模拟以及其余缺失的 ECU 节点。被测 ECU 收到的电气信号、总线报文与真实装车状态高度一致,因此可以在台架上完成原本只能在整车上做的功能验证。
诊断测试则聚焦于 ECU 的诊断服务行为:UDS 的 0x10 会话控制、0x27 安全访问、0x22/0x2E 读写数据、0x31 例程控制、0x19 读取 DTC、0x14 清除 DTC,以及基于 CAN 的 0x3E 保持连接、基于 DoIP 的车辆识别与刷写流程。诊断测试既可以在 HIL 台架上做,也可以在纯总线仿真环境(如 CANoe 无真实 ECU)中做,但 HIL 的价值在于把诊断行为与真实 ECU 的软件状态、故障存储、刷写时序绑定在一起验证。
二、核心价值:为什么必须做 HIL 与诊断测试
从工程实践看,HIL 与诊断测试的价值集中在四个方面:
- 覆盖实车难以复现的工况:例如 -40℃ 冷启动、电池 SOC 低于 5%、CAN 总线单线断路、报文丢失 200ms、电压跌落至 6V 等。这些在实车上要么危险,要么不可控,而在 HIL 中可以通过故障注入单元(FIU)和模型参数精确复现。
- 提前暴露跨 ECU 集成问题:网关路由、信号超时、网络管理(NM)睡眠唤醒、诊断会话与功能执行的冲突,往往在多个 ECU 同时接入时才出现。HIL 可以在装车前把整条网络搭起来。
- 支撑自动化回归:一套 HIL 台架可以 7×24 小时运行测试用例,每次软件版本更新后自动跑完数百条用例,显著降低人工实车测试成本。
- 满足法规与主机厂规范:功能安全(ISO 26262)、网络安全(ISO/SAE 21434)以及各主机厂的诊断规范,都要求提供可追溯的测试证据,HIL 与诊断测试报告是重要交付物。
三、典型工作流程
一个完整的 HIL 与诊断测试项目,通常按以下链路推进:需求与规范输入 → 测试计划与用例设计 → 台架搭建与模型配置 → 被测 ECU 接入与总线配置 → 测试执行与故障注入 → 结果记录与问题跟踪 → 回归验证。下面这张图展示了从输入到输出的工程全景,以及各环节之间的数据与信号流向。
四、一个可参考的测试示例
为了把上述流程落到具体操作,下面给出一个典型的诊断测试片段:验证某 ECU 在收到 0x27 安全访问请求后,错误密钥连续输入 3 次是否触发延时锁定。
测试对象:BCM(车身控制器),CAN FD 通道 1,波特率 500k/2M
测试用例:UDS_SecurityAccess_WrongKey_Lockout
前置条件:ECU 处于默认会话(0x01),电压 13.5V
步骤:
1. 发送 10 03 → 进入扩展会话,期望响应 50 03
2. 发送 27 01 → 请求种子,期望响应 67 01 + Seed(4字节)
3. 发送 27 02 + 错误Key → 期望响应 7F 27 35(invalidKey)
4. 重复步骤 2~3 共 3 次
5. 第 4 次发送 27 01 → 期望响应 7F 27 36(exceedNumberOfAttempts)
6. 读取 0x19 02 FF → 检查是否记录 DTC(示例:0xC12787)
判定依据:
- 第 3 次错误后,ECU 应进入安全延时(示例:10s 内拒绝安全访问)
- DTC 状态位 testFailed 应置 1
- 延时结束后再次请求种子应恢复正常
这个用例体现了 HIL 与诊断测试的典型结合方式:诊断服务调用是激励,ECU 内部状态与 DTC 是响应,总线报文与时间戳是证据。在 HIL 台架上,还可以同步注入总线断路或电压跌落,观察诊断行为是否仍然符合规范。
五、学习路径建议
本课程后续内容将按“基础 → 台架 → 协议 → 自动化 → 实战”的顺序展开。建议的学习路径是:
- 车载网络基础:CAN/CAN FD 帧结构、仲裁、错误处理;LIN 主从调度;车载以太网与 SOME/IP 基本概念。
- HIL 台架构成:实时仿真机、I/O 板卡、故障注入单元、负载模拟、总线接口卡(如 VN 系列)的作用与连接方式。
- 诊断协议:UDS 服务分类、会话与安全状态机、DTC 状态位、DoIP 与刷写流程。
- 测试工具链:CANoe/CANalyzer、vTESTstudio、CAPL 脚本、诊断描述文件 ODX/CDD 的使用。
- 自动化与工程实践:用例设计、回归策略、报告生成、问题定位与根因分析。
需要强调的是,HIL 与诊断测试不是彼此独立的两个方向,而是同一套验证体系的两条主线:HIL 提供真实电气与总线环境,诊断测试提供对 ECU 内部状态与规范符合性的检查手段。掌握这两条主线,才能在整车电子电气开发中真正承担起集成验证与问题定位的工作。