第4章:等效电路模型(ECM)与参数辨识
各位同学,欢迎来到第四章。这一章的内容,我个人认为是整个BMS算法里最「落地」的部分。你想想看,电池内部那些复杂的电化学反应,我们没法直接测量,怎么办?那就得用模型去近似它。等效电路模型(ECM)就是干这个的。
说白了,ECM就是用电阻、电容这些我们熟悉的电子元件,搭一个电路,让它的外特性跟真实电池尽量一致。我当年刚入行时,总觉得模型越复杂越牛,结果在实际项目中吃过不少亏——模型参数太多,辨识不稳定,反而还不如一阶RC模型好用。嗯,这里要记住一个原则:够用就好,别盲目追求高阶。
核心知识点速览:
- 一阶/二阶RC模型的结构与数学表达
- 开路电压(OCV)的标定方法与曲线拟合
- 混合脉冲功率特性(HPPC)测试流程
- 基于递推最小二乘(RLS)的在线参数辨识
4.1 一阶RC模型与二阶RC模型
先说说最简单的——一阶RC模型。它由一个欧姆内阻R0和一个RC并联网络串联组成。R0代表电池的瞬时压降,RC网络则模拟极化效应。数学表达式是这样的:
U(t) = OCV(SOC) - I(t)*R0 - U1(t)
其中 U1(t) 满足:
dU1/dt = -U1/(R1*C1) + I/C1
二阶RC模型呢,就是在上面再加一组RC并联网络。为什么要加?因为电池的极化效应其实分两种:电化学极化和浓差极化。前者反应快,后者反应慢。两组RC网络正好分别模拟这两种过程。
我的经验: 对于磷酸铁锂电池,一阶RC模型往往就够了。三元锂电池的话,二阶RC模型精度会更好。我曾经在一个储能项目里试过三阶RC模型,结果参数辨识老是发散,最后老老实实换回二阶——有时候少即是多。
4.2 开路电压(OCV)标定
OCV标定是参数辨识的基础。你想想看,如果OCV-SOC曲线都不准,后面辨识出来的R0、R1全是错的。我见过不少新手直接拿厂家给的OCV曲线用,结果误差大得离谱——每个电池都有个体差异,必须自己标。
标准的标定方法是小电流充放电法:
- 以0.05C恒流放电,每放出10% SOC静置1小时
- 记录静置结束时的端电压作为该SOC点的OCV
- 充电方向同样做一遍,取充放电OCV的平均值
- 用多项式或分段线性函数拟合OCV-SOC曲线
注意: 静置时间一定要够!我曾经为了赶进度,把静置时间从1小时缩短到20分钟,结果OCV曲线波动很大,后续的SOH估计直接偏了5%以上。锂离子电池的极化恢复需要时间,别省这一步。
4.3 混合脉冲功率特性(HPPC)测试
HPPC测试是获取动态数据的标准方法。它的核心思想是:给电池施加一系列充放电脉冲,观察电压响应,从中提取模型参数。
典型的HPPC测试流程:
| 步骤 | 操作 | 持续时间 | 目的 |
|---|---|---|---|
| 1 | 恒流放电至目标SOC | 视容量而定 | 调整SOC工作点 |
| 2 | 静置 | 1小时 | 恢复至平衡状态 |
| 3 | 1C放电脉冲 | 10秒 | 获取放电内阻 |
| 4 | 静置 | 40秒 | 观察极化恢复 |
| 5 | 0.75C充电脉冲 | 10秒 | 获取充电内阻 |
| 6 | 静置 | 40秒 | 观察极化恢复 |
每个SOC点重复上述流程。通常从100% SOC开始,每降10%做一次,直到10% SOC。
4.4 参数辨识:递推最小二乘(RLS)
好了,数据有了,模型结构定了,接下来就是怎么把参数算出来。离线辨识可以用最小二乘法,但在线应用必须用递推形式——RLS。
RLS的核心思想是:每来一个新数据点,就更新一次参数估计,不需要保存所有历史数据。这对于嵌入式系统来说太重要了,内存有限嘛。
以一阶RC模型为例,RLS的递推公式如下:
初始化:
θ(0) = [0, 0, 0]^T
P(0) = δI (δ取较大值,如1000)
每一步:
1. 计算增益矩阵 K(k) = P(k-1)*φ(k) / [λ + φ(k)^T * P(k-1) * φ(k)]
2. 更新参数 θ(k) = θ(k-1) + K(k) * [y(k) - φ(k)^T * θ(k-1)]
3. 更新协方差矩阵 P(k) = [I - K(k)*φ(k)^T] * P(k-1) / λ
其中:
φ(k) = [U(k-1), I(k), I(k-1)]^T (回归向量)
y(k) = U(k) - OCV(k) (输出量)
λ 为遗忘因子,通常取0.98~0.995
关键点: 遗忘因子λ决定了算法对历史数据的「记忆长度」。λ越接近1,算法越稳定但跟踪速度慢;λ越小,跟踪越快但容易受噪声干扰。我一般取0.99作为初始值,然后根据实际效果微调。
辨识出来的参数怎么用?R0直接反映电池的健康状态——内阻增大意味着老化。R1和C1的时间常数τ=R1*C1,可以反映电池的极化特性变化。把这些参数跟SOH关联起来,就是下一章的内容了。
避坑指南: 我曾经在一个项目中,RLS辨识出来的R0老是跳变,查了半天发现是电流传感器的零点漂移导致的。后来加了高通滤波器预处理电流信号,问题就解决了。记住:数据质量决定模型上限,预处理比算法本身更重要。
最后说一句,参数辨识不是一劳永逸的事。电池会老化,温度会变化,参数也会漂移。所以实际系统中,RLS通常是持续运行的,每隔一段时间就重新辨识一次。嗯,这才是工程落地的做法。
公众号:蓝海资料掘金营,微信deep3321