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

Проверьте эквивалентность модели в режиме нормальной и 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: 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

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

  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;

Смотрите также

Похожие темы