Этот пример иллюстрирует использование Проводника Результатов покрытия, чтобы упростить генерацию совокупных данных о покрытии и отчетов, охватывающих набор нескольких выполнений покрытия.
Этот пример использует модель slvnvdemo_ratelim_harness
, чтобы объяснить настройки и опции, чтобы накопить покрытие. В этой модели реализация Ограничителя Регулируемой процентной ставки. Это использует три блока switch, чтобы управлять, когда вывод должен быть ограничен и тип предела, чтобы применяться.
Входные параметры производятся с помощью три Из блоков Рабочей области: получите, возрастающий предел и падающий предел. Значения входных параметров заданы шестью переменными, заданными в рабочей области MATLAB®: t_gain, u_gain, t_pos, u_pos, t_neg, и u_neg.
open_system('slvnvdemo_ratelim_harness');
open_system('slvnvdemo_ratelim_harness/Adjustable Rate Limiter');
Запустите путем открытия настроек покрытия. Из Редактора Simulink выберите Analysis> Coverage> Settings.
Чтобы включить инструмент покрытия, выберите анализ покрытия Enable. Эта установка включает другие опции в панели Покрытия.
В данном примере соберите условие и Decision Coverage. Под панелью Метрик покрытия, набор уровень Структурного покрытия к Решению Условия.
Затем, перейдите к подпанели Результатов, перечисленной в левой стороне диалогового окна Параметров конфигурации. Выберите Show Results Explorer.
Нажмите ОК, чтобы применить ваши выбранные настройки и закрыть это диалоговое окно.
Первый тест осуществляет сценарий, где входные значения не изменяются быстро. Это использует синусоиду в качестве времени, отличаясь сигнал и константы для повышения и падения пределов.
t_gain = (0:0.02:2.0)'; u_gain = sin(2*pi*t_gain);
Вычислите минимальное и максимальное изменение входа варьирования времени с помощью функции diff MATLAB.
max_change = max(diff(u_gain)) min_change = min(diff(u_gain))
max_change = 0.1253 min_change = -0.1253
На основе этих минимальных и максимальных скоростей изменения, набор ограничения скорости для 1
и -1
. По сути, скорость изменения входа будет хорошо в этих пределах для этого тестового прогона.
t_pos = [0;2]; u_pos = [1;1]; t_neg = [0;2]; u_neg = [-1;-1];
Моделируйте модель с этим первым набором входных переменных.
sim('slvnvdemo_ratelim_harness');
Когда симуляция завершится, Проводник Результатов покрытия будет открываться. В этой точке Текущие Совокупные Данные содержат только это первое запущенное покрытие (теговый как Выполнение 1). Проводник Результатов первоначально показывает информацию относительно этого последнего запущенного покрытия, включая сводные данные результатов для каждой активированной метрики.
Чтобы отслеживать намерение этой симуляции, введите текст "Test within rate limits"
в поле Description и нажмите Apply.
Второй тест дополняет первый случай возрастающим усилением, которое превышает ограничение скорости. После секунды это увеличивает ограничение скорости так, чтобы изменения усиления были ниже того предела.
t_gain = [0;2]; u_gain = [0;4]; t_pos = [0;1;1;2]; u_pos = [1;1;5;5]*0.02; t_neg = [0;2]; u_neg = [0;0];
Моделируйте модель с этим вторым набором переменных.
sim('slvnvdemo_ratelim_harness');
Теперь, когда несколько выполнений покрытия были выполнены, можно сгенерировать совокупные отчеты покрытия.
Во-первых, добавьте краткое описание этого выполнения, как был сделан для предыдущей симуляции. Введите текст "Test rising rate limit"
в поле Description для Запущенных 2 и нажмите Apply.
Существуют различные форматы отчетов покрытия, которые могут быть сгенерированы. Чтобы визуализировать, как новая симуляция влияет на совокупные результаты покрытия, можно сгенерировать совокупный отчет о выполнении работ.
В Проводнике Результатов, при Настройках, выбирают Show совокупный отчет о выполнении работ и нажимают Apply.
Нажмите на Current Cumulative Data в крайней левой панели Проводника Результатов. Обратите внимание на то, что Сводные данные указывают на совокупные результаты покрытия, накопленные от Запущенного 1 и Выполнения 2. Нажмите на Generate Report, чтобы создать совокупный отчет о выполнении работ.
Совокупный отчет о выполнении работ имеет три столбца: Текущее Выполнение, Delta, и Совокупный. Текущие отображения столбца Выполнения, которые покрытие от последней симуляции перечислило под Текущими Совокупными Данными (который Запущен 2 в этом случае). Отображения столбца Delta покрытие, представленное текущим выполнением, которое не было достигнуто в совокупных результатах перед этой симуляцией. Совокупный столбец дает текущие совокупные результаты покрытия.
Третий тест является зеркальным отображением второго с возрастающим усилением, замененным падающим усилением.
t_gain = [0;2]; u_gain = [-0.02;-4.02]; t_pos = [0;2]; u_pos = [0;0]; t_neg = [0;1;1;2]; u_neg = [-1;-1;-5;-5]*0.02;
Моделируйте модель с этим третьим набором переменных.
sim('slvnvdemo_ratelim_harness');
Еще раз добавьте краткое описание последнего выполнения. Введите текст "Test falling rate limit"
в поле Description для Запущенных 3 и нажмите Apply.
Перейдите к Текущим Совокупным Данным и нажмите Generate Report, чтобы создать совокупный отчет о выполнении работ для этого последнего выполнения.
Заметьте, что с этим последним выполнением, совокупные результаты достигают полного охвата для Решения, Условия и метрик Выполнения.
Если вы решаете, что конкретное запущенное покрытие не необходимо, можно исключить это выполнение из совокупного набора данных и сгенерировать новый совокупный отчет, как желаемый.
В Проводнике Результатов, под Текущими Совокупными Данными, щелкают правой кнопкой по Run 1 и выбирают Exclude из совокупных данных.
Теперь, когда вы выбрали желаемое подмножество тестовых прогонов, можно сгенерировать отчет покрытия для накопленных результатов.
Перейдите к Настройкам, отмена выбора Показывают совокупный отчет о выполнении работ, и затем нажимают Apply.
Перейдите к Текущим Совокупным Данным и нажмите Generate Report.
Совокупный отчет покрытия отображает результаты, сопоставленные с текущими совокупными данными. Заметьте под разделом Tests, существует один тест с описанием "Test rising rate limit,Test falling rate limit"
, указывая, что этот тест содержит накопленные результаты выполнений 2 и 3.
Раздел Summary показывает, что эти совокупные результаты достигают полного охвата для всех анализируемых метрик.
close_system('slvnvdemo_ratelim_harness',0);