电池SOC仿真系列-基于UKF算法的电池SOC估算研究

基于 UKF算法的电池SOC估算

1、UKF算法

  无迹卡尔曼滤波是将数据变化(UT变换)与卡尔曼滤波结合起来的一种算法,通过UT变换将一个状态点转换为多个状态点,依据一定的权重传递给后面观测值,再根据后面的观测值和真实值的误差,向前反馈,不断修正,最后得到理想的状态值。
  以SOC估算为例,卡尔曼滤波的估算思路分为预测更新两阶段。
  预测阶段:根据k时刻的SOC(k)值、输入电流I(k)和SOC的误差P(k)来估算k+1时刻的SOC(k+1)、误差P(k+1)和k时刻的端电压U(k)。
  更新阶段:根据观测得到的k时刻端电压真实值与端电压的估算值计算差值,系统递推公式中的p与K,k+1时刻的SOC真实值,并更新误差真实值。
  这样两个阶段的往复循环就能够不断的估算出任意时刻的SOC值。

2、UKF算法流程

2.1、参数初始化

load 电池实验数据.mat;
V=data(:,1);
I=data(:,2);
SOC=data(:,3);          % 电压,电流,SOC
n=2;
Qf=[0.00001 0;0.00001 0];
p=[0.01 0;0 0.01]; 
R=0.1;
state0=[0.99;0];        % UKF初值
stater=stater0;
SOCan=stater0(1);
xc=state0;
tout=[];
staterout=[];           % 真实值矩阵
xcout=[];               % UKF估计矩阵
errorout=[];            % UKF误差矩阵
errarry=[];

2.2、UKF递推公式

for t=t0:h:tf  
    yc=V(t);
    I0=I(t);
    alp=0.1;
    kap=0;
    beta=2;
    lamda=alp^2*(n+kap)-n;
    nc=n+lamda;
%----------------采样点权值---------------------
for i=1:2*n+1
    Wm(i)=1/(2*(lamda+n));
    Wc(i)=1/(2*(lamda+n));
end
    Wm(1)=lamda/(lamda+n);
    Wc(1)=lamda/(lamda+n)+1-alp^2+beta;
%----------------构造sigma点-----------------
    pk=sqrt(p*(n+lamda));
for j=1:n
    sigma1(:,j)=xc+pk(:,j);
    sigma2(:,j)=xc-pk(:,j);
end
  sigma=[xc,sigma1,sigma2];  %5%---------------利用采样点更新状态-------------------
for j=1:2*n+1       %状态方程
    F=[1,0;0, 0.9545];
    G=[0.00003541;0.0003282];
    sigma(:,j)=F*sigma(:,j)+G*I0;
end
%----------------状态均值------------------
sxk=0;
for j=1:2*n+1      
    sxk=Wm(j)*sigma(:,j)+sxk;
end 
%-----------------px的值---------------------
spk=0;
for kp=1:2*n+1     % px
    spk=Wc(kp)*(sigma(:,kp)-sxk)*(sigma(:,kp)-sxk)'+spk;  
end
spk=spk+Qf;
%-------------根据Px重新采样数据点--------------
chor=sqrt(spk*(n+lamda));
for j=1:n     
    Sigma1(:,j)=sxk+chor(:,j);
    Sigma2(:,j)=sxk-chor(:,j);
end
Sigma=[sxk, Sigma1, Sigma2 ];
for kg=1:2*n+1    % 测量方程
    Sigma(1,kg))+I0*0.0115+Sigma(2,kg);
    gamma(kg)=3.2348-0.0148*log(Sigma(1,kg))-0.0363*log(1-Sigma(1,kg))+I0*0.0118+Sigma(2,kg);  
end

2.3、仿真结果

figure;
plot(tout,xcout(1,:),'r',tout,staterout(1,:),'b');
legend('UFK估算SOC值','真实SOC值');grid on;
xlabel('时间(s)');ylabel('SOC');title('无迹卡尔曼滤波');

在这里插入图片描述

3、结果分析

  从仿真结果可知,UKF算法具有较高的SOC估算精度!
  欢迎关注我的微信公众号,感谢大家的支持!
在这里插入图片描述

  • 9
    点赞
  • 80
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

新能源汽车仿真团队

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值