主要内容

评估模型对与模型指定顾问的条件

这个案例展示了如何创建两个简单的检查类型:没有解决的通过/失败检查行动,一个信息检查。一个基本的通过/失败检查发现和报告的检查是审查和检查是否通过或失败。一个信息检查的发现和显示一个描述检查正在审查和任何引用适用的标准。

创建一个sl_customization函数

在您的工作目录中,创建的sl_customization.m文件。注册自定义检查,内sl_customization.m文件,创建一个sl_customization (cm)函数如下所示。这个函数接受一个参数,一个自定义对象。这包括定制管理器对象addModelAdvisorCheckFcn注册自定义检查的方法。这个方法是一个句柄的输入函数(defineModelAdvisorChecks),其中包含两个检查定义函数调用。这些函数包含简单的通过/失败检查的定义和信息检查。

函数sl_customization (cm)% SL_CUSTOMIZATION顾问——模型定制示范。% 2019年版权MathWorks公司。%注册自定义检查cm.addModelAdvisorCheckFcn (@defineModelAdvisorCheck);% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -%定义模型顾问检查% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -函数defineModelAdvisorCheck definePassFailCheck defineInformationCheck

创建检查定义函数通过/失败检查没有修复行动

在本节中,您将创建检查定义函数,检查是否一个常数块值是一个数字或一个字母。如果该值是一个数字,检查会产生一个警告。如果该值是一个字母,检查通过。

这张支票使用DetailStyle类型的回调函数。这种风格,您可以查看结果块中,子系统,或推荐的行动。应用这种风格产生的默认格式,所以您不需要使用ModelAdvisor.FormatTemplate类或其他顾问格式化api模型格式的结果出现在模型顾问。你指定这个风格作为输入setCallbackFcn方法。

创建一个新文件,definePassFailCheck.m,并输入函数所示:

函数definePassFailCheck mdladvRoot = ModelAdvisor.Root;rec = ModelAdvisor.Check (“simplePassFailCheck”);rec.Title =检查固定块使用的;rec.TitleTips = [警告如果常数块值是一个数字;如果““恒块值是一个信”];rec.setCallbackFcn (@simplePassFailCheck“没有”,“DetailStyle”)mdladvRoot.publish (rec,“演示”);% - - - - - -回调函数检查常数块函数simplePassFailCheck(系统,CheckObj) mdladvObj = Simu万博1manbetxlink.ModelAdvisor.getModelAdvisor(系统);all_constant_blk = find_system(系统,“LookUnderMasks”,“所有”,“FollowLinks”,“上”,“BlockType”,“不变”);violationBlks = find_system (all_constant_blk,“正则表达式”,“上”,“价值”,“^”[0 - 9]);如果isempty (violationBlks) ElementResults = ModelAdvisor.ResultDetail;ElementResults。IsInformer = true;ElementResults。描述=的确定常数块的值是一个数字。”;ElementResults。状态=的所有固定块的值是一个信。”;mdladvObj.setCheckResultStatus(真正的);其他的i = 1:元素个数(violationBlks) ElementResults(我)= ModelAdvisor.ResultDetail;结束i = 1:元素个数(ElementResults) ModelAdvisor.ResultDetail.setData (ElementResults(我),“席德”我,violationBlks {});ElementResults(我)。描述=的确定常数块的值是一个数字。”;ElementResults(我)。状态=“下列常数块值数字:“;ElementResults(我)。RecAction =“恒块值更改为一个字母。”;结束mdladvObj.setCheckResultStatus(假);mdladvObj.setActionEnable(真正的);结束CheckObj.setResultDetails (ElementResults);
这张支票识别常数块值数字和产生一个警告,但它不提供修复行动。有关如何创建一个检查的更多信息的定义与修复功能,看看修复一个模型符合您指定的条件与模型顾问

创建一个信息检查的检查定义函数

在本部分中,您创建一个检查函数定义一个信息检查,发现并显示模型配置和校验和信息。

模型信息检查,顾问显示整体检查状态,但不在状态的结果。此外,一个信息检查结果中不包括下列事项:

  • 状态的描述。

  • 推荐的操作时检查没有通过。

  • Subcheck结果。

创建一个新文件,defineInformationCheck.m,并输入函数所示:

函数defineInformationCheck%创建ModelAdvisor。检查对象,并设置属性。rec = ModelAdvisor.Check (“com.mathworks.sample.infocheck”);rec.Title =的配置和校验和信息识别模型;rec.TitleTips =“显示模型配置和校验和信息”;rec.setCallbackFcn (@modelVersionChecksumCallbackUsingFT_Detail“没有”,“DetailStyle”);%发布查看演示组。mdladvRoot = ModelAdvisor.Root;mdladvRoot.publish (rec,“演示”);结束% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -%这个回调函数使用DetailStyle CallbackStyle类型。% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -函数modelVersionChecksumCallbackUsingFT_Detail(系统、CheckObj)模型= bdroot(系统);mdladvObj = 万博1manbetxSimulink.ModelAdvisor.getModelAdvisor(系统);ElementResults = ModelAdvisor.ResultDetail;ElementResults。描述=“显示模型配置和校验和信息”;%如果运行模型顾问一个子系统,注意添加到描述。如果比较字符串(系统、模型)= = false ElementResults。IsInformer = true;ElementResults。状态=“注意:模式顾问正在审查一个子系统,但这些结果是基于根级设置。;ElementResults结束(+ 1)= ModelAdvisor.ResultDetail;结束%如果遇到错误,使用这些值。mdlver =错误,无法检索版本的;mdlauthor =错误,无法检索作者的;mdldate =“错误无法检索日期”;mdlsum =错误,无法获取校验和的;%得到模型配置和校验和信息。试一试mdlver = get_param(模型,“ModelVersion”);mdlauthor = get_param(模型,“LastModifiedBy”);mdldate = get_param(模型,“LastModifiedDate”);mdlsum = 万博1manbetxSimulink.BlockDiagram.getChecksum(模型);mdlsum = [num2str (mdlsum (1))' 'num2str (mdlsum (2))' 'num2str (mdlsum (3))' 'num2str (mdlsum (4)];ElementResults(结束)。IsInformer = true;mdladvObj.setCheckResultStatus(真正的);ElementResults(结束)。IsViolation = true;mdladvObj.setCheckResultStatus(假);结束lbStr =“< br / >”;resultStr = [的模型版本:mdlver lbStr的作者:mdlauthor lbStr的日期:mdldate lbStr的模型校验和:mdlsum];ElementResults(结束)。状态= resultStr;CheckObj.setResultDetails (ElementResults);结束

在模型中运行自定义检查顾问

  1. 在命令窗口中,输入:

    Advisor.Manager.refresh_customizations
  2. 打开模型sldemo_fuelsys通过输入这条命令在MATLAB命令提示符:

    sldemo_fuelsys

  3. 建模选项卡上,选择模型的顾问。系统选择器对话框打开。点击好吧

  4. 在左侧窗格中,选择通过产品>演示>配置和校验和信息识别模型

  5. 点击运行检查

    检查传递和显示信息。

  6. 在左侧窗格中,选择通过产品>演示>检查固定块的使用

  7. 点击运行检查

    检查会产生一个警告,因为几个街区包含数字的值。结果包含这些块的链接。结果显示建议的行动

  8. 遵循建议的行动修复固定块。

另请参阅

||

相关的话题