电子说
本文以锂离子电池为研究对象,选取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估算方法的可以基于此模型进行修改/改进。
全部0条评论
快来发表一下你的评论吧 !