哈维尔·Gazzarri MathWorks
利用Simulink建立电池管理系统(BMS)的模型与仿真算法万博1manbetx®和Stateflow®,包括:
电荷状态的估计使用库仑计数,扩展卡尔曼滤波器和无迹卡尔曼滤波器。
BMS算法针对Simscape Electrical™开发的电池组进行验证,电池组使用可配置RC元件数量的等效电路表示。通过参数估计,将模型与实验数据相关联,得到等效电路结果。
在接下来的几分钟里,我将解释在Simulink中建模的BMS的主要组件。万博1manbetx我们可以将此模型用于桌面模拟,例如,我们可以重现不同的使用周期和环境条件,以评估系统对潜在不安全条件的响应;例如,温度、电压或电流超出推荐限制。
假设这个电池系统是电动汽车动力系统的一部分。假设电池有75%的电量,外部温度为15C。在这种情况下,我们开始驾驶一段时间,然后停下来给电池充电。最后,电池处于静止状态,平衡循环开始。我们如何知道在这三个典型的使用阶段,电池组保持在推荐的电气和热限制?如果外面的温度是40度而不是15度会怎么样?如果电荷的初始状态是30%呢?激进的驱动周期会导致欠压情况吗?
一个模型允许车辆设计者在模拟中测试所有这些情况,而不会造成真正的电池损坏的风险。
这是Simulink中的BMS模型。万博1manbetx电池及其管理系统都在此模型内参考。
在左上角,我们定义了不同的驾驶场景,这些场景决定了由左下角的子系统提供的测试序列。右上方的绿灯指示是否有故障;例如,任何电池都达到过温状态。
系统本身有一个模型参考,代表BMS ECU及其各种监测和控制算法,连接到一个块,代表电池组和相关电路和外设。这个模型包含两个版本的电池组:一个小的只有6电池系列,和一个较大的16模块包,每个模块包含一个6电池系列串。在所有情况下,我们只建模一个平行的弦。我们分别称这些架构为60s -1p和96s-1p包。
让我们从电池组及其外围设备的描述开始。
左边的变型子系统包含前面提到的两个版本的电池组:小的一个6电池和大的一个96电池。让我们看一看小的。这个电池组是在Simscape中建模的,组件的颜色告诉我们它的物理域。蓝色表示电性,橙色表示热性。我们可以看到这6个电池是串联在一起的,可以互相交换热量。热布局是不对称的,底部的6号单元在一边是隔热的(因此没有热量可以在那个方向散发),而顶部的1号单元暴露在外部大气中,因此通过对流将热量排出。这种不对称性将导致6个细胞之间的显著温度差异。
是什么让这个电池代表了现实生活中的锂离子化学;说,NiMnCo ?每个单元格内部都有一个等效电路,其拓扑结构和参数应该给我一个响应,与我在实验中观察到的响应相同。等效电路元件应包括温度、SOC和可能的老化依赖。如果你对电池特性感兴趣,关于如何执行电池电池参数估计的详细说明可以在我们的网站上搜索电池建模。
在电池组旁边有一个子系统,带有被动平衡电路。在BMS算法的平衡逻辑的控制下,当相应的单元需要局部放电以降低其SOC时,这些开关有选择地关闭。
保持电池模块的平衡可以让我更好地利用它的总存储容量,我们将在几分钟内看到。
工厂模型的另一个元素是一组充电器和逆变器接触器电路。在将电池组连接到充电器之前,重要的是要通过一个电阻预先连接它们,以防止过大的电流冲进电池组和潜在的破坏它。这种预连接需要一个特殊的序列,我们将在描述BMS算法时展示这个序列。
最后,电池工厂的最后一部分是充电器和负载,它们在这里简单地表示为当前电源,命令它们遵循模型顶层电源块的充电和驱动轮廓。
百时美施贵宝算法
现在让我们关注BMS算法。电池管理系统的这一部分监控、保护、限制和报告电池组的测量结果。
左边的子系统使用单个电池电压和温度来计算最大允许充放电电流水平。当电池SOC较低时,其电压也较低,防止电池提供大量电流很重要,因为这将导致过大的电压降,可能低于电池制造商规定的截止电压。将模块中最小单元电压与此较低阈值进行比较,并将其除以为该单元计算的最大内阻值,我们计算出一个基于电压的电流阈值。
我们也知道,当温度过高或过低时,限制当前的交付或摄入是很重要的。使用具有上升或下降s形剖面的查找表,我们可以根据温度指定电流阈值,并调节允许的电流传递。这对于避免电池材料在高温充放电和低温充电时的物理损伤是非常重要的,因为在冷冻温度下这样做是不允许的。
然后将这两个阈值相互比较,最低的成为当前的限制。
标记为状态机的子系统定义了BMS的主要运行状态。这里用statflow表示,statflow是Simulink的一个附加工具箱,用于万博1manbetx设计状态逻辑。在statflow中,我们使用组件表示状态,这些状态取决于条件是活动的还是非活动的,而我们在状态中编写的文本是在进入状态时、在状态期间或没有退出状态时执行的代码。
状态机有四个并行状态(并行意味着它们可以同时处于活动状态):
SOC估计
要知道在我们需要停下来充电之前,我们还能开多久,取决于对电池SOC的准确估计。这是非常重要的,它是更具有挑战性的情况下,传统的汽车燃料表设计,测量是直接的。在电池系统中,我们不测量电荷的状态,这是不能直接测量的;我们实际上测量了其他东西,希望我们测量的东西和SOC联系起来。
第三个子系统包含三种不同的电荷状态估计方法。在实践中,BMS开发人员只会选择其中之一,但在这里我们将列出这三种方法,以说明它们各自的优点和局限性。第一种方法被称为库仑计数,它包括对进入和离开电池的电流进行积分,以记录一段时间内的电荷状态。该方法的优点是简单,计算成本低。它的缺点包括电流传感器误差的积累,由于缺乏电压测量的反馈,它无法从错误的初始条件恢复。
这里实现的第二和第三种SOC估计方法是Unscented和扩展卡尔曼滤波器。两者都是非线性卡尔曼滤波器的变体,它们依赖于单位细胞的模型来预测电流刺激产生的终端电压,通过将预测结果与终端电压测量进行比较来估计内部细胞状态(其中的SOC)。EKF和UKF之间的选择通常是基于系统非线性的严重程度。在这种情况下,唯一的非线性是由OCV-SOC关系给出的,它是一个温和的关系,因此预计EKF应该给出足够的结果。
卡尔曼滤波算法包括两部分:状态更新和测量更新。状态更新基于之前的状态值和输入预测当前状态,而测量更新使用新获取的数据校正此预测。我们使用的电池模型是用MATLAB脚本实现的,并对应于我们使用的等效电路来模拟电池组。
下一个要考虑的任务是平衡。重要的是保持单个电池的电量大致相同,否则具有最高SOC水平的电池将限制我们可以放入电池组的电量,导致系统未得到充分利用。这种状态逻辑计算最高和最低电池电压之间的电压差,并根据此差值是否超过设计值,激活无源平衡。平衡命令是一个布尔向量,指示要激活哪个排流电阻,从而使电池SOC缓慢降低。在除SOC最低的单元之外的所有单元中这样做最终会使所有SOC在规定的容忍范围内收敛。
现在让我们再看一下模拟结果。
在这个驱动-充电-平衡顺序的例子中,我们首先观察到单个电池电压的变化是电流流入和流出的结果。在模拟的开始,它们略有不同,因为我们用轻微的SOC不平衡初始化模型。在模拟的最后,由于平衡的作用,这些值逐渐趋近于另一个值。
目前怎么样?看看充电时间。在恒流阶段,充电期间的电流被降低,因为模块电池的最大电压与规定的4.4V限制相比足够高,过高的电流可以驱动电压超过阈值,显著限制电池的寿命。由于我们是根据电池电池查找表中的最大电阻值来计算电流限制的,所以我们是保守的。相对保守的限流计算可以使用估计SOC和温度下的实际电池电阻,因为这些信息在所有运行条件下都是可用的。
温度痕迹显示最热和最冷的细胞之间存在显著差异。原因主要是模块布局在热行为方面的不对称。6号电池比1号电池要热得多,因为它的一边是隔热的。即使在这个模拟过程中所达到的最高温度并不直接关系到安全性,这里显示的温度差异最终会导致细胞6比细胞1更快的降解,导致细胞条件的不均匀。因此需要主动热管理,将热差保持在几摄氏度以内。
右上方的图表显示了同一个电池电池的三个SOC估计痕迹,每个都用不同的方法执行。黄色表示库仑计数,蓝色表示UKF,橙色表示EKF。该模拟中的初始SOC为75%,但SOC估计者被初始化为80%,以评估其恢复能力。显然,CC从来没有这样做,因为它没有办法意识到它是错误的,由于电压信息的缺失。另一方面,两种KF算法都能在模拟时间的第一个小时内恢复初始误差,EKF优于UKF。
最后,其他两个范围指示BMS状态和六个平衡命令信号中的每个。
综上所述,我们使用了Simulink, statflo万博1manbetxw, Simscape和Control System toolbox来设计一个使用建模和仿真的电池管理系统。
你也可以从以下列表中选择一个网站:
请选择表现最佳的中国网站(中文或英文)。MathWorks的其他国家网站并没有针对您所在位置的访问进行优化。