3、电池建模(一):建立一阶RC等效电路模型、推导离散化状态空间方程、参数辨识方法概述(最小二乘法)
好,咱们正式开始聊电池建模。
说实话,做SOC估计这么多年,我最大的体会就是:模型不准,后面全白搭。你卡尔曼滤波写得再漂亮,增益算得再花哨,模型本身是错的,那估计出来的SOC就是自欺欺人。所以这一章,咱们把地基打牢。
3.1 为什么选一阶RC模型?
电池的等效电路模型有很多种——简单的有内阻模型(Rint),复杂的有二阶RC甚至三阶RC。我个人习惯是:从一阶RC开始,够用就行。
内阻模型太粗糙了,它把电池当成一个纯电阻,完全忽略了极化效应。你想想看,实际电池在充放电时,电压会有一个缓慢的“爬坡”或“下坠”过程,这就是极化电容在起作用。内阻模型根本抓不住这个特性。
二阶RC模型精度更高,但参数多了,辨识起来也更麻烦。而且在实际项目中,我发现一阶RC模型在大多数工况下已经能满足2%以内的SOC估计精度。嗯,这里要注意:模型不是越复杂越好,而是越适合越好。
核心结论:一阶RC模型在计算量、精度、参数可辨识性之间取得了最佳平衡。这是工业界最常用的折中方案。
3.2 一阶RC等效电路模型
咱们直接看图说话。一阶RC模型由以下几个部分组成:
- 开路电压OCV:一个受SOC控制的电压源,记作 \( U_{oc}(SOC) \)
- 欧姆内阻 \( R_0 \):代表电池的瞬时电阻,电流突变时电压会立刻跳变
- 极化电阻 \( R_1 \) 和极化电容 \( C_1 \):并联构成一个RC环节,模拟电池的极化效应
说白了,这个模型把电池的动态特性分成了两部分:
- 瞬时响应:电流变化时,欧姆内阻 \( R_0 \) 立刻引起电压跳变
- 渐变响应:RC环节让电压慢慢变化,模拟电化学极化过程
我在项目中遇到过一个问题:有些电池在低温下极化效应特别明显,一阶RC模型会有点吃力。但常温下,它真的够用了。
3.3 推导离散化状态空间方程
好,接下来是硬核部分。咱们要把电路模型变成数学方程,这样才能塞进卡尔曼滤波器里。
3.3.1 连续时间模型
根据基尔霍夫电压定律,端电压 \( U_t \) 可以写成:
U_t = U_oc(SOC) - i * R_0 - U_1
其中 \( U_1 \) 是极化电容两端的电压。RC环节的动态方程是:
C_1 * dU_1/dt = i - U_1 / R_1
整理一下:
dU_1/dt = -U_1/(R_1 * C_1) + i / C_1
同时,SOC的变化率跟电流直接相关:
d(SOC)/dt = -i / Q_n
这里 \( Q_n \) 是电池的额定容量(单位是Ah,注意单位换算)。
3.3.2 离散化处理
咱们做嵌入式系统,代码是跑在离散时间上的。所以要把连续方程变成离散形式。我习惯用一阶前向欧拉法,简单且够用。
设采样周期为 \( \Delta t \),离散时间索引为 \( k \):
SOC(k+1) = SOC(k) - (Δt / Q_n) * i(k)
U_1(k+1) = (1 - Δt/(R_1 * C_1)) * U_1(k) + (Δt / C_1) * i(k)
写成矩阵形式,就是标准的状态空间方程:
状态方程:
x(k+1) = A * x(k) + B * i(k)
其中:
x(k) = [SOC(k); U_1(k)]
A = [1, 0; 0, 1 - Δt/(R_1*C_1)]
B = [-Δt/Q_n; Δt/C_1]
观测方程:
U_t(k) = U_oc(SOC(k)) - i(k) * R_0 - U_1(k)
小技巧:在实际代码中,我通常把 \( U_{oc}(SOC) \) 做成一个查表函数。因为OCV-SOC曲线是非线性的,查表比拟合公式更灵活。记得用线性插值,别用最近邻,否则卡尔曼滤波容易震荡。
3.4 参数辨识方法概述——最小二乘法
模型建好了,参数从哪来?\( R_0 \)、\( R_1 \)、\( C_1 \) 这些值不能拍脑袋定。我们需要通过实验数据来辨识它们。
3.4.1 最小二乘法的核心思想
说白了,最小二乘法就是:找一组参数,让模型预测的电压跟实际测得的电压之间的误差平方和最小。
数学上,我们定义误差函数:
J(θ) = Σ (U_t_measured(k) - U_t_predicted(k, θ))²
然后对参数 \( \theta = [R_0, R_1, C_1] \) 求偏导,令导数为零,解出最优参数。
3.4.2 常用的实验方法
我做过很多次参数辨识,最常用的方法是混合脉冲功率特性测试(HPPC)。流程大致如下:
- 把电池充到满电,静置1小时
- 以1C电流放电10秒,记录电压响应
- 静置40秒,让极化电压恢复
- 以0.75C电流充电10秒,再静置
- 每放10%的SOC,重复一次上述步骤
从电压响应曲线中,我们可以提取出:
- 欧姆内阻 \( R_0 \):电流突变瞬间的电压跳变值除以电流
- 极化参数 \( R_1 \)、\( C_1 \):从静置阶段的电压恢复曲线拟合得到
避坑指南:我曾经在HPPC测试中犯过一个低级错误——采样频率设得太低。电压跳变发生在毫秒级别,如果采样率只有1Hz,根本抓不住欧姆内阻的跳变。建议采样率至少10Hz以上,最好100Hz。
3.4.3 最小二乘法的两种形式
| 类型 | 特点 | 适用场景 |
|---|---|---|
| 批量最小二乘法 | 一次性处理所有数据,精度高 | 离线标定、实验室环境 |
| 递推最小二乘法 | 在线实时更新参数,计算量小 | 车载在线辨识、参数自适应 |
我个人建议:先用批量最小二乘法做离线标定,把基准参数定下来。如果后续要做自适应SOC估计,再考虑递推最小二乘法在线微调。
3.5 本章小结
这一章咱们干了三件事:
- 建立了一阶RC等效电路模型,理解了它的物理含义
- 推导了离散化状态空间方程,为卡尔曼滤波铺好了路
- 概述了最小二乘法参数辨识的基本思路和实验方法
下一章,咱们会手把手写代码,把这一章的数学模型变成真正的Python仿真程序。到时候你会看到,模型建得好,仿真跑起来有多顺畅。
记住一句话:模型是SOC估计的灵魂。参数不准,算法再牛也白搭。花时间把模型建好,后面会省心很多。