(青島大學電氣工程學院 青島 266071)
電動汽車行業的蓬勃發展,帶動了車載鋰電池的電池管理系統(Battery Management System,BMS)的研究深化,作為電池管理系統中的重要一環,電池剩余電量(State Of Charge,SOC)的精確級數制約著對電池能源的利用效率[1],而如何提高估算精度,一直是電池領域科研事業的重中之重。目前國內通用的SOC估算方法[2]有基于電池自身特性的安時積分法,開路電壓法,內阻法等;也有通過算法優化基礎方法的卡爾曼濾波算法,BP神經網絡算法[3],粒子濾波算法等。其中鮑慧論文在原有安時積分法基礎上進行四個系數的修正[4],使SOC估算精度提高到5%以內,但其固有的系統累積誤差沒辦法消除;林春景的基于電池內阻隨溫度變化進而求得電池狀態[5],對電池內阻特性進行了深入研究,不過內阻在電池滿電時其變化特性和電池狀態函數關系不明顯,故該算法有一定局限性;商云龍所研究的神經網絡和擴展卡爾曼濾波結合[6],使電池估算精度極大地提高,可筆者認為該算法過于復雜,對器件要求精度過高,不適合應用在普通電池的BMS中。
本文基于二階Thevenin模型下的無跡卡爾曼(Unscented Kalman Filter,UKF)算法,通過對得到的電池數據進行UT變換,得到相同概率密度下的SOC估算值,從而提高SOC估算精度。
本文在傳統的Thevenin模型的基礎上搭建二階Thevenin模型,如圖1。相較于一階模型,二階模型綜合考慮了電池的電化學極化和濃差極化現象,能更精確地反映化學反應程度,實時模擬電池狀態,進而提高SOC的估算精度[7]。

圖1 二階Thevenin模型
該模型的數學表達式為

通過對電池研究發現,電池模型中各個路原件隨著電池剩余電荷量的變化不斷波動,為更好反映電池本身情況,分別對電池模型中電路原件和SOC進行擬合確定函數關系。對電池進行HPPC脈沖放電實驗,分別截取不同電池初值放電后的靜置曲線[8]。在CFtool工具中,結合基爾霍夫定律和二階電路全響應分析得到該模型的擬合方程。


圖2 HPPC脈沖放電實驗電流電壓變化曲線
以圖2為例對180s~300s電壓曲線以式(3)進行擬合得到該SOC下的各個參數,分別擬合不同SOC初值下的極化現象曲線并進行參數辨識。其中已知電池的脈沖電流,電池的開路電壓a為穩定后的電壓值,電池濃差極化現象的時間常數c取值固定,而由于電化學極化現象不明顯,其時間常數的取值總是波動,為提高擬合曲線的精度,對各SOC值下時間常數e的取值進行數據處理將其固定。則各SOC初值情況系的電路元件系數可求。截取部分實驗數據如表1。

表1 截取部分實驗數據
在Cftool工具中分別將R0、R1、C1、R2、C2…與SOC擬合,并將擬合函數用于搭建仿真模型。同時根據記錄下來的電壓值可得到電池的SOC-OCV曲線,如圖3。對其關系進行五階函數擬合得到關系式:


圖3 SOC-OCV曲線
根據已有電池原件及其函數關系在Matlab/Simulink搭建電池模型,如圖4。
采用國標QCT 897-2011中的工況電流三來測試該模型的穩定性,其真實電壓和模擬電壓對比如圖5,其誤差控制在1.5%以內,分析電池模型可知該誤差主要由工況電流反向充電引起,因本仿真只考慮電池放電故其存在的仿真誤差在接下來放電實驗可避免。

圖4 二階仿真模型

圖5 工況電流三實驗電壓對比
卡爾曼濾波器實際上可以看做是狀態變量在由觀測矩陣生成的線性空間上的映射,進而通過觀測矩陣來修正估計的狀態方程。由于電池狀態的變化是非線性的,所以應生出擴展卡爾曼濾波算法,將非線性的電池系統離散化,使之適用于線性的卡爾曼濾波器[9~11]。其中卡爾曼濾波的狀態方程和測量方程分別為
狀態方程:

觀測方程:

式中Xk為狀態矩陣,Uk為控制矩陣,Yk為觀測矩陣,Ak狀態轉移矩陣,Bk為狀態控制矩陣,Ck為觀測矩陣,Dk為觀測控制矩陣,wk為k時刻的動態噪聲,vk為k時刻的觀測噪聲。將卡爾曼濾波算法,安時積分法和二階Thevenin模型結合得到式(6)和式(7)。

將卡爾曼濾波算法和電池模型相結合的程序框圖如圖6所示,將電池的輸出電流和端電壓作為輸入,電池的SOC作為輸出,用已經求得的開路電壓曲線來修正安時積分法所輸出的SOC值。

圖6 卡爾曼濾波算法
無跡卡爾曼濾波也是基于卡爾曼濾波原理的一種應用[12],不同于擴展卡爾曼濾波對電池模型進行泰勒級數展開并略去高階無窮小項,雖然使電池模型線性化,但在其過程中被忽略的高階所帶來的誤差,會引起濾波器精確度降低以至于發散[13]。
UKF算法對電池模型中函數關系的概率密度進行分析[14],通過無跡變換得到估計值對應的sig?ma點,由一系列的sigma點來逼近狀態的后驗概率密度,從而保證估計值的準確性,避免了對狀態轉移矩陣和觀測矩陣求其雅各比矩陣的復雜運算,同時也沒有忽略高階項對矩陣的影響,從而保證估計值的準確性,式(8~9)為UT變化方程,即通過UT轉化確定sigma點及其權重。

其中下標c表示協方差的權重,下標m表示均方差的權重,λ=α2(n+κ)-n,λ代表縮放比,α=0.01表示采樣點的分布狀態,當α較大時表明平均值處sigma點權重越大,β=2是權數,用來合并方程中高階項的動差,κ=3-n。
首先列寫基本的狀態方程和從測量方程。

代入式(8~9)進行UT變換,得到k時刻的X列向量的sigma點矩陣。

將矩陣式(11)代入式(10)中的狀態方程,求得下一時刻的系統狀態。

此時得到的是X(k+1|k)時刻的狀態矩陣,由式(9)求X(k+1|k)的加權均值和更新后的協方差矩陣。

根據更新后的狀態矩陣式(13)和協方差矩陣式(14),再次使用UT變換,產生新的sigma點集,并將該點集代入式(10)中的觀測方程得到估計的觀測值,通過兩次的UT變換使估測的觀測值具有系統代表性。

同樣的由式(10)加權求得到估計預測值及其協方差。

根據式(18~19)可求得Kalman增益系數K,并通過增益系數K更新系統的狀態和協方差矩陣。

在Matlab/Simulink中搭建電池放電電路[15],通過Pulse Generator模塊產生周期為200s占空比為80%的電流脈沖信號,同時為模擬工況,分別在電流采集和電壓采集處添加高斯白噪聲,將帶有噪聲的信號作為輸入,經S-Function中的UKF濾波后,輸出到示波器中,仿真如圖7。

圖7 仿真圖
將輸出結果用Matlab畫圖表示,圖8是在SOC初值為85%時的電池模型輸出結果,圖9是EKF算法UKF算法分別和真實值做殘差;由圖像分析得相較于EKF算法3%的誤差,UKF算法可將誤差控制在1.5%以內。

圖8 初值為85%時SOC估算曲線

圖9 初值為85%時誤差對比曲線
圖10和圖11是在SOC初值錯誤的情況,觀察其對應算法的修正能力,由圖11殘差對比圖可以較為明顯地觀察到UKF算法會超前于EKF算法追蹤到真實的電池狀態,驗證了UKF算法具有更優秀的收斂性和魯棒性。

圖10 初值有誤差時SOC估算曲線

圖11 初值有誤差時誤差對比曲線
本文從常規的擴展卡爾曼濾波算法框架中加入無跡變換,提出了一種基于無跡卡爾曼濾波算法的電池SOC估算方法,建立二階Thevenin電池模型,并在Matlab/Simulink對EKF和UKF算法進行了仿真對比。結果表明UKF算法相較于EKF算法具有更優秀的收斂性和魯棒性,具有實際價值。本算法的局限性在于沒有對電池充電情況進行考慮,如電池模型仿真時,在工況電流條件下電池存在反向充電電流,其電池模型相對于放電模型有細微差別,故該實驗仍有很大的優化空間。