当模拟一个电池系统时,指定载荷曲线对于准确反映电池在实际应用中的运行情况至关重要。 COMSOL Multiphysics® 软件和电池模块中提供了多种方法,用于在电池模型中定义各种载荷曲线。这篇博客,我们将对这些方法进行讨论,并详细介绍如何实现。为了演示如何使用这些方法,我们来看几个COMSOL Multiphysics® 案例库中的模型示例。
简介
在 COMSOL® 软件中,通常通过定义和指定外加载荷来完成电池模型的构建,外加载荷可能是电流、功率、电压或这些变量的组合。根据在模型中使用的电池接口,你可以选择合适的边界条件或运行模式,并设置相关值来满足要模拟电池的运行要求。
例如,锂离子电池,二元电解质电池 和 铅酸电池 接口提供了各种电极条件选择,用于模拟一般电流分布。另外,在像 单颗粒电池 和 集总电池 这样的简化电池接口中,可以选择一种运行模式。对于电池组尺度,可以在 电池组 接口,通过设置电池组内的 电流导体 域的边界条件来指定载荷。
COMSOL Multiphysics® 和电池模块提供了多种方法,可用于表征分布持续时间、变化和循环模式,并将它们集成到你创建的表达式中,然后将这些信息作为外加载荷传递到物理场接口。在接下来的章节中,我们将讨论这些方法。
充放电循环期间风冷圆柱形锂离子电池的温度分布。
函数
在 COMSOL Multiphysics® 中,我们可以选择不同的函数来定义各种载荷曲线。利用这些函数,可以精确表征包括随时间变化的模式和变量在内的载荷曲线特征。还可以将这些函数集成到表示载荷的表达式中,例如电池模型中使用的外加电流。在锂离子电池等温模型:一维教学案例中,用于产生恒定电流充放电循环的外加电流以及静置期,都是使用 分段 函数定义的。该函数尤其适用于定义在已知时间间隔内变化的载荷。
同样,在锌-氧化银电池等温模型:一维教学案例中,采用了 分段 函数来定义放电电流密度脉冲分布。在圆柱形锂离子电池热建模:二维和圆柱形锂离子电池热建模:三维教学案例中,采用了 波形 函数来建立交替的充放电电流以及弛豫过程。在 可溶性铅酸氧化还原液流电池教学案例中,采用了三个 矩形 函数定义由充电、放电和静置过程组成的载荷循环。根据输入和对所需载荷循环的了解,我们可以使用一个或多个函数和(或)不同类型的多个函数的组合来实现所需的分布。
载荷曲线的突然变化或不连续会导致数值不稳定。因此,在定义各种函数的载荷曲线时,必须在函数设置窗口中启用平滑处理,以确保收敛性。瞬态求解器的任务是根据平滑过程的定义,求解载荷步骤之间的过渡问题。
分段 函数的 设置 窗口,定义了一个载荷曲线,突出显示了平滑的应用,以改进函数的数值收敛性。
此外,如果我们可以获得实验载荷循环测量数据,并希望将实验载荷曲线纳入电池模型,则可以使用 插值 函数将实验数据导入 COMSOL Multiphysics®。例如, 瞬态集总电池模型的参数估计教学案例就使用了这种函数,将插电式混合动力汽车电池的实验动态载荷数据作为 集总电池 接口的外加载荷。
通过 插值 函数将实验动态循环数据导入 COMSOL Multiphysics®,以确定外加载荷。
预定义充放电循环功能
如果要定义恒流/恒压循环分布,可以使用预定义的 充放电循环 功能,该功能可在电池模块中的所有电池和通用电化学接口中使用。使用此功能,我们能够模拟连续的恒流和恒压充放电循环,并可以选择在循环之间加入静置时间。如下图所示,用户可以自定义模式的顺序,指定静置时间,并分别设置恒流和恒压模式下的电压和电流阈值。在模拟时间允许的情况下,这组预定义的分布会一直重复。
充电-放电循环 节点的 设置 窗口包含两个独立的充电和放电模式,允许用户在窗口中选择包含或者不包含某些步骤,并输入相应的值。该节点将根据 启动模式 设置,以 充电 或 放电 模式开始循环。
该节点还包括一个循环计数变量,可在 结果 部分访问或用于在瞬态求解器中设置停止条件。单颗粒锂离子电池模型和锂离子电池的容量衰减教学案例中就使用了这个功能指定恒流和恒压分布。
内置节点 充放电循环 有一定的局限性:它主要依靠电压和电流阈值在模式间切换,这可能不能完全符合你的要求。对于更复杂的载荷循环,应该考虑使用 事件 接口设置循环行为。
事件接口
我们在前文的 函数 部分提到,在使用不同函数定义载荷曲线时应用平滑处理,可以解决求解器在载荷突然转换时的数值不收敛问题。在使用 事件 接口定义载荷曲线时,这种数值处理方法已被集成在内,因此可以增强用户模型的收敛性。事件 接口使电池仿真人员能够创建包含多个步骤和各种模式切换的不同载荷。这是通过确保载荷表达式包含一些通过 事件 接口定义的开关来实现的,从而允许一个载荷表达式采用不同的值。载荷表达式基于多个离散状态变量建立,通过改变这些变量的值,来定义所需的载荷曲线。
在深入讨论如何使用 事件 接口来定义所需的载荷曲线之前,有必要更深入地了解它的主要功能。您可以在 COMSOL Multiphysics® 的 数学>常微分和微分代数方程 接口分支下找到 事件 接口。它主要用于创建求解器事件。这些事件可分为两类:显式和隐式。显式事件是预先确定在特定时间内发生的,例如在指定时刻按计划关闭载荷。隐式事件则在满足特定条件时发生,例如当电池电位达到预定的截止阈值时,需要修改外加电流或使电池处于静置状态。当触发事件后,瞬态求解器会停止,并更改一个或多个离散状态变量的值,然后重新启动。值得注意的是,充放电循环 功能是基于事件运行的,并已经“在幕后”预先定义了隐式事件。
要了解有关 事件 接口及其实践操作的更多信息,请浏览博客:使用事件接口模拟温控器。
现在,我们已经了解了 事件 接口的工作原理、关键组件,以及它如何让用户根据特定条件或在特定点上修改模型,接下来,我们就可以探讨它在载荷曲线定义中的应用。载荷曲线中的不同运行模式或步骤可以用一组 离散状态 来表示。当这些状态接收到不同的值,会像一组开关一样,随之改变载荷表达式的定义,如下图所示。决定使用显式还是隐式事件取决于当前载荷定义的具体情况。如果知道影响分布模式的变量变化的时间,就可以使用显式事件。在时间未知的情况下,可以通过一组 指示器状态 来详细说明这些变量发生变化的条件和标准,例如电池性能因素的特定阈值。指示器状态 会建立求解器用来触发隐式事件的状态变量。
在析锂变形模型中,使用 事件 接口创建包括正向和反向电流占空比的 事件序列。
在 变量 部分被定义为 “i_app”,并传递给 锂离子电池 接口中的 电极电流 条件的外加电极电流密度,是根据正向和反向状态计算出的。循环执行此序列,详请参阅事件序列 下面的 设置 窗口。
请注意,所有 隐式事件 和 显式事件 节点都会在指定时间或满足条件时触发。它们在接口中的定义顺序可能与分布中的预期变化顺序不一致。右键单击 事件 接口后,还可以使用另一个名为 事件序列 的选项,更直接地加入连续步骤。使用 事件序列 可以指定一系列事件,这些事件将按照列出的顺序激活。添加 事件序列 后,您可以包含多个序列成员,每个成员都根据条件表达式或特定持续时间运行。此外,使用 事件序列 后,可以在 事件序列 设置窗口中选择 循环 复选框。这样,只要仿真时间允许,事件就可以重复发生,从而灵活地定义重复的循环。
如果希望事件序列在研究过程中反复循环,请选择 循环复选框,如图所示。
通过在事件触发点为求解器设置 停止条件,隐式事件也可以终止仿真。这种方法通常比通过 停止表达式 定义的停止条件更加精确。如下图所示,在具有热力学电压滞后的硅-石墨混合电极模型中,定义的所有隐式事件都会自动列在表中,当任何标记为活动的事件被触发后,仿真就会停止。
当电极电位超过与 0% 电极充电状态 (SOC) 对应的定义电极电位时,隐式事件 2 被触发,并发出模拟结束的信号。
COMSOL Multiphysics® 中有很多电池模型都采用了这种方法,例如:
结束语
在这篇博客中,我们探讨了在 COMSOL Multiphysics® 中可以定义载荷循环的各种方法。我们通过几个案例模型演示了这些方法。这些宝贵的资源,可以帮助您了解如何在电池仿真中应用这些方法,以及深入学习在仿真项目中准确表示载荷曲线的最佳实践和技术。
评论 (4)
浩 李
2024-11-05老师您好,我在使用事件功能给锂离子电池定义充放电循环的电流时,求解器有时会“跳过“隐式事件(达到了隐式事件的触发条件,但求解器没有识别出来),我尝试过减小事件容差,但是还会出现这种问题,请问该怎么修改求解器或者怎么调整事件呢。
Yi Fan Wang
2024-11-12 COMSOL 员工您可以尝试修改软件的计算步长,控制软件的最大步长取值。您可以参考博客“https://cn.comsol.com/support/knowledgebase/1254”。并且也可以尝试调小计算容差。
Heng Huang
2024-11-15老师你好。我想在电池满电状态下以一个较低电压值恒压放电的功能,请问如何实现?能否通过PDE或者ODE来实现?通过锂离子电池物理场中的电极电位接口会造成不收敛,初始值不一致。
Yi Fan Wang
2024-11-19 COMSOL 员工您好,恒压状态,在软件设置中,最后还是通过电流边界条件来施加。需要使用事件功能来写,具体您可以参阅视频“https://cn.comsol.com/video-training/lithium-battery-training-cn-prt4”。