主要内容

Simulink和状态流元素的报告生成金宝app

查找器和报告器减少了编写在Simulink上查找和报告的代码所需的时间和复杂性金宝app®模型元素,例如图和块,以及Stateflow®图表和过渡等等。的金宝appSimulink Report Generator™报表API是DOM API之上的一层。它的查找器和报告器基于Simulink和Stateflow查找基类。金宝app您指定要在其中查找特定元素的容器,例如子系统中的块或图表中的状态。查找器对象以相应的查找器结果对象数组返回它们的结果。

Simu金宝applink Report API还包括报告器类,它们返回容器的图像。此图像是模型的顶层。

查找器返回的每个结果对象都有一个关联的报告器对象,该对象报告那些结果。报告器对象保存内容并对内容进行格式化,例如属性表和数据图。将报表对象添加到报表中。使用MATLAB®报告API报告器用于定义通用的报告元素。看到记者是什么?获取信息。

所有查找器和报告器都具有以下特点:

  • 默认行为和值

  • 允许重写和定制它们的输出

所有发现者都有找到hasNext,下一个方法。的找到方法查找并在结果对象数组中返回所找到的每个指定类型元素的所有元素。的hasNext而且下一个方法每次查找并返回一个元素,并用于遍历结果列表。的hasNext方法检查容器是否至少有一个指定类型的元素。如果容器具有一个或多个元素,则hasNext方法对其进行队列下一个方法来查找并作为结果对象返回。

所有记者都有预定义的模板。每个报告的模板定义了它的格式、布局和内容孔。除非需要定制报表,否则不需要更改模板或指定任何格式、布局或孔。您可以通过复制和编辑报表的默认模板或使用新模板来定制报表。编辑默认模板的副本可以为定制模板提供一个起点和结构。使用新模板可以让您从一个空白文件开始完全定义模板。若要更改报表内容的顺序,请重新排列模板中的孔。查找器不使用模板。定制报告器类的另一种方法是子类化它。

每种输出类型的默认报告模板都在模板库中,该模板库位于

matlab工具箱\ \共享\ slreportgen \ rpt \ rpt \ + slreportgen \ +报告\ @ <记者> \ \ templates \资源输出> <
类的默认模板的路径DiagramReporterPDF格式的输出
matlab工具箱\ \共享\ slreportgen \ rpt \ rpt \ + slreportgen \ +报告\ \ \ pdf模板\ default.pdftx @DiagramReporter \资源
有关编辑模板的详细示例,请参阅的“自定义报表API模板”部分记者是什么?

金宝appSimulink报告API类

Simu金宝applink Report API提供了这些查找器、结果和报告器类。若要在报表生成器程序中使用这些类,必须创建类型的容器slreportgen.report.Report保存报告。

查找器和结果类

报表API类 描述
slreportgen.finder.AnnotationFinder 查找Simu金宝applink框图注释。
slreportgen.finder.BlockFinder 在Simulink块图中查找块。金宝app
slreportgen.finder.BlockResult 控件找到的块BlockFinder对象。
slreportgen.finder.ChartDiagramFinder 在模型中查找状态流程图。
slreportgen.finder.DataDictionaryFinder 查找Simu金宝applink数据字典。
slreportgen.finder.DataDictionaryResult 控件找到的数据字典DataDictionary对象。
slreportgen.finder.DiagramElementFinder 查找Simulink框图或状态流程图的元金宝app素。
slreportgen.finder.DiagramElementResult 控件找到的图元素DiagramElementFinder对象。
slreportgen.finder.DiagramFinder 在Simulink模型中查找框图和图表。金宝app
slreportgen.finder.DiagramResult 控件找到的图表DiagramFinder对象。
slreportgen.finder.ModelVariableFinder 查找Simulink模型使用的变量。金宝app
slreportgen.finder.ModelVariableResult 类找到的模型变量ModelVariableFinder对象。
slreportgen.finder.SignalFinder 查找模型或块使用的信号。
slreportgen.finder.SignalResult 方法找到的信号SignalFinder对象。
slreportgen.finder.StateFinder 在状态流图中查找状态。
slreportgen.finder.StateflowDiagramElementFinder 查找状态流程图的元素。
slreportgen.finder.SystemDiagramFinder 在Simulink模型中查找系统框图。金宝app

记者类

报表API类 描述
slreportgen.report.Bus 关于由Simulink块选择或创建的总线的报告。金宝app
slreportgen.report.BusObject 报告金宝app仿真软件。公共汽车模型使用的对象。
slreportgen.report.CFunction 报告C函数块。
slreportgen.report.DataDictionary 关于Simulink数据字金宝app典的报告。
slreportgen.report.Diagram 创建Simulink框图或状态流程图的快照。金宝app
slreportgen.report.DocBlock

Simulink报表金宝appDocBlock

slreportgen.report.ElementDiagram 报告元素图快照和标题
slreportgen.report.ExecutionOrder 报告模型或非虚拟子系统的任务和每个任务中的块,按执行顺序排序。
slreportgen.report.LookupTable 关于Simulink查找表块的断点和输出点的报告。金宝app
slreportgen.report.MATLABFunction

报告MATLAB函数block或Stateflow MATLAB函数。

slreportgen.report.ModelConfiguration 报告模型的活动配置集。
slreportgen.report.ModelVariable 报告模型变量。
slreportgen.report.Notes Simulink或状态金宝app流图注释的报告。
slreportgen.report.Signal 信号报告。
slreportgen.report.金宝appSimulinkObjectProperties 创建Simulink对象的属性表。金宝app
slreportgen.report.StateflowObjectProperties 创建状态流对象的属性表。
slreportgen.report.SystemHierarchy 创建Simulink模型或子系统的子系统的嵌套列表。金宝app
slreportgen.report.SystemIO Simulink系统输金宝app入输出信号报告。
slreportgen.report.TestSequence

Simulink报表金宝app测试序列块。

slreportgen.report.TruthTable 关于Simulink真值表金宝app块或statflow真值表对象的报告。

查找并报告模型中的块

对象中的所有Simulink块进行查找和报告金宝appslrgex_vdp使用BlockFinder类。生成的HTML报告包含默认信息,并对每个块使用默认格式。

  1. 导入Report API包,它允许您使用类名而不包括它们的包名。例如,你可以使用BlockFinder而不是slreportgen.finder.BlockFinder.除了导入Simulink Report API基类外,还需金宝app要导入MATLAB Report API基类。典型的报表包括标题页、目录、章节和节,这些都是作为报表类包含在MATLAB report API中的。

    进口slreportgen.finder。*进口slreportgen.report。*进口mlreportgen.report。*
  2. 加载slrgex_vdp模型。

    model_name =“slrgex_vdp”;load_system (model_name)
  3. 创建容器对象以保存报表并打开报表。在这种情况下,输出报告以压缩格式保存slrgex_vdp_model.htmxHTML报告。您可以使用任何您想要的输出名称。如果使用相同的输出文件名多次运行报表生成器,则输出文件将被覆盖。若要在报表生成金宝app器程序中使用Simulink Report API查找器和报告器,必须使用完全限定名来创建容器对象。

    rpt = slreportgen.report.Report(“slrgex_vdp_model”“html”);打开(rpt)
  4. 添加一个章节并指定它的标题。

    ch =章节(“slrgex_vdp模型中的块”);
  5. 使用BlockFinder类来创建查找器。在这种情况下,BlockFinder找到模型中的所有块。使用找到方法查找查找程序指定的块。

    查找器= BlockFinder(model_name);结果= find(finder);
  6. 遍历find方法的结果,为每个块创建一个节,并将块属性表添加到节中。然后,将每个部分添加到章节中。添加完所有块后,将章节添加到报告中。

    Section = Section(“标题”, result.Name);append(教派,结果)追加(ch,教派)结束追加(rpt, ch);
  7. 关闭报表和模型,并查看报表。

    关闭(rpt);close_system (model_name);rptview (rpt);

完整的程序是

进口slreportgen.finder。*进口slreportgen.report。*进口mlreportgen.report。*model_name =“slrgex_vdp”;load_system (model_name);rpt = slreportgen.report.Report(“slrgex_vdp_model”“html”);open(rpt) ch = Chapter(“slrgex_vdp模型中的块”);查找器= BlockFinder(model_name);结果= find(finder);Section = Section(“标题”, result.Name);追加(教派,结果)追加(ch,教派);结束追加(rpt, ch);Close (rpt) close_system(model_name) rptview(rpt)

结果报告的前两个块的章节标题、节标题和属性表显示出来。

针对不同的块类型使用特定的查找器和报告器

创建一个PDF报告生成器,用于查找slrgex_radar_eml模型。

要查找所有块,请使用BlockFinder.的如果语句说明如何进行测试MATLAB函数块。使用MATLABFunction记者报道MATLAB函数块的细节。的其他的语句显示块如何除MATLAB函数块使用BlockFinder找到方法的结果。

blkfinder = BlockFinder(model_name);BLKS = find(blkfinder);if slreportgen.utils.isMATLABFunction(blks(i).Object) rptr = MATLABFunction(blks(i).Object);sec = Section(blks(i).Name);追加(sec,rptr)追加(ch,sec) else sec = Section(blks(i).Name);追加(sec,黑色(我)追加(ch, sec)
blkfinder = BlockFinder(model_name);BLKS = find(blkfinder);

完整的程序是

进口slreportgen.report。*导入slreportgen.finder。导入mlreportgen.report。* model_name = 'slrgex_radar_eml';load_system(model_name) rpt = slreportgen.report.Report('雷达','pdf');open(rpt) blkfinder = BlockFinder(model_name);BLKS = find(blkfinder);ch = Chapter(' block in slrgex_radar_eml Model');如果slreportgen.utils.isMATLABFunction(blks(i).Object) rptr = MATLABFunction(blks(i).Object);sec = Section(blks(i).Name);追加(sec,rptr)追加(ch,sec) else sec = Section(blks(i).Name); append(sec,blks(i)) append(ch,sec) end end append(rpt,ch) close(rpt) close_system(model_name) rptview(rpt)

的信息报告示例MATLAB函数街区MATLABFunction记者:

所报告的信息的示例找到方法BlockFinder是:

查找并报告状态流元素

此示例描述如何查找和报告状态流状态、转换和连接。它报道了control_logic图表slrgex_fuelsys_fuel_rate_control模型。

这部分代码使用了StateFinder对象及其找到方法查找并报告图表中的状态。它循环遍历已找到的状态数组,并将每个状态添加到章节中。

stFinder = statfinder (subsys);state = find(stFinder);状态=状态追加(章节,状态)结束append (rpt)章

要报告转换,请使用StateflowDiagramElementFinder对象及其找到方法。若要显示比默认宽度更窄的属性表,请自定义输出。首先,获取结果的报告器。要设置宽度,请使用TableWidth记者的财产。

章节=章节“标题”“转换”);trFinder = StateflowDiagramElementFinder...“容器”、中高“类型”“过渡”);transition = find(trFinder);rptr = transition. getreporter;rptr.PropertyTable.TableWidth =“3”;追加(章,rptr)结束append (rpt)章

完整的程序如下

进口mlreportgen.report。*进口slreportgen.report。*进口slreportgen.finder。*model_name =“slrgex_fuelsys_fuel_rate_control”;load_system (model_name);中高=“slrgex_fuelsys_fuel_rate_control / control_logic”;rpt = slreportgen.report.Report(“输出”“pdf”);打开(rpt) tp = TitlePage(“标题”...slrgex_fuelsys_fuel_rate_control控制逻辑图);追加(rpt, tp)追加(rpt, TableOfContents);章节=章节“标题”“州”);stFinder = statfinder (subsys);state = find(stFinder);状态=状态追加(章节,状态)结束append(rpt,chapter) chapter = chapter (“标题”“转换”);trFinder = StateflowDiagramElementFinder...“容器”、中高“类型”“过渡”);transition = find(trFinder);rptr = transition. getreporter;rptr.PropertyTable.TableWidth =“3”;追加(章,rptr)结束追加(rpt,章节)关闭(rpt) close_system(model_name) rptview(rpt)

另请参阅

相关的话题