Manage Battery Run-Time Parameters with Centralized Script
Simscape™
Battery™ models that you create by using the battery pack builder objects comprise
conditional and run-time parameters. When you create the battery objects, you can specify the
conditional parameters of the generated battery models by using the
CellModelBlock
property of the underlying Cell
object. The software
defines the run-time parameters for these models, such as the battery cell impedance or the
battery open-circuit voltage, after you create the model. You therefore cannot define the
run-time parameters by using the battery pack builder objects.
To define the run-time parameters, specify them in the block mask of the generated Simscape
models or use the MaskParameters
argument of the buildBattery
function. If you specify the MaskParameters
argument as
"VariableNamesByType"
or
"VariableNamesByInstance"
, the function also generates a
parameterization script that you can use to manage the run-time parameters of the modules and
cells inside your system.
Manage Parameters and Initial Targets
Use the MaskInitialTargets
and MaskParameters
arguments of the buildBattery
function to choose between default numeric
values or variable names for the parameters and initial conditions in each Module (Generated Block) and ParallelAssembly (Generated Block) block in the generated
library.
When you set the MaskParameters
argument to
"VariableNamesByType"
, the buildBattery
function generates a script. Use this script to set each module and cell parameters, including
the resistance and the open-circuit voltage, for all the battery modules in your battery pack.
This option is useful when you want to change the parameters of all instances of a battery
object type at once. If you also set the MaskInitialTargets
argument to
"VariableNamesByInstance"
, then the generated file contains the mask
parameter definitions at the beginning.
If you want to parameterize each single instance of
module or parallel assembly inside the generated library separately, set the
MaskParameters
argument to
"VariableNamesByInstance"
. The buildBattery
function then generates a script that contains a set of parameters for each instances of the
same type of battery object. For example if a ModuleAssembly block contains five Module blocks
of the same type, the function generates five different sets of parameters for the five module
instances in the generated library. (since R2023b)
When you set the MaskInitialTargets
argument to
"VariableNamesByInstance"
, the buildBattery
function generates a script. Use this script to set each of the initial values such as the
initial temperature and state of charge for all the battery modules in your battery pack. If
you also set the MaskParameters
argument to
"VariableNamesByType"
or
"VariableNamesByInstance"
, then the generated file contains the
initial targets definitions at the end.
Create Battery Pack and Manage Run-Time Parameters
In this example, you create a simple battery pack and check the effects of setting the
MaskParameters
and the MaskInitialTargets
arguments of the buildBattery
function to
"VariableNamesByType"
and
"VariableNamesByInstance"
.
Create a Pack
object by
creating Cell
, ParallelAssembly
,
Module
, and
ModuleAssembly
objects, in this order.
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]
Type-Specific Parameterization
Use the buildBattery
function to build the library file from the
Pack
object. Set the LibraryName
name-value argument
of the function to give the library a meaningful name. Then, set
MaskInitialTargets
to
"VariableNamesByInstance"
and MaskParameters
to "VariableNamesByType"
to generate a parameterization script that
you can use to manage the run-time parameters of the modules and parallel assemblies in the
pack.
buildBattery(pack,LibraryName="batteriesVariableNames",... MaskInitialTargets="VariableNamesByInstance",... MaskParameters="VariableNamesByType")
Generating Simulink library 'batteriesVariableNames_lib' in the current directory 'C:\Work\' ...
This figure shows the content of the folder after the function generates the library files:
Open the generated library batteriesVariableNames
SLX file to access the ModuleAssembly
and Pack
objects as Simscape subsystems.
Navigate to the ModuleAssembly1 subsystem by double-clicking the Pack1 subsystem. Double-click the Module1 and Module2 blocks to open the Property Inspector.
The software associates the same specific variable name to the values of each
parameter in the Main section of both Module1 and Module2 blocks. You can
specify these values inside the batteryVariableNames_param
script without
having to change them inside the model by opening the Property Inspector
of each block individually.
Instance-Specific Parameterization (since R2023b)
The buildBattery
function also allows you to parameterize each single
instance of module or parallel assembly inside the generated library separately. Use the
buildBattery
function to build the library file from the
Pack
object again but, this time, set the
MaskParameters
argument to
"VariableNamesByInstance"
. The function then generates a script
that contains a set of parameters for each instances of the modules in the module assemblies
inside the pack.
buildBattery(pack,LibraryName="batteriesVariableNamesByInstance",... MaskInitialTargets="VariableNamesByInstance",... MaskParameters="VariableNamesByInstance")
Generating Simulink library 'batteriesVariableNamesByInstance_lib' in the current directory 'C:\Work\' ...
Open the generated library batteriesVariableNamesByInstance
SLX file to
access the ModuleAssembly
and Pack
objects as Simscape
subsystems.
Navigate to the ModuleAssembly1 subsystem by double-clicking the Pack1 subsystem. Double-click the Module1 and Module2 block2 to open the Property Inspector.
The software associates a specific different variable name to the values of
each parameter in the Main section of the Module1 and Module2 blocks. You
can specify these values inside the batteryVariableNamesByInstance_param
script without having to change them inside the model by opening the Property
Inspector of each block individually.
See Also
Objects
Cell
|ParallelAssembly
|Module
|ModuleAssembly
|Pack