基于Simulink搭建二阶RC的EKF算法电池SOC估算模型

发布时间:2023-09-20  

目前国内外基本都采用SOC来作为描述动力电池容量状态的内部参数。电池SOC估计是否准确对于电池来说关系重大,会直接影响动力电池使用寿命和电动汽车的行驶里程。但是电池SOC却很难在使用中直接测量得到,只能通过其它可以直接测量的电池参数估算得到。这就提高了SOC估计的难度,也使如何精准估计电池SOC成为了当下动力电池领域的研究热点。


卡尔曼滤波算法是有效的、经典的智能算法,能够实现最小方差的最优状态估计,目前被广泛应用于许多工程领域。由于其具有较好的估计精度和时效性,结合基尔霍夫定律搭建的二阶RC模型一起使用,已逐渐成为电池SOC估算研究领域的热点方法。考虑到卡尔曼滤波算法只适用于线性系统,应用到电池SOC中需要对其进行扩展,即扩展卡尔曼滤波算法(Extended Kalman Filter,EKF)。EKF算法的内涵:通过泰勒级数展开并忽略高次项的方法对非线性系统进行改造。



令非线性系统的离散状态方程和观测方程如下式所示:


图片


式中,xk表示系统在k时刻的状态向量,yk表示系统在k时刻的观测向量,uk表示系统在k时刻的输入向量,f(xk,uk)表示系统的状态转移函数,g(xk,uk)表示系统的测量函数,wk是系统的过程噪声,其协方差是Qk,vk是系统的观测噪声,其协方差是Rk。


对f(xk,uk)和g(xk,uk)进行泰勒级数展开后线性处理得到的系统状态空间方程为:


图片


式中,Ak表示系统参数矩阵,Ck表示观测系统参数矩阵。


得到系统的离散表达式后,可利用EKF算法进行状态估计。


X_pre= [SOC_pre;U1_pre;U2_pre];


K=P_pre H' ((HP_preH'+R)^(-1));


X_upd= X_pre + K*(UL_ob-UL_pre);


P_update= (eye(3) - K*H)*P_pre;


通过具体的参数辨识结果,结合EKF算法对SOC进行估计,需要将电池的两个RC环节的端电压以及SOC作为系统的状态变量。


SOC_upd= X_upd(1);


U1_upd= X_upd(2);


U2_upd= X_upd(3);


电池负载端电压为输出变量,对电池模型状态空间方程和观测方程进行离散化处理,得到电池系统离散化表达式:


A=[10 0;0 exp(-1/Tao1) 0;0 0 exp(-1/Tao2)];


B=[-11/(2.6763600);rp1*(1-exp(-delta_t/(rp1 cp1)));rp2 (1-exp(-delta_t/(rp2*cp2)))];


C1=8.3085SOC_pre^8-121.5774SOC_pre^7+402.8993SOC_pre^6-597.0354SOC_pre^5+463.6147SOC_pre^4-192.8896SOC_pre^3+40.3829SOC_pre^2-2.9747SOC_pre+3.4805; % 备注:OCV-SOC函数求导关系式


H= [C1 -1 -1];


同时,OCV-SOC的关系可表示为:


OCV=8.3085SOC^8-121.5774SOC^7+402.8993SOC^6-597.0354SOC^5+463.6147SOC^4-192.8896SOC^3+40.3829SOC^2-2.9747SOC+3.4805;


function [U1_pre,U2_pre,Tao1,Tao2]= fcn(R1,R2,C1,C2,U1_upd,U2_upd,I)

Tao1 = R1*C1;

Tao2 = R2*C2;

U1_pre = U1_upd*exp(-1/Tao1) + R1*I*(1-exp(-1/Tao1));

U2_pre = U2_upd*exp(-1/Tao2) + R2*I*(1-exp(-1/Tao2));

function [P_upd,SOC_upd,U1_upd, U2_upd] = fcn(Noise, UL_ob, UL_pre, P_old, SOC_pre, U1_pre,U2_pre, Tao1,Tao2)



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

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

%%

%状态方程系数

A=[1 0 0;0 exp(-1/Tao1) 0;0 0 exp(-1/Tao2)];

B=[-1*1/(2.676*3600);rp1*(1-exp(-delta_t/(rp1*cp1)));rp2*(1-exp(-delta_t/(rp2*cp2)))];



P_last = [P_old(1) P_old(2) P_old(3); P_old(4) P_old(5) P_old(6); P_old(7) P_old(8) P_old(9)];

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

%%

fn=@(x) 8.3085*x^8-121.5774*x^7+402.8993*x^6-597.0354*x^5+463.6147*x^4-192.8896*x^3+40.3829*x^2-2.9747*x+3.4805;

syms t1;

g=fn(t1);

g=matlabFunction(diff(g));



C1 = 8.3085*SOC_pre^8-121.5774*SOC_pre^7+402.8993*SOC_pre^6-597.0354*SOC_pre^5+463.6147*SOC_pre^4-192.8896*SOC_pre^3+40.3829*SOC_pre^2-2.9747*SOC_pre+3.4805;



H = [C1 -1 -1];

%% 

X_pre = [SOC_pre;U1_pre;U2_pre];

K=P_pre*H'*((H*P_pre*H'+ R)^(-1));%计算卡尔曼增益

X_upd = X_pre + K*(UL_ob-UL_pre);

P_update = (eye(3) - K*H)*P_pre;



%%

SOC_upd = X_upd(1);

U1_upd = X_upd(2);

U2_upd = X_upd(3);

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

得到基于电池模型的离散状态空间方程后,结合扩展卡尔曼滤波算法,基于Simulink仿真,搭建电池SOC估算模块。通过EKF算法对电池SOC估算,首先根据随机工况定义系统的状态变量初值,以及恰当的噪声协方差矩阵Qk和Rk的值。然后,基于EKF算法通过k-1时刻系统状态估计值和k时刻系统的输入值uk,观测值yk,估计出k时刻的状态估计值。

图片

图片

图片

从图中可以看出,估计曲线非常快速地逼近到真值附近。说明该算法可以快速对初值偏差进行修正。即使在初值不清楚的情况下,依然能给出较为准确的SOC估计值。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>