荷电状态(State of Charge, SOC)估计是电池管理系统(BMS)最核心的功能之一,相当于电动汽车的"油量表"。但与手机简单的电量显示不同,动力电池的SOC估计面临三大技术难点:
非线性特性:电池的开路电压(OCV)与SOC关系呈现明显的非线性,特别是在SOC中间区域(30%-70%),OCV曲线非常平缓,微小的电压测量误差就会导致SOC估计出现较大偏差。
动态工况影响:实际行驶中电池承受的电流变化剧烈(如加速、制动等),导致极化效应明显。图1展示了HPPC(Hybrid Pulse Power Characterization)测试工况下的典型电流波形,包含充放电脉冲和静置阶段。
参数时变性:电池内阻、容量等参数会随着老化、温度等因素变化,这就要求估计算法具有在线自适应能力。
提示:二阶RC模型之所以成为行业主流选择,是因为它能较好地表征电池的动态特性——R1/C1模拟秒级响应的电化学极化,R2/C2模拟分钟级响应的浓度极化。
二阶RC等效电路模型包含以下关键元件:
数学模型的状态方程如下:
python复制def state_eq(v1, v2, soc, current, dt):
soc_new = soc - dt*current/(3600*capacity) # 安时积分法更新SOC
v1_new = np.exp(-dt/(R1*C1)) * v1 + R1*(1-np.exp(-dt/(R1*C1)))*current # 快极化电压更新
v2_new = np.exp(-dt/(R2*C2)) * v2 + R2*(1-np.exp(-dt/(R2*C2)))*current # 慢极化电压更新
return soc_new, v1_new, v2_new
模型参数(R0, R1, C1, R2, C2)需要通过实验数据辨识获得,常用方法包括:
表1展示了某三元锂电池在25℃下的典型参数值:
| 参数 | 数值 | 单位 | 物理意义 |
|---|---|---|---|
| R0 | 0.01 | Ω | 欧姆内阻 |
| R1 | 0.005 | Ω | 快极化电阻 |
| C1 | 2000 | F | 快极化电容 |
| R2 | 0.01 | Ω | 慢极化电阻 |
| C2 | 50000 | F | 慢极化电容 |
扩展卡尔曼滤波(EKF)通过线性化处理非线性系统,其迭代过程包含预测和更新两个阶段:
预测步:
更新步:
雅可比矩阵计算:
matlab复制function [df_dx] = jacobian(x, current)
df_dsoc = 1; % SOC状态转移偏导
df_dv1 = exp(-Ts/(R1*C1)); # 快极化电压偏导
df_dv2 = exp(-Ts/(R2*C2)); # 慢极化电压偏导
df_dx = [df_dsoc, 0, 0;
0, df_dv1, 0;
0, 0, df_dv2];
end
OCV-SOC关系处理:
采用三次样条插值确保曲线二阶连续可导:
matlab复制function ocv = getOCV(soc)
persistent spline_model;
if isempty(spline_model)
soc_points = [0, 0.1, 0.3, 0.7, 0.9, 1];
ocv_points = [3.0, 3.2, 3.4, 3.6, 3.8, 4.0];
spline_model = csape(soc_points, ocv_points, 'second');
end
ocv = ppval(spline_model, soc);
end
动态调整过程噪声矩阵Q可显著提升脉冲工况下的估计精度:
python复制Q = np.diag([1e-6, 1e-4*(abs(current)+1), 1e-5*(abs(current)+1)])
当检测到持续估计误差超过阈值时,切换至安时积分法进行临时修正:
在HPPC工况下(图2),算法表现如下特征:
表2总结了算法关键性能:
| 指标 | 数值 | 测试条件 |
|---|---|---|
| 最大误差 | <2% | 全SOC范围 |
| 平均误差 | 0.75% | HPPC工况 |
| 单次计算时间 | 28μs | Intel i5-8250U |
| 内存占用 | 1.8KB | 包含所有变量 |
对于STM32F103等资源受限平台,推荐以下优化措施:
查表法替代实时计算:
定点数运算:
降频运行:
实际测试表明,经过优化的代码在STM32F103(72MHz)上可实现: