Stateflow® является графической средой программирования на основе finite state machines. С помощью Stateflow можно протестировать и отладить проект, рассмотреть различные сценарии симуляции и сгенерировать код от конечного автомата.
Конечные автоматы являются представлениями динамических систем, которые переходят от одного режима работы (состояния) к другому. Конечный автомат:
Служит высокоуровневой отправной точкой для комплексного процесса разработки ПО.
Позволяет вам фокусироваться на рабочих режимах и условиях, требующих перехода от одного режима к следующему режиму.
Помогают вам к проектировать модели, которые остаются ясными и краткими, даже когда уровень сложности модели увеличивается.
Проект систем управления полагается в большой степени на машину состояний, чтобы управлять сложной логикой. Приложения включают разработку самолетов, автомобилей и робототехнических систем управления.
В диаграмме Stateflow вы комбинируете состояния, переходы и данные, чтобы реализовать конечный автомат. Эта диаграмма Stateflow представляет упрощенную модель логики, чтобы переключить скорости в системе автоматической коробки передач с четырьмя скоростями автомобиля. График представляет каждое положение механизма по состоянию, показавшему, когда прямоугольник пометил first
второй
, 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, нажимают Run. Пример продолжает запускаться, пока вы не закрываете окно пользовательского интерфейса.
В качестве альтернативы в редакторе Stateflow, во Вкладке Диаграммы состояний, нажимают Run. Чтобы контролировать скорость автомобиля, используйте SpeedUp, SlowDown и кнопки Cruise В панели Символов. Чтобы остановить пример, нажмите Stop.
Для получения дополнительной информации о выполняющихся диаграммах Stateflow, когда MATLAB возражает, смотрите Выполнение в MATLAB.
Этот пример предоставляет более комплексный проект для системы автоматической коробки передач. Диаграмма Stateflow появляется как блок в модели Simulink. Другие блоки в модели представляют связанные автомобильные компоненты. График взаимодействует через интерфейс с другими блоками путем обмена данными посредством связей ввода и вывода. Чтобы открыть график, кликните по стрелке в левом нижнем углу shift_logic
блок.
Этот график комбинирует иерархию состояния, параллелизм, активные данные состояния, локальные события и временную логику.
Иерархия: gear_state
состояния содержит модифицированную версию графика автоматической коробки передач с четырьмя скоростями.
selection_state
состояния содержит подсостояния, которые представляют устойчивое состояние, upshifting, и включающие понижающую передачу режимы работы. Когда обстоятельства требуют сдвига на более высокий или более низкий механизм, эти состояния становятся активными.
Параллелизм: параллель утверждает gear_state
и selection_state
появитесь как прямоугольники с пунктирной границей. Эти состояния действуют одновременно, как раз когда подсостояния в них включают и выключают.
Активные Данные состояния: выходное значение gear
отражает выбор механизмов в процессе моделирования. График генерирует это значение от активного подсостояния в gear_state
.
Локальные События: Вместо булевых условий этот график использует локальные события UP
и DOWN
инициировать переходы между механизмами. Эти события происходят из send
команды в selection_state
когда скорость автомобиля выходит за пределы области значений операции для выбранного механизма. Функция Simulink calc_th
определяет граничные значения для области значений операции на основе выбранного механизма и скорости вращения двигателя.
Временная Логика: предотвратить быструю последовательность переключений передач, selection_state
использует временный логический оператор after
задержать широковещательную передачу UP
и DOWN
события. Широковещательные сообщения состояния одно из этих событий, только если изменение механизмов требуется для дольше, чем некоторое предопределенное время TWAIT
.
Запускать симуляцию модели:
Дважды кликните блок User Inputs. В диалоговом окне Signal Editor выберите предопределенный профиль тормоза к дросселю из Активного списка Сценариев. Профилем по умолчанию является Passing Maneuver
.
Нажмите Run. В редакторе 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. В диалоговом окне Signal Editor выберите предопределенный профиль тормоза к дросселю из Активного списка Сценариев. Профилем по умолчанию является Passing Maneuver
.
Нажмите Run. В редакторе Stateflow анимация графика подсвечивает активные состояния во время симуляции. Чтобы замедлить анимацию, во вкладке Debug, выбирают Slow
от Скорости анимации выпадающий список.
В блоке Scope исследуйте результаты симуляции. Осциллограф отображает график механизма, выбранного в процессе моделирования.
after | duration | every | send