摘 要: 按照V模式的開發方法對燃料電池車用動力蓄電池管理系統" title="電池管理系統">電池管理系統BMS進行了開發。根據BMS的功能和相應的算法在Simulink平臺上對BMS進行了建模仿真。模型驗證無誤后,運用embedded target for TI C2000實現控制器的自動代碼生成" title="自動代碼生成">自動代碼生成,并在硬件平臺上對自動生成的代碼進行了驗證。
關鍵詞: V-模式;DSP;自動代碼生成;電池管理系統
?
汽車市場的激烈競爭要求設計者必須縮短產品開發周期。在傳統的汽車電子控制器的設計開發中,控制器的總體設計、整體性能分析以及控制策略的優化通常需要大量的時間、人力和物力,投資大、效率低。此外,這種開發方法還容易出錯,直到最終定標時才進入實時在線測試。如果在最初設計時出錯而沒有及時發現,則會導致大部分工作必須重新進行,開發周期變長。可見傳統的研發方法無法滿足市場的需要,必需有一種新的設計理念來適應市場的需求。
1 V模式的設計方法" title="設計方法">設計方法及自動代碼生成
1.1 V模式的設計方法
如圖1,與傳統的設計方法相比,V模式的設計方法將系統工程學的原理應用于現代汽車電子系統開發中,它是一種循環的設計模式。其特點是無論進行開發、編程或者測試,總是在同一環境下工作,開發過程的每一步都可以得到驗證[1]。它以功能強大的計算仿真工具為前提,整個設計過程都是在同一個平臺下完成,實現從設計理念的提出,到快速原型設計(Prototype),再到ECU產品的無縫連接。采用該方法的最直接效果就是加速和簡化了開發流程,及時消除錯誤,大大減輕了工程師的工作量。
?
1.2 運用Simulink實現自動代碼生成
自動代碼生成處于V模式的最底層,是整個開發過程中最為關鍵的一步,其目的是實現開發過程中的快速迭代以提高開發效率。代碼生成的質量直接影響系統的可靠性和穩定性。
圖2為基于MATLAB/Simulink" title="MATLAB/Simulink">MATLAB/Simulink的DSP自動代碼生成流程[2]。Simulink是一種對于動態系統進行多域仿真和基于模型設計的平臺,它提供了一個交互式的圖形環境和豐富的模塊庫" title="模塊庫">模塊庫。根據系統的功能要求,首先在MATLAB/Simulink環境下搭建系統模型,并且進行仿真分析。使用Simulink調試器檢查仿真結果以及定位和診斷模型中的意外行為。一旦結果得到了驗證,便可以通過RTW(Real-time workshop)自動生成面向TI編譯器的C語言工程文件,并進一步完成編譯、連接和下載,最終在硬件平臺上運行。
?
RTW是和MATLAB、Simulink一起使用的一個工具,運用它直接從Simulink模型生成代碼并且自動建立可以實時運行的程序。在默認情況下,RTW生成的是高度優化和完全注釋的C代碼。除了MATLAB function模塊和調用M文件S函數的模塊以外,任何Simulink模型都可以生成代碼,包括線性、非線性、連續、離散以及混合模型[3]。
從整個過程來看,工程師只需在Simulink中搭建模型和驗證模型的正確性,不需要書寫任何代碼,即可得到可靠、準確的代碼。
2 嵌入式Target for TI C2000工具箱
Target for TI C2000將TI公司的eXpressDSP工具集成到Simulink中,它是MATLAB與TI CCS的連接工具,可以使MATLAB、MATLAB工具箱、TI Code Composer Studio集成開發環境(CCS IDE)以及RTDX(Real-Time Data Exchange)協同工作。
Target for TI C2000工具箱由三部分組成[3]:常用工具、芯片外圍設備模塊庫、優化庫。常用工具包括實時數據交換通道模塊、目標控制器基本參數設置模塊和CAN通訊設置模塊。該工具箱支持C281x系列、C280x系列以及C2400系列的DSP。優化庫包含定點運算庫和數字電機控制庫。
Simulink可支持四類C280x DSP外圍設備模塊庫:存儲器的讀寫模塊、中斷管理模塊、控制模塊以及通訊模塊。除了不支持IIC通訊模塊以外,該模塊庫對C280x DSP板上所有的模塊都提供了很好的支持。用戶在調用DSP的這些模塊時,只需對相應的模塊進行參數設置和選擇,不需要關心底層是如何實現,整個模型的搭建過程就像堆積木一樣簡單。
3 自動生成代碼在電池管理系統中的應用
3.1 電池管理系統的功能描述
BMS燃料電池車用鋰離子電池管理系統BMS(Battery Management System)是一個嵌入式實時監控系統,應具備以下功能[4]:電池狀態監控,包括電池工作電壓、工作電流和工作溫度的測量和信號處理;特定狀態下的最大充、放電功率計算;特定工況下電池組荷電狀態SoC(State of Charge)、壽命狀態SoH(State of Health)的估算;高壓預充電、過充和過放保護、絕緣檢測和漏電保護;電池的均衡和熱管理;故障診斷以及與整車控制器通訊。圖3為BMS系統框圖。
?
由于汽車在處于停車狀態時,BMS仍需每隔一定的時間對電池進行監控,所以在長時間停車時,BMS不可將蓄電池存儲的電量耗完,否則汽車將無法啟動。因此在停車時,BMS必須進入低功耗模式。當汽車開動時,從KL15傳來的點火信號將控制器從低功耗模式喚醒,進入正常工作模式。
3.2 控制器的選擇
從BMS的功能可以看出,控制器起控制作用的功能只占BMS的小部分,在實時參數估計、SoC估算中,算法復雜且運算量大,控制器需要在較短的時間間隔內完成復雜的遞推運算,這對控制器的計算能力和計算速度要求更高。傳統的電池管理系統采用單片機作為控制器,由于單片機側重于控制而實時數據運算能力有限,所以無法很好地滿足BMS的要求。TI公司的TMS320C2000系列DSP集微控制器和高性能DSP的特點于一身,具有強大的控制和信號處理能力,能夠實現復雜的控制算法。該系列DSP上整合了Flash存儲器、快速高精度的A/D轉換器、兩路增強的CAN模塊、事件管理器、正交編碼電路接口、多通道緩沖串口等外設。32位定點運算的C2808 DSP能夠在一個周期內完成32×32位的乘法累加運算,或兩個16×16位乘法累加運算。此外,可以在一個周期內對任何內存地址完成讀取、修改、寫入操作,使得效率和程序代碼達到最佳,完全滿足實時控制的要求[5]。
3.3 電池參數辨識和SoC估計算法
電池監控必需先進行建模,實時檢測電池的電壓、電流以及溫度,根據這些數據對模型的參數進行辨識,從而間接地估計電池內部的情況。圖4為鋰離子動力電池模型[6],模型中利用C0描述電池的容量,R0描述電池的等效歐姆內阻,用時間常數較小的R1、C1環節描述鋰離子在電極間傳輸時受到的阻抗,時間常數較大的R2、C2環節描述鋰離子在電極材料中擴散時受到的阻抗。該模型中的參數都可以通過參數辨識的方法得到。
?
為了實現自適應控制和跟蹤隨時間變化的參數,在辨識過程中采用遞推的最小二乘法。電池內部參數根據電壓、電流信號每次的采樣值進行更新,其基本思想是本次的估計值等于上一次的估計值加上一個修正項,修正項的大小取決于模型的輸出與實際輸出的差項。該方法要求在下次采樣之前必須完成一步遞推運算。
在裝車運行時,整車控制器需要BMS提供高精度的SoC,一般估計精度要小于5%。電池的SoC是不能直接得到的,只能通過對電池電壓、電流、溫度、內阻等參數進行測量間接估算得到。而且這些參數又與電池老化程度、電池單體不均勻性等有關。目前常見的方法有開路電壓法、電流積分法等。
3.4 基于CAN總線的標定模塊
由于汽車上網絡系統的廣泛應用,基于網絡連接的控制單元標定和傳統的匹配標定方法有很大的不同。基于CAN的電子控制單元的標定是電池管理系統控制器開發的一個重要環節。CCP(CAN Cali-bration Protocol)是CAN總線的標定協議,目前已經得到汽車廠商的廣泛應用。利用該協議可以快速有效地對控制器進行標定。在電池管理系統中,可以利用CCP實現實時在線測試、傳感器的監測和標定、報警或出錯閾值的調整以及通過CAN下載程序。
在傳統的手寫代碼的控制器設計過程中,基于CCP協議的標定需要支持CCP協議的驅動程序。由于ECU底層程序和CCP協議的驅動程序各不相同,將CCP驅動程序結合到ECU中需要耗費大量時間。MATLAB 2007b中新增了基于CAN總線的標定模塊。將該模塊放入Simulink模型中,并設置好相關參數,便可以自動生成能夠實現CCP標定的代碼了。
3.5 在Simulink中建立模型
在建模的最開始必需把C2000 DSP chip support 中的F2808 eZdsp 模塊放到模型中。該模塊是對DSP的基本信息進行設置,包括芯片的選擇、鎖相環時鐘頻率的選擇、存儲器地址分配,以及外圍設備的一些基本設置。
傳感器輸出模擬信號和數字信號,對于模擬信號可以用A/D轉換模塊進行轉換,對于數字信號可以用GPIO或者CAP捕獲模塊處理。經硬件濾波后的模擬采樣信號還不夠理想,在該模型中可以對采樣信號進行快速傅立葉變換,分析出噪聲信號的頻率特性,并設計出相應的數字濾波器,對采樣信號進行進一步濾波。執行器的控制可以用GPIO或者PWM模塊進行控制。
由于SoC和SoH以及控制算法較為復雜,可以用S-function模塊實現。S-function是一個動態系統的計算機語言描述,是擴展Simulink模塊庫的有力工具,它采用一種特定的調用語法,實現函數和Simulink解法器之間的交互。Simulink中的電池管理系統模型如圖5所示。
?
3.6 自動代碼生成、編譯以及運行
在Simulink中仿真運行無誤后,便可以從模型直接生成控制算法代碼了。Simulink在內部調用real-time workshop build 并且自動打開TI的集成開發環境CCS,生成的代碼經過編譯自動生成可執行的最終控制程序。通過USB接口仿真器和14pin標準JTAG調試連接線將程序燒入目標系統中。
C2808 DSP有兩種運行模式,一種是通過仿真器將程序下載到RAM中運行,這種運行模式中可以通過仿真器在CCS中設置斷點、單步運行、查看存儲器等,對程序的運行情況進行實時監控和調試。另外一種模式是將程序下載到Flash中單獨運行,這種運行模式不需要CCS 的介入。一般在實驗調試階段采用RAM模式,調試成功以后再采用Flash模式單獨運行。
利用設計出的控制器進行電流和電壓采樣,電壓采樣精度為1/1000, 電流采樣精度小于5/1000。設計的SoC算法能夠在DSP上在30ms內完成一步遞推運算,滿足電池管理系統實時操作的要求。運行自動生成的代碼并結合Vector公司的CANape工具成功實現CCP協議對RAM和Flash存儲器中參數的在線標定。圖6是測量電壓和模型輸出電壓的比較。從圖中可以看出,測量電壓與模型輸出電壓相當吻合,證實了代碼的正確性。
?
實踐表明,應用DSP取代傳統單片機作為BMS的控制器,其強大的控制能力和信號運算處理能力更能夠滿足電池管理系統的要求。在Matlab/Smulink平臺下用嵌入式的Target for TI C2000實現控制器自動代碼生成,極大地加快了電動汽車BMS系統的開發進程,縮短了開發周期。運行測試表明:自動生成的代碼效率高而且可靠,控制器對電池系統的控制作用實時準確,可靠性高,對電池模型的參數估計滿足精度要求。
參考文獻
[1] 戴海峰,魏學哲,孫澤昌.V-模式及其在現代汽車電子系統開發中的應用[J].機電一體化,2006,(6):20-24.
[2] 齊星剛,趙剛,李原.在MATLAB/Simulink平臺上DSP代碼的自動生成[J].中國測試技術,2005,31(1):87-88.
[3] MATLAB R2007b Users Guide.The MathWorks Corp.,2007.
[4] PLETT G L,KLEIN M J.Advances in HEV Battery Management Systems.SAE,2006-21-0060.
[5] Texas Instruments TMS320F2808 User Manual.Texas Instruments Corp.,2005.
[6] 魏學哲,鄒廣楠,孫澤昌.燃料電池汽車中電池建模及其參數估計[J].電源技術,2004,28(10):605-608.