锂电池SOC估计 UKF && EKF

该文通过UKF(UnscentedKalmanFilter)和EKF(ExtendedKalmanFilter)算法对二阶RC等效电路模型的电池进行状态估计,包括端电压和SOC(StateofCharge)。文中详细展示了两个算法的实现步骤,包括系统矩阵、观测矩阵的设定,以及状态更新和误差分析。通过比较两种方法的估计结果,评估其性能。

UKF

对于一个非线性系统:

在这里插入图片描述
其中,w是系统噪声值,是v测量噪声值。
UKF算法过程如下:
1)确定状态值初始值和后验状态误差协方差初始值;
2)计算采样点。

在这里插入图片描述

其中,L为状态向量的长度,本文中状态向量长度为3,权重值计算如下所示:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
代码如下:

模型代码

load('R0.mat');
load('R1.mat');
load('C1.mat');
load('discharge.mat');%放电数据
load('OCV_SOC.mat');%OCV-SOC关系

系统矩阵

A=[1-1*Ts/R1/C1 0;0 1];%系统矩阵
B=[1*Ts/C1;-1*Ts/Qn];
C=[-1  0];
D=0;

初始值

Q=0.00000001*eye(2);
R=1;
P0=0.01*[0.01 0;0 1];%状态误差协方差初始值

赋值

tm=discharge(1,:)';
Cur=-discharge(2,:)';
Vot=discharge(3,:)';
RSOC=discharge(4,:)';
T=length(tm);

模型估计得到的电压值

Xekf=[0;0.8];%[U1,U2,SOC]初始值
L=length(Xekf);
Uoc(1)=p(1)*Xekf(2)^8+p(2)*Xekf(2)^7+p(3)*Xekf(2)^6+p(4)*Xekf(2)^5+p(5)*Xekf(2)^4+p(6)*Xekf(2)^3+p(7)*Xekf(2)^2+p(8)*Xekf(2)+p(9);%OCV
Vekf(1)=Uoc(1)+C*Xekf-Cur(1)*R0;%估计得到的端电压值
m=length(Vekf);
alpha=0.01;
ki=0;
beta=2;
lamba=alpha^2*(L+ki)-L;

迭代

for i=1:T-1
    delta=c*chol(P0)';
    Xekf_i=Xekf(:,i);
    Y=Xekf_i(:,ones(1,numel(Xekf_i)));
    X=[Xekf_i Y+delta Y-delta];
    LL=length(X);
    xx=zeros(2,1);
    XX=zeros(2,LL);
    for k=1:LL
        XX(:,k)=A*X
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值