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

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

3天内不再提示

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

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

本文以锂离子电池为研究对象,选取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估算方法的可以基于此模型进行修改/改进。

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

    关注

    85

    文章

    3090

    浏览量

    76498
  • 卡尔曼滤波
    +关注

    关注

    3

    文章

    159

    浏览量

    24475
  • 电池充放电
    +关注

    关注

    1

    文章

    151

    浏览量

    8915
  • simulink仿真
    +关注

    关注

    0

    文章

    75

    浏览量

    8457
  • 电池SOC
    +关注

    关注

    0

    文章

    10

    浏览量

    3548
收藏 人收藏

    评论

    相关推荐

    电池soc估算问题

    我想问下,比如用开路电压法估算电池soc的时候,每个锂电池的电压数值肯定不是都相同的,是以随机选其中一个锂电池电压来
    发表于 08-11 19:05

    仔细研究电池的充电状态SOC和健康状况SOH估算技术

    仔细研究电池的充电状态(SOC)和健康状况(SOH)估算技术
    发表于 05-20 13:40

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

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

    电池SOC估算策略研究

    电池SOC估算策略研究,又需要的下来看看。
    发表于 01-13 13:26 12次下载

    基于主元分析的锂动力电池SOC估算法研究

    基于主元分析的锂动力电池SOC估算法研究
    发表于 01-13 13:59 10次下载

    锂离子电池参数辨识与SOC估算研究

    锂离子电池参数辨识与SOC估算研究,下来看看。
    发表于 01-13 13:49 11次下载

    双卡尔曼滤波算法在锂电池SOC估算中的应用

    双卡尔曼滤波算法在锂电池SOC估算中的应用
    发表于 01-13 13:50 17次下载

    基于RBF网络的锂电池SOC估算研究_史艳霞

    基于RBF网络的锂电池SOC估算研究_史艳霞
    发表于 02-07 15:17 1次下载

    电池SOC估算精度研究

    V的锂离子电池包为研究对象,通过使用Matlab和Advisor等仿真软件,研究了福克斯电动汽车行驶在UDDS工况下,采用安时法和扩展卡尔曼滤波算法结合
    发表于 11-14 14:24 9次下载
    锂<b class='flag-5'>电池</b>的<b class='flag-5'>SOC</b><b class='flag-5'>估算</b>精度<b class='flag-5'>研究</b>

    锂离子电池荷电状态估算

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

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

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

    BMS算法设计之电池SOC的介绍(一)

           大家好!今天给大家带来的是【BMS 算法设计】系列文章的第一篇。本期主要介绍的是电池SOC的基本常识,后续会给大家介绍各种SOC估算
    的头像 发表于 12-25 20:02 3947次阅读

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

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

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

    目前国内外基本都采用SOC来作为描述动力电池容量状态的内部参数。电池SOC估计是否准确对于电池来说关系重大,会直接影响动力
    的头像 发表于 06-29 11:09 2021次阅读
    基于Simulink搭建二阶RC的<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?为什么要进行SOC估算SOC估算的难点

    什么叫SOC?为什么要进行SOC估算SOC估算的难点 SOC全称为State of Charg
    的头像 发表于 10-26 11:38 1867次阅读