0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

冬至子 来源:新能源汽车仿真团队 作者:当我浮夸 2023-06-29 11:09 次阅读

目前国内外基本都采用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估计值。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 电动汽车
    +关注

    关注

    156

    文章

    12058

    浏览量

    231031
  • 动力电池
    +关注

    关注

    113

    文章

    4527

    浏览量

    77592
  • simulink仿真
    +关注

    关注

    0

    文章

    75

    浏览量

    8574
  • 卡尔曼滤波算法

    关注

    0

    文章

    12

    浏览量

    2102
  • 电池SOC
    +关注

    关注

    0

    文章

    10

    浏览量

    3587
收藏 人收藏

    评论

    相关推荐

    基于Matlab/Simulink二阶控制系统仿真研究

    为了研究二阶控制系统的性能,讨论了二阶控制系统参数ζ和ωn与单位阶跃响应的关系,并介绍了基于Matlab/Simulink软件仿真环境,在单位阶跃信号作用下,利用仿真实例很好地实现了对二阶
    发表于 02-12 11:16 4.3w次阅读
    基于Matlab/<b class='flag-5'>Simulink</b>的<b class='flag-5'>二阶</b>控制系统仿真研究

    二阶锁相环

    采用后向Euler数值积分法实现二阶锁相环的一个仿真模型,对二阶锁相环进行仿真,那位大侠做过?可以参考下原代码不?
    发表于 05-28 17:21

    二阶有源RC低通滤波器的分析

    二阶有源RC低通滤波器的分析
    发表于 08-18 15:57

    二阶RC有源滤波器的设计

    电子技术课程设计报告(二阶RC有源滤波器的设计) 目录第一章 设计任务与要求……………………………………………………………31.1 设计任务
    发表于 02-25 22:01

    基于遗传算法优化EKF算法SOC估算

    采用遗传算法EKF 中的系统噪声矩阵和测量矩阵的协方差进行在线优化,以实现在模型误差最小时对 SOC 进行在线估计
    发表于 03-12 12:27

    二阶RC滤波结构

    请问第一幅图中二阶RC滤波为什么要4个电阻,下边的那两个电阻起什么作用?
    发表于 03-12 19:15

    二阶网络函数的模拟

    二阶网络函数的模拟 一、实验目的1.了解二阶网络函数的电路模型。2.研究网络参数的变化对其输出响应的影响。3.用基
    发表于 09-24 11:22 1.7w次阅读
    <b class='flag-5'>二阶</b>网络函数的模拟

    二阶RC滤波器的传递函数表

    二阶RC滤波器的传递函数表
    发表于 05-08 08:53 1.3w次阅读
    <b class='flag-5'>二阶</b><b class='flag-5'>RC</b>滤波器的传递函数表

    二阶电路的零输入响应

    二阶电路的零输入响应 凡用二阶微分方程描述的电路,称为二阶电路。二阶电路中含有两个独立的储能元件。本节以
    发表于 07-27 11:35 1w次阅读
    <b class='flag-5'>二阶</b>电路的零输入响应

    二阶有源低通滤波器_最简单的二阶低通滤波器电路图

    从滤波器数可分为一和高阶,数越高,幅频特性越陡峭,高阶滤波器通常可由一二阶滤波器级联而成。一
    发表于 07-24 15:41 21.9w次阅读
    <b class='flag-5'>二阶</b>有源低通滤波器_最简单的<b class='flag-5'>二阶</b>低通滤波器电路图

    锂离子电池荷电状态估算

    准确估算电池荷电状态( SOC)是电池管理系统的核心技术之一。为提高扩展卡尔曼滤波(EKF估算
    发表于 12-29 14:15 4次下载
    锂离子<b class='flag-5'>电池</b>荷电状态<b class='flag-5'>估算</b>

    复杂水电系统二阶振荡模式

    针对水电站产生机理不明的低频振荡问题,采用模态级数法研究水电站二阶振荡模式。首先,给出考虑复杂水力系统耦合和水力管道弹性的详细水电站模型。然后基于模态记数法给出二阶振荡模式及非线性指标。最后,以两机
    发表于 01-27 10:32 12次下载
    复杂水电系统<b class='flag-5'>二阶</b>振荡模式

    BMS算法设计之SOC估算方法的介绍(

    大家好!很高兴又跟大家见面啦,本篇文章是【BMS 算法设计】系列文章的第篇。本期主要介绍的是电池SOC 估算方法中的第一种方法——直接
    的头像 发表于 12-25 20:02 1466次阅读

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

    本文以锂离子电池为研究对象,选取Thevenin模型描述电池的动态行为,基于脉冲充放电数据,对电池模型进行参数辨识。
    的头像 发表于 06-28 11:24 2936次阅读
    基于<b class='flag-5'>EKF</b><b class='flag-5'>算法</b>的<b class='flag-5'>电池</b><b class='flag-5'>SOC</b><b class='flag-5'>估算</b>研究

    基于自适应卡尔曼滤波算法电池SOC估算研究

    本文采用自适应卡尔曼滤波算法,基于Thevenin/RC电池模型,锂离子电池SOC进行
    的头像 发表于 06-28 11:45 3398次阅读
    基于自适应卡尔曼滤波<b class='flag-5'>算法</b>的<b class='flag-5'>电池</b><b class='flag-5'>SOC</b><b class='flag-5'>估算</b>研究