1. 電池等效電路模型
采用二階RC等效模型,將電池等效為一個理想電壓源,、一個電阻和兩個RC環(huán)節(jié)的串聯(lián),。
電池的電動勢、內(nèi)阻等會隨著SOC和溫度的變化而變化,,不是定值,。對于同一型號的電池來說,電動勢和SOC的關(guān)系曲線基本上相同,,可以通過HPPC放電實(shí)驗(yàn)測出,。將電池靜置足夠長時間后的開路電壓看作電動勢,由此可得到開路電壓與SOC的關(guān)系曲線,。
其他電池參數(shù)則需要根據(jù)脈沖放電的數(shù)據(jù)使用參數(shù)辨識的方法得到,。
2. 電池模型參數(shù)辨識
2.1 基于Simulink的辨識
Simulink自帶Parameter Estimation功能??梢詫imulink模型中的參數(shù)進(jìn)行估計(jì),。MATLAB的Parameter Estimation官方說明中有一個電池參辨識的例子(見[Simulink參數(shù)辨識官方示例])。使用Simulink進(jìn)行辨識的步驟為:
- 建立Simulink模型,,將需要辨識的參數(shù)用base workspace中的變量表示,。
- 打開菜單欄中Analysis選項(xiàng)下的Parameter Estimation功能,。
- 打開Transient Data, 導(dǎo)入使用實(shí)驗(yàn)或其他方法得到的輸入,、輸出數(shù)據(jù)(由于用不到狀態(tài)數(shù)據(jù)所以不用設(shè)置States),。在這里,輸入數(shù)據(jù)為電池的電流,,輸出數(shù)據(jù)為電池的端電壓。由于電池參數(shù)隨SOC而變化,,輸入數(shù)據(jù)只能為脈沖放電的那一段數(shù)據(jù),,認(rèn)為這段時間內(nèi)電池的SOC沒有太大變化。當(dāng)然也可以將模型建立為與SOC有關(guān)的,,但這樣就過于復(fù)雜了,。
- 打開Variables,設(shè)置需要辨識的參數(shù),。在這里可以設(shè)置參數(shù)的初始值,、范圍等。由于使用的算法一般只能找到一個局部最優(yōu)解,,并不能保證為全局最優(yōu)解,,所以初始值的設(shè)置還是比較重要的。對于鋰電池來說,,電阻一般為mΩ量級,,時間常數(shù)為10s~1000s。
- 打開Estimation,,進(jìn)行參數(shù)估計(jì)的相關(guān)設(shè)置,。勾選要用的Data Set和Parameters。使用Estimation Options進(jìn)行估計(jì)算法的設(shè)置,。MATLAB提供了幾種優(yōu)化算法,,一般選非線性最小方差。比較重要的兩個參數(shù)是參數(shù)截止誤差(Parameter tolerance)和函數(shù)截止誤差(Function tolerance),。只要滿足了兩次迭代的參數(shù)或cost function的不超過截止誤差,,迭代就會停止。在Parallel Options中可以選擇啟用parallel pool來進(jìn)行多線程加速,,但是有時候會失敗,。
- 點(diǎn)擊Start就可以開始了,勾選Show progress views可以看到仿真輸出和參數(shù)的變化,。
- 按照同樣的方法進(jìn)行其他SOC下的參數(shù)辨識,。也可以在Simulink中建立一個模塊,對輸入進(jìn)行篩選,,對不同的SOC使用不同的參數(shù),??梢砸淮涡员孀R出參數(shù)-SOC的關(guān)系。
這種方法的優(yōu)點(diǎn)是簡單易用,。幾乎全部為圖形化操作,,不需要寫代碼,只需要搭建好Simulink模型就可以進(jìn)行估計(jì)了,,而且?guī)缀蹩梢怨烙?jì)任何線性,、非線性的模型。缺點(diǎn)是速度慢,、效率低,。每次迭代都需要編譯并運(yùn)行仿真程序很多次,這個過程程序十分卡頓,。
2.2 基于優(yōu)化方法的辨識
也可以直接用MATLAB的優(yōu)化工具進(jìn)行參數(shù)估計(jì),,全部使用MATLAB代碼實(shí)現(xiàn)。
---未完待續(xù)
3. 雙卡爾曼濾波算法
使用安時積分法可以在短時間內(nèi)較為精確的計(jì)算SOC的變化量,,但無法確定積分初值,,電流誤差也會隨著時間逐漸累及。使用開路電壓可以查表得到SOC,,但需要將電池靜置一段時間才能得到穩(wěn)定的開路電壓,,不適用于SOC時時估計(jì)。
所以使用卡爾曼濾波進(jìn)行SOC估計(jì)的主要思想就是結(jié)合安時積分和開路電壓這兩種方法,。系統(tǒng)狀態(tài)的估計(jì)使用安時積分,,然后用電壓進(jìn)行反饋,得到最優(yōu)的估計(jì)結(jié)果,。在估計(jì)的過程中,,需要用到電池的電阻、電容等參數(shù),,也會用到開路電壓,。
但是即使是同一種型號的電池,其內(nèi)參也會有一定的差異,,而且這些參數(shù)還和電池的溫度有關(guān),,相差10度的情況下參數(shù)就可能相差2倍之多。
雙卡爾曼濾波算法的總體思想是使用兩條卡爾曼濾波的線路,,模型估計(jì)和系統(tǒng)狀態(tài)估計(jì)交替進(jìn)行,。在電池的所有參數(shù)中,歐姆內(nèi)阻(即R0)對電池的外特性影響最大,,而其他4個參數(shù)影響較小,,也不方便建模,所以就認(rèn)為其是常數(shù),。
整個系統(tǒng)由相關(guān)的兩個卡爾曼濾波構(gòu)成,,SOC估計(jì)的卡爾曼濾波使用SOC和RC環(huán)節(jié)上的電壓為狀態(tài)變量。即
X(k)=???S(k)URC1(k)URC2(k)???
這里S(k)表示第K步的SOC,,URC1(k)表示RC環(huán)節(jié)第k步的電壓,。
具體的雙卡爾曼濾波算法步驟為:
- 初始值給定
為使迭代能夠快速收斂,應(yīng)當(dāng)將SOC的初始值設(shè)定的比較接近真實(shí)值,。R0的初始值則通過當(dāng)前SOC查表給出,。另外兩個狀態(tài)可以設(shè)為0。由此就得到了X(0)和R(0),。
SOC估計(jì)
使用第k-1步的系統(tǒng)參數(shù)來估計(jì)第k步的系統(tǒng)狀態(tài),。然后再用第k步的系統(tǒng)狀態(tài)估計(jì)第k步的系統(tǒng)參數(shù)。
首先,,使用電流積分對第k步的系統(tǒng)狀態(tài)進(jìn)行估計(jì):
X(k|k?1)=AS(k)X(k?1)+BS(k)I(k)+wS
其中
AS(k)=???1000exp(?Δt/T1(k?1))000exp(?Δt/T2(k?1))???
BS(k)=????Δt/Q0R1(k?1)(1?exp(?Δt/T1(k?1)))R2(k?1)(1?exp(?Δt/T2(k?1)))???
wS為系統(tǒng)的過程噪聲,基本是由電流的噪聲決定,。
然后是系統(tǒng)狀態(tài)的最優(yōu)估計(jì):
X(k)=X(k|k?1)+KS(k)(V(k)?V(k)′)
其中V(k)為測得的電池兩端電壓,,V(k)′為使用電池模型估計(jì)的端電壓。
V(k)′=FV(S(k))?R0(k)I(k)?URC1(k)?URC2(k)+v
為求KS(k)(卡爾曼增益),,需要計(jì)算方差陣:
PS(k|k?1)=AS(k)PS(k?1)ATS(k)+QS
KS(k)=PS(k|k?1)CTS(k)[CS(k)PS(k|k?1)CTS(k)+rS]?1
CS(k)=[?FV(S)?S|S(k)?1?1]
其中QS為系統(tǒng)過程噪聲的協(xié)方差矩陣,,rS為電壓的測量噪聲的方差。FV(S)為開路電壓關(guān)于SOC的函數(shù),。
最后更新一下方差陣P,,就結(jié)束了這一步的SOC的卡爾曼濾波。
PS(k)=[I?KS(k)CS(k)]PS(k|k?1)
內(nèi)阻估計(jì)
首先,,使用內(nèi)阻和SOC的關(guān)系對第k步的內(nèi)阻進(jìn)行估計(jì),。
R(k|k?1)=R(k?1)+?FR(S(k))?S(k)ΔtQ0I(k)
然后用電壓的誤差得到R的最優(yōu)估計(jì)。
R(k)=R(k|k?1)+KR(k)(V(k)?V(k)′)
其中KR(k)的計(jì)算公式為:
PR(k|k?1)=PR(k?1)+QR
KR(k)=PR(k|k?1)CR(k)[CR(k)PR(k|k?1)CR(k)+rR]?1
CR(k)=?I(k)
QR為電阻的噪聲方差,。rR與rS相同,,都是電壓的測量噪聲方差。
最后更新一下PR:
PR(k)=[1?KR(k)CR(k)]PR(k|k?1)
整個算法的計(jì)算流程圖為:
---不好貼圖
4. 預(yù)測結(jié)果
使用DST實(shí)驗(yàn)的數(shù)據(jù)來驗(yàn)證本濾波器的效果,。DST實(shí)驗(yàn)為Dynamic Stress Test即動態(tài)應(yīng)力實(shí)驗(yàn),,用來評估樣品的最大反饋功率,是FUDS的簡化版,。
|