本文以鋰離子電池為研究對象,選取Thevenin模型描述電池的動態行為,基于脈沖充放電數據,對電池模型進行參數辨識。結果表明,Thevenin模型能較好地描述電池的動態行為。最后在Simulink環境下,基于擴展卡爾曼濾波(EKF)算法,實現對電池SOC的估算。
1、電池模型選取
由于Thevenin模型結構簡單,參數辨識容易,因此該模型常作為電動汽車動力電池的基礎模型。Thevenin模型如下圖所示:
將模型的狀態方程與量測方程離散化,得到如下形式的模型:
2、參數辨識方法
最小二乘法是一種最基本也最常用的估計方法。由于參數在線辨識需要不斷更新數據,這時可以采用遞推最小二乘法。
遞推最小二乘法的基本思想為:利用新的觀測數據對舊的估計值進行修正。其算法流程為:
其中,θ為待辨識參數組成的向量,K是增益系數,z是實際量測值,P是量測協方差陣。初值θ(0)和P(0)可以通過離線方法獲得。
c0=[0.0001 0.0001 0.0001]'; % 直接給出被辨識參數的初始值,即一個充分小的實向量
p0=10^(6)*eye(3,3); % 直接給出初始狀態P0,即一個充分大的實數單位矩陣
c=[c0,zeros(3,L-1)]; % 被辨識參數矩陣的初始值及大小
e=zeros(3,L); % 相對誤差的初始值及大小
lambda=0.98; % 遺忘因子
遞推最小二乘法隨著時間的推移會出現“數據飽和”的現象,為克服這個問題。引入遺忘因子λ,改進后的算法遞推公式如下:
for k=3:L;
y(k)=ocv(k)-ul(k);
h=[y(k-1),it(k),it(k-1)]';
d1=y(k)-h'*c0;
x=h'*p0*h+lambda;
x1=inv(x);
Kk=p0*h*x1; % 求出K的值
c1=c0+Kk*d1; % 求被辨識參數c
e1=c1-c0; % 求參數當前值與上一次的值的差值
e2=e1./c0; % 求參數的相對變化
e(:,k)=e2; % 把當前相對變化的列向量加入誤差矩陣的最后一列
c0=c1; % 新獲得的參數作為下一次遞推的舊參數
c(:,k)=c1; % 把辨識參數c列向量加入辨識參數矩陣的最后一列
p1=(p0-Kk*h'*p0)/lambda; % 求出 p(k)的值
p0=p1;
end
根據電池Thevenin模型,可以得到差分方程為:
可以解出模型中各參數的值:
a1=c(1,:); a2=c(2,:); a3=c(3,:);
a = a1;
R0 = a2;
R1 = (a3-a.*R0)./(a-1);
C1 = -1./(R1.*log10(a));
參數辨識結果如下圖所示:
使用脈沖放電工況對模型的精度進行驗證,電池驗證模型如下圖所示:
其中,SOC Calculate模塊:
其中,RC Paremeter Calculate模塊:通過遺忘因子最小二乘法的參數辨識結果獲取。
其中,Voltage Calculate模塊:
結果表明:Thevenin模型參數辨識較為容易,對工況的仿真效果較好,可以相對準確地描述電池的動態特性。
3、電池SOC估算
其中,安時積分法模塊:
其中,電池參數模塊:
其中,電池模型模塊:
其中,EKF估算模塊:
Q = Noise(1); % 過程噪聲
R = Noise(2); % 觀測噪聲
%% --------------A矩陣,狀態轉移----------
A1 = 1;
A2 = exp(-0.05/Tao);
A = [A1 0;0 A2];
P_last = [P_old(1) P_old(2);P_old(3) P_old(4)];
P_pre=A*P_last*A'+ [Q 0;0 Q];
%% --------------C矩陣-------------
C1 = 1.526 - 9.117*2*SOC_pre + 41.17*3*SOC_pre^2 ...
- 116.2*4*SOC_pre^3 + 184.4*5*SOC_pre^4 ...
- 148.9*6*SOC_pre^5 + 47.59*5*SOC_pre^6;
C = [C1 -1];
%% --------------更新--------------
X_pre = [SOC_pre;Up_pre];
K = P_pre*C'*(C*P_pre*C'+ R)^(-1); % 增益
X_upd = X_pre + K*(UL_ob-UL_pre); % 得到估計值
P_update = P_pre - K*C*P_pre;
%% --------------輸出--------------
SOC_upd = X_upd(1);
Up_upd = X_upd(2);
P_upd = [P_update(1,1) P_update(1,2) P_update(2,1) P_update(2,2)];
4、小結
本期提供了一種電池SOC估算的具體的學習方法,對于研究SOC估算的同學有很大的引導作用。不管是做何種電池的SOC估算,都需要通過電池參數辨識→電池模型驗證→電池SOC估算這樣一個過程。
結果表明,Thevenin模型能較好地描述電池的動態行為。最后在Simulink環境下,基于擴展卡爾曼濾波(EKF)算法,實現對電池SOC的估算。
需要通過其他參數辨識方法/其他電池SOC估算方法的可以基于此模型進行修改/改進。
-
鋰離子電池
+關注
關注
85文章
3215瀏覽量
77550 -
卡爾曼濾波
+關注
關注
3文章
162瀏覽量
24635 -
電池充放電
+關注
關注
1文章
164瀏覽量
9024 -
simulink仿真
+關注
關注
0文章
75瀏覽量
8560 -
電池SOC
+關注
關注
0文章
10瀏覽量
3584
發布評論請先 登錄
相關推薦
評論