主要内容

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

将 App Designer App 添加到倒立摆模型中

本示例演示了如何从 Simulink® Real-Time™ 应用程序将信号流式传输到 App Designer 仪表盘应用程序。该示例基于模型 slrt_ex_pendulum_100Hz 构建了实时应用程序。该仪表板包含以下 App Designer 组件:

  • 目标选择器下拉列表 — 用于显示所有可用的目标计算机。

  • “连接/断开”按钮 — 用于连接或断开下拉窗口中选定的目标计算机。

  • “加载”按钮 — 用于将应用程序加载到目标计算机上。

  • “启动/停止”按钮 — 用于在目标计算机上启动或停止该应用程序。

  • 停止时间编辑字段 — 用于显示和设置目标计算机上已加载的应用程序的停止时间。

  • 状态消息框 — 用于显示目标计算机的状态信息。

  • 坐标轴 — 用于显示倒立摆与小车系统的动画。

  • 坐标轴 — 用于显示对摆锤扰动所作响应的信号输出。

  • “推动小车”按钮——向承载摆锤的小车施加输入(推动力)。

  • 参考位置旋钮——用于更改摆锤和滑车系统的参考位置。

  • 参考变化模式旋钮——用于为摆锤和滑车系统的参考位置添加变化模式。

  • 振幅滑块 — 用于调整所选参考变化模式的振幅。

  • 频率滑块 — 用于调整所选参考变化模式的频率。

为了在实时应用程序与仪表盘应用程序之间流式传输信号和参数数据,该应用程序使用了仪表对象。

创建目标对象并连接

为默认目标计算机创建目标对象,并连接到目标计算机。

在 MATLAB® 命令行窗口中,输入:

tg = slrealtime;
connect(tg);

启动目标计算机并构建实时应用程序

这些任务会生成一个实时应用程序,该应用程序将数据流式传输到 App Designer 仪表盘应用中。

  1. 打开模型 slrt_ex_pendulum_100Hz

  2. 编译 slrt_ex_pendulum_100Hz 模型。

在 MATLAB® 命令行窗口中,输入:

model = 'slrt_ex_pendulum_100Hz';
open_system(model);
modelSTF = getSTFName(tg);
set_param(model,"SystemTargetFile",modelSTF)
set_param(model, 'RTWVerbose', 'off');
evalc('slbuild(model)');

有关摆方程的信息,以及这些方程在 Simulink® 中的推导和实现方法,请参阅Derive Equations of Motion and Simulate Cart-Pole System (Symbolic Math Toolbox)中的 Simulink 中的车杆系统示例部分。

运行 App Designer Instrument Panel App

App Designer 仪表板应用程序 slrt_ex_pendulumApp 提供了用于启动实时应用程序 slrt_ex_pendulum_100Hz 并与之交互的控件。

1.运行该 App。要启动 App Designer 应用程序 slrt_ex_pendulumApp.mlapp 并创建句柄 app,请在 MATLAB 命令行窗口中输入:

app = slrt_ex_pendulumApp;

2.要连接到可用的目标计算机,请点击连接按钮。按钮上的文字将变为“断开连接”,且加载按钮将变为可用状态。

3.要将应用程序加载到目标计算机上,请点击加载按钮。应用程序在目标计算机上加载完成后,开始按钮和停止时间字段将变为可用状态。

4.要设置应用程序的停止时间,请在编辑字段中输入您希望的停止时间,然后按下键盘上的 Enter 键。

5.要启动该应用程序,点击 Start 按钮。

6.要扰乱每辆小车上的摆的平衡,请点击轻推小车按钮。您可以通过按钮旁边的值选择框调整微调幅度,通过调整参考位置旋转控件的值来更改参考位置,或者为参考位置选择一种变化模式。

App 回调代码

仪表盘 App 的功能由回调代码提供。

仪表盘应用 slrt_ex_pendulumApp.mlapp 中的回调代码注释说明了回调操作及编程建议。要查看回调代码,请在 App Designer 中打开 slrt_ex_pendulumApp.mlapp,然后点击代码视图选项卡。在命令行窗口中,输入:

edit slrt_ex_pendulumApp

指定信号的模块路径

若要从模型中的信号中流式传输数据,请参阅 App 中 setupInstrumentation(app) 函数对 connectLine 函数的使用示例。

updateAnimationCallback 函数

对于每个 AcquireGroup,该函数会检查自上次调用回调函数以来是否有新数据。如果有数据,该函数会更新动画对象。

信号会根据采样率和降采样率被放置到相应的 AcquireGroup 中,以确保 AcquireGroup 中的所有信号具有相同的时间向量。

使用 Acquire Groups 更新坐标区和动画

在回调代码中,该处理在 updateAnimationCallback 函数中以 AcquireGroupData 信号组的形式呈现。

关闭 App 和模型

仪表盘应用的句柄 app 提供了关闭该应用的功能。

关闭该 App。在 MATLAB 命令行窗口中,输入:

close(app.UIFigure)

关闭打开的模型。在命令行窗口中,输入:

bdclose (model);