• Регистрация
Sancho
Sancho +99.25
н/д

Stateflow для моделирования событийных систем

30.04.2019

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

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

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

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

Stateflow является частью интегрированной среды моделирования, где вы можете моделировать, симулировать и анализировать сложные динамические системы. Используя Stateflow совместно с Simulink, вы можете создавать модели вашей встраиваемой системы, которые сочетают симуляцию логики поведения в Stateflow (такую, как, например реакции на ошибки или переключения режимов) с алгоритмическим поведением в Simulink (таким, как управление с обратной связью или обработка сигналов). Вы также можете создать модель системы и окружения в Simulink и запускать гибридные симуляции для изучения их взаимодействия. Это особенно важно, поскольку системы реального мира достаточно сложны и при их моделировании используются непрерывные, дискретные и событийные сигналы. Рекомендую вам посмотреть на примеры использования Stateflow из документации - я очень удивлюсь, если там не окажется примера, близкого вам :)

Вот ключевые возможности Stateflow:

  • Stateflow предоставляет элементы языка, иерархию, параллелизм и детерминированную семантику выполнения для описания сложной логики в естественном и понятном виде.
  • Позволяет определять функции в графическом виде, используя диаграммы; процедурно, используя функции MATLAB и в табличном виде, при помощи таблиц истинности и таблиц переходов (эта функция, между прочим, появилась в релизе R2012b).
  • Поддерживает планирование переходов и событий при помощи темпоральной логики.
  • Поддерживает конечные автоматы Мили и Мура.
  • Имеется возможность интеграции внешнего Си кода.
  • Поддержка шин сигналов, векторных и матричных сигналов, асинхронных широковещательных событий, а также типов данных с фиксированной точкой.
  • Анимация диаграмм Stateflow и запись данных во время симуляции для лучшего понимания системы и упрощения отладки.
  • Stateflow выполняет статические проверки, включая проверки на некорректно определённые таблицы истинности.
  • Во время выполнения проверяет конфликтующие переходы, проблемы зацикливания, несовместимость состояний, нарушения диапазонов данных и переполнения.
  • Включает встроенный отладчик для установки графических точек останова, запуска диаграмм по шагам и анализа данных.
  •  Вы можете автоматически генерировать Си код из диаграмм Stateflow с использованием Simulink Coder.
  •  Вы можете привязывать требования непосредственно к объектам Stateflow и получать информацию о покрытии модели тестами, используя Simulink Verification and Validation.

Из библиотеки блоков Simulink вы можете добавить в вашу модель блок, который является диаграммой Stateflow. В этой библиотеке есть и другие интересные блоки (некоторые из которых появились совсем недавно), но о них в другой раз.
Диаграмма Stateflow графически представляет конечный автомат, где состояния и переходы являются базовыми блоками для создания системы.

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

Stateflow включает следующие инструменты для создания и изменения диаграмм:

  • Редактор диаграмм Stateflow – предоставляет пункты меню, навигацию и панели инструментов, управление масштабом и другие полезные функции.
  • Мастер автоматического создания символов – помогает находить и автоматически создавать недостающие данные и события в ваших диаграммах Stateflow.
  • Отладчик Stateflow – управляет анимацией на диаграммах Stateflow, и обеспечивает расширенные возможности для анализа результатов моделирования и обнаружения и диагностики неожиданного поведения ваших диаграмм Stateflow.

Во время симуляции вы можете визуализировать диаграммы Stateflow следующими способами: 

  • Анимация активных состояний и путей перехода
  • Использование встроенных осциллографов и дисплеев в Simulink
  • Построение собственных графических интерфейсов для визуализации с использованием MATLAB и инструментов разработки графических интерфейсов
    Вы можете записывать данные симуляции для последующей обработки и визуализации в MATLAB.

Таким образом, Stateflow существенно расширяет возможности MATLAB/Simulink для моделирования событийных систем, конечных автоматов и логики принятия решений.

Теги

    30.04.2019

    Комментарии