Этот пример описывает, как сгенерировать тесты, которые ограничивают значения для структур и сигналов шины в модели. Предположим, что ваша модель включает переменную, называемую kpGainsStructure
, которая является структурой в MATLAB® рабочей области. Модель использует блок Bus Selector, чтобы разделить поля структуры на отдельные сигналы шины. Можно ограничить значения структуры или значения сигналов шины, чтобы убедиться, что они находятся в заданной области во время симуляции.
Этот пример описывает, как создать и проанализировать простой Simulink® модель, затем используйте Simulink Design Verifier™, чтобы сгенерировать тесты для модели. Модель содержит входной сигнал In1
значение которого установлено в диапазоне от -1 до 1. kpGainsStructure
- структура, содержащая три поля, Kp1
, Kp2
, и Kp3
, и выводит их в блок Bus Selector, который разделяет поля на отдельные сигналы шины. Блок под названием Mode имеет параметр постоянного значения, который установлен в mode
определяет три сигнала шины как вход в kpGain
блок.
Значение In1
умножается на d
, затем умноженный на выбранный сигнал шины. Результат переходит к блоку Насыщения, предел которого задан между -0,5 и 0,5.
На основе mode
значение, Simulink выбирает одно из трех kpGainsStructure
и определяет ограничения. Входной сигнал к блоку Saturation должен быть ниже нижнего предела или опуститься выше верхнего предела, чтобы удовлетворить цели принятия решения блока Saturation. Затем Simulink Design Verifier настраивает эти параметры, чтобы достичь этого предела. Следующий рабочий процесс поможет вам пройти процесс завершения этого примера.
Предварительно загрузите значение переменного рабочего пространства MATLAB kpGainsStructure
. Структура содержит поля Kp1, Kp2
, и Kp3
.
На вкладке Modeling выберите Model Settings > Model Properties.
Перейдите на вкладку Callbacks.
Нажмите PreLoadFcn, затем загрузите Kp1, Kp2
и Kp3
поля myStruct
:
load('struct_param.mat'); myStruct.Kp1 = 15; myStruct.Kp2 = -5; myStruct.Kp3 = -5; gainsParam = Simulink.Parameter(myStruct); mode = 1; d = Simulink.Parameter(0.012);
Щелкните OK, чтобы закрыть диалоговое окно Свойства модели (Model Properties) и сохранить модель.
Поскольку структурный параметр вызывается блоком Constant, вам нужно задать выход блока Constant как bus.Выполните следующие шаги:
Дважды кликните блок Gains, чтобы открыть Параметры блоков окно.
В разделе Signal Attributes выберите Output data type как Bus:BusO
.
Нажмите OK.
Существует два способа ограничения значений сигналов структуры или шины в Параметр конфигурации окне: с помощью таблицы параметров или файла строения параметра.
Parameter Table
Parameter configuration file
Когда это возможно, таблица параметров автоматически генерирует значения ограничений для каждого параметра, в зависимости от типа данных и местоположения параметра в модели. Для получения дополнительной информации смотрите Задать значения ограничений для параметров.
Выполните следующие шаги, чтобы сгенерировать значение ограничения для каждого параметра:
На вкладке Apps, под Model Verification, Validation, and Test, нажмите Design Verifier.
На вкладке Design Verifier нажмите Test Generation Settings.
В Параметры конфигурации окне выберите Design Verifier > Parameters.
Выберите Enable parameter configuration.
Выберите Use parameter table.
Нажмите Find in Model.
Таблица параметров заполняет параметрами из вашей модели.
В таблице параметров, в Constraint столбце,
{1,2,3}
для mode
[-0.01 0.15]
для d
Нажмите OK.
Это альтернативный подход, который можно использовать, чтобы задать значения ограничений вместо использования Таблицы параметров. Программа Simulink Design Verifier предоставляет шаблон, который можно копировать и редактировать. Для получения дополнительной информации смотрите Файл строения параметра шаблона в Задать значения ограничений для параметров в файлах кода MATLAB. По умолчанию путь к файлу строения параметра:
matlabroot/toolbox/sldv/sldv/sldv_params_template.m
Чтобы связать файл строения параметра с моделью перед анализом модели, в диалоговом окне Параметры конфигурации, на панели Design Verifier > Parameters, убедитесь, что Use parameter table очищено, и введите имя файла строения в поле Parameter configuration file.
Выполните следующие шаги, чтобы задать значения ограничений в файле строения параметра:
В sldv_params_template.m
, введите:
function params = params_config params.mode = {1, 2, 3}; params.d = [-.001 0.15]; params.gainsParam.Kp1 = Sldv.Interval(0, 50); params.gainsParam.Kp2 = Sldv.Interval(-10, 10); params.gainsParam.Kp3 = [-5, 5];
Сохраните файл с именем params_config.m
.
Откройте модель DemoModel
.
На панели Apps, в разделе Model Verification, Validation, and Test, нажмите Design Verifier.
На вкладке Design Verifier нажмите Test Generation Settings.
В Параметры конфигурации окне выберите Design Verifier > Parameters.
Выберите Enable parameter configuration.
Нажмите Browse, затем выберите params_config.m
файл строения параметра, созданный в шаге 2.
Проанализируйте модель с включенными параметр ограничениями и сгенерируйте отчет анализа:
На вкладке Design Verifier, в разделе Mode, выберите Test Generation. Нажмите Generate Tests.
Simulink Design Verifier анализирует вашу модель, чтобы сгенерировать тесты.
Когда программа завершит свой анализ, в окне Simulink Design Verifier Сводные Данные, рядом с отчетом Детальный анализ, выберите HTML.
Программа отображает HTML с именем DemoModel.html
.
В таблицу содержимого отчета Simulink Design Verifier нажмите Test Cases.
Щелкните Test Case 1 для отображения подраздела для этого теста.
Тест 1 показывает, что Simulink Design Verifier настроил все параметры таким образом, чтобы все входы, поступающие от In1 входного сигнала, блока Gain и переменной mode, либо опустились ниже -0,5, либо выше 0,5. При генерации тестов все ограничения удовлетворяют целям.
Точно так же параметры для теста 2 и теста 3 настроены и удовлетворяют целям.