Чтобы проверить параметры конфигурации для вашей модели, можно создать проверку параметра конфигурации.
Решите который настройки параметра конфигурации использовать для вашей модели.
Направляющие линии | Смотрите |
---|---|
Консультативный совет 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