基于EKF算法的电池SOC估算研究

本文以锂离子电池为研究对象,选取Thevenin模型描述电池的动态行为,基于脉冲充放电数据,对电池模型进行参数辨识。结果表明,Thevenin模型能较好地描述电池的动态行为。最后在Simulink环境下,基于扩展卡尔曼滤波(EKF)算法,实现对电池SOC的估算。

1、电池模型选取

由于Thevenin模型结构简单,参数辨识容易,因此该模型常作为电动汽车动力电池的基础模型。Thevenin模型如下图所示:

将模型的状态方程与量测方程离散化,得到如下形式的模型:

2、参数辨识方法

最小二乘法是一种最基本也最常用的估计方法。由于参数在线辨识需要不断更新数据,这时可以采用递推最小二乘法。

递推最小二乘法的基本思想为:利用新的观测数据对旧的估计值进行修正。其算法流程为:

其中,θ为待辨识参数组成的向量,K是增益系数,z是实际量测值,P是量测协方差阵。初值θ(0)和P(0)可以通过离线方法获得。

c0=[0.0001 0.0001 0.0001]’; % 直接给出被辨识参数的初始值,即一个充分小的实向量

p0=10^(6)*eye(3,3); % 直接给出初始状态P0,即一个充分大的实数单位矩阵

c=[c0,zeros(3,L-1)]; % 被辨识参数矩阵的初始值及大小

e=zeros(3,L); % 相对误差的初始值及大小

lambda=0.98; % 遗忘因子

递推最小二乘法随着时间的推移会出现“数据饱和”的现象,为克服这个问题。引入遗忘因子λ,改进后的算法递推公式如下:

for k=3:L;

y(k)=ocv(k)-ul(k);

h=[y(k-1),it(k),it(k-1)]’;

d1=y(k)-h’*c0;

x=h’*p0*h+lambda;

x1=inv(x);

Kk=p0*h*x1; % 求出K的值

c1=c0+Kk*d1; % 求被辨识参数c

e1=c1-c0; % 求参数当前值与上一次的值的差值

e2=e1./c0; % 求参数的相对变化

e(:,k)=e2; % 把当前相对变化的列向量加入误差矩阵的最后一列

c0=c1; % 新获得的参数作为下一次递推的旧参数

c(:,k)=c1; % 把辨识参数c列向量加入辨识参数矩阵的最后一列

p1=(p0-Kk*h’*p0)/lambda; % 求出 p(k)的值

p0=p1;

end

根据电池Thevenin模型,可以得到差分方程为:

可以解出模型中各参数的值:

a1=c(1,:); a2=c(2,:); a3=c(3,:);

a = a1;

R0 = a2;

R1 = (a3-a.*R0)./(a-1);

C1 = -1./(R1.*log10(a));

参数辨识结果如下图所示:

使用脉冲放电工况对模型的精度进行验证,电池验证模型如下图所示:

其中,SOC Calculate模块:

其中,RC Paremeter Calculate模块:通过遗忘因子最小二乘法的参数辨识结果获取。

其中,Voltage Calculate模块:

结果表明:Thevenin模型参数辨识较为容易,对工况的仿真效果较好,可以相对准确地描述电池的动态特性。

3、电池SOC估算

其中,安时积分法模块:

其中,电池参数模块:

其中,电池模型模块:

其中,EKF估算模块:

Q = Noise(1); % 过程噪声

R = Noise(2); % 观测噪声

%% ————–A矩阵,状态转移———-

A1 = 1;

A2 = exp(-0.05/Tao);

A = [A1 0;0 A2];

P_last = [P_old(1) P_old(2);P_old(3) P_old(4)];

P_pre=A*P_last*A’+ [Q 0;0 Q];

%% ————–C矩阵————-

C1 = 1.526 – 9.117*2*SOC_pre + 41.17*3*SOC_pre^2 …

– 116.2*4*SOC_pre^3 + 184.4*5*SOC_pre^4 …

– 148.9*6*SOC_pre^5 + 47.59*5*SOC_pre^6;

C = [C1 -1];

%% ————–更新————–

X_pre = [SOC_pre;Up_pre];

K = P_pre*C’*(C*P_pre*C’+ R)^(-1); % 增益

X_upd = X_pre + K*(UL_ob-UL_pre); % 得到估计值

P_update = P_pre – K*C*P_pre;

%% ————–输出————–

SOC_upd = X_upd(1);

Up_upd = X_upd(2);

P_upd = [P_update(1,1) P_update(1,2) P_update(2,1) P_update(2,2)];

4、小结

本期提供了一种电池SOC估算的具体的学习方法,对于研究SOC估算的同学有很大的引导作用。不管是做何种电池的SOC估算,都需要通过电池参数辨识→电池模型验证→电池SOC估算这样一个过程。

结果表明,Thevenin模型能较好地描述电池的动态行为。最后在Simulink环境下,基于扩展卡尔曼滤波(EKF)算法,实现对电池SOC的估算。

需要通过其他参数辨识方法/其他电池SOC估算方法的可以基于此模型进行修改/改进。