Проверьте эквивалентность модели в режиме нормальной и 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: Controller ### Successful completion of build procedure for: Controller ### Creating SIL block ... Building with 'gcc'. MEX completed successfully. Build Summary Top model targets built: Model Action Rebuild Reason =========================================================================================== Controller Code generated and compiled Code generation information file does not exist. 1 of 1 models built (0 models already up to date) Build duration: 0h 0m 27.808s
Откройте тестовую обвязку.
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;