桂 陽,周 飛,楊 文,陳 星,李康群
(南京航空航天大學直升機傳動技術國家級重點實驗室,江蘇南京 210016)
隨著能源短缺和環境惡化,新能源開發利用越來越重要。在電動汽車領域,鋰離子電池清潔高效、能量密度高、循環性能好,已成為電動汽車儲能裝置的首選。儲能鋰離子電池組通常配備電池管理系統(BMS),它能監視電池組狀態,并為合理利用EV 車輛電池組能量提供條件,而準確估計電池荷電狀態(SOC)是BMS 關鍵技術之一[1]。
SOC通常用來描述電池的剩余電量,可以用當前電量和額定電量的比值來表示,準確實時地估計SOC非常困難。目前,SOC估算通常用放電實驗法、庫侖計數法、模型驅動法、數據驅動法等[2]。放電實驗法估算SOC步驟是,用恒定電流將電池放電至截止電壓,計算得到電池當前的剩余容量,求出剩余容量和標稱容量的比值,即為電池組SOC。該方法簡單易行,結果也較為準確,但在車輛上無法實時在線估測,實際應用困難[3]。庫侖計數法可通過累計流入或流出鋰離子電池的電荷總數量來計算當前的SOC,這是可以通過積分型計算軟件來實現。要想準確估算當下SOC需要兩個前提:其一是給出的初始SOC值要準確,其二是用于計算的測量電流值與真實值之間的誤差足夠小。但行駛車輛很難獲得這個準確的初始值,電池工作過程中測量電流傳感器必然存在的誤差會隨時間累積產生較大誤差。因此,該方法局限性較大[4]。
模型驅動法主要包括卡爾曼濾波法及其衍生算法。卡爾曼濾波是應用于估計動態線性系統內部狀態的最佳算法之一。該算法實際上屬于遞推算法,其本質是通過系統輸入輸出觀測數據來對動力系統的狀態做出最優估計??柭捌溲苌惴軌驅崟r估計鋰離子電池SOC,但需要搭建準確的電池模型,而這是一項非常困難地工作。
數據驅動的方法不依賴任何電池的物理、化學或熱模型。它可以通過學習電池SOC和學習工作中電池的電壓、電流、溫度等參數的非線性關系,通過輸入電壓、電流、溫度等特征,來直接在線估計SOC。常見的數據驅動方法包括支持向量機、人工神經網絡、模糊邏輯等[5-6]。人工神經網絡因其強大的非線性擬合效果可以很好地模擬電池內部的復雜結構,因而得到廣泛應用,主要包括BP 神經網絡、循環神經網絡等,但是基于數據驅動的方法目前仍然存在著準確度不足、魯棒性較差等缺陷。
針對以上問題,本文提出雙向GRU(BidiGRU)神經網絡和H∞濾波相結合的SOC估算方法。相較于卡爾曼濾波算法,本方法簡化了SOC的估計流程;相較于神經網絡算法,本方法提高了估計精度和魯棒性。將鋰離子電池放電過程中每一時刻的電壓、電流、表面溫度作為BidiGRU 神經網絡的輸入,對應時刻的SOC值作為輸出,用北京動力循環工況(BJDST)對模型進行訓練,用補充聯邦測試程序駕駛時間表(US06)進行測試,再將H∞濾波器和BidiGRU 神經網絡結合起來,濾除BidiGRU 神經網絡的估計噪聲,進一步提高估計精度和魯棒性。
循環神經網絡(RNN)是一類常用于處理序列問題的神經網絡,普通的RNN 由于相鄰的上一個時間步都對下一個時間步造成影響,在使用梯度下降法訓練的過程中,會造成梯度消失和梯度爆炸的結果。梯度爆炸可以通過設置一個闕值來截取超過該闕值的梯度,但梯度消失往往難以預測,從而使普通的RNN 在處理長期依賴問題上效果不佳。LSTM 和GRU 神經網絡的出現可以完美地解決這個問題[7]。GRU 在結構上較LSTM 更為簡單,參數更少,在訓練過程中更不容易出現過擬合,因此往往在大多數情況下GRU 的表現要優于LSTM。GRU 單元由更新門(update gate)和重置門(reset gate)組成,其前向傳播公式為:

更新門(update gate)用于控制歷史信息對當前時刻的影響,決定了模型要將多少過去的信息傳遞到未來,其中xt為t時刻的輸入向量,ht-1為前一時間步的信息,Wz為權重矩陣,這一步至關重要,因為模型能夠決定從過去復制所有的信息來降低梯度消失的風險。重置門(reset gate)用于控制歷史信息的篩選,決定了有多少歷史信息被遺忘,其中xt為t時刻的輸入向量,ht-1為前一時間步的信息,Wr為權重矩陣。再將重置門的結果rt與上一時刻的信息ht-1經過線性變換來確定保留和遺忘的信息,再與當前時刻的輸入與權重的乘積進行相加,將這部分的計算結果投入雙曲正切函數(tanh)中,得到當前時刻的記憶,接著將當前時刻記憶與更新門和前一時刻記憶進行整合最終輸出當前時刻的信息ht,并將其傳遞至下一個單元[8]。無論何種單向RNN,都存在著一個局限性,即在任一時間步t中,只能獲取當前時刻之前的歷史信息,在這之后的時間步信息,模型將無法學習到。因此,我們引入了雙向循環神經網絡(BidiRNN),其結構圖見圖1。圖1 中的單元為GRU 單元,ht和′分別為t時刻正向和反向序列中神經元所存儲的記憶信息[9]。

圖1 BidiGRU結構圖
鋰離子電池工作過程中的SOC變化是連續的非線性變化,是一個時間序列。當前時刻的SOC受過去和未來時刻SOC值的共同影響,這一點滿足BidiGRU 神經網絡的應用條件。因此,搭建了基于BidiGRU 神經網絡的SOC估算模型,其結構見圖2。輸入層中把實驗測得的電壓、電流、電池表面溫度作為輸入。

圖2 BidiGRU-SOC估算架構
BidiGRU 層可以采用一層或多層,再通過一個全連階層輸出t時刻的SOC值,訓練過程中的損失函數為均方誤差函數(MSE):

式中:N為序列的長度;yk為任一時刻真正的SOC值為任一時刻BidiGRU 的SOC輸出值。使用梯度下降法進行訓練,采用Adam 優化器,使用批量訓練的方式,批量大小為30,經過調試后選擇前50%的數據的學習率為0.001,后50%的數據的學習率為0.000 01。為了防止訓練發散,數據集的輸入使用式(6)進行歸一化至[-1,1]區間內。

在完成訓練之后,采用同樣的歸一化方法對測試集數據進行歸一化,采用平均絕對誤差(MAE)和均方根誤差(RMSE)來對神經網絡的性能進行評判。


H∞濾波波器是卡爾曼濾波器的一個變種??柭鼮V波器是一種利用線性系統狀態方程,通過系統輸入輸出觀測數據,對系統進行最優狀態估計的一種算法。最優狀態估計過程就是濾波過程[10]。卡爾曼濾波的變種有很多,如EKF、UKF等。與EKF、UKF 這些濾波器不同的是,H∞濾波是專門為魯棒性所設計的濾波。它通過最小化最大估計誤差來進行濾波,可以達到極佳的魯棒性[11]。H∞濾波的核心思想是保證系統的估計誤差的范數小于所有可能的擾動。
假設我們有一個標準的線性系統:

式中:Xk、Yk分別為系統的狀態向量和觀測向量;wk、vk為噪聲項,它們是隨機的,且統計特性未知;Fk為狀態轉移矩陣;Hk為測量矩陣;Zk為我們想要估計的狀態的線性組合;Lk為一個滿秩的由設計者自己定義的矩陣。
在H∞濾波中,我們定義了如下的代價函數:

式中:P0、Qk、Rk為設計者基于特定問題所選擇的對稱正定矩陣為狀態的估計值和初始值。直接最小化J是非常困難的,所以我們選擇了一個性能邊界,同時尋找一個估計策略使之滿足這個闕值,換言之,我們想找到一個,使之滿足:

式中:θ 為用戶指定的性能邊界[12]。
在SOC估計中,將BidiGRU 神經網絡作為觀測器,其輸出的結果作為觀測方程,以安時積分法作為系統的狀態方程,對SOC的估計結果進行優化:
狀態方程:

觀測方程:

式中:Ik為k時刻的電流;Cq為標稱容量;dt是采樣間隔;wk、vk分別為k時刻狀態方程和觀測方程的高斯噪聲,其高斯分布分別為wk~N(0,Q)、vk~N(0,R)。Q和R分別設為10-6、10-2,θ 設為10-4,采樣間隔dt為1 s,初始SOC值SOC0設為1,將優化過后得到的SOC值作為最終的SOC估計值。
使用21700 型鋰離子電池作為實驗電池,在電池動態測試系統中模擬電池的充放電循環并記錄每時刻的電壓和電流數據,通過高低溫試驗箱模擬不同的電池工作環境溫度,通過無紙溫度記錄儀測得電池工作過程中的表面溫度,詳細的實驗設備如圖3 所示。為了模擬電池的實際工作過程,本實驗選用了BJDST 工況對模型進行訓練,用US06 工況進行測試,詳細的BJDST 工況、US06 工況如圖4 所示。

圖3 鋰離子電池測試系統

圖4 電池工況電流變化圖
本實驗在0、15、25、35 和50 ℃五種環境溫度下,讓電池以BJDST、US06 工況進行放電,測量了電池放電過程中的電壓、電流和電池表面溫度,數據采樣間隔為1 s。實驗開始時,將電池以1C恒流充電至4.2 V,再以4.2 V 恒壓充電,截止電流為0.1 A。然后,以不同工況對電池進行放電,放電的截止電壓為3.4 V。將收集到的數據進行歸一化處理,作為BidiGRU 的輸入進行后續的SOC估計。
將在五種溫度下測得的BJDST 工況數據集作為訓練集對BidiGRU 神經網絡進行訓練,以電池工作時的電壓、電流、表面溫度作為模型的輸入,對應時刻的SOC作為輸出。用US06工況來測試模型的泛化性能。該過程通過Python 3.7 Tensorflow Keras 框架實現,基于i7-5500U CPU 上運行。本文探究了不同BidiGRU 層神經元數對SOC估計結果的影響。文獻[13]表明,BidiGRU 神經元數量的選取一般由經驗選取,本文設定神經元數為30,是因為當神經元數設定值比30更大時,訓練時間會變長,SOC估計結果并沒有明顯提高。神經網絡的層數選擇為1 層,是因為當層數增加時,SOC估計結果沒有明顯改善,訓練時間會增加很多。詳細的超參數設置見表1。

表1 BidiGRU 超參數設置
在設置了BidiGRU 神經網絡的超參數之后,使用梯度下降法對神經網絡進行訓練,其訓練集損失變化、驗證集損失變化如圖5 所示??梢钥吹接柧毤瘬p失可以下降到接近于0的水平,而驗證集則在20 次迭代后明顯上升,這是由于訓練時出現了過擬合,采取了降低學習率的方式,將后50%的數據采用0.000 01 的學習率來進行訓練,從而減小過擬合現象產生的影響。

圖5 訓練集及驗證集損失變化
取驗證集損失最小的那一次迭代作為訓練模型進行保存,接著使用0、15、25、35 和50 ℃下US06 工況進行測試。與此同時,我們在保持神經網絡各超參數不變的情況下,將BidiGRU 神經網絡換成了GRU 神經網絡,并且用相同的數據進行訓練,相同的數據進行測試,得到的SOC估計結果見圖6。由圖6 和表2 可知,在0 ℃下BidiGRU 的SOC估計精度較低,RMSE達到了3.66%,MAE達到了2.79%。35 ℃時估計結果最佳,RMSE可達到2.05%,MAE可達到1.58%。這主要是因為在低溫下電池內部化學成分的活性較低,到截止電壓時,往往只能放出很少的電量。由圖6 可知,在0 ℃時,放電達到截止電壓時,放出的容量是常溫放電容量的一半。和其他溫度下放電過程的SOC變化過程差異性較大,從而導致神經網絡的訓練效果不佳。在15、25、35 以及50 ℃時,BidiGRU 的估計精度相比于GRU 更高,其中15 ℃時,RMSE和MAE更是相差了近1.5%,盡管在0 ℃下BidiGRU 的估計精度不如GRU,但從整體來看,BidiGRU 在SOC估計上相比與GRU 仍更具有優勢。


圖6 US06工況SOC估計結果

表2 US06 工況各循環神經網絡對比 %
由于鋰離子電池在不同溫度下的放電容量差異性較大,BidiGRU 很難做到準確無誤地估計每一種環境溫度下的SOC,因此需要在BidiGRU 估計的SOC值的基礎上,加以H∞濾波器進行優化,使得估計結果魯棒性更好。使用H∞濾波器優化之后的SOC估計結果及其誤差如圖7 所示。通過和BidiGRU 估計得到的SOC比較可以發現,估計的精度得到了較大的提升,RMSE和MAE均降低到了0.5%以下,下降了2%以上。更加值得注意的是,在0 ℃下,經過H∞濾波器的優化之 后,RMSE和MAE由原來的3.66% 和2.79% 下降到了0.16%,達到了和其他溫度下同樣的精度,說明這種優化方法不依賴神經網絡的估計精度,也說明H∞濾波器在系統統計特性未知時具有極佳的魯棒性。表3 為US06 工況經H∞濾波優化后誤差。


圖7 US06工況經H∞濾波優化SOC估計結果

表3 US06 工況經H∞濾波優化后誤差 %
本文提出基于BidiGRU 神經網絡和H∞濾波器估算鋰離子電池SOC的復合方法。BidiGRU 神經網絡以鋰離子電池工作過程中的電壓、電流、表面溫度作為輸入,輸出每時刻的SOC,接著使用H∞濾波器對結果進行優化,使得其準確性和魯棒性得到很大提升。實驗探討了0、15、25、35 和50 ℃五種環境溫度下的電池放電過程中SOC的估計情況,用以上五種溫度下的BJDST 工況作為訓練集對BidiGRU 神經網絡模型進行訓練,用不同溫度下的US06 工況進行測試,得到的SOC估計RMSE最低可達到2.05%,MAE最低可達到1.58%,但是在0 ℃下的估計誤差較大,RMSE和MAE 可達3.69% 和2.79%。接著使用H∞濾波器BidiGRU 的SOC估計結果進行優化,得到最終的SOC估計值。結果表明:無論在何種環境下,該方法都能夠做到準確的SOC實時估計,RMSE和MAE均能夠達到0.17%以下。該方法是基于數據驅動的,不需要搭建復雜的等效電路,易于實現,因此該方法在SOC估計領域具有很大的應用前景。