目前國內(nèi)外基本都采用SOC來作為描述動力電池容量狀態(tài)的內(nèi)部參數(shù)。電池SOC估計是否準確對于電池來說關(guān)系重大,會直接影響動力電池使用壽命和電動汽車的行駛里程。但是電池SOC卻很難在使用中直接測量得到,只能通過其它可以直接測量的電池參數(shù)估算得到。這就提高了SOC估計的難度,也使如何精準估計電池SOC成為了當下動力電池領(lǐng)域的研究熱點。
卡爾曼濾波算法是有效的、經(jīng)典的智能算法,能夠?qū)崿F(xiàn)最小方差的最優(yōu)狀態(tài)估計,目前被廣泛應(yīng)用于許多工程領(lǐng)域。由于其具有較好的估計精度和時效性,結(jié)合基爾霍夫定律搭建的二階RC模型一起使用,已逐漸成為電池SOC估算研究領(lǐng)域的熱點方法??紤]到卡爾曼濾波算法只適用于線性系統(tǒng),應(yīng)用到電池SOC中需要對其進行擴展,即擴展卡爾曼濾波算法(Extended Kalman Filter,EKF)。EKF算法的內(nèi)涵:通過泰勒級數(shù)展開并忽略高次項的方法對非線性系統(tǒng)進行改造。
令非線性系統(tǒng)的離散狀態(tài)方程和觀測方程如下式所示:
式中,xk表示系統(tǒng)在k時刻的狀態(tài)向量,yk表示系統(tǒng)在k時刻的觀測向量,uk表示系統(tǒng)在k時刻的輸入向量,f(xk,uk)表示系統(tǒng)的狀態(tài)轉(zhuǎn)移函數(shù),g(xk,uk)表示系統(tǒng)的測量函數(shù),wk是系統(tǒng)的過程噪聲,其協(xié)方差是Qk,vk是系統(tǒng)的觀測噪聲,其協(xié)方差是Rk。
對f(xk,uk)和g(xk,uk)進行泰勒級數(shù)展開后線性處理得到的系統(tǒng)狀態(tài)空間方程為:
式中,Ak表示系統(tǒng)參數(shù)矩陣,Ck表示觀測系統(tǒng)參數(shù)矩陣。
得到系統(tǒng)的離散表達式后,可利用EKF算法進行狀態(tài)估計。
X_pre= [SOC_pre;U1_pre;U2_pre];
K=P_pre H' ((HP_preH'+R)^(-1));
X_upd= X_pre + K*(UL_ob-UL_pre);
P_update= (eye(3) - K*H)*P_pre;
通過具體的參數(shù)辨識結(jié)果,結(jié)合EKF算法對SOC進行估計,需要將電池的兩個RC環(huán)節(jié)的端電壓以及SOC作為系統(tǒng)的狀態(tài)變量。
SOC_upd= X_upd(1);
U1_upd= X_upd(2);
U2_upd= X_upd(3);
電池負載端電壓為輸出變量,對電池模型狀態(tài)空間方程和觀測方程進行離散化處理,得到電池系統(tǒng)離散化表達式:
A=[10 0;0 exp(-1/Tao1) 0;0 0 exp(-1/Tao2)];
B=[-11/(2.6763600);rp1*(1-exp(-delta_t/(rp1 cp1)));rp2 (1-exp(-delta_t/(rp2*cp2)))];
C1=8.3085SOC_pre^8-121.5774SOC_pre^7+402.8993SOC_pre^6-597.0354SOC_pre^5+463.6147SOC_pre^4-192.8896SOC_pre^3+40.3829SOC_pre^2-2.9747SOC_pre+3.4805; % 備注:OCV-SOC函數(shù)求導(dǎo)關(guān)系式
H= [C1 -1 -1];
同時,OCV-SOC的關(guān)系可表示為:
OCV=8.3085SOC^8-121.5774SOC^7+402.8993SOC^6-597.0354SOC^5+463.6147SOC^4-192.8896SOC^3+40.3829SOC^2-2.9747SOC+3.4805;
function [U1_pre,U2_pre,Tao1,Tao2]= fcn(R1,R2,C1,C2,U1_upd,U2_upd,I)
Tao1 = R1*C1;
Tao2 = R2*C2;
U1_pre = U1_upd*exp(-1/Tao1) + R1*I*(1-exp(-1/Tao1));
U2_pre = U2_upd*exp(-1/Tao2) + R2*I*(1-exp(-1/Tao2));
function [P_upd,SOC_upd,U1_upd, U2_upd] = fcn(Noise, UL_ob, UL_pre, P_old, SOC_pre, U1_pre,U2_pre, Tao1,Tao2)
Q = Noise(1); %過程噪聲
R = Noise(2); %觀測噪聲
%%
%狀態(tài)方程系數(shù)
A=[1 0 0;0 exp(-1/Tao1) 0;0 0 exp(-1/Tao2)];
B=[-1*1/(2.676*3600);rp1*(1-exp(-delta_t/(rp1*cp1)));rp2*(1-exp(-delta_t/(rp2*cp2)))];
P_last = [P_old(1) P_old(2) P_old(3); P_old(4) P_old(5) P_old(6); P_old(7) P_old(8) P_old(9)];
P_pre = A*P_last*A' + [Q 0 0;0 Q 0;0 0 Q];
%%
fn=@(x) 8.3085*x^8-121.5774*x^7+402.8993*x^6-597.0354*x^5+463.6147*x^4-192.8896*x^3+40.3829*x^2-2.9747*x+3.4805;
syms t1;
g=fn(t1);
g=matlabFunction(diff(g));
C1 = 8.3085*SOC_pre^8-121.5774*SOC_pre^7+402.8993*SOC_pre^6-597.0354*SOC_pre^5+463.6147*SOC_pre^4-192.8896*SOC_pre^3+40.3829*SOC_pre^2-2.9747*SOC_pre+3.4805;
H = [C1 -1 -1];
%%
X_pre = [SOC_pre;U1_pre;U2_pre];
K=P_pre*H'*((H*P_pre*H'+ R)^(-1));%計算卡爾曼增益
X_upd = X_pre + K*(UL_ob-UL_pre);
P_update = (eye(3) - K*H)*P_pre;
%%
SOC_upd = X_upd(1);
U1_upd = X_upd(2);
U2_upd = X_upd(3);
P_upd = [P_update(1,1) P_update(1,2) P_update(1,3) P_update(2,1) P_update(2,2) P_update(2,3) P_update(3,1) P_update(3,2) P_update(3,3)];
得到基于電池模型的離散狀態(tài)空間方程后,結(jié)合擴展卡爾曼濾波算法,基于Simulink仿真,搭建電池SOC估算模塊。通過EKF算法對電池SOC估算,首先根據(jù)隨機工況定義系統(tǒng)的狀態(tài)變量初值,以及恰當?shù)脑肼晠f(xié)方差矩陣Qk和Rk的值。然后,基于EKF算法通過k-1時刻系統(tǒng)狀態(tài)估計值和k時刻系統(tǒng)的輸入值uk,觀測值yk,估計出k時刻的狀態(tài)估計值。
從圖中可以看出,估計曲線非常快速地逼近到真值附近。說明該算法可以快速對初值偏差進行修正。即使在初值不清楚的情況下,依然能給出較為準確的SOC估計值。
-
電動汽車
+關(guān)注
關(guān)注
156文章
12067瀏覽量
231103 -
動力電池
+關(guān)注
關(guān)注
113文章
4531瀏覽量
77607 -
simulink仿真
+關(guān)注
關(guān)注
0文章
75瀏覽量
8575 -
卡爾曼濾波算法
+關(guān)注
關(guān)注
0文章
12瀏覽量
2102 -
電池SOC
+關(guān)注
關(guān)注
0文章
10瀏覽量
3587
發(fā)布評論請先 登錄
相關(guān)推薦
評論