构建具有电芯老化的电池包的模型
此示例说明了如何在 Simscape™ Battery™ 中创建和构建一个包括电芯老化在内的电池包的 Simscape™ 系统模型。预测电池电芯在特定应用下的使用寿命对于评估保修风险、开发二次应用和进行虚拟设计验证至关重要。
要创建电池包的系统模型,必须先创建构成电池包的 Cell
、ParallelAssembly
、Module
和 ModuleAssembly
对象,然后使用 buildBattery
函数。
下图显示了以自下而上的方式创建电池包对象的整个过程:
电池包由多个模组组件组成。这些模组组件又由多个串联或并联的电池模组组成。电池模组由多个并联组件组成,这些组件又由多个电池电芯以特定的拓扑结构或几何排列方式并联连接而成。
创建电池包对象后,buildBattery
函数会在工作文件夹中创建一个库,该库包含电池包的系统模型模块。您可以在仿真中将此系统模型用作参考。这些模型的运行时间参数(如电池电芯阻抗或电池开路电压)在模型创建后定义,因此不包含在电池包构建器类中。要定义运行时参数,您可以在生成的 Simscape 模型模块封装中指定这些参数,或使用 buildBattery
函数的 MaskParameters
参量。
在 MATLAB 中创建电池 Pack
对象
本节介绍如何通过编程方式从 MATLAB® 命令行窗口生成电池 Pack
对象。
创建 Cell
对象并指定老化效应
要创建电池 Module
对象,请先创建一个软包格式的 Cell
对象。
通过 PouchGeometry
对象,可以定义电池电芯的软包几何排列。要创建 PouchGeometry
对象,请使用 batteryPouchGeometry
函数。
pouchGeometry = batteryPouchGeometry()
pouchGeometry = PouchGeometry with properties: Length: 0.2300 (m) Thickness: 0.0100 (m) TabLocation: "Standard" TabWidth: 0.0400 (m) TabHeight: 0.0300 (m) Height: 0.2800 (m)
有关电池电芯可能的几何排列的更多信息,请参阅 CylindricalGeometry
和 PrismaticGeometry
文档页。
现在,使用 PouchGeometry
对象可创建软包电池电芯。
pouchCell = batteryCell(pouchGeometry)
pouchCell = Cell with properties: Geometry: [1×1 simscape.battery.builder.PouchGeometry] CellModelOptions: [1×1 simscape.battery.builder.CellModelBlock] Mass: 0.1000 (kg) Capacity: 5 (A*hr) Energy: 50 (W*hr) Show all properties
有关更多信息,请参阅Cell
文档页。
Cell
对象允许您通过指定以下属性来仿真电池电芯的老化效应:
prm_age_capacity
- 容量日历老化。此属性可让您决定是否对电池电芯的容量进行日历老化效应建模。prm_age_resistance
- 内阻日历老化。此属性可让您决定是否对电池电芯的内阻进行日历老化效应建模。prm_age_modeling
- 建模选项。此属性允许您指定如何对电池电芯的容量和内阻的老化效应进行数学建模。
为了仿真电池电芯的循环老化效应,在 Cell
对象的 CellModelOptions
属性的 BlockParameters
属性中,将 prm_fade
属性设置为 "equations"
。
pouchCell.CellModelOptions.BlockParameters.prm_fade = "equations";
通过 Cell
对象,还可以使用简单的一维模型仿真电池电芯的热效应。要仿真电池电芯的热效应,请在 Cell
对象的 CellModelOptions
属性的 BlockParameters
属性中,将 thermal_port
属性设置为 "model"
。
pouchCell.CellModelOptions.BlockParameters.thermal_port = "model";
创建 ParallelAssembly
对象
并联组件包括多个电池电芯,这些电池电芯在特定的拓扑配置或几何排列下电连接成并联。在此示例中,您要创建一个由三个软包电芯组成的并联组件。
要创建 ParallelAssembly
对象,请使用 batteryParallelAssembly
函数。将 Cell
对象定义为第一个参量,并将并联电芯数定义为第二个参量。
parallelAssembly = batteryParallelAssembly(pouchCell,... 3,StackingAxis="X");
有关更多信息,请参阅ParallelAssembly
文档页。
创建 Module
对象
电池模组由多个串联的并联组件组成。在此示例中,您将创建一个电池模组,该模组由 4 个沿 X 轴堆叠的并联组件组成,每个组件之间的间隙为 0.005 米。
要创建 Module
对象,请使用 batteryModule
函数。指定 ParallelAssembly
对象作为第一个参量,并指定串联的并联组件数量作为第二个参量。要定义其他属性,请使用名称-值参量 InterParallelAssemblyGap
和 StackingAxis
。
module = batteryModule(parallelAssembly,4,... InterParallelAssemblyGap=simscape.Value(0.005,"m"), ... StackingAxis="X");
有关更多信息,请参阅Module
文档页。
创建 ModuleAssembly
对象
电池模组组件由串联或并联的多个电池模组组成。在此示例中,您将创建一个由五个相同模组组成的电池模组组件,每个模组之间的间隙为 0.1 米。默认情况下,以电气方式串联 ModuleAssembly
对象。
要创建 ModuleAssembly
对象,请使用 batteryModuleAssembly
函数,并将 Module
对象指定为第一个参量。要定义其他属性,请使用名称-值参量 InterModuleGap
和 StackingAxis
。
moduleAssembly = batteryModuleAssembly(repmat(module,1,5),... InterModuleGap=simscape.Value(0.1,"m"), ... StackingAxis="Y");
有关更多信息,请参阅ModuleAssembly
文档页。
创建 Pack
对象
现在,您已经拥有创建电池包的所有基本元素。电池包由串联或并联的多个模组组件组成。在此示例中,您将创建一个由五个相同的模组组件组成的电池包,每个模组组件之间的间隙为 0.01 米,并具有冷却液热路径。
要创建 Pack
对象,请使用 batteryPack
函数,并将 ModuleAssembly
对象定义为第一个参量。要定义其他属性,请使用名称-值参量 InterModuleAssemblyGap
和 CoolantThermalPath
。设置 CoolantThermalPath
属性会自动将该值传播到此 Pack 对象内的所有子组件电池对象。但是,这一更改不会传播到 MATLAB 工作区中的其他电池对象。
pack = batteryPack(repmat(moduleAssembly,1,5),... InterModuleAssemblyGap=simscape.Value(0.01,"m"),... CoolantThermalPath="CellBasedThermalResistance");
有关更多信息,请参阅Pack
文档页。
可视化电池包并检查模型分辨率
要在构建系统模型之前可视化电池包并查看其模型分辨率,请在要可视化电池包的位置创建图形,然后使用 batteryChart
函数。要查看模组的模型分辨率,请将 SimulationStrategyVisible
名称-值参量定义为 "On"
。
f = figure(Color="w",Position=[0 0 1000 500]); packChart = batteryChart(f,pack, ... SimulationStrategyVisible="on");
要为电池图添加默认轴标签,请使用 BatteryChart
对象的 setDefaultLabels
方法。
有关 BatteryChart 对象的详细信息,请参阅 batteryChart
文档页面。
为电池包对象构建 Simscape 模型
创建电池对象后,需要将其转换为 Simscape 模型,以便在模块图中使用。然后,您可以将这些模型作为参考,用于系统集成和需求评估、冷却系统设计、控制策略开发、硬件在环等许多应用。
buildBattery(pack,LibraryName="packAgingExample",Verbose="off")
此函数在工作目录中创建 packAgingExample_lib
和 packAgingExample
SLX 库文件。packAgingExample_lib
库包含 Modules 和 ParallelAssemblies 子库。
要访问 Module
和 ParallelAssembly
对象的 Simscape 模型,请打开 packAgingExample_lib
。SLX 文件,双击子库,然后将 Simscape 模块拖到模型中。
packAgingExample
库包含 ModuleAssembly
和 Pack
对象的 Simscape 模型。
您的 ModuleAssembly
和 Pack
对象的 Simscape 模型是子系统。打开 packLibrary
SLX 文件并双击子系统,即可查看这些子系统的内部情况。
要了解如何评估新锂离子电池包和寿命终止 (EOL) 锂离子电池包,请参阅 新电池包和老电池包的热分析 示例。
在电池构建器中探索电池包和构建模型
在此示例中,您通过在 MATLAB 命令行窗口中调用相关对象和函数,以编程方式创建了电池包及其所有子组件。另外,如果您喜欢互动性和可视化性更强的方法,也可以使用 Battery Builder。使用此 App,您可以交互式地导入现有的电池对象或从头构建电池对象,探索和编辑属性,以及查看电池层次结构和三维可视化。然后,您就可以构建对象的 Simscape 系统模型,并将其用作仿真中的参考。您还可以导出工作区中的对象。要了解如何使用电池构建器生成电池对象和构建 Simscape 模型,请参阅 电池构建器快速入门 示例。
探索您在本例中创建的电池包。打开电池构建器。在 App 选项卡的 Simscape 下,点击电池构建器图标。您也可以从命令行打开该 App:
batteryBuilder
从 packAgingExample
MAT 文件中导入电池包对象。在电池构建器选项卡下,在工具条的导入部分中,点击导入。然后点击从 MAT 文件导入,并加载 packAgingExample
MAT 文件。
电池构建器现在由一个 Pack
对象及其每个子组件组成。
应用左侧的电池浏览器面板包含应用当前活动会话中的所有电池对象。您可以选择一个对象,在已选电池选项卡中将其可视化,在电池层次结构面板中检查其层次结构和子对象,并在 App 右侧的属性面板中编辑其属性。
您可以在电池图选项卡下编辑图的属性,如坐标轴标签、坐标轴方向、图的标题和灯光。您还可以检查所选电池对象的当前仿真策略和模型分辨率。要在图中可视化仿真策略,请在工具条的仿真策略部分选中可见框。
最后,如果您修改了电池对象,并希望创建更新后的 Pack
对象的库模型,请在工具条的电池构建器选项卡下的库部分中,点击创建库。在新窗口中,指定要保存库的文件夹、库名称,以及是否使用数字值或变量名称作为封装参数和封装初始目标。
点击创建库,在指定文件夹中生成电池对象的更新库模型。打开此模型,即可访问电池对象(作为 Simscape 模块),您可以在早期开发阶段、软件和硬件开发、系统集成和需求评估、冷却系统设计、控制策略开发、硬件在环等许多应用中,将其作为架构评估的起点。