2、测试环境搭建:硬件在环(HIL)测试平台、软件在环(SIL)测试平台、数据采集系统

做电池算法验证这么多年,我最大的体会是:算法写得再好,没有靠谱的测试环境,一切都是纸上谈兵。你想想看,一个SOC估算模型在MATLAB里跑得漂漂亮亮,一上真电池就翻车,这种事我见过太多次了。

所以这一章,咱们就聊聊怎么搭测试环境。说白了,就是给算法找个「练兵场」。我个人习惯把测试环境分成三个层次:纯软件模拟、半实物仿真、真实硬件在环。下面一个一个说。

测试环境搭建三层架构 软件在环(SIL)测试平台 纯软件环境 · MATLAB/Simulink · 快速原型验证 · 无硬件依赖 硬件在环(HIL)测试平台 实时仿真器 · 真实BMS硬件 · 故障注入 · 极端工况模拟 数据采集系统 高精度采样 · CAN/以太网记录 · 同步时间戳 · 离线回放 成本低 → 高 真实度低 → 高

2.1 软件在环(SIL)测试平台

SIL,说白了就是「全虚拟」。算法跑在PC上,电池模型也是虚拟的。我刚开始做BMS算法时,觉得SIL没啥用,直接上硬件多痛快?结果有一次,一个SOC算法在硬件上反复崩溃,查了三天才发现是定点数溢出。从那以后,我再也不敢跳过SIL了。

SIL的核心价值:在零硬件成本下,快速验证算法逻辑的正确性。尤其适合算法开发早期,一天能跑几百个工况循环。

SIL平台的关键组件:

  • 电池模型:等效电路模型(ECM)或电化学模型。我个人习惯用二阶RC模型,精度够用,计算量也不大。
  • 工况输入:UDDS、WLTC、自定义电流曲线。记得要包含各种极端情况,比如急加速、急减速。
  • 算法模块:待验证的SOC/SOH/SOP算法,直接嵌入Simulink模型。
  • 结果对比:算法输出 vs 模型真值,计算误差指标(RMSE、MAE)。

一个典型的SIL测试流程:

1. 在Simulink中搭建电池模型(二阶RC + 开路电压表)
2. 将待测算法封装为S-Function或MATLAB Function
3. 设置工况输入(比如一段30分钟的WLTC循环)
4. 运行仿真,记录SOC估计值和真实值
5. 后处理分析:画误差曲线,计算最大误差和均方根误差
6. 如果误差超标,返回修改算法参数,重新跑

我的小技巧:SIL测试时,别忘了加「传感器噪声」模型。真实ADC采样是有噪声的,不加噪声的SIL测试太理想化,容易给你虚假的信心。

2.2 硬件在环(HIL)测试平台

SIL跑通了,就该上HIL了。HIL和SIL最大的区别是什么?HIL用的是真实的BMS硬件,但电池还是虚拟的。你想想看,这样既能测试硬件的实时性、通信稳定性,又能随意模拟各种电池故障,多爽?

我在一个量产项目中遇到过这么个事:SIL测试时SOC算法精度0.5%,大家都很满意。结果一上HIL,发现CAN通信有2ms的抖动,导致SOC估算偶尔跳变。嗯,这种问题在SIL里根本发现不了。

HIL平台的典型架构:

组件 作用 推荐选型
实时仿真器 运行电池模型,模拟电压/电流/温度信号 dSPACE SCALEXIO、NI PXI、Speedgoat
信号调理板 将仿真信号转换为真实传感器信号(电压、电流、温度) 定制化信号调理模块
故障注入单元 模拟传感器短路、断路、反接等故障 Pickering、NI故障注入模块
真实BMS硬件 待测的BMS控制器(含MCU、AFE、隔离通信等) 客户提供的BMS样件
上位机软件 测试管理、数据记录、自动化执行 dSPACE ControlDesk、NI VeriStand

⚠️ 重要提醒:HIL测试时,一定要做「时序对齐」。我曾经遇到过仿真器输出的电压信号和BMS采样的电压信号有5ms的相位差,导致SOC估算结果完全失真。解决办法是:在仿真器和BMS之间使用同步时钟信号(比如PPS)。

HIL测试的核心场景:

  1. 极端工况验证:模拟-40℃低温、60℃高温、大倍率充放电(5C以上)
  2. 故障注入测试:单节电池电压传感器失效、温度传感器开路、电流传感器漂移
  3. 通信压力测试:CAN总线满载、报文丢失、错误帧注入
  4. 边界条件测试:SOC接近0%或100%时的算法稳定性、SOP限功率的响应速度

2.3 数据采集系统

测试环境搭好了,算法跑起来了,然后呢?没有数据,一切都是白搭。数据采集系统就是测试环境的「眼睛」和「耳朵」。我个人习惯把数据采集分成三个维度:高精度参考数据、BMS内部数据、环境数据。

数据采集系统的关键指标:

  • 采样率:电压/电流建议至少100Hz,温度可以慢一些(1Hz就够了)
  • 精度:参考测量设备精度要高于BMS一个数量级(比如BMS是±10mV,参考设备至少±1mV)
  • 同步性:所有通道的时间戳必须统一,误差不超过1ms
  • 存储深度:至少能连续记录24小时以上的数据

我的血泪教训:曾经有一次做循环寿命测试,跑了三个月,结果发现数据采集系统的时钟漂移了30秒。所有数据的时间戳都对不上了,三个月的测试白做了。从那以后,我每次测试前都会用GPS时钟同步所有设备。

推荐的数据采集方案:

设备类型 用途 精度要求 典型产品
高精度万用表 测量单节电池电压(参考值) ±0.1mV Keysight 3458A
电流传感器 测量总电流(参考值) ±0.05% LEM IT系列
数据记录仪 多通道同步采集 16位以上ADC HBM Genesis、DEWETRON
CAN记录仪 记录BMS内部CAN报文 时间戳精度1ms Vector VN1630、Kvaser

数据采集的典型流程:

1. 测试前:同步所有设备时钟(GPS/PTP/NTP)
2. 测试中:同时记录参考数据和BMS数据
   - 参考数据:高精度电压、电流、温度
   - BMS数据:SOC估算值、SOH估算值、内部状态
3. 测试后:数据对齐(按时间戳插值对齐)
4. 误差分析:计算BMS估算值与参考值的偏差
5. 生成报告:误差曲线、统计指标、通过/失败判定

一个小建议:数据采集时,别忘了记录「测试日志」。什么时间做了什么操作、环境温度是多少、有没有异常情况。这些文字记录在后期分析时往往比数据本身还重要。

好了,测试环境搭建就聊这么多。SIL、HIL、数据采集系统,这三者缺一不可。SIL帮你快速迭代算法逻辑,HIL帮你验证硬件和实时性,数据采集系统帮你拿到真实可靠的测试结果。三者配合好了,算法的质量才有保障。

公众号:蓝海资料掘金营,微信deep3321