Stateflow® - графическое окружение программирования, основанная на finite state machines. С помощью Stateflow, вы можете тестировать и отлаживать свой проект, рассматривать различные сценарии симуляции и генерировать код от вашего конечного компьютера.
Конечные машины состояний являются представлениями динамических систем, которые переходят от одного режима операции (состояния) к другому. Машины состояний:
Служит высокоуровневой начальной точкой для комплексного процесса разработки ПО.
Позволяет вам фокусироваться на рабочих режимах и условиях, требующих перехода от одного режима к следующему режиму.
Помогают вам к проектировать модели, которые остаются ясными и краткими, даже когда уровень сложности модели увеличивается.
Проект систем управления полагается в большой степени на машину состояний, чтобы управлять сложной логикой. Приложения включают разработку самолетов, автомобилей и робототехнических систем управления.
На диаграмме Stateflow вы комбинируете состояния, переходы и данные для реализации конечного конечного автомата. Эта диаграмма Stateflow представляет упрощенную модель логики переключения передач в четырехскоростной системе автоматической коробки передач автомобиля. График представляет каждое положение передачи по состоянию, показанному как прямоугольник с меткой first
, second
, third
, или fourth
. Как и передачи, которые они представляют, эти состояния являются эксклюзивными, поэтому одновременно активно только одно состояние.
Стрела слева от схемы представляет переход по умолчанию и указывает первое состояние, которое станет активным. При выполнении графика это состояние подсвечивается на холсте. Другие стрелы указывают на возможные переходы между состояниями. Чтобы задать динамику конечного автомата, вы связываете каждый переход с логическим условием или событием триггера. Например, этот график контролирует скорость автомобиля и переключается на другую передачу, когда скорость пересекает фиксированный порог. Во время симуляции подсветка на графике изменяется по мере того, как различные состояния становятся активными.
Этот график предлагает простой проект, которая игнорирует важные факторы, такие как скорости вращения двигателя и крутящий момент. Можно создать более комплексную и реалистичную модель, связав эту диаграмму Stateflow с другими компонентами в MATLAB® или Simulink®. Ниже приводятся три возможных подхода.
Этот пример представляет измененную версию системы автоматической коробки передач, которая включает в себя иерархию состояний, временную логику и входные события.
Иерархия: График состоит из сверхгосударственного gear_logic
который окружает четырехскоростной график автоматической коробки передач в предыдущем примере. Этот сверхсостояние контролирует скорость и ускорение автомобиля. Во время выполнения, gear_logic
всегда активно.
Временная логика: В состоянии gear_logic
, действие on every(0.25,sec)
определяет скорость автомобиля. Оператор every
создает таймер MATLAB, который выполняет график и обновляет данные диаграммы speed
каждые 0,25 секунды.
Вход События: События входа SpeedUp
, Cruise
, и SlowDown
сбросить значение данных графика delta
. Эти данные определяют, ускоряет ли машина или поддерживает свою скорость на каждом шаге выполнения.
Вы можете выполнить этот график как объект в MATLAB непосредственно через Командное окно или с помощью скрипта. Можно также запрограммировать приложение MATLAB, которое управляет состоянием графика через графический пользовательский интерфейс. Для примера этот пользовательский интерфейс отправляет событие входа на график при нажатии кнопки. На графике функция MATLAB widgets
управляет значениями манометров и ламп на интерфейсе.
Чтобы запустить пример, на панели инструментов App Designer, нажмите Запуск. Пример продолжает запускаться до тех пор, пока вы не закроете окно пользовательского интерфейса.
Кроме того, в редакторе Stateflow, на вкладке Графика состояний, нажмите Запуск. Чтобы контролировать скорость автомобиля, используйте кнопки SpeedUp, SlowDown и Cruise In the Symbols. Чтобы остановить пример, нажмите кнопку Остановить.
Для получения дополнительной информации о выполнении диаграмм Stateflow в качестве объектов MATLAB, смотрите Выполнение в MATLAB.
Этот пример обеспечивает более сложный проект для системы автоматической коробки передач. Диаграмма Stateflow появляется как блок в модели Simulink. Другие блоки в модели представляют связанные автомобильные компоненты. График взаимодействует с другими блоками путем обмена данными через входные и выходные соединения. Чтобы открыть график, щелкните стреле в нижнем левом углу shift_logic
блок.
Этот график объединяет иерархию состояний, параллелизм, данные активного состояния, локальные события и временную логику.
Иерархия: Состояние gear_state
содержит измененную версию четырехскоростного автоматического графика передач. Состояние selection_state
содержит подсостояния, которые представляют устойчивые состояния, повышающие и понижающие режимы операции. Когда обстоятельства требуют сдвига на более высокую или более низкую передачу, эти состояния становятся активными.
Параллелизм: Параллельные состояния gear_state
и selection_state
появляются как прямоугольники с штриховой границей. Эти состояния работают одновременно, даже когда подсостояния внутри них включаются и выключаются.
Данные о активном состоянии: значение выхода gear
отражает выбор передач во время симуляции. График генерирует это значение из активного подсостояния в gear_state
.
Локальные события: Вместо логических условий этот график использует локальные события UP
и DOWN
для запуска переходов между шестернями. Эти события происходят от send
команды в selection_state
когда скорость автомобиля выходит за область значений операции для выбранной передачи. Функция Simulink calc_th
определяет значения контура для области значений операции на основе выбранных передачи и скорость вращения двигателя.
Временная логика: Чтобы предотвратить быструю последовательность переключений передач, selection_state
использует оператор временной логики after
отложить вещание UP
и DOWN
события. Состояние транслирует одно из этих событий только, если замена передач требуется дольше, чем некоторое заранее заданное время TWAIT
.
Чтобы запустить симуляцию модели:
Дважды кликните блок User Inputs. В диалоговом окне Редактор выберите предопределенный профиль «тормоз-дроссель» из списка «Активный сценарий». Профиль по умолчанию Passing Maneuver
.
Нажмите Запуск. В редакторе Stateflow в анимации на графике подсвечиваются активные состояния во время симуляции. Чтобы замедлить анимацию, на вкладке Debug, выберите Slow
из раскрывающегося списка «Скорость анимации».
В блоках Scope исследуйте результаты симуляции. Каждые возможности отображают график своих входных сигналов во время симуляции.
Этот пример предоставляет другую альтернативу для моделирования системы трансмиссии в автомобиле. Диаграмма Stateflow появляется как блок в модели Simulink. Другие блоки в модели представляют связанные автомобильные компоненты. График взаимодействует с другими блоками путем обмена данными через входные и выходные соединения. Чтобы открыть график, щелкните стреле в нижнем левом углу Gear_logic
блок.
Этот график объединяет иерархию состояний, данные активного состояния и временную логику.
Иерархия: Эта модель помещает четырехскоростную автоматическую коробку передач графика в сверхсостояние gear
. Сверхсостояние контролирует транспортное средство и скорости вращения двигателя и запускает переключения передач. Действия, перечисленные в верхнем левом углу передачи состояний, определяют рабочие пороги для выбранной передачи и значения булевых условий up
и down
. Область метки en,du
указывает, что состояния активности выполняются, когда состояние впервые становится активным (en
= entry
) и на каждом последующем временном шаге, пока состояние активно (du
= during
).
Данные о активном состоянии: значение выхода gear
отражает выбор передач во время симуляции. График генерирует это значение из активного подсостояния в gear
.
Временная логика: Чтобы предотвратить быструю последовательность переключений передач, логические условия up
и down
использовать оператор временной логики duration
для управления переходом между шестернями. Условия действительны, когда скорость автомобиля остается вне области значений операции для выбранной передачи дольше, чем некоторое заранее определенное время TWAIT
(измеряется в секундах).
Чтобы запустить симуляцию модели:
Дважды кликните блок User Inputs. В диалоговом окне Редактор выберите предопределенный профиль «тормоз-дроссель» из списка «Активный сценарий». Профиль по умолчанию Passing Maneuver
.
Нажмите Запуск. В редакторе Stateflow в анимации на графике подсвечиваются активные состояния во время симуляции. Чтобы замедлить анимацию, на вкладке Debug, выберите Slow
из раскрывающегося списка «Скорость анимации».
В блоке Scope исследуйте результаты симуляции. Область возможностей отображает график передачи, выбранной во время симуляции.
after | duration | every | send