创建和部署模型顾问自定义配置

要检查模型符合公司标准和建模准则,你可以自定义模型顾问。这个例子说明了如何自定义的检查,添加到模型顾问和拆除运输检查,你不需要。您可以保存自定义配置并将其部署到其他人在你的开发团队。部署自定义配置允许使用同一组检查你的开发小组审查模式。

定义定制的检查

这个例子定义了这三种类型的自定义检查:

  • 合格/不合格检查由块和子系统组结果,并且提供修复作用。

  • 验证模型配置参数设置的检查。

  • 的检查指定的约束为一个块参数设置,并提供了修复操作。

在这个例子中,你将三个检查添加到模型顾问,并删除所有运输检查。

1.将当前文件夹到可写目录。

2.复制脚本prepare_cust_chk_code到当前文件夹,然后运行该脚本。该脚本将在这个例子中,以当前文件夹所需文件。

的CopyFile(完整文件(matlabroot,“例子”'slcheck''主要''prepare_cust_chk_code.m'...'prepare_cust_chk_code.m'“f”);运行('prepare_cust_chk_code.m');

3.一个文件,sl_customization.m,包括sl_customization函数定义定制检查。打开和检查sl_customization.m文件。

功能sl_customization (cm)%SL_CUSTOMIZATION  - 型号顾问定制演示。% MathWorks, Inc.版权所有2019年登记自订支票cm.addModelAdvisorCheckFcn(@defineModelAdvisorChecks);%-----------------------------%定义模型顾问检查%-----------------------------功能defineModelAdvisorChecks defineDetailStyleCheck;defineConfigurationParameterCheck;defineBlockConstraintCheck;

sl_customization函数接受一个定制管理器对象。该定制管理器对象包括addModelAdvisorCheckFcn方法用于登记定制检查。输入到该方法的句柄功能(defineModelAdvisorChecks)。此功能包含对应于三个自定义检查三个查定义函数的调用。

通过/失败检查与修复操作

defineDetailStyleCheck.m文件包含defineDetailStyleCheck定义功能,它定义了检查,其中列出块的名字不在块下方显示。这种检查提供了移动的块下面这些名字的修复。该检查的名称是检查块名是否出现以下块.打开和检查defineDetailStyleCheck.m文件。

功能defineDetailStyleCheck mdladvRoot = ModelAdvisor.Root;%创建ModelAdvisor.Check对象和属性集。rec = ModelAdvisor.Check ('com.mathworks.sample.detailStyle');rec.Title =“检查块名是否出现以下块”;rec.TitleTips =“检查块名的位置”;rec.setCallbackFcn(@DetailStyleCallback,“没有”'DetailStyle');%用于设置修复操作创建ModelAdvisor.Action对象。myAction = ModelAdvisor.Action;myAction.setCallbackFcn (@ActionCB);myAction.Name =“制作块的名字出现以下块”;myAction.Description =“点击按钮将区块名称置于区块下方”;rec.setAction (myAction);mdladvRoot.publish (rec,“演示”);%发布支票存入演示组。结束%-----------------------------%这个回调函数使用DetailStyle CallbackStyle类型。%-----------------------------功能mdladvObj = Simulink.ModelAdvisor.getModelAdvisor(万博1manbetxsystem);%GET对象%查找其名字没有出现在下面块的所有块violationBlks = find_system(系统,“类型”'块'...'NamePlacement'“替代”...'ShowName''上');如果isempty(violationBlks) ElementResults = ModelAdvisor.ResultDetail;ElementResults。IsInformer = true;ElementResults。描述=“其中块下方没有显示名称识别块”。;ElementResults。状态=“所有块具有块下面显示的名字。”;mdladvObj.setCheckResultStatus(真);其他ElementResults(元素个数(violationBlks)) = ModelAdvisor.ResultDetail;对于i = 1:元素个数(ElementResults) ElementResults (i) .setData (violationBlks{我});ElementResults(我)。描述=“其中块下方没有显示名称识别块”。;ElementResults(我)。状态=“下面有块不显示块以下的名称:”;ElementResults(我)。RecAction =“改变位置,使得该块名是块下方”。;结束mdladvObj.setCheckResultStatus(假);mdladvObj.setActionEnable(真正的);结束CheckObj.setResultDetails(ElementResults);结束%-----------------------------%这个动作回调函数改变块名称的位置。%-----------------------------功能导致= ActionCB(taskobj)mdladvObj = taskobj.MAObj;checkObj = taskobj.Check;resultDetailObjs = checkObj.ResultDetails;对于i = 1:元素个数(resultDetailObjs)%采取一些行动为他们每个人块= Sim万博1manbetxulink.ID.getHandle(resultDetailObjs(ⅰ)。数据);set_param(块'NamePlacement''正常');结束导致= ModelAdvisor.Text(“改变,使得块名是块下方的位置”。);mdladvObj.setActionEnable(假);结束

此项检查需要使用setCallbackFcn类型DetailStyle.运用这种风格的产生默认格式,这样你就不必使用ModelAdvisor.FormatTemplate或者其他的模型顾问格式化api来格式化出现在模型顾问中的结果。有关如何创建这种类型的检查定义函数的更多信息,请参见创建合格/不合格型号顾问检查与修复操作.

型号配置参数设置检查

defineConfigurationParameterCheck.m文件包含defineConfigurationParameterCheck检查定义函数,它定义了的支票,识别模型的配置参数设置可能影响MISRA C:2012兼容的代码生成。该检查的名称是检查模型配置参数.

此检查类型需要包含您要检查的型号配置参数设置一个支持X万博1manbetxML数据文件。此文件必须在MATLAB的路径。在这个例子中,该文件是configurationParameterDataFile.xml。有关如何创建此检查类型的详细信息,请参阅创建模型顾问检查型号配置参数.

打开和检查defineConfigurationParameterCheck.m文件.

功能defineConfigurationParameterCheck%创建ModelAdvisor.Check对象和属性集。rec = ModelAdvisor.Check ('com.mathworks.sample.configurationParameter');rec.Title =“检查模式的配置参数”;rec.setCallbackFcn(@(系统)(Advisor.authoring.CustomCheck.checkCallback...(系统)),“没有”'StyleOne');rec.TitleTips =识别可能影响MISRA C:2012兼容代码生成的配置参数。;%---数据文件的输入参数rec.setInputParametersLayoutGrid ([1]);inputParam1 = ModelAdvisor.InputParameter;inputParam1。Name =“数据文件”;inputParam1.Value ='configurationParameterDataFile.xml';inputParam1.Type ='串';inputParam1。描述=XML数据文件的名称或完整路径。;inputParam1.setRowSpan([1 1]);inputParam1.setColSpan([1 1]);rec.setInputParameters({inputParam1});% - 集修复手术ACT = ModelAdvisor.Action;act.setCallbackFcn(@(任务)(Advisor.authoring.CustomCheck.actionCallback...(任务)));的行为。Name =“修改设置”;act.Description =“修改模型配置设置。”;rec.setAction(行为);%发布支票存入演示组。mdladvRoot = ModelAdvisor.Root;mdladvRoot.publish (rec,“演示”);结束

块参数约束检查

defineBlockConstraintCheck.m文件包含defineBlockConstraintCheck检查定义函数,它定义了的支票,识别不具有矩形形状逻辑运算符块。该检查的名称是检查逻辑操作符块的图标形状.

此检查类型支持编辑时检查,并要求万博1manbetx包含块约束信息的支持XML文件。此XML文件必须在MATLAB的路径。在这个例子中,这个文件名是blockConstraintDataFile.xml。有关此检查类型的更多信息,请参见定义支持或不支持的块和参数模型顾问检查万博1manbetx.

打开和检查defineBlockConstraintChecķ.M文件.

功能defineBlockConstraintCheck rec = advisor . authority . createblockconstraintcheck ('com.mathworks.sample.blockConstraint');rec.Title =“检查逻辑运算符块的图标形状”;rec.setCallbackFcn(@(系统)(Advisor.authoring.CustomCheck.checkCallback...(系统)),“没有”'StyleOne');rec.TitleTips ='检查逻辑操作符块的图标形状。逻辑运算符的图标形状应该是矩形的。;%---数据文件的输入参数rec.setInputParametersLayoutGrid ([1]);inputParam1 = ModelAdvisor.InputParameter;inputParam1。Name =“数据文件”;inputParam1.Value ='blockConstraintDataFile.xml';inputParam1.Type ='串';inputParam1。描述=XML数据文件的名称或完整路径。;inputParam1.setRowSpan([1 1]);inputParam1.setColSpan([1 1]);rec.setInputParameters({inputParam1});rec.万博1manbetxSupportExclusion = FALSE;rec.万博1manbetxSupportLibrary = TRUE;%发布支票存入演示组。mdladvRoot = ModelAdvisor.Root;mdladvRoot.publish (rec,“演示”);结束

查看自定义检查的模型顾问

1.为了您的自定义的检查是在模型顾问可见,必须刷新模型顾问检查的信息缓存。在MATLAB命令提示符下,键入以下命令:

Advisor.Manager.refresh_customizations();

2.打开示例模型。

open_system ('AdvisorCustomizationExample.slx');

3.在建模选项卡,打开模型的顾问.您也可以通过在MATLAB命令提示符下键入以下命令打开模型顾问:

modeladvisor('AdvisorCustomizationExample.slx');
更新模型顾问缓存…模型顾问缓存更新。对于新的自定义,要更新缓存,请使用Advisor.Manager。refresh_customizations方法。

4.的自定义检查产品分类>演示文件夹中。

在检查定义的功能外,发布命令将检查添加到产品分类>演示文件夹中。注意,如果您已经有了一个默认的配置集,那么检查将不会出现在Model Advisor中。通过选择恢复默认的传送配置设置>恢复默认配置.

请注意,检查块名是否出现以下块检查模型配置参数检查包含行动框中有修复任何违反检查的选项。在自定义检查定义文件中,将修复作为操作回调函数的一部分提供。有关如何定义自定义检查的更多信息,请参见定义自定义模型顾问检查工作流程.

在模型画布,观察该股延迟和逻辑运算符块黄色突出显示,因为编辑时检查是。这些块包含支票的违规行为。编辑时检查,您可以以交互方式检查和修复您的模型合规性问题。

要解决这些违规行为,将鼠标悬停在突出显示的块,然后单击黄色图标。与诊断盒修复按钮打开。

要打开或关闭编辑时检查,对建模选项卡,选中模型顾问>编辑时间检查.

指定并部署Model Advisor自定义配置

要指定哪些检查要包含在Model Advisor中,哪些检查要用于编辑时检查,请使用Model Advisor配置编辑器。

1.上打开配置编辑器建模选项卡,选中型号顾问>模型顾问配置编辑器.

2.要添加或删除检查和文件夹,从选项中选择编辑模型顾问配置编辑器的部分。

3.要保存配置,选择保存.将打开一个窗口并提示您将配置保存为.json文件。对于本例,您不必将配置保存为相应的demoConfiguration.json文件附带的这个例子。您之前复制该文件到你的工作文件夹。

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

bdclose;

当您保存配置时,您会得到一个提示,询问您是否要将该配置保存为默认配置。设置默认配置允许模型顾问在每次打开模型顾问时使用该配置。有关更多信息,请参见使用模型顾问配置编辑器自定义模型顾问.

加载和运行模型顾问自定义配置

1.打开示例模型。

open_system ('AdvisorCustomizationExample.slx');

2.打开模型顾问。加载通过选择自定义配置设置>加载配置.在打开对话框中,找到并选择demoConfiguration.json文件。或在MATLAB命令提示符下输入该命令:

modeladvisor('AdvisorCustomizationExample.slx''组态'...'demoConfiguration.json');
型号顾问被删除现有报告。

3.将打开一个警告对话框。点击删除现有的报告,并继续.

模型顾问只包含产品分类>演示带有三个自定义检查的文件夹。

3.单击演示文件夹,然后单击选择运行检查。

4.单击检查块名是否出现以下块校验。此检查包含警告。要应用修复和解决的警告,在右侧窗格中,单击制作块名字出现以下块按钮。

5.单击检查模型配置参数校验。此检查包含警告。应用修复程序并解决警告,点击修改设置按钮。

6.单击检查逻辑操作符块的图标形状校验。该检查包含一个警告,但没有自动修复。应用修复程序,遵循建议的行动。

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

bdclose;

8.从工作目录中删除文件。刷新模型顾问检查信息缓存输入这个命令在命令类型:

Advisor.Manager.refresh_customizations

.