Рабочий процесс верификации генерации кода с Simulink Test

Выполните верификацию генерации кода для модели. Copyright 2015 The MathWorks, Inc.

В этом примере показано, как выполнить верификацию генерации кода (CGV) для модели с помощью тестовых обвязок, Тестовая Последовательность блокируется и менеджер по тесту. Переключитесь на директорию с полномочиями записи.

mdl = 'sltestFuelRateControlExample';
open_system(mdl);

Описание модели

Этот пример использует модель топливного контроллера скорости для бензинового двигателя. Диспетчер использует четыре датчика от системы, чтобы определить соответствующий топливный уровень. Эти четыре датчика, используемые от системы, являются углом дросселя, скоростью, EGO и разнообразным абсолютным давлением [MAP].

Модель использует три подсистемы, чтобы вычислить топливный уровень с помощью входных параметров датчика: control logic, airflow calc, и fuel_calc. Базовая управляющая логика реализована в графике Stateflow®, названном control_logic. Управляющая логика обрабатывает один отказы датчика и защиту превышения скорости механизма. Если один датчик перестал работать, операция продолжается, но смесь воздуха/топлива более богата, чтобы позволить более сглаженное выполнение за счет более высокой эмиссии. Если больше чем один датчик перестал работать, механизм закрывается как меры по обеспечению безопасности, поскольку отношением воздуха/топлива нельзя управлять надежно.

Модель оценивает уровень потока воздуха и умножает оценку обратной величины желаемого отношения, чтобы дать топливный уровень.

Открытие тестовой обвязки

Тестовая обвязка под названием fuel_rate_control_cgv был создан для целой модели. Обвязка может быть открыта путем нажатия на перспективный значок отступления в нижнем правом углу холста модели и выбора fuel_rate_control_cgv миниатюра. Убедитесь, что верхний уровень модели в поле зрения, прежде чем вы нажмете на значок. Альтернативно, обвязка может быть открыта с помощью следующего API:

sltest.harness.open(mdl,'fuel_rate_control_cgv');

Моделирование объекта

Тестовая обвязка была смоделирована как тест с обратной связью с блоком Test Sequence, чтобы управлять топливным контроллером скорости. Вычисленный fuel_rate от выхода контроллера используется, чтобы управлять моделью бензинового двигателя. Топливный уровень объединяется с фактическим воздушным потоком в Engine Gas Dynamics подсистема, чтобы определить получившееся отношение смеси, как обнаружено в выхлопе. Обратная связь от кислородного датчика до блока Test Sequence обеспечивает корректировку с обратной связью оценки уровня для того, чтобы обеспечить идеальное отношение смеси.

Заметьте, что объект был смоделирован в тестовой обвязке вместо основной модели. Основная модель свободна от посторонней помехи так, чтобы код мог быть легко создан для ECU с минимальными изменениями в модели.

Моделирование отказов датчика

Блок Test Sequence под названием Sequence Sensor Failures модели различный отказ датчика и сценарии превышения скорости механизма. Это принимает обратную связь от объекта и управляет контроллером с данными о датчике. Этот шаблон моделирования позволяет блоку Test Sequence управлять сигналами обратной связи, полученными блоком Controller и функцией как холст для авторской разработки тестов. Откройте блок Test Sequence, чтобы видеть смоделированные сценарии тестирования.

open_system('fuel_rate_control_cgv/Sequence Sensor Failures');

Сценарии тестирования

В течение первых 10 секунд симуляции тест находится в режиме стабилизации, куда входные параметры замкнутого цикла от объекта передаются до контроллера. Дроссель и входные параметры скорости установлены в номинальную стоимость, которая является в нормальном рабочем диапазоне контроллера. Stabilize_Engine шаг моделирует это состояние.

Тест затем продвигается через следующие режимы:

  1. Test_Overspeed: Дроссель сползается от 30 до 700

  2. Reset_To_Normal_Speed: Дроссель сползается вниз к 400

  3. Test_EGO_Fault: Симулируйте отказ в течение 3 секунд, затем возвратитесь к нормальному состоянию

  4. Test_Throttle_Fault: Симулируйте отказ в течение 3 секунд, затем возвратитесь к нормальному состоянию

  5. Test_Speed_Fault: Симулируйте отказ в течение 3 секунд, затем возвратитесь к нормальному состоянию

  6. Test_Map_Fault: Симулируйте отказ в течение 3 секунд, затем возвратитесь к нормальному состоянию

  7. Test_Multi_Fault: Симулируйте MAP и отказ EGO в течение 3 секунд

  8. Reset_MAP: Нормируйте датчик MAP и симулируйте только отказ EGO в течение 3 секунд

  9. Reset_To_Normal: Отключите тест

Протестируйте оценки

Блок Test Sequence Assess Controller проверяет контроллер выход для различных тестов, смоделированных Sequence Sensor Failures блок. Следующие оценки моделируются:

  1. Утверждайте, что режим заправки находится в Warmup режим в течение первых 4,8 секунд

  2. Утверждайте, что заправка режима переключается на Overspeed режим, когда фактическая скорость превышает 628

  3. Утверждайте, что режим заправки не находится в Single_Failure режим, когда несколько датчиков перестали работать.

open_system('fuel_rate_control_cgv/Assess Controller');

Выполнение симуляции

Симулируйте тестовую обвязку путем нажатия на Play в панели инструментов и наблюдайте fuel_rate и сигналы состава топливно-воздушной смеси в осциллографе. Альтернативно, запустите следующую команду: sim('fuel_rate_control_cgv')

Заметьте, что никакие утверждения не инициировали во время симуляции, которые указывают, что все оценки смоделировали в Assess Controller передача.

Конфигурирование компенсационного Теста в менеджере по Тесту

Как часть верификации генерации кода (CGV) для системы контроллера, важно утверждать, что функциональное поведение контроллера - то же самое во время нормального и программного обеспечения в цикле (SIL) режимы симуляции. Менеджер по тесту используется, чтобы выполнить эту верификацию.

Используйте функциональный sltestmgr открыть менеджера по тесту и загрузить тестовый файл в качестве примера с помощью функции: sltest.testmanager.TestFile('sltestFuelRateControlComparisonTestSuite.mldatx')

Моделирование теста

Эквивалентный тест был сконфигурирован в менеджере по тесту так, чтобы контроллер был симулирован в нормальном и режиме SIL, и числовые результаты сравнены между этими двумя запусками. Исследуйте структуру теста путем нажатия на различные узлы тестовой иерархии в Тестовом Браузере.

Выполнение теста

Запустите тест в менеджере по тесту, использующем функциональный sltest.testmanager.run.

Альтернативно, В менеджере по тесту, выберите CGV Test1 узел в Тестовом Браузере разделяет на области и нажимает Run в панели инструментов. Результат передачи/сбоя доступен в панели Результатов и Артефактов.

Создание отчета

Отчет может затем быть сгенерирован, чтобы просмотреть результат эквивалентного теста. Используйте следующие команды, чтобы сгенерировать отчет. Можно также запустить отчет после создания с помощью API с LaunchReport набор опции к true.

sltest.testmanager.report(cgvresult,'cgvresult.zip','IncludeTestResults',int32(0));
close_system(mdl, 0);
clear mdl;