第2章:电池基础与模型

做BMS这么多年,我越来越觉得一个道理:状态估计算法再花哨,如果电池模型不准,那都是白搭。说白了,模型就是算法的“地基”。这一章,我们就来聊聊这个地基该怎么打。

2.1 电化学原理:电池到底怎么工作的?

先简单回顾一下原理。锂离子电池的核心,就是锂离子在正负极之间来回“搬家”。充电时,锂离子从正极脱出,穿过电解液和隔膜,嵌入负极;放电时,方向相反。这个过程叫“嵌入/脱嵌”,不是化学反应,而是物理迁移。

嗯,这里要注意一个关键点:电池的电压,本质上是由正负极的锂浓度差决定的。浓度差越大,电压越高。所以当电池快没电时,负极的锂都快跑光了,电压自然就掉下来了。

核心公式:开路电压 OCV 与荷电状态 SOC 的关系,是电池建模的基石。OCV-SOC 曲线,我建议每个项目都要实测标定,不要用厂家给的典型值。为什么?因为不同批次、不同温度下,这条曲线会有差异。

2.2 等效电路模型:从简单到实用

电化学模型太复杂,不适合嵌入式实时计算。所以我们用电阻、电容搭一个“等效电路”,来模拟电池的动态行为。我个人最常用的有三种:

2.2.1 Thevenin 模型(一阶RC)

这是最经典的模型。一个电压源(OCV)、一个欧姆内阻 R0、一个 RC 并联网络(极化内阻 R1 和极化电容 C1)。

  • 优点:结构简单,参数少,计算量小。
  • 缺点:对动态工况的模拟精度有限,尤其是大电流脉冲时。
  • 我在项目中遇到过:用 Thevenin 模型做 SOC 估计,在恒流放电时效果不错,但一旦切换到脉冲放电(比如能量回收),误差能到 5% 以上。后来我加了二阶 RC,才压下来。

2.2.2 PNGV 模型

这是美国 PNGV(Partnership for a New Generation of Vehicles)项目提出的。它在 Thevenin 基础上,串联了一个电容 Cb,用来模拟电池容量的累积效应。

  • 特点:能反映 SOC 变化对 OCV 的影响,适合长时间放电场景。
  • 避坑指南:我曾经在混合动力项目里用过 PNGV,发现 Cb 的辨识非常敏感,稍微有点噪声,参数就飘了。后来我改用带遗忘因子的递推最小二乘,才稳住。

2.2.3 DP 模型(双极化模型)

也就是二阶 RC 模型。两个 RC 网络,分别模拟电化学极化(快动态)和浓差极化(慢动态)。

  • 优点:精度高,能覆盖从秒级到分钟级的动态响应。
  • 缺点:参数多,辨识难度大。
  • 我建议:如果你的项目对精度要求高(比如 SOC 误差 < 2%),直接上 DP 模型。别在 Thevenin 上浪费时间调参。

选型建议:低速电动车、储能系统,用 Thevenin 就够了。混合动力、快充场景,上 DP 模型。PNGV 适合需要长时间积分校正的场景,但参数辨识要小心。

2.3 模型参数辨识方法

模型搭好了,参数怎么来?总不能手调吧。这里我分享三种工程上最实用的方法。

2.3.1 离线辨识:最小二乘法

用 HPPC(混合脉冲功率特性)测试数据,把电池的电压响应曲线拆开:

  1. 电流突变瞬间的电压跳变 → 欧姆内阻 R0
  2. 电压缓慢恢复的过程 → RC 参数(R1, C1, R2, C2)

具体做法:对电压响应做指数拟合,或者用最小二乘法解线性方程组。

% 伪代码示例:一阶RC模型参数离线辨识
% 输入:电流 I,电压 V,采样时间 dt
% 输出:R0, R1, C1

% 1. 提取欧姆内阻
R0 = abs(delta_V / delta_I);  % 电流突变瞬间的电压差

% 2. 提取极化参数(用指数拟合)
V_polar = V - OCV - I*R0;  % 去掉欧姆压降
% 对 V_polar 做指数拟合:V_polar = V1 * exp(-t / tau1)
% 得到 V1 和 tau1
R1 = V1 / I;
C1 = tau1 / R1;

注意:离线辨识的参数只适用于特定 SOC 点和温度点。你需要做一张二维查表:SOC × 温度 → 参数。我见过有人只测了 25°C 的数据,结果冬天电池直接“罢工”了。

2.3.2 在线辨识:递推最小二乘(RLS)

电池在实际运行中,参数会随着老化、温度变化而漂移。这时候就需要在线辨识,实时更新参数。

RLS 的核心思想:每来一个新数据点,就修正一次参数估计值。带遗忘因子的 RLS 可以“忘记”旧数据,适应参数变化。

% 伪代码:带遗忘因子的 RLS
% 初始化:theta = [R0; R1; C1] 的初始值
% lambda = 0.98  % 遗忘因子

for k = 1:N
    % 构建观测向量 phi(k)
    phi = [V(k-1) - OCV(k-1); I(k); I(k-1)];
    % 计算增益 K
    K = P * phi / (lambda + phi' * P * phi);
    % 更新参数
    theta = theta + K * (V(k) - OCV(k) - phi' * theta);
    % 更新协方差矩阵
    P = (eye(3) - K * phi') * P / lambda;
end

工程技巧:遗忘因子 lambda 一般取 0.95~0.99。值越小,跟踪越快,但噪声也越大。我习惯在电池刚开始工作时用 0.95,稳定后切换到 0.99。

2.3.3 混合方法:离线 + 在线

这是我最推荐的做法。先用离线数据标定初始参数表,然后在运行中用 RLS 做微调。这样既保证了初始精度,又能适应老化。

你想想看,如果完全依赖在线辨识,电池刚装车时参数是乱的,SOC 估计会飞掉。如果完全依赖离线表,用了一年后参数早就不准了。

2.4 知识体系总览

下面这张图,是我自己总结的电池建模与参数辨识的完整流程。你可以把它当作一个“路线图”。

电池建模与参数辨识知识体系 电化学原理(锂离子嵌入/脱嵌) 等效电路模型选择 Thevenin(一阶RC) PNGV(带电容) DP(二阶RC) 参数辨识方法 离线辨识(最小二乘) 在线辨识(RLS) 混合方法(离线+在线)

这张图把整个流程串起来了:从电化学原理出发,选择适合的等效电路模型,然后用离线或在线方法辨识参数。每一步都有坑,但每一步也都有成熟的解法。

总结一下:电池模型是状态估计的“眼睛”。模型不准,算法再牛也白搭。我个人建议,新手先从 Thevenin 模型 + 离线辨识入手,跑通流程后再升级到 DP 模型 + 在线 RLS。别一上来就想搞最复杂的,容易把自己绕进去。

专注资料整理