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