Проверьте эквивалентность модели в обычном режиме и режиме моделирования SIL.
В этом примере показано, как проверить эквивалентность двух моделей с использованием тестовых жгутов и диспетчера тестов. Одна модель работает в обычном режиме, а модель тестового электрического жгута, созданная из подсистемы, работает в режиме программного обеспечения в цикле (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

Создайте тест эквивалентности.
На панели инструментов диспетчера тестирования щелкните стрелку «Создать» и выберите «Файл теста» > «Пустой файл теста».
Укажите тестовый файл как testHarnessEquivalence.mldatx. Менеджер тестов создает тестовый файл с новым набором тестов и базовым тестом по умолчанию.
На панели «Обозреватель тестов» выберите базовый тестовый пример. New Test Case 1и нажмите кнопку «Удалить».
Выбрать New Test Suite 1.
На панели инструментов щелкните стрелку «Создать» и выберите «Тест эквивалентности».
На панели «Обозреватель тестов» щелкните правой кнопкой мыши новый тест эквивалентности и выберите Rename. Назовите новый тест эквивалентности SIL Equivalence Test.

Назначьте тестовый жгут тестовому случаю эквивалентности Simulation 1.
Разверните «Моделирование 1» и «Тестируемая система».
Нажмите кнопку Использовать текущую модель (Use current model), чтобы назначить sltestNormalSILEquivalenceExample в модель.
Разверните узел «Тестовый жгут».
Нажмите кнопку Refresh, чтобы получить обновленный список доступных тестовых жгутов.
Выберите SIL_Harness в меню «Электрический жгут» для использования в качестве тестовой системы.

Назначить sltestNormalSILEquivalenceExample модель как Моделирование 2.
Свернуть моделирование 1.
Разверните «Моделирование 2» и «Тестируемая система».
Нажмите кнопку Использовать текущую модель (Use current model), чтобы назначить sltestNormalSILEquivalenceExample в модель.
Свернуть моделирование 2.
Зафиксируйте критерии эквивалентности. В разделе Критерии эквивалентности (Equality Criteria) щелкните Захват (Capture), чтобы запустить тестовый жгут в моделировании 1 и определить сигнал эквивалентности.

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


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