主要内容

ModelAdvisor.ResultDetailclass

包:ModelAdvisor

定义检查结果的细节

自从R2018b

描述

使用的对象ModelAdvisor.ResultDetail类检查您的自定义编写算法提供的细节检查结果。对于模型中只运行顾问的检查,使用setResultDetails将这些结果与方法ModelAdvisor.Check对象和指定的DetailStyle的回调风格ModelAdvisor.Check.setCallbackFcn函数。

属性

全部展开

金宝app动态仿真模块标识符(SID)为每个块的每个信号或信号处理违反您的自定义检查,指定为一个字符串。

数据类型:字符

数据类型,指定为ModelAdvisor.ResultDetailType枚举类型表示的位置检查违反:

  • SID——检查违反在一块

  • 信号——检查违反一个信号

数据类型:枚举

检查结果是否没有违规,指定为真正的。如果IsInformer = true,然后IsViolation = false

数据类型:逻辑

检查结果是否有违规行为,指定为真正的。如果IsViolation = true,然后IsInformer = false

数据类型:逻辑

对检查结果的描述,指定为一个字符串。

数据类型:字符

的检查结果,指定为一个字符串。

数据类型:字符

关于检查结果的额外信息,指定为一个字符串。

数据类型:字符

状态消息模型中出现的顾问,指定为一个字符串。

数据类型:字符

建议行动修复检查,指定为一个字符串。

数据类型:字符

指定为严重的检查结果“通过”,“失败”,或“警告”

数据类型:字符

方法

setData 把块标识符或信号处理ModelAdvisor.ResultDetail对象

例子

全部折叠

创建一个定制模式顾问检查检查是否阻止块下方出现的名字。

获得一个模型尝试模型顾问检查。

openExample (“AdvisorCustomizationExample”)

模型编辑时间检查违规行为

保存模型到你的工作目录。关闭模式。

注册编辑时间检查,创建一个sl_customization函数。的sl_customization函数接受一个参数,定制管理器对象。注册自定义检查使用addModelAdvisorCheckFcn方法。这个方法是一个句柄的输入检查定义函数。对于这个示例,defineDetailStyleCheck是检查定义函数。创建sl_customization功能并将其保存到您的工作目录中。

函数sl_customization (cm) cm.addModelAdvisorCheckFcn (@defineDetailStyleCheck);

创建检查定义函数。对于这个示例,创建defineDetailStyleCheck函数,将下面的代码复制到它。保存功能到你的工作目录。检查定义函数包含ModelAdvisor.CheckModelAdvisor.Action对象定义检查操作和修复。为更多的细节在这些方面的代码,看一看修复一个模型符合您指定的条件与模型顾问

defineDetailStyleCheck函数包含一个DetailStyleCallback回调函数。返回街区的名字没有出现在块中,violationBlks,DetailStyleCallback函数使用find_system函数。

violationBlks是空的,代码创建一个ModelAdvisor.ResultDetail对象,ElementResultsElementResults指定的信息通过检查模型中出现的顾问。

find_system函数返回一个列表的街区,违反了检查,ElementResults是一个数组的ModelAdvisor.Results对象。该数组包含为每个块,违反了检查一个对象。每个对象包含违反信息块模型中出现的顾问。

函数defineDetailStyleCheck%创建ModelAdvisor。检查对象,并设置属性。rec = ModelAdvisor.Check (“com.mathworks.sample.detailStyle”);rec.Title =“检查块的名字是否出现以下块”;rec.TitleTips =“检查块的位置名称”;rec.setCallbackFcn (@DetailStyleCallback“没有”,“DetailStyle”);%创建ModelAdvisor。操作对象制定修复操作。myAction = ModelAdvisor.Action;myAction.setCallbackFcn (@ActionCB);myAction.Name =“使块名称出现低于块”;myAction.Description =“点击下面的按钮将块名称块”;rec.setAction (myAction);%发布查看演示组。mdladvRoot = ModelAdvisor.Root;mdladvRoot.publish (rec,“演示”);结束% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -%这个回调函数使用DetailStyle CallbackStyle类型。% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -函数CheckObj DetailStyleCallback(系统)%得到模型顾问对象mdladvObj = 金宝appSimulink.ModelAdvisor.getModelAdvisor(系统);%找到所有阻塞的名字没有出现下面violationBlks = find_system(系统,“类型”,“块”,“NamePlacement”,“替代”,“ShowName”,“上”);如果isempty (violationBlks) ElementResults = ModelAdvisor.ResultDetail;ElementResults。IsInformer= true; ElementResults.Description =“识别模块,下面显示的名字不是块。”;ElementResults。状态=所有块名称显示下面的块。;其他的i = 1:元素个数(violationBlks) ElementResults(我)= ModelAdvisor.ResultDetail;结束i = 1:元素个数(ElementResults) ModelAdvisor.ResultDetail.setData (ElementResults(我),“席德”我,violationBlks {});ElementResults(我)。描述=“识别模块,下面显示的名字不是块。”;ElementResults(我)。状态=下面的模块名称,不显示以下模块:“;ElementResults(我)。RecAction =“改变位置,这样下面的块的名字是块。”;ElementResults(我)。ViolationType =“警告”;结束mdladvObj.setActionEnable(真正的);结束CheckObj.setResultDetails (ElementResults);结束% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -%这个动作回调函数改变块的位置名称。% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -函数结果= ActionCB (taskObj) mdladvObj = taskObj.MAObj;checkObj = taskObj.Check;resultDetailObjs = checkObj.ResultDetails;i = 1:元素个数(resultDetailObjs)%为他们每个人采取行动块= Sim金宝appulink.ID.getHandle (resultDetailObjs(我). data);set_param(块,“NamePlacement”,“正常”);结束结果= ModelAdvisor.Text (“改变了位置,这样下面的块的名字是块。”);mdladvObj.setActionEnable(假);结束

更新缓存刷新模型顾问与新检查路径。

Advisor.Manager.refresh_customizations

打开AdvisorCustomizationExample模型。

通过单击打开模型顾问建模选项卡并选择模型的顾问

在左侧窗格中,选择通过产品>演示>检查是否块下面的名字出现并点击运行检查

为了解决警告,点击修复

创建一个自定义编辑时间检查检查是否信号连接外港块有标签。

获得一个模型尝试模型顾问检查。

openExample (“AdvisorCustomizationExample”)

模型编辑时间检查违规行为

保存模型到你的工作目录。关闭模式。

注册自定义编辑时间检查,创建一个sl_customization功能并将其保存到您的工作目录中。

函数sl_customization (cm) cm.addModelAdvisorCheckFcn (@defineCheck);

创建检查定义函数。内部的功能,创建一个ModelAdvisor.Check对象和指定检查ID作为输入参数。然后,指定ModelAdvisor.Check标题CallbackHandle属性。的CallbackHandle属性是您创建的类的名称定义编辑时间检查。对于这个示例,MyEditTimeChecks包名和吗SignalLabel类名。然后,发布检查模型中的一个新文件夹的顾问。对于这个示例,该文件夹的名称演示:编辑时间检查。对于这个示例,创建一个defineCheck功能,包括下面的代码。保存defineCheck函数来你的工作文件夹。

函数defineCheck rec = ModelAdvisor.Check (“advisor.edittimecheck.SignalLabel”);rec.Title =检查信号标签如果他们传播这些标签的;rec.CallbackHandle =“MyEditTimeChecks.SignalLabels”;mdladvRoot = ModelAdvisor.Root;mdladvRoot.publish (rec,“演示:编辑时间检查”);

创建一个类,它来源于ModelAdvisor.EdittimeCheck抽象基类。对于这个示例,创建一个类文件命名SignalLabel.m。将下面的代码复制到SignalLabel.m文件并保存它+ MyEditTimeChecks文件夹中。更多信息的代码ModelAdvisor.EdittimeCheck类,看到定义编辑时间检查符合您指定的条件与模型顾问

blockDiscovered方法包含一个算法,定义了检查违规行为。注意,与自定义检查仅出现在模型中顾问,这个算法不包含find_system函数。的blockDiscovered方法以块处理作为输入和遍历模型,所以你不需要的find_system函数自定义编辑时间检查。

对于每个模型元素,违反了检查,代码创建了一个ModelAdvisor.ResultDetail对象。对于这个示例,因为违反信号,检查必须使用参数对行处理的块,LineHandles找到信号与侵犯。具体来说,连接的信号外港块,该算法检查是否的名字信号参数有一个值。然后,因为违反是一个信号,该算法强调信号通过创建一个违反对象类型属性值设置为信号

classdefSignalLabels < ModelAdvisor.EdittimeCheck方法函数obj = SignalLabels (checkId) obj = obj@ModelAdvisor.EdittimeCheck (checkId);obj。traversalType = edittimecheck.TraversalTypes.BLKITER;结束函数违反= blockDiscovered (obj,黑色)违反= [];港口= get_param(黑色,“端口”);lh = get_param(黑色,“LineHandles”);如果比较字符串(get_param(黑色,“BlockType”),“输出港”)j = 1:港口(1)如果lh.Inport (j) ~ = 1%失败案例:没有连接allsources = get_param (lh.Inport (j),“SrcPortHandle”);hiliteHandle = get_param (lh.Inport (j),“DstPortHandle”);如果(isempty (allsources) ~ = 0) | | (isempty(找到(allsources = = 1,1)) ~ = 0) lh_obj = get_param (lh.Inport (j),“对象”);如果isempty (lh_obj.Name)如果比较字符串(lh_obj.signalPropagation“关闭”)= = 1 allsources_parent = get_param (allsources,“父”);如果比较字符串(get_param (allsources_parent,“BlockType”),“尺寸”)buscreator_outputs = get_param (allsources_parent,“IsBusElementPort”);其他的buscreator_outputs =“关闭”;结束如果~ strcmp (buscreator_outputs,“上”)违反= ModelAdvisor.ResultDetail;ModelAdvisor.ResultDetail.setData(违反,“信号”,hiliteHandle);侵犯。描述=“这应该有一个标签的信号。”;侵犯。CheckID = obj.checkId;侵犯。Title =信号标签缺失的;结束结束结束结束结束结束结束结束结束结束

更新缓存刷新模型顾问与新检查的道路上。

Advisor.Manager.refresh_customizations

打开AdvisorCustomizationExample模型。

通过单击打开模型顾问配置编辑器建模选项卡并选择模型的顾问>配置编辑器

创建一个自定义配置,由自定义编辑时间检查除了通过删除每一个文件夹演示:编辑时间检查文件夹中。

保存配置,my_config.json。当提示这个配置设置为默认值,点击没有

关闭模型顾问配置编辑器。

设置自定义配置my_config.json文件通过单击建模选项卡并选择模型的顾问>编辑时间检查。在配置参数对话框中,指定配置文件的路径模型顾问配置文件参数。

通过选择打开编辑时间检查编辑时间检查参数。关闭模型配置参数对话框。

查看编辑时间警告,点击用黄色突出显示的信号。信号连接外港块产生一个警告,因为它没有一个标签。

版本历史

介绍了R2018b