陳碩穎,鄭敏信,齊鉑金,楊清森
(北京航空航天大學 機械工程及自動化學院,北京 100191)
?
用于電池管理系統(tǒng)的數(shù)據(jù)存儲系統(tǒng)設(shè)計
陳碩穎,鄭敏信,齊鉑金,楊清森
(北京航空航天大學 機械工程及自動化學院,北京 100191)
電池管理系統(tǒng)是電動汽車不可或缺的部分,為了滿足電池管理系統(tǒng)對大量監(jiān)測數(shù)據(jù)進行保存的需求,本文設(shè)計了應(yīng)用于電池管理系統(tǒng)的高效數(shù)據(jù)存儲系統(tǒng)。本系統(tǒng)采用飛思卡爾HCS08系列的MC9S08DZ60單片機和容量為2G的SD卡,可以將電池管理系統(tǒng)采集和生成的海量數(shù)據(jù)實時地存儲到SD卡中。實驗表明,本系統(tǒng)可自動創(chuàng)建文件并無遺漏地記錄CAN總線上每100 ms發(fā)出的數(shù)據(jù)。
數(shù)據(jù)存儲;SD卡; FAT16;電池管理系統(tǒng)
電動汽車由于在節(jié)能和環(huán)保方面的優(yōu)勢,成為汽車產(chǎn)業(yè)發(fā)展的主要方向。動力電池組作為一種新能源,是電動汽車的能量源和重要組成部分,而電池管理系統(tǒng)(Battery Management System, BMS)是動力電池和整車之間的橋梁[1]。
電動汽車的電池管理系統(tǒng)的基本功能是采集電池的電壓、電流、溫度等參數(shù),通過對這些信號的處理判斷電池的故障狀態(tài),并進行荷電狀態(tài)等的計算。電池管理系統(tǒng)采集到的監(jiān)控數(shù)據(jù)根據(jù)其不同的處理方式,主要可分為檢測量和診斷量兩類[2]:檢測量包括采集的單體電池的電壓、溫度以及電池包的總電流、總電壓等;診斷量是指由主控模塊對檢測量進行計算處理后獲得的狀態(tài)數(shù)據(jù),如電池荷電狀態(tài)、電池健康狀態(tài)、故障碼等。
本文設(shè)計的數(shù)據(jù)存儲系統(tǒng)可以作為電池管理系統(tǒng)中的一個模塊,用于對電池管理系統(tǒng)產(chǎn)生的檢測量和診斷量進行存儲。對這些數(shù)據(jù)有效的記錄有利于離線分析電池性能、進行電池故障的診斷以及對電池管理系統(tǒng)的優(yōu)化。
為了滿足數(shù)據(jù)存儲的要求,硬件電路部分主要由飛思卡爾公司的MC9S08DZ60單片機和SanDisk公司的SD卡組成。通過單片機接收CAN總線上傳輸?shù)臄?shù)據(jù),然后存儲至SD卡內(nèi)。電路結(jié)構(gòu)示意圖如圖1所示。
圖1 電路結(jié)構(gòu)示意圖
1.1 單片機選用
HCS08系列單片機兼?zhèn)涓咝阅芎偷凸牡奶攸c,選用32引腳的MC9S08DZ60,其優(yōu)勢在于:片內(nèi)置8位CPU,總線頻率可達20 MHz,運算速度完全可以滿足SD卡高速讀寫的需求;有60 KB Flash和4 KB RAM,可以滿足高速通信和海量運算的需求;片內(nèi)串行外圍接口SPI可用于與SD卡之間通信,其高電平為3.3 V,滿足SD卡工作電壓;具有多達32個中斷,包括2個CAN中斷,可以實現(xiàn)BMS與存儲系統(tǒng)之間的高速通信。
1.2 SD讀寫設(shè)計
SD卡是一種基于半導體的存儲設(shè)備,體積很小但卻擁有高記憶容量、快速數(shù)據(jù)傳輸率、極大的移動靈活性以及很好的安全性等特點。工作電壓范圍為2.0~3.6 V,可變時鐘頻率為0~25 MHz,并可實現(xiàn)10萬次編程/擦除[3]。
表1 SD卡在SPI模式下引腳定義
注:類型中S為電源;I為輸入;O為推挽輸出;PP為推挽I/O。
圖2 SD卡硬件連接電路
數(shù)據(jù)存儲系統(tǒng)的軟件程序以數(shù)據(jù)寫入SD卡的存儲程序為核心,其程序具有層次性,從下往上依次設(shè)計為SD卡的硬件驅(qū)動、FAT文件系統(tǒng)和BMS對存儲系統(tǒng)的應(yīng)用。其整體過程流程如圖3所示,其中SD卡的初始化和寫操作以及FAT文件系統(tǒng)的使用將進行重點介紹。
圖3 數(shù)據(jù)存儲系統(tǒng)整體程序流程
2.1 SD卡的驅(qū)動
MC9S08DZ60與SD卡通過SPI通信,MC9S08DZ60發(fā)送命令至SD卡后,SD卡會響應(yīng)返回值,返回值正確則實現(xiàn)操作命令。其中發(fā)送的所有CMD命令長度都是6字節(jié),通用的命令格式如表2所列。具體包括起始位“01”和結(jié)束位“1”。SPI數(shù)據(jù)傳輸較穩(wěn)定,驅(qū)動過程中未使用CRC校驗。
表2 CMD命令格式
通過對CMD命令集的調(diào)用可實現(xiàn)多種功能,如對SD卡的初始化,對SD卡狀態(tài)的讀取以及數(shù)據(jù)的讀寫和擦除。SD卡的初始化以調(diào)用基本命令為主,其流程如圖4所示。
圖4 SD卡初始化流程圖
SD卡以單個塊即512字節(jié)進行讀寫,通過發(fā)送讀命令CMD17和寫命令CMD24,完成讀寫流程,如圖5所示。相似地,可通過發(fā)送多塊讀/寫命令CMD18和CMD25分別對多個數(shù)據(jù)塊進行讀和寫操作。
圖5 SD卡讀/寫流程圖
2.2 FAT文件系統(tǒng)
FAT文件系統(tǒng)[6]在建立低于32G的FAT文件系統(tǒng)時具有結(jié)構(gòu)簡單、兼容性好等不可忽視的特點。FAT16相比于FAT32,其目錄區(qū)大小和偏移地址固定,但16位的FAT區(qū)將一個文件的大小限制于2G。由于使用的SD卡自身容量有限,而FAT16的程序編寫更為簡單易行,因而在本設(shè)計中采用FAT16文件系統(tǒng)。
若將SD卡格式化為FAT16格式,則根據(jù)卡內(nèi)的地址分為5個區(qū):主引導記錄區(qū)MBR、系統(tǒng)引導記錄區(qū)DBR、文件配置表FAT1及其備份FAT2、目錄區(qū)DIR和DATA數(shù)據(jù)區(qū)。
MBR和DBR定義了卡內(nèi)數(shù)據(jù)存儲的基本規(guī)則,如簇和各區(qū)大小的定義。對于文件的具體信息存放在目錄區(qū)DIR,文件內(nèi)容存放在數(shù)據(jù)區(qū)DATA內(nèi)。FAT區(qū)即對數(shù)據(jù)區(qū)的索引,F(xiàn)AT區(qū)為特殊的鏈式結(jié)構(gòu),對于FAT16系統(tǒng),每個FAT單元為2字節(jié),分別對應(yīng)著數(shù)據(jù)區(qū)相同序號的簇,存放內(nèi)容為未完文件所在的下一簇序號,直到該單元存放0xFFFF,則該簇為文件鏈尾。磁盤結(jié)構(gòu)及FAT16的文件存儲實現(xiàn)示意圖如圖6所示。
圖6 磁盤分區(qū)表及FAT16文件系統(tǒng)實例示意圖
FAT文件系統(tǒng)在數(shù)據(jù)存儲系統(tǒng)中實現(xiàn)的功能為:將寫入SD卡的數(shù)據(jù)進行文件化處理。通過對目錄區(qū)、FAT區(qū)和數(shù)據(jù)區(qū)的分別寫入,可完成文件的自動創(chuàng)建和數(shù)據(jù)的自行保存。其實現(xiàn)過程如圖7所示。
圖7 FAT16文件系統(tǒng)的數(shù)據(jù)存儲流程圖
電池管理系統(tǒng)采集的數(shù)據(jù)具有種類多、數(shù)據(jù)量大、傳輸速率快等特點,部分數(shù)據(jù)如圖8所示。為了測試本系統(tǒng)存儲BMS數(shù)據(jù)的性能,本文對CAN總線上兩個主要的報文進行存儲:報文一包括電池總電流、總電壓、平均溫度和SOC等;報文二包括電池模塊的最高電壓/最低電壓、模塊溫度和故障碼等。
圖8 數(shù)據(jù)樣例
每一條監(jiān)控數(shù)據(jù)的存儲格式設(shè)定為“時間+報文ID+數(shù)據(jù)”,即包括3字節(jié)的監(jiān)控時間、4字節(jié)的報文ID號以及8個字節(jié)的監(jiān)控數(shù)據(jù),整理為ASCII碼后每條數(shù)據(jù)共30字節(jié)。每次寫入一個扇區(qū)即512字節(jié)的數(shù)據(jù),可包括16條接收數(shù)據(jù),存儲在文本文件中數(shù)據(jù)的格式和內(nèi)容詳見表3。
表3 監(jiān)控數(shù)據(jù)存儲格式
注:單個字節(jié)內(nèi)容以ASCII形式存入文本文件后,表現(xiàn)為兩字節(jié)。
本文搭建的實驗平臺通過BMS采集電池組數(shù)據(jù),由數(shù)據(jù)存儲系統(tǒng)將數(shù)據(jù)存儲進SD卡,再經(jīng)由PC上位機查看和處理。實現(xiàn)了在SD卡內(nèi)自動創(chuàng)建文件BMSDAT01.txt,考慮到文件過大時上位機查看困難,當文件大于給定值50 MB時生成新文件。再次使用時可繼續(xù)上次數(shù)據(jù)進行記錄,通過PC機可直接查看文件中數(shù)據(jù)及其記錄的時間和來源報文ID,也可以直接對卡中數(shù)據(jù)文件進行刪除等操作而不影響再次使用。目前本數(shù)據(jù)存儲系統(tǒng)可實現(xiàn)對CAN總線上每100 ms發(fā)出的數(shù)據(jù)的完全無遺漏記錄,更高頻率下對數(shù)據(jù)的完全記錄還有待完善。綜上所述,本數(shù)據(jù)存儲系統(tǒng)對2G的SD卡具有較高的利用率,短時間內(nèi)可存儲大量數(shù)據(jù)且具有較高穩(wěn)定性,因此可以較好地應(yīng)用于電池管理系統(tǒng)中。
[1] 鄭敏信,齊鉑金,吳紅杰,等.混合動力客車鋰離子動力電池管理系統(tǒng)[J].高技術(shù)通訊,2008,18(2).
[2] 王風國,齊鉑金,吳紅杰.基于DSP與LabVIEW的電池監(jiān)測與控制器標定系統(tǒng)[J].理論與方法,2008,27(1):16-19.
[3] 吳建建,齊鉑金,李巧平.基于SD卡的海量歷史數(shù)據(jù)存儲系統(tǒng)設(shè)計[J].電子設(shè)計工程,2011,19(1):145-148.
[4] SD Group (MEI,SanDisk,Toshiba).SD Memory Card Specifications Part 1:Physical Layer Specification, 2000.
[5] 時堯.HCS12X單片機的SD卡FAT文件系統(tǒng)讀寫設(shè)計[J].技術(shù)縱橫,2010(9):25-28.
[6] Microsoft Corporation.Microsoft Extensible Firmware Initiative FAT32 File System Specification FAT:General Overview of On Disk Format (Version 1. 03),2000.
[7] 張恒.基于AT89S52和FAT16的SD卡讀寫系統(tǒng)設(shè)計[J].應(yīng)用天地,2009(27):53-58.
Storage System Applied to Battery Management System
Chen Shuoying,Zheng Minxin,Qi Bojin,Yang Qingsen
(Department of Mechanical Engineering and Automation, Beihang University, Beijing 100191, China)
The battery management system is an indispensable part of the electric vehicle, in order to meet the demand of a large number of monitoring data to be restored, an efficient data storage system applied in the battery management system is designed. The system adoptes the Freescale MC9S08DZ60 microcontroller of HCS08 Series and 2G SD card, battery management system collectes and generates huge amounts of data,which is stored in the SD card in real time. The experiment proves that the system can automatically create a file and record data sent by CAN bus every 100ms with no missing data.
data storage; SD card; FAT16; battery management system
TP23
A
迪娜
2013-07-05)