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环节,模拟电池的极化效应

说白了,这个模型把电池的动态特性分成了两部分:

  1. 瞬时响应:电流变化时,欧姆内阻 \( R_0 \) 立刻引起电压跳变
  2. 渐变响应: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. 把电池充到满电,静置1小时
  2. 以1C电流放电10秒,记录电压响应
  3. 静置40秒,让极化电压恢复
  4. 以0.75C电流充电10秒,再静置
  5. 每放10%的SOC,重复一次上述步骤

从电压响应曲线中,我们可以提取出:

  • 欧姆内阻 \( R_0 \):电流突变瞬间的电压跳变值除以电流
  • 极化参数 \( R_1 \)、\( C_1 \):从静置阶段的电压恢复曲线拟合得到

避坑指南:我曾经在HPPC测试中犯过一个低级错误——采样频率设得太低。电压跳变发生在毫秒级别,如果采样率只有1Hz,根本抓不住欧姆内阻的跳变。建议采样率至少10Hz以上,最好100Hz。

3.4.3 最小二乘法的两种形式

类型 特点 适用场景
批量最小二乘法 一次性处理所有数据,精度高 离线标定、实验室环境
递推最小二乘法 在线实时更新参数,计算量小 车载在线辨识、参数自适应

我个人建议:先用批量最小二乘法做离线标定,把基准参数定下来。如果后续要做自适应SOC估计,再考虑递推最小二乘法在线微调。

3.5 本章小结

这一章咱们干了三件事:

  • 建立了一阶RC等效电路模型,理解了它的物理含义
  • 推导了离散化状态空间方程,为卡尔曼滤波铺好了路
  • 概述了最小二乘法参数辨识的基本思路和实验方法

下一章,咱们会手把手写代码,把这一章的数学模型变成真正的Python仿真程序。到时候你会看到,模型建得好,仿真跑起来有多顺畅。

记住一句话:模型是SOC估计的灵魂。参数不准,算法再牛也白搭。花时间把模型建好,后面会省心很多。