Чтобы проверить параметры конфигурации для вашей модели, можно создать проверку параметра конфигурации.
Решите который настройки параметра конфигурации использовать для вашей модели.
| Направляющие линии | Смотрите |
|---|---|
| Консультативный совет MathWorks® Automotive (MAAB) руководства по моделированию алгоритма управления | Алгоритм управления MAAB, моделируя (Simulink) |
| Инструкция по моделированию систем повышенной надежности | Моделирование систем повышенной надежности (Simulink) |
Создайте файл данных XML, содержащий настройки параметра конфигурации, которые вы хотите проверять. Можно использовать Advisor.authoring.generateConfigurationParameterDataFile или вручную создать файл сами.
Укажите образцовую проверку параметра конфигурации с помощью файла sl_customization.m.
Осуществите проверку своих моделей.
Этот пример показывает, как создать файл данных для панели Diagnostics образцовая проверка параметра конфигурации, которая предупреждает когда:
Algebraic loop установлен в none
Minimize algebraic loop не установлен в error
Block Priority Violation не установлен в error
В примере, чтобы создать файл данных, вы используете функцию Advisor.authoring.generateConfigurationParameterDataFile.
В командной строке введите vdp.
В окне модели выберите Simulation> Model Configuration Parameters. В панели Diagnostics, набор параметры конфигурации можно следующим образом:
Algebraic loop к none
Minimize algebraic loop к error
Block Priority Violation к error
Используйте Advisor.authoring.generateConfigurationParameterDataFile, чтобы создать файл данных, задающий ограничения параметра конфигурации в панели Diagnostics. Кроме того, чтобы создать проверку с действием фиксации, установите FixValue на истину. В командной строке введите:
model='vdp'; dataFileName = 'ex_DataFile.xml'; Advisor.authoring.generateConfigurationParameterDataFile(dataFileName,... model, 'Pane', 'Diagnostics', 'FixValues', true);
В Командном окне выберите ex_DataFile.xml. Файл данных открывается в редакторе MATLAB®.
Minimize algebraic loop (командная строка: ArtificialAlgebraicLoopMsg), маркировка параметра конфигурации задает value error с fixvalue error. Когда вы осуществляете проверку параметра конфигурации с помощью ex_DataFile.xml, сбоев проверки, если установкой Minimize algebraic loop не является error. Проверка фиксирует действие, изменяет установку на error.
Block Priority Violation (команда line:BlockPriorityViolationMsg) маркировка параметра конфигурации задает value error с fixvalue error. Когда вы осуществляете проверку параметра конфигурации с помощью ex_DataFile.xml, сбоев проверки, если установкой Block Priority Violation не является error. Проверка фиксирует действие, изменяет установку на error.
В ex_DataFile.xml отредактируйте Algebraic loop (команда line:AlgebraicLoopMsg) маркировка параметра так, чтобы проверка предупредила, если value является none. Поскольку вы задаете параметр конфигурации, который вы не хотите, вам нужен NegativeModelParameterConstraint. Кроме того, чтобы создать подпроверку, которая не имеет действия фиксации, удалите строку с маркировкой <fixvalue>. Маркировка для параметра конфигурации смотрит можно следующим образом:
<!-- Algebraic loop: (AlgebraicLoopMsg)-->
<NegativeModelParameterConstraint>
<parameter>AlgebraicLoopMsg</parameter>
<value>none</value>
</NegativeModelParameterConstraint>В ex_DataFile.xml удалите строки с маркировкой для параметров конфигурации, которые вы не хотите проверять. Файл данных ex_DataFile.xml обеспечивает маркировку только для Algebraic loop, Minimize algebraic loop и Block Priority Violation. Например, ex_DataFile.xml выглядит подобным:
<?xml version="1.0" encoding="utf-8"?>
<customcheck xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://www.w3schools.com
MySchema.xsd">
<checkdata>
<!-- Algebraic loop: (AlgebraicLoopMsg)-->
<NegativeModelParameterConstraint>
<parameter>AlgebraicLoopMsg</parameter>
<value>none</value>
</NegativeModelParameterConstraint>
<!--Minimize algebraic loop: (ArtificialAlgebraicLoopMsg)-->
<PositiveModelParameterConstraint>
<parameter>ArtificialAlgebraicLoopMsg</parameter>
<value>error</value>
<fixvalue>error</fixvalue>
</PositiveModelParameterConstraint>
<!--Block priority violation: (BlockPriorityViolationMsg)-->
<PositiveModelParameterConstraint>
<parameter>BlockPriorityViolationMsg</parameter>
<value>error</value>
<fixvalue>error</fixvalue>
</PositiveModelParameterConstraint>
</checkdata>
</customcheck>
Проверьте синтаксис данных с Advisor.authoring.DataFile.validate. В командной строке введите:
dataFile = 'myDataFile.xml'; msg = Advisor.authoring.DataFile.validate(dataFile); if isempty(msg) disp('Data file passed the XSD schema validation.'); else disp(msg); end
Этот пример показывает, как создать проверку на панель Diagnostics образцовые параметры конфигурации с помощью файла данных и sl_customization файла. Во-первых, вы указываете проверку с помощью sl_customization файла. Используя ex_DataFile.xml, проверка предупреждает когда:
Algebraic loop установлен в none
Minimize algebraic loop не установлен в error
Block Priority Violation не установлен в error
Проверка фиксирует действие, изменяет настройки Minimize algebraic loop и Block Priority Violation к error.
Проверка использует файл данных ex_DataFile.xml, созданный в, Создают Файл данных для Проверки Параметра конфигурации Панели Диагностики.
Закройте Model Advisor и вашу модель, если любой открыт.
Используйте следующий файл sl_customization.m, чтобы задать и указать, проверяют Example: Check model configuration parameters.
function sl_customization(cm) % register custom checks. cm.addModelAdvisorCheckFcn(@defineModelAdvisorChecks); % register items to factory group. cm.addModelAdvisorTaskFcn(@defineModelAdvisorGroups); %% defineModelAdvisorChecks function defineModelAdvisorChecks rec = ModelAdvisor.Check('com.mathworks.Check1'); rec.Title = 'Example: Check model configuration parameters'; rec.setCallbackFcn(@(system)(Advisor.authoring.CustomCheck.checkCallback... (system)), 'None', 'StyleOne'); rec.TitleTips = 'Example check for model configuration parameters'; % --- data file input parameters rec.setInputParametersLayoutGrid([1 1]); inputParam1 = ModelAdvisor.InputParameter; inputParam1.Name = 'Data File'; inputParam1.Value = 'ex_DataFile.xml'; inputParam1.Type = 'String'; inputParam1.Description = 'Name or full path of XML data file.'; inputParam1.setRowSpan([1 1]); inputParam1.setColSpan([1 1]); rec.setInputParameters({inputParam1}); % -- set fix operation act = ModelAdvisor.Action; act.setCallbackFcn(@(task)(Advisor.authoring.CustomCheck.actionCallback... (task))); act.Name = 'Modify Settings'; act.Description = 'Modify model configuration settings.'; rec.setAction(act); mdladvRoot = ModelAdvisor.Root; mdladvRoot.register(rec); %% defineModelAdvisorGroups function defineModelAdvisorGroups mdladvRoot = ModelAdvisor.Root; % --- sample factory group 1 rec = ModelAdvisor.FactoryGroup('com.mathworks.Test.factoryGroup'); rec.DisplayName='Example: My Group'; rec.addCheck('com.mathworks.Check1'); mdladvRoot.publish(rec);
Создайте Example: Check model configuration parameters. В командной строке, введите:
Advisor.Manager.refresh_customizations
В командной строке введите vdp.
В окне модели выберите Simulation> Model Configuration Parameters. В панели Diagnostics, чтобы инициировать предупреждения проверки, устанавливают параметры конфигурации можно следующим образом:
Algebraic loop к none
Minimize algebraic loop к warning
Block Priority Violation к warning
От окна модели выберите Analysis> Model Advisor> Model Advisor, чтобы открыть Model Advisor.
На левой панели выберите By Task > Example: My Group > Example: Check model configuration parameters. На правой панели Data File установлен в ex_DataFile.xml.
Нажмите Run This Check. Проверка Model Advisor предупреждает, что параметры конфигурации не установлены в значения, заданные в ex_DataFile.xml. Для параметров конфигурации с положительным ограничением, помечающим (PositiveModelParameterConstraint), рекомендуемые значения получены из маркировки value. Для параметров конфигурации с отрицательным ограничением, помечающим (NegativeModelParameterConstraint), значения, не рекомендуемые, получены из маркировки value.
Algebraic loop (AlgebraicLoopMsg) - маркировка ex_DataFile.xml не задает действие фиксации для AlgebraicLoopMsg. Подпроверка передает только, когда установка не установлена в none.
Minimize algebraic loop (ArtificialAlgebraicLoopMsg) - маркировка ex_DataFile.xml задает subcheck с действием фиксации для ArtificialAlgebraicLoopMsg, который передает только, когда установкой является error. Действие фиксации изменяет установку на error.
Block priority violation (BlockPriorityViolationMsg) - маркировка ex_DataFile.xml задает subcheck с действием фиксации для BlockPriorityViolationMsg, который не передает, когда установкой является warning. Действие фиксации изменяет установку на error.
В разделе Action диалогового окна Model Advisor нажмите Modify Settings. Model Advisor обновляет параметры конфигурации для Block priority violation и Minimize algebraic loop.
Запустите By Task > Example: My Group > Example: Check model configuration parameters. Проверка предупреждает, потому что Algebraic loop установлен в none.
На правой панели окна Model Advisor используйте ссылку Algebraic loop (AlgebraicLoopMsg), чтобы открыть Simulation> Model Configuration Parameters> Diagnostics. Установите Algebraic loop на warning или error.
Запустите By Task > Example: My Group > Example: Check model configuration parameters. Передачи проверки.
Вы используете файл данных XML, чтобы создать проверку параметра конфигурации. Чтобы создать файл данных, можно использовать Advisor.authoring.generateConfigurationParameterDataFile или вручную создать файл сами. Файл данных содержит маркировку, которая задает поведение проверки. Каждый образцовый параметр конфигурации, заданный в файле данных, является подпроверкой. Структура для файла данных следующие:
<?xml version="1.0" encoding="utf-8"?>
<customcheck xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://www.w3schools.com
MySchema.xsd">
<messages>
<Description>Description of check</Description>
<PassMessage>Pass message</PassMessage>
<FailMessage>Fail message</FailMessage>
<RecommendedActions>Recommended action</RecommendedActions>
</messages>
<checkdata>
<!--Command line name of configuration parameter-->
<PositiveModelParameterConstraint>
<parameter>Command-line name of configuration parameter</parameter>
<value>Value that you want configuration parameter to have</value>
<fixvalue>Specify value for a fix action</fixvalue>
<dependson>ID of configuration parameter subcheck that must pass
before this subcheck runs</value>
</PositiveModelParameterConstraint>
<!-- Command line name of configuration parameter-->
<NegativeModelParameterConstraint>
<parameter>Command line name of configuration parameter</parameter>
<value>Value that you do not want configuration parameter to have</value>
<fixvalue>Specify value for a fix action</fixvalue>
<dependson>ID of configuration parameter subcheck that must pass
before this subcheck runs</value>
</NegativeModelParameterConstraint>
</checkdata>
</customcheck>
Тег <messages> содержит:
Описание- (Необязательно) Описание проверки. Отображенный в окне Model Advisor.
PassMessage - (Необязательно) сообщение Передачи, отображенное в окне Model Advisor.
FailMessage - (Необязательно) сообщение Сбоя, отображенное в окне Model Advisor.
RecommendedActions - (Необязательно) Рекомендуемые действия отобразились в окне Model Advisor, когда проверка не передает.
Тег <messages> является дополнительным. Advisor.authoring.generateConfigurationParameterDataFile не генерирует маркировку <messages>.
В теге <checkdata> файл данных задает два типа ограничений:
PositiveModelParameterConstraint - Задает параметр конфигурации, устанавливающий это, вы хотите.
NegativeModelParameterConstraint - Задает параметр конфигурации, устанавливающий это, вы не хотите.
В теге для каждого из двух типов ограничений, для каждого параметра конфигурации, который вы хотите проверять, файл данных имеет следующие теги:
parameter - Задает параметр конфигурации, который вы хотите проверять. Маркировка использует имя командной строки для параметра конфигурации. Например:
<PositiveModelParameterConstraint>
<parameter>BlockPriorityViolationMsg</parameter>
</PositiveModelParameterConstraint>
<NegativeModelParameterConstraint>
<parameter>AlgebraicLoopMsg</parameter>
</NegativeModelParameterConstraint>значение- Задает установку (установки) для параметра конфигурации. Можно задать больше чем один тег value.
При использовании PositiveModelParameterConstraint value задает установку (установки), которую вы хотите для параметра конфигурации. Для NegativeModelParameterConstraint value задает установку (установки) вы, которые не хотят для параметра конфигурации.
Можно задать value с помощью формата в этой таблице.
| Ввод | Формат | Пример |
|---|---|---|
| Скалярное значение |
<value>xyz</value> | В этом примере ограничения <NegattiveModelParameterConstraint>
<value>error</value>
<value>none</value>
</NegativeModelParameterConstraint> |
| Структура или объект |
<value>
<param1>xyz</param1>
<param2>yza</param2>
</value> | В этом примере ограничения <PositiveModelParameterConstraint>
<value>
<double>a</double>
<single>b</single>
</value>
</PositiveModelParameterConstraint> |
| Массив |
<value>
<element>value</element>
<element>value</element>
</value> | В этом примере ограничения <NegativeModelParameterConstraint>
<value>
<element>A</element>
<element>B</element>
</value>
</NegativeModelParameterConstraint> |
| Массив структур |
<value>
<element>
<param1>xyz</param1>
<param2>yza</param2>
</element>
<element>
<param1>xyz</param1>
<param2>yza</param2>
</element>
</value>
| В этом примере ограничения <NegativeModelParameterConstraint>
<value>
<element>
<double>a</double>
<single>b</single>
</element>
<element>
<double>a</double>
<single>b</single>
</element>
</value>
</NegativeModelParameterConstraint> |
fixvalue - (Необязательно) Задает установку, чтобы использовать, когда применение Model Advisor фиксирует действие.
Можно задать fixvalue с помощью формата в этой таблице.
| Ввод | Формат | Пример |
|---|---|---|
| Скалярное значение |
<fixvalue>xyz</fixvalue> | В этом примере тег действия фиксации задает новый параметр конфигурации, устанавливающий как <PositiveModelParameterConstraint>
<value>error</value>
<fixaction>warning</fixaction>
</PositiveModelParameterConstraint> |
| Структура или объект |
<fixvalue>
<param1>xyz</param1>
<param2>yza</param2>
</fixvalue> | В этом примере тег действия фиксации задает новую установку параметра конфигурации для структуры. <PositiveModelParameterConstraint>
<value>
<double>a</double>
<single>b</single>
</value>
<fixvalue>
<double>c</double>
<single>d</single>
</fixvalue>
</PositiveModelParameterConstraint> |
| Массив |
<fixvalue>
<element>value</element>
<element>value</element>
</fixvalue> | В этом примере тег действия фиксации задает новую установку параметра конфигурации для массива. <NegativeModelParameterConstraint>
<value>
<element>A</element>
<element>B</element>
</value>
<fixvalue>
<element>C</element>
<element>D</element>
</fixvalue>
</NegativeModelParameterConstraint> |
| Массив структур |
<fixvalue>
<element>
<param1>xyz</param1>
<param2>yza</param2>
</element>
<element>
<param1>xyz</param1>
<param2>yza</param2>
</element>
</fixvalue>
| В этом примере тег действия фиксации задает новые настройки параметра конфигурации для массива структур. <NegativeModelParameterConstraint>
<value>
<element>
<double>a</double>
<single>b</single>
</element>
<element>
<double>a</double>
<single>b</single>
</element>
</value>
<fixvalue>
<element>
<double>c</double>
<single>d</single>
</element>
<element>
<double>c</double>
<single>d</single>
</element>
</fixvalue>
</NegativeModelParameterConstraint> |
dependson - (Необязательно) Задает необходимую как условие подпроверку.
В этом примере dependson указывает, что параметр конфигурации подпроверяет, что ID_B должен передать перед подпроверкой параметра конфигурации выполнения ID_A.
<PositiveModelParameterConstraint id="ID_A">
<dependson>ID_B</value>
</PostitiveModelParameterConstraint>
Следующая маркировка задает подпроверку на параметр конфигурации SolverType. Если параметр конфигурации установлен в Fixed-Step, передачи подпроверки.
<PositiveModelParameterConstraint id="ID_A">
<parameter>SolverType</parameter>
<value>Fixed-step</value>
</PostitiveModelParameterConstraint>Следующая маркировка задает подпроверку на параметр конфигурации AlgebraicLoopMsg. Если параметр конфигурации установлен в none или warning, передачи подпроверки. Если подпроверка не передает, проверка фиксируют действие, изменяет параметр конфигурации к error.
<PositiveModelParameterConstraint id="ID_A">
<parameter>AlgebraicLoopMsg</parameter>
<value>none</value>
<value>warning</value>
<fixvalue>error</value>
</PostitiveModelParameterConstraint><PositiveModelParameterConstraint id="A">
<parameter>ReservedNameArray</parameter>
<value>
<element>A</element>
<element>B</element>
</value>
<value>
<element>A</element>
<element>C</element>
</value>
</PositiveModelParameterConstraint><PositiveModelParameterConstraint id="A">
<parameter>ReplacementTypes</parameter>
<value>
<double>a</double>
<single>b</single>
</value>
<value>
<double>c</double>
<single>b</single>
</value>
<fixvalue>
<double>a</double>
<single>b</single>
</fixvalue>
</PositiveModelParameterConstraint>Следующая маркировка задает подпроверку на параметр конфигурации SolverType. Подпроверка на SolverType запускается только после передач подпроверки ID_B. Если подпроверка theID_B не передает, подпроверка на SolverType не запускается. Model Advisor сообщает, что необходимому как условие ограничению не соответствуют.
Если выполнения подпроверки SolverType и SolverType установлены в Fixed-Step, передачи подпроверки SolverType. Если подпроверка запускает и не передает, проверка фиксируют действие, изменяет параметр конфигурации к Fixed-Step.
<PositiveModelParameterConstraint id="ID_A">
<parameter>SolverType</parameter>
<value>Fixed-step</value>
<fixvalue>Fixed-step</value>
<dependson>ID_B</value>
</PostitiveModelParameterConstraint>Следующая маркировка задает подпроверку на параметр конфигурации SolverType. Подпроверка не передает, если параметр конфигурации установлен в Fixed-Step.
<NegativeModelParameterConstraint id="ID_A">
<parameter>SolverType</parameter>
<value>Fixed-step</value>
</NegativeModelParameterConstraint>Следующая маркировка задает подпроверку на параметр конфигурации SolverType. Если параметр конфигурации установлен в Fixed-Step, подпроверка не передает. Если подпроверка не передает, проверка фиксируют действие, изменяет параметр конфигурации к Variable-Step.
<NegativeModelParameterConstraint id="ID_A">
<parameter>SolverType</parameter>
<value>Fixed-step</value>
<fixvalue>Variable-step</value>
</NegativeModelParameterConstraint>Следующая маркировка задает проверку на параметр конфигурации SolverType. Подпроверка на SolverType запускается только после передач подпроверки ID_B. Если подпроверка theID_B не передает, подпроверка на SolverType не запускается. Model Advisor сообщает, что необходимому как условие ограничению не соответствуют.
Если выполнения подпроверки SolverType и SolverType установлены в Fixed-Step, подпроверка не передает. Проверка фиксирует действие, изменяет параметр конфигурации к Variable-Step.
<NegativeModelParameterConstraint id="ID_A">
<parameter>SolverType</parameter>
<value>Fixed-step</value>
<fixvalue>Variable-step</value>
<dependson>ID_B</value>
</NegativeModelParameterConstraint>Advisor.authoring.CustomCheck.actionCallback | Advisor.authoring.CustomCheck.checkCallback | Advisor.authoring.DataFile.validate | Advisor.authoring.generateConfigurationParameterDataFile