Задайте собственные проверки

О собственных проверках

Можно создать собственную проверку, чтобы использовать в Model Advisor. Создание собственных проверок предоставляет вам способность задать, какие условия и параметры конфигурации Model Advisor рассматривает.

Вы задаете собственные проверки в одной или нескольких функциях, которые задают свойства каждого экземпляра ModelAdvisor.Check класс. Задайте один экземпляр этого класса для каждой собственной проверки, которую вы хотите добавить в Model Advisor и указать собственную проверку.

Совет

Можно добавить проверку в несколько папок путем создания task.

Содержимое определений проверки

Когда вы задаете проверку Model Advisor, она содержит информацию, перечисленную в следующей таблице.

СодержимоеОписание
Проверяйте (требуемый) IDОднозначно определяет проверку. Model Advisor использует этот ID, чтобы получить доступ к проверке.
Обработайте, чтобы проверять (требуемую) функцию обратного вызоваФункция, которая задает содержимое проверки.
Проверяйте (рекомендуемое) имяСоздает имя для проверки, которую отображает Model Advisor.
Модель, компилирующая (дополнительный)Задает, скомпилирована ли модель для контрольного анализа.
Проверяйте (дополнительные) свойстваСоздает пользовательский интерфейс с проверкой. При добавлении проверок как задач Model Advisor использует свойства задачи вместо свойств проверки, за исключением Visible и LicenseName.
Введите (дополнительные) параметрыДобавляют входные параметры, которые запрашивают вход от пользователя. Model Advisor использует вход, чтобы выполнить проверку.
(Дополнительное) действиеДобавляет действие фиксации.
(Дополнительная) кнопка Explore ResultДобавляет кнопка Explore Result, которую пользователь нажимает, чтобы открыть Проводник Результата Model Advisor.

Отобразите и включите проверки

Можно создать проверку и задать, как это появляется в Model Advisor. Можно задать, когда отобразить проверку, или может ли пользователь выбрать или очистить проверку с помощью Visible, Enable, и Value свойства ModelAdvisor.Check класс.

Примечание

При добавлении проверок в Model Advisor как задачи задайте эти свойства в ModelAdvisor.Task класс. Если вы задаете свойства в обоих ModelAdvisor.Check и ModelAdvisor.Task, ModelAdvisor.Task свойства более приоритетны, за исключением Visible и LicenseName свойства.

Следующий график иллюстрирует как Visible, Enable, и Value свойства взаимодействуют.

Задайте, где собственные проверки появляются

Задайте, куда Model Advisor помещает собственные проверки с помощью следующих инструкций:

  • Чтобы поместить регистрацию новой папки в корень Model Advisor, используйте ModelAdvisor.Group класс.

  • Чтобы поместить регистрацию новой папки в папку By Task, используйте ModelAdvisor.FactoryGroup класс.

  • Чтобы поместить регистрацию папки By Product, используйте ModelAdvisor.Root.publish метод.

    Примечание

    Если папка By Product не отображена в окне Model Advisor, выберите Show By Product Folder из диалогового окна Settings> Preferences.

Проверяйте функцию определения

Этот пример показывает функцию, которая задает собственные проверки, сопоставленные с функциями обратного вызова, описанными в, Создают Функции обратного вызова и Результаты, и опции компиляции модели, описанные в, Задают Опцию Компиляции для Собственных проверок. Model Advisor компилирует и симулирует модель; функция определения проверки возвращает массив ячеек собственных проверок, которые будут добавлены к Model Advisor.

Определения проверки в примере используют задачи, описанные в Defining Custom Groups.

% Defines custom Model Advisor checks
function defineModelAdvisorChecks

% Sample Check 0: Check whose Results are Viewed as Detailed Result Collections
rec = ModelAdvisor.Check('com.mathworks.sample.Check0');
rec.Title = 'Check whether block names appear below blocks (recommended check style)';
rec.TitleTips = 'Example new style callback (recommended check style)';
rec.setCallbackFcn(@SampleNewCheckStyleCallback,'None','DetailStyle');
% set fix operation
myAction0 = ModelAdvisor.Action;
myAction0.setCallbackFcn(@sampleActionCB0);
myAction0.Name='Make block names appear below blocks';
myAction0.Description='Click the button to place block names below blocks';
rec.setAction(myAction0);
mdladvRoot.register(rec);

% Sample check 1: Informational check
rec = ModelAdvisor.Check('mathworks.example.configManagement');
rec.Title = 'Informational check for model configuration management';
setCallbackFcn(rec, @modelVersionChecksumCallbackUsingFT,'None','StyleOne');
rec.CallbackContext = 'PostCompile';
mdladvRoot = ModelAdvisor.Root;
mdladvRoot.register(rec);

% Sample check 2: Basic Check with Pass/Fail Status
rec = ModelAdvisor.Check('mathworks.example.unconnectedObjects');
rec.Title = 'Check for unconnected objects';
setCallbackFcn(rec, @unconnectedObjectsCallbackUsingFT,'None','StyleOne');
mdladvRoot = ModelAdvisor.Root;
mdladvRoot.register(rec);

% Sample Check 3: Check with Subchecks and Actions
rec = ModelAdvisor.Check('mathworks.example.optimizationSettings');
rec.Title = 'Check safety-related optimization settings';
setCallbackFcn(rec, @OptmizationSettingCallback,'None','StyleOne');
% Define an automatic fix action for this check
modifyAction = ModelAdvisor.Action;
setCallbackFcn(modifyAction, @modifyOptmizationSetting);
modifyAction.Name = 'Modify Settings';
modifyAction.Description = ['Modify model configuration optimization' ...
                            ' settings that can impact safety.'];
modifyAction.Enable = true;
setAction(rec, modifyAction);
mdladvRoot = ModelAdvisor.Root;
mdladvRoot.register(rec);

Задайте входные параметры проверки

Входными параметрами можно запросить вход прежде, чем осуществить проверку. Входные Define параметры с помощью ModelAdvisor.InputParameter класс в функции собственной проверки. Необходимо задать один экземпляр этого класса для каждого входного параметра, который вы хотите добавить в проверку Model Advisor.

Задайте размещение входных параметров со следующими методами.

МетодОписание

ModelAdvisor.Check.setInputParametersLayoutGrid

Задает размер входной сетки параметра.

ModelAdvisor.InputParameter.setRowSpan

Задает количество строк, которые параметр занимает во Входной разметочной сетке Параметра.

ModelAdvisor.InputParameter.setColSpan

Задает количество столбцов, которые параметр занимает во Входной разметочной сетке Параметра.

В этом примере показано, как к входным define параметрам, которые вы добавляете в собственную проверку. Необходимо включать входные определения параметра в определении собственной проверки. Следующий код, когда включено в определение собственной проверки, создает три входных параметра.

rec = ModelAdvisor.Check('com.mathworks.sample.Check1');
rec.setInputParametersLayoutGrid([3 2]);
% define input parameters
inputParam1 = ModelAdvisor.InputParameter;
inputParam1.Name = 'Skip font checks.';
inputParam1.Type = 'Bool';
inputParam1.Value = false;
inputParam1.Description = 'sample tooltip';
inputParam1.setRowSpan([1 1]);
inputParam1.setColSpan([1 1]);
inputParam2 = ModelAdvisor.InputParameter;
inputParam2.Name = 'Standard font size';
inputParam2.Value='12';
inputParam2.Type='String';
inputParam2.Description='sample tooltip';
inputParam2.setRowSpan([2 2]);
inputParam2.setColSpan([1 1]);
inputParam3 = ModelAdvisor.InputParameter;
inputParam3.Name='Valid font';
inputParam3.Type='Combobox';
inputParam3.Description='sample tooltip';
inputParam3.Entries={'Arial', 'Arial Black'};
inputParam3.setRowSpan([2 2]);
inputParam3.setColSpan([2 2]);
rec.setInputParameters({inputParam1,inputParam2,inputParam3});

Model Advisor отображает эти входные параметры в поле Input Parameters.

Задайте представления проводника результата Model Advisor

list view обеспечивает способ для пользователей зафиксировать предупреждения проверки и отказы с помощью Проводника Результата Model Advisor. Создание представления списка позволяет вам:

  • Добавьте кнопку Explore Result в собственную проверку в окне Model Advisor.

  • Предоставьте информацию, чтобы заполнить Проводник Результата Model Advisor.

В этом примере показано, как задать представления списка. Необходимо сделать кнопку Explore Result видимым использованием ModelAdvisor.Check.ListViewVisible свойство в функции собственной проверки, и включает определения представления списка в функции обратного вызова проверки. Необходимо задать один экземпляр этого класса для каждого представления списка, что вы хотите добавить к окну Model Advisor Result Explorer.

Следующий код, когда включено в функцию определения проверки, добавляет кнопку Explore Result в регистрацию Model Advisor.

rec = ModelAdvisor.Check('com.mathworks.sample.Check1');
% add 'Explore Result' button
rec.ListViewVisible = true;

Следующий код, когда включено в функцию обратного вызова проверки, предоставляет информацию, чтобы заполнить Проводник Результата Model Advisor.

mdladvObj = Simulink.ModelAdvisor.getModelAdvisor(system);
mdladvObj.setCheckResultStatus(true);

% define list view parameters
myLVParam = ModelAdvisor.ListViewParameter;
myLVParam.Name = 'Invalid font blocks'; % the name appeared at pull down filter
myLVParam.Data = get_param(searchResult,'object')';
myLVParam.Attributes = {'FontName'}; % name is default property
mdladvObj.setListViewParameters({myLVParam});

Задайте действия проверки

action обеспечивает способ для вас задать действие, которое Model Advisor выполняет, чтобы зафиксировать проверку Model Advisor. Когда вы задаете действие, окно Model Advisor включает поле Action ниже поля Analysis.

Вы задаете действия с помощью ModelAdvisor.Action класс в функции собственной проверки. Необходимо задать:

  • Один экземпляр этого класса для каждых мер, которые вы хотите принять.

  • Одна функция обратного вызова действия для каждого действия.

Этот пример показывает информацию, необходимо заполнить Action, окружают Model Advisor. Включайте это в функцию определения проверки.

rec = ModelAdvisor.Check('mathworks.example.optimizationSettings');
% Define an automatic fix action for this check
modifyAction = ModelAdvisor.Action;
modifyAction.setCallbackFcn(@modifyOptmizationSetting);
modifyAction.Name = 'Modify Settings';
modifyAction.Description = ['Modify model configuration optimization' ...
                            ' settings that can impact safety'];
modifyAction.Enable = true;
rec.setAction(modifyAction);

Model Advisor, на правой панели, отображает поле Action.

Смотрите также

| | | | | |

Связанные примеры

Больше о