通过集中式脚本管理电池运行时间参数
Simscape™ Battery™ 使用电池包构建器对象创建的模型包括条件参数和运行时参数。创建电池对象时,可以使用基础对象 Cell
的属性 CellModelBlock
来指定生成的电池模型的条件参数。在创建模型后,该软件将定义这些模型的运行时间参数,例如电池电芯阻抗或电池开路电压。因此,您无法使用电池包构建器对象来定义运行时间参数。
要定义运行时参数,可在生成的 Simscape 模型的模块封装中指定,或使用 buildBattery
函数的 MaskParameters
参量。如果将 MaskParameters
参量指定为 "VariableNamesByType" 或 "VariableNamesByInstance",则该函数还会生成一个参数化脚本,您可以使用该脚本管理系统中的模组和电芯的运行时参数。
管理参数和初始目标
使用函数 buildBattery
的参数 MaskInitialTargets
和 MaskParameters
在生成的库中的每个 Module (Generated Block) 和 ParallelAssembly (Generated Block) 模块中为参数和初始条件选择默认数值或变量名。
当您将 MaskParameters
参量设置为 "VariableNamesByType" 时,buildBattery
函数将生成一个脚本。使用此脚本设置电池包中所有电池模组的每个模组和电芯参数,包括电阻和开路电压。当您想要同时更改电池对象类型所有实例的参数时,此选项非常有用。如果还将 MaskInitialTargets
参量设置为 "VariableNamesByInstance"
,则生成的文件开头将包含封装参数定义。
如果您想分别对生成的库中的每个模组或并联组件进行参数化设置,请将 MaskParameters
参量设置为 "VariableNamesByInstance"。然后,buildBattery
函数生成一个脚本,该脚本包含同一类型电池对象的每个实例的一组参数。例如,如果 ModuleAssembly 模块包含五个相同类型的 Module 模块,则该函数将为生成的库中的五个模组实例生成五组不同的参数。 (自 R2023b 起)
当您将 MaskInitialTargets
参量设置为 "VariableNamesByInstance" 时,buildBattery
函数将生成一个脚本。使用此脚本设置电池包中所有电池模组的初始值,例如初始温度和荷电状态。如果您还将 MaskParameters
参量设置为 "VariableNamesByType" 或 "VariableNamesByInstance",则生成的文件将在末尾包含初始目标定义。
创建电池包并管理运行时间参数
在此示例中,您将创建一个简单的电池包,并检查将函数 buildBattery
的参量 MaskParameters
和 MaskInitialTargets
设置为 "VariableNamesByType" 和 "VariableNamesByInstance" 的效果。
依次创建 Cell
、ParallelAssembly
、Module
和 ModuleAssembly
对象,创建一个 Pack
对象。
import simscape.battery.builder.*; batteryCell = Cell(Geometry=CylindricalGeometry); pSet = ParallelAssembly(Cell=batteryCell,NumParallelCells=48,Topology="Hexagonal",Rows=4); module = Module(ParallelAssembly=pSet,NumSeriesAssemblies=4); moduleAssembly = ModuleAssembly(Module=repmat(module,1,2)); pack = Pack(ModuleAssembly=repmat(moduleAssembly,1,4),BalancingStrategy="Passive");
pack = Pack with properties: ModuleAssembly: [1×4 simscape.battery.builder.ModuleAssembly]
特定于类型的参数化
使用 buildBattery
函数从 Pack
对象构建库文件。设置函数的 LibraryName
名称-值参量,为库赋予一个有意义的名称。然后,将 MaskInitialTargets
设置为 "VariableNamesByInstance",将 MaskParameters
设置为 "VariableNamesByType",以生成一个参数化脚本,您可以使用该脚本管理包中的模组和并联组件的运行时参数。
buildBattery(pack,LibraryName="batteriesVariableNames",... MaskInitialTargets="VariableNamesByInstance",... MaskParameters="VariableNamesByType")
Generating Simulink library 'batteriesVariableNames_lib' in the current directory 'C:\Work\' ...
下图显示了函数生成库文件后文件夹的内容:
打开生成的库 batteriesVariableNames
SLX 文件,以访问 ModuleAssembly
和 Pack
对象作为 Simscape 子系统。
通过双击 Pack1 子系统,导航至 ModuleAssembly1 子系统。双击 Module1 和 Module2 模块,打开属性检查器。
该软件将相同的特定变量名与 Module1 和 Module2 的主要部分中的每个参数的值关联起来。您可以在 batteryVariableNames_param
脚本中指定这些值,而无需通过单独打开每个模块的属性检查器来更改模型中的值。
特定于实例的参数化 (自 R2023b 起)
buildBattery
函数还允许您单独对生成的库中的每个模组或并联组件的实例进行参数化。使用 buildBattery
函数从 Pack
对象再次构建库文件,但这次将 MaskParameters
参量设置为 "VariableNamesByInstance"。然后,该函数生成一个脚本,该脚本包含包内模组组件中每个模组实例的一组参数。
buildBattery(pack,LibraryName="batteriesVariableNamesByInstance",... MaskInitialTargets="VariableNamesByInstance",... MaskParameters="VariableNamesByInstance")
Generating Simulink library 'batteriesVariableNamesByInstance_lib' in the current directory 'C:\Work\' ...
打开生成的库 batteriesVariableNamesByInstance
SLX 文件,以访问 ModuleAssembly
和 Pack
对象作为 Simscape 子系统。
通过双击 Pack1 子系统,导航至 ModuleAssembly1 子系统。双击 Module1 和 Module2 block2,打开属性检查器。
该软件将特定的不同变量名称与 Module1 和 Module2 模块的主要部分中的每个参数的值相关联。您可以在 batteryVariableNamesByInstance_param
脚本中指定这些值,而无需通过单独打开每个模块的属性检查器来更改模型中的值。
另请参阅
对象
Cell
|ParallelAssembly
|Module
|ModuleAssembly
|Pack