在 MATLAB 和 Simscape 中构建电池包的简单模型
此示例说明了如何在 Simscape™ Battery™ 中创建和构建电池包的 Simscape™ 系统模型。该电池包是用于汽车应用的 400 V 软包电池。要创建电池包的系统模型,必须先创建构成电池包的 Cell
、ParallelAssembly
、Module
和 ModuleAssembly
对象,然后使用 buildBattery
函数。
下图显示了以自下而上的方式创建电池包对象的整个过程:
电池包由多个模组组件组成。这些模组组件又由多个串联或并联的电池模组组成。电池模组由多个并联组件组成,这些组件又由多个电池电芯以特定的拓扑结构或几何排列方式并联连接而成。
创建电池包对象后,buildBattery
函数会在工作文件夹中创建一个库,该库包含电池包的系统模型模块。您可以在仿真中将此系统模型用作参考。这些模型的运行时间参数(如电池电芯阻抗或电池开路电压)在模型创建后定义,因此不包含在电池包构建器类中。要定义运行时参数,您可以在生成的 Simscape 模型模块封装中指定这些参数,或使用 buildBattery
函数的 MaskParameters
参量。
在 MATLAB 中创建电池 Pack
对象
本节介绍如何从 MATLAB® 命令行窗口以编程方式生成电池包对象。
创建 Cell
对象
要创建电池 Pack
对象,请先创建一个软包格式的 Cell
对象。
通过 PouchGeometry
对象,可以定义电池电芯的软包几何排列。要创建 PouchGeometry
对象,请使用 batteryPouchGeometry
函数。将电芯高度作为第一个参量,将电芯长度作为第二个参量。
pouchGeometry = batteryPouchGeometry(simscape.Value(0.1,"m"),... simscape.Value(0.3,"m"),TabLocation="Opposed")
pouchGeometry = PouchGeometry with properties: Length: 0.3000 (m) Thickness: 0.0100 (m) TabLocation: "Opposed" TabWidth: 0.0400 (m) TabHeight: 0.0300 (m) Height: 0.1000 (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
文档页。
创建 ParallelAssembly
对象
并联组件包括多个电池电芯,这些电池电芯在特定的拓扑配置或几何排列下电连接成并联。在此示例中,您要创建一个由三个软包电芯组成的并联组件。
要创建 ParallelAssembly
对象,请使用 batteryParallelAssembly
函数。将 Cell
对象定义为第一个参量,并将并联电芯数定义为第二个参量。
parallelAssembly = batteryParallelAssembly(pouchCell,3)
parallelAssembly = ParallelAssembly with properties: NumParallelCells: 3 Cell: [1×1 simscape.battery.builder.Cell] Topology: "SingleStack" Rows: 1 ModelResolution: "Lumped" Show all properties
有关更多信息,请参阅ParallelAssembly
文档页。
创建 Module
对象
电池模组由多个串联的并联组件组成。在此示例中,您将创建一个由 11 个并联组件组成的电池模组,每个组件之间的间隙为 0.005 米。
要创建 Module
对象,请使用 batteryModule
函数。将 ParallelAssembly
对象定义为第一个参量,并将串联的并联组件数定义为第二个参量。要指定并联组件之间的间隙,请使用名称-值参量 InterParallelAssemblyGap
。
module = batteryModule(parallelAssembly,11,... InterParallelAssemblyGap=simscape.Value(0.005,"m"))
module = Module with properties: NumSeriesAssemblies: 11 ParallelAssembly: [1×1 simscape.battery.builder.ParallelAssembly] ModelResolution: "Lumped" SeriesGrouping: 11 ParallelGrouping: 1 Show all properties
有关更多信息,请参阅Module
文档页。
创建 ModuleAssembly
对象
电池模组组件由串联或并联的多个电池模组组成。在此示例中,您将创建一个由两个相同模组组成的电池模组组件,每个模组之间的间隙为 0.1 米。默认情况下,以电气方式串联 ModuleAssembly
对象。
要创建 ModuleAssembly
对象,请使用 batteryModuleAssembly
函数。将 Module
对象定义为第一个参量,并使用名称-值参量 InterModuleGap
指定模组之间的间隔。
moduleAssembly = batteryModuleAssembly(repmat(module,1,2),... InterModuleGap=simscape.Value(0.1,"m"))
moduleAssembly = ModuleAssembly with properties: Module: [1×2 simscape.battery.builder.Module] Show all properties
有关更多信息,请参阅ModuleAssembly
文档页。
创建 Pack
对象
现在,您已经拥有创建电池包的所有基本元素。电池包由串联或并联的多个模组组件组成。在此示例中,您创建了一个由 5 个相同的模组组件组成的电池包,每个模组组件之间的间隙为 0.01 米。
要创建 Pack
对象,请使用 batteryPack
函数。将 ModuleAssembly
对象定义为第一个参量,并使用名称-值参量 InterModuleAssemblyGap
指定模组组件之间的间隔。
pack = batteryPack(repmat(moduleAssembly,1,5),... InterModuleAssemblyGap=simscape.Value(0.01,"m"))
pack = Pack with properties: ModuleAssembly: [1×5 simscape.battery.builder.ModuleAssembly] Show all properties
有关更多信息,请参阅Pack
文档页。
可视化电池包并检查模型分辨率
要获得用于包仿真使用的 Simscape Battery(Table-based) 模块的数量,请使用 Pack
对象的 NumModels
属性。
disp(pack.NumModels);
10
要在构建系统模型前可视化电池包并查看其模型分辨率,请使用 BatteryChart
对象。
然后使用 batteryChart
函数可视化电池包。要查看模组的模型分辨率,请将名称-值参量 SimulationStrategyVisible
定义为 "On"
。
f = figure(Color="white",Position=[0 0 1000 500]); packChart = batteryChart(f,pack, ... SimulationStrategyVisible="on");
要为电池图添加默认轴标签,请使用 BatteryChart
对象的 setDefaultLabels
方法。
有关更多信息,请参阅batteryChart
文档页。
为电池包对象构建 Simscape 模型
创建电池对象后,需要将其转换为 Simscape 模型,以便在模块图中使用。然后,您可以将这些模型作为参考,用于系统集成和需求评估、冷却系统设计、控制策略开发、硬件在环等许多应用。
要创建一个包含本例中创建的 Pack
对象的 Simscape Battery 模型的库,请使用 buildBattery
函数。
buildBattery(pack,LibraryName="packLibrary",Verbose="off");
此函数在工作目录中创建 packLibrary_lib
和 packLibrary
SLX 库文件。packLibrary_lib
库包含 Modules 和 ParallelAssemblies 子库。
要访问 Module
和 ParallelAssembly
对象的 Simscape 模型,请打开 packLibrary_lib
SLX 文件,双击子库,然后将 Simscape 模块拖到模型中。
packLibrary
库包含 ModuleAssembly
和 Pack
对象的 Simscape 模型。
您的 ModuleAssembly
和 Pack
对象的 Simscape 模型是子系统。打开 packLibrary
SLX 文件并双击子系统,即可查看这些子系统的内部情况。
要了解如何将热效应纳入电池包,请参阅 构建带热效应的电池模组模型 示例。
要构建更详细的电池包模型,请参阅用软包电芯构建电池包的详细模型示例。
要了解如何对电池储能系统 (BESS) 控制器和电池管理系统 (BMS) 进行建模,并添加所有必要的峰值削峰函数,请参阅 峰值削减与电池储能系统 示例。
在电池构建器中探索电池包和构建模型
在此示例中,您通过在 MATLAB 命令行窗口中调用相关对象和函数,以编程方式创建了电池包及其所有子组件。另外,如果您喜欢互动性和可视化性更强的方法,也可以使用 Battery Builder。使用此 App,您可以交互式地导入现有的电池对象或从头构建电池对象,探索和编辑属性,以及查看电池层次结构和三维可视化。然后,您就可以构建对象的 Simscape 系统模型,并将其用作仿真中的参考。您还可以导出工作区中的对象。要了解如何使用电池构建器生成电池对象和构建 Simscape 模型,请参阅 电池构建器快速入门 示例。
探索您在本例中创建的电池包。打开电池构建器。在 App 选项卡的 Simscape 下,点击电池构建器图标。您也可以从命令行打开该 App:
batteryBuilder
从 packLibrary
MAT 文件中导入电池包对象。在电池构建器选项卡下,在工具条的导入部分中,点击导入。然后点击从 MAT 文件导入,并加载 packLibrary
MAT 文件。
电池构建器现在由一个 Pack
对象及其每个子组件组成。
应用左侧的电池浏览器面板包含应用当前活动会话中的所有电池对象。您可以选择一个对象,在已选电池选项卡中将其可视化,在电池层次结构面板中检查其层次结构和子对象,并在 App 右侧的属性面板中编辑其属性。
您可以在电池图选项卡下编辑图的属性,如坐标轴标签、坐标轴方向、图的标题和灯光。您还可以检查所选电池对象的当前仿真策略和模型分辨率。要在图中可视化仿真策略,请在工具条的仿真策略部分选中可见框。
最后,如果您修改了电池对象,并希望创建更新后的 Pack
对象的库模型,请在工具条的电池构建器选项卡下的库部分中,点击创建库。在新窗口中,指定要保存库的文件夹、库名称,以及是否使用数字值或变量名称作为封装参数和封装初始目标。
点击创建库,在指定文件夹中生成电池对象的更新库模型。打开此模型,即可访问电池对象(作为 Simscape 模块),您可以在早期开发阶段、软件和硬件开发、系统集成和需求评估、冷却系统设计、控制策略开发、硬件在环等许多应用中,将其作为架构评估的起点。