主要内容

本页采用了机器翻译。点击此处可查看英文原文。

从自定义检查中排除模块

此示例展示了如何从自定义检查中排除模块。为了节省模型开发和验证的时间,您可以在模型顾问分析期间从自定义检查中排除单个模块。要从 Simulink® 块和 Stateflow® 图中排除自定义检查,请在检查定义文件中使用 ModelAdvisor.Check.supportExclusionSimulink.ModelAdvisor.filterResultWithExclusion 函数。

更新检查定义文件

  1. 打开包含此示例支持文件的示例:

    openExample('slcheck/CreateAndDeployAModelAdvisorCustomConfigurationExample')

  2. 从工作目录中删除除 AdvisorCustomizationExample 模型和 defineDetailStyleCheck.msl_customization.m 文件之外的所有支持文件。

  3. 打开 sl_customization 文件并按如下方式修改:

    function sl_customization(cm)
    % SL_CUSTOMIZATION - Model Advisor customization demonstration.
    
    % Copyright 2019 The MathWorks, Inc.
    
    % register custom checks 
    cm.addModelAdvisorCheckFcn(@defineModelAdvisorChecks);
    
    % -----------------------------
    % defines Model Advisor Checks
    % -----------------------------
    function defineModelAdvisorChecks
    defineDetailStyleCheck;
    
  4. 打开 defineDetailStyleCheck 文件。

  5. 要更新检查模块名称是否出现在模块下方检查以在模型顾问分析期间排除块,请对 defineDetailStyleCheck 文件进行两项修改。

    1. 启用检查模块名称是否出现在模块下方检查以支持使用 ModelAdvisor.Check.supportExclusion 属性进行检查排除。在 rec.setCallbackFcn(@DetailStyleCallback,'None','DetailStyle'); 之后,添加 rec.supportExclusion = true;function defineDetailStyleCheck 的第一部分现在看起来像这样:

      % Create ModelAdvisor.Check object and set properties.
      rec = ModelAdvisor.Check('com.mathworks.sample.detailStyle');
      rec.Title = 'Check whether block names appear below blocks';
      rec.TitleTips = 'Check position of block names';
      rec.setCallbackFcn(@DetailStyleCallback,'None','DetailStyle');
      rec.supportExclusion = true;
      

    2. 使用 Simulink.ModelAdvisor.filterResultWithExclusion 函数过滤出启用了排除项的检查中导致检查警告或失败的模型对象。为此,请按如下所示修改 DetailStyleCallback(system, CheckObj) 函数。

      注意

      只能在检查回调函数中使用 filterResultWithExclusion 对象。

      % Find all blocks whose name does not appear below blocks
      violationBlks = find_system(system, 'Type','block',...
          'NamePlacement','alternate',...
          'ShowName', 'on');
      violationBlks = mdladvObj.filterResultWithExclusion(violationBlks);
      

  6. 保存 DefineDetailStyleCheck 文件。如果系统询问是否可以覆盖文件,点击确定

创建并保存排除项

  1. 要使您的自定义设置显示在模型顾问中,您必须刷新模型顾问检查信息缓存。在 MATLAB® 命令提示符下,输入以下命令:

    Advisor.Manager.refresh_customizations();

  2. 要打开模型,请双击 AdvisorCustomizationExample.slx

  3. 建模选项卡中,选择模型顾问以打开模型顾问。

  4. 在模型顾问窗口的左侧窗格中,选中 按产品 > 演示 > 检查模块名称是否出现在模块下方 复选框。在右侧窗格中,选择运行检查。检查失败。

  5. 在模型窗口中,右键点击 X 模块,然后选择 模型顾问 > 仅排除模块 > 选择检查。导航至演示文件夹并选择检查模块名称是否出现在模块下方复选框。

  6. 在模型顾问排除编辑器中,点击保存创建排除文件。

  7. 在模型窗口中,打开 Amplifier 子系统,右键点击 GainBlock 模块,然后选择 模型顾问 > 仅排除模块 > 选择检查。导航至演示文件夹并选择检查模块名称是否出现在模块下方复选框。

  8. 在模型顾问排除编辑器中,点击保存以更新排除文件。

审查排除项

  1. 在模型顾问窗口的左侧窗格中,选中 按产品 > 演示 > 检查模块名称是否出现在模块下方 复选框。在右侧窗格中,选择运行检查。检查通过。在模型顾问窗口的右侧窗格中,您可以看到模型顾问在分析期间应用的检查排除规则

  2. 关闭模型和模型顾问。

另请参阅

|

主题