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

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

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

mdl = 'sltestFuelRateControlExample';
open_system(mdl);

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

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

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

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

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

A Тестовой обвязки с именем fuel_rate_control_cgv была создана для всей модели. Обвязка можно открыть, щелкнув по значку «Perspectives pullout» в правом нижнем углу полотна модели и выбрав 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 секунд симуляции тест находится в режиме стабилизации, где входы замкнутого цикла от объекта передаются к контроллеру. Входы дросселя и скорости заданы в номинальных значениях, которые находятся в пределах нормальной рабочей огибающей контроллера. The 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')

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

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

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

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

Кроме того, в менеджере тестов выберите CGV Test1 узел на панели «Test Browser» и нажатии кнопки Запуска на панели инструментов. Результат прохождения/непрохождения доступен на панели Результаты и Программные продукты.

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

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

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