setparam
在实时应用中更改可调参数的值
语法
说明
setparam( 将可调模块参数的值设置为新值。通过模块名称和参数名称指定模块参数。 target_object, block_path, parameter_name, parameter_value,'Force',true)
setparam( 将可调全局参数的值设置为新值。通过变量名 MATLAB® 指定全局参数。target_object, '', parameter_name, parameter_value,'Force',true)
示例
将 'Signal Generator' 模块的模块参数 'Amplitude' 的值设置为 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)
将 'Signal Generator' 模块的模块参数 'Amplitude' 的值以 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
将 MATLAB 变量 'Freq' 的值设置为 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)
将 MATLAB 变量 'oscp.G2' 的值设置为 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)
getparam 和 setparam 函数支持点表示法语法,用于在实时应用程序中访问参数值。这些是更高级语法的示例。
% 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™ 允许您在单实例引用模型中调整块参数。此示例演示了如何对引用模型进行参数化。
打开示例
SlrtConcurrentExecutionExample。在 MATLAB 命令行窗口中,输入:openExample('slrealtime/SlrtConcurrentExecutionExample');打开子模型
slrt_ex_mds_subsystem2。open_system('slrt_ex_mds_subsystem2')打开模型资源管理器,并选择
slrt_ex_mds_subsystem2模型的模型工作区。选择 Add > MATLAB Variable,然后将变量名从
Var改为VarGain1。将变量值设置为0.05,并将 Argument 复选框设置为On。应用变量更改,然后关闭模型资源管理器。
在
slrt_ex_mds_subsystem2模型中,打开 Gain1 模块的模块参数对话框。将 Gain 值替换为VarGain1变量名。应用更改。保存并关闭模型。打开顶部模型
slrt_ex_mds_and_tasks,构建并加载实时应用程序。在构建之前,若尚未进行过相关设置,请使用 Speedgoat 目标平台选择器工具为目标计算机配置模型。通过使用
setparam来访问VarGain1变量。setparam(tg,{'slrt_ex_mds_and_tasks/Model2'}, 'VarGain1',0.03)使用
getparam查看VarGain1的新值。getparam(tg,{'slrt_ex_mds_and_tasks/Model2'}, 'VarGain1') ans = 0.0300您也可以将此方法用于 Simulink 实例参数。该流程的唯一变更在于添加 Simulink Parameter 而不是添加 MATLAB variable。通过使用元胞数组语法,您可以在任何层级的引用模型中访问工作区参数、模型参数和模型实例参数。例如,要在深度分层的引用模型中访问 Simulink 实例的参数
Kinst:mModelRefParams_top/T (mModelRefParams_T)/M1 (mModelRefParams_M)/S1 (mModelRefParams_S)
您可以使用以下语法:
setparam(tg,{'mModelRefParams_top/T', 'mModelRefParams_T/M1', 'mModelRefParams_M/S1'}, 'Kinst', 0.5)
输入参数
提供访问方法以操作目标计算机属性。
示例: tg
block_path 的取值可以是:
空字符向量 (
'') 或空字符串标量 ("") 用于基准或模型工作区变量字符向量或字符串标量,用于表示顶层模型中参数的块路径
用于模型块参数和模型实例参数的字符向量或字符串标量元胞数组
示例: '', 'Gain1', {'top/model','sub/model'}
该参数可指定为模块参数,或指定为提供模块参数值的全局参数。模块参数或 MATLAB 变量必须可观察,才能通过参数名称访问。
注意
Simulink Real-Time 不支持多词数据类型的参数。
示例: 'Gain', 'oscp.G1', 'oscp', 'G2'
根据参数要求,具有新数据类型的值。
示例: 1
可选的 'Force', true 名值对参数强制执行参数值设置操作,即使该值超出参数的 [min max] 范围。
示例: 'Force', true
数据类型: logical
版本历史记录
在 R2020b 中推出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.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- 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)