1. 课程导入
新能源汽车的“三电”通常指电池管理系统(BMS)、电机控制器(MCU)和整车控制器(VCU)。三者通过CAN/CAN FD、LIN或以太网交互,共同决定车辆的动力输出、能量分配与安全策略。若仅对单个控制器做台架测试,很难复现真实整车中“BMS限功率—VCU扭矩仲裁—MCU降扭”这类跨控制器耦合行为。因此,三电控制器联合HIL(Hardware-in-the-Loop)成为电控系统验证的关键手段:用实时仿真机模拟被控对象与剩余节点,把真实控制器接入闭环,再叠加故障注入,验证系统在异常工况下的功能安全与容错能力。
一、核心概念:联合HIL与故障注入
HIL的本质是“以仿真替代实车”。实时仿真机运行电池模型、电机模型、车辆动力学模型和驾驶员模型,通过IO板卡与真实控制器交换模拟量、数字量和总线信号。联合HIL与单控制器HIL的区别在于:多个真实控制器同时接入同一仿真环境,共享同一套车辆状态与时间基准。
故障注入则是在信号链或总线层人为制造异常,观察系统响应。常见故障类型包括:
- 传感器故障:开路、短路到地、短路到电源、信号漂移、卡滞。
- 总线故障:报文丢失、周期抖动、数据篡改、CRC错误、总线关闭。
- 执行器故障:MCU三相开路、IGBT短路、继电器粘连。
- 电源故障:欠压、过压、瞬态跌落、反接。
- 逻辑故障:状态机跳转错误、扭矩仲裁冲突、故障码误报。
故障注入的关键不是“注入”本身,而是可重复、可观测、可判定:同一用例每次运行结果一致,故障时刻与持续时间精确可控,系统响应能被总线记录和自动判定。
二、整体框架:从台架到闭环
联合HIL台架的典型结构可分为四层:模型层、实时层、IO与总线层、被测控制器层。模型层包含电池等效电路模型、永磁同步电机FOC模型、车辆纵向动力学模型;实时层由实时仿真机承载,保证步长稳定在100μs~1ms;IO与总线层完成信号调理、故障注入板卡和CAN网关;被测控制器层则是真实的BMS、VCU和MCU。
图中可见,联合HIL不是简单的“三台控制器接在一起”,而是模型、实时、故障注入、被测件四层协同。故障注入层可作用于信号链、总线或电源,最终由闭环判定模块给出通过/失败结论。
三、方法流程:一个完整的联合测试用例
以“BMS上报允许放电功率骤降,验证VCU与MCU的降扭响应”为例,流程如下:
- 定义场景:车速60km/h,驾驶员请求扭矩120N·m,SOC 30%。
- 建立基线:不注入故障,运行30s,记录VCU扭矩请求、MCU实际扭矩、BMS允许功率。
- 设计故障:在t=10s时,将BMS发出的允许放电功率从80kW篡改为20kW,持续5s。
- 执行注入:通过CAN故障注入工具修改报文数据场,保持周期与CRC正确。
- 采集响应:记录VCU是否在100ms内降低扭矩请求,MCU是否跟随降扭,是否触发故障码。
- 判定与复盘:若实际扭矩超过允许功率对应限值,则判定失败,定位仲裁逻辑或滤波参数问题。
# 故障注入配置示例(伪代码)
fault:
type: can_data_modify
channel: CAN1
msg_id: 0x1A0 # BMS 允许功率报文
signal: AllowDischargePower
start_time: 10.0s
duration: 5.0s
value: 20kW
crc_mode: auto_recalc
repeat: 1
# 判定条件
pass_if:
- VCU_TorqueRequest <= 45N·m within 100ms
- MCU_ActualTorque <= 50N·m within 150ms
- DTC_P0A0F == 1
四、行业应用场景与常见误区
联合HIL与故障注入已广泛应用于主机厂和Tier1的V模型右侧验证:功能安全ISO 26262的故障注入测试、OTA升级前的回归测试、三电联调前的虚拟标定、以及售后疑难问题的复现。尤其在冬季低温、电池内阻增大导致功率受限的场景中,联合HIL能快速复现“VCU未及时降扭”的偶发问题。
| 常见误区 | 后果 | 正确做法 |
|---|---|---|
| 只做单控制器HIL,不做联合 | 跨控制器耦合问题漏测 | 三电同时接入,共享车辆模型 |
| 故障注入只改数据不改时序 | 无法复现真实抖动与丢帧 | 同时控制周期、丢帧、CRC |
| 判定只看故障码 | 忽略扭矩响应超调 | 结合总线信号与物理量判定 |
| 用例不可重复 | 问题无法复现与回归 | 固定随机种子与注入时刻 |