Можно создать собственную проверку, чтобы использовать в 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.
Задайте размещение входных параметров со следующими методами.
Метод | Описание |
---|---|
| Задает размер входной сетки параметра. |
| Задает количество строк, которые параметр занимает во Входной разметочной сетке Параметра. |
| Задает количество столбцов, которые параметр занимает во Входной разметочной сетке Параметра. |
Этот пример показывает, как к входным 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.
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.
ModelAdvisor.Action
| ModelAdvisor.Check
| ModelAdvisor.FactoryGroup
| ModelAdvisor.Group
| ModelAdvisor.InputParameter
| ModelAdvisor.Root.publish
| ModelAdvisor.Task