基于双卡尔曼滤波(KF+UKF)算法的电池SOC估算

  前文讲述了基于扩展卡尔曼滤波(EKF)的双卡尔曼滤波(KF+EKF)算法电池SOC估算方法,本期带来基于无迹卡尔曼滤波(Unscented Kalman Filter,UKF)的双卡尔曼滤波(KF+UKF)算法的电池SOC估算。
  无迹卡尔曼滤波是一种采样策略逼近非线性分布的滤波方法,UKF的核心是一种通过计算非线性变换中变量的统计特征进行估计称为无迹变换(Unscented Transform,UT)的新方法,采用Kalman滤波算法的框架,UKF利用UT变换在估计点附近确定采样,将一个状态估计点转换为多个估计点,根据权值的不同将状态估计点的值传递给后面的观测值,按照观测值以及真实测量值的误差,通过反馈不断对相应的权值做出修正,以此逼近函数的概率密度分布,这可以使得非线性变换后的均值和协方差的精度更高,最终得到相对比较理想的状态值。

1、无迹卡尔曼滤波

  卡尔曼滤波算法的基本步骤是以“预测—实际测量—校正”的顺序向后进行递推运算,利用系统的测量值作为反馈来消除夹杂的随机干扰,其状态方程以及观测方程可以表示为:

  式中,xk代表k时刻的系统状态向量值,它可以是一个多参数矩阵。
  第一个式子为状态表达式,这个式子主要用来表达系统在所测的各个时刻的特性,所求参数的稳定性、能控性和能观性均由该方程决定;
  uk代表k时刻的系统输入值。参数估计系统的随机噪声用wk表示,该值用来表述参数估计系统的一些不精确或者未知参数引起的噪声。
  输出值yk由系统观测方程得到。由上述方程明显看出,线性系统的输出是系统状态、系统输入以及某些随机噪声的线性组合。
  随机干扰vk用于描述一些由于传感器噪声引起的观测误差,这些噪声并不直接影响系统的状态。状态空间表达式中,Ak,Bk,Ck,Dk完全描述整个系统,而且可能是实时变化的。
  给定系统的状态空间表达式以及系统所测得的输入uk、输出yk,可以根据卡尔曼滤波算法在动态条件下实时地估计系统的内部状态。
  卡尔曼滤波算法的基本推导过程:
  首先计算k+1时刻的状态变量的先验估计值以及状态变量由k时刻递推到k+1时刻的先验误差协方差矩阵:

  然后计算卡尔曼增益系数:

  当前系统的状态变化使得先验估计值带有一定的不确定性,这种不确定性会通过误差协方差矩阵传递到卡尔曼增益系数K(k+1),先验估计值与测量值的误差越大,系统估计的不确定性越高,误差协方差矩阵P(k+1|k)就会变大,同时卡尔曼增益系数K(k+1)就会越大,它对于先验估计值的修正作用就会越大;反之,卡尔曼增益系数K(k+1)的修正作用越小。
  最后,利用卡尔曼增益对先验估计值以及先验误差协方差矩阵作出修正:

  X(k+1|k+1)为当前时刻经过修正之后的最优估计结果。将电池的端电压作为观测变量,故Y(k+1)就是k+1时刻的电池端电压。
  为了将卡尔曼滤波非线性系统领域,大家提出了扩展卡尔曼滤波(Extended Kalman Filter,EKF)。在线性Kalman滤波的基础上,EKF通过将非线性离散模型在状态估计值附近作泰勒级数展开,但是实际运用中一般对泰勒展开公式做一阶截断而略去二阶以及以上高阶项以减小计算量,扩展卡尔曼滤波虽然得到广泛地应用。
但是EKF在线性过程中存在一些缺点。(1)泰勒级数展开公式因忽略其高阶项会使得卡尔曼滤波算法在高度非线性系统的应用中滤波结果发散;(2)EKF需要计算较为繁琐的雅可比矩阵(Jacobian);(3)只有在状态方程和观测方程都接近线性且连续时EKF才能最终较好的收敛于全局最优。
  为了解决EKF算法存在的上述问题,大家又提出了一种新的改进算法,称为无迹卡尔曼滤波(Unscented Kalman Filter,UKF)。UKF将非线性系统函数的近似线性化转换为对系统状态变量的概率密度分布的近似,相对于EKF通过线性化忽略高阶项而带来的误差以及繁琐的雅克比矩阵计算,具有更高的效率!

2、UT变换

  UT变换是根据当前时刻的状态变量x的均值和方差,按照某种采样规则选取一定的采样点(Sigma),然后对构造的每个采样点进行非线性变换,得到变换后的新的点集,以及变换后的点集的均值和方差。
  在后续的求解过程中使用UT变换中得到的样本点集作为前一时刻的状态值,UKF依赖加权的Sigma点对n维状态变量近似表示,通过非线性状态方程对估计值进行更新,有效的克服了EKF估算精度比较低、应用于强非线性系统时稳定性差等不足。
  首先构建Sigma点,根据输入的状态变量X的统计值x和P,采用构造2n+1个Sigma点的对称采样策略,每个采样点与变量X具有相同的统计特性:

  λ是用来衡量Sigma点分布的换算参数,通常是一个极小的正数,定义为:

  x和P分别为状态变量X的均值和方差,k为次级比例因子,在无迹变换(UT)中通常取0,假如状态分布为高斯时,取k=n-3,α为表示采样点与均值之间的接近程度的比例缩放因子,确定了采样点与均值之间的接近程度,通常取值为0-1之间。
  第i个Sigma点相对应的权值Wm,Wc为:

3、UKF算法流程

  无迹卡尔曼滤波算法是以UT变换为估算基础,并且采用标准卡尔曼滤波的递推公式为框架的离散滤波算法,构建Sigma采样点以及相对应的加权权重,将构造的采样点集带入到系统方程和状态方程中并且加以分析。
  (1)算法初始化

  (2)状态方程更新

  (3)测量方程更新

  采用Kalman滤波算法对动力锂电池的SOC进行估计,主要的递推运算包括滤波器计算以及滤波器增益计算。所谓滤波器计算就是将采集到的电池的工作电流I、温度T(今后的工作会考虑)作为输入量,根据这些输入变量得出SOC的估计值;滤波器增益计算则是根据状态变量的统计特性进行递推运算,计算出滤波器增益系数,与此同时也可以得出估计值的误差。利用卡尔曼滤波估计算法的电池等效电路模型必须能够准确地描述电池的动态性能,与此同时模型阶数不能太高,否则运算量会大大增加,实现起来会变得困难。
  卡尔曼滤波算法的优点在于整个估算过程中能够不断通过测量值的反馈对SOC的估计值进行实时的修正,同时对于SOC初始值的误差具有非常强的修正作用,对随机噪声也有很强的抑制作用,所以能够保持很好的精度。

4、基于UKF的电池SOC估算

  SOC预测阶段:以k时刻的状态变量SOC(Xk)为例,状态空间的状态变量X(k)=[SOC(k),U1(k),U2(k)]为3维变量,通过UT变换构建2n+1个Sigma点,根据k时刻的SOC值,输入电流I(k)以及SOC的误差Pk,通过系统的状态方程计算出k+1时刻的SOC估计值SOC(k+1)1、SOC(k+1)2、SOC(k+1)3、SOC(k+1)4、SOC(k+1)5、SOC(k+1)6、SOC(k+1)7,利用均值加权权值wm可以得到k+1时刻的估计值SOC(k+1)平均,根据方差加权权值wc可以得到k+1时刻的误差估计值Pk+1,同时还要根据系统的观测方程来计算k+1时刻观测值端电压估计值yk−。
  SOC更新阶段:首先,利用设备采集到的k时刻端电压观测值yk和端电压的估计值yk−计算得到差值∆U,然后,根据系统方程以及Pk+1计算k 时刻的卡尔曼增益Kk,最后对k+1时刻的先验估计值做出校正从而可以得到当前时刻的SOC真实值SOCk+1 = SOCk+1− + Ke × ∆U,同时更新误差方差矩阵Pk+1。
  SOC估算递推过程中的电池模型参数通过卡尔曼滤波算法递推得到。将KF算法辨识的电池模型参数结合UKF进行SOC估算递推,这就是基于双卡尔曼滤波(KF+UKF)算法的电池SOC估算流程。

5、算法验证

  我们将DEKF算法与DUKF算法的电池SOC估算结果进行比较。



  由仿真结果可知,DUFK算法相对于DEKF算法具有更高的精度!符合电池管理系统的使用及开发要求。

电池SOC仿真系列-基于双卡尔曼滤波(KF+UKF)算法的电池SOC估算相关推荐

  1. ## ***电池SOC仿真系列-基于扩展卡尔曼(EKF)算法的SOC估计(内含代码等资料)***

    ## ***电池SOC仿真系列-基于扩展卡尔曼(EKF)算法的SOC估计(内含代码等资料)*** ## 1 研究背景 电池的荷电状态(SOC)代表的是电池当前的剩余容量,数值定义是电池剩余电量与电池额 ...

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

    基于UKF算法的电池SOC估算 1.UKF算法   无迹卡尔曼滤波是将数据变化(UT变换)与卡尔曼滤波结合起来的一种算法,通过UT变换将一个状态点转换为多个状态点,依据一定的权重传递给后面观测值,再根 ...

  3. 电池SOC仿真系列-基于遗忘因子的最小二乘法电池参数辨识(二阶RC)

    基于遗忘因子的最小二乘法电池参数辨识   最小二乘法是系统辨识中最常用的一种估算方法.为了克服最小二乘法存在"数据饱和"的问题,我们通常采用含有遗忘因子的递推最小二乘法(Forge ...

  4. Simulink仿真:基于DC DC双向变换器的多电池主动均衡技术

    Simulink仿真:基于DC DC双向变换器的多电池主动均衡技术 关键词:锂电池:不一致性:模糊控制理论:DC DC双向主动均衡:荷电状态(SOC):均值-差值法 参考文献:基于DC DC双向变换器 ...

  5. 基于双视角图表示算法的双向人职匹配偏好建模推荐系统构建

    基于双视角图表示算法的双向人职匹配偏好建模推荐系统构建 文章目录 基于双视角图表示算法的双向人职匹配偏好建模推荐系统构建 1. 传统推荐系统模型 2. 协同过滤算法 3. 基于双视角图表示学习算法的模 ...

  6. 【滤波估计】基于双卡尔曼滤波实现soc和soh联合估计附matlab代码

    1 内容介绍 对电动汽车电池管理系统进行电池状态估计非常重要准确充电,实现电池模型参数的在线更新.在本文中,开路电压的估计转换为开路电压拟合的估计参数,快速时变参数开路电压被转换成几个慢时变参数.提出 ...

  7. 电动SOC仿真系列-考虑电池老化影响的电池UKF-SOC估算研究

    考虑电池老化影响的电池UKF-SOC估算研究(无迹卡尔曼滤波算法)   传统的电池模型往往将电池容量设定为定值.然后在实际情况中,电池的容量会随着电池循环充放电次数的增加而减少.因此有必要在建立电池模 ...

  8. 风力发电仿真系列-基于Simulink搭建的DFIG仿真模型

    基于Simulink搭建的DFIG仿真模型   双馈式感应发电机(DFIG)是在同步电机和异步电机的基础上发展起来的一种新型发电机.DFIG的主要优点是其足够宽的速度范围,能使组合式风力涡轮机以最佳的 ...

  9. 风力发电仿真系列-基于Simulink搭建的双馈风力发电(DFIG)模型

    基于Simulink搭建的双馈风力发电(DFIG)模型 1.双馈风力发电机   双馈异步风力发电机(DFIG)是一种绕线式感应发电机,是变速恒频风力发电机组的核心部分.DFIG主要由两大部分组成,分别 ...

  10. 电动汽车仿真系列-基于Simulink的并联混合动力汽车建模分析

    基于Simulink的并联混合动力汽车建模分析   本期介绍一种基于Simulink的并联混合动力汽车的建模方法.并联混合动力汽车的工作模式可以分为六种.纯电动模式.纯发动机模式.混合驱动模式.充电模 ...

最新文章

  1. salt 基本组建之 grains,pillars(整理中)
  2. java解析静态AIS原始数据
  3. mysql sql 去除重复行_mysql – sql自连接表删除重复行
  4. Javascript启动LINUX的x86模拟器
  5. python字符串筛选输出_如何在Python中过滤字符串列表
  6. dhcp工具_网络分析之DHCP服务闯入QinQ二层隧道引发故障
  7. java开发C语言编译器
  8. 手写一个HTTP图片资源服务器,太容易了叭!
  9. 金橙子打标软件学习流程
  10. qdialog 只有点击才能获得焦点_张怡筠:怎么做,孩子才能真正爱上学习?
  11. 洛谷——P1176 路径计数2
  12. UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 31: ordinal not in range(128)
  13. 日志分隔工具Cronolog
  14. MFC中UpdateData()函数的使用
  15. 2019年中国研究生数学建模大赛的经验分享
  16. JeeSite快速开发平台v4.2.2源码+在线代码生成功能
  17. 微信Log日志分析——初步探索
  18. android 滑动取值_Android中滑屏实现
  19. 彻底解决阿里云图床上传图片,图片不显示问题
  20. 服务器文件夹只读属性去不掉,C# 去除文件或 文件夹只读属性

热门文章

  1. 计算机win7安装打印机,Win7系统怎么安装打印机 win7安装打印机的方法【图文详解】...
  2. felix 与Phoenix 发音 n和l的分辨
  3. 基于面积对比法的图形匹配
  4. 透明网桥算法c++实现
  5. 点歌APP开发解决方案详解
  6. <blockquote>标签 自定义样式
  7. 反双曲余弦函数之C#设计笔记(五)
  8. 2020年好用的BI应用排行榜
  9. 华三服务器如何修改默认ip,H3C路由器默认登录入口 192.168.124.1 设置步骤
  10. python中字典的索引_python字典索引