主要内容

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

Simulink Real-Time 上的并发执行

此示例演示了如何应用显式分区来增强由 Simulink® Real-Time™ 生成的实时应用程序的并发执行能力。

Simulink Real-Time 通过隐式划分或显式划分模型来支持并行执行。此示例展示了模型子系统中任务的显式划分与使用 Simulink Real-Time 探查工具执行任务之间的关系。

注意:您也可以使用 Simulink® 日程编辑器对模型进行分区。在 Simulink 编辑器中,点击建模选项卡,然后选择设计 > 进度编辑器。有关详细信息,请参阅Create Partitions from a Rate-Based Model

示例模型 slrt_ex_mds_and_tasks 以 0.001 秒的采样率运行。

要以调整后的 0.01 秒采样率运行模型,请在运行示例前更改采样率。在 MATLAB® 命令行窗口中,输入:

Ts = 0.01;

创建目标对象并连接

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

tg = slrealtime;
connect(tg);

打开、构建并下载模型

顶级模型中的显式划分发生在子系统 1 中。

open_system('slrt_ex_mds_subsystem1');

顶级模型中的显式划分发生在子系统 2 中。

open_system('slrt_ex_mds_subsystem2');

打开模型 slrt_ex_mds_and_tasks。该模型映射到七个线程:Model1_R1Model1_R2Model1_R3Model1_R4Model2_R1Model2_R3Model2_R4

这些线程以采样率 Ts2*Ts3*Ts4*TsTs3*Ts4*Ts 运行。

model = 'slrt_ex_mds_and_tasks';
open_system(model);
modelSTF = getSTFName(tg);
set_param(model,"SystemTargetFile",modelSTF);
set_param(model,'RTWVerbose','off');
set_param('slrt_ex_mds_subsystem1',"SystemTargetFile",modelSTF);
set_param('slrt_ex_mds_subsystem2',"SystemTargetFile",modelSTF);

要应用显式分区,请在 Simulink 编辑器中,于实时选项卡上,点击硬件设置,然后选择求解器 > 配置任务。选择 Tasks and Mapping 节点。

构建、下载并运行模型。

evalc('slbuild(model)');
load(tg,model);

打开 TET 监视器

slrtTETMonitor;

在目标计算机上启动探查器

startProfiler(tg);
start(tg);
pause(2);
stop(tg);

显示配置文件数据

探查数据显示了多核目标计算机上每个线程的执行时间。

profData = tg.getProfilerData;
profData.plot;
Processing data on target computer ...
Transferring data from target computer ...
Processing data on host computer ...
 

在 TET 监视器中查看 TET 信息

在仿真数据检查器中查看 TET 信息

另请参阅

更多信息,请参阅:

关闭模型

bdclose('slrt_ex_mds_subsystem1');
bdclose('slrt_ex_mds_subsystem2');
bdclose(model);