exponenta event banner

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

Проверьте эквивалентность модели в обычном режиме и режиме моделирования 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);

Создайте тестовый жгут для проверки 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 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

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

  1. На панели инструментов диспетчера тестирования щелкните стрелку «Создать» и выберите «Файл теста» > «Пустой файл теста».

  2. Укажите тестовый файл как testHarnessEquivalence.mldatx. Менеджер тестов создает тестовый файл с новым набором тестов и базовым тестом по умолчанию.

  3. На панели «Обозреватель тестов» выберите базовый тестовый пример. New Test Case 1и нажмите кнопку «Удалить».

  4. Выбрать New Test Suite 1.

  5. На панели инструментов щелкните стрелку «Создать» и выберите «Тест эквивалентности».

  6. На панели «Обозреватель тестов» щелкните правой кнопкой мыши новый тест эквивалентности и выберите Rename. Назовите новый тест эквивалентности SIL Equivalence Test.

Назначьте тестовый жгут тестовому случаю эквивалентности Simulation 1.

  1. Разверните «Моделирование 1» и «Тестируемая система».

  2. Нажмите кнопку Использовать текущую модель (Use current model), чтобы назначить sltestNormalSILEquivalenceExample в модель.

  3. Разверните узел «Тестовый жгут».

  4. Нажмите кнопку Refresh, чтобы получить обновленный список доступных тестовых жгутов.

  5. Выберите SIL_Harness в меню «Электрический жгут» для использования в качестве тестовой системы.

Назначить sltestNormalSILEquivalenceExample модель как Моделирование 2.

  1. Свернуть моделирование 1.

  2. Разверните «Моделирование 2» и «Тестируемая система».

  3. Нажмите кнопку Использовать текущую модель (Use current model), чтобы назначить sltestNormalSILEquivalenceExample в модель.

  4. Свернуть моделирование 2.

Зафиксируйте критерии эквивалентности. В разделе Критерии эквивалентности (Equality Criteria) щелкните Захват (Capture), чтобы запустить тестовый жгут в моделировании 1 и определить сигнал эквивалентности.

Выполнение тестового случая и просмотр результатов

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

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

См. также

Связанные темы