主要内容

生成Simulink和状态流元素的报告万博1manbetx

查找器和报告器减少了在Simulink上编写查找和报告代码所需的时间和复杂性万博1manbetx®模型元素,如图和块,以及状态流®图表和过渡等等。的万博1manbetx仿真软件报告生成器™报表API是DOM API之上的一层。其查找器和报告器基于Simulink和Stateflow find基类。您可以指定在其中查找特定元素的容器,例如子系统中的块或图表中的状态万博1manbetx。查找器对象在相应的查找器结果对象数组中返回其结果。

Simu万博1manbetxlink Report API还包括报告器类,它返回容器的图像。这个图像是模型的顶层。

finder返回的每个结果对象都有一个关联的reporter对象,该对象报告这些结果。reporter对象保存内容并格式化内容,如属性表和数据图。您可以将reporter对象添加到报告中。使用MATLAB®报表API报告定义公共报表元素。看到什么是记者?获取信息。

所有发现者和记者都有以下特点:

  • 默认行为和值

  • 允许重写和自定义其输出

所有的发现者发现,hasNext下一个方法发现方法查找并在结果对象数组中返回所找到的指定类型的每个元素的所有元素。的hasNext下一个方法一次查找并返回一个元素,并用于迭代结果列表。这个hasNext方法检查容器是否至少有一个指定类型的元素。如果容器有一个或多个元素,则hasNext方法将其排队等待下一个方法查找并作为结果对象返回。

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

每个输出类型的默认报告器模板都位于模板库中

matlab\toolbox\shared\slreportgen\rpt\rpt\+slreportgen\+report\@\resources\templates\
的默认模板的路径DiagramReporterPDF输出的
matlab\toolbox\shared\slreportgen\rpt\rpt\+slreportgen\+report\@diagramforter\resources\templates\pdf\default.pdftx
有关编辑模板的详细示例,请参阅的“自定义报表API模板”部分什么是记者?

万博1manbetxSimulink报表API类

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

查找器和结果类

报表API类 描述
slreportgen.finder.AnnotationFinder 查找Simu万博1manbetxlink框图批注。
slreportgen.finder.BlockFinder 在Simulink框图中查找块。万博1manbetx
slreportgen.finder.BlockResult 包含由拦截器对象
slreportgen.finder.ChartDiagramFinder 在模型中查找状态流图。
slreportgen.finder.DataDictionaryFinder 查找Simu万博1manbetxlink数据字典。
slreportgen.finder.DataDictionaryResult 包含由DataDictionary对象
slreportgen.finder.DiagrameElementFinder 查找Simulink块图或状态流程图的元万博1manbetx素。
slreportgen.finder.DiagramElementResult 包含由DiagramElementFinder对象
slreportgen.finder.DiagramFinder 在Simulink模型中查找框图和图表。万博1manbetx
slreportgen.finder.DiagramResult 包含由图解查找器对象
slreportgen.finder.ModelVariableFinder 查找Simulink模型使用的变量。万博1manbetx
slreportgen.finder.ModelVariableResult 包含由找到的模型变量模型变量查找器对象
slreportgen.finder.SignalFinder 查找模型或块使用的信号。
slreportgen.finder.SignalResult 包含一个由SignalFinder对象
slreportgen.finder.StateFinder 在状态流图中查找状态。
slreportgen.finder.StateFlowDiagrameElementFinder 查找状态流程图的元素。
slreportgen.finder.SystemDiagramFinder 在Simulink模型中查找系统框图。万博1manbetx

记者班

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

关于Simulink的报告万博1manbetxDocBlock.

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

关于MATLAB函数块或statflow MATLAB函数。

slreportgen.report.ModelConfiguration 报告模型的活动配置集。
slreportgen.report.ModelVariable 报告一个模型变量。
slreportgen.report.Notes Simulink或状态万博1manbetx流图注释上的报告。
slreportgen.report.Signal 报告一个信号。
slreportgen.report.万博1manbetxSimulinkObjectProperties 创建一个包含Simulink对象属性的表。万博1manbetx
slreportgen.report.StateflowObjectProperties 创建一个包含statflow对象属性的表。
slreportgen.report.SystemHierarchy 创建一个嵌套的Simulink模型或子系统的子系统列表。万博1manbetx
slreportgen.report.SystemIO Simulink系统输万博1manbetx入和输出信号的报告。
slreportgen.report.TestSequence

关于Simulink的报告万博1manbetx测试序列

slreportgen.report.TruthTable 报告Simulink真值表万博1manbetx块或Stateflow真值表对象。

查找并报告模型中的块

控件中的所有Simulink块如何查找和报告万博1manbetxvdp使用拦截器班生成的HTML报告包含默认信息,并对每个块使用默认格式。

  1. 导入Report API包,它允许您使用类名而不包括它们的包名。例如,你可以用拦截器而不是slreportgen.finder.BlockFinder. 除了导入Simulink报表API基类外,还导入MATLA万博1manbetxB报表API基类。一个典型的报告包括一个标题页、目录、章节和章节,您可以将其作为报告器类包含在MATLAB报告API中。

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

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

    rpt=slreportgen.report.report('vdp_model','html');公开(rpt)
  4. 添加章节并指定其标题。

    ch=章节(“Simulink vdp模型中的块万博1manbetx”);
  5. 使用拦截器类创建查找程序。在这种情况下拦截器查找模型中的所有块。使用发现方法来查找查找器指定的块。

    仪= BlockFinder (model_name);结果=找到(仪);
  6. 循环使用find方法的结果,为每个块创建一个部分,并将块特性表添加到该部分。然后,将每个部分添加到章节中。添加所有块后,将章节添加到报告中。

    for result = results sect = Section('Title',result. name);Append (sect,result) Append (ch,sect) end Append (rpt,ch);
  7. 关闭报表和模型,并查看报表。

    关闭(rpt);关闭系统(型号名称);rptview(rpt);

完整的程序是

导入slreportgen.finder.*导入slreportgen.report.*导入mlreportgen.report.*model_name='vdp';加载系统(型号名称);rpt=slreportgen.report.report('vdp_model','html');打开(rpt)ch=章节(“Simulink vdp模型中的块”);finder=BlockFinder(型号名称);结果=查找(查找器);对于万博1manbetxresult=results sect=Section('Title',result.Name);追加(sect,result)追加(ch,sect);末端附加(rpt,ch);关闭(rpt)关闭系统(型号名称)rpt视图(rpt)

结果报告前两个区块的章节标题、章节标题和属性表如下所示。

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

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

要查找所有块,请使用拦截器这个如果语句显示了如何测试MATLAB函数块。使用MATLABFunction记者报道MATLAB函数块的细节。的其他的语句显示了如何阻塞除MATLAB函数块使用拦截器发现方法结果。

blkfinder=BlockFinder(型号名称);blks=find(blkfinder);如果slreportgen.utils.isMATLABFunction(blks(i).Object) rptr = MATLABFunction(blks(i).Object);秒=节(黑色(i) . name);append(sec,rptr) else sec = Section(blks(i).Name);追加(sec,黑色(我)追加(ch, sec)
blkfinder=BlockFinder(型号名称);blks=find(blkfinder);

完整的程序是

导入slreportgen.report.*导入slreportgen.finder.*导入mlreportgen.report.*model_name='sldemo_radar_eml';load_system(model_name)rpt=slreportgen.report.report('radar','pdf');open(rpt)blkfinder=BlockFinder(model_name);blks=find(blkfinder);ch=Chapter('sldemo_radar_eml model中的块');i=1:长度(blks)如果slreportgen.utils.isMATLABFunction(blks(i).Object)rptr=MATLABFunction(blks(i).Object);sec=Section(blks(i).Name);append(sec,rptr)append(ch,sec)append(ch)否则sec=Section(blks(i).Name);append(sec,blks(i))append(ch,sec)end append(rpt)close(rpt)close_系统(model_Name)rptview(rpt)

一个例子的信息报告MATLAB函数块的MATLABFunction记者是

的信息报告的一个例子发现的方法拦截器

查找并报告Stateflow元素

此示例描述如何查找和报告状态流状态、转换和连接control_logic海图SLU燃料系统模型

这部分代码使用国家发现者及其发现方法查找和报告图表中的状态。它循环查找到的状态数组,并将每个状态添加到章节中。

stFinder=状态查找器(子系统);状态=查找(stFinder);对于州=州附加(章节,州)结束附加(rpt,章节)

要报告转换,请使用StateflowDiagramElementFinder及其发现方法。若要显示比默认宽度更窄的属性表,请自定义输出。首先,获得记者的结果。要设置宽度,请使用桌面宽度记者的财产。

章节=章节(“标题”,“过渡”);trFinder=StateFlowDiagrameElementFinder。。。('Container',subsys,'Types','transition');转换=查找(trFinder);对于transition=transitions rptr=transition.getReporter;rptr.PropertyTable.TableWidth='3in';附加(章节,rptr)结束附加(rpt,章节)

完整的程序是

导入mlreportgen.report.*导入slreportgen.report.*导入slreportgen.finder.*model_name='sldemo_fuelsys';加载系统(型号名称);subsys=strcat(型号名称,“/燃油率控制/控制逻辑”);rpt=slreportgen.report.report('output','pdf');open(rpt)tp=标题页(‘标题’,…‘sldemo_fuelsys的控制逻辑图’);附加(rpt,tp)附加(rpt,目录);章节=章节(“标题”,“州”);stFinder=状态查找器(子系统);状态=查找(stFinder);州=州附加(章节,州)结束附加(rpt,章节)章节=章节(“标题”,“过渡”);trFinder=StateFlowDiagrameElementFinder。。。('Container',subsys,'Types','transition');转换=查找(trFinder);对于transition=transitions rptr=transition.getReporter;rptr.PropertyTable.TableWidth='3in';附加(章,rptr)结束附加(章,rpt)关闭(rpt)关闭系统(型号名称)rptview(rpt)

另见

相关话题