康道新,李立伟,杨玉新,王凯
(青岛大学 a.电气工程学院;b.图书馆,山东 青岛 266071)
传统汽车的出现为人们的出行带来了巨大的便捷,推动了人类发展的进程。但汽车数量的不断增加也带来了能源短缺和环境污染两大难题[1]。随着人们节能和环保意识的不断增加,为应对这两大难题,各国汽车厂商一直在寻找一种两全其美的办法,直到电动汽车开始进入人们的视野,并在近几年快速发展,人们才看到了解决这两大难题的希望。作为新能源汽车,电动汽车完全依靠电池输送的电能来运行,可以有效减少化石能源的消耗,也不会产生尾气污染。作为电动汽车核心的电池需要保持长期的可靠性,这就要依靠为电动汽车配备的电池管理系统在行驶过程中实时监测电池状态,其中最主要的参数是电池的荷电状态(state of charge,SOC)和健康状态(state of health,SOH)[2]。电池管理系统需要精确估算电池的SOC值和SOH值,为驾驶员提供准确的电池状态信息,及时对汽车电池进行充电或更换,才能有效避免因电池故障导致的安全事故,保证安全驾驶[3]。
锂电池主要是通过SOC值和SOH值来反映电池的实时状态[4]。电池的SOC指当前电池的剩余电量与额定容量之比,是评判电动汽车当前最大行驶里程的决定性参数。估算电池SOC值的方法主要有:①安时积分法[5]——通过测得电池工作时的电流,并将电流与时间进行积分,计算出电池输出的电量,得到SOC值,该方法在计算开始阶段具有较高的精度;但随着工作时间的推移,之前产生的误差也会累积,造成后期SOC误差增大。②开路电压法[6-7]——在离线状态下测得电池工作状态下开路电压与电池SOC的数据,并拟合成函数关系,即可通过测得电池工作时的电压得到相应的SOC值;但需要电池长时间静置,才能测得电池内部达到稳定时的开路电压,不适用于在线监测。③包括卡尔曼滤波[8-9]、粒子滤波[10]、神经网络[11-12]等新型估算方法,这些方法不需要研究电池内部的化学机理,直接通过电池当前电压、电流等参数估算出SOC,适用于锂电池的在线监测。其中,卡尔曼滤波算法因不需要大量的历史数据进行算法训练,使得算法更为简单、适应性广,得到广泛研究和应用。
电池的SOH通常指电池的老化程度,描述电池当前储电量与理想储电量的对比。随着电池老化,会出现容量减小和内阻增大的情况,所以计算SOH值的主要参数是电池容量和内阻[13]。理论上应该从电池当前可用容量与电池理想容量对比来计算SOH值,而这需要电池完全充电与放电;所以这种方法只适用于实验室中电池的性能测试,对于正在运行中的电动汽车并不适用。本文选用内阻作为参数,通过估算内阻来计算得到电池的SOH值。
国内外现有的估算电池SOH值的方法主要分为离线估算法和在线估算法两类[14]。前者包括内阻法、容量法、电压曲线拟合法等[15]。离线法是电池在离线状态下测得的电池SOH值与电池某一参量的关系曲线,该方法设计简单,但测量误差较大,不适用于在线检测。后者包括卡尔曼滤波法、粒子滤波法、神经网络算法等[16-18],这些方法可以对电池进行实时检测分析,更具有实用价值,近年来得到了迅猛发展。卡尔曼滤波法与神经网络法等方法相比,需要的数据量较少,相应的计算量也小,估算精度较高,更适用于电动汽车。
由于卡尔曼滤波法存在以上特性,更加适用电动汽车的实际工况,其在计算电池状态方面被广泛应用。Plett[19]通过建立电池模型,利用拓展卡尔曼滤波计算电池的SOC值,拓展卡尔曼滤波算法需要将非线性方程线性化,忽略高次项,易造成线性化误差。魏可新[20]等通过将电池模型中的欧姆内阻变为状态变量,加入到算法当中,可以实时更新电池模型,使得估算出的SOC值更为精确。赵天意[21]等提出了噪声方差可以变化的卡尔曼滤波法,可实时更新噪声方差,更加符合电动汽车的运行工况。汪秋婷[22]等利用双无迹卡尔曼滤波(double unscented Kalman filter,DUKF)算法同时估算锂电池的SOC值和SOH值,精度在4%以内,但是算法的快速收敛性还需改进,且精度还可以进一步提高。本文选用双自适应无迹卡尔曼滤波(double adaptive unscented Kalman filter,DAUKF)算法估算电池的SOC值和内阻,再以内阻为参数,利用函数关系式估算得到SOH值;通过噪声方差自适应减少噪声干扰,使估算结果更加精确,收敛性更好。
为精确模拟锂电池的工作状态,本文选用二阶戴维南电池模型。戴维南模型利用RC环路,可以更准确地表现出电池的动态过程,精度更高。通常电池模型的RC阶数越高,对电池充放电状态的反映越准确,但这会使电池模型变得极为复杂。从实际应用考虑,二阶RC模型就可以较好地满足电动汽车的使用,既能保持精度,又不会产生大量计算。二阶RC电池模型如图1所示。图1中,Uoc为电池开路电压,R0为电池的欧姆内阻,R1、R2与C1、C2为电池的极化电阻和极化电容,U1与U2为2个RC环路的电压,I为电池输出电流,Uo为电池端电压。
图1 锂离子电池二阶戴维南等效电路模型Fig.1 The second-order Thevenin equivalent circuit model of Li-ion battery
根据戴维南电池模型及基础电路知识估算SOC值KSOC,列写出如下关系式:
(1)
(2)
Uo=Uoc-U1-U2-I(t)R0.
(3)
式中:t为时间;KSOC,0为SOC在0时刻的初始值;η为库伦效率,通常在放电条件下η=1;QN=1/3 600CN,CN为电池的标准容量;Uo和I均可通过实验测得。
本文选用额定电压为3.7 V,额定容量为10 Ah、SOC为100%的锂电池为仿真实验对象,按10 A电流对电池进行间歇恒流脉冲放电实验,并记录实验数据。通过分析得到的实验数据,对电池模型进行参数辨识。放电间歇周期为360 s,其中放电180 s,然后电池停止放电静置180 s,使得开路电压恢复稳定值并记录下来,此时开路电压约等于电池电动势;每次循环SOC减少5%,测试时间为7 200 s。间歇恒流脉冲工况如图2所示。
图2 锂电池放电电流Fig.2 Discharge current of lithium battery
图3为放电实验中选取的部分电压曲线。由图3可以看出,在放电开始和结束的瞬间,电池电压均发生突变,之后再缓慢变化,达到一个稳定值。结合电池模型和放电曲线分析可得,电压突变是由于电池欧姆内阻通电和断电产生的,而缓慢变化的部分是由极化电容通过极化内阻充放电产生的。
图3 脉冲放电电池端电压波形Fig.3 Terminal voltage waveform of impulsive discharge battery
1.2.1 电池欧姆内阻辨识
由图3可以看出,在一次脉冲放电过程中,有曲线AB和曲线CD两段发生2次电压突变,分别记为ΔUAB和ΔUCD。为减少内阻估算误差,可将电池开始放电时的电压突变值ΔUAB与停止放电时的电压突变值ΔUCD求和,再求取平均值。由于已知放电电流,可通过欧姆定律求取内阻,即
(4)
1.2.2 极化电阻和极化电容辨识
图 3中,电池停止放电后端电压的渐变过程曲线DE可以由2个RC回路模拟。此时RC回路为零输入响应,则从D点到E点的端电压
(5)
式中t0为D点的时刻。
利用MATLAB的Curve Fitting工具箱对电压与式(5)的函数进行拟合,即可得到2个RC回路的模型参数。利用实验数据最终求得电池模型参数包括:R0=37 mΩ,R1=2.195 mΩ,C1=3.924 kF,R2=1.989 mΩ,C3=26.483 kF。
记录实验中每次循环中Uoc与KSOC的对应关系,为减少拟合误差,本文选用五阶多项式对数据进行拟合,可得到拟合式(6),拟合结果如图4所示。
0.081 378KSOC+3.295.
(6)
图4 端电压与SOC拟合曲线Fig.4 Uoc-KSOC fitting curve
无迹卡尔曼滤波算法不同于拓展卡尔曼滤波算法,后者是将非线性的系统方程作一阶泰勒展开,而忽略高次项,这很容易造成线性化误差的积累,使得估算误差越来越大,导致结果发散;而无迹卡尔曼滤波算法采用卡尔曼线性滤波框架,利用无迹变换处理均值和协方差的非线性传递问题[23]。无迹卡尔曼滤波算法对非线性函数的概率密度分布进行近似,利用样本来趋向状态的后验概率密度[24],比拓展卡尔曼算法具有更高的计算精度,鲁棒性也更好。
无迹卡尔曼滤波算法具体步骤如下。
(7)
步骤2,利用无迹变换,选取2n+1个Sigma点(其中n为状态的维数,本文中n=3,所以共有7个采样点),并计算相应的权值ω。
Xk-1,i=
(8)
(9)
步骤3,计算Sigma点的预测。
(10)
式中:下标k/k-1表示变量在k-1时刻和k时刻的中间估计值,下同;F为状态方程函数;Ik-1为k-1时刻电流。
步骤4,由求得的Sigma点及其对应权值,对Sigma点加权求和,计算得到电池状态变量的预测值及协方差矩阵。
(11)
式中Q为状态方程高斯白噪声的协方差。
步骤5,进行二次无迹变换,产生新的Sigma点集。
Xk/k-1,i=
(12)
步骤6,将新的Sigma点代入观测方程,可以求得预测的观测量Z。
(13)
式中G为观测方程函数。
步骤7,通过预测观测值加权求和,求得系统预测的均值和协方差。
(14)
式中:Pzz,k为预测观测值Zk的协方差;Pxz,k为预测状态值Xk和预测观测值Zk的协方差;R为观测方程高斯白噪声的协方差。
步骤8,计算卡尔曼增益矩阵。
(15)
步骤9,最后通过无迹卡尔曼滤波估算出电池的状态和协方差。
(16)
无迹卡尔曼滤波算法容易受到噪声的干扰,而且在电动汽车行驶过程中产生的噪声是随机不确定的,并不符合高斯白噪声的特点,这就容易使无迹卡尔曼滤波算法在实际应用中产生较大误差;所以需要对无迹卡尔曼算法中的噪声方差进行自适应处理,使算法精度进一步得到提升。自适应过程如式(17)和式(18):
(17)
(18)
式中:k时刻的系统噪声wk、观测噪声vk及系统噪声协方差Qk、观测噪声协方差Rk是通过对时变噪声统计的估计值递归获得的;dk=(1-b)/(1-bk),b为遗忘因子,通常取值为02.4 双自适应无迹卡尔曼滤波计算SOC及欧姆内阻
利用DAUFK算法计算电池的SOC值和SOH值时,需要欧姆内阻R0在内的精确电池参数,而计算R0时,也需要准确的SOC值;所以本文选用2个卡尔曼滤波器AUKF1和AUKF2,分别计算SOC值和R0,然后各自作为已知参数去计算另一状态量,形成迭代计算,不断更新状态。这里的R0不再是一个固定的常数,而是一个动态的系统估计量,需要通过算法求得,以此实时估算电池的SOH值。
2.4.1 SOC值估算
离散化式(1)和(3),可整理得到电池的状态方程和观测方程,分别如式(19)和式(20):
(19)
Uo,k=Uoc,k-U1,k-U2,k-IkR0+vk.
(20)
式中:T为采样频率,实验中T=1 s;Uoc是关于SOC的函数,可通过Uoc-KSOC曲线求得。
2.4.2 SOH值估算
在电池的使用过程中,不断的充电和放电会使电池产生老化现象。当老化到一定程度时,即电池SOH值过小时,就不再符合使用标准;因此,需要通过电池内阻求得SOH值,以判断电池是否符合使用标准。SOH值的定义为[14]
(21)
式中:Rold为电池容量降到80%时的内阻;Rnow为电池当前的内阻;Rnew为刚出厂新电池还未使用时的内阻。SOH值的合理范围为0~100%,当KSOH低于0时,电池容量已经降到80%以下,并且电池内部耗电量增加,不再符合电动汽车的使用标准。
为了实时估算出精确的电池SOH值,作为评判电池能否满足使用的标准,必须计算出电池内阻R0。这时R0不是一个固定参数,而是一个缓慢变化的状态变量,将其离散化,得到状态方程和观测方程如下:
(22)
式中:R0为上一步估算值基础上加上1个噪声得到;rt和et分别为估算内阻过程中的系统噪声和观测噪声,其协方差分别为Dr和De。
本文利用Simulink环境对实验电池在不同工况下进行仿真放电实验,并利用算法对电池的SOC值和SOH值进行估算。将电池的状态空间模型式(19)及式(20)作为状态方程和观测方程,分别代入到DUKF算法和DAUKF算法当中,并将算法编写进MATLAB程序中运行。通过对电池进行间歇恒流放电实验,将实验得到的电池电压和电流数据代入到DAUKF算法的程序中进行运算。利用算法不断循环计算,可以实时在线计算出电池的SOC值,并将预测结果进行对比。其中,SOC参考值是在电池放电实验时,利用安时积分法得到的;其次如第1.2节,对电池进行参数辨识,KSOC每下降5%辨识1个内阻值,然后将内阻与放电时间进行拟合;在电池间歇放电的停止放电间隙时,可以认为电池内阻不变,以此得到电池内阻的参考值,再由式(21)求得SOH参考值。
预测结果如图5所示,基于DUKF算法得到的电池SOC值误差在3%左右,而基于DAUKF算法的SOC预测值误差则稳定在1%以内;这验证了DAUKF算法的精确性,并且稳定性良好,可以很好地完成电池SOC估算工作。
通过实验还发现,在预测初始值和参考初始值相同时,DUKF算法可以具有较好的预测效果。当初始值存在较大误差时,如图6中,初始值存在20%的误差,虽然DUKF算法会使预测值最终收敛,但是收敛速度过慢,造成前期预测误差较大,对于实际应用将造成很大影响。相比之下,通过对噪声方差的自适应,DAUKF算法可以在初期对初始值进行快速收敛,这样就不会对整体误差产生较大影响,验证了DAUKF算法较好的快速收敛性,可以保证实时数据的准确性。
图5 SOC预测值及预测误差Fig.5 SOC prediction value and prediction error
图6 初始值存在误差时SOC预测值及预测误差Fig.6 SOC prediction value and prediction error when initial value has error
为验证DAUKF算法同时估算SOH值的可行性,本文选用有一定老化程度的锂电池为实验对象。预测结果如图7所示,在估算欧姆内阻R0时,R0误差稳定在2%以内,说明算法对R0也可以较好地估算。由估算得到准确的内阻值,就可以推算出电池的实时SOH值,如图8所示,SOH值在86%左右,且预测误差较小,验证了算法准确的预测性能。
为测试算法在复杂工况下的预测性能,选用更加复杂的变电流工况,这种工况更符合实际行车工况,并再次对锂电池进行放电实验。实验历时 1 680 s,放电电流如图9所示,SOC值和SOH值结果如图10和图11所示。
图7 内阻预测值及预测误差Fig.7 Prediction value and error of internal resistance
图8 SOH预测值及预测误差Fig.8 SOH prediction value and prediction error
由图10可见,在变电流工况下,DAUKF算法也能较好地跟踪SOC参考值,使预测曲线基本与参考值重合,误差在1%以内。对比图10、图11可以看出,DAUKF对SOH的预测误差较SOC误差大,但也可以稳定在2%以内,满足电动汽车的使用要求。
通过以上仿真实验结果可知,DAUKF算法可以在很大程度上减少状态量初始值误差的影响,在初始值存在较大误差时,也可以快速收敛并跟踪实际值,估算误差也比DUKF算法有很大改善,即使在较为复杂的工况下,算法预测结果也较为精确和稳定。算法结构较为简单,可以快速得到结果,并且实验结果稳定,能够满足电动汽车锂电池状态实时检测和估算的要求。
图9 变电流工况Fig.9 Variable current condition
图10 变电流工况下SOC预测值及预测误差Fig.10 SOC prediction value and prediction error under variable current condition
图11 变电流工况下SOH预测值及预测误差Fig.11 SOH prediction value and prediction error under variable current condition
本文将内阻作为状态参数实时更新,并通过对算法噪声方差自适应的改进,提出DAUKF算法,可以同时估算锂电池的SOC值和SOH值。对DAUKF算法进行仿真实验,结果表明:在不同工况下估算电池SOC值和SOH值时,DAUKF估算结果有较高精度和稳定性;在SOC初始值误差较大的实验条件下,DAUKF估算结果较DUKF估算结果收敛更快,精度更高;利用估算出的电池内阻得出SOH值,精度保持在2%。综合实验结果得出结论:DAUKF算法具有简单、计算速度快、精度高、收敛性好等特点,具备很强的实用性,可以实现对电动汽车电池状态的实时检测和估算,对延长电池使用寿命和提高驾驶安全性有重要意义。