基于μC/OS-II的電動車電池管理系統設計
2.2 應用軟件設計
2.2.1 系統多任務功能和優先級設計
根據電池管理系統的功能要求,將系統分為電壓電流采集處理模塊、溫度采集模塊、通信模塊、系統監視模塊和SoC計算模塊等共8個任務和5個中斷來實現。每個任務根據其實時性的要求并參照單調執行率調度法RMS分配一定的優先級。任務及中斷的定義分別如表1、表2所列。

根據整車控制策略,CAN上電池狀態數據每幀的刷新周期為20ms,故設置操作系統時鐘節拍為20ms;相應地設置ADProsTask()、CANTXDTask()、SOCTask()和MoniTask()的執行周期均為20 ms;考慮到電池組的溫度變化相對較慢,同時溫度傳感器DS18820的溫度轉換時間相對較長,設置TempTask()的執行周期為100ms;CANRXDTask()和SCIRXDTask()的執行采用中斷觸發方式;SCITXDTask()由上位機的啟動和停止信號控制執行,執行周期為40 ms。
應用軟件設計的難點在于,可靠地設計固態繼電器陣列(TLP296)的時序邏輯。由于TLP296存在最大4ms的打開和關斷時間,因此必須設計死區時間,以確保在采集電池模塊電壓時,電池不會發生短路;同時還要保證在A/D轉換之前,采樣通道(即相應的TLP296)完全打開。所以利用了DSP的Timerl下溢中斷配合系統時鐘周期來有效地控制CPLD的時序。整體工作的時序邏輯如圖3所示。

2.2.2 任務間的通信與同步
μC/OS-II提供了5種用于數據共享和任務通信的方法:信號量、郵箱、消息隊列、事件標志及互斥型信號量。為了減少操作系統的開支,在電池管理系統應用軟件設計中只利用了其中的郵箱作為任務間的通信手段,如圖4所示。

電池管理系統的核心是以數據采集為基礎的,所以ADProsTask()是其他任務的前提。通過ADC中斷向郵箱1發消息就緒ADProsTask(),待其執行完后相應的數據保存和處理后向郵箱2發消息就緒其他等待數據的任務,其他任務按照優先級依次執行;溫度采集和處理的任務獨立進行;CAN接收任務和SCI任務是在相應的郵箱中得到消息后執行,消息也是由相應的中斷服務程序發出。
結語
電池管理系統采用了DSP+CPLD的結構,加之相應的抗干擾措施,具有性能高、可靠性強的特點。由于內嵌μC/OS-II,使程序的開發周期大大縮短,增強了系統的可維護性和擴展性,在實際的應用中取得了良好的效果。
評論