Используйте графики Stateflow®, чтобы создать тестовые векторы, которые изменяются динамически во время симуляции, на основе состояния системы, которую вы моделируете.
Например, предположите, что вы хотите протестировать автоматический автомобильный контроллер передачи в ситуации, где автомобиль курсирует. Чтобы достигнуть курсирующего состояния, драйвер ускоряется до сдвигов передачи в самый высокий механизм, затем ослабляет газовую педаль. Чтобы протестировать этот сценарий, вы могли сгенерировать сигнал, который представляет это поведение, как в следующем блоке Signal Builder.
Однако этот подход имеет ограничения. Значение изменений сигнала на основе времени, но не может динамически ответить на изменения в системе, которыми не управляет одно только время. Например, как сигнал знает, когда передача переключает в самый высокий механизм? В этом случае сигнал принимает, что сдвиг всегда происходит во время 5, потому что это не может протестировать на другие детерминированные условия, такие как скорость автомобиля. Кроме того, вы не можете изменить сигнал на основе выходных параметров из модели.
В отличие от этого, можно использовать диаграммы Stateflow, чтобы разработать тестовые векторы, которые используют условную логику, чтобы оценить и ответить на изменения в системном состоянии, как они происходят. Например, чтобы протестировать курсирующий сценарий, график может оценить вывод, который представляет механизм, располагаются и уменьшают скорость только после сдвигов передачи на самый высокий механизм. Таким образом, автомобиль замедляется как прямой результат переключения передач а не в предопределенное время.
Следующая модель контроллера автоматической коробки передач использует диаграмму Stateflow, чтобы реализовать тестовые векторы, которые представляют тормоз, дроссель и динамику переключения передач. График, названный Динамическими Тестовыми векторами, взаимодействует через интерфейс с остальной частью модели как показано.
График моделирует динамическое отношение между тормозом и дросселем, чтобы протестировать четыре ведущих сценария. Каждый сценарий представлен состоянием.
В некоторых из этих сценариев дроссель изменяется в ответ на время; в других случаях это отвечает на выбор механизма, вывод диаграммы Stateflow Shift_logic. График Shift_logic определяет значение механизма на основе скорости автомобиля.
Ключевые поведения графика тестового вектора и модели:
Динамический график Тестовых векторов представляет каждый тест как исключительное (OR) состояние. Каждое состояние управляет тормозом и значениями дросселя уникальным способом, на основе времени и входных параметров механизма к графику.
График определяет, который тест выполниться от значения постоянного case
сигнала, выведите от блока Signal Builder. Каждый тест соответствует уникальному значению сигналов.
Динамический график Тестовых векторов использует условия на переходах, чтобы протестировать время и переключатель скоростей, и затем настраивает тормоз и дроссель соответственно для каждого ведущего сценария. Диаграммы Stateflow обеспечивают много построений для состояния системы тестирования и отвечающих изменений, включая:
Условная логика (см. Типы Акта государственной власти и Типы Действия Перехода),
Временная логика (см. Выполнение Диаграммы управления при помощи Временной Логики),
Измените операторы обнаружения (см., Обнаруживают Изменения в Значениях данных),
Функции MATLAB® (см. доступ к функциям MATLAB и Данным о Рабочей области в Графиках C),
Модель использует блок Signal Builder, чтобы обеспечить интерфейс для выбора сценариев тестирования, чтобы моделировать.
Выберите и Тесты Выполнения. В Signal Builder выберите и запустите тесты можно следующим образом:
Протестировать: | Сделайте это: |
---|---|
Один случай | Кликните по вкладке, которая соответствует ведущему сценарию, вы хотите протестировать и нажать кнопку Start simulation: |
Все случаи и представляют отчет покрытия модели (требует лицензии на программное обеспечение Simulink® Coverage™), | Нажмите кнопку Run all and produce coverage: |
Блок Signal Builder отправляет в Динамический график Тестовых векторов одно или несколько постоянных значений сигналов, которые соответствуют ведущим сценариям, которые вы выбираете. График использует эти значения, чтобы активировать соответствующие тесты.
Откройте модель sf_test_vectors
.
Откройте Динамический график Тестовых векторов, блок Signal Builder и блок Scope.
Выберите и моделируйте ведущий сценарий от блока Signal Builder, как описано в Тестах Выбора и Выполнения.
Осциллограф показывает взаимодействие между скоростью и дросселем для выбранного сценария.
Управление сценарием | Определите объем отображения | Описание |
---|---|---|
Передача маневра |
| Драйвер ускоряется быстро. В t = 15 секунд, продвигается дроссель в 100. С продолжительным тяжелым дросселем автомобиль ускоряется приблизительно к 100 милям в час и затем переключает в перегрузку приблизительно в t = 21 секунда. Круизы на автомобиле вперед на четвертой передаче для остатка от симуляции. |
Постепенное ускорение |
| Драйвер поддерживает медленный, но устойчивый уровень ускорения. |
Резкое торможение |
| Драйвер ускоряется до сдвигов передачи на третий механизм, затем удаляет ногу из газовой педали. После малой задержки, ноги перемещений к педали тормоза и борется. |
Каботажное судоходство |
| Драйвер ускоряется до сдвигов передачи на самый высокий механизм, затем ослабляет газ. |