使用变体和 Simulink Real-Time 创建实时应用程序
此示例说明如何使用 Simulink® Real-Time™ 工作流创建一个具有可变子系统的实时应用程序。通过 Simulink Real-Time,您可以基于 Simulink 模型创建实时应用程序,并在连接到物理系统的 Speedgoat® 目标计算机硬件上运行。
要在目标计算机上运行 Simulink Real-Time 模型,请在一个网络中连接开发计算机和目标计算机。有关步骤,请参阅设置并配置 Simulink Real-Time (Simulink Real-Time)。
浏览和设置模型
打开模型 slexVariantSubsystems。该模型包含一个 Variant Subsystem 模块 Controller,它有两个选择项,分别为 Linear Controller 和 Nonlinear Controller,并且分别具有条件 VSS_MODE == 1 和 VSS_MODE == 2。
要创建一个实时应用程序,请执行以下操作:
1 在模块参数对话框中,将变体激活时间设置为 startup。
2 检查变体控制项表达式是否设置为 VSS_MODE == 1(对于 Linear Controller)*,或是否设置为 VSS_MODE == 2(对于 Nonlinear Controller)。
3 创建变体参数 VSS_MODE 作为 Simulink.Parameter,其值为 1,数据类型为 int32。
VSS_MODE = Simulink.Parameter(int32(1));
4 将 VSS_MODE 的存储类设置为 ExportedGlobal。
VSS_MODE.CoderInfo.StorageClass = 'ExportedGlobal';
5 将变体选择项更改为 atomic。
open_system('slexVariantSubsystems');

要向 Simulink Coder 提供有关如何从模型编译实时应用程序的信息,请在“配置参数”对话框中设置仿真和实时运行参数。要打开“配置参数”对话框,请在建模选项卡上,点击模型设置。
1 在求解器窗格的求解器选择下,从类型列表中,选择 Fixed-step。
2 在代码生成窗格的目标选择部分中,从系统目标文件列表中为 Simulink Real-Time 模型选择 STF。编译实时应用程序需要此选择。
3 在优化窗格中,将默认参数行为设置为 Tunable。
4 在接口窗格的数据交换接口下,清除外部模式复选框。
现在,模型已准备就绪,可以使用当前配置参数设置来编译独立的实时应用程序。
创建并运行实时应用程序
使用 slbuild 命令创建实时应用程序。这将生成实时应用程序 MLDATX 文件。
slbuild('slexVariantSubsystems');
使用 slrtExplorer (Simulink Real-Time) 命令打开 Simulink Real-Time 资源管理器。
slrtExplorer
通过点击 Load Application 加载实时应用程序 slexVariantSubsystems.mldatx。在 slrtExplorer 中,您可以:
1 在 Signals 选项卡中查看信号的层次结构显示。您可以看到 Signals available on target computer 下所有可用的信号。选择您要观察的信号并将其添加到 Signals in Instrument 中。

2 在 Parameters 选项卡中调节参数。变体控制项变量 VSS_MODE 的值默认设置为 2,因为这是在编译时指定的值。在开始仿真之前,您可以选择将该值更改为 1。在仿真结束时,此变量将重置回默认值。

3 将数据流式传输到仿真数据检查器。运行实时仿真。打开仿真数据检查器并观察 VSS_MODE == 1 和 VSS_MODE == 2 的不同结果。
注意:检查在仿真运行时是否没有更改变体控制项值 VSS_MODE。如果您在各步之间更改了变体控制项,Simulink 不会发出错误。
当 VSS_MODE == 1 时的输出

当 VSS_MODE == 2 时的输出

另请参阅
Activate Variant During Different Stages of Simulation and Code Generation Workflow
从 Simulink 模型创建并运行实时应用程序 (Simulink Real-Time)
Simulink Real-Time Explorer (Simulink Real-Time)