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