Конечные автоматы модели

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

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

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

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

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

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

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

В диаграмме Stateflow вы комбинируете состояния, переходы и данные, чтобы реализовать конечный автомат. Эта диаграмма Stateflow представляет упрощенную модель логики, чтобы переключить скорости в системе автоматической коробки передач с четырьмя скоростями автомобиля. График представляет каждое положение механизма по состоянию, показавшему, когда прямоугольник пометил firstвторой, 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, нажимают Run. Пример продолжает запускаться, пока вы не закрываете окно пользовательского интерфейса.

В качестве альтернативы в редакторе Stateflow, во Вкладке Диаграммы состояний, нажимают Run. Чтобы контролировать скорость автомобиля, используйте SpeedUp, SlowDown и кнопки Cruise В панели Символов. Чтобы остановить пример, нажмите Stop.

Для получения дополнительной информации о выполняющихся диаграммах 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 Editor выберите предопределенный профиль тормоза к дросселю из Активного списка Сценариев. Профилем по умолчанию является Passing Maneuver.

  2. Нажмите Run. В редакторе 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. В диалоговом окне Signal Editor выберите предопределенный профиль тормоза к дросселю из Активного списка Сценариев. Профилем по умолчанию является Passing Maneuver.

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

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

Следующие шаги