丁羿茗,呂瑞強,蔣 超
(空軍勤務學院,江蘇徐州221000)
鋰電池在使用的過程中,SOC是一個重要的參數。SOC是指在相同的放電倍率下,電池剩余容量與在相同條件下總容量的比值。如果電池的SOC計算不準確,會導致過充電和過放電的發生,嚴重時還會導致鋰電池內部結構的損壞。
目前估算SOC使用較多的方法有安時積分法、神經網絡法、卡爾曼濾波法等。文獻[1]通過修正容量,提高了安時積分法的精度。文獻[2]運用BP 神經網絡估算SOC,同時根據鉛酸蓄電池特性,建立了電池模型。文獻[3]以一階RC 等效電路模型為基礎,運用擴展卡爾曼濾波,對鋰電池SOC進行估算。鋰電池作為非線性時變的系統,我們很難建立精確的數學模型,估算的精度會因為模型的精度而受到影響。神經網絡算法可以擺脫數學模型的束縛,通過訓練輸入輸出實驗數據,即可得到準確的SOC估計值,傳統的BP 神經網絡因為算法的求解特性,容易陷入局部最優,從而影響估算的精度,針對這個問題,本文將擴展卡爾曼濾波(EKF)和神經網絡結合,使系統具有非線性動態跟蹤特性,使用遺傳算法對EKF神經網絡進行優化,減小了誤差的波動范圍。
Thevenin 電路模型符合鋰電池非線性的特性,同時RC 等效電路可以體現電池內部化學變化對外部參數的影響。圖1是Thevenin 等效電路模型,二階RC 等效電路模型狀態方程見式(1)[4]。

圖1 鋰電池二階RC 模型

式中:UOCV為電池的開路電壓,R0為電池的歐姆內阻,RC1、RC2、C1、C2代表電池內部發生化學反應的極化內阻,U0為電池的端電壓,R、C構成了阻容電路。U1和U2表示電化學電容C1和濃差極化電容C2的電壓。
模型建立好后要對鋰電池參數進行辨識,鋰電池二階RC模型參數主要有電池開路電壓UOC,二階等效電阻電容R1、C1、R2、C2,以及歐姆內阻R0。開路電壓的值和SOC的值可以建立起具有實際意義的關系,選用18650 磷酸鐵鋰電池作為實驗對象,進行反復的充放電試驗,每次充電完成后靜置2 min,放電完成后靜置3 h。通過實驗得到鋰電池開路電壓與SOC關系如表1所示,其中UOC(c)是鋰電池充電過程中的開路電壓,UOC(d)是鋰電池放電過程中的開路電壓。

表1 UOC 與SOC 關系表
調用Matlab 軟件中的polyfit 函數對鋰電池開路電壓和SOC進行最小二乘擬合,考慮到精度要求,選擇5 次多項式進行擬合,擬合結果如式(2)所示。

在這一部分中,要辨識的參數有R0、R1、R2、C1、C2,為了準確地獲取參數,本文使用了脈沖放電電流[5]工況,其局部示意圖如圖2所示。當時間t≤ta時,鋰電池處于靜置狀態,在t∈[ta,tc]之間,鋰電池以20 A 電流持續放電,當t 圖2 脈沖放電局部放大圖 (1)辨識參數R0:對于二階RC 模型,一旦放電電流開始或停止,端電壓會立刻下降。電容器C1、C2的電壓值分別為U1和U2,U1和U2的值不會因為電池開始放電而發生突變。因此在時間[a,b]和[c,d],端電壓的變化是由歐姆內阻R0引起的,R0的計算公式如式(3)示: (2)辨識參數R1、R2、C1、C2:在辨識前先對時間常數τ1、τ2進行辨識,對于一階RC 電路來說,鋰電池在某一時刻的極化電壓可以用下式表示: 式中:τ=RC,是電容C的時間常數,t0是初始時間。 可以在c-d-e 階段辨識二階RC 等效電路時間常數τ1、τ2,根據公式(6),該階段電流I為0,電壓U1、U2可以用式(5)表示: 這個階段開路電壓為: 式中:α1、α2、α3、β1、β2是未知系數,將在后面進行識別;α1代表電池開路電壓,可以在靜置階段測量,而在e點,電池經過了長時間的靜置,可以在此時測得α1。通過使用Matlab 擬合工具箱的函數lsqcurvefit,可以得到最優解α2、α3、β1、β2,此時將時間常數(τ1、τ2)和電壓[U1(tc)、U2(tc)]辨識了出來。 在a-b-c 階段,U1(ta)、U2(ta)都是0,極化電壓可以用下式表示: 那么R1、R2可以被計算出來,如下式所示: 其中,τ1、τ2、U1(tc)、U2(tc)已經在之前被計算了出來,τ1=R1C1,τ2=R2C2,因此可以得到C1=τ1/R1,C2=τ2/R2,依據上述原理,鋰電池內部參數辨識結果如表2 和表3所示。 表2 鋰電池內部參數辨識(充電過程) 表3 鋰電池內部參數辨識(放電過程) 擴展卡爾曼濾波法可以通過轉換將非線性系統近似為線性系統,做法是以X?k為基準,將非線性函數f(*)、h(*)用泰勒級數展開,只保留一階項,最后用卡爾曼濾波方法完成線性系統濾波任務[6-7]。 當非線性系統為離散的情況時: 式中:W(k)是過程噪聲;V(k)是觀測噪聲。 第一步將非線性系統的模型局部線性化,隨后將非線性函數f(*)圍繞濾波值用泰勒級數展開,保留一階項,得到如下方程式。 初始值為X(0)=E[X(0)]。 式(10)、式(11)是經過線性化后的模型,代入卡爾曼濾波方程可以得到擴展卡爾曼濾波方程,具體的代入過程這里不贅述。 用EKF 算法訓練神經網絡的基本思想是把神經網絡的權值和閾值作為EKF 濾波器的狀態量,EKF 的觀測量為神經網絡的預測值[8]。這里以三層神經網絡為例,將神經網絡中的所有參數W kij(第i層到第j層的第k個神經元連接權值)組成狀態向量[9],如式(13)所示。 系統的狀態方程和觀測方程可表示為: 式中:Yd是期望輸出;Xk是為輸入向量;Y是系統的預測輸出。 我們可以任意設置網絡的初始權值為W?k,初始誤差協方差為P1,Hk為h(X)對X的雅各比偏導矩陣,濾波器的狀態估計和更新方程式如下所示: 用Matlab 軟件進行仿真驗證,圖3 是EKF 神經網絡算法SOC估算曲線。圖4 是誤差對比圖,從圖中可以看出,EKF神經網絡估算的誤差在零值附近波動更小,精度更高。圖5是EKF 神經網絡訓練收斂圖,雖然估算精度較高,但是需要經過161 次訓練,訓練時間較長,需要進一步改進。 圖3 EKF神經網絡估算SOC 圖4 BP算法和EKF算法誤差對比圖 圖5 EKF神經網絡訓練收斂圖 遺傳算法是一種仿生的搜索型算法,它可以使問題在一定的約束下接近最優解[10]。訓練時間過長,訓練的結果不收斂是神經網絡常見的問題,基于EKF 算法的神經網絡在訓練的過程中有時也會陷入局部最優的情況。遺傳算法可以在全局范圍內尋優[11],達到在網絡訓練前權值和閾值向量接近最優值的效果,本文將SOC真實值與神經網絡估算值差值的絕對值作為適應度函數,如下式所示: 式中:Sreal是SOC的真實測量值,Spre是神經網絡的預測值。遺傳算法優化流程圖如圖6所示。 圖6 遺傳算法優化流程圖 圖7是GA算法優化后訓練收斂圖,從圖中可以看出,在遺傳算法優化下,對閾值和權值進行快速尋優[11-12],可以提高訓練速度,提升訓練精度,經過17 次訓練,神經網絡的誤差就達到了最小值。最終訓練結果如表4所示,可以看到EKF神經網絡估算的平均絕對誤差為0.004 2,均方根誤差為0.005 4,比BP 神經網絡精度更高,經過遺傳算法優化后,EKF 神經網絡估算的平均絕對誤差為0.003 9,均方根誤差為0.004 9,精度得到了進一步的提高。 圖7 GA優化后訓練收斂圖 表4 訓練結果 本文基于Matlab/Simulink 平臺搭建了鋰電池二階RC 仿真計算模型[13],鋰電池模型如圖8所示,將辨識出來鋰電池參數用查表法導入模型中,以R1為例,如圖9所示。 圖8 鋰電池二階RC 模型圖 圖9 R1查表法示意圖 利用HPPC 工況驗證模型的精度,將該工況下的實驗數據和模型仿真數據進行對比,如圖10所示,在m 點處進行3C大電流充電,在n 點處進行5C大電流放電,較大倍率的電流會影響模型參數辨識的準確性,導致模型仿真值出現突變,誤差出現較大波動,但是如圖11所示,HPPC 工況下模型仿真誤差始終在2%之內,精度滿足要求。 圖10 HPPC工況下端電壓仿真值與測量值曲線 圖11 HPPC工況模型仿真誤差 為了進一步驗證模型的精度,本文運用UDDS 工況進行驗證。圖12 是UDDS 工況下端電壓仿真值與測量值曲線圖,圖13 是UDDS 工況模型仿真誤差圖。從圖中可以看出,在該工況下,模型的端電壓仿真誤差在3.3%之內,精度滿足要求。 圖12 UDDS工況下端電壓仿真值與測量值曲線 圖13 UDDS 工況模型仿真誤差 本文通過大量的充放電試驗,對鋰電池進行了參數辨識,使用辨識出來的參數在Matlab/Simulink 平臺搭建了二階RC 等效電路模型,通過HPPC 工況和UDDS 工況實驗數據檢驗,二階RC 等效電路模型可以真實反映鋰電池特性。用EKF 算法更新神經網絡閾值和權值,對SOC進行預測,通過仿真驗證EKF 神經網絡預測精度優于BP 神經網絡。用遺傳算法對神經網絡閾值和權值進行尋優,減小陷入局部最優解的概率,仿真驗證得出遺傳算法優化后的EKF 神經網絡收斂速度更快,估算精度更高。








2 基于擴展卡爾曼濾波算法的神經網絡
2.1 擴展卡爾曼濾波器



2.2 基于EKF 算法的神經網絡實現






3 遺傳算法優化神經網絡初值




4 鋰電池模型工況分析


4.1 HPPC 工況模型精度驗證


4.2 UDDS 工況模型精度驗證


5 結論