主要内容

本页采用了机器翻译。点击此处可查看英文原文。

ParameterTuner

为仪表盘 UI 中的 App Designer 组件创建参数调节器组件

自 R2021b 起

说明

hPTuner = slrealtime.ui.tool.ParameterTuner(hFigure) 为仪表板 uifigure 图中的 App Designer 组件创建了一个参数调节器组件。将参数调节器连接到 App Designer 组件(例如旋钮)后,该 App Designer 组件在实时应用程序中获取或设置数据的方式,与 App Designer 中提供的 Simulink Real-Time 组件相同。在以下情况下,参数调节器组件会从 Speedgoat® 目标计算机中获取当前参数值:

  • 控制面板首先启动,并在选定的目标计算机上加载一个应用程序。

  • 仪表面板中选定的目标发生变化,并在所选目标计算机上加载了一个应用程序。

  • 应用程序已加载到所选的目标计算机上。

  • 该参数由外部来源(例如命令行、资源管理器或所选目标计算机上的其他仪表面板)进行更改。

如果参数的当前值由外部来源更改,且该值对“参数调谐”组件而言无效(例如,超出了旋钮的调节范围),则“参数调谐”组件会显示一个覆盖该组件的警告图标。将来自外部源的参数更改为该组件的有效值后,警告图标将消失。

当 ECU 页面与 XCP 页面的选择不匹配时,该不匹配状态将禁用 App Designer 中的 ParameterTable 组件和 ParameterTuner 组件。您可通过在实时应用程序中协调 ECU 页面与 XCP 页面的选择来启用这些组件的操作。使用 getECUPagesetECUPagegetXCPPagesetXCPPage 函数。或者,使用资源管理器中的 Enable Parameter Table 按钮。此按钮为上下文敏感按钮,当资源管理器检测到页面选择不匹配时会显示。

有关控制属性的信息,请参阅 slrealtime.ui Properties。若计划在默认目标计算机之外的其他计算机上使用该应用程序,则必须为该控件设置 TargetSource 属性。

示例

示例

全部折叠

创建一个 App Designer 组件,并将其连接到实时应用程序中的一个模块,以便进行参数调整。更改该组件的值会将该值推送到目标计算机上的实时应用程序中。

% Create figure 
hFig = uifigure(); 
% Create a hKnob 
hKnob = uiknob(hFig); 
% Create Parameter Tuning object 
hParamTuner = slrealtime.ui.tool.ParameterTuner(hFig); 
hParamTuner.Component = hKnob; 
hParamTuner.BlockPath = 'testmodel/Constant6'; 
hParamTuner.ParameterName = 'Value';

连接 App Designer 组件以进行参数调整中,代码演示了如何将 ParameterTuner 组件连接到模块上的某个值。相反,您可以使用略有不同的代码,将 ParameterTuner 组件连接到工作区中的某个变量或参数。在该组件的代码中,BlockPath 为空,而 ParameterName 是参数名称,而非待调谐的模块属性。该代码的语法可以是:

% Create Parameter Tuning object
hParamTuner = slrealtime.ui.tool.ParameterTuner(hFig);
hParamTuner.Component = hKnob;
hParamTuner.BlockPath = '';
hParamTuner.ParameterName = 'myParameter'; 

changeComponentValue 函数可用于更改与 ParameterTuner 组件相连的参数的值。使用此函数更改组件的值,会将该值推送到目标计算机上的实时应用程序中。

% Create figure 
hFig = uifigure(); 
% Create a hKnob 
hKnob = uiknob(hFig); 
% Create Parameter Tuning object 
hParamTuner = slrealtime.ui.tool.ParameterTuner(hFig); 
hParamTuner.Component = hKnob; 
hParamTuner.BlockPath = 'slrt_ex_osc/Signal Generator'; 
hParamTuner.ParameterName = 'Amplitude';
changeComponentValue(hParamTuner,2)
getparam(tg, 'slrt_ex_osc/Signal Generator', 'Amplitude')
ans =

     2

ConvertToComponent 将实时应用程序的值转换为旋钮可显示的形式。在此示例中,字符串 "High""Medium""Low"ConvertToTarget 将旋钮值转换为可写入实时应用程序的格式。在此示例中,1051 的值。

这是由 App Generator 生成的。

function out_val = convertLabelToValue(in_val, values, labels)
    out_val = values(strcmp(in_val, labels));
end

function out_val = convertValueToLabel(in_val, values, labels)
    out_val = labels(arrayfun(@(x)isequal(in_val, x), values));
end

Signal_Generator_Amplitude_values = [10 5 1];
Signal_Generator_Amplitude_labels = {'High','Medium','Low'};

slrtcomp = slrealtime.ui.tool.ParameterTuner(app.UIFigure, ...
                                             'TargetSource', ...
                                             targetSelector);
slrtcomp.Component = app.Signal_Generator_Amplitude;
slrtcomp.BlockPath = 'slrt_ex_osc/Signal Generator';
slrtcomp.ParameterName = 'Amplitude';
slrtcomp.ConvertToComponent = @(val)app.convertValueToLabel(val, ...
                                  Signal_Generator_Amplitude_values, ...
                                  Signal_Generator_Amplitude_labels);
slrtcomp.ConvertToTarget = @(val)app.convertLabelToValue(val, ...
                                  Signal_Generator_Amplitude_values, ...
                                  Signal_Generator_Amplitude_labels);

输入参数

全部折叠

hFigure 参量标识了您要向其添加 UI 组件的 uifigure

示例: hFig = uifigure()

数据类型: function_handle

输出参量

全部折叠

hPTuner 参量是您为 App Designer 组件创建的参数调整器组件的句柄。

版本历史记录

在 R2021b 中推出