动力电池作为混合动力电动汽车的关键零部件之一,由于其一致性差等原因易导致整组电池性能下降,从而直接影响到整车的可靠性与安全性。为了满足实际的整车控制需求而调整和优化控制器中的控制参数,需要收集大量的工作数据,以便离线分析电池性能以及进行系统标定。传统的收集数据方法通常是利用串口或CAN总线将即时数据读入计算机,但是该方法还局限于实验阶段,一般需要PC机参与,在实际工作中的数据较难获得。国外有公司生产的基于CAN总线的行车记录仪,体积较大且价格昂贵,仅适用于整车厂研发新车时使用。利用SD卡(Se-cure DIGItal Memory Card)轻巧、传输速度高、容量大、成本低、读写方便的优点,以及在原有电池管理系统上配置方便的特点,本文设计了一种小巧的应用于电池管理系统的海量历史数据存储系统,采用标准Windows系统FAT32文件格式存储,可以方便将数据导入到计算机中。一次换卡可以记录1年的数据,为电池管理系统和电池特性的研究准备了大量第一手数据。
1 SD卡硬件电路设计
SD是新一代半导体存储设备卡,其外形及引脚定义如图1、表1所示。SD卡工作电压为2.0~3.6 V,最大读写速度达10MB/s(4位数据线并用),并且提供了SD和SPI两种通信模式。在使用时,主机只能通过其中一种方式与SD卡进行通信,该模式通过上电后检测Reset命令来决定。本系统采用SPI方式操作SD卡,因为该方式具有接口电路简单(DSP芯片TMS320LF2407A提供SPI接口),并且通信协议也十分简洁的优点。因为DSP芯片TMS320LF2407A的SPI模块高电平刚好是3.3 V,所以SD卡座可直接与TMS320LF2407A的SPI引脚连接,其连线方式如图2所示。
图1 SD卡外形
表1 SD卡引脚定义
图2 SD卡连接电路
2 软件程序设计
软件设计主要难点是SD卡驱动与FAT32文件系统的结合方式设计。FAT32文件系统的实现有一定的复杂性,如果设计地不好不但会浪费大量CPU资源,而且可能造成数据丢失、覆盖等严重后果。采用传统数据流式程序设计思想实现起来比较困难,Debug也很不方便。本设计引用现代Windows操作系统惯用的层次模型划分的方法开发了一套基于SD卡的FAT32文件系统协议包,具有层次分明、结构紧凑、可移植性强及逻辑清晰的特点。
2.1 FAT32文件系统
FAT32是由Microsoft设计并运用得非常成功的文件系统。至今FAT32依然占据着Microsoft Windows文件系统中重要的地位。FAT32改进了FAT16和FAT12不支持大分区、单位簇的容量过大以致空间急剧浪费等缺点。由引导扇区、FAT表、根目录和数据区4大部分组成。图3标出了FAT32分区的基本构成,FAT2是FAT1的备份,用于在FAT1损坏时修复。
图3 FAT32文件存储系统构成
FAT表(File AllocatiON Table文件分配表)记录文件在介质上的放置位置,即簇号序列。每个表项记录的簇号都是32位的,故这个方法称为FAT32。表2所示是一段简化的FAT表,第2簇记录根目录存放位置,第3簇记录某文件存储的下一簇号(该文件从本簇即第3簇开始存放)是6号,第6号又记录接下来的簇号……,至到标记FF表示文件结束。同样道理从第12簇开始存放另一个文件,该文件在第93簇存放结束。从表中可以看出文件是可以非连续存放的,这样可以充分利用SD存储介质的空间,并且可以保证存放BMS采集数据不会发生重叠,冲掉以前数据。表3列出了FAT表各记录项的取值含义。
表2 FAT表与文件存位置的对应关系
表3 FAT32记录项的取值含义
系统在存储一个文件时先计算出需要几个簇的空间来存放,再从FAT表中找出这相应个数的空闲簇,并其修改记录项的取值使之首尾连成一串。然后在目录表中创建一个新的文件项,并记录它在介质上存放的首簇号。这样在读文件时,只要直接从目录表中找到该文件的记录项,获取它的首簇号就能把文件读出来了。FAT32文件系统目录的记录项的结构定义如表4所示。
表4 FAT32目录记录项的结构定义
2.2 SD卡SPI通信协议
发送给SD卡的命令采用6字节的格式如表5所示。命令的第1个字节可通过将6位命令码与16进制码0x40进行或运算得到。如果命令需要,则在接下来的4个字节中提供一个32位的参数,最后1个字节包含了从第1个字节到第5个字节的CRC-7校验和。表6列出了部分SD存储卡SPI命令的解释。
表5 SD卡SPI模式6字节命令格式
表 6 部分SD存储卡SPI模式下命令
2.3 下位机软件设计
下位机SD存储卡驱动程序采用层次化的方法设计,从下到上的关系如图4所示。下一层提供面向上一层的接口支持。其中SPI硬件层是与BMS中所采用的芯片TMS320LF2407A相关的,SD卡命令集则实现DSP与SD存储卡通信需要的SPI命令集的子集,SD卡API层包装好SD卡命令集,使其便于FAT32文件系统层使用。FAT32文件系统层即实现了按照FAT32文件系统要求的文件存储方案。最上层是BMS应用层,负责将BMS系统采集的电池包状态信息打包并以FAT32形式存储到SD卡上。因为本系统只需要文件保存功能,故FAT32文件系统层和SD卡硬层都做了精简处理,这样明显减少了驱动设计时的复杂程度。
图4 层次式SD卡驱动程序
3 数据处理
电动汽车在运行时,BMS会连续产生大量的监测数据,这些数据分可为监测量和诊断量。监测量为实时测量动力母线上的电压、电流、动力电池箱内的模块电压和温度等;诊断量为BMS对实时量的处理结果,包括SOC、SOH和故障码等。如表7所示为记录安装在某辆混合动力轿车上的144 V镍氢RMS的数据。
表7 数据记录格式
记录的历史数据对于电池工艺优化、整车控制器(VMS)研发以及BMS研发都有重要意义。如对所记录的总电压、总电流以及SOC单独绘图如图5所示。对总电流的大小和正负分布分析可以得到ISG电机的工作状况;对SOC分析可以得到整车控制器(VMS)控制策略的效率;对总电压分析可以得到电池的性能信息。
图5 数据分析详例
4 结论
本文设计的基于PSD卡技术实现的动力汽车电池管理系统海量历史数据存储系统,解决了以往电池管理系统在线工作数据难以获得的问题。为电池管理系统参数优化提供了大量的工作状态历史数据,有助于提高系统参数优化准确性,并为电动汽车用电池包特性的建模提供了基础数据。实验证明,采用经过精简的SD存储卡驱动模型有以下特点:存储数据速度快,不影响正常电池管理工作;容错性好,可能会出现
较多小体积文件,但无数据丢失的情况。经过实验验证,在数据记录周期为10 ms的情况下,采用2 G容量的SD卡,可以不间断地记录xx年的历史数据。