Модель Конечные Машины состояний

Stateflow® - графическое окружение программирования, основанная на finite state machines. С помощью Stateflow, вы можете тестировать и отлаживать свой проект, рассматривать различные сценарии симуляции и генерировать код от вашего конечного компьютера.

Конечные машины состояний являются представлениями динамических систем, которые переходят от одного режима операции (состояния) к другому. Машины состояний:

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

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

  • Помогают вам к проектировать модели, которые остаются ясными и краткими, даже когда уровень сложности модели увеличивается.

Проект систем управления полагается в большой степени на машину состояний, чтобы управлять сложной логикой. Приложения включают разработку самолетов, автомобилей и робототехнических систем управления.

Пример диаграммы Stateflow

На диаграмме Stateflow вы комбинируете состояния, переходы и данные для реализации конечного конечного автомата. Эта диаграмма Stateflow представляет упрощенную модель логики переключения передач в четырехскоростной системе автоматической коробки передач автомобиля. График представляет каждое положение передачи по состоянию, показанному как прямоугольник с меткой first, second, third, или fourth. Как и передачи, которые они представляют, эти состояния являются эксклюзивными, поэтому одновременно активно только одно состояние.

Stateflow chart with states labeled first, second, third, and fourth. The chart transitions between the states when the speed is higher or lower than a specified amount.

Стрела слева от схемы представляет переход по умолчанию и указывает первое состояние, которое станет активным. При выполнении графика это состояние подсвечивается на холсте. Другие стрелы указывают на возможные переходы между состояниями. Чтобы задать динамику конечного автомата, вы связываете каждый переход с логическим условием или событием триггера. Например, этот график контролирует скорость автомобиля и переключается на другую передачу, когда скорость пересекает фиксированный порог. Во время симуляции подсветка на графике изменяется по мере того, как различные состояния становятся активными.

Chart animation showing states and transitions activating.

Этот график предлагает простой проект, которая игнорирует важные факторы, такие как скорости вращения двигателя и крутящий момент. Можно создать более комплексную и реалистичную модель, связав эту диаграмму Stateflow с другими компонентами в MATLAB® или Simulink®. Ниже приводятся три возможных подхода.

Выполнение графика как объекта MATLAB

Этот пример представляет измененную версию системы автоматической коробки передач, которая включает в себя иерархию состояний, временную логику и входные события.

  • Иерархия: График состоит из сверхгосударственного 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.

Симулируйте график как блок Simulink с локальными событиями

Этот пример обеспечивает более сложный проект для системы автоматической коробки передач. Диаграмма 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.

Чтобы запустить симуляцию модели:

  1. Дважды кликните блок User Inputs. В диалоговом окне Редактор выберите предопределенный профиль «тормоз-дроссель» из списка «Активный сценарий». Профиль по умолчанию Passing Maneuver.

  2. Нажмите Запуск. В редакторе Stateflow в анимации на графике подсвечиваются активные состояния во время симуляции. Чтобы замедлить анимацию, на вкладке Debug, выберите Slow из раскрывающегося списка «Скорость анимации».

  3. В блоках Scope исследуйте результаты симуляции. Каждые возможности отображают график своих входных сигналов во время симуляции.

Симулируйте график как блок Simulink с временными условиями

Этот пример предоставляет другую альтернативу для моделирования системы трансмиссии в автомобиле. Диаграмма Stateflow появляется как блок в модели Simulink. Другие блоки в модели представляют связанные автомобильные компоненты. График взаимодействует с другими блоками путем обмена данными через входные и выходные соединения. Чтобы открыть график, щелкните стреле в нижнем левом углу Gear_logic блок.

Этот график объединяет иерархию состояний, данные активного состояния и временную логику.

  • Иерархия: Эта модель помещает четырехскоростную автоматическую коробку передач графика в сверхсостояние gear. Сверхсостояние контролирует транспортное средство и скорости вращения двигателя и запускает переключения передач. Действия, перечисленные в верхнем левом углу передачи состояний, определяют рабочие пороги для выбранной передачи и значения булевых условий up и down. Область метки en,du указывает, что состояния активности выполняются, когда состояние впервые становится активным (en = entry) и на каждом последующем временном шаге, пока состояние активно (du = during).

  • Данные о активном состоянии: значение выхода gear отражает выбор передач во время симуляции. График генерирует это значение из активного подсостояния в gear.

  • Временная логика: Чтобы предотвратить быструю последовательность переключений передач, логические условия up и down использовать оператор временной логики duration для управления переходом между шестернями. Условия действительны, когда скорость автомобиля остается вне области значений операции для выбранной передачи дольше, чем некоторое заранее определенное время TWAIT (измеряется в секундах).

Чтобы запустить симуляцию модели:

  1. Дважды кликните блок User Inputs. В диалоговом окне Редактор выберите предопределенный профиль «тормоз-дроссель» из списка «Активный сценарий». Профиль по умолчанию Passing Maneuver.

  2. Нажмите Запуск. В редакторе Stateflow в анимации на графике подсвечиваются активные состояния во время симуляции. Чтобы замедлить анимацию, на вкладке Debug, выберите Slow из раскрывающегося списка «Скорость анимации».

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

См. также

| | |

Похожие темы