李欣陽 李立偉 劉含筱
(1.國網(wǎng)萊陽市供電公司 煙臺 265200)(2.青島大學自動化與電氣工程學院 青島 266071)
近幾年來,因為環(huán)境污染的加劇,電動汽車憑借其運行過程中干凈無污染的特性取得了長足的發(fā)展。雙積分新政和補貼政策等一系列相關(guān)政策的調(diào)整和變化,使中國新能源汽車產(chǎn)業(yè)在國家產(chǎn)銷目標的規(guī)劃中穩(wěn)步推進。近日,中汽協(xié)發(fā)布行業(yè)相關(guān)數(shù)據(jù),數(shù)據(jù)顯示中國新能源汽車去年的產(chǎn)量為79.4萬輛,銷量為77.7萬輛,同比分別增長53.8%和53.3%,而產(chǎn)銷量占據(jù)中國整體汽車市場的2.7%。
功能完善的電池管理系統(tǒng)是高性能電動汽車的運行保障和必備設(shè)施。電池管理系統(tǒng)不僅需要實現(xiàn)SOC估算,電池的整體電壓、電流的測量,故障報警等功能,而且需要實現(xiàn)數(shù)據(jù)采集、處理和通訊等功能[1]。本文從電池管理系統(tǒng)的軟件控制入手,選用ST公司的STM32F103RBT6作為本電池管理系統(tǒng)的主控制器芯片,采用分體式布局,將電池管理系統(tǒng)分為主控單元和數(shù)據(jù)采集單元分別進行設(shè)計和管理[2],通過軟件設(shè)計實現(xiàn)電池管理系統(tǒng)的各項功能,優(yōu)化系統(tǒng)運行流程,提高電池管理系統(tǒng)的運行可靠性。
根據(jù)電池管理系統(tǒng)主控單元的實際要求,本設(shè)計選用ST公司的高性能數(shù)字信號控制器芯片STM32系列的STM32F103RBT6作為電池管理系統(tǒng)硬件電路的主控芯片[3]。
作為STM32通用增強型系列的STM32F103RBT6,擁有64個引腳以及128K字節(jié)的閃存存儲器,可以在工業(yè)級溫度-40℃~85℃內(nèi)正常穩(wěn)定工作[4]。該處理器基于32位Cortex-M3位CPU內(nèi)核設(shè)計而成,以最高72MHz的頻率工作時,能夠達到90DMIPS的處理能力。該芯片具有更大的存儲空間以及靈活的外部存儲器接口,同時具有CAN總線和SPI串行總線等多種外設(shè)通信接口,芯片可以快捷地與其他設(shè)備之間進行通信[5]。
主控制器芯片及主控單元外圍電路設(shè)計如圖1所示。

圖1 主控制器芯片及主控單元外圍電路設(shè)計圖
本電池管理系統(tǒng)采用分體式拓撲結(jié)構(gòu)設(shè)計硬件電路,將電池管理系統(tǒng)分為由主控芯片以及其周邊電路組成的主控單元和設(shè)立在動力電池組上的數(shù)據(jù)采集單元,并利用CAN總線使主控單元和數(shù)據(jù)采集單元實現(xiàn)實時通訊[6]。其拓撲結(jié)構(gòu)如圖2所示。

圖2 電池管理系統(tǒng)拓撲結(jié)構(gòu)框圖
SOC的定義是在一定的放電倍率下,剩余容量與相同條件下額定容量的比值[7],即

其中,Ql為電池的剩余容量;Qn為額定容量。
在實際工程應用中,一般通過開路電壓法和安時積分法來估算電池的荷電狀態(tài)(State of Charge,SOC)。開路電壓法實現(xiàn)簡單,但是精度不高并且只能應用于靜態(tài)檢測,故其使用范圍受限;安時積分法的計算量小,可以實時在線監(jiān)測,但是其存在電流的累計誤差效應,導致安時積分法的精度較低[8]。在工程應用中,常采用將開路電壓法和安時積分法結(jié)合使用的方法進行計算,這種方法具有計算量小和成本低的優(yōu)點,但缺點是誤差較大,誤差值在8%左右。安時積分法的計算公式如下:

其中,SOC(t0)是位于t0時刻時SOC的估算值。
為了消除安時積分法的累計誤差,提高SOC估算的精準度,在安時積分法對SOC估算時,使用拓展卡爾曼濾波算法來不斷迭代,逐步修正誤差,從而提高數(shù)據(jù)的精準度。
在卡爾曼濾波法中,非線性系統(tǒng)的狀態(tài)方程可表示為

觀測方程可表示為

其中:k表示任意時間點;隨機變量Wk-1代表由系統(tǒng)擾動、建模不準確造成的過程噪聲以及電池老化對電池的影響系數(shù);Vk表示由測量誤差等產(chǎn)生的觀測噪聲。
式(3)中的非線性函數(shù)f將電池組k-1時刻的狀態(tài)映射到k時刻的狀態(tài),式(4)中非線性函數(shù)g反映了狀態(tài)變量Xk和觀測變量Zk之間的關(guān)系。
使用泰勒級數(shù)對非線性的狀態(tài)方程和測量方程進行線性化,可以求得拓展卡爾曼濾波的時間更新方程,具體方程如下:

狀態(tài)更新方程如下:

其中:為k時刻的先驗估算;為誤差協(xié)方差矩隈的先驗值;Kk為KEF的濾波增益;Pk為誤差協(xié)方差矩陣;I為單位矩陣。
由公式可得,為了對電池組進行準確的SOC估算,要準確測量SOC的初值,并盡可能減少電流測量值的誤差[9]。因此,本文將安時積分法與卡爾曼濾波法相結(jié)合,通過安時積分法計算電池的剩余電量,并利用卡爾曼濾波法減少電流測量值的誤差,從而準確估算電池組的SOC值。
本電池管理系統(tǒng)的軟件開發(fā)環(huán)境選用的是RealView MDK。該開發(fā)環(huán)境支持軟件仿真調(diào)試,能夠?qū)爝M行管理,并且含有C編譯器、鏈接器等。RealView MDK能夠支持以Cortex-M3為內(nèi)核的STM32系列微處理器的開發(fā)。RealView MDK軟件開發(fā)環(huán)境中的設(shè)備模擬器可以仿真整個目標硬件,其中包括快速指令集仿真、外部信號和I/O仿真、中斷過程仿真、片內(nèi)所有外圍設(shè)備仿真等模塊[10]。同時RealView MDK的性能分析器可以輔助查看代碼的覆蓋情況、程序運行時間和函數(shù)調(diào)用次數(shù)等控制功能,大大簡化了運行調(diào)試難度。圖3即為軟件的開發(fā)環(huán)境。

圖3 軟件開發(fā)環(huán)境
本文設(shè)計的電池管理系統(tǒng)軟件部分,首先在Keil μVision內(nèi)編寫實現(xiàn)系統(tǒng)各部分功能的程序代碼,編寫完成后進行軟件仿真,并通過設(shè)置斷點來進行單步調(diào)試[11]。
電池管理系統(tǒng)的核心是軟件模塊設(shè)計,高效的電池管理系統(tǒng)需要保證子程序功能又快又好地實現(xiàn)。本文依據(jù)電池管理系統(tǒng)應包含的功能和開發(fā)需求,確定了軟件設(shè)計部分應包含的主要模塊,并采用模塊化設(shè)計的原則,各部分基本獨立[12]。軟件模塊設(shè)計的程序主要包括系統(tǒng)主控模塊和數(shù)據(jù)采集模塊主程序、總電流采集程序、握手信號檢測程序以及SOC估算程序[13]。
如圖4、5所示,分別為系統(tǒng)的軟件主控模塊和數(shù)據(jù)采集模塊主程序流程圖設(shè)計。

圖4 主控模塊主程序流程圖

圖5 數(shù)據(jù)采集單元主程序流程圖
4.2.1 總電流采集模塊
在硬件電路設(shè)計中,電流采集模塊主要采用霍爾電壓傳感器對電路的總電流進行測量。在軟件設(shè)計中,首先初始化STM32F103RBT6內(nèi)置的ADC通道,將硬件電路采集到的電流信號傳遞到對應的I/O口,最后通過程序?qū)Σ杉降臄?shù)據(jù)進行一系列的轉(zhuǎn)換[14]。除此之外,程序需要將內(nèi)置的ADC設(shè)置為連續(xù)轉(zhuǎn)換模式,并在數(shù)據(jù)轉(zhuǎn)換完成后自動進行CAN通訊傳輸信息。
4.2.2 握手信號檢測模塊
握手信號檢測模塊的主要功能是連接充電設(shè)備與電池管理系統(tǒng)BMS,通過主控制器對輸入的電流、電壓信號進行檢測,如果與充電樁信號相匹配則系統(tǒng)進入充電狀態(tài),反之斷開充電并與整車控制器進行通訊。
握手信號檢測模塊的工作過程如下:當充電設(shè)備上電后進行自檢,充電設(shè)備與電池管理系統(tǒng)通過周期性發(fā)送檢測信號并進行握手連接。握手成功后,電池管理系統(tǒng)根據(jù)自身狀況判斷是否需要充電,當允許充電時,周期性發(fā)送設(shè)置信號至充電設(shè)備進行充電;當不允許進行充電操作時,發(fā)送禁止充電信號至充電設(shè)備,禁止充電設(shè)備向電池充電。握手信號檢測模塊軟件流程圖如圖6所示。

圖6 握手信號監(jiān)測模塊程序流程圖
4.2.3 SOC估算模塊
本電池管理系統(tǒng)采用擴展卡爾曼濾波算法對電池的SOC進行估算。卡爾曼濾波算法能夠估算出電池的SOC值并通過不斷對誤差進行修正從而增加SOC估算的精準度。當計算出初始SOC值后,算法會定時自動計算當前時刻的SOC值并進行更新,同時根據(jù)前一時刻的系統(tǒng)預測誤差估算當前時刻的系統(tǒng)預測誤差,從而得到當前時刻最優(yōu)的SOC估算值。
如圖7即為電池SOC估算流程圖。

圖7 SOC估算流程圖
在電動汽車的實際運行過程中,電動汽車的運行工況復雜多變,因此產(chǎn)生的干擾原因千差萬別,隨機性很高。為了保證電池管理系統(tǒng)各個模塊之間能夠協(xié)調(diào)穩(wěn)定并安全可靠地運行,采用必要的軟件抗干擾設(shè)計就顯得尤為重要。本文采用的軟件抗干擾設(shè)計方法主要如下[15]:
1)在動力電池的單體電壓數(shù)據(jù)采集并轉(zhuǎn)換完成后,采取滑動平均值濾波的方法可以濾除采集數(shù)據(jù)中的周期性干擾信號,最終提高單體電壓的平滑度。
2)芯片配置寄存器的內(nèi)容,在寫操作完成之后進行回讀寄存器操作,將數(shù)據(jù)與寫入內(nèi)容進行比較,從而確保數(shù)據(jù)寫入與回讀內(nèi)容相一致。
3)利用看門狗技術(shù),防止程序進入死循環(huán)狀態(tài)。當程序失控跑飛時,程序陷入了死循環(huán)之中,看門狗技術(shù)能夠在程序進入死循環(huán)時,使程序復位并回歸正常。
本文在實驗室條件下,對18650鋰離子電池進行測試,其單節(jié)標稱電壓為3.7V,實驗結(jié)果如表1所示。

表1 實驗測得數(shù)據(jù)
有實驗數(shù)據(jù)可得,測得電壓與電壓表測得的電池實際電壓的誤差在±5mV之內(nèi),滿足設(shè)計要求。

圖8 上位機調(diào)試軟件功能圖
本文經(jīng)過實際搭建硬件電路實驗平臺以及通過上位機進行軟件調(diào)試,實現(xiàn)了電池管理系統(tǒng)主控單元軟件控制的SOC估算,測量電池的整體電壓、電流,故障報警,數(shù)據(jù)采集、處理和通訊等功能。軟件設(shè)計部分上位機調(diào)試如圖8所示。
本文采用ST公司的STM32F103RBT6控制芯片作為核心控制芯片對電動汽車電池管理系統(tǒng)進行總體控制,并在此基礎(chǔ)上進行了軟件設(shè)計。實際調(diào)試應用表明,本文所設(shè)計的電池管理系統(tǒng)的軟件模塊,能夠高效穩(wěn)定地實現(xiàn)電池管理系統(tǒng)的功能,具有良好實際應用價值。但是該電池管理系統(tǒng)軟件的功能還有很大的開發(fā)空間,許多實用的功能還可以根據(jù)實際應用情況進行補充和進一步改進。