电池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+1Wm(i)=1/(2*(lamda+n));Wc(i)=1/(2*(lamda+n));
endWm(1)=lamda/(lamda+n);Wc(1)=lamda/(lamda+n)+1-alp^2+beta;
%----------------构造sigma点-----------------pk=sqrt(p*(n+lamda));
for j=1:nsigma1(:,j)=xc+pk(:,j);sigma2(:,j)=xc-pk(:,j);
endsigma=[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 % pxspk=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估算精度!
欢迎关注我的微信公众号,感谢大家的支持!
电池SOC仿真系列-基于UKF算法的电池SOC估算研究相关推荐
- 电池SOC仿真系列-基于遗忘因子的最小二乘法电池参数辨识(二阶RC)
基于遗忘因子的最小二乘法电池参数辨识 最小二乘法是系统辨识中最常用的一种估算方法.为了克服最小二乘法存在"数据饱和"的问题,我们通常采用含有遗忘因子的递推最小二乘法(Forge ...
- ## ***电池SOC仿真系列-基于扩展卡尔曼(EKF)算法的SOC估计(内含代码等资料)***
## ***电池SOC仿真系列-基于扩展卡尔曼(EKF)算法的SOC估计(内含代码等资料)*** ## 1 研究背景 电池的荷电状态(SOC)代表的是电池当前的剩余容量,数值定义是电池剩余电量与电池额 ...
- 电动SOC仿真系列-考虑电池老化影响的电池UKF-SOC估算研究
考虑电池老化影响的电池UKF-SOC估算研究(无迹卡尔曼滤波算法) 传统的电池模型往往将电池容量设定为定值.然后在实际情况中,电池的容量会随着电池循环充放电次数的增加而减少.因此有必要在建立电池模 ...
- 【研究计划书】基于人工智能算法的肿瘤代谢问题研究
基于人工智能算法的肿瘤代谢问题研究 基于人工智能算法的肿瘤代谢问题研究 一.研究概述 1.1 研究背景 1.2 研究现状 1.3 研究方法 二.研究内容 2.1 肿瘤代谢过程和生物标志物识别 2.2 ...
- kalman滤波基础及matlab仿真_MATLAB基于EKF算法估计电动汽车蓄电池的SOC
点击上方蓝字关注"公众号" MATLAB基于EKF算法估计电动汽车蓄电池的SOC 电动汽车(EV)是未来汽车的一大发展方向.动力锂电池组是电动汽车动力源,其荷电状态(SOC)直接反 ...
- 电动汽车仿真系列-基于Simulink的并联混合动力汽车建模分析
基于Simulink的并联混合动力汽车建模分析 本期介绍一种基于Simulink的并联混合动力汽车的建模方法.并联混合动力汽车的工作模式可以分为六种.纯电动模式.纯发动机模式.混合驱动模式.充电模 ...
- 回声检测仿真信号matlab,基于LMS算法的回声消除系统仿真研究
用远端语音信号作为参考信号来跟踪回声信号,得到滤波器的输出信号 ,两者相减,得到误差信号为 .误差信号的波形如图7所示.从图中可以看出,收敛时间大约在8000个点左右,之后的误差曲线接近于0,仿真效果 ...
- 电机仿真系列-基于最小二乘法的永磁同步电机参数辨识
基于最小二乘法的永磁同步电机参数辨识 永磁同步电机具有体积小.转动惯量低.结构简单等优点,被广泛应用于控制系统中.然而在实际应用过程中,控制系统会受到高温.负载等外界因素的影响,永磁同步电机的电感 ...
- 风力发电仿真系列-基于Simulink搭建的DFIG仿真模型
基于Simulink搭建的DFIG仿真模型 双馈式感应发电机(DFIG)是在同步电机和异步电机的基础上发展起来的一种新型发电机.DFIG的主要优点是其足够宽的速度范围,能使组合式风力涡轮机以最佳的 ...
最新文章
- JDK,JRE和JVM三者的关系以及java的运行机制,环境变量,三大版本,特点
- mysql数据库的备份和二进制日志恢复
- Git版本控制使用方法入门教程?
- Mac安装tensorflow
- linux命令iconv_Linux常用命令--iconv
- vivo电池损耗指令代码_安川伺服驱动器维修中常用故障代码
- win10计算机管理员权限删除,win10需要管理员权限删除文件怎么办?获取管理员权限删除文件夹...
- c++EasyX极乐净土的实现及音乐头文件的使用
- Java开发的发展前景和未来规划方向
- vcode——自用插件
- scrapy爬虫-拉勾网(学习交流)
- 启动windows的mysql_MySQL的启动方法(windows 平台)
- 侧脸生成正脸概论与精析
- 推送近期三波关于Vue.js的资讯
- windows下CUDA的卸载,怒推!!!亲测可以!!!
- C语言之strcmp函数和strncmp函数
- PATA1023_大整数运算(难度:⭐️⭐️)
- Vue+百度统计 实现网页的PV和UV统计
- 百度云管家登陆网络异常的解决办法
- hive 十六进制转十进制_[转] Hive 内置函数