主要内容

报告Simulink系统中任务和块的执行顺序金宝app

此示例显示如何创建一个报告,该报告显示有关模型执行的所有任务的信息以及在每个任务期间执行块执行的顺序。

如果将每个离散速率视为单独的任务选择参数。导出 - 函数模型和包含某些块的系统,例如异步中断或事件触发的子系统,也将块执行到不同的任务中。看控制和显示执行顺序有关在Simulink®中查看任务信息和块执行顺序的详细信息。金宝app

此图显示了示例模型的示意图slreportgen\u演示\u执行命令以及该模型的任务摘要和块执行顺序。

因为该模型是一个连续系统,主要任务,,其采样时间值为0.在所有型号中,恒定块都分成了持续的任务。

多重窗口是一个非凡的子系统。默认情况下,块执行顺序列表中的非横向子系统条目包含该子系统的块执行顺序列表的链接。或者,您可以配置死刑令将子系统块显示为嵌套列表的报告器选项。

开放式

打开一个模型。本例使用单一任务模型,即在同一任务期间执行除常量块以外的所有块。

模型=“slreportgen_executiondord_example”; 开放式系统(模型);

报告设置

导入报表生成器API软件包,以便您不必使用长,完全限定的类名。

进口mlreportgen.report*进口slreportgen.report*进口slreportgen.finder。*

创建和打开Simulink报告对象。金宝app创建Microsoft®Word,HTML或单文件HTML报告,更改“PDF“到 ”docx“,“html“, 或者 ”html文件“分别地

RPT = SLRREPORTGEN.REPORT.REPORT(型号+“"报告"”,“pdf”); 开放式(rpt);

添加标题页和目录。

titlePage = titlePage(“标题”,模型+“:执行命令报告”,“作者”,“无名氏”);添加(RPT,TitlePage);toc = dableofcontents();添加(RPT,TOC);

关于任务和块执行顺序的报告

查找并循环模型中的所有系统。

finder = systemdiagramfinder(型号);尽管hasNext(查找器)系统=下一个(查找器);

创建一个新章节并添加图表结果。

ch=章节(“标题”,Sprintf(“系统%s”,system.name));添加(CH,系统);

仅当它是块图或非虚拟子系统时,才报告系统的执行顺序。虚拟子系统中的块在父块执行顺序中报告。

Isnonvirtualsubsystem = strcmp(system.type,“金宝appsimulink.subsystem”)...&&strcmp(get_参数(system.Object,“issubsystemvirtual”),“离开”);如果strcmp(系统类型,“金宝appSimulink.方块图”)||Isnonvirtualsubsystem.

创建一个执行令节和死刑令记者。

eoSect=截面(“执行令”); eoRptr=执行命令(系统);

对于子系统,请设置死刑令选项,以便不报告任务详细信息,因为此信息已由父框图执行顺序报告。

如果isNonvirtualSubsystem eoRptr.ShowTaskDetails=false;结束

添加死刑令记者到了执行令章节,并将章节添加到报告中。

添加(eoSect、eoRptr);添加(ch,eoSect);结束

创建一个部分以包含有关系统中每个块的详细信息。包含在内的块死刑令块执行顺序列表链接到本节中相应的块详细信息。

blkSect=截面(“积木”); blkFinder=区块查找器(系统);结果=查找(blkFinder);添加(blkSect,结果);添加(ch、blkSect);

将章节添加到报告中。

添加(rpt,ch);结束

关闭并查看报告

关闭(rpt);rptview(rpt);

查看示例报告

要查看如何报告其他类型模型的执行顺序,请查看此示例中提供的示例报告。

多任务模型

样本模型slreportgen_demo_multitastasking.被配置为将每个离散的示例时间视为单独的任务。块的采样时间In1_1s.,SS1., 和SS2.是1秒,块的采样时间In2_2s是2秒。

该模型还被配置为显示通过采样时间进行颜色编码的块。在1秒采样时间执行的块是红色的,并且在2秒采样时间执行的块是绿色的。多速率块,例如速率转换块积分商块和两个子系统,均为黄色。要以这种方式以编程方式配置模型,请执行以下命令:

设置参数(模型,“SampletimeColors”,“关于”);

此模型的执行顺序报告了两个任务。这扳机任务详细信息表的列报告每个任务的采样时间(以秒为单位)。

模型块由任务分隔。速率转换块在两个任务期间执行,因此它包含在两个列表中。但是,在任务执行期间,仅执行其输出端口D1,并且只在任务期间执行其输入端口D2.

要查看完整的示例报告,请执行以下命令:

rptview(“slreportgen\u demo\u Multitasking\u Report.pdf”)

非过期任务

一些任务,例如由异步中断或事件侦听器创建的任务,不会根据采样时间执行。例如,样本模型slreportgen_demo_initresetterm.使用三个子系统,执行由事件侦听器控制。每个事件侦听器配置为在接收到初始化、重置或终止函数调用事件时执行子系统。

初始化、重置和终止事件在执行顺序中作为单独的任务报告。它们的执行不直接依赖于模型的采样时间,因此在任务表中没有给它们一个订单号。这个sourceblock.列表示定义任务的块。

要查看完整的示例报告,请执行以下命令:

rptview(“slreportgen\u demo\u InitResetTerm\u Report.pdf”)

条件执行

样本模型slreportgen\u演示\u条件执行包含控制模型中某些子系统何时执行的If块和函数调用生成器块。

有条件执行的子系统不在块执行顺序列表中报告,因为它们不一定在每个时间步执行。相反,它们包含在条件执行在块执行顺序列表之后报告的表。

要查看完整的示例报告,请执行以下命令:

rptview(“slreportgen\u demo\u ConditionalExecution\u Report.pdf”)

另见

相关话题