本发明属于电动汽车动力电池管理领域,涉及一种基于ud分解的自适应扩展卡尔曼滤波的soc估算方法。
背景技术:
常见的soc估算方法主要有电化学分析法、开路电压法、安时积分法、神经网络法、卡尔曼滤波法等。最常用的是安时积分法,该方法相对简单可靠,能够实现soc动态估算。卡尔曼滤波法也是一种常用方法。但传统的卡尔曼滤波算法适用于线性系统。后来通过研究者的不断改进和研究,提出了扩展卡尔曼滤波算法(ekf)、无迹卡尔曼滤波算法(ukf)和各种自适应卡尔曼滤波算法。这些改进的卡尔曼滤波算法可以适用于非线性系统。神经网络(neuralnetwork)法是一种新型智能算法,该方法不依赖对象的数学模型,具有较强的自适应学习能力与非线性映射能力是该方法的优点。
目前主流的soc估算方法主要是安时积分法、卡尔曼滤波法。最常用的是安时积分法,该方法相对简单可靠,能够实现soc动态估算。但该方法的初始值soc(0)如果较大,因电流积分的影响,会造成误差积累,且该方法受额定容量和库伦效率的影响。卡尔曼滤波法也是一种常用方法。该算法的核心思想是针对系统状态做最小方差的最优估计,通过系统的状态估计值和当前测量值对状态估计值的不断修正的过程。但传统的卡尔曼滤波算法适用于线性系统。后来通过研究者的不断改进和研究,提出了扩展卡尔曼滤波算法(ekf)、无迹卡尔曼滤波算法(ukf)和各种自适应卡尔曼滤波算法。这些改进的卡尔曼滤波算法可以适用于非线性系统。
安时积分法相对简单可靠,能够实现soc动态估算。但该方法的初始值soc(0)如果较大,因电流积分的影响,会造成误差积累,且该方法受额定容量和库伦效率的影响。
传统的卡尔曼滤波算法适用于线性系统。适用于非线性系统的ekf和ukf算法在对系统状态进行估计时,是将过程噪声和测量噪声视做均值为0的高斯白噪声,一般认为系统噪声协方差阵是常数。但实际上,噪声受外部条件影响很大,实际的噪声是时变的,噪声统计特性的不准确会造成误差积累。计算机在进行浮点运算时,存在单位舍入误差,数值的误差积累可能导致状态估计协方差矩阵失去非负定对称性问题,然后造成滤波发散。
技术实现要素:
有鉴于此,本发明的目的在于解决噪声未知的情况下,扩展卡尔曼滤波算法可能出现的滤波性能下降或发散的问题,解决计算机在进行浮点运算时,存在单位舍入误差,数值的误差积累可能导致状态估计协方差矩阵失去非负定对称性问题,然后造成滤波发散的问题,提供一种基于ud分解的自适应扩展卡尔曼滤波的soc估算方法,在ekf算法的基础上引入了改进的sage-husa噪声估计器,构成了自适应ekf算法,系统会在更新测量数据时对过程噪声和测量噪声进行实时修正,减少由于时变噪声对系统造成的误差;引入ud分解算法,保证任意时刻状态估计协方差矩阵的对称正定性,限制由于计算误差引起的滤波发散,达到提高估算soc的稳定性与精度的效果。
为达到上述目的,本发明提供如下技术方案:
一种基于ud分解的自适应扩展卡尔曼滤波的soc估算方法,包括以下步骤:
s1:初始化电池模型参数,包括放电效率和电池容量参数;初始化扩展卡尔曼滤波算法的参数,包括系统状态变量初值、状态误差协方差初值、过程噪声和观测噪声;
s2:初始化放电时间,并输入需仿真的电流工况;
s3:根据对应的状态变量soc的初值与hppc参数辨识实验辨识出来的结果得出相应的电池模型参数r0,r1,c1,其中等效电路模型的r0表示电池内阻,r1表示极化内阻,c1表示极化电容;
s4:计算出对应的系统状态空间形式的匹配系数ak,bk,ck,dk;
s5:估计当前时刻电池荷电状态soc(k);
s6:根据参数辨识出的soc与r0,r1,c1的对应关系,得出当前时刻对应电池模型参数r0(k),r1(k),c1(k),返回步骤s4,继续更新soc直至放电时间结束。
进一步,步骤s3中所述hppc参数辨识实验包括以下步骤:
s31:对电池进行标准充电,使端电压达到充电截止电压,此时电池soc=1;
s32:然后以1c的电流放电6min,使电池的soc值达到0.9,静置30分钟;
s33:进行一次hppc实验,记录下电流响应和电压响应;
s34:重复s32、s33步骤,分别在soc=0.8,soc=0.7,……,soc=0.2时进行hppc实验,得到电池在不同soc值下的电流响应与电压响应。
进一步,步骤s33中所述hppc实验,包括以下步骤:
a.t0~t1电池充分静置;
b.t1~t2以1c=36a恒流放电60s;
c.t2~t3电池静置120秒;
d.t3~t4以1c=36a恒流充电60s;
e.t4以后电池静置120秒。
开始放电前,电池的端电压就是此时的开路电压;在放电的瞬间时刻t1,电池电压瞬间下降,这是由电池欧姆内阻引起的;t1~t2时间段是极化电容充电的过程,电池端电压缓慢下降,表现了rc回路的零状态响应;在放电的结束瞬间t2,电容上的电压不会发生突变,电压的突变是由欧姆电阻引起;放电结束后t2~t3,是极化电容对极化电阻放电的过程,电池端电压缓慢上升,表现了回路的零输入响应。
进一步,步骤s4中还包括:
电池模型的状态方程,以及结合soc的定义转化成离散形式:
u(k)=uoc(k)+u1(k)+r0i(k)(2)
其中,式(1)是系统离散状态方程,式(2)是系统离散输出方程;输入变量为k时刻的电流i,输出变量是k时刻的电池端电压,将电池充电方向作为电流正方向;将电池荷电状态soc与极化电容两端电压u1作为系统的状态变量,经过推导得出对应的状态空间模型的参数为:
dk=r0(6)
式中,τ=r1c1
进一步,步骤s5包括以下步骤:
s51:状态量更新:
s52:误差协方差矩阵的更新及ud分解
pk|k1=ak|k1pk1|k1atk|k-1+qk-1=uk|k-1dk|k-1utk|k-1(8)
s53:求滤波增益矩阵
gk=uk|k-1fk(10)
sk=ckgk+rk-1(11)
滤波增益矩阵为:
s54:更新状态向量
s55:更新误差协方差矩阵
本发明的有益效果在于:与现有技术相比,本发明在卡尔曼滤波方法上考虑了过程噪声和测量噪声是时变的这一特性,并采用噪声估值器来估计时变的噪声。还考虑了计算机在进行浮点运算时,存在单位舍入误差问题,采用了ud分解算法,保证任意时刻状态估计协方差矩阵的对称正定性,限制由于计算误差引起的滤波发散。本算法能够在多种工况电流下验证,本发明提出的了ud分解自适应扩展卡尔曼滤波算法有效的提高了算法的精度,提高了算法的稳定性。
本发明的其他优点、目标和特征在某种程度上将在随后的说明书中进行阐述,并且在某种程度上,基于对下文的考察研究对本领域技术人员而言将是显而易见的,或者可以从本发明的实践中得到教导。本发明的目标和其他优点可以通过下面的说明书来实现和获得。
附图说明
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作优选的详细描述,其中:
图1为thevenin等效电路模型;
图2为hppc电压响应;
图3为hppc实验电压响应;
图4为本发明所述基于ud分解的自适应扩展卡尔曼滤波的soc估算方法流程图。
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
其中,附图仅用于示例性说明,表示的仅是示意图,而非实物图,不能理解为对本发明的限制;为了更好地说明本发明的实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;对本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
本发明实施例的附图中相同或相似的标号对应相同或相似的部件;在本发明的描述中,需要理解的是,若有术语“上”、“下”、“左”、“右”、“前”、“后”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此附图中描述位置关系的用语仅用于示例性说明,不能理解为对本发明的限制,对于本领域的普通技术人员而言,可以根据具体情况理解上述术语的具体含义。
本发明提供一种基于ud分解的自适应扩展卡尔曼滤波的soc估算方法,主要分为以下部分:1.电池模型的选择、建立、参数辨识;2.ud分解;3.自适应扩展卡尔曼滤波
1.电池模型的选择、参数辨识
电池模型的选择
本实施例选择thevenin等效电路模型作为研究对象,thevenin等效电路模型也可以叫做戴维南模型或者一阶rc电路模型。图中的r0表示电池内阻,r1表示极化内阻,c1表示极化电容,uoc为理想的电压源。该等效电路模型通过极化内阻r1和极化电容c1来对电池的极化反应和动态特性进行描述。thevenin等效电路模型结构相对简单,也对电池内部的极化反应进行相应的描述,因此thevenin等效电路模型在电动汽车领域被广泛应用。
thevenin等效电路模型如图1所示,它满足如下的数学关系式:
电池模型的状态方程,以及结合soc的定义转化成离散形式,以便于后续的递推运算
u(k)=uoc(k)+u1(k)+r0i(k)(1.3)
其中,式(1.2)是系统离散状态方程,式(1.3)是系统离散输出方程;输入变量为k时刻的电流i,输出变量是k时刻的电池端电压。将电池充电方向作为电流正方向;将电池荷电状态soc与极化电容两端电压u1作为系统的状态变量,经过推导得出对应的状态空间模型的参数为:
dk=r0(1.7)
式中,
τ=r1c1
电池开路电压(opencircuitvoltage)与soc之间关系的获取
锂离子电池开路电压(opencircuitvoltage)与soc之间存在一定的对应关系。一般认为,电池在得到长久充分静置之后,电池的开路电压(ocv)近似的等于电池的电动势。对电池进行放电静置的实验,就可以得到不同soc值对应的开路电压。在本文中,电池在室温(25℃)下进行放电静态实验,以完成ocv和soc的校准。
具体的实验步骤如下所示:
(1)将温度控制箱的温度设定为25℃,将电池放置到位并静置1小时;
(2)以1c的恒定电流为电池充电。当电池的充电电压达到4.2v的截止电压时,当电池以恒定电压充电直到电流降至0.05c时,停止充电,然后使电池静置1小时。
(3)此时测量电池的端电压并记录,这是soc=1时的开路电压;
(4)以1c的电流放电,放电时间为3分钟,静置1小时;
(5)测量电池的端电压并记录,这是soc=0.95时的开路电压;
(6)重复实验步骤(4)和(5)直到电池soc为0.05,并在此过程中记录电池端电压。
根据上述实验,获得了soc与开路电压的关系。
参数辨识
选取了一阶rc等效电路模型后,模型内部的参数直流内阻、极化内阻与极化电容还未知,为了得到电池模型参数,需要进行电池参数辨识实验。在参考freedomcar电池测试手册中的复合脉冲功率特性实验的hppc实验后,结合特定的实验要求制定了典型的测试条件,实验方案如下:
(1)t0~t1电池充分静置;
(2)t1~t2以1c=36a恒流放电60s;
(3)t2~t3电池静置120秒;
(4)t3~t4以1c=36a恒流充电60s;
(5)t4以后电池静置120秒。
此为单循环hppc实验,所用时间为360秒。例如,在soc=0.5的时候,实验过程的电流响应与电压响应如图2、3所示:
开始放电前,电池的端电压就是此时的开路电压;在放电的瞬间时刻t1,电池电压瞬间下降,这是由电池欧姆内阻引起的;t1~t2时间段是极化电容充电的过程,电池端电压缓慢下降,表现了rc回路的零状态响应;在放电的结束瞬间t2,电容上的电压不会发生突变,电压的突变是由欧姆电阻引起;放电结束后t2~t3,是极化电容对极化电阻放电的过程,电池端电压缓慢上升,表现了回路的零输入响应。
为了获得电池参数在不同soc值下的具体值,就要在不同soc值下对电池进行hppc实验,整个电池参数辨识的实验步骤如下:
1.对电池进行标准充电,使端电压达到充电截至电压4.3v,此时电池soc=1;
2.然后以1c的电流放电6min,使电池的soc值达到0.9,静置30分钟;
3.进行一次hppc实验,记录下电流响应和电压响应;
4.重复2、3步骤,分别在soc=0.8,soc=0.7,……,soc=0.2时进行hppc实验,就可以得到电池在不同soc值下的电流响应与电压响应。
根据以上实验结果可以进行thevenin模型参数r0,r1,c1的计算。这些参数都是与电池soc有关,且是动态变化的。
2.ud分解
在系统状态参数维度比较高的时候,卡尔曼滤波算法会因为计算机字长的限制,可能会存在较大的计算舍入误差,进而导致协方差矩阵失去非负定性,进而引起滤波器的性能下降或者是滤波发散。为了保证滤波器的稳定性与减小计算量,将协方差矩阵p进行ud分解,即p=udut,其中u是n*n维的单位上三角阵,d是n*n维的对角阵[30]。产生ud矩阵的具体步骤如下:
(1)对于第n列,有
dnn=pnn(1.8)
(2)对于其他列,j=n1,n-2,...,1,则有
3.改进的sage-husa自适应扩展卡尔曼滤波算法的soc估算
在ekf算法对系统状态进行估计时,是将过程噪声和测量噪声视做均值为0的高斯白噪声,一般认为系统噪声协方差阵是常数。但实际上,噪声受外部条件影响很大,实际的噪声是时变得,噪声统计特性的不准确会造成误差积累。故,按照先验知识确定的固定噪声统计特性可能会造成滤波器的性能下降甚至是出现滤波发散的现象。
为了解决噪声未知的情况下,扩展卡尔曼滤波算法可能出现的滤波性能下降或发散的问题,常用的方法是采用自适应滤波的方法。常用的自适应滤波方法有协方差匹配法和sage-husa的自适应滤波算法。本文在此引入改进的sage-husa的噪声统计估计器,用来处理时变噪声统计估计问题。aekf的线性离散模型与前文中的ekf离散模型相同,常规卡尔曼滤波算法中的qk、rk、qk、rk是给定的常数,而自适应滤波算法会实时修正这四个值。
sage和husa通过观测噪声统计,提出了极大后验(map)噪声统计估值器为:
在公式(4.60)~(4.63)中qk、rk、qk、rk用的是算术平均,和式中每项的加权系数都为1/t,对于时变的噪声统计qk、rk、qk、rk应强调新近数据的作用,对于陈旧数据应渐渐遗忘和消失,本文采用指数加权方法,则相应的时变噪声统计递推估值器为:
相应的sage-husa自适应滤波算法为
xk=xk|k-1+kkzk(1.20)
pk=[i-kkhk]pk|k-1(1.25)
其中:dk=(1b)/(1-bk+1),b为遗忘因子,b是遗忘因子,取值范围为0<b<1,通常在0.95到0.99之间选取。
基于ud分解自适应扩展卡尔曼滤波的基本流程
ud分解自适应扩展卡尔曼滤波算法是一种有效提高滤波算法数值稳定性的分解方法。ud分解是将协方差矩阵分解为单位上三角及对角阵形式,一方面保证了协方差矩阵的非负定性,另一方面可以减小计算的复杂度。
下面给出ud-aekf算法的基本流程:
(1)状态量更新:
(2)误差协方差矩阵的更新及ud分解
pk|k-1=ak|k-1pk-1|k-1atk|k-1+qk-1=uk|k-1dk|k-1utk|k-1(1.27)
(3)求滤波增益矩阵
gk=uk|k-1fk(1.29)
sk=ckgk+rk-1(1.30)
滤波增益矩阵为:
(4)更新状态向量
(5)更新误差协方差矩阵
以上是算法的递推更新的过程,不断的进行递推,测量更新进行迭代。本文在基于改进的sage-husa的自适应扩展卡尔曼滤波算法的基础上与ud分解相结合,对aekf算法的误差协方差矩阵进行ud分解,降低了误差协方差矩阵失去非负定性的可能。
基于ud分解自适应扩展卡尔曼滤波的soc估算基本流程
基于ud分解的自适应扩展卡尔曼滤波的soc估算算法流程如下:
(1)首先,初始化电池模型参数放电效率、电池容量等参数。初始化扩展卡尔曼滤波算法的参数系统状态变量初值、状态误差协方差初值、过程噪声、观测噪声
(2)初始化放电时间,并输入需仿真的电流工况。
(3)根据对应的状态变量soc的初值与hppc参数辨识实验辨识出来的结果得出相应的电池模型参数r0,r1,c1
(4)根据公式(1.2)~(1.7)推导出对应的系统状态空间形式的匹配系数ak,bk,ck,dk
(5)利用ud-aekf算法公式(1.26)~(1.33)估计当前时刻电池荷电状态soc(k);
(6)根据参数辨识出的soc与r0,r1,c1的对应关系,得出当前时刻对应电池模型参数r0(k),r1(k),c1(k),返回步骤(4),继续更新soc直至放电时间结束。
最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。