基于STM32的分体式电池管理系统SOC估算和软件控制设计∗
2020-05-15李欣阳李立伟刘含筱
李欣阳 李立伟 刘含筱
(1.国网莱阳市供电公司 烟台 265200)(2.青岛大学自动化与电气工程学院 青岛 266071)
1 引言
近几年来,因为环境污染的加剧,电动汽车凭借其运行过程中干净无污染的特性取得了长足的发展。双积分新政和补贴政策等一系列相关政策的调整和变化,使中国新能源汽车产业在国家产销目标的规划中稳步推进。近日,中汽协发布行业相关数据,数据显示中国新能源汽车去年的产量为79.4万辆,销量为77.7万辆,同比分别增长53.8%和53.3%,而产销量占据中国整体汽车市场的2.7%。
功能完善的电池管理系统是高性能电动汽车的运行保障和必备设施。电池管理系统不仅需要实现SOC估算,电池的整体电压、电流的测量,故障报警等功能,而且需要实现数据采集、处理和通讯等功能[1]。本文从电池管理系统的软件控制入手,选用ST公司的STM32F103RBT6作为本电池管理系统的主控制器芯片,采用分体式布局,将电池管理系统分为主控单元和数据采集单元分别进行设计和管理[2],通过软件设计实现电池管理系统的各项功能,优化系统运行流程,提高电池管理系统的运行可靠性。
2 系统硬件设计简介
2.1 主控制器芯片选型
根据电池管理系统主控单元的实际要求,本设计选用ST公司的高性能数字信号控制器芯片STM32系列的STM32F103RBT6作为电池管理系统硬件电路的主控芯片[3]。
作为STM32通用增强型系列的STM32F103RBT6,拥有64个引脚以及128K字节的闪存存储器,可以在工业级温度-40℃~85℃内正常稳定工作[4]。该处理器基于32位Cortex-M3位CPU内核设计而成,以最高72MHz的频率工作时,能够达到90DMIPS的处理能力。该芯片具有更大的存储空间以及灵活的外部存储器接口,同时具有CAN总线和SPI串行总线等多种外设通信接口,芯片可以快捷地与其他设备之间进行通信[5]。
主控制器芯片及主控单元外围电路设计如图1所示。
图1 主控制器芯片及主控单元外围电路设计图
2.2 电池管理系统硬件整体设计
本电池管理系统采用分体式拓扑结构设计硬件电路,将电池管理系统分为由主控芯片以及其周边电路组成的主控单元和设立在动力电池组上的数据采集单元,并利用CAN总线使主控单元和数据采集单元实现实时通讯[6]。其拓扑结构如图2所示。
图2 电池管理系统拓扑结构框图
3 SOC估算研究
SOC的定义是在一定的放电倍率下,剩余容量与相同条件下额定容量的比值[7],即
其中,Ql为电池的剩余容量;Qn为额定容量。
在实际工程应用中,一般通过开路电压法和安时积分法来估算电池的荷电状态(State of Charge,SOC)。开路电压法实现简单,但是精度不高并且只能应用于静态检测,故其使用范围受限;安时积分法的计算量小,可以实时在线监测,但是其存在电流的累计误差效应,导致安时积分法的精度较低[8]。在工程应用中,常采用将开路电压法和安时积分法结合使用的方法进行计算,这种方法具有计算量小和成本低的优点,但缺点是误差较大,误差值在8%左右。安时积分法的计算公式如下:
其中,SOC(t0)是位于t0时刻时SOC的估算值。
为了消除安时积分法的累计误差,提高SOC估算的精准度,在安时积分法对SOC估算时,使用拓展卡尔曼滤波算法来不断迭代,逐步修正误差,从而提高数据的精准度。
在卡尔曼滤波法中,非线性系统的状态方程可表示为
观测方程可表示为
其中:k表示任意时间点;随机变量Wk-1代表由系统扰动、建模不准确造成的过程噪声以及电池老化对电池的影响系数;Vk表示由测量误差等产生的观测噪声。
式(3)中的非线性函数f将电池组k-1时刻的状态映射到k时刻的状态,式(4)中非线性函数g反映了状态变量Xk和观测变量Zk之间的关系。
使用泰勒级数对非线性的状态方程和测量方程进行线性化,可以求得拓展卡尔曼滤波的时间更新方程,具体方程如下:
状态更新方程如下:
其中:为k时刻的先验估算;为误差协方差矩隈的先验值;Kk为KEF的滤波增益;Pk为误差协方差矩阵;I为单位矩阵。
由公式可得,为了对电池组进行准确的SOC估算,要准确测量SOC的初值,并尽可能减少电流测量值的误差[9]。因此,本文将安时积分法与卡尔曼滤波法相结合,通过安时积分法计算电池的剩余电量,并利用卡尔曼滤波法减少电流测量值的误差,从而准确估算电池组的SOC值。
4 系统软件开发环境以及软件程序设计
4.1 软件开发环境
本电池管理系统的软件开发环境选用的是RealView MDK。该开发环境支持软件仿真调试,能够对库进行管理,并且含有C编译器、链接器等。RealView MDK能够支持以Cortex-M3为内核的STM32系列微处理器的开发。RealView MDK软件开发环境中的设备模拟器可以仿真整个目标硬件,其中包括快速指令集仿真、外部信号和I/O仿真、中断过程仿真、片内所有外围设备仿真等模块[10]。同时RealView MDK的性能分析器可以辅助查看代码的覆盖情况、程序运行时间和函数调用次数等控制功能,大大简化了运行调试难度。图3即为软件的开发环境。
图3 软件开发环境
本文设计的电池管理系统软件部分,首先在Keil μVision内编写实现系统各部分功能的程序代码,编写完成后进行软件仿真,并通过设置断点来进行单步调试[11]。
4.2 系统软件程序设计
电池管理系统的核心是软件模块设计,高效的电池管理系统需要保证子程序功能又快又好地实现。本文依据电池管理系统应包含的功能和开发需求,确定了软件设计部分应包含的主要模块,并采用模块化设计的原则,各部分基本独立[12]。软件模块设计的程序主要包括系统主控模块和数据采集模块主程序、总电流采集程序、握手信号检测程序以及SOC估算程序[13]。
如图4、5所示,分别为系统的软件主控模块和数据采集模块主程序流程图设计。
图4 主控模块主程序流程图
图5 数据采集单元主程序流程图
4.2.1 总电流采集模块
在硬件电路设计中,电流采集模块主要采用霍尔电压传感器对电路的总电流进行测量。在软件设计中,首先初始化STM32F103RBT6内置的ADC通道,将硬件电路采集到的电流信号传递到对应的I/O口,最后通过程序对采集到的数据进行一系列的转换[14]。除此之外,程序需要将内置的ADC设置为连续转换模式,并在数据转换完成后自动进行CAN通讯传输信息。
4.2.2 握手信号检测模块
握手信号检测模块的主要功能是连接充电设备与电池管理系统BMS,通过主控制器对输入的电流、电压信号进行检测,如果与充电桩信号相匹配则系统进入充电状态,反之断开充电并与整车控制器进行通讯。
握手信号检测模块的工作过程如下:当充电设备上电后进行自检,充电设备与电池管理系统通过周期性发送检测信号并进行握手连接。握手成功后,电池管理系统根据自身状况判断是否需要充电,当允许充电时,周期性发送设置信号至充电设备进行充电;当不允许进行充电操作时,发送禁止充电信号至充电设备,禁止充电设备向电池充电。握手信号检测模块软件流程图如图6所示。
图6 握手信号监测模块程序流程图
4.2.3 SOC估算模块
本电池管理系统采用扩展卡尔曼滤波算法对电池的SOC进行估算。卡尔曼滤波算法能够估算出电池的SOC值并通过不断对误差进行修正从而增加SOC估算的精准度。当计算出初始SOC值后,算法会定时自动计算当前时刻的SOC值并进行更新,同时根据前一时刻的系统预测误差估算当前时刻的系统预测误差,从而得到当前时刻最优的SOC估算值。
如图7即为电池SOC估算流程图。
图7 SOC估算流程图
4.3 软件抗干扰设计
在电动汽车的实际运行过程中,电动汽车的运行工况复杂多变,因此产生的干扰原因千差万别,随机性很高。为了保证电池管理系统各个模块之间能够协调稳定并安全可靠地运行,采用必要的软件抗干扰设计就显得尤为重要。本文采用的软件抗干扰设计方法主要如下[15]:
1)在动力电池的单体电压数据采集并转换完成后,采取滑动平均值滤波的方法可以滤除采集数据中的周期性干扰信号,最终提高单体电压的平滑度。
2)芯片配置寄存器的内容,在写操作完成之后进行回读寄存器操作,将数据与写入内容进行比较,从而确保数据写入与回读内容相一致。
3)利用看门狗技术,防止程序进入死循环状态。当程序失控跑飞时,程序陷入了死循环之中,看门狗技术能够在程序进入死循环时,使程序复位并回归正常。
5 实验结果与分析
本文在实验室条件下,对18650锂离子电池进行测试,其单节标称电压为3.7V,实验结果如表1所示。
表1 实验测得数据
有实验数据可得,测得电压与电压表测得的电池实际电压的误差在±5mV之内,满足设计要求。
图8 上位机调试软件功能图
本文经过实际搭建硬件电路实验平台以及通过上位机进行软件调试,实现了电池管理系统主控单元软件控制的SOC估算,测量电池的整体电压、电流,故障报警,数据采集、处理和通讯等功能。软件设计部分上位机调试如图8所示。
6 结语
本文采用ST公司的STM32F103RBT6控制芯片作为核心控制芯片对电动汽车电池管理系统进行总体控制,并在此基础上进行了软件设计。实际调试应用表明,本文所设计的电池管理系统的软件模块,能够高效稳定地实现电池管理系统的功能,具有良好实际应用价值。但是该电池管理系统软件的功能还有很大的开发空间,许多实用的功能还可以根据实际应用情况进行补充和进一步改进。