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