用于电池管理系统的数据存储系统设计
2014-09-06陈硕颖郑敏信齐铂金杨清森
陈硕颖,郑敏信,齐铂金,杨清森
(北京航空航天大学 机械工程及自动化学院,北京 100191)
用于电池管理系统的数据存储系统设计
陈硕颖,郑敏信,齐铂金,杨清森
(北京航空航天大学 机械工程及自动化学院,北京 100191)
电池管理系统是电动汽车不可或缺的部分,为了满足电池管理系统对大量监测数据进行保存的需求,本文设计了应用于电池管理系统的高效数据存储系统。本系统采用飞思卡尔HCS08系列的MC9S08DZ60单片机和容量为2G的SD卡,可以将电池管理系统采集和生成的海量数据实时地存储到SD卡中。实验表明,本系统可自动创建文件并无遗漏地记录CAN总线上每100 ms发出的数据。
数据存储;SD卡; FAT16;电池管理系统
引 言
电动汽车由于在节能和环保方面的优势,成为汽车产业发展的主要方向。动力电池组作为一种新能源,是电动汽车的能量源和重要组成部分,而电池管理系统(Battery Management System, BMS)是动力电池和整车之间的桥梁[1]。
电动汽车的电池管理系统的基本功能是采集电池的电压、电流、温度等参数,通过对这些信号的处理判断电池的故障状态,并进行荷电状态等的计算。电池管理系统采集到的监控数据根据其不同的处理方式,主要可分为检测量和诊断量两类[2]:检测量包括采集的单体电池的电压、温度以及电池包的总电流、总电压等;诊断量是指由主控模块对检测量进行计算处理后获得的状态数据,如电池荷电状态、电池健康状态、故障码等。
本文设计的数据存储系统可以作为电池管理系统中的一个模块,用于对电池管理系统产生的检测量和诊断量进行存储。对这些数据有效的记录有利于离线分析电池性能、进行电池故障的诊断以及对电池管理系统的优化。
1 硬件电路设计
为了满足数据存储的要求,硬件电路部分主要由飞思卡尔公司的MC9S08DZ60单片机和SanDisk公司的SD卡组成。通过单片机接收CAN总线上传输的数据,然后存储至SD卡内。电路结构示意图如图1所示。
图1 电路结构示意图
1.1 单片机选用
HCS08系列单片机兼备高性能和低功耗的特点,选用32引脚的MC9S08DZ60,其优势在于:片内置8位CPU,总线频率可达20 MHz,运算速度完全可以满足SD卡高速读写的需求;有60 KB Flash和4 KB RAM,可以满足高速通信和海量运算的需求;片内串行外围接口SPI可用于与SD卡之间通信,其高电平为3.3 V,满足SD卡工作电压;具有多达32个中断,包括2个CAN中断,可以实现BMS与存储系统之间的高速通信。
1.2 SD读写设计
SD卡是一种基于半导体的存储设备,体积很小但却拥有高记忆容量、快速数据传输率、极大的移动灵活性以及很好的安全性等特点。工作电压范围为2.0~3.6 V,可变时钟频率为0~25 MHz,并可实现10万次编程/擦除[3]。
表1 SD卡在SPI模式下引脚定义
注:类型中S为电源;I为输入;O为推挽输出;PP为推挽I/O。
图2 SD卡硬件连接电路
2 软件程序设计
数据存储系统的软件程序以数据写入SD卡的存储程序为核心,其程序具有层次性,从下往上依次设计为SD卡的硬件驱动、FAT文件系统和BMS对存储系统的应用。其整体过程流程如图3所示,其中SD卡的初始化和写操作以及FAT文件系统的使用将进行重点介绍。
图3 数据存储系统整体程序流程
2.1 SD卡的驱动
MC9S08DZ60与SD卡通过SPI通信,MC9S08DZ60发送命令至SD卡后,SD卡会响应返回值,返回值正确则实现操作命令。其中发送的所有CMD命令长度都是6字节,通用的命令格式如表2所列。具体包括起始位“01”和结束位“1”。SPI数据传输较稳定,驱动过程中未使用CRC校验。
表2 CMD命令格式
通过对CMD命令集的调用可实现多种功能,如对SD卡的初始化,对SD卡状态的读取以及数据的读写和擦除。SD卡的初始化以调用基本命令为主,其流程如图4所示。
图4 SD卡初始化流程图
SD卡以单个块即512字节进行读写,通过发送读命令CMD17和写命令CMD24,完成读写流程,如图5所示。相似地,可通过发送多块读/写命令CMD18和CMD25分别对多个数据块进行读和写操作。
图5 SD卡读/写流程图
2.2 FAT文件系统
FAT文件系统[6]在建立低于32G的FAT文件系统时具有结构简单、兼容性好等不可忽视的特点。FAT16相比于FAT32,其目录区大小和偏移地址固定,但16位的FAT区将一个文件的大小限制于2G。由于使用的SD卡自身容量有限,而FAT16的程序编写更为简单易行,因而在本设计中采用FAT16文件系统。
若将SD卡格式化为FAT16格式,则根据卡内的地址分为5个区:主引导记录区MBR、系统引导记录区DBR、文件配置表FAT1及其备份FAT2、目录区DIR和DATA数据区。
MBR和DBR定义了卡内数据存储的基本规则,如簇和各区大小的定义。对于文件的具体信息存放在目录区DIR,文件内容存放在数据区DATA内。FAT区即对数据区的索引,FAT区为特殊的链式结构,对于FAT16系统,每个FAT单元为2字节,分别对应着数据区相同序号的簇,存放内容为未完文件所在的下一簇序号,直到该单元存放0xFFFF,则该簇为文件链尾。磁盘结构及FAT16的文件存储实现示意图如图6所示。
图6 磁盘分区表及FAT16文件系统实例示意图
FAT文件系统在数据存储系统中实现的功能为:将写入SD卡的数据进行文件化处理。通过对目录区、FAT区和数据区的分别写入,可完成文件的自动创建和数据的自行保存。其实现过程如图7所示。
图7 FAT16文件系统的数据存储流程图
3 基于电池管理系统关键数据的存储实验
电池管理系统采集的数据具有种类多、数据量大、传输速率快等特点,部分数据如图8所示。为了测试本系统存储BMS数据的性能,本文对CAN总线上两个主要的报文进行存储:报文一包括电池总电流、总电压、平均温度和SOC等;报文二包括电池模块的最高电压/最低电压、模块温度和故障码等。
图8 数据样例
每一条监控数据的存储格式设定为“时间+报文ID+数据”,即包括3字节的监控时间、4字节的报文ID号以及8个字节的监控数据,整理为ASCII码后每条数据共30字节。每次写入一个扇区即512字节的数据,可包括16条接收数据,存储在文本文件中数据的格式和内容详见表3。
表3 监控数据存储格式
注:单个字节内容以ASCII形式存入文本文件后,表现为两字节。
本文搭建的实验平台通过BMS采集电池组数据,由数据存储系统将数据存储进SD卡,再经由PC上位机查看和处理。实现了在SD卡内自动创建文件BMSDAT01.txt,考虑到文件过大时上位机查看困难,当文件大于给定值50 MB时生成新文件。再次使用时可继续上次数据进行记录,通过PC机可直接查看文件中数据及其记录的时间和来源报文ID,也可以直接对卡中数据文件进行删除等操作而不影响再次使用。目前本数据存储系统可实现对CAN总线上每100 ms发出的数据的完全无遗漏记录,更高频率下对数据的完全记录还有待完善。综上所述,本数据存储系统对2G的SD卡具有较高的利用率,短时间内可存储大量数据且具有较高稳定性,因此可以较好地应用于电池管理系统中。
结 语
[1] 郑敏信,齐铂金,吴红杰,等.混合动力客车锂离子动力电池管理系统[J].高技术通讯,2008,18(2).
[2] 王风国,齐铂金,吴红杰.基于DSP与LabVIEW的电池监测与控制器标定系统[J].理论与方法,2008,27(1):16-19.
[3] 吴建建,齐铂金,李巧平.基于SD卡的海量历史数据存储系统设计[J].电子设计工程,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文件系统读写设计[J].技术纵横,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卡读写系统设计[J].应用天地,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)