使用多模组冷却板构建电池包模型
此示例说明了如何使用 Simscape™ Battery™ 软件创建和构建一个带多模组冷却板的电池包的 Simscape™ 系统模型。在汽车和消费电子领域的电池系统设计中,横跨多个电池模组的大型冷却板非常常见。在此示例中,您将多个模组热耦合到一个电池冷却板上。要创建电池 Pack 的系统模型,必须先创建构成电池包的 Cell、ParallelAssembly、Module 和 ModuleAssembly 对象,然后使用 buildBattery 函数。此函数会在工作文件夹中创建一个库,其中包含一个电池包的系统模型模块。请在仿真中将此模型用作参考。创建模型后,您可以修改此模型模块的运行时参数,例如电池电芯电阻或电池开路电压。要定义运行时参数,可在生成的 Simscape 模型的模块封装中指定,或使用 buildBattery 函数的 MaskParameters 参量。
创建电池包对象
要创建电池包对象,必须先设计并创建电池包的基本元素。
电池包由多个电池模组组件组成。这些模组组件又由多个电池模组并联或串联组成。您可以在并联组件级别设置每个模组内电芯的具体拓扑配置或几何排列。下图以自下而上的视图显示电池包对象的层次结构:

创建 Cell 对象
要创建 Pack 对象,首先创建一个圆柱形的 Cell 对象。CylindricalGeometry 对象定义了电池电芯的圆柱形几何排列。要创建 CylindricalGeometry 对象,请使用 batteryCylindricalGeometry 函数。您可以将高度作为第一个参量,半径作为第二个参量来指定。
cylindricalGeometry = batteryCylindricalGeometry;
现在,使用此 CylindricalGeometry 对象创建一个圆柱形电池电芯。
cylindricalCell = batteryCell(cylindricalGeometry)
cylindricalCell =
Cell with properties:
Geometry: [1×1 simscape.battery.builder.CylindricalGeometry]
CellModelOptions: [1×1 simscape.battery.builder.CellModelBlock]
Mass: 0.1000 (kg)
Capacity: 5 (A*hr)
Energy: 50 (W*hr)
Show all properties
将 Pack 对象的基本电芯模型模块更改为使用 Battery Equivalent Circuit 模块。在 batterycell 对象中指定 CellModelOptions 属性的 CellModelBlockPath 属性。
cylindricalCell.CellModelOptions.CellModelBlockPath = "batt_lib/Cells/Battery Equivalent Circuit";使用 Cell 对象通过简单的一维模型仿真电池电芯的热效应。要仿真电池电芯的热效应,请在 Cell 对象的 CellModelOptions 对象的 BlockParameters 属性中,将 ThermalModel 属性设置为 "LumpedThermalMass"。只有先在电芯级别定义热模型,才能定义电池并联组件和模组的热边界条件。
cylindricalCell.CellModelOptions.BlockParameters.ThermalModel = "LumpedThermalMass";创建 ParallelAssembly 对象
并联组件包括多个电池电芯,这些电池电芯在特定的拓扑配置或几何排列下电连接成并联。在此示例中,您将创建一个由三个圆柱形电芯组成的并联组件。
要创建 ParallelAssembly 对象,请使用 batteryParallelAssembly 函数。将 Cell 对象定义为第一个参量,将并联电芯的数量定义为第二个参量。要指定其他属性,请使用名称-值参量 Rows 和 Topology。
parallelAssembly = batteryParallelAssembly(cylindricalCell,3, ... Rows=3, ... Topology="Square");
创建 Module 对象
电池模组由多个并联组件电连接而成。在此示例中,您将创建两个电池模组,每个模组由四个并联组件组成。第一个模组使用分组和集总模型分辨率设置。第二个模组使用详细的模组分辨率。后者提供更多有助于电池控制的电池状态信息。
要创建这些 Module 对象,请使用 batteryModule 函数。将 ParallelAssembly 对象定义为第一个参量,并将串联的并联组件数定义为第二个参量。要指定其他属性,请使用名称-值参量 SeriesGrouping 和 ParallelGrouping。
lumpedModule= batteryModule(parallelAssembly,4); groupedModule1 = batteryModule(parallelAssembly,4, ... SeriesGrouping=[1 3], ... ParallelGrouping=[3 1]); groupedModule2 = batteryModule(parallelAssembly,4, ... SeriesGrouping=[3 1], ... ParallelGrouping=[1 3]);
创建 ModuleAssembly 对象
电池模组组件由串联或并联的多个电池模组组成。在此示例中,您将创建一个由八个不同模组组成的电池模组组件,每个模组之间的间隙为 0.01 米。默认情况下,以电气方式串联 ModuleAssembly 对象。
要创建 ModuleAssembly 对象,请使用 batteryModuleAssembly 函数,并将 Module 对象定义为第一个参量。要指定每个模组之间的间隙,请使用名称-值参量 InterModuleGap。
moduleAssembly = batteryModuleAssembly([groupedModule1,repmat(lumpedModule,1,6),groupedModule2], ... InterModuleGap=simscape.Value(0.01,"m"));
创建 Pack 对象
现在,您已经拥有创建电池包的所有基本元素。电池包由串联或并联的多个模组组件组成。在此示例中,您将创建一个由五个相同的模组组件组成的电池包,每个模组组件之间的间隙为 0.01 米,并有一个冷却液热路径。
要创建 Pack 对象,请使用 batteryPack 函数,并将 ModuleAssembly 对象指定为第一个参量。要指定其他属性,请使用名称-值参量 CoolantThermalPath 和 InterModuleAssemblyGap。
pack = batteryPack(repmat(moduleAssembly,1,5), ... CoolantThermalPath="CellBasedThermalResistance", ... InterModuleAssemblyGap=simscape.Value(0.01,"m"));
将冷却板添加到电池包中
要在所有电池模组中添加一个冷却板,必须首先定义冷却板边界。将 batterypack 对象的 CoolingPlate 属性设置为 "Bottom"。
pack.CoolingPlate = "Bottom";要指定来自 Simscape Battery 库的冷却板模块,请使用 CoolingPlateBlockPath 属性。在此示例中,您使用 Parallel Channels 模块对冷却板进行建模。
pack.CoolingPlateBlockPath = "batt_lib/Thermal/Parallel Channels";为了获得更高的温度和荷电状态 (SOC) 信号分辨率以控制电池,您可以为电池包内的每个模组使用不同的模型分辨率。要对冷却板进行参数化,您可以可视化包装级别的热节点信息。使用 buildBattery 函数后,该热节点信息会传播到生成的模型中。
或者,要单独为每个模组组件定义冷却板,请修改 batterypack 对象中的每个模组组件的 CoolingPlate 和 CoolingPlateBlockPath 属性。该图显示了在电池底面安装冷却板的系统。

查看热节点连接信息
要可视化 batterypack 对象的热连接信息,请使用 ThermalNodes 属性。
thermalNodes = pack.ThermalNodes.Bottom; disp(thermalNodes)
Locations: [70×2 double]
Dimensions: [70×2 double]
NumNodes: 70
该属性包含有关电池与冷却板之间的热接口的信息,包括节点数、接口区域在笛卡尔坐标系中的位置以及每个接口区域的尺寸。
disp(thermalNodes.NumNodes)
70
可视化电池包并检查模型分辨率
要获得用于仿真的 Battery Equivalent Circuit 模块的数量,请使用 batterypack 对象的 NumModels 属性。
disp(pack.NumModels)
70
要在构建系统模型之前可视化电池包并查看其模型分辨率,请在要可视化电池包的位置创建图形,然后使用 batteryChart 函数。要查看包的模型分辨率,请将名称-值参量 SimulationStrategyVisible 指定为 "On"。
f = uifigure(Color="w"); tl = tiledlayout(1,2,Parent=f,TileSpacing="Compact"); nexttile(tl) packChart1 = batteryChart(tl,pack); nexttile(tl) packChart2 = batteryChart(tl,pack,SimulationStrategyVisible="On");

构建 Pack 对象的 Simscape 模型
创建电池对象后,需要将其转换为 Simscape 模型,以便在模块图中使用。然后,您可以将这些模型作为参考,用于系统集成和需求评估、冷却系统设计、控制策略开发、硬件在环等许多应用。
要创建一个包含 Pack 对象的 Simscape Battery 模型的库,请使用 buildBattery 函数。要创建一个脚本,以便单独定义每个热连接的冷却液热阻参数以及电池中的所有其他参数,请将函数 buildBattery 的参量 MaskParameters 设置为 "VariableNamesByType"。
在工作文件夹中创建 packWithMultiModuleCoolingPlate_lib 和 packWithMultiModuleCoolingPlate SLX 库文件。packWithMultiModuleCoolingPlate_lib 库包含 Modules 和 ParallelAssemblies 子库。
buildBattery(pack,LibraryName="packWithMultiModuleCoolingPlate", ... MaskParameters="VariableNamesByType", ... MaskInitialTargets="VariableNamesByInstance", ... Verbose="off");
要访问 Module 和 ParallelAssembly 对象的 Simscape 模型,请打开 packWithMultiModuleCoolingPlate_lib SLX 文件,双击子库,然后将 Simscape 模块拖到模型中。
packWithMultiModuleCoolingPlate 库包含 Pack 和 ModuleAssembly 对象的 Simscape 模型。构建过程会自动生成电池包的 Simscape 模型。该模型包括模组组件与冷却板之间的域连接。该软件还添加了一个冷却板连接器,用于连接所有模组组件模块中的热节点数组,以实现与冷却板模块的兼容性。

另请参阅
电池构建器 | Pack | Parallel
Channels