查找器和报告器减少了在Simulink上编写查找和报告代码所需的时间和复杂性金宝app®模型元素,例如图和块,以及在statflow上®图表和过渡等等。的金宝app仿真软件报告生成器™报告API是DOM API之上的一层。它的查找器和报告器基于Simulink和statflow查找基类。金宝app您可以指定在其中查找特定元素的容器,例如子系统中的块或图表中的状态。查找器对象在相应的查找器结果对象数组中返回其结果。
Simu金宝applink Report API还包括报告器类,它返回容器的图像。这个图像是模型的顶层。
查找程序返回的每个结果对象都有一个相关的报告对象,报告这些结果。报告对象保存内容并格式化内容,例如属性表和数据图。您可以将报表对象添加到报表中。使用MATLAB®报表API报告定义公共报表元素。看到什么是记者?获取信息。
所有发现者和记者都有以下特点:
默认行为和值
允许重写和自定义其输出
所有的发现者找到
,hasNext
,下一个
方法。的找到
方法查找并在结果对象数组中返回所找到的指定类型的每个元素的所有元素。的hasNext
和下一个
方法每次查找并返回一个元素,用于遍历结果列表。的hasNext
方法检查容器是否至少有一个指定类型的元素。如果容器有一个或多个元素,则hasNext
方法将其排队下一个
方法查找并作为结果对象返回。
所有记者都有预定义的模板。每个报告器的模板定义了其格式、布局和内容孔。您不需要更改模板或指定任何格式、布局或孔,除非您想要定制报表。您可以通过复制和编辑默认模板或使用新模板来定制报表。编辑默认模板的副本为您提供了自定义模板所需的起点和结构。使用新模板可以让您从一个空白文件开始完全定义模板。要更改报告内容的顺序,请重新排列模板中的孔。查找器不使用模板。定制报告器类的另一种方法是子类化它。
每种输出类型的默认报告器模板位于模板库中,模板库位于
matlab工具箱\ \共享\ slreportgen \ rpt \ rpt \ + slreportgen \ +报告\ @ <记者> \ \ templates \资源输出> <
DiagramReporter
PDF输出的matlab工具箱\ \共享\ slreportgen \ rpt \ rpt \ + slreportgen \ +报告\ \ \ pdf模板\ default.pdftx @DiagramReporter \资源
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 |
控件中的所有Simulink块如何查找和报告金宝appslrgex_vdp
模型使用BlockFinder
类。生成的HTML报告包含默认信息,并对每个块使用默认格式。
导入Report API包,它允许您使用类名而不包括它们的包名。例如,你可以用BlockFinder
而不是slreportgen.finder.BlockFinder
.除了导入Simulink Report API基类外,还导金宝app入MATLAB Report API基类。典型的报告包括标题页、目录、章节和节,您可以在MATLAB报告API中将其作为报告类包含。
进口slreportgen.finder。*进口slreportgen.report。*进口mlreportgen.report。*
加载slrgex_vdp
模型。
model_name =“slrgex_vdp”;load_system (model_name)
创建容器对象以保存报表并打开报表。在这种情况下,输出报告以压缩格式保存slrgex_vdp_model.htmx
HTML报告。您可以使用任何您想要的输出名称。如果使用相同的输出文件名多次运行报表生成器,则会覆盖输出文件。要在报表生成器金宝app程序中使用Simulink Report API查找器和报告器,必须使用完全限定名来创建容器对象。
rpt = slreportgen.report.Report (“slrgex_vdp_model”,“html”);打开(rpt)
添加一个章节并指定其标题。
ch =章(' block in slrgex_vdp model');
使用BlockFinder
类创建查找程序。在这种情况下BlockFinder
查找模型中的所有块。使用找到
方法查找由查找程序指定的块。
仪= BlockFinder (model_name);结果=找到(仪);
循环find方法的结果并为每个块创建一个节,并将块属性表添加到该节中。然后,将每个章节添加到章节中。在添加了所有块之后,将章节添加到报告中。
为result = results Section = Section(“标题”, result.Name);append(教派,结果)追加(ch,教派)结束追加(rpt, ch);
关闭报表和模型,并查看报表。
关闭(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 =' block in slrgex_vdp model');仪= BlockFinder (model_name);结果=找到(仪);为result = results Section = Section(“标题”, result.Name);追加(教派,结果)追加(ch,教派);结束追加(rpt, ch);关上(rpt) close_system (model_name) rptview (rpt)
结果报告的前两个块显示了章节标题、节标题和属性表。
控件中的所有块创建一个PDF报告生成器slrgex_radar_eml
模型。
要查找所有块,请使用BlockFinder
.的如果
语句显示了如何进行测试MATLAB函数块。使用MATLABFunction
记者报道MATLAB函数块的细节。的其他的
语句显示了如何阻塞除MATLAB函数块使用BlockFinder
找到
方法的结果。
blkfinder = BlockFinder (model_name);黑色=找到(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 (model_name);黑色=找到(blkfinder);
完整的程序是
进口slreportgen.report。*进口slreportgen.finder。*进口mlreportgen.report。* model_name = 'slrgex_radar_eml';load_system(model_name) rpt = slreportgen.report.Report('radar','pdf');open(rpt) blkfinder = BlockFinder(model_name);黑色=找到(blkfinder);ch =章('块在slrgex_radar_eml模型');for i=1:length(blks) if slreportgen.utils.isMATLABFunction(blks(i).Object) rptr = MATLABFunction(blks(i).Object);秒=节(黑色(i) . name);append(sec,rptr) 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
是:
本示例描述如何查找和报告statflow状态、转换和连接。它报道了control_logic
图表的slrgex_fuelsys_fuel_rate_control
模型。
这部分代码使用了StateFinder
对象及其找到
方法查找并报告图表中的状态。它循环遍历已找到的状态数组,并将每个状态添加到章节中。
stFinder = StateFinder(中高);州=找到(stFinder);为State = State附加(章,状态)结束append (rpt)章
要报告转换,请使用StateflowDiagramElementFinder
对象及其找到
方法。若要显示比默认宽度更窄的属性表,请自定义输出。首先,获得记者的结果。要设置宽度,请使用TableWidth
记者的财产。
章=章(“标题”,“转换”);trFinder = StateflowDiagramElementFinder...(“容器”、中高“类型”,“过渡”);转换=找到(trFinder);为rtr = 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”);open(rpt) tp = TitlePage(“标题”,...“slrgex_fuelsys_fuel_rate_control控制逻辑图”);追加(rpt, tp)追加(rpt, TableOfContents);章=章(“标题”,“州”);stFinder = StateFinder(中高);州=找到(stFinder);为State = State附加(章,状态)结束append(rpt,章)“标题”,“转换”);trFinder = StateflowDiagramElementFinder...(“容器”、中高“类型”,“过渡”);转换=找到(trFinder);为rtr = transition. getreporter;rptr.PropertyTable.TableWidth =“3”;追加(章,rptr)结束关闭(rpt) close_system(model_name) rptview(rpt)