setparam
Change value of tunable parameter in real-time application
Syntax
Description
setparam(
sets the value of a tunable block parameter to a new value. Specify the block
parameter by the block name and the parameter name. target_object
, block_path
, parameter_name
, parameter_value
,'Force
',true)
setparam(
sets the value of the tunable global parameter to a new value. Specify the
global parameter by the MATLAB® variable name.target_object
, '', parameter_name
, parameter_value
,'Force
',true)
Examples
Set the value of the block parameter
'Amplitude'
of the block 'Signal
Generator'
to 5
.
tg = slrealtime; mdlSTF = getSTFName(tg); mdlName = 'slrt_ex_osc'; openExample(mdlName); set_param(mdlName,"SystemTargetFile",mdlSTF); xfername = [mdlName,'/Signal Generator']; slbuild(mdlName); load(tg,mdlName); setparam(tg,xfername,'Amplitude',5)
Sweep the value of the block parameter
'Amplitude'
of the block 'Signal
Generator'
by steps of 2
.
tg = slrealtime; mdlSTF = getSTFName(tg); mdlName = 'slrt_ex_osc'; openExample(mdlName); set_param(mdlName,"SystemTargetFile",mdlSTF); xfername = [mdlName,'/Signal Generator']; slbuild(mdlName); load(tg,mdlName); for i = 1 : 3 setparam(tg,xfername,'Amplitude',(i*2)) end
Set the value of the MATLAB variable 'Freq'
to
30
.
tg = slrealtime; mdlSTF = getSTFName(tg); mdlName = 'slrt_ex_osc'; openExample(mdlName); set_param(mdlName,"SystemTargetFile",mdlSTF); Freq = Simulink.Parameter; Freq.StorageClass = 'ExportedGlobal'; Freq.Value = 10; xfername = [mdlName,'/Signal Generator']; set_param(xfername,'Frequency','Freq'); slbuild(mdlName); load(tg,mdlName); setparam(tg,'','Freq',30)
Set the value of the MATLAB variable 'oscp.G2'
to
10000000
.
tg = slrealtime; mdlSTF = getSTFName(tg); mdlName = 'slrt_ex_osc_struct'; openExample(mdlName); set_param(mdlName,"SystemTargetFile",mdlSTF); load('slrt_ex_osc_struct.mat'); slbuild(mdlName); load(tg,mdlName); setparam(tg,'','spkp.g2_gain',10000000)
The getparam
and
setparam
functions support dot notation syntax to
access parameter values in real-time applications. These are examples of more
advanced syntax.
% If a parameter is a struct, a single element of any % array can be specified at any arbitrary depth in the struct. tg.setparam('', 'p.a.b(2).c', val) val = tg.getparam('', 'p.a.b(2).c') % If a parameter is an array of structs, one element of % the struct array can be specified as follows: tg.setparam('', 'p(2,2).x.y.z', val) val = tg.getparam('', 'p(2,2).x.y.z') % If a parameter is N dimensions, a single element of % the parameter can be accessed by specifying each dimension. tg.setparam('top/constant', 'Value(3,4)', val) val = tg.getparam('top/constant', 'Value(3,4)') % If a parameter is Mx1 or 1xN (row or column vector), % the following syntax specifying a single index % is allowed: tg.setparam('top/constant1', 'Value(4)', val)
Simulink® Real-Time™ allows you to tune block parameters in single instance referenced models. This example shows how to parameterize a referenced model.
Open example
SlrtConcurrentExecutionExample
. In the MATLAB command window, type:openExample('slrealtime/SlrtConcurrentExecutionExample');
Open sub model
slrt_ex_mds_subsystem2
.open_system('slrt_ex_mds_subsystem2')
Open the Model Explorer and select the Model Workspace for the
slrt_ex_mds_subsystem2
model.Select Add > MATLAB Variable then change the variable name from
Var
toVarGain1
. Set the variable value to0.05
and set the Argument checkbox toOn
.Apply the variable change, then close the Model Explorer.
In the
slrt_ex_mds_subsystem2
model, open the Block Parameters dialog box for the Gain1 block. Replace the Gain value with theVarGain1
variable name. Apply the change. Save and close the model.Open top model
slrt_ex_mds_and_tasks
, build, and load the real-time application. Before building, if you have not previously done so, configure the models for your target computer by using the Speedgoat Target Platform Selector utility.Access the
VarGain1
variable by usingsetparam
.setparam(tg,{'slrt_ex_mds_and_tasks/Model2'}, 'VarGain1',0.03)
View the new value for
VarGain1
by usinggetparam
.getparam(tg,{'slrt_ex_mds_and_tasks/Model2'}, 'VarGain1') ans = 0.0300
You also can use this approach for Simulink instance parameters. The only change to the procedure is adding a Simulink Parameter instead of adding a MATLAB variable. By using the cell array syntax, you can access workspace parameters, model arguments, and model instance parameters in any level of referenced models. For example, to access a Simulink instance parameter
Kinst
in a deeply layered reference model:mModelRefParams_top/T (mModelRefParams_T)/M1 (mModelRefParams_M)/S1 (mModelRefParams_S)
You could use this syntax:
setparam(tg,{'mModelRefParams_top/T', 'mModelRefParams_T/M1', 'mModelRefParams_M/S1'}, 'Kinst', 0.5)
Input Arguments
Provides access to methods that manipulate the target computer properties.
Example: tg
The block_path
values can be:
Empty character vector (
''
) or empty string scalar (""
) for base or model workspace variablesCharacter vector or string scalar for block path to parameters in the top model
Cell array of character vectors or string scalars for model block arguments and model instance parameters
Example: ''
, 'Gain1'
,
{'top/model','sub/model'}
The parameter can designate either a block parameter or a global parameter that provides the value for a block parameter. The block parameter or MATLAB variable must be observable to be accessible through the parameter name.
Note
Simulink Real-Time does not support parameters of multiword data types.
Example: 'Gain'
, 'oscp.G1'
, 'oscp'
, 'G2'
New value with data type as required by parameter.
Example: 1
The optional 'Force', true
name-value pair argument
forces the parameter value set operation even if the value is not in the
range of [min max]
for the parameter.
Example: 'Force', true
Data Types: logical
Version History
Introduced in R2020bThe operation of the getparam
function and
setparam
function supports dot notation for:
Specifying a field of a struct for
getparam
. It has the same support assetparam
.Specifying an element of a struct array or matrix for
getparam
andsetparam
.Specifying one field of a struct when any substructure is an array of structs for
getparam
andsetparam
.
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Sélectionner un site web
Choisissez un site web pour accéder au contenu traduit dans votre langue (lorsqu'il est disponible) et voir les événements et les offres locales. D’après votre position, nous vous recommandons de sélectionner la région suivante : .
Vous pouvez également sélectionner un site web dans la liste suivante :
Comment optimiser les performances du site
Pour optimiser les performances du site, sélectionnez la région Chine (en chinois ou en anglais). Les sites de MathWorks pour les autres pays ne sont pas optimisés pour les visites provenant de votre région.
Amériques
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)