Создайте проверку на образцовые параметры конфигурации

Чтобы проверить параметры конфигурации для вашей модели, можно создать проверку параметра конфигурации.

Решите который настройки параметра конфигурации использовать для вашей модели.

Направляющие линииСмотрите
Консультативный совет MathWorks® Automotive (MAAB) руководства по моделированию алгоритма управленияАлгоритм управления MAAB, моделируя (Simulink)
Инструкция по моделированию систем повышенной надежностиМоделирование систем повышенной надежности (Simulink)

  1. Создайте файл данных XML, содержащий настройки параметра конфигурации, которые вы хотите проверять. Можно использовать Advisor.authoring.generateConfigurationParameterDataFile или вручную создать файл сами.

  2. Укажите образцовую проверку параметра конфигурации с помощью файла sl_customization.m.

  3. Осуществите проверку своих моделей.

Создайте файл данных для проверки параметра конфигурации панели диагностики

Этот пример показывает, как создать файл данных для панели 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>

    В этом примере ограничения NegativeModelParameterConstraint предупреждают, когда настройками параметра конфигурации для параметра конфигурации не является error или none.

    <NegattiveModelParameterConstraint>
        <value>error</value>
        <value>none</value>
    </NegativeModelParameterConstraint>

    Структура или объект
    <value>
        <param1>xyz</param1>
        <param2>yza</param2>
    </value>

    В этом примере ограничения PositiveModelParameterConstraint предупреждают, когда настройки параметра конфигурации не являются допустимой структурой:

    <PositiveModelParameterConstraint>
        <value>
            <double>a</double>
            <single>b</single>
        </value>
    </PositiveModelParameterConstraint>

    Массив
    <value>
        <element>value</element>
        <element>value</element>
    </value>

    В этом примере ограничения NegativeModelParameterConstraint предупреждают, когда настройки параметра конфигурации являются неверным массивом:

    <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 предупреждают, когда настройки параметра конфигурации являются недопустимым массивом структур:

    <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>

    В этом примере тег действия фиксации задает новый параметр конфигурации, устанавливающий как warning.

    <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>

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

| | |

Похожие темы