主要内容

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

无需重建模型即可对文件日志数据进行调优降采样

本示例演示了如何在实时应用程序中调整 File Log 模块的降采样参数,而无需重新构建模型。Application 对象的方法 getAllFileLogBlocksgetFileLogDecimationsetFileLogDecimation 用于更改应用程序 MLDATX 文件的分采样值。可以在目标计算机上再次运行该应用程序,以观察模型中连接到 File Log 模块的信号经过更新后的降采样情况。

创建目标对象并连接

为默认目标计算机创建目标对象,并连接到目标计算机。在命令行窗口中,输入:

tg = slrealtime;
connect(tg);

打开、编译和下载模型

打开模型 slrt_ex_filelogtunabledecimation>。该模型使用 File Log 模块在目标计算机上记录数据。对于 File Log 模块,降采样默认设置为 1。在 MATLAB 命令行窗口中,输入:

model = 'slrt_ex_filelogtunabledecimation';
open_system(model);
modelSTF = getSTFName(tg);
set_param(model,"SystemTargetFile",modelSTF);

构建顶层模型并将其下载到目标计算机上。

  • 配置为非详细输出构建。

  • 构建并下载应用程序。

set_param(model,'RTWVerbose','off');
set_param(model,'StopTime','5');
evalc('slbuild(model)');
load(tg,model);

关闭模型

bdclose(model);

运行实时应用程序

在目标计算机上运行该实时应用程序。等待应用程序停止运行。

start(tg);
pause(7);
  Importing Log file 1 of 1 ...

在仿真数据检查器中查看信号

Simulink.sdi.view;

设置 File Log 模块降采样

使用 Application 对象,将各模块的 File Log 块降采样率设置为相同的值。创建 Application 对象。

appObj = slrealtime.Application(model);

使用 getAllFileLogBlocks 函数在应用程序中获取 File Log 模块。

fileLogBlocks = appObj.getAllFileLogBlocks;

使用 getFileLogDecimation 函数获取模块的文件日志降采样设置。这两个模块的设置均为 1。

oldDecimation = appObj.getFileLogDecimation(fileLogBlocks);

使用 setFileLogDecimation 函数将这两个模块的抽取率均设置为 5。

appObj.setFileLogDecimation(fileLogBlocks, 5);

确认新的抽取值已设置为 5。

newDecimation = appObj.getFileLogDecimation(fileLogBlocks);

在目标计算机上重新加载应用程序并重新运行

load(tg,model);
start(tg);
pause(7);
  Importing Log file 1 of 1 ...

在仿真数据检查器中查看新信号

Simulink.sdi.view;

设置 File Log 模块降采样

使用 Application 对象,将各模块的 File Log 块降采样率设置为不同的值。创建 Application 对象

appObj = slrealtime.Application(model);

使用 getAllFileLogBlocks 函数在应用程序中获取 File Log 模块。

fileLogBlocks = appObj.getAllFileLogBlocks;

使用 getFileLogDecimation 函数获取模块的文件日志降采样设置。这两个模块的设置均为 1。

oldDecimation = appObj.getFileLogDecimation(fileLogBlocks);

使用 setFileLogDecimation 函数将这两个模块的抽取率均设置为 5。

appObj.setFileLogDecimation(fileLogBlocks, [1 2]);

确认新的抽取值已设置为 5。

newDecimation = appObj.getFileLogDecimation(fileLogBlocks);

重新加载实时应用程序并重新运行

load(tg,model);
start(tg);
pause(7);
  Importing Log file 1 of 1 ...

在仿真数据检查器中查看信号

Simulink.sdi.view;