javier Gazzarri,Mathworks
基于Simulink的电池管理系统(BMS)建模与仿真算法金宝app®和状态流®,包括:
利用库仑计数、扩展卡尔曼滤波和无迹卡尔曼滤波对电荷状态进行估计。
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形廓线的查找表,我们可以根据温度指定当前阈值并调制允许的电流输出。这对于避免电池材料在高温充放电和低温充电都是非常重要的,因为在冰点以下是不允许这样做的。
然后将这两个阈值彼此进行比较,最低的是电流限制。
标有标识状态机的子系统定义了BMS的主工作状态。它在此处使用StateFlow表示,用于设计状态逻辑的Simulink附加工具箱。金宝app在equenflow中,我们使用表示处于活动或非活动的状态的组件,具体取决于条件,我们在状态内写入的文本是在条目,期间或从状态的退出时执行的代码。
状态机有四个并行状态(并行含义它们可以同时处于活动状态):
SOC估计
在我们需要停止补充之前,知道我们能够驾驶我们的车的时间更长时间取决于电池SOC的准确估计。这具有重要意义,并且比传统车辆燃料表设计的情况更具挑战性,其中测量是直接的。在电池系统中,我们不衡量充电状态,这不是直接可测量的;我们实际上衡量了其他事情,并希望与我们使用SoC衡量的东西。
第三子系统包含三种不同的电荷状态估计方法。在实践中,BMS开发人员只会选择其中的一种,但在这里,我们将全部展示这三种方法,以说明它们各自的优点和局限性。第一种方法被称为库仑计数,它包括对进入和离开电池的电流进行积分,以跟踪电荷随时间的状态。这种方法的优点是简单,计算成本很低。它的缺点包括电流传感器误差的累积,以及由于缺乏电压测量的反馈而无法从错误的初始条件中恢复。
这里实现的第二和第三SOC估计方法是无名和扩展的卡尔曼滤波器。两者都是非线性卡尔曼滤波器的变化,并且它们依赖于单位单元的模型来预测由电流刺激产生的终端电压,通过将该预测与终端电压的测量进行比较来估计内部小区状态(其中的SOC)。EKF和UKF之间的选择通常是基于系统非线性的严重性。在这种情况下,唯一存在的非线性是由OCV-Soc关系给出的,并且它是一种温和的,因此预计EKF应该提供足够的结果。
卡尔曼滤波器算法有两部分:状态更新和测量更新。状态更新基于先前的状态值和输入预测当前状态,并且测量更新使用新获取的数据校正此预测。我们使用的单元格模型实现为MATLAB脚本,对应于我们用于模拟电池组的等效电路。
下一个要考虑的任务是平衡。保持单个电池单元大致处于相同的充电状态非常重要,否则SOC水平最高的电池单元将限制我们可以放入电池组的电量,从而导致系统未充分利用。该状态逻辑计算最高和最低电池电压之间的电压差,并根据该差是否超过设计值,激活被动平衡。Balance命令是一个布尔向量,指示要激活哪个泄放电阻器,以使电池SOC缓慢降低。除了SOC最低的单元外,对所有单元执行此操作最终会使所有SOC在规定的公差范围内收敛。
现在让我们看看仿真结果。
在这个驱动-充电-平衡序列的例子中,我们首先观察单个电池电压的变化作为电流流入和流出的结果。在模拟的开始,它们有一点不同,因为我们初始化的模型有一点SOC不平衡。在模拟的最后,由于平衡的结果,数值趋于一致。
当前怎么样?看看充电期。在恒定电流阶段期间,电流在电荷期间被降低,因为与规定的4.4V限制相比,最大模块电池电压足够高,所以过高的电流可能会驱动超出阈值的电压,显着限制电池的寿命。由于我们根据电池单元查找表内的最大电阻值计算电流限制,因此我们是保守的。较少保守的电流限制计算可以使用估计的SOC和温度的实际电池电阻电阻,因为此信息在所有操作条件下都提供。
温度迹线在最热和最冷的细胞中显示出显着的差异。原因主要是在热行为方面的模块布局中的不对称性。细胞数6比电池1更热,因为它在一侧热绝缘。即使在该模拟期间达到的最大温度不是在安全方面不立即关注时,与细胞1相比,这里表现出的温度差异最终将导致细胞6的更快降解,导致细胞条件下不希望的不均匀性。因此,需要积极的热管理,以在几度摄氏度内保持热差异。
右上右上的图表示出了相同电池单元的三个SOC估计迹线,每个电池单元以不同的方法执行。黄色对应库仑计数,蓝色对应于UKF,橙色至ekf。该模拟中的初始SOC为75%,但SoC估计器初始化为80%以评估其恢复能力。显而易见的是,由于没有电压信息,CC从来没有做过它没有办法。另一方面,KF算法都从模拟时间的第一个小时内的初始错误中恢复,EKF优于UKF。
最后,其他两个作用域指示BMS状态和六个平衡命令信号中的每一个。
总之,我们已经利用了Simulink,StateFlo金宝appw,Simscape和Control系统工具箱来设计使用建模和仿真的电池管理系统。
您还可以从以下列表中选择网站:
选择中国网站(以中文或英文)以获取最佳网站性能。其他MathWorks国家网站未优化您的位置。