Протестируйте две симуляции на эквивалентность

Проверьте эквивалентность модели в режиме нормальной и SIL симуляции.

Этот пример показывает, как протестировать на эквивалентность между двумя моделями с помощью тестовых обвязок и менеджера по тесту. Образцовые выполнения в режиме normal mode и модель тестовой обвязки, созданная из подсистемы, запускаются в программном обеспечении в режиме (SIL) цикла.

Эквивалентный тест в менеджере по тесту сравнивает вывод сигнала между двумя симуляциями, чтобы определить эквивалентность. Сигналы из основной модели и тестовой обвязки настраиваются для входа в систему этого примера. Регистрируемые сигналы используются в качестве эквивалентных критериев между режимом SIL и нормальным.

Сконфигурируйте модель

Откройте модель sltestNormalSILEquivalenceExample.

mdl = 'sltestNormalSILEquivalenceExample';
harnessOwner = 'sltestNormalSILEquivalenceExample/Controller';
open_system(mdl);

Включите сигнал, входящий в систему модель.

set_param(mdl,'SignalLogging','on','SignalLoggingName', 'SIL_signals');

Отметьте Подсистему контроллера вывод и входные сигналы для журналирования.

ph_controller_in = get_param('sltestNormalSILEquivalenceExample/Controller/In1','PortHandles');
ph_controller_out = get_param('sltestNormalSILEquivalenceExample/Controller','PortHandles');

set_param(ph_controller_in.Outport(1),'DataLogging','on');
set_param(ph_controller_out.Outport(1),'DataLogging','on');
clear ph_controller_in ph_controller_out;

Моделируйте модель и выведите регистрируемые сигналы. Данные сигнала используются в качестве входа для тестовой обвязки.

out = sim(mdl);

Получите регистрируемые данные сигнала.

out_data = out.get('SIL_signals');
control_in1 = out_data.get(2);

Создайте тестовую обвязку для верификации SIL.

Команда, чтобы создать обвязку сгенерирует код. Переключитесь на директорию с полномочиями записи.

origDir = pwd;
dirName = tempname;
mkdir(dirName);
cd(dirName);
cleanup = onCleanup(@()cd(origDir));
sltest.harness.create(harnessOwner,'Name','SIL_Harness','VerificationMode','SIL');
### Starting build procedure for model: Controller
### Successful completion of build procedure for model: Controller
### Creating SIL block ...
Building with 'gcc'.
MEX completed successfully.

Откройте тестовую обвязку.

sltest.harness.open(harnessOwner,'SIL_Harness');

Настройте вход в систему тестовой обвязки

Включите сигнал, входящий в систему тестовая обвязка.

set_param('SIL_Harness','SignalLogging','on','SignalLoggingName', 'SIL_signals');

Отметьте выходной порт тестовой обвязки для журналирования сигнала, чтобы использовать в эквивалентном тесте.

ph_harness_out = get_param('SIL_Harness/Controller','PortHandles');
set_param(ph_harness_out.Outport(1),'DataLogging','on');
clear ph_harness_out;

Присвойте входные данные от симуляции до тестовой обвязки.

set_param('SIL_Harness','LoadExternalInput','on',...
    'ExternalInput','control_in1.Values');

Создайте эквивалентный тест в менеджере по тесту

Откройте менеджера по тесту путем выбора Analysis> Test Manager или команда

sltestmgr

Создайте эквивалентный тест.

  1. От менеджера по тесту панель инструментов кликните по Новой стрелке и выберите Test File> Blank Test File.

  2. Задайте тестовый файл как testHarnessEquivalence.mldatx. Менеджер по тесту создает тестовый файл с новым тестовым набором и базовым тестом по умолчанию.

  3. В Тестовой панели Браузера выберите базовый тест, New Test Case 1, и нажмите Delete.

  4. Выберите New Test Suite 1.

  5. От панели инструментов кликните по Новой стрелке и выберите Equivalence Test.

  6. В Тестовой панели Браузера щелкните правой кнопкой по новому эквивалентному тесту и выберите Rename. Назовите новый эквивалентный тест SIL Equivalence Test.

Присвойте тестовую обвязку эквивалентной Симуляции теста 1.

  1. Расширьте симуляцию 1 и система под тестом.

  2. Нажмите кнопку текущей модели Использования, чтобы присвоить sltestNormalSILEquivalenceExample Модели.

  3. Расширьте тестовую обвязку.

  4. Нажмите Кнопку Обновить, чтобы получить актуальный список доступных тестовых обвязок.

  5. Выберите SIL_Harness из меню Harness, чтобы использовать в качестве Системы Под Тестом.

Присвойте модель sltestNormalSILEquivalenceExample как Симуляцию 2.

  1. Сверните симуляцию 1.

  2. Расширьте симуляцию 2 и система под тестом.

  3. Нажмите кнопку текущей модели Использования, чтобы присвоить sltestNormalSILEquivalenceExample Модели.

  4. Сверните симуляцию 2.

Получите эквивалентные критерии. Под Эквивалентными Критериями нажмите Capture, чтобы запустить тестовую обвязку в Симуляции 1 и идентифицировать эквивалентный сигнал.

Запустите тест и просмотрите результаты

Выберите SIL Equivalence Test в Тестовом Браузере, разделяют на области и нажимают Run в панели инструментов. Менеджер по тесту переключается на панель Результатов и Артефактов и запускает эквивалентный тест. Тест передает потому что сравнение сигнала между моделью и соответствиями тестовой обвязки. Расширьте набор результатов и установите переключатель Controller:1, чтобы построить сравнение сигнала.

close_system(mdl, 0);
clear mdl harnessOwner cleanup control_in1 origDir out out_data;