构建带电芯平衡电路的电池包模型
此示例说明了如何在 Simscape™ Battery™ 中创建和构建一个带电芯平衡电路的电池包的 Simscape™ 系统模型。高压 (> 60V) 电池包系统通常由多个并联组件或串联连接的电池电芯组成。在这些系统中,由于多种原因,随着时间的推移,各个并联组件或电芯的荷电状态往往会变得不平衡。
要创建电池包的系统模型,必须先创建构成电池包的 Cell,
ParallelAssembly,
Module,
和 ModuleAssembly
对象,然后使用 buildBattery
函数。
下图显示了以自下而上的方式创建电池包对象的整个过程:
电池包由多个模组组件组成。这些模组组件又由多个串联或并联的电池模组组成。电池模组由多个并联组件组成,这些组件又由多个电池电芯以特定的拓扑结构或几何排列方式并联连接而成。
创建电池包对象后,buildBattery
函数会在工作文件夹中创建一个库,该库包含电池包的系统模型模块。您可以在仿真中将此系统模型用作参考。这些模型的运行时间参数(如电池电芯阻抗或电池开路电压)在模型创建后定义,因此不包含在电池包构建器类中。要定义运行时参数,您可以在生成的 Simscape 模型模块封装中指定这些参数,或使用 buildBattery
函数的 MaskParameters
参量。
在 MATLAB 中创建电池 Pack
对象
本节介绍如何通过编程方式从 MATLAB® 命令行窗口生成电池 Pack
对象。
创建 Cell
对象
要创建电池 Pack
对象,首先使用 batteryCylindricalGeometry
函数创建一个圆柱形的 Cell
对象。指定高度为第一个参量,指定半径为第二个参量。
cylindricalGeometry = batteryCylindricalGeometry(simscape.Value(0.07,"m"),... simscape.Value(0.0105,"m"));
通过 CylindricalGeometry
对象,可以定义电池电芯的圆柱形几何排列。您可以通过设置 CylindricalGeometry
对象的 Height
和 Radius
属性来指定电芯的高度和半径。有关电池电芯可能的几何排列的更多信息,请参阅 PouchGeometry
和 PrismaticGeometry
文档页。
现在,使用此 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
有关更多信息,请参阅Cell
文档页。
创建 ParallelAssembly
对象
并联组件包括多个电池电芯,这些电池电芯在特定的拓扑配置或几何排列下电连接成并联。在本示例中,您将创建一个并联组件,它由四个圆柱形电芯以正方形拓扑结构分四排堆叠而成。
要创建 ParallelAssembly
对象,请使用 batteryParallelAssembly
函数,并分别指定 Cell 对象和并行电芯的数量。可以根据设计指定其他名称-值参量,例如 Rows
和 Topology
。
parallelAssembly = batteryParallelAssembly(cylindricalCell,... 4, ... Rows=4, ... Topology="Square", ... ModelResolution="Detailed");
有关更多信息,请参阅ParallelAssembly
文档页。
创建 Module
对象
电池模组由多个串联的并联组件组成。在此示例中,您将创建一个由四个并联组件组成的电池模组,每个组件之间的间隙为 0.005 米。您还可以定义模组的模型分辨率,并添加环境热边界条件。
要创建 Module
对象,请使用 batteryModule
函数。将并联组件定义为第一个参量,并将串联的并联组件数定义为第二个参量。要指定附加模组属性,请使用名称-值参量 InterParallelAssemblyGap
和 ModelResolution
。
module = batteryModule(parallelAssembly,... 4, ... InterParallelAssemblyGap=simscape.Value(0.005,"m"), ... ModelResolution="Detailed");
有关更多信息,请参阅Module
文档页。
创建 ModuleAssembly
对象
电池模组组件由串联或并联的多个电池模组组成。在此示例中,您将创建一个由两个相同模组组成的电池模组组件,每个模组之间的间隙为 0.005 米。默认情况下,以电气方式串联 ModuleAssembly
对象。
要创建 ModuleAssembly
对象,请使用 batteryModuleAssembly
函数,并将模组指定为第一个参量。要指定模组之间的间隙,请使用 InterModuleGap
名称-值参量。
moduleAssembly= batteryModuleAssembly(repmat(module,1,2),... InterModuleGap=simscape.Value(0.005,"m"));
有关更多信息,请参阅ModuleAssembly
文档页。
创建 Pack
对象
现在,您已经拥有创建电池包的所有基本元素。电池包由串联或并联的多个模组组件组成。在此示例中,您将创建一个由两个相同的模组组件组成的电池包,每个模组组件之间的间隙为 0.005 米。
要创建 Pack
对象,请使用 batteryPack
函数,并将模组组件指定为第一个参量。要指定模组组件之间的间隙,请使用 InterModuleAssemblyGap
名称-值参量。
pack= batteryPack(repmat(moduleAssembly,1,2),... InterModuleAssemblyGap=simscape.Value(0.005,"m"));
有关更多信息,请参阅Pack
文档页。
定义电芯平衡策略
Pack
对象允许您定义电芯平衡策略。指定平衡策略可在电池包内的每个并联组件中添加理想的无源平衡电路。平衡电路由一个平衡电阻器与一个信号控制开关串联组成。
要定义电池的平衡策略,请将 pack
对象的 BalancingStrategy
属性设置为 "Passive"
。
pack.BalancingStrategy = "Passive";
可视化电池包并检查模型分辨率
要获得用于电池包仿真的 Simscape Battery(Table-based) 模块的数量,请使用 Pack
对象的 NumModels
属性。
disp(pack.NumModels);
64
要在构建系统模型前可视化电池包并查看其模型分辨率,请使用 BatteryChart
对象。在您想要可视化电池包的位置创建图形。
f = figure(Color="w",Position=[0 0 1000 500]);
然后使用 batteryChart
函数可视化电池包。要查看模组的模型分辨率,请将 SimulationStrategyVisible
名称-值参量指定为 "On"
。
tl = tiledlayout(1,2,"Parent",f,"TileSpacing","Compact"); nexttile(tl) batteryChart(tl,pack); nexttile(tl) batteryChart(tl,pack,SimulationStrategyVisible="On");
有关更多信息,请参阅batteryChart
文档页。
为电池 Module
对象构建 Simscape 模型
创建电池对象后,需要将其转换为 Simscape 模型,以便在模块图中使用。然后,您可以将这些模型作为参考,用于系统集成和需求评估、冷却系统设计、控制策略开发、硬件在环等许多应用。
要创建一个包含此示例中 Module
对象的 Simscape Battery 模型的库,请使用 buildBattery
函数。
buildBattery(pack,LibraryName="packBalancingExample",Verbose="off");
此函数在工作目录中创建 packBalancingExample_lib
和 packBalancingExample
SLX 库文件。packBalancingExample_lib
库包含 Modules 和 ParallelAssemblies 子库。
要访问 Module
和 ParallelAssembly
对象的 Simscape 模型,请打开 packBalancingExample_lib
SLX 文件,双击子库,然后将 Simscape 模块拖到模型中。
packBalancingExample
库包含 ModuleAssembly
和 Pack
对象的 Simscape 模型。
您的 ModuleAssembly
和 Pack
对象的 Simscape 模型是子系统。打开 packLibrary
SLX 文件并双击子系统,即可查看这些子系统的内部情况。
要了解如何为锂离子电池包实现无源电芯平衡策略,请参阅 用于电池无源电芯平衡的尺寸电阻器 示例。
在电池构建器中探索电池包和构建模型
在此示例中,您通过在 MATLAB 命令行窗口中调用相关对象和函数,以编程方式创建了电池包及其所有子组件。另外,如果您喜欢互动性和可视化性更强的方法,也可以使用 Battery Builder。使用此 App,您可以交互式地导入现有的电池对象或从头构建电池对象,探索和编辑属性,以及查看电池层次结构和三维可视化。然后,您就可以构建对象的 Simscape 系统模型,并将其用作仿真中的参考。您还可以导出工作区中的对象。要了解如何使用电池构建器生成电池对象和构建 Simscape 模型,请参阅 电池构建器快速入门 示例。
探索您在本例中创建的电池包。打开电池构建器。
batteryBuilder
从 packBalancingExample
MAT 文件中导入电池包对象。在电池构建器选项卡下,在工具条的导入部分中,点击导入。然后点击从 MAT 文件导入,并加载 packBalancingExample
MAT 文件。
电池构建器现在由一个 Pack
对象及其每个子组件组成。
应用左侧的电池浏览器面板包含应用当前活动会话中的所有电池对象。您可以选择一个对象,在已选电池选项卡中将其可视化,在电池层次结构面板中检查其层次结构和子对象,并在 App 右侧的属性面板中编辑其属性。
您可以在电池图选项卡下编辑图的属性,如坐标轴标签、坐标轴方向、图的标题和灯光。您还可以检查所选电池对象的当前仿真策略和模型分辨率。要在图中可视化仿真策略,请在工具条的仿真策略部分选中可见框。
最后,如果您修改了电池对象,并希望创建更新后的 Pack
对象的库模型,请在工具条的电池构建器选项卡下的库部分中,点击创建库。在新窗口中,指定要保存库的文件夹、库名称,以及是否使用数字值或变量名称作为封装参数和封装初始目标。
点击创建库,在指定文件夹中生成电池对象的更新库模型。打开此模型,即可访问电池对象(作为 Simscape 模块),您可以在早期开发阶段、软件和硬件开发、系统集成和需求评估、冷却系统设计、控制策略开发、硬件在环等许多应用中,将其作为架构评估的起点。