以编程方式自定义模型顾问配置
您可以使用模型顾问配置 API 以编程方式创建新的模型顾问配置,并修改现有配置以满足您的合规性检查需求。该 API 为您提供了一种更轻松、更灵活的方式来以编程方式创建和自定义配置,具体方式如下:
按层级结构添加、删除和组织内置和已发布的自定义检查。
指定要用于编辑时检查的检查项,以及模型顾问中包含的检查项。
禁用和启用检查和文件夹。
您可以将组织层次结构保存到 JSON 文件中,并将其指定为默认模型顾问配置,或与特定模型关联。
本示例展示了如何使用模型顾问配置 API 来执行以下操作:
创建新的自定义配置。
修改现有配置以满足您当前的需求。
为一组预定义的检查创建新的配置。
创建新的自定义模型顾问配置
创建一个自定义配置,其中包含两个文件夹,其中包含一些内置的 MathWorks 咨询委员会 (MAB) 和 DO-178C/DO-331 标准建模规范检查。使用自定义配置作为默认模型顾问配置,并对 AdvisorCustomizationExample.slx 运行模型顾问分析。
1.创建一个模型顾问配置对象。
CfgObj = Advisor.Config;
Updating Model Advisor cache... Model Advisor cache updated. For new customizations, to update the cache, use the Advisor.Manager.refresh_customizations method.
CfgObj 对象为您提供一个可编辑的空白配置,您可以使用它来创建自定义配置。
2.使用 addFolder 函数在空白配置的根节点下创建两个名为 MAB Checks 和 IS Checks 的新文件夹。
FolderInstanceID = addFolder(CfgObj,'_SYSTEM','MAB Checks')
FolderInstanceID = '_SYSTEM_MAB Checks'
FolderInstanceID1 = addFolder(CfgObj,'_SYSTEM','IS Checks')
FolderInstanceID1 = '_SYSTEM_IS Checks'
创建新文件夹时,会在配置中实例化这些文件夹的实例。文件夹实例具有 ID,表示文件夹在配置中的位置,格式为 _SYSTEM_ Folder Hierarchy。addFolder 返回新文件夹的实例 ID 作为输出。
3.使用 addCheck 函数在 MAB Checks 文件夹下添加这些内置的 MathWorks 咨询委员会 (MAB) 建模规范检查。
检查状态名称的使用 – 检查 ID:
mathworks.jmaab.jc_0731检查模块名称的显示属性 – 检查 ID:
mathworks.maab.jc_0061检查子系统名称 – 检查 ID:
mathworks.jmaab.jc_0201检查端口模块名称 – 检查 ID:
mathworks.jmaab.jc_0211
CheckInstanceID = addCheck(CfgObj,'_SYSTEM_MAB Checks','mathworks.jmaab.jc_0731')
CheckInstanceID = "_SYSTEM_MAB Checks_mathworks.jmaab.jc_0731"
CheckInstanceID1 = addCheck(CfgObj,'_SYSTEM_MAB Checks','mathworks.maab.jc_0061')
CheckInstanceID1 = "_SYSTEM_MAB Checks_mathworks.maab.jc_0061"
CheckInstanceID2 = addCheck(CfgObj,'_SYSTEM_MAB Checks','mathworks.jmaab.jc_0201')
CheckInstanceID2 = "_SYSTEM_MAB Checks_mathworks.jmaab.jc_0201"
CheckInstanceID3 = addCheck(CfgObj,'_SYSTEM_MAB Checks','mathworks.jmaab.jc_0211')
CheckInstanceID3 = "_SYSTEM_MAB Checks_mathworks.jmaab.jc_0211"
addCheck 函数允许您添加模型顾问根目录中可用的检查。根目录包含对已安装产品的内置检查和已发布的自定义检查。添加检查项时,会在配置中实例化这些检查项的实例。检查实例具有 ID,表示检查在配置中的位置,格式为 _SYSTEM_ Check Hierarchy_ Check ID。addCheck 返回已添加检查的实例 ID 作为输出。
4.在 IS Checks 文件夹下添加这些内置的 DO-178C/DO-331 标准建模规范检查。
显示模型版本信息 – 检查 ID:
mathworks.do178.MdlChecksum检查与安全相关的诊断设置以保存 – 检查 ID:
mathworks.hism.hisl_0036检查安全相关的模型应用设置 – 检查 ID:
mathworks.hism.hisl_0037检查与仿真时间相关的安全求解器设置 – 检查 ID:
mathworks.hism.hisl_0040
CheckInstanceID4 = addCheck(CfgObj,'_SYSTEM_IS Checks','mathworks.do178.MdlChecksum')
CheckInstanceID4 = "_SYSTEM_IS Checks_mathworks.do178.MdlChecksum"
CheckInstanceID5 = addCheck(CfgObj,'_SYSTEM_IS Checks','mathworks.hism.hisl_0036')
CheckInstanceID5 = "_SYSTEM_IS Checks_mathworks.hism.hisl_0036"
CheckInstanceID6 = addCheck(CfgObj,'_SYSTEM_IS Checks','mathworks.hism.hisl_0037')
CheckInstanceID6 = "_SYSTEM_IS Checks_mathworks.hism.hisl_0037"
CheckInstanceID7 = addCheck(CfgObj,'_SYSTEM_IS Checks','mathworks.hism.hisl_0040')
CheckInstanceID7 = "_SYSTEM_IS Checks_mathworks.hism.hisl_0040"
addCheck 函数返回已添加检查的实例 ID 作为输出。
5.使用 saveConfiguration 函数将配置保存到名为 CustomConfiguration.json 的 JSON 文件中。
saveConfiguration(CfgObj, 'CustomConfiguration.json');该函数会将配置文件保存到您的工作目录中。如果要将文件保存到其他位置,请指定所需的绝对路径。
6.要将 CustomConfiguration.json 设置为默认模型顾问配置,请使用 ModelAdvisor.setDefaultConfiguration 函数。
ModelAdvisor.setDefaultConfiguration ('CustomConfiguration.json');7.刷新模型顾问缓存。
Advisor.Manager.refresh_customizations();
8.打开 AdvisorCustomizationExample.slx 模型。
open_system('AdvisorCustomizationExample.slx');9.使用 Advisor.Application 对象和 run 方法运行模型顾问分析。或者,您可以使用 ModelAdvisor.run。
app = Advisor.Manager.createApplication(); RootModel = 'AdvisorCustomizationExample'; setAnalysisRoot(app,'Root',RootModel); run(app);
Updating Model Advisor cache... Model Advisor cache updated. For new customizations, to update the cache, use the Advisor.Manager.refresh_customizations method.
10.模型顾问使用 CustomConfiguration.json 自定义配置进行分析。使用 generateReport 生成 HTML 报告,并在 Web 浏览器中打开它。
report = generateReport(app); web(report);
报告中可以看到,在 MAB Checks 和 IS Checks 文件夹中的 8 项检查中,有 3 项检查存在警告:
IS 检查 > 检查安全相关的诊断设置以保存(检查 ID
mathworks.hism.hisl_0036)IS 检查 > 检查与安全相关的模型引用设置(检查 ID
mathworks.hism.hisl_0037)MAB 检查 > 检查模块名称的显示属性(检查 ID
mathworks.maab.jc_0061)
修改现有模型顾问配置
在本例中,使用 Advisor.Config 对象及其函数来修改在创建新的自定义模型顾问配置中创建的配置 CustomConfiguration.json。然后使用自定义配置来检查 AdvisorCustomizationExample.slx 的合规性。
1.创建一个模型顾问配置对象。
CfgObj = Advisor.Config;
2.要加载 CustomConfiguration.json 文件,请使用 loadConfig 函数。
loadConfig(CfgObj,'CustomConfiguration.json')3.在本例中,要查看自定义的效果,请从配置中删除 IS Checks 文件夹,并删除 MAB Checks 文件夹中先前在模型顾问分析中发出警告的检查。
要从配置中删除 IS 检查文件夹实例 _SYSTEM_IS Checks 及其中的检查,请使用 delete 函数。
delete(CfgObj,'_SYSTEM_IS Checks');要从模型顾问分析中删除检查模块名称的显示属性检查实例 _SYSTEM_MAB Checks_mathworks.maab.jc_0061,请使用 deselect 函数。
deselect(CfgObj,'_SYSTEM_MAB Checks_mathworks.maab.jc_0061');您可以使用 isSelected 函数来确定检查实例是否包含在模型顾问分析中。
isSelected(CfgObj,'_SYSTEM_MAB Checks_mathworks.maab.jc_0061')ans = logical
0
4.使用 disable 函数禁用检查实例 _SYSTEM_MAB Checks_mathworks.jmaab.jc_0201。
disable(CfgObj,'_SYSTEM_MAB Checks_mathworks.maab.jc_0061');同样地,禁用分析中包含的选定检查和文件夹实例。
disable(CfgObj,'_SYSTEM_MAB Checks_mathworks.jmaab.jc_0731'); disable(CfgObj,'_SYSTEM_MAB Checks_mathworks.jmaab.jc_0201'); disable(CfgObj,'_SYSTEM_MAB Checks_mathworks.jmaab.jc_0211'); disable(CfgObj,'_SYSTEM_MAB Checks');
禁用此功能可防止意外地从模型顾问分析中删除或添加检查或文件夹实例。要将已禁用的检查或文件夹实例添加到分析中或从分析中排除,必须首先使用 enable 函数启用该实例。
5.将自定义设置保存到 CustomConfiguration.json 文件中。
saveConfiguration(CfgObj,'CustomConfiguration.json');6.刷新模型顾问缓存。
Advisor.Manager.refresh_customizations();
7.打开模型 AdvisorCustomizationExample.slx 模型。
open_system('AdvisorCustomizationExample.slx');8.运行模型顾问分析。
run(app);
模型顾问使用默认的 CustomConfiguration.json 自定义配置进行分析。生成 HTML 报告并在 Web 浏览器中打开。
report = generateReport(app); web(report);
您可以看到该模型通过了三项检查,但有一项检查未运行,这与自定义设置相符。
为预定义检查集创建自定义模型顾问配置
如果您想为一组检查创建新的自定义配置,而无需按层次结构组织它们,您可以使用 Advisor.config 对象和 createFromCheckList 函数轻松创建一个。本示例展示了如何为预定义的清单创建自定义配置并将其与模型关联。将自定义配置与模型关联起来意味着模型顾问每次打开模型时都会使用该配置。
1.通过定义检查 ID 的元胞数组,创建所需检查的清单。针对本示例,创建一份 MAB 建模规范检查清单:
检查信号名称和总线名称可使用的字符 – 检查 ID
mathworks.jmaab.jc_0222检查模型文件名的长度 – 检查 ID
mathworks.jmaab.jc_0241检查子系统名称 – 检查 ID:
mathworks.jmaab.jc_0201检查端口模块名称 – 检查 ID:
mathworks.jmaab.jc_0211
checkList = {'mathworks.jmaab.jc_0222', 'mathworks.jmaab.jc_0241',...
'mathworks.jmaab.jc_0201','mathworks.jmaab.jc_0211'};2.创建一个模型顾问配置对象。
CfgObj = Advisor.Config;
Updating Model Advisor cache... Model Advisor cache updated. For new customizations, to update the cache, use the Advisor.Manager.refresh_customizations method.
CfgObj 对象为您提供一个可编辑的空白配置,您可以使用它来创建自定义配置。
3.使用 createFromCheckList 函数,在空白配置的根节点下添加在 checkList 中定义的 ID 的检查。
createFromCheckList(CfgObj,checkList);
您可以使用 addFolder 和 addCheck 函数创建新文件夹并在其中添加检查,从而进一步自定义它。
4.将配置保存到名为 ConfigforCheckList.json 的 JSON 文件中。
saveConfiguration(CfgObj, 'ConfigforCheckList.json');该函数会将文件保存到您的工作目录中。
5.创建并保存一个名为 newModel 的新模型。
new_system("newModel"); save_system("newModel");
6.打开模型 newModel 的模型顾问。
modeladvisor("newModel");Opening Model Advisor in "nodisplay" mode is not recommended. Please use ModelAdvisor.run command line APIs instead.
7.将配置文件 ConfigforCheckList.json 与模型 newModel 关联起来。
ModelAdvisor.setModelConfiguration("newModel","ConfigforCheckList.json");
如果关闭并重新打开模型,模型顾问每次都会使用关联的配置。
限制
模型顾问程序化工作流程存在以下局限性:
加载较旧的模型顾问配置时,
loadConfig不会警告您缺少或不兼容的检查。您无法通过编程方式将旧版模型 Advisor 配置升级到新版 MATLAB,也无法验证其兼容性。使用模型顾问配置编辑器升级或验证旧配置。
清理
close_system ("newModel", 0); delete CustomConfiguration.json; delete ConfigforCheckList.json; delete newModel.slx; rmdir 'slprj' s
另请参阅
Advisor.Config | ModelAdvisor.setDefaultConfiguration