基于μC/OS-II的電動(dòng)車電池管理系統(tǒng)設(shè)計(jì)
2.2 應(yīng)用軟件設(shè)計(jì)
2.2.1 系統(tǒng)多任務(wù)功能和優(yōu)先級(jí)設(shè)計(jì)
根據(jù)電池管理系統(tǒng)的功能要求,將系統(tǒng)分為電壓電流采集處理模塊、溫度采集模塊、通信模塊、系統(tǒng)監(jiān)視模塊和SoC計(jì)算模塊等共8個(gè)任務(wù)和5個(gè)中斷來實(shí)現(xiàn)。每個(gè)任務(wù)根據(jù)其實(shí)時(shí)性的要求并參照單調(diào)執(zhí)行率調(diào)度法RMS分配一定的優(yōu)先級(jí)。任務(wù)及中斷的定義分別如表1、表2所列。
根據(jù)整車控制策略,CAN上電池狀態(tài)數(shù)據(jù)每幀的刷新周期為20ms,故設(shè)置操作系統(tǒng)時(shí)鐘節(jié)拍為20ms;相應(yīng)地設(shè)置ADProsTask()、CANTXDTask()、SOCTask()和MoniTask()的執(zhí)行周期均為20 ms;考慮到電池組的溫度變化相對(duì)較慢,同時(shí)溫度傳感器DS18820的溫度轉(zhuǎn)換時(shí)間相對(duì)較長(zhǎng),設(shè)置TempTask()的執(zhí)行周期為100ms;CANRXDTask()和SCIRXDTask()的執(zhí)行采用中斷觸發(fā)方式;SCITXDTask()由上位機(jī)的啟動(dòng)和停止信號(hào)控制執(zhí)行,執(zhí)行周期為40 ms。
應(yīng)用軟件設(shè)計(jì)的難點(diǎn)在于,可靠地設(shè)計(jì)固態(tài)繼電器陣列(TLP296)的時(shí)序邏輯。由于TLP296存在最大4ms的打開和關(guān)斷時(shí)間,因此必須設(shè)計(jì)死區(qū)時(shí)間,以確保在采集電池模塊電壓時(shí),電池不會(huì)發(fā)生短路;同時(shí)還要保證在A/D轉(zhuǎn)換之前,采樣通道(即相應(yīng)的TLP296)完全打開。所以利用了DSP的Timerl下溢中斷配合系統(tǒng)時(shí)鐘周期來有效地控制CPLD的時(shí)序。整體工作的時(shí)序邏輯如圖3所示。
2.2.2 任務(wù)間的通信與同步
μC/OS-II提供了5種用于數(shù)據(jù)共享和任務(wù)通信的方法:信號(hào)量、郵箱、消息隊(duì)列、事件標(biāo)志及互斥型信號(hào)量。為了減少操作系統(tǒng)的開支,在電池管理系統(tǒng)應(yīng)用軟件設(shè)計(jì)中只利用了其中的郵箱作為任務(wù)間的通信手段,如圖4所示。
電池管理系統(tǒng)的核心是以數(shù)據(jù)采集為基礎(chǔ)的,所以ADProsTask()是其他任務(wù)的前提。通過ADC中斷向郵箱1發(fā)消息就緒ADProsTask(),待其執(zhí)行完后相應(yīng)的數(shù)據(jù)保存和處理后向郵箱2發(fā)消息就緒其他等待數(shù)據(jù)的任務(wù),其他任務(wù)按照優(yōu)先級(jí)依次執(zhí)行;溫度采集和處理的任務(wù)獨(dú)立進(jìn)行;CAN接收任務(wù)和SCI任務(wù)是在相應(yīng)的郵箱中得到消息后執(zhí)行,消息也是由相應(yīng)的中斷服務(wù)程序發(fā)出。
結(jié)語
電池管理系統(tǒng)采用了DSP+CPLD的結(jié)構(gòu),加之相應(yīng)的抗干擾措施,具有性能高、可靠性強(qiáng)的特點(diǎn)。由于內(nèi)嵌μC/OS-II,使程序的開發(fā)周期大大縮短,增強(qiáng)了系統(tǒng)的可維護(hù)性和擴(kuò)展性,在實(shí)際的應(yīng)用中取得了良好的效果。
評(píng)論