1. 项目背景与核心挑战
锂离子电池作为当前储能领域的主流选择,其荷电状态(State of Charge, SOC)的精确估计直接关系到电池管理系统(BMS)的可靠性。传统SOC估计方法面临三大技术痛点:模型精度不足、参数时变特性难以捕捉、噪声干扰影响显著。本项目提出的FFRLS(遗忘因子递推最小二乘法)与AEKF(自适应扩展卡尔曼滤波)联合算法,通过二阶RC等效电路模型搭建了一套高精度估计体系。
在动力电池应用场景中,SOC估计误差超过5%就可能导致电池过充/过放风险。我们实测某型21700电池在动态工况下,传统EKF方法的均方根误差(RMSE)达到4.8%,而本方案可将其控制在1.2%以内。这种提升源于三个关键技术突破:
- 模型动态更新:FFRLS以0.95的遗忘因子实现模型参数在线辨识
- 噪声自适应:AEKF通过新息协方差实时调整过程噪声矩阵
- 多时间尺度融合:参数辨识(秒级)与状态估计(毫秒级)的协同机制
2. 二阶RC模型构建与参数辨识
2.1 等效电路模型选型
对比一阶RC、二阶RC和Thevenin模型在1C脉冲放电下的电压响应曲线,二阶RC模型在弛豫阶段电压预测误差最小(<15mV)。其电路结构包含:
- 开路电压源(OCV):反映SOC-电压静态关系
- 欧姆内阻(R0):表征瞬时极化效应
- 双RC网络(R1C1+R2C2):分别对应电化学极化(快动态)和浓差极化(慢动态)
模型数学表达为:
code复制U(t) = OCV(SOC) - I(t)*R0 - U1(t) - U2(t)
dU1/dt = -U1/(R1*C1) + I/C1
dU2/dt = -U2/(R2*C2) + I/C2
2.2 FFRLS参数在线辨识
采用带遗忘因子的递推算法实现参数动态更新,关键步骤包括:
- 数据预处理:对充放电电流进行5点滑动平均滤波,采样频率设为10Hz
- 参数初始化:基于HPPC测试获取R0=35mΩ, R1=8mΩ, C1=2.5kF, R2=15mΩ, C2=15kF
- 递推计算:
python复制# 伪代码示例 lambda = 0.95 # 遗忘因子 P = eye(4)*1e6 # 协方差矩阵初始化 theta = [R0, R1, C1, R2, C2] # 参数向量 for k in range(1, N): phi = [-I(k), -U1(k-1), I(k)-U1(k-1)/R1, -U2(k-1), I(k)-U2(k-1)/R2] # 观测向量 K = P @ phi / (lambda + phi.T @ P @ phi) theta = theta + K * (U_meas(k) - phi.T @ theta) P = (P - K @ phi.T @ P) / lambda
实测表明,当电流突变超过0.5C时,参数收敛时间<30秒。特别注意:遗忘因子取值需权衡跟踪速度与稳定性,建议在0.9-0.98区间调整。
3. AEKF状态估计算法实现
3.1 状态空间建模
将SOC和极化电压作为状态变量:
code复制x = [SOC, U1, U2]^T
系统方程:x_k = f(x_{k-1}, I_k) + w_k
观测方程:y_k = h(x_k) + v_k
其中过程噪声w_k~N(0,Q),观测噪声v_k~N(0,R)
3.2 自适应机制设计
传统EKF的固定噪声矩阵在动态工况下表现不佳。本方案采用新息协方差匹配法:
- 计算实际新息协方差:
math复制C_e = 1/N \sum_{i=k-N+1}^k (y_i - \hat{y}_i)(y_i - \hat{y}_i)^T - 理论新息协方差:
math复制C_t = H_k P_k^- H_k^T + R_k - 自适应调整:
python复制alpha = norm(C_e)/norm(C_t) # 自适应系数 Q_k = alpha * Q_{k-1} R_k = (1-alpha)*R_{k-1} + alpha*(C_e - H_k P_k^- H_k^T)
实测数据显示,在UDDS工况下,电压估计误差标准差从传统方法的12mV降至4mV。
4. 联合算法架构与实现
4.1 双时间尺度协调
构建如图1所示的级联架构:
code复制[FFRLS参数更新] (1Hz)
↓
[AEKF状态预测] (100Hz)
↓
[SOC输出]
关键同步机制:
- 参数更新触发条件:|I_k - I_{k-1}| > 0.3C 或 k%100==0
- 状态预测采用固定步长10ms
4.2 代码实现要点
c复制// 嵌入式实现片段(STM32平台)
void BMS_Update(void) {
static uint32_t tick = 0;
// 参数更新层
if((tick%100)==0 || current_diff>0.3) {
FFRLS_Update(current, voltage);
}
// 状态预测层
AEKF_Predict(current);
SOC = AEKF_Correct(voltage);
tick++;
}
内存占用优化技巧:
- 矩阵运算采用定点数Q15格式
- 协方差矩阵压缩存储(对称性利用)
5. 实验验证与性能分析
5.1 测试平台搭建
使用Arbin BT-5HC测试仪配合恒温箱(25±1℃),对比方案:
- 方案A:传统安时积分法
- 方案B:标准EKF
- 方案C:本联合算法
测试工况包含:
- 静态:0.5C恒流放电
- 动态:UDDS、FUDS循环
- 极端:-10℃低温脉冲
5.2 结果对比分析
| 测试场景 | RMSE(%) | 收敛时间(s) | 最大误差(%) |
|---|---|---|---|
| 静态(方案C) | 0.8 | 120 | 1.5 |
| UDDS(方案C) | 1.2 | 180 | 2.1 |
| 低温(方案C) | 2.3 | 300 | 4.0 |
| UDDS(方案B) | 3.7 | - | 6.8 |
典型问题处理记录:
-
初始SOC误差30%时:
- 传统方法需3个完整循环收敛
- 本方案通过OCV-SOC曲线辅助,1.5个循环即收敛
-
电流传感器零漂影响:
- 未补偿时误差累积达3%/h
- 增加滑动窗口零点校准后降至0.5%/h
6. 工程应用建议
根据实际项目经验,给出以下实施要点:
-
标定流程优化:
- HPPC测试前需完成3次完整充放电活化
- OCV-SOC曲线测量应采用0.05C小电流静置法
-
参数调整指南:
markdown复制
| 参数 | 调整方向 | 影响效果 | |-------------|------------|------------------------| | 遗忘因子λ | 增大 | 抗噪性↑,跟踪速度↓ | | Q初始值 | 增大 | 收敛速度↑,波动性↑ | | 窗口大小N | 减小 | 灵敏度↑,稳定性↓ | -
故障诊断联动:
- 当R0突增20%以上触发内阻异常报警
- SOC估计方差持续>2%时启动系统自检
-
边缘情况处理:
- 静置超30分钟时采用OCV反推SOC
- 温度变化率>1℃/min时启用补偿系数
这个方案在某储能电站项目中实现电池组均衡效率提升40%,验证了其工程价值。实际部署时建议搭配参考电压源定期校准ADC通道,以维持长期精度。