background image

· 788  ·

 

电 子 测 量 与 仪 器 学 报

 

第 25 卷

 

的数据通信,  一般是通过 CAN 总线,  通过上位机软
件实现对具体电池参数的显示与监控。 

基于 MC9S12XEP100 单片机等硬件结构,  设计

下位机和上位机软件,  实现优化的 SOC 计算,  从而
设计了更加精确的高效的电池管理系统

[2-3]

。 

2    电池管理系统硬件构成 

本电池管理系统包括:  电池组模块部分,  在电

动汽车中的实际使用电池,  这里采用的是 1.2V×6×20
的电池组;  充放电控制电路模块,  其中又包括保护
电路,  电子负载和继电器阵列,  保护电路的作用是
为了对纯硬件结构实现过流和过温保护,  并且故障
解除后具有自恢复功能。电子负载主要起限流作用, 
通过继电器阵列式实现充放电之间的切换,  保证电
路的安全性和可靠性。存储模块,  用于存储电池的实
时数据; AD 模块,  实现电压,  电流等所需要参数的
模数转换; CAN 通信模块,  用于实现下位机和上位
机之间的通信功能。系统框图如图 1 所示。 
 

 

 

 1  电池管理系统系统框图 

Fig. 1    Battery management system block diagram 

 
电池管理系统使用的电池组是由多节镍氢电池

组成,  镍氢电池电量储备大,  使用寿命长,  并且环保
高效,  已经在电子电力,  通信,  交通等部门得到广泛
应用。在电池使用时,  如果充放电设计不合理,  会导
致电池的寿命大大缩短。 

电池剩余电量(SOC)是电池能够进行有效管理

的重要参数,  它的误差一般在 10%。当误差过大则会
导致电池出现一些过度充电或放电的不良后果。通
过一定的策略来保证电池充分发挥本身的能量,  提
高使用效率,  从而达到延长电池的使用寿命的功能。
目前有较多的方法计算 SOC,  常用的是安时法, 
Kalman 滤波法,  开路电压法,  等效电路法,  本电池
管理系统采用修正的安时发和 Kalman 滤波法来实现
SOC 的计算

[4-5]

。 

3  BMS 软件设计 

Freescale 的 MC9S12XEP100 芯片是一款 16 位

双核的 MCU,  具有较强的运算能力,  抗干扰性好, 
低成本,  低功耗和高效的代码率,  适用于电池管理
软件开发的硬件环境。 

3.1    底层软件设计 

MC9S12XEP100 内部的 AD 模块有 6 个 ATD 控

制寄存器, 2 个 ATD 状态寄存器, 1 个使能寄存器和
多个 ATD 转化结果寄存器,  通过对上述寄存器的设
置来完成 AD 转换波特率,  转换采样频率等参数的设
置,  完成 AD 转换函数的设置,  通过 CodeWarrior 自
动生成功能,  完成中断向量表的设置,  设置 RTI 控制
寄存器,  设置相应的控制字,  来得到所需要的时间中
断。因为电池 SOC 的计算对实时电压、电流的要求
较高,  所以实时中断函数的时间间隔设置为 1 ms。电
路中设置了 350 mA 的驱动,  根据设置值向低位开关
发送数据保持时钟极性来控制开关

[6-7]

。 

在设计存储模块的, MC9S12XEP100 采用的是

P-Flash 存储器,  它的读写是以 8 个字节为一个单位
写数据到 Flash 上,  建立对应的数组,  以 4 个数组即 8
字节为一个单位,  利用指针偏移,  实现 16 个字节数
据的存储。若出现意外掉电的情况,  则不执行存储, 
采用折半查找的算法找到当前 Block 空白的区域,  记
录掉电时候的地址,  下次上电时候,  接着上次掉电
的地址继续存储数据,  直到整个存储过程的结束。 

3.2  SOC 估算软件设计 

3.2.1  判温控制模块 

通过实时中断函数,  进入中断,  执行 5 ms 调用

一次判温控制函数,  实时的监控温度和实现充放电
状态之间的切换,  保证电池安全正常的工作。程序流
程如图 2 所示。