如何在模型顾问中自动加载配置并添加自定义检查?

7次浏览(过去30天)
巴斯蒂安·
巴斯蒂安· 2013年1月29日
你好,
我有一个问题,我在模型顾问加载自定义检查,见下面一个简单的例子。另外,我想要模型顾问预加载配置,然后添加我的自定义检查。但是当我加载配置(MAAB_Checks.mat)时,模型顾问没有添加我的mustom检查。
有人知道吗?
MATLAB代码
%函数sl_customization(cm)
% SL_CUSTOMIZATION -模型顾问定制
注册自定义支票
cm.addModelAdvisorCheckFcn (@defineModelAdvisorChecks);
注册自定义工厂组
cm.addModelAdvisorTaskFcn (@defineModelAdvisorTasks);
注册自定义任务。
cm.addModelAdvisorTaskAdvisorFcn (@defineTaskAdvisor);
注册自定义进程回调
cm.addModelAdvisorProcessFcn (@ModelAdvisorProcessFunction);
% -----------------------------
%定义模型顾问检查
% -----------------------------
函数defineModelAdvisorChecks
mdladvRoot = ModelAdvisor.Root;
%——样本检查2
rec = ModelAdvisor。检查(“com.mathworks.sample.Check01”);
rec.Title =“检查编译器配置”
rec.TitleTips ='示例样式1回调'
rec.setCallbackFcn (@checkcompilersettings“没有”“StyleOne”);
%设置固定操作
myAction2 = ModelAdvisor.Action;
myAction2.setCallbackFcn (@checkcompilersettingsAction);
myAction2。Name =“修复配置”
myAction2。描述='点击按钮配置模型'
rec.setAction (myAction2);
mdladvRoot.publish (rec,“自定义”);
% -----------------------------
定义Model Advisor任务
详情请参考Model Advisor API文档。
% -----------------------------
函数defineTaskAdvisor
mdladvRoot = ModelAdvisor.Root;
MAT1 = ModelAdvisor。任务(“com.mathworks.sample.TaskSample1”);
MAT1。DisplayName =自定义检查编译器设置
MAT1.setCheck (“com.mathworks.sample.Check01”);
mdladvRoot.register (MAT1);
MAG = ModelAdvisor。集团(“com.mathworks.sample.GroupSample”);
MAG.DisplayName =自定义检查配置
MAG.addTask (MAT1);
mdladvRoot.publish (MAG);%发布在根目录下
% -----------------------------
%定义Model Advisor流程回调
详情请参考Model Advisor API文档。
% -----------------------------
函数[checkCellArray taskCellArray] = ModelAdvisorProcessFunction(stage, ~, checkCellArray, taskCellArray)
开关阶段
情况下“配置”
ModelAdvisor.setConfiguration (“. . \ PrjTools \ MAAB_Checks.mat”);
情况下“process_results”
结束
% -----------------------------
StyleThree回调函数,
详情请参考Model Advisor API文档。
% -----------------------------
函数ResultDescription = checkcompilersettings(system)
ResultDescription = {};
mdladvObj = 金宝appSimulink.ModelAdvisor.getModelAdvisor(system);
找到当前系统内的所有块
mdladvObj.setCheckResultStatus(真正的);%设置通过
Avtlsettings {1} = tl_get(broot,“codeopt.cleancode”);
Avtlsettings {2} = tl_get(broot,“codeopt.target”);
Avtlsettings {3} = tl_get(broot,“frameopt.simconfig”);
mdladvObj.setActionEnable(假);
如果Avtlsettings {1} ~= 1
ResultDescription{end+1} = ModelAdvisor。文本(“清除代码选项不是1”);
mdladvObj.setCheckResultStatus(假);%设置通过
mdladvObj.setActionEnable(真正的);
mdladvObj.setCheckErrorSeverity (1);
结束
如果~ strcmp (avtlsettings {2},“通用TriCore /任务”
ResultDescription{end+1} = ModelAdvisor。文本(“错误的编译器”);
mdladvObj.setCheckResultStatus(假);%设置通过
mdladvObj.setActionEnable(真正的);
mdladvObj.setCheckErrorSeverity (1);
结束
如果~ strcmp (avtlsettings {3},“TBTC /任务”
ResultDescription{end+1} = ModelAdvisor。文本(错误的评估板”);
mdladvObj.setCheckResultStatus(假);%设置通过
mdladvObj.setActionEnable(真正的);
mdladvObj.setCheckErrorSeverity (1);
结束
% -----------------------------
用于模型优化设置的样本动作回调函数
详情请参考Model Advisor API文档。
% -----------------------------
函数result = checkcompilersettingsAction(taskobj)
mdladvObj = taskobj.MAObj;
tl_set (bdroot“codeopt.cleancode”1);
tl_set (bdroot“codeopt.target”“通用TriCore /任务”);
tl_set (bdroot“frameopt.simconfig”“TBTC /任务”);
result = ModelAdvisor。文本(“代码选项设置”);
mdladvObj.setActionEnable(假);

答案(3)

Paraschivu Andreea
Paraschivu Andreea 2013年2月8日
你知道怎么做吗,还是还不知道?我对这个话题也很感兴趣


Alexandre de Langlade
Alexandre de Langlade 2021年4月6日
编辑:Alexandre de Langlade 2021年4月6日
如果您的代码没问题,Model Advisor实际上会将您的检查添加到它的检查列表中,但是由于您的配置文件,您可能看不到它 MAAB_Checks.mat 它还没有包含它,因为它以前不存在。
如果您使用Model Advisor配置编辑器编辑该文件,使其包含您的新检查,然后重新加载Model Advisor,它应该会出现。

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!