Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

ModelAdvisor.run

使用模型顾问对系统运行检查

    说明

    示例

    ModelAdvisor.run(Systems,CheckIDList) 针对 CheckIDList 指定的检查 ID 列表,对 Systems 指定的模型或子系统运行模型顾问。

    示例

    ModelAdvisor.run(Systems,'Configuration',FileName) 为模型顾问配置文件 FileName 指定的检查列表运行模型顾问。

    示例

    ModelAdvisor.run(Systems,{{CheckID,'InputParam',{paramName,paramValue}}}) 使用由输入参数名称 paramName 和输入参数值 paramValue 指定的输入参数设置,针对 CheckID 指定的检查 ID 运行模型顾问。

    示例

    ModelAdvisor.run(Systems,{{CheckID1,'InputParam',{paramName1,paramValue1,...,paramNameN,paramValueN}},...,{CheckIDN,'InputParam',{paramName1,paramValue1,...,paramNameN,paramValueN}}}) 使用 'InputParam' 指定的输入参数设置针对一个或多个检查 ID 运行模型顾问。

    检查 ID 按 CheckID1CheckIDN 方式指定。对于每个检查 ID,可以使用 'InputParam' 指定检查的输入参数,参数名称为 paramName1paramNameN,参数值为 paramValue1paramValueN

    例如,要为检查触发信号名称检查指定输入参数,可以使用:{'mathworks.jmaab.db_0032','InputParam',{'Follow links','off','Look under masks','all'}}

    示例

    Results = ModelAdvisor.run(___,Name,Value) 使用一个或多个 Name,Value 对组参数指定模型顾问分析的属性,并在 Results 中返回结果。使用 Results 查看模型顾问运行的属性。将此选项与上述语法之一结合使用。

    示例

    全部折叠

    为检查Check model diagnostic parametersCheck for unconnected objects创建一个检查 ID 列表。

    checkIDs = {'mathworks.maab.jc_0021',...
    'mathworks.iec61508.UnconnectedObjects'};
    

    打开示例模型 sldemo_auto_climatecontrol

    openExample('sldemo_auto_climatecontrol')

    创建子系统 sldemo_auto_climatecontrol/Heater Controlsldemo_auto_climatecontrol/AC Control 的列表。

    systems = {'sldemo_auto_climatecontrol/Heater Control',...
        'sldemo_auto_climatecontrol/AC Control'};
    

    使用模型顾问对子系统运行检查。

    results = ModelAdvisor.run(systems,checkIDs);

    有关模型顾问检查的详细信息,请参阅模型顾问检查文档。有关如何查找检查 ID 的详细信息,请参阅Find Model Advisor Check IDs

    创建指定输入参数值的检查列表,然后使用模型顾问运行这些检查。

    通过输入以下命令打开模型 vdp

    openExample('vdp')

    创建检查Check signal line connectionsCheck trigger signal names使用的输入参数列表。

    要查找检查的输入参数,请为模型创建一个模型顾问对象并使用 getInputParameters。检查Check signal line connections的检查 ID 为 'mathworks.jmaab.db_0032',检查Check trigger signal names的检查 ID 为 'mathworks.jmaab.jc_0281'

    ma = Simulink.ModelAdvisor.getModelAdvisor('vdp');
    
    db_0032_parameters = getInputParameters(ma, 'mathworks.jmaab.db_0032');
    jc_0281_parameters = getInputParameters(ma, 'mathworks.jmaab.jc_0281');

    对于检查 'mathworks.jmaab.db_0032'db_0032_parameters{6} 包含输入参数 Follow linksInputParameter 属性。将输入参数名称保存到变量 followLinks

    followLinks = db_0032_parameters{6}.Name;

    对于 'mathworks.jmaab.db_0032',将输入参数 Follow links 设置为 'off'。当 Follow links'off' 时,模型顾问不会分析库链接模块的内容。

    check1 = {'mathworks.jmaab.db_0032',...
    'InputParam',{followLinks,'off'}};

    对于检查 'mathworks.jmaab.jc_0281'jc_0281_parameters{1} 包含输入参数 jc_0281_aInputParameter 属性,jc_0281_parameters{2} 包含输入参数 jc_0281_bInputParameter 属性。jc_0281_ajc_0281_b 包含对 'mathworks.jmaab.jc_0281' 的子检查。将输入参数名称保存到变量 subCheckAsubCheckB

    subCheckA = jc_0281_parameters{1}.Name;
    subCheckB = jc_0281_parameters{2}.Name;

    选择子检查 'jc_0281_a2' 并禁用 'jc_0281_b' 子检查。输入参数值 2 选择 'jc_0281_a' 的第二个子检查。输入参数值 0 禁用 'jc_0281_b' 子检查。有关 'mathworks.jmaab.jc_0281' 及其子检查的详细信息,请参阅Check trigger signal names

    check2 = {'mathworks.jmaab.jc_0281',...
    'InputParam',{subCheckA, 2, subCheckB, 0}};

    创建检查列表。

    listOfChecks = {check1, check2};

    使用模型顾问对系统 vdp 运行指定的检查。

    results = ModelAdvisor.run('vdp', listOfChecks)

    有关模型顾问检查和子检查的详细信息,请参阅模型顾问检查文档。有关如何查找检查 ID 的详细信息,请参阅Find Model Advisor Check IDs

    对模型顾问配置文件指定的检查列表运行模型顾问。

    刷新模型顾问检查信息缓存以包含此示例的文件。

    Advisor.Manager.refresh_customizations()

    使用示例配置文件 demoConfiguration.json 指定要在模型顾问分析中包含哪些检查。将文件名 demoConfiguration.json 保存到变量 fileName

    fileName = 'demoConfiguration.json';

    创建一个名为 +MyEditTimeChecks 的文件夹,并将类定义文件保存在该文件夹中。

    copyfile PortColor.m* +MyEditTimeChecks

    创建子系统 sldemo_auto_climatecontrol/Heater Controlsldemo_auto_climatecontrol/AC Control 的列表。

    systems = {'sldemo_auto_climatecontrol/Heater Control',...
        'sldemo_auto_climatecontrol/AC Control'};

    使用模型顾问对 systems 指定的子系统运行配置文件 demoConfiguration.json 指定的检查。

    results = ModelAdvisor.run(systems,'Configuration',fileName);
             Running Model Advisor... 
    Updating Model Advisor cache...
    Model Advisor cache updated. For new customizations, to update the cache, use the Advisor.Manager.refresh_customizations method.... 
    
             Systems passed: 0 of 2
    
             Systems with information: 0 of 2
    
             Systems with warnings: 2 of 2
    
             Systems with failures: 0 of 2
    
             Systems with justifications: 0 of 2
             To view the summary report, use the 'ModelAdvisor.summaryReport(SystemResultObjArray)' command. SystemResultObjArray is the result of the ModelAdvisor.run command.
    

    使用模型顾问运行检查并生成报告。

    通过输入以下命令打开模型 vdp

    openExample('vdp')

    创建检查 ID 列表。检查Check signal line connections的检查 ID 为 'mathworks.jmaab.db_0032',检查Check trigger signal names的检查 ID 为 'mathworks.jmaab.jc_0281'

    checkIDs = {'mathworks.jmaab.db_0032','mathworks.jmaab.jc_0281'}

    使用模型顾问对模型运行检查。使用名称-值参数 'ReportFormat''ReportPath''ReportName' 在当前文件夹 pwd 中生成 Microsoft® Word 文档格式的报告。

    ModelAdvisor.run('vdp', checkIDs,...
    'ReportFormat', 'docx', 'ReportPath', pwd, 'ReportName', 'myReport')

    有关模型顾问检查和子检查的详细信息,请参阅模型顾问检查文档。有关如何查找检查 ID 的详细信息,请参阅Find Model Advisor Check IDs

    输入参数

    全部折叠

    模型或子系统的列表,指定为模型名称或子系统名称组成的元胞数组。

    示例: {'vdp', 'sldemo_2counters'}

    示例: {'sldemo_auto_climatecontrol/Heater Control', 'sldemo_auto_climatecontrol/AC Control'}

    模型顾问检查的检查 ID 列表,指定为字符向量或字符向量元胞数组。

    有关如何查找检查 ID 的信息,请参阅Find Model Advisor Check IDs

    不要在 CheckIDList 中包含重复的检查 ID。如果需要多次运行相同的检查但使用不同输入参数,请使用以下方法之一:

    • 针对每个不同输入参数分别调用 ModelAdvisor.run

      例如,要运行检查 'mathworks.jmaab.jc_0281' 两次,一次禁用子检查 'jc_0281_a',一次选中子检查 'jc_0281_a2'

      myCheck = 'mathworks.jmaab.jc_0281';
      inputParam1 = {'jc_0281_a',0}; % disable 'jc_0281_a' subchecks
      inputParam2 = {'jc_0281_a',2}; % select subcheck 'jc_0281_a2'
      
      ModelAdvisor.run(modelName,{{myCheck,'InputParam',inputParam1}})
      ModelAdvisor.run(modelName,{{myCheck,'InputParam',inputParam2}})
      

    • 创建并运行一个模型顾问配置,该配置对每个不同输入参数使用单独的检查实例。在模型顾问配置编辑器中,为要运行的每个不同输入参数创建一个新文件夹,将检查复制到每个文件夹中,并修改每个文件夹中的检查以指定不同输入参数。使用 ModelAdvisor.run(Systems,'Configuration',FileName) 语法运行配置。

    示例: 'mathworks.jmaab.jc_0281'

    示例: {'mathworks.maab.jc_0021', 'mathworks.misra.BlockNames'}

    模型顾问检查的检查 ID,指定为字符向量。

    有关如何查找检查 ID 的信息,请参阅Find Model Advisor Check IDs

    示例: 'mathworks.jmaab.jc_0281'

    模型顾问检查的输入参数的名称,指定为字符向量。

    通过对 Simulink.ModelAdvisor 对象使用 getInputParameters,可以查看模型顾问检查的输入参数名称。输入参数名称 NameModelAdvisor.InputParameter 对象的属性。有关详细信息,请参阅使用模型顾问运行子检查

    此外,还可以在模型顾问配置编辑器中查看检查的输入参数。可以将输入参数值保存到您的自定义模型顾问配置文件中。有关详细信息,请参阅使用模型顾问配置编辑器来自定义模型顾问

    有关模型顾问检查、子检查和输入参数的详细信息,请访问模型顾问检查文档中产品特定检查文档的链接。

    示例: 'Follow links'

    示例: 'jc_0281_a'

    模型顾问检查的输入参数的值,指定为字符向量或整数。

    通过对 Simulink.ModelAdvisor 对象使用 getInputParameters,可以查看模型顾问检查的输入参数值。当前输入参数值 ValueModelAdvisor.InputParameter 对象的属性。有关详细信息,请参阅使用模型顾问运行子检查

    此外,还可以在模型顾问配置编辑器中查看检查的输入参数。可以将输入参数值保存到您的自定义模型顾问配置文件中。有关详细信息,请参阅使用模型顾问配置编辑器来自定义模型顾问

    有关模型顾问检查、子检查和输入参数的详细信息,请访问模型顾问检查文档中产品特定检查文档的链接。

    示例: 'off'

    示例: 4

    模型顾问配置文件的名称,指定为字符向量。有关创建配置文件的详细信息,请参阅使用模型顾问配置编辑器来自定义模型顾问

    示例: 'demoConfiguration.json'

    名称-值参数

    将可选的参数对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参数名称,Value 是对应的值。名称-值参数必须出现在其他参数后,但参数对组的顺序无关紧要。

    在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来

    示例: results = ModelAdvisor.run(systems,'Configuration',fileName,'ExtensiveAnalysis','Off');

    模型顾问的结果显示设置,指定为 'Summary''Details''None'。将 DisplayResults 设置为 'Summary' 会在命令行窗口中显示系统结果的摘要。将 DisplayResults 设置为 'Details' 会显示:

    • 在运行过程中模型顾问正在检查哪个系统

    • 每个系统每次检查的通过和失败结果

    • 系统结果摘要

    DisplayResults 设置为 'None' 不会在命令行窗口中显示任何信息。

    示例: 'Details'

    模型顾问的大规模分析设置,指定为 'On''Off'。将 'ExtensiveAnalysis' 设置为 'On' 会运行模型顾问配置中的每个检查,包括触发大规模分析的检查。将 'ExtensiveAnalysis' 设置为 'Off' 只运行不会触发大规模分析的检查。

    触发模型大规模分析的检查使用其他分析方法,例如使用 Simulink® Design Verifier™ 的分析。触发大规模分析的检查在模型顾问中的检查名称前面有 Extensive Analysis 图标。

    要使用 'ExtensiveAnalysis' 名称-值参数,必须使用 'Configuration' 参数指定检查配置文件名。

    示例: 'Off'

    模型顾问的强制删除设置,指定为 'Off''On'。将 Force 设置为 'On' 会删除现有 modeladvisor/system 文件夹。将 Force 设置为 'Off' 会在删除现有 modeladvisor/system 文件夹之前提示您。

    示例: 'On'

    申述文件的完整文件名或路径,指定为字符串标量或字符向量。申述文件采用 JSON 格式。

    有关如何创建申述文件的信息,请参阅Justify Model Advisor Violations from Check Analysis

    示例: 'vdp_justifications.json'

    数据类型: char | string

    模型顾问的并行执行设置,指定为 'Off''On'。如果您有 Parallel Computing Toolbox™ 许可证和多核计算机,则将 ParallelMode 设置为 'On' 会以并行模式运行模型顾问。Parallel Computing Toolbox 不支持 32 位 Windows® 计算机。每个并行处理一次对一个模型运行检查。在并行模式下,从模型工作区或数据字典中加载模型数据。在并行模式下,模型顾问不支持基础工作区中的模型数据。有关示例,请参阅Create Function to Check Multiple Systems

    注意

    Simulink Online 不支持模型顾问并行运行。

    示例: 'On'

    报告的报告排除项显示设置,指定为 'On''Off'。将 ShowExclusions 设置为 'On' 会在报告中列出模型顾问检查排除项。将 ShowExclusions 设置为 'Off' 不会在报告中列出模型顾问检查排除项。

    示例: 'Off'

    模型顾问的临时工作文件夹设置,指定为 'Off''On'。将 TempDir 设置为 'On' 会从临时工作文件夹运行模型顾问,以避免使用并行池运行时出现并发性问题。有关详细信息,请参阅Resolving Data Concurrency Issues。将 TempDir 设置为 'Off' 会在当前工作文件夹中运行模型顾问。

    示例: 'On'

    生成报告的格式,指定为 HTML 格式、PDF 格式或 Microsoft Word 文档格式。

    注意

    如果选择了不受支持的格式,模型顾问将显示错误。对于具有 Microsoft Word 许可证的 Windows 操作系统,支持的格式为 'html''pdf''docx'。对于类似 UNIX® 的操作系统,唯一支持的格式是 'html'

    示例: 'docx'

    生成报告的文件夹路径,指定为字符向量。默认情况下,'ReportPath' 是当前工作目录中的 'slprj/modeladvisor/modelName' 文件夹。

    示例: 'C:\MyProject\MyReports'

    模型顾问报告文件名(不带扩展名),指定为字符向量。下划线和模型名称 '_modelName' 将追加到报告文件名之后。例如,如果您使用 ReportName 'MyReport' 对模型 vdp 运行模型顾问,则模型顾问报告的文件名为 'MyReport_vdp'

    示例: 'MyReport'

    输出参数

    全部折叠

    模型顾问检查结果,指定为 ModelAdvisor.SystemResult 对象的元胞数组。该函数为输入参数 Systems 指定的每个模型或子系统返回一个对象。

    每个 ModelAdvisor.SystemResult 对象包含一个 CheckResultObjs 属性,该属性包含一个 ModelAdvisor.CheckResult 对象数组,其中每个对象对应于 ModelAdvisor.run 运行的一项检查。

    要在不重新运行模型顾问的情况下查看结果,请保存结果。有关详细信息,请参阅对象的保存和加载过程

    限制

    • ModelAdvisor.run 不会跨模型层次结构运行。要对父模型及其引用模型运行模型顾问,请改用 Advisor.Application

    • ModelAdvisor.run 仅对活动变体运行模型顾问。要对活动和非活动变体均运行模型顾问,请使用 Advisor.Application 并将 AnalyzeVariants 参数指定为 true

    提示

    • 从 MATLAB® 命令行运行模型顾问时,您可以在 ModelAdvisor.run 命令中使用 LogVerbosity 选项来记录错误、警告和调试详细信息等信息。

      ModelAdvisor.run('vdp',checkIDlist,'LogVerbosity','None')

      要指定记录的详细程度,您可以设置 LogVerbosity 选项,如下所示:

      LogVerbosity 的值信息记录级别

      None

      无信息(默认值)。

      Concise

      适量的信息,如错误和警告。

      Verbose

      完整信息。

      此外,您可以包含 LogFile 选项以将日志详细信息保存到文本文件中。

      ModelAdvisor.run('vdp',checkIDlist,'LogVerbosity','Concise','LogFile','Log.txt')
    • 如果您有 Parallel Computing Toolbox 许可证和一台多核计算机,模型顾问可以在多个系统上并行运行。您可以使用 'ParallelMode' 设置为 'On'ModelAdvisor.run 以并行模式运行模型顾问。默认情况下,'ParallelMode' 设置为 'Off'。当您使用 'ParallelMode' 设置为 'On'ModelAdvisor.run 时,MATLAB 会自动创建一个并行池。

    备选方法

    • 使用模型顾问用户界面运行每个系统。在用户界面中,一次只能运行一个系统。

    • 通过使用 Simulink.ModelAdvisor 对象创建一个脚本或函数,每次运行一个系统。

    扩展功能