基于EKF-SVM 算法的动力电池SOC 估计*
2020-12-08刘兴涛刘新天
刘兴涛 , 李 坤 武 骥 ,何 耀,刘新天
(1.合肥工业大学车辆工程系,合肥 230009; 2.安徽省智能汽车工程实验室,合肥 230009;3.合肥工业大学汽车工程技术研究院,合肥 230000)
前言
锂离子电池以其高比功率、高工作电压、低污染、低自放电速率和长循环寿命等优点,广泛应用于汽车、航天和船舶等领域。 而电池的SOC 预测对充放电管理和均衡管理等起着决定性作用,也会直接影响电池组的使用寿命与安全。 因此,对电池SOC的准确估算成为研究的热点。 已出现多种电池SOC估算方法。 (1)开路电压法准确、易行,但要求电池长时间的静置,为实现实时估计,须对算法进行改进。 Chen 等[1]通过一种新的参数回溯策略,使用重建的OCV 曲线估算SOC,显著提高了估算精度;陈宗海等[2]提出了一种面向工程应用的SOC 估计方法,通过获取端电压与SOC 的关系,实现在非过充条件下的SOC 估计;Xiong 等[3]通过使用H∞滤波器在充放电中的电流电压数据确定OCV-SOC 的关系,提高了SOC 估计的准确性。 (2)安时积分法是应用较为广泛的方法。 其短时间内估算精度高,但初始值误差以及累计误差会明显降低估计精度。 刘东等[4]采用了一种改进的安时积分算法,综合考虑温度、充放电倍率和循环周期等对SOC 估计精度的影响,但只适用于电流变化不大的工况,实用性较差;刘新天等[5]通过Drift-Ah 积分法进行电池SOC 的估算,有效减少了漂移电流对精度的影响。 (3)数据驱动算法如神经网络法等,须采集大量数据,对数据的依赖性很大,易陷入局部极小。 Guo 等[6]采用了一种在线神经网络的SOC 校正方法,可以实时跟踪电池模型变化以及电池老化引起的可用容量变化;Guo 等[7]提出了一种基于模糊加权算法的SOC 估计方法,将GA-BP 神经网络与安时积分法相结合,但其估计精度易受样本数据影响;Antón 等[8]利用电池参数的实验数据集结合支持向量机算法,实现了SOC 实时在线更新;Bo 等[9]通过结合克隆选择理论的BP 神经网络算法实现了 SOC 高精度估计。(4)滤波算法如卡尔曼滤波法和粒子滤波等。 杨海学等[10]采用改进的无迹卡尔曼滤波算法动态估计电池SOC,有效降低了模型精度带来的估计误差;谈发明等[11]提出了一种新型鲁棒无迹卡尔曼滤波算法,能够有效克服野值干扰,实现了SOC 估计精度和鲁棒性的双重提高;刘新天等[12]将基于Vmin模型的EKF 算法应用于SOC 估计, 通过增强对噪声的抗干扰能力,提高了估计精度;Wang 等[13]使用双无迹卡尔曼滤波器估算电池SOC,提高了估计的精度和稳定性,但运算复杂,实用性不强。 (5)非线性观测器通过使用状态方程作为输出状态建立模型,在下一阶段将其分解为观测方程,使其具有较强的鲁棒性,但数学推导较为复杂。 Chen 等[14]利用基于等效电路模型的自适应增益滑模观测器来估计SOC。 在开关增益可调的情况下,很好地降低了抖振,达到了不错的估计精度;Ma 等[15]通过考虑电池充放电切换过程中的迟滞效应的滑模观测器进行高精度SOC 估计,但模型未考虑电流噪声对估计误差的影响;皮钒等[16]采用了一种结合扩展粒子群算法的离散比例积分控制器来估计SOC,具有结构简单,估计精度高等优点。
综上所述,现阶段所提的单一SOC 估计算法均有明显缺陷,无法在估计精度、收敛速度、鲁棒性、运算复杂度和模型泛化性等方面做到兼顾。 虽然以上文献也通过改进算法来降低算法缺点的影响,但未综合考虑算法在多个指标上的表现。
鉴于此,本文中提出一种基于EKF 支持向量机(EKF-SVM)的组合算法,通过实现不同算法的优势互补,进一步提高SOC 的估计效果。 由于EKF 算法易受不规则噪声影响,而SVM 算法鲁棒性高,为结合两者优点,基于EKF 算法的电流、电压、SOC 估计值等信息,利用SVM 算法的学习能力和复杂映射能力对EKF 算法估计误差进行补偿,修正估计偏差,在确保可靠性的同时,进一步降低SOC 估计误差。
1 动力电池建模与参数辨识
1.1 动力电池建模
综合考虑电池组在实际应用环境中的各种因素,建立相对简单、准确的电池模型是电池状态估计的重要步骤。 其中,等效电路模型(equivalent circuit models,ECM)因为计算量小、参数易辨识、精度高等优点而得到广泛应用。 研究表明,随着RC 阶数增加,模型计算复杂度明显增加[17],而2 阶以上模型的精度提高不明显。 综合考虑模型精确度和运算复杂度要求,本文最终选用如图1 所示的2 阶RC 等效电路模型作为电池仿真的研究对象。
图1 中RP和CP表示电池的极化电阻和极化电容,Rd和Cd表示电池的扩散电阻和扩散电容,Ut表示电池的端电压。 电池的电流电压特性可表示为
SOC 的计算采用如下安时积分的定义:
式中:s(t)为t时刻的SOC 值;s(0)为初始时刻SOC值;QN为电池标称容量;η为库伦效率,常取η=1;I(t)为放电电流。 结合式(1)和式(2)以及相关电路知识可由所建模型得到以下状态方程:
式中:τp和τd为时间常数;τp=RpCp;τd=RdCd。
式(1)中UOCV的值通常表示为SOC 的单调函数形式,即UOCV=f(SOC)。 通过小电流工况数据,即以C/20 小电流充放电,通过每变化10%的SOC 后静置得到的端电压近似表示开路电压,可将UOCV近似表示为SOC 的七次多项式:
1.2 递归最小二乘法参数辨识
模型参数的精确辨识有助于提高SOC 估计精度,而基于自适应滤波理论发展而来的带遗传因子的递归最小二乘法[18]是常用的模型参数辨识方法。其基本思想是:本次估计量=上次估计量+补偿值,对电池模型参数进行估计时,通过观察电池状态观测值的误差,自适应调整模型参数,降低了运算量和运算复杂度,便于实现对参数的在线辨识。 减少旧数据的信息量可以实现更好地跟踪系统动态工作状态,因此置入遗忘因子λ=0.99,提高估计精度。 算法步骤如下。
(2)计算下一时刻增益K(k+1)
(3)计算下一时刻的P(k+1)
(4)计算下一时刻的状态估计值θ^(k+1)
式中:K(k+1)为递归最小二乘增益矩阵;P(k)为协方差矩阵;I为单位矩阵;φ(k+1)为量测矩阵;为参数估计矩阵;e(k) 为观测输出误差。 循环步骤(2) ~ (4),计算,从而得到实时模型参数。
2 基于EKF-SVM 算法的SOC 估计
2.1 基于EKF 的电池SOC 估计
对于非线性系统的滤波问题,常用方法是EKF算法,核心思想是利用泰勒公式对系统进行线性化。
结合式(1)和式(4),由所建等效电路模型可知系统状态空间方程为
式中:x(k)= [s(k),Up,Ud(k)]T;y(k)为端电压Ut;u(k)为I(k);w(k)为过程噪声;v(k)为量测噪声[19]。 EKF 算法的 SOC 估计步骤如下。
(1)初始化:k=0,初始状态向量和初始偏差,即x(0)= [s(0),0,0]和P0。
(2)估计过程:k=1,2,3,…,噪声协方差矩阵为Q,观测协方差矩阵为R。
第1 步,时间更新。
状态先验估计:
计算误差协方差:
第2 步,量测更新。
量测误差更新:
更新增益系数:
状态更新:
更新误差协方差:
第3 步,回到第1 步进行下一周期更新。
具体SOC 估计流程如图2 所示。
图2 EKF 算法流程图
2.2 SVM 算法
SVM[20-21]是分类与回归中分析数据的监督式学习算法。 其原理是通过构造最优划分超平面,将问题转化为线性可分问题。 其中,超平面的划分可表示为
式中:w=(w1,w2,…,wd)为法向量;b为位移项。
为使超平面间距最大,即求解下式:
基于SVM 的回归预测[22],其目的为给定样本数据D={(x1,y1),(x2,y2),…,(xm,ym)},f(x)与y尽可能接近。 支持向量回归( support vector regression,SVR)的核心思想是假设仅当f(x)与y之间的绝对差值大于∈时才计算为损失。 于是,SVR问题可化为
式中:C为正则化常数;l∈为不敏感损失函数。 引入松弛变量ξi和,可将上式写为
为求其最小值,通过引入Lagrange 乘子μi≥0,≥0,ai≥0,≥0,可得 SVR 对偶问题:
上述过程须满足KKT 条件,即要求:
由此可知,SVR 的解表示为
则回归估算函数可表示为
式中:κ(x,xi)=φ(x)Tφ(x)为核函数。 在 SOC 估计中,根据电流、电压与SOC 的关系特点,选择了线性核函数。
2.3 基于EKF-SVM 的SOC 估计
EKF 算法中的线性化处理必将造成误差,估计效果也易受不规则噪声的影响。 而SVM 算法基于样本数据结构风险最优原则,有效避免了过拟合和维数灾难问题,在兼顾逼近数据的准确性和近似函数复杂度的同时,具有最佳的泛化能力。 SVM 算法只对关键数据敏感的特点也决定了其拥有较高的鲁棒性。
为弥补噪声和模型精度对估计效果的影响,发挥两种算法的优点,通过EKF 算法提供SVM 算法所需样本数据,利用SVM 的回归预测能力对EKF 估计值进行优化和补偿,进一步修正SOC 估计误差,达到提高估计精度的效果。 组合算法流程如图3所示。
训练SVM 模型,须选取合适的输入和输出。 考虑电池作为非线性系统的特点,在电池工作过程中,动态变化的电流、电压是描述电池动态特性不可或缺的因素,且考虑到时变系统的特点,建立四输入一输出的 SVM 模型。 其中输入量为k时刻的电流I(k)、 端电压y(k)、EKF 算法的端电压误差y(k)-y^(k)、EKF 算法的 SOC 估计值s^(k),输出量为 EKF算法估计误差s(k)-s^(k)。 为保证所建模型的合理性,将EKF 算法所得数据中部分数据作为训练数据,建立SVM 训练模型。 设定迭代次数和累计误差作为模型训练完成的标志,之后利用验证数据验证模型的有效性。 训练得到的SVM 模型,通过模型输出的误差补偿对EKF 算法得到的初次估计值起到有效的修正作用,两者相加得到SOC 的二次估计值,从而在兼顾算法泛化性和鲁棒性的同时,实现SOC 更高精度的估计,充分发挥了组合算法的优越性。
图3 EKF-SVM 算法流程图
3 算法验证与分析
实验选用标称容量为2 A·h 的锂离子电池作为测试对象。 为尽量接近实际使用情况,实现电池状态的精确估计,实验所选数据来自马里兰大学电池动态应力测试(dynamic stress test, DST)数据[23]。为避免电池过充过放,DST 工况设定为从80%到10%的SOC,在室温25 ℃下,采样周期为1 s。 按照模拟工况对电池进行放电实验,电流变化如图4 所示。 其中,放电电流为正,充电电流为负,记录电池对应时刻的端电压和SOC 值。 由EKF 算法得到的仿真结果如图5 所示。
图4 DST 工况电流
图5 端电压与SOC 估计误差图
由图5 可知,通过EKF 算法,端电压估计值在整个充放电工况中有较好的收敛性,最大误差小于0.04 V,具有较高精度,验证了所建2 阶RC 模型的准确性。 EKF 算法的SOC 估计值可以较好地跟踪真实值。 虽然对实际不规则噪声的抑制能力有限,导致误差有不断增大的趋势,但仍然保持最大误差在1.5%以内,满足验证工况对SOC 估计精度的要求,表明EKF 算法对电池动态特性的适应性较好。考虑所建SVM 模型要求能够兼顾体现工况数据动态性以及估计精度的稳定性,选用EKF 算法得到的DST 工况数据训练得到SVM 模型。 其中训练数据与验证数据按照7∶3 的比例,随机选取训练数据建立SVM 模型。 图6 为所建模型验证30%样本数据的结果。
图6 DST 数据验证结果
由图6 可知,相比于EKF 算法得到的SOC 估计的峰值误差为1.5%左右,通过训练完成的SVM 模型可以准确辨识SOC 的误差补偿值,SOC 二次估计峰值误差仅为0.3%左右,大大降低了估计误差,充分验证了所建模型的有效性。
本文所提算法需要在电池实际工作中进行SOC估计,因此须考虑算法在不同工况下均具有良好的适应性。 为尽量模拟实际工况,选取马里兰大学电池数据中的联邦城市驾驶工况(the federal urban driving schedule, FUDS)、激烈驾驶工况(US06 supplemental FTP driving schedule, US06)以及北京动态应力测试工况(Beijing dynamic stress test, BJDST)3种循环工况作为测试工况,分别验证模型在不同工况下的估计效果和泛化性,结果如图7~图9 所示。
图7 FUDS 数据验证结果
图8 US06 数据验证结果
图9 BJDST 数据验证结果
为验证算法的优越性,选择广泛使用的BP 神经网络作为对比,通过EKF 算法所得数据建立四输入一输出的BP 神经网络模型,数据处理方法与EKF-SVM 算法相同,对比 EKF 算法、EKF-BP 算法和EKF-SVM 算法共3 种算法的SOC 估计效果。 由于BP 算法理论上存在局部最优解问题,在实际运行中发现由随机选取的训练数据所建BP 模型在估计效果上差异较大,为减少个别数据的影响,选取EKF-BP 算法的10 次估计误差的平均值作为对比,SOC 误差结果如表1~表3 所示。
表1 EKF 算法估计误差
表2 EKF-BP 算法估计误差
表3 EKF-SVM 算法估计误差
结合图7 ~图9 和表1 ~表3 中的均方根误差(root mean squard error, RMSE) 和平均绝对误差(mean absolute error, MAE)可知:EKF 算法由于受噪声影响较大,在不同工况下的估计效果差异较大,而EKF-BP 算法和EKF-SVM 算法均有良好的回归预测能力,能在EKF 算法的误差基础上有效地修正误差,将各验证工况下0.7%~1.4%的平均绝对误差降低至0.5%以下。 两种算法除去在US06 工况数据中由于开始收敛过程导致的最大误差(maximum error,ME)较大外,其余工况下分别有效地将最大误差降低到2%和1%左右。 相比EKF 算法,EKF-SVM算法在不同验证工况下,误差指标均有明显改善,误差波动幅度更小,充分表明了组合算法具有优秀的泛化性和鲁棒性,有效提高了SOC 估计效果。 而EKF-BP 算法由于BP 算法存在局部最优解问题,在验证FUDS 工况数据时出现了较大估计误差,从而表明该算法鲁棒性较差。
实验结果表明,EKF 算法滤波效果较好但估算精度受不规则噪声影响较大,泛化能力较弱。 作为基于结构风险最优原则的学习算法,SVM 在回归预测能力、泛化性和鲁棒性方面具有优势,但需要足够的样本数据支持。 本文中提出的EKF-SVM 组合算法,通过EKF 算法数据训练SVM 模型,利用SVM 算法弥补EKF 算法缺点,实现了两种算法的优势互补,在兼顾算法泛化性和鲁棒性的同时,有效地提高了估计精度。
4 结论
针对单一算法在SOC 估计中无法兼顾多项指标效果的问题,提出了基于EKF-SVM 的组合算法。该组合算法克服了EKF 算法对电池模型精度依赖性强、滤波容易发散的问题,综合了滤波算法和学习算法的优势,利用相关滤波数据建立SVM 模型的误差补偿,进一步优化EKF 算法。 不同工况数据的仿真结果表明,对比 EKF 算法和EKF-BP 算法,所提EKF-SVM 算法可以实现电池SOC 的准确实时估计,RMSE 最大为0.5%,最大估计误差小于1%,全面提高了SOC 估计的泛化性、鲁棒性和估计精度。