主要内容

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

ParameterTuner

R2026b

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

描述

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 页面的选择来启用这些组件的操作。使用 getECUPage、setECUPage、getXCPPage 和 setXCPPage 函数。或者,使用资源管理器中的 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 将旋钮值转换为可写入实时应用程序的格式。在此示例中,10、5 和 1 的值。

这是由 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 中推出