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_R1、Model1_R2、Model1_R3、Model1_R4、Model2_R1、Model2_R3 和 Model2_R4。
这些线程以采样率 Ts、2*Ts、3*Ts、4*Ts、Ts、3*Ts 和 4*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);