构建混合电芯电池包的模型
此示例说明了如何构建一个具有两组电芯运行时间参数的混合电芯电池包的 Simscape™ 系统模型。生成的电池包模型包含两种类型的电池模组,每种模组内部都有不同的电池电芯组件。使用此示例分析在单个电池系统中组合不同电池电芯对性能的影响,例如功率与续航里程。
要创建电池包的系统模型,必须先创建构成电池包的 Cell、ParallelAssembly、Module 和 ModuleAssembly 对象,然后使用 buildBattery 函数。函数 buildBattery 在工作文件夹中创建一个库,其中包含电池包的系统模型模块,您可以在仿真中将其作为参考。这些模型的运行时间参数(如电池电芯阻抗或电池开路电压)在模型创建后定义,因此不包含在电池包构建器类中。要定义运行时参数,您可以在生成的 Simscape 模型模块封装中指定这些参数,或使用 buildBattery 函数的 MaskParameters 参量。如果指定了 MaskParameters 参量,该函数还会生成一个参数化脚本,帮助您管理电池组内不同模组和电芯的运行时参数。
在 MATLAB 中创建电池 Pack 对象
要创建电池包,必须首先设计和创建电池包的基本元素。
下图显示了以自下而上的方式创建电池包对象的整个过程:

电池包由多个模组组件组成。这些模组组件又由多个串联或并联的电池模组组成。电池模组由多个并联组件组成,这些组件又由多个电池电芯以特定的拓扑结构或几何排列方式并联连接而成。
创建 Cell 对象
要创建电池 Pack 对象,请先创建一个方形格式的 Cell 对象。
通过 PrismaticGeometry 对象,可以定义电池电芯的软包几何排列。要创建 CylindricalGeometry 对象,请使用 batteryCylindricalGeometry 函数。将高度指定为第一个参量,将长度指定为第二个参量,并将厚度指定为第三个参量。
prismaticGeometry = batteryPrismaticGeometry(simscape.Value(0.2,"m"),... simscape.Value(0.35,"m"),simscape.Value(0.07,"m"));
有关电池电芯可能的几何排列的更多信息,请参阅 CylindricalGeometry 和 PouchGeometry 文档页。
现在使用这个 PrismaticGeometry 对象创建一个棱柱形电池电芯,并为其命名。
prismaticCell1 = batteryCell(prismaticGeometry)
prismaticCell1 =
Cell with properties:
Geometry: [1×1 simscape.battery.builder.PrismaticGeometry]
CellModelOptions: [1×1 simscape.battery.builder.CellModelBlock]
Mass: 0.1000 (kg)
Capacity: 5 (A*hr)
Energy: 50 (W*hr)
Show all properties
prismaticCell1.Name = "CellChemistryType1";要创建具有不同电芯参数集的 Module 对象,请创建一个棱柱格式的 Cell 对象,然后更改其名称。
prismaticCell2 = batteryCell(prismaticGeometry)
prismaticCell2 =
Cell with properties:
Geometry: [1×1 simscape.battery.builder.PrismaticGeometry]
CellModelOptions: [1×1 simscape.battery.builder.CellModelBlock]
Mass: 0.1000 (kg)
Capacity: 5 (A*hr)
Energy: 50 (W*hr)
Show all properties
prismaticCell2.Name = "CellChemistryType2";有关更多信息,请参阅Cell文档页。
创建 ParallelAssembly 对象
电池并联组件包括多个电池电芯,这些电池电芯在特定的拓扑结构或几何排列下电连接并联。在此示例中,您将创建两个并联组件,每个组件包含一个棱柱形电芯。
要创建 ParallelAssembly 对象,请使用 batteryParallelAssembly 函数。将 Cell 对象指定为第一个参量,并将并联的电芯数指定为第二个参量。
parallelAssembly1 = batteryParallelAssembly(prismaticCell1,1)
parallelAssembly1 =
ParallelAssembly with properties:
NumParallelCells: 1
Cell: [1×1 simscape.battery.builder.Cell]
Topology: "SingleStack"
Rows: 1
ModelResolution: "Lumped"
Show all properties
parallelAssembly2 = batteryParallelAssembly(prismaticCell2,1)
parallelAssembly2 =
ParallelAssembly with properties:
NumParallelCells: 1
Cell: [1×1 simscape.battery.builder.Cell]
Topology: "SingleStack"
Rows: 1
ModelResolution: "Lumped"
Show all properties
有关更多信息,请参阅ParallelAssembly文档页。
创建模组对象
电池模组由多个串联的并联组件组成。在此示例中,您创建两个电池模组,每个模组包含四个并联组件,每个组件之间的间隙为 0.005 米。
要创建 Module 对象,请使用 batteryModule 函数。将 ParallelAssembly 对象指定为第一个参量,并将串联的并联组件数指定为第二个参量。要定义并联组件之间的间隙,请使用名称-值参量 InterParallelAssemblyGap。
module1 = batteryModule(parallelAssembly1,4,... InterParallelAssemblyGap=simscape.Value(0.005,"m"), ... ModelResolution="Lumped", ... StackingAxis="X")
module1 =
Module with properties:
NumSeriesAssemblies: 4
ParallelAssembly: [1×1 simscape.battery.builder.ParallelAssembly]
ModelResolution: "Lumped"
SeriesGrouping: 4
ParallelGrouping: 1
Show all properties
module2 = batteryModule(parallelAssembly2,4,... InterParallelAssemblyGap=simscape.Value(0.005,"m"), ... ModelResolution="Lumped", ... StackingAxis="X")
module2 =
Module with properties:
NumSeriesAssemblies: 4
ParallelAssembly: [1×1 simscape.battery.builder.ParallelAssembly]
ModelResolution: "Lumped"
SeriesGrouping: 4
ParallelGrouping: 1
Show all properties
有关更多信息,请参阅Module文档页。
创建 ModuleAssembly 对象
电池模组组件由串联或并联的多个电池模组组成。此示例中的电池模组组件包括您之前创建的两个模组,它们以交替顺序排列。默认情况下,以电气方式串联 ModuleAssembly 对象。
要创建 ModuleAssembly 对象,请使用 batteryModuleAssembly 函数,并将 Module 对象指定为第一个参量。要定义其他属性,请使用名称-值参量 InterModuleGap 和 NumLevels。
moduleAssembly = batteryModuleAssembly([module1,module2,module1,module2],... InterModuleGap=simscape.Value(0.02,"m"), ... NumLevels=1)
moduleAssembly =
ModuleAssembly with properties:
Module: [1×4 simscape.battery.builder.Module]
Show all properties
有关更多信息,请参阅ModuleAssembly文档页。
创建 Pack 对象
现在,您已经掌握了制造混合动力电池包的所有基本元素。电池包由串联或并联的多个模组组件组成。在此示例中,您将创建一个由两个模组组件组成的电池包。
要创建 Pack 对象,请使用 batteryModule 函数,并将 ModuleAssembly 对象指定为第一个参量。
pack = batteryPack(repmat(moduleAssembly,1,2),... StackingAxis="Y");
有关更多信息,请参阅Pack文档页。
可视化电池包
在使用 BatteryChart 对象构建系统模型之前,先将电池包可视化。要创建该对象,请使用 batteryChart 函数。要为电池图添加默认轴标签,请使用 BatteryChart 对象的 setDefaultLabels 方法。
packChart = batteryChart(pack); packChart.setDefaultLabels

有关更多信息,请参阅batteryChart文档页。
为电池 Pack 对象构建 Simscape 模型
创建电池对象后,您需要将它们转换为 Simscape 模型,才能在模块图中使用它们。然后,您可以将这些模型作为参考,用于系统集成和需求评估、冷却系统设计、控制策略开发、硬件在环等许多应用。
要创建一个包含在此示例中创建的 Pack 对象的 Simscape Battery 模型的库,请使用 buildBattery 函数并设置 MaskInitialTargets 和 MaskParameters 参量。MaskInitialTargets 和 MaskParameters 参量允许您在生成的库中的每个 Module and Parallel Assembly 模块中的参数中选择默认数值或变量名称。如果将这些参量设置为 "VariableNamesByInstance",则函数将生成一个包含仿真所需的所有运行时参数和初始条件的脚本。
buildBattery(pack,LibraryName="hybridBatteryPack",... MaskInitialTargets="VariableNamesByInstance",... MaskParameters="VariableNamesByInstance",... Verbose="off");
buildBattery 函数在工作目录中创建 hybridBatteryPack_lib 和 hybridBatteryPack SLX 库文件。hybridBatteryPack_lib 库包含 Modules 和 ParallelAssemblies 子库。

要访问 Module 和 ParallelAssembly 对象的 Simscape 模型,请打开 hybridBatteryPack_lib SLX 文件,双击子库,然后将 Simscape 模块拖到模型中。
hybridBatteryPack 库包含 ModuleAssembly 和 Pack 对象的 Simscape 模型。

您的 ModuleAssembly 和 Pack 对象的 Simscape 模型是子系统。打开 hybridBatteryPack_lib SLX 文件并双击子系统,即可查看这些子系统的内部情况。
MaskParameters 和 MaskInitialTargets
MaskInitialTargets 和 MaskParameters 参量允许您在生成的库中的每个 Module and Parallel Assembly 模块中的参数和初始条件中选择默认数值或变量名称。
将 MaskParameters 参量设置为 VariableNamesByInstance,buildBattery 函数将生成一个 hybridBatteryPack_param.m 文件,您可以在其中为电池包中的所有电池模组类型单独分配所有模组和电芯参数,如电阻、开路电压和其他参数。如果还将 MaskInitialTargets 参量设置为 VariableNamesByInstance,则生成的文件开头包含封装参数定义。
将 MaskInitialTargets 参量设置为 VariableNamesByInstance,buildBattery 函数将生成一个 hybridBatteryPack_param.m 文件,您可以在其中为电池包中的所有电池模组单独分配初始温度、荷电状态和其他条件。如果您还将 MaskParameters 参量设置为 VariableNamesByInstance,则生成的文件将在末尾包含初始目标定义。
检查将 MaskParameters 和 MaskInitialTargets 参量设置为 VariableNames 的效果。打开 hybridBatteryPack_lib SLX 文件,双击 Pack1 子系统,导航到 ModuleAssembly1 子系统。双击 Module1 模块以打开属性检查器。

一个特定的变量名与 Module1 模块的主要部分中的每个参数的值相关联。然后,您可以在 hybridBatteryPack_param.m 文件中轻松指定这些值,而无需通过单独打开每个模块的属性检查器来更改模型中的值。