Образцовые конечные автоматы

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

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

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

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

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

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

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

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

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

Этот график предлагает простой проект, который игнорирует важные факторы, такие как скорость вращения двигателя и крутящий момент. Можно создать более всестороннюю и реалистическую модель путем соединения этой диаграммы 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 управляет значениями приборов и ламп в интерфейсе.

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

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

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

Запускать симуляцию модели:

  1. Дважды кликните блок User Inputs. В диалоговом окне Signal Builder можно выбрать предопределенный профиль тормоза к дросселю, чтобы моделировать или создать пользовательский профиль. Профилем по умолчанию является Passing Maneuver.

  2. Кликните по значку Выполнения. В редакторе Stateflow анимация графика подсвечивает активные состояния во время симуляции. Можно замедлить скорость анимации путем выбора Display> Stateflow Animation> 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. В диалоговом окне Signal Builder можно выбрать предопределенный профиль тормоза к дросселю, чтобы моделировать или создать пользовательский профиль. Профилем по умолчанию является Passing Maneuver.

  2. Кликните по значку Выполнения. В редакторе Stateflow анимация графика подсвечивает активные состояния во время симуляции. Можно замедлить скорость анимации путем выбора Display> Stateflow Animation> Slow.

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

Смотрите также

| | |

Похожие темы