要检查模型是否符合您公司的标准和建模指南,您可以自定义模型顾问。此示例显示如何将自定义检查添加到模型顾问并删除您不需要的送货检查。您可以保存自定义配置并将其部署到开发组中的其他人。部署自定义配置允许您的开发组使用相同的检查组查看模型。
这个例子定义了这三种类型的自定义检查:
通过/失败检查,将结果按块和子系统分组,并提供修复操作
验证模型配置参数设置的检查
为块参数设置指定约束并提供修复操作的检查
在本例中,您将向Model Advisor添加三个检查,并删除所有装运检查。
1.将当前文件夹设置为可写目录。
2.复制脚本prequest_cust_chk_code.
到您当前的文件夹并运行脚本。该脚本将此示例所需的文件复制到当前文件夹。
Copyfile(FullFile(Matlabroot,“例子”那'slcheck'那“主要”那“prepare_cust_chk_code.m”),...“prepare_cust_chk_code.m”那“f”);运行(“prepare_cust_chk_code.m”);
3.其中一个文件,sl_customization.m
,包括A.sl_customization
定义自定义检查的函数。打开并检查sl_customization.m
文件。
函数sl_customization (cm)%sl_customization - 模型顾问定制演示。%版权归MathWorks公司所有。%注册自定义检查cm.addModelAdvisorCheckFcn (@defineModelAdvisorChecks);% -----------------------------%定义模型顾问检查% -----------------------------函数defineModelAdvisorChecks defineDetailStyleCheck;defineConfigurationParameterCheck;defineNewBlockConstraintCheck;
这sl_customization
函数接受自定义管理器对象。自定义管理器对象包括addModelAdvisorCheckFcn
海关检查登记方法。该方法的输入是一个函数的句柄(defineModelAdvisorChecks
)。此函数包含对对应于三种自定义检查的三个检查定义函数的调用。
这someedeTailstyleCheck.m.
文件包含someedeTailstylecheck.
定义函数,该函数定义一个检查,该检查列出了名称不显示在块下方的块。这个检查提供了一个修复,将这些名称移动到块下面。此检查的名称是检查块名称是否出现在块下面.打开并检查someedeTailstyleCheck.m.
文件。
函数mdladvRoot = ModelAdvisor.Root;%创建ModelAdvisor。检查对象并设置属性。rec=ModelAdvisor.Check(“com.mathworks.sample.detailStyle”);rec.title ='检查区块名称是否出现在区块下方';Rec.TitleTips =.'检查区块名称的位置';rec.setCallbackFcn (@DetailStyleCallback“没有”那“DetailStyle”);%创建ModelAdvisor。行动object for setting fix operation.myAction = ModelAdvisor.Action;myAction.setCallbackFcn (@ActionCB);myAction。Name =“让区块名称出现在区块下方”;myAction。描述='点击按钮将区块名称置于区块下方';rec.setAction(myAction);mdladvRoot.publish(rec,'演示');%发布调查Demo组。结尾% -----------------------------这个回调函数使用的是DetailStyle CallbackStyle类型。% -----------------------------函数DetailStyleCallback(system,CheckObj)mdladvObj=Simu金宝applink.ModelAdvisor.getModelAdvisor(system);%得到对象找到所有名称不出现在块下面的块violationBlks = find_system(系统,“类型”那'堵塞'那...'姓名普莱克'那“替代”那...“ShowName”那'在');如果isempty(violationBlks) ElementResults = ModelAdvisor.ResultDetail;ElementResults。IsInformer = true;ElementResults。描述=“识别姓名未显示在区块下方的区块。”;ElementResults。状态=“所有块都有块下面显示的名称。;mdladvObj.setCheckResultStatus(真正的);别的为了i = 1:numel(intationblks)元素结果(1,i)= modeladadvisor.resultdetail;结尾为了i = 1:元素个数(ElementResults) ModelAdvisor.ResultDetail.setData (ElementResults(我),“希德”我,violationBlks {});ElementResults(我)。描述=“识别姓名未显示在区块下方的区块。”;ElementResults(我)。状态=“以下块具有不显示在块下方的名称:';要素结果(i).修正='更改位置,使得块名称在块下方。;结尾mdladvObj.setCheckResultStatus(假);mdladvObj.setActionEnable(真正的);结尾checkobj.setResultDetails(ElementResults);结尾% -----------------------------%此操作回调函数更改块名称的位置。% -----------------------------函数结果= ActionCB(taskobj)mdladvobj = taskobj.maobj;checkobj = taskobj.check;结果etailobjs = checkobj.resultdetails;为了i = 1:元素个数(resultDetailObjs)%为他们中的每一个采取一些行动block 金宝app= simulink.id.gethandle(结果etailobjs(i).data);set_param(块,'姓名普莱克'那'普通的');结尾结果= modeladadvisor.text(“更改了区块的位置,使区块名称位于区块下方。”);mdladvobj.setActionbable(false);结尾
此检查使用setcallbackfcn.
类型的DetailStyle
.应用此样式将生成默认格式,因此不必使用ModelAdvisor。FormatTemplate
或其他模型Advisor格式化api,以格式化出现在模型Advisor中的结果。有关如何创建这种类型的检查定义函数的更多信息,请参见修复模型以符合您用模型顾问指定的条件.
这definececonfigurationParameterCheck.m.
文件包含defineConfigurationParameterCheck
检查定义函数,它定义了一个标识模型配置参数设置的检查,这些参数设置可能影响MISRA C:2012兼容代码生成。此检查的名称是检查模型配置参数.
这种检查类型需要一个支持XML数据文件,其中包含您想要金宝app检查的模型配置参数设置。这个文件必须在MATLAB路径上。对于本例,该文件为configurationParameterDataFile.xml。
有关如何创建此检查类型的详细信息,请参见创建模型顾问检查模型配置参数.
打开并检查definececonfigurationParameterCheck.m.
文件.
函数defineConfigurationParameterCheck%创建ModelAdvisor。检查对象并设置属性。rec=ModelAdvisor.Check('com.mathworks.sample.configurationParameter');rec.title ='检查模型配置参数';rec.setcallbackfcn(@(system)(advisor.authing.customcheck.checkcallback...(系统)),“没有”那“StyleOne”);Rec.TitleTips =.“确定可能影响MISRA C:2012兼容代码生成的配置参数。”;%——数据文件输入参数rec.setInputParametersLayoutGrid ([1]);inputParam1 = ModelAdvisor.InputParameter;inputParam1。Name =“数据文件”;inputParam1。值=“configurationParameterDataFile.xml”;inputparam1.type =.“字符串”;inputParam1。描述=' XML数据文件的名称或完整路径。';inputParam1。setRowSpan ([1]);inputParam1。setColSpan ([1]);rec.setInputParameters ({inputParam1});% - 设置修复操作行动= ModelAdvisor.Action;act.setCallbackFcn(@(任务)(Advisor.authoring.CustomCheck.actionCallback...(任务)));的行为。Name =“修改设置”;Act.Description =.“修改模型配置设置。”建议采取行动(法案);%发布调查Demo组。mdladvRoot = ModelAdvisor.Root;mdladvRoot.publish (rec,'演示');结尾
这defineNewBlockConstraintCheck.m
文件包含defineNewBlockConstraintCheck
检查定义函数,它定义了一个识别没有矩形形状的逻辑运算符块的检查。此检查的名称是检查逻辑运算符块的图标形状.
此检查类型支持编辑时间检查。金宝app有关此检查类型的更多信息,请参阅定义受支持和不受支持的块和参数的模型Advisor检查金宝app.
打开并检查defineNewblockConstraintchec.
K..m
文件.
函数rec = advisor .author . createblockconstraintcheck ('com.mathworks.sample.blockConstraint'那...'限制', @createBlockConstraints);%约束创建是块约束检查定义的一部分rec.title ='检查逻辑操作员块的图标形状';Rec.TitleTips =.'检查逻辑运算符块的图标形状。逻辑运算符的图标形状应为矩形。;%发布调查Demo组。mdladvRoot = ModelAdvisor.Root;mdladvRoot.publish (rec,'演示');结尾函数约束= createBlockConstraints()创建块约束c1 = Advisor.authoring.PositiveBlockParameterConstraint;c1。ID ='id_c1';c1。BlockType ='逻辑';c1。ParameterName =“IconShape”;c1。金宝appSupportedParameterValues = {'矩形的'};c1。ValueOperator =“情商”;约束= {c1};结尾
这createBlockConstraints
函数定义块约束C1.
这个Advisor.authoring.createBlockConstraintCheck
功能有一个'限制'
调用约束创建函数的名称-值参数createBlockConstraints
.
1.为了使您的自定义检查在Model Advisor中可见,您必须刷新Model Advisor检查信息缓存。在MATLAB命令提示符下,输入以下命令:
advisor.Manager.refresh_customizations();
2.打开示例模型。
open_system (“AdvisorCustomizationExample.slx”);
3.在建模标签,打开模型的顾问.你也可以通过在MATLAB命令提示符下输入以下命令来打开Model Advisor:
modeladvisor (“AdvisorCustomizationExample.slx”);
更新Model Advisor缓存…模型Advisor缓存已更新。对于新的自定义,要更新缓存,请使用Advisor.Manager。refresh_customizations方法。
4.遵守海关检查中的规定通过产品>演示文件夹中。
在校验定义函数中,发布
命令将检查添加到通过产品>演示文件夹中。注意,如果您已经有一个默认配置集,则检查不会出现在Model Advisor中。通过选择恢复默认的传送配置>恢复默认配置.
请注意,检查块名称是否出现在块下面和检查模型配置参数检查包含一个行动框中,可以选择修复任何检查冲突。在自定义检查定义文件中,可以将修复作为操作回调函数的一部分提供。有关如何定义自定义检查的详细信息,请参阅定义您自己的自定义模型顾问检查.
这检查逻辑运算符块的图标形状检查包含一个建议的行动并支持编金宝app辑时检查。你可以使用修理按钮进行更改并解决块约束冲突。有关如何定义块约束检查的更多信息,请参阅定义受支持和不受支持的块和参数的模型Advisor检查金宝app.
在模型画布上,可以看到Unit Delay和Logical Operator块用黄色高亮显示,因为打开了编辑时检查。这些区块包含检查违规。编辑时检查允许您以交互方式检查和修复模型的遵从性问题。
要修复这些违规,将鼠标悬停在突出显示的块上并单击黄色图标。带有修理按钮打开。
转动编辑时间检查或关闭建模选项卡,选择模型Advisor >编辑-时间检查.
要指定哪些检查要包含在Model Advisor中,哪些检查要用于编辑时检查,请使用Model Advisor配置编辑器。
1.要打开配置编辑器,请在建模选项卡,选择模型顾问>配置编辑器.
2.要添加或删除检查和文件夹,请从编辑部分。
3.要保存配置,请选择保存.这时会打开一个窗口,提示您将配置保存为.json文件。对于本例,您不必保存配置,作为相应的demoConfiguration.json
这个例子附带了文件。您先前将此文件复制到工作文件夹。
4.关闭模型和模型Advisor配置编辑器。
bdclose;
保存配置时,系统会提示您是否要将该配置保存为默认配置。设置默认配置允许Model Advisor在每次打开Model Advisor时使用该配置。有关详细信息,请参阅使用Model Advisor配置编辑器自定义模型顾问.
1.打开示例模型。
open_system (“AdvisorCustomizationExample.slx”);
2.打开Model Advisor。通过选择加载自定义配置设置>加载配置.在开放对话框,导航到并选择demoConfiguration.json
文件。或者在MATLAB命令提示符处输入命令:
modeladvisor (“AdvisorCustomizationExample.slx”那“配置”那...'democonfiguration.json');
3.打开“警告”对话框。点击删除现有报告并继续.
模型顾问只包含产品> Demo包含三个自定义检查的文件夹。
3.单击演示文件夹,然后单击运行选定的检查。
4.单击检查块名称是否出现在块下面检查。此检查包含警告。要在右窗格上应用修复并解决警告,请单击使块名称显示在块下方按钮。
5.单击检查模型配置参数检查。此检查包含警告。要应用修复并解决警告,请单击修改设置按钮。
6.单击检查逻辑运算符块的图标形状检查。此检查包含一个警告,但Model Advisor中没有自动修复。要应用修复,可以遵循推荐的操作或使用修理从编辑时间检查以采取建议的操作按钮。
7.关闭模型和模型Advisor。
bdclose;
8.从工作目录中删除文件。在命令类型中键入以下命令,刷新Model Advisor检查信息缓存:
Advisor.Manager.refresh\u自定义
您可以以编程方式运行模型顾问配置,然后打开模型顾问中的结果。
打电话给ModelAdvisor.run
功能。
SysResultObjArray = ModelAdvisor.run ({“AdvisorCustomizationExample”},...“配置”那'democonfiguration.json');
2.在Model Advisor中查看结果:
viewReport (SysResultObjArray {1},“马”)
3.点击继续在对话框中。现在,您可以像上一节末尾所做的那样应用修复程序和解决警告。
4.关闭模型和模型顾问。
bdclose;
5.从工作目录中删除这些文件。通过在命令类型上输入以下命令来刷新Model Advisor检查信息缓存:
Advisor.Manager.refresh\u自定义