exponenta event banner

Поток операций проверки генерации кода с Simulink Test

Выполните проверку генерации кода для модели. Авторское право 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');

Моделирование завода

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

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

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

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

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Завершение теста

Оценка испытаний

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

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

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

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

open_system('fuel_rate_control_cgv/Assess Controller');

Выполнение моделирования

Смоделировать тестовый жгут, нажав кнопку «Воспроизвести» на панели инструментов и наблюдая за сигналами соотношения fuel_rate и воздуха и топлива в области. В качестве альтернативы выполните следующую команду: sim('fuel_rate_control_cgv')

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

Конфигурирование теста «back-to-back» в диспетчере тестов

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

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

Моделирование тестового случая

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

Запуск тестового случая

Запустите тест в диспетчере тестов с помощью функции sltest.testmanager.run.

В качестве альтернативы в диспетчере тестирования выберите CGV Test1 в панели «Обозреватель тестов» и нажмите кнопку «Выполнить» на панели инструментов. Результат прохождения/отказа доступен на панели Результаты и артефакты.

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

Затем можно создать отчет для просмотра результатов теста эквивалентности. Для создания отчета используйте следующие команды. Можно также запустить отчет после создания с помощью API с помощью LaunchReport параметр имеет значение true.

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