1. 电池SOC估计的技术背景与挑战
电池荷电状态(State of Charge, SOC)估计是电池管理系统(BMS)中最核心的算法之一。准确估计SOC对于延长电池寿命、保障使用安全、优化能量管理都至关重要。然而在实际应用中,SOC无法直接测量,只能通过电压、电流、温度等间接参数进行估算,这给算法设计带来了三大技术难点:
- 强非线性特性:锂离子电池的OCV-SOC曲线在不同区间呈现明显非线性,尤其在低SOC(<20%)和高SOC(>80%)区域
- 时变参数影响:电池内阻、容量等参数会随老化程度、温度变化而发生漂移
- 噪声干扰严重:电流传感器的测量噪声、采样频率限制等因素导致原始数据信噪比低
传统安时积分法虽然简单易实现,但存在累计误差问题。EKF(扩展卡尔曼滤波)通过线性化处理非线性系统,在轻度非线性场景表现良好,但当电池工作在高非线性区间时,其泰勒展开的一阶近似会导致显著误差。这正是UEKF(无迹卡尔曼滤波)的用武之地。
2. 三种算法的原理对比与选型分析
2.1 安时积分法的本质缺陷
安时法基于一个简单公式:
code复制SOC(t) = SOC(t0) + (1/Cn) ∫ηI dt
其中Cn为额定容量,η为库伦效率。其问题在于:
- 完全依赖电流积分,初始误差会随时间累积放大
- 无法修正传感器零漂(典型误差0.5%满量程)
- 库伦效率η在实际中并非常数
实测数据表明:仅使用安时法时,持续充放电4小时后SOC误差可达8%以上
2.2 EKF的线性化局限
EKF通过一阶泰勒展开处理非线性系统:
code复制x_k = f(x_{k-1}) + w_k
z_k = h(x_k) + v_k
其Jacobian矩阵计算在强非线性点(如SOC 10%附近)会产生较大线性化误差。以三元锂电池为例,当SOC从15%→10%时,OCV曲线斜率变化达12mV/%,此时EKF的SOC估计误差可能达到3-5个百分点。
2.3 UEKF的Sigma点采样优势
UEKF采用确定性采样策略,通过精心选择的Sigma点捕捉非线性分布:
code复制χ = [x, x±√((n+λ)P)]
其中λ为缩放参数,P为协方差矩阵。这种方法的优势在于:
- 无需计算雅可比矩阵,避免线性化误差
- 三阶精度捕获非线性特性(而EKF仅一阶)
- 对初始误差和过程噪声具有更好的鲁棒性
3. 仿真模型构建与参数配置
3.1 电池等效电路建模
采用二阶RC模型进行仿真:
code复制OCV(SOC) - Vt = I*(R0 + R1/(1+τ1s) + R2/(1+τ2s))
参数辨识结果示例(25℃环境):
| 参数 | 满电状态 | 50%SOC | 20%SOC |
|---|---|---|---|
| R0/mΩ | 2.1 | 2.3 | 3.8 |
| R1/mΩ | 1.2 | 1.5 | 2.6 |
| τ1/s | 28 | 32 | 45 |
3.2 算法实现关键代码
UEKF的核心采样过程(MATLAB示例):
matlab复制% Sigma点生成
function X = sigma_points(x, P, gamma)
n = length(x);
X = zeros(n, 2*n+1);
X(:,1) = x;
U = chol((n+gamma)*P);
for k=1:n
X(:,k+1) = x + U(k,:)';
X(:,n+k+1) = x - U(k,:)';
end
end
% 无迹变换
function [y, Pyy] = ut(f, X, Wm, Wc, R)
y = zeros(size(f(X(:,1))));
for k=1:size(X,2)
y = y + Wm(k)*f(X(:,k));
end
Pyy = R;
for k=1:size(X,2)
Pyy = Pyy + Wc(k)*(f(X(:,k))-y)*(f(X(:,k))-y)';
end
end
3.3 噪声参数设置
合理的噪声协方差矩阵对滤波效果至关重要:
- 过程噪声Q:反映模型失配程度,通常取diag([1e-4, 1e-5, 1e-5])
- 观测噪声R:取决于传感器精度,电压测量建议取(5mV)^2
- 初始协方差P0:可设为diag([0.01, 0.001, 0.001])
4. 动态工况下的对比测试
4.1 UDDS城市循环测试结果
在Urban Dynamometer Driving Schedule工况下:
| 算法 | 最大误差 | RMSE | 收敛速度 |
|---|---|---|---|
| 安时法 | 6.8% | 4.2% | N/A |
| EKF | 3.1% | 1.7% | 120s |
| UEKF | 1.9% | 0.8% | 80s |
特别是在急加速阶段(SOC快速变化时),UEKF展现出明显优势:
- 当电流阶跃变化30A时,EKF出现2.3%的瞬时误差
- UEKF在相同工况下瞬时误差仅0.9%
4.2 低温环境(-10℃)表现
低温会放大电池非线性特性:
| 算法 | 初始误差 | 稳态误差 |
|---|---|---|
| 安时法 | 5% | >10% |
| EKF | 5% | 3.5% |
| UEKF | 5% | 1.8% |
UEKF通过Sigma点更好地捕捉了低温下OCV-SOC曲线的非线性变化。
5. 工程实现中的关键技巧
5.1 参数自适应调整
实际应用中建议采用以下自适应策略:
matlab复制% 根据电流变化率调整过程噪声
if abs(dI/dt) > 10 % A/s
Q(1,1) = 1e-3; % 增大SOC估计的噪声容许
else
Q(1,1) = 1e-4;
end
5.2 多算法融合方案
一种实用的混合架构:
- 正常工况:优先使用UEKF
- 低采样率时(<10Hz):切换至EKF降低计算负担
- 静置状态:采用OCV法进行校准
5.3 计算资源优化
通过预计算Sigma点权重可减少30%计算量:
matlab复制% 离线计算权重
lambda = alpha^2*(n+kappa) - n;
Wm = [lambda/(n+lambda), repmat(1/(2*(n+lambda)),1,2*n)];
Wc = Wm;
Wc(1) = Wc(1) + (1-alpha^2+beta);
6. 典型问题排查指南
6.1 滤波发散现象
若出现估计值持续偏离真实值:
- 检查Q/R比值:过小的Q会导致滤波器"过于自信"
- 验证OCV-SOC曲线:使用错误的曲线会导致系统性偏差
- 确认电流传感器校准:1%的零漂会导致约0.5%/h的SOC漂移
6.2 初始化敏感问题
UEKF对初始误差较鲁棒,但建议:
- 静置时用OCV法初始化
- 运行中若电压突变超过50mV,触发重新初始化
6.3 实时性挑战
在STM32F407上的实测数据:
| 算法 | 执行时间(ms) | 内存占用(KB) |
|---|---|---|
| EKF | 0.45 | 3.2 |
| UEKF | 1.28 | 6.7 |
可通过定点数运算(Q15格式)将UEKF计算时间压缩到0.8ms以内。
