主要内容

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

要检查模型是否符合公司的标准和建模指导方针,您可以定制model Advisor。此示例向您展示如何向Model Advisor添加自定义检查,并删除不需要的发货检查。您可以保存自定义配置并将其部署到开发组中的其他人。部署自定义配置允许开发团队使用相同的检查集检查模型。

定义定制的检查

此示例定义了以下三种类型的自定义检查:

  • 通过/失败检查,按块和子系统对结果进行分组,并提供修复操作。

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

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

在本例中,您将向Model Advisor添加三个检查,并删除所有装运检查。

1.将当前文件夹设置为可写目录。

2.复制脚本prepare_cust_chk_code到当前文件夹并运行脚本。脚本将此示例所需的文件复制到当前文件夹。

拷贝文件(fullfile (matlabroot,“例子”“slcheck”“主要的”'准备客户代码.m'),...'准备客户代码.m'“f”);运行('准备客户代码.m');

3.其中一份文件,sl_customization.m,包括一个sl_customization定义自定义检查的函数。打开并检查sl_customization.m文件。

功能sl_customization (cm)% SL_CUSTOMIZATION -模型顾问定制演示。版权所有2019 The MathWorks, Inc.%注册自定义检查cm.addModelAdvisorCheckFcn(@defineModelAdvisorChecks);% -----------------------------%定义模型顾问检查% -----------------------------功能defineModelAdvisorChecks defineDetailStyleCheck;defineConfigurationParameterCheck;defineBlockConstraintCheck;

sl_customization函数接受自定义管理器对象。自定义管理器对象包括AddModelAdvisorchekfcn用于注册自定义检查的方法。此方法的输入是函数的句柄(defineModelAdvisorChecks).这个函数包含对三个检查定义函数的调用,这三个检查定义函数对应于三个自定义检查。

通过/失败检查与修复行动

defineDetailStyleCheck.m文件包含defineDetailStyleCheck定义函数,该函数定义了一个检查,列出了名称未显示在块下方的块。此检查提供了一个修复程序,可将这些名称移动到块下方。此检查的名称为检查块名称是否显示在块下方.打开并检查defineDetailStyleCheck.m文件。

功能mdladvRoot = ModelAdvisor.Root;%创建ModelAdvisor。检查对象并设置属性。rec = ModelAdvisor。检查('com.mathworks.sample.detailStyle');rec.Title ='检查区块名称是否出现在区块下方';rec.TitleTips =“检查块名称的位置”;rec.setcallbackpcn(@DetailStyleCallback,“没有”“细节风格”);%创建ModelAdvisor.Action对象以设置修复操作。myAction = ModelAdvisor.Action;myAction.setCallbackFcn (@ActionCB);myAction。Name ='使块名称显示在块下方';我的行动。描述='点击按钮将区块名称置于区块下方';rec.setAction (myAction);mdladvRoot.publish (rec,“演示”);%发布签入演示组。结束% -----------------------------%此回调函数使用DetailStyle CallbackStyle类型。% -----------------------------功能mdladvObj = Simulink.ModelAdvisor.getModelAdvisor(金宝appsystem);%获取对象%查找名称未显示在块下方的所有块violationBlks = find_system(系统,“类型”“块”...“NamePlacement”“替代”...“ShowName”“上”);如果isempty(violationBlks) ElementResults = ModelAdvisor.ResultDetail;ElementResults。IsInformer = true;ElementResults。描述=“识别姓名未显示在区块下方的区块。”;ElementResults。状态=“所有区块的名称都显示在区块下方。”;mdladvObj.setCheckResultStatus(true);其他的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金宝appulink.ID.getHandle (resultDetailObjs(我). data);set_param(块,“NamePlacement”“正常”);结束结果= ModelAdvisor。文本('更改了位置,使块名称位于块下方。');mdladvObj.setActionEnable(假);结束

此支票使用setCallbackFcn类型DetailStyle. 应用此样式将生成默认格式,因此您不必使用ModelAdvisor.FormatTemplate或其他模型Advisor格式化api,以格式化出现在模型Advisor中的结果。有关如何创建这种类型的检查定义函数的更多信息,请参见修复模型以符合您使用模型顾问指定的条件

模型配置参数设置检查

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

这种检查类型需要一个支持XML数据文件,其中包含您想要金宝app检查的模型配置参数设置。这个文件必须在MATLAB路径上。对于本例,该文件为configurationParameterDataFile.xml。有关如何创建此检查类型的详细信息,请参阅创建模型Advisor检查模型配置参数

打开并检查defineConfigurationParameterCheck.m文件

功能定义配置参数检查%创建ModelAdvisor。检查对象并设置属性。rec = ModelAdvisor。检查(“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。值='configurationParameterDataFile.xml';inputParam1。类型=“字符串”;inputParam1。描述=' XML数据文件的名称或完整路径。';inputParam1。setRowSpan ([1]);inputParam1。setColSpan ([1]);rec.setInputParameters ({inputParam1});%——设置修复操作行动= ModelAdvisor.Action;act.setCallbackFcn(@(任务)(Advisor.authoring.CustomCheck.actionCallback...(任务)));的行为。Name =“修改设置”;的行为。描述=“修改模型配置设置。”;rec.setAction(行为);%发布签入演示组。mdladvRoot = ModelAdvisor.Root;mdladvRoot.publish (rec,“演示”);结束

块参数约束检查

defineBlockConstraintCheck.m文件包含defineBlockConstraintCheck检查定义函数,该函数定义一个检查,用于标识不具有矩形形状的逻辑运算符块。这张支票的名字是检查逻辑运算符块的图标形状

这种检查类型支持编辑时检查,并需金宝app要一个包含块约束信息的支持XML文件。这个XML文件必须在MATLAB路径上。对于本例,该文件名为blockConstraintDataFile.xml。有关此检查类型的更多信息,请参见定义Model Advisor检查是否支持或不支持块和参数金宝app

打开并检查defineBlockConstraintCheckM文件

功能rec = advisor .author . 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。值=“blockConstraintData.xml”;inputParam1。类型=“字符串”;inputParam1。描述=' XML数据文件的名称或完整路径。'; inputParam1.setRowSpan([1]);inputParam1.setColSpan([1]);rec.setInputParameters({inputParam1});rec.Support金宝appExclusion=false;rec.SupportLibrary=true;%发布签入演示组。mdladvRoot = ModelAdvisor.Root;mdladvRoot.publish (rec,“演示”);结束

在模型顾问中查看自定义检查

1.为了使自定义检查在Model Advisor中可见,必须刷新Model Advisor检查信息缓存。在MATLAB命令提示符下,键入以下命令:

Advisor.Manager.refresh_customizations ();

2.打开示例模型。

open_system (“AdvisorCustomizationExample.slx”);

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

模型顾问(“AdvisorCustomizationExample.slx”);
更新Model Advisor缓存…模型Advisor缓存已更新。对于新的自定义,要更新缓存,请使用Advisor.Manager。refresh_customizations方法。
Model Advisor正在删除现有的报告。

4.注意海关检查通过产品>演示文件夹中。

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

请注意检查块名称是否显示在块下方检查模型配置参数支票包含行动复选框,并可选择修正任何违反检查的情况。在您的自定义检查定义文件中,您将修复作为action回调函数的一部分提供。有关如何定义自定义检查的详细信息,请参见定义您自己的自定义模型顾问检查

在模型画布上,注意单元延迟和逻辑运算符块以黄色突出显示,因为编辑时间检查处于启用状态。这些块包含检查冲突。编辑时间检查允许您以交互方式检查和修复模型的符合性问题。

若要修复这些冲突,请将鼠标悬停在突出显示的块上,然后单击黄色图标修复按钮打开。

要打开或关闭编辑时检查,请打开建模选项卡上,选择模型Advisor >编辑-时间检查

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

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

1.要打开配置编辑器,请在建模选项卡上,选择模型顾问>模型顾问配置编辑器

2.要添加或删除支票和文件夹,请从中的选项中选择编辑部分。

3.要保存配置,请选择拯救.这时会打开一个窗口,提示您将配置保存为.json文件。对于本例,您不必保存配置,作为相应的demoConfiguration.json这个例子附带了文件。您先前将此文件复制到工作文件夹。

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

bdclose;

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

加载并运行Model Advisor自定义配置

1.打开示例模型。

open_system (“AdvisorCustomizationExample.slx”);

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

模型顾问(“AdvisorCustomizationExample.slx”“配置”...“demoConfiguration.json”);
Model Advisor正在删除现有的报告。

3.打开“警告”对话框。点击删除现有报告并继续

模型顾问仅包含按产品>演示文件夹与三个自定义检查。

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

4.单击检查块名称是否显示在块下方检查。此检查包含警告。要应用修复并解决警告,请在右侧窗格中单击让区块名称出现在区块下方按钮

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

6.点击检查逻辑运算符块的图标形状检查。此检查包含警告,但没有自动修复。若要应用修复,请执行建议的操作。

7.关闭模型和模型Advisor。

bdclose;

8.从工作目录中删除这些文件。通过在命令类型上输入以下命令来刷新Model Advisor检查信息缓存:

Advisor.Manager.refresh_customizations

以编程方式运行Model Advisor自定义配置并查看结果

您可以以编程方式运行Model Advisor配置,然后在Model Advisor中打开结果。

1.调用ModelAdvisor.run函数。

SysResultObjArray=ModelAdvisor.run({“AdvisorCustomizationExample”},...“配置”“demoConfiguration.json”);

2.在Model Advisor中查看结果:

viewReport(SysResultObjArray{1},“马”

3.点击继续在对话框中。现在,您可以像在上一节末尾所做的那样应用修复并解决警告。

4.关闭模型和模型Advisor。

bdclose;

5.从工作目录中删除文件。通过在命令类型中键入以下命令,刷新Model Advisor检查信息缓存:

Advisor.Manager.refresh_customizations