胡潔宇,吳松榮,陸 凡,劉 東*
(1.磁浮技術與磁浮列車教育部重點實驗室,成都 610031;2.西南交通大學電氣工程學院,成都 611756)
鋰電池是電動汽車的能量來源,在實際應用時需要電池管理系統(battery management system,BMS)對鋰電池進行管理,荷電狀態(state of charge,SOC)是BMS的重要組成部分[1]。SOC直觀地反映了電池的剩余電量,而電池的剩余電量與電動汽車的剩余里程息息相關,因此準確地估計SOC十分重要[2]。然而實際應用時受到倍率、溫度和電池老化等因素影響,很難準確地得到SOC估計值[3]。因此迫切需要研究出能夠實時、準確和穩定地估算SOC的算法。
現有的測量SOC的方法主要有安時積分法、開路電壓法、神經網絡法以及卡爾曼濾波。安時積分法對初值設定要求較高,無法自己消除誤差[4]。測量開路電壓需要電池充分靜置,實時性較差[5]。神經網絡法需要經過大量的訓練才能提供較為精確的SOC估計數據[6]。卡爾曼濾波是一種最優估計理論,無須大量的訓練,即使在初值不準確的情況下能夠快速收斂于真實值附近,目前已經廣泛應用于電池的SOC估計[7]。文獻[8]提出了拓展卡爾曼濾波(extended Kalman filter,EKF),由于電池是一種非線性系統,無法直接使用針對線性系統的卡爾曼濾波,該文獻提出將非線性系統進行線性化處理,但線性化處理會提高計算量,也會引入線性化誤差,精度只有一階泰勒展開,準確性較低。文獻[9]提出了一種基于有限差分卡爾曼濾波算法,用有限差分代替直接將非線性系統線性化,提高了計算的精度,計算精度高于一階泰勒展開。文獻[10]利用無跡卡爾曼濾波(unscented Kalman filter,UKF)進行SOC估計,UKF使用了無跡變換(unscented transformation,UT)而沒有采取線性化近似的策略,避免了線性化誤差,既降低了計算量又提高了估計精度,UKF精度通常能達到二階泰勒展開。雖然UKF的精度優于EKF,但是UKF在計算時出現處理器計算誤差、不確定的系統噪聲以及模型出現擾動等情況時都會導致狀態協方差矩陣P非半正定從而導致迭代停止[11],進而影響電池SOC估算結果。
為了解決以上問題,采用一種基于奇異值分解的無跡卡爾曼濾波(singular value decomposition unscented Kalman filter,SVD-UKF)。該模型采用奇異值分解方法,以期從數學角度確保即使出現矩陣P非半正定時UKF算法依然能夠正常運行,在理論層面提高UKF的魯棒性。設計SVD-UKF與EKF進行對比實驗,從精度和收斂速度兩方面來驗證SVD-UKF和EKF的優劣。
精確地建立鋰電池模型是準確估計SOC的先決條件。鋰離子電池是一個復雜的非線性系統,目前針對鋰離子電池已經研究出多種鋰離子電池建模方法,其中最受歡迎的是Thevenin模型[12]。其含有的RC并聯電路能夠準確模擬電池的性能,并且RC并聯電路越多,模擬電池的性能就越準確,但是會增加計算的復雜程度。綜合考慮建模所需的精度以及效率,采用一階RC的Thevenin模型。
一階RC的Thevenin模型如圖1所示。Uoc為鋰離子電池的開路電壓(open circuit voltage,OCV),Ro為電池的歐姆內阻,Rp為電池的極化電阻,Cp為電池的極化電容,Io為電流。

圖1 一階RC等效電路模型Fig.1 First-order RC equivalent circuit model
根據文獻[9],可以得到離散后的以電容電壓Uc和SOC為狀態變量的狀態方程。

(1)
U=Uc+RoIo+Uoc(SOC)+γ1
(2)
式中:τ為RC并聯網絡的時間常數;T為采樣周期;ω1、ω2為系統噪聲;γ1為觀測噪聲。式(1)稱為預測方程,式(2)稱為觀測方程。
在進行SOC估計時,需要獲得準確的電池參數Ro、Uoc、Rp以及Cp。文獻[13]指出電池參數Ro、Uoc、Rp以及Cp會受SOC的影響而變化,為了準確地建立鋰電池模型,需要在不同SOC的情況下測量參數。文獻[13-14]指出了電池模型各個參數的測量方法。
為了得到OCV-SOC的函數關系,采用文獻[13]所提出的脈沖功率特性試驗(hybrid pulse power cycle,HPPC):恒溫25 ℃環境中1 C恒流放電,放電360 s后靜置600 s。每次靜置后的電壓值都對應了當前的SOC[13],利用MATLAB可以擬合出OCV-SOC的函數關系,即
Uoc(x)=-9.18x4+21.36x3-16.3x2+
4.98x+3.29
(3)
式(3)中:x為SOC。
對于參數Ro、Rp、Cp,文獻[14]采用的方法為:Ro通過每次放電時的電壓瞬時變化測得,Rp和Cp可以通過放電停止后的零輸入響應測得,最后擬合出Ro、Rp、Cp與SOC的函數關系,即
(4)
處理非線性系統時人們通常使用EKF,但因為EKF在使用泰勒展開時只保留了一階展開項,在處理非線性程度很淺的系統時精度較高,但在處理強非線性系統時就會出現較大的誤差甚至濾波發散。為了解決這一問題,人們提出了無跡卡爾曼濾波[9](UKF),UKF是一種基于統計線性化的算法,計算精度可以達到二階泰勒展開,同時不需要計算雅可比矩陣,減少了計算量。
UKF算法的第一步是對上一刻的狀態變量進行UT變換,其中核心步驟需要得到矩陣P的平方根。目前主流對矩陣進行開方的方法是Cholesky變換,即
P=LLT
(5)
式(5)中:L為利用Cholesky法對矩陣P進行分解后的矩陣。
Cholesky變換使用條件是矩陣P必須是半正定的[15],但是實際應用時,受制于硬件條件,如果出現處理器計算誤差、未知噪聲等情況導致矩陣P非半正定時,將無法使用Cholesky變換,UT變換無法進行,進而導致濾波發散。因此,UKF的魯棒性較低。
為了提高UKF的魯棒性,采用一種基于奇異值分解的無跡卡爾曼濾波(SVD-UKF),奇異值分解是一種常用的矩陣分解方法,具體過程為
P=USVT
(6)
式(6)中:矩陣P為m×n階矩陣;U為m×m階矩陣;S為m×n階矩陣,V為n×n階矩陣;且S是對角陣,即

(7)
矩陣H=diag(a1,a2,…,ar),a1,a2,…,ar均為正數。矩陣P是對稱正定矩陣時,矩陣V和U相等,即
P=USUT
(8)
根據式(8),UT變換的過程為
(9)
式(9)中:系數n為系統的階數;λ為比例縮放系數[9];Xk/k為狀態變量;Pk/k為協方差矩陣。
SVD-UKF其余部分與傳統UKF類似,文獻[9]給出了UKF具體的推導過程:將生成的sigma點代入預測方程和觀測方程中可以得到預測值和觀測值更新及其均值,即
(10)
(11)
根據式(10)、式(11)的計算結果可以得出預測值協方差Pk+1/k、觀測協方差Px/y和Py/y,將結果代入式(12)中從而完成狀態變量和狀態協方差的更新,完成本次迭代[9],即
(12)
Xk+1/k+1=Xk+1/k+K(Yk+1-Yk+1/k)
(13)
Pk+1/k+1=Pk+1/k-KPy/yKT
(14)
式(13)中:Yk+1是k+1時刻的測量值。
由于對于每一個實矩陣,其奇異值分解產生的矩陣都是存在且唯一的,因此在計算過程中遇到誤差導致矩陣P非半正定時,SVD-UKF依然能夠繼續運算,從理論上保證了運算了連續性。所以SVD-UKF既繼承了傳統UKF的高精度,又同時提高了算法的抗干擾能力,有著更高的魯棒性。
將式(1)、式(2)代入式(9)~式(14)中就可以對狀態變量電容電壓Uc(t)和SOC進行估計,具體流程如圖2所示。

圖2 SVD-UKF實現流程Fig.2 Flow chart of SVD-UKF
采用三元鋰電池通過恒流脈沖放電以及動態壓力測試兩種實驗來驗證SVD-UKF算法在估算SOC時的準確性。實驗電池采用光宇公司的25 A·h的三元鋰電池。
首先采用恒流脈沖放電工況進行SOC估計模型的驗證[14]。工況條件為:25 ℃時,將完全充電并充分靜置的電池以1 C放電360 s后靜置1 min,循環10次,此時電池完全放電,設定采樣周期為1 s。整個過程電池的端電壓電流如圖3所示。

圖3 電壓電流波形Fig.3 The waveform of voltage and current
實驗同時使用EKF和SVD-UKF進行SOC估算。根據經驗將初始條件設定如下:SOC初值為0.9(誤差為0.1),狀態誤差協方差矩陣P初值為[1 0;0 1],系統噪聲矩陣Q為[1×10-80;0 1×10-8],觀測噪聲矩陣R為1×10-5。
SOC估計結果如圖4(a)所示,理想值由安時積分法在初值準確時所得。實驗采用了SVD-UKF和EKF進行對比,通過對圖4(b)進行分析可以看出,EKF在100 s時收斂于真值,但之后的誤差存在波動大幅度震蕩,誤差范圍在±4%左右。SVD-UKF在50 s時誤差就已經收斂于1%。雖然在2 000~2 500 s這一區間內誤差略大于EKF,但是在整個過程中SVD-UKF的精度都穩定在1%左右,整體上SVD-UKF精度高于EKF。同時,EKF最大誤差為3.61%,而SVD-UKF為1.82%,可以看出,SVD-UKD相比EKF能夠更加準確地估算SOC。

圖4 SOC估計Fig.4 The estimation of SOC
考慮到鋰電池在具體應用時工況較為復雜,為了進一步驗證算法的準確性,更好地模擬真實情況,采用動態壓力測試(dynamic stress test,DST),能很好地模擬電動汽車在城市中行駛時的電流情況。端電流和電壓如圖5所示。

圖5 DST工況電壓、電流波形Fig.5 The DST’s waveform of voltage and current
將SOC初值設定為0.8(誤差為0.2),圖6給出了實際工況條件下的分別使用SVD-UKF和EKF的SOC估計結果。

圖6 DST工況下SOC估計Fig.6 The estimation of SOC
通過對圖6(b)進行分析可以看出,在DST工況下SVD-UKF和EKF都產生了較大誤差。SVD-UKF經過100 s左右的震蕩后誤差收斂到1.53%,而EKF雖然相同時間波形趨于平緩,但是誤差達到了8%左右。從整個波形來看,SVD-UKF的性能要遠遠優于EKF,EKF的誤差只有在8 000~10 000 s這一時間段內和SVD-UKF處于同一水平,其余時間都大于SVD-UKF,其原因是EKF無法抑制將非線性系統線性化而產生的誤差。SOC在0%~20%這一段,SVD-UKF誤差穩定在0.3%左右,而EKF誤差不斷增大,有發散的趨勢。在整個過程中,SVD-UKF收斂速度快,估算精度高,而EKF估算速度慢,精度低,且有發散的趨勢,整體而言,SVD-UKD的精度高于EKF。
為了確保UKF算法在SOC估計算法能夠同時具有較好的準確性、高效性和魯棒性,在Thevenin的一階RC模型的基礎上使用SVD-UKF算法進行SOC估計。該算法省去了計算雅可比矩陣帶來的龐大計算量,保留了傳統UKF算法原有的高精度,并且在理論上確保了矩陣P非半正定時依然能夠進行分解,克服了傳統UKF算法穩定性差的缺點。實驗證明,將SVD-UKF用于鋰電池SOC估算時,同時具有良好的準確性、魯棒性和高效性。