Проверьте эквивалентность модели в режиме нормальной и 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);
Команда, чтобы создать обвязку сгенерирует код. Переключитесь на директорию с полномочиями записи.
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
Создайте эквивалентный тест.
От менеджера по тесту панель инструментов кликните по Новой стрелке и выберите Test File> Blank Test File.
Задайте тестовый файл как testHarnessEquivalence.mldatx
. Менеджер по тесту создает тестовый файл с новым тестовым набором и базовым тестом по умолчанию.
В Тестовой панели Браузера выберите базовый тест, New Test Case 1
, и нажмите Delete.
Выберите New Test Suite 1
.
От панели инструментов кликните по Новой стрелке и выберите Equivalence Test.
В Тестовой панели Браузера щелкните правой кнопкой по новому эквивалентному тесту и выберите Rename
. Назовите новый эквивалентный тест SIL Equivalence Test
.
Присвойте тестовую обвязку эквивалентной Симуляции теста 1.
Расширьте симуляцию 1 и система под тестом.
Нажмите кнопку текущей модели Использования, чтобы присвоить sltestNormalSILEquivalenceExample
Модели.
Расширьте тестовую обвязку.
Нажмите Кнопку Обновить, чтобы получить актуальный список доступных тестовых обвязок.
Выберите SIL_Harness из меню Harness, чтобы использовать в качестве Системы Под Тестом.
Присвойте модель sltestNormalSILEquivalenceExample
как Симуляцию 2.
Сверните симуляцию 1.
Расширьте симуляцию 2 и система под тестом.
Нажмите кнопку текущей модели Использования, чтобы присвоить sltestNormalSILEquivalenceExample
Модели.
Сверните симуляцию 2.
Получите эквивалентные критерии. Под Эквивалентными Критериями нажмите Capture, чтобы запустить тестовую обвязку в Симуляции 1 и идентифицировать эквивалентный сигнал.
Выберите SIL Equivalence Test
в Тестовом Браузере, разделяют на области и нажимают Run в панели инструментов. Менеджер по тесту переключается на панель Результатов и Артефактов и запускает эквивалентный тест. Тест передает потому что сравнение сигнала между моделью и соответствиями тестовой обвязки. Расширьте набор результатов и установите переключатель Controller:1
, чтобы построить сравнение сигнала.
close_system(mdl, 0); clear mdl harnessOwner cleanup control_in1 origDir out out_data;