在Simulink中开发电池管理系统金宝app
利用Simulink对电池管理系统(BMS)的算法进行建模和仿真金宝app®和Stateflow®,包括:
- 监管逻辑
- 监测电流、电压和温度
- 荷电状态(SOC)估计
- 限制电源输入和输出,用于热、过充和过放保护
- 充电剖面控制
- 被动平衡
- 电池组与负载隔离
利用库仑计数、扩展卡尔曼滤波和无气味卡尔曼滤波估计电荷态。
BMS算法与Simscape electric™开发的电池组进行了验证,电池组使用可配置数量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算法。电池管理系统的这一部分监控、保护、限制和报告来自电池组的测量结果。
左边的子系统使用单个电池电压和温度来计算最大允许的充放电电流水平。当电池处于低荷电状态时,其电压较低,防止电池输送大量电流非常重要,因为这会导致过大的压降,可能会低于电池制造商指定的截止电压。将模块中的最小单元电压与此较低阈值进行比较,并将其除以为该单元计算的最大内阻值,我们计算出基于电压的电流阈值。
我们还知道,当温度过高或过低时,限制电流输送或进气是很重要的。使用具有上升或下降s形轮廓的查找表,我们可以根据温度指定电流阈值并调节允许的电流传递。这对于避免在充电和放电期间的高温和充电期间的低温下对电池材料的物理损坏非常重要,因为在冰点温度以下这样做是不允许的。
然后将这两个阈值相互比较,最低值成为当前的极限。
标记为状态机的子系统定义BMS的主要运行状态。这里使用Stateflow表示,Stateflow是一个用于设计状态逻辑的Simul金宝appink附加工具箱。在statflow中,我们使用组件表示状态,这些状态是活动的还是不活动的,取决于条件,我们在状态中编写的文本是在进入状态、退出状态或不退出状态时执行的代码。
状态机有四个并行状态(并行意味着它们可以同时处于活动状态):
- 第一个函数定义变量BMS_State,表示待机、驾驶、充电和故障。充电分为恒流和恒压两级。
- 第二种状态在电流、电压或温度值达到不安全水平时切换故障状态ON。
- 第三和第四状态定义充电器和逆变器的接触器ON和OFF开关序列。这是为了避免在充电阶段开始时产生过大的电流涌流。
SOC估计
要知道在我们需要停下来充电之前我们还能开车多久,取决于对电池SOC的准确估计。这是非常重要的,它比传统的汽车燃油表设计更具挑战性,后者的测量是直接的。在电池系统中,我们不测量电荷状态,这是不能直接测量的;我们实际上测量了其他东西,并希望将我们测量的东西与SOC联系起来。
第三子系统包含三种不同的荷电状态估计方法。在实践中,BMS开发人员只会选择其中的一种,但是在这里我们列出了所有三种,以说明它们各自的优点和局限性。第一种方法被称为库仑计数,包括对进入和离开电池的电流进行积分,以跟踪一段时间内的电荷状态。这种方法的一个优点是它的简单性和非常低的计算成本。它的缺点包括电流传感器误差的累积,以及由于缺乏电压测量的反馈而无法从错误的初始条件中恢复。
这里实现的第二和第三种SOC估计方法是Unscented和扩展卡尔曼滤波器。两者都是非线性卡尔曼滤波器的变体,它们依赖于单元电池的模型来预测由电流刺激产生的终端电压,通过将预测结果与终端电压的测量结果进行比较来估计单元内部状态(其中的SOC)。在EKF和UKF之间的选择通常是基于系统非线性的严重程度。在这种情况下,唯一的非线性是由OCV-SOC关系给出的,而且它是一个温和的关系,因此预计EKF应该能给出足够的结果。
卡尔曼滤波算法由状态更新和测量更新两部分组成。状态更新基于之前的状态值和输入预测当前状态,而测量更新使用新获取的数据更正这种预测。我们使用的电池模型是用MATLAB脚本实现的,对应于我们用来模拟电池组的等效电路。
下一个要考虑的任务是平衡。重要的是要保持单个电池单元大致处于相同的充电状态,否则SOC最高的电池将限制我们可以放入电池组的电量,使系统未得到充分利用。该状态逻辑计算最高和最低电池电压之间的电压差,并基于此差值是否超过设计值,激活被动平衡。Balance命令是一个布尔矢量,指示要激活哪个释放电阻,以使单元SOC慢慢降低。对除SOC最低的细胞外的所有细胞进行此操作,最终使所有SOC收敛到规定的容差内。
现在让我们再看一下模拟结果。
在这个驱动-充电-平衡序列的例子中,我们首先观察到单个电池电压由于电流流入和流出而发生变化。在模拟开始时,它们略有不同,因为我们初始化模型时使用了轻微的SOC不平衡。在模拟结束时,由于平衡的结果,这些值会彼此收敛。
电流呢?看看充电周期。在恒流阶段,电流在充电过程中降级,因为与规定的4.4V限制相比,最大模块电池电压足够高,过大的电流可能会使电压超过阈值,极大地限制了电池的寿命。由于我们是根据电池查找表中的最大电阻值来计算电流限制的,所以我们是保守的。不太保守的限流计算可以使用在估计SOC和温度下的实际电池电阻,因为该信息在所有操作条件下都可用。
温度痕迹显示出在最热和最冷的细胞之间有显著的差异。其主要原因是在热行为方面的模块布局的不对称。6号细胞比1号细胞热得多因为它的一侧是隔热的。即使在模拟过程中所达到的最高温度对安全性没有直接影响,但这里显示的温差最终会导致细胞6比细胞1更快地降解,导致细胞条件的不均匀。因此,需要积极的热管理,以保持热差在几度以内。
右上方的图表显示了同一电池单元的三种SOC估计轨迹,每一种都使用不同的方法进行。黄色对应库仑计数,蓝色对应UKF,橙色对应EKF。在此模拟中,初始SOC为75%,但SOC估计器初始化为80%以评估其恢复能力。很明显,CC从来没有这样做,因为它没有办法意识到它是错误的,由于缺乏电压信息。另一方面,两种KF算法都能在模拟时间的第一个小时内从初始错误中恢复,其中EKF优于UKF。
最后,另外两个作用域指示BMS状态和六个平衡命令信号中的每一个。
总之,我们已经利用Simulink、Stateflow金宝app、Simscape和Control System toolbox设计了一个使用建模和仿真的电池管理系统。
了解更多
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。