Автономная диаграмма Stateflow ® - это класс MATLAB ®, определяющий поведение конечного конечного автомата. Автономные диаграммы реализуют классическую семантику диаграмм с MATLAB в качестве языка действий. Можно запрограммировать диаграмму с помощью всех функциональных возможностей MATLAB, включая функции, ограниченные для генерации кода в Simulink ®. Дополнительные сведения см. в разделе Создание диаграмм потока состояний для выполнения в виде объектов MATLAB.
Файл sf_chart.sfx содержит автономную диаграмму Stateflow sf_chart. Диаграмма содержит локальные данные u, x, и y.

В этом примере показано, как выполнить эту диаграмму из редактора Stateflow Editor и в окне команд MATLAB.
Чтобы выполнить модульное тестирование и отладку автономной диаграммы, ее можно выполнить непосредственно из редактора Stateflow Editor. Во время выполнения из пользовательского интерфейса вводятся значения данных и широковещательные события.
Откройте диаграмму в редакторе Stateflow:
edit sf_chart.sfxНа панели «Символы» введите значение u = 1 и нажмите «Выполнить».
Диаграмма выполняет
переход по умолчанию и:
Инициализирует x до значения 0.
Делает состояние A активное состояние.
Назначает y до значения 1.
Увеличивает значение x на 1.
Анимация диаграммы выделяет активное состояние A. На панели «Символы» отображаются значения u = 1, x = 1, и y = 1. Диаграмма сохраняет текущее состояние и локальные данные до следующей команды выполнения.

Щелкните Шаг (Step).
Потому что значение
u не удовлетворяет условию [u<0] к переходу из состояния A, это состояние остается активным и значения x и y увеличение до 2. Теперь на панели «Символы» отображаются значения u = 1, x = 2, и y = 2.

На панели «Символы» введите значение u = − 1 и щелкните Шаг (Step
). Отрицательное
значение данных инициирует переход в состояние B. На панели «Символы» отображаются значения u = −1, x = 1, и y = 3.

На панели «Символы» можно изменить значение любых данных диаграммы. Например, введите значение x = 3. Диаграмма будет использовать это значение данных на следующем шаге выполнения.
Введите значение, равное u = 2 и щелкните Шаг (Step).
Диаграмма
возвращается в состояние A. На панели «Символы» отображаются значения u = 2, x = 4, и y = 5.

Чтобы остановить анимацию диаграммы, нажмите кнопку Остановить.
![]()
Чтобы прервать выполнение и выполнить каждое действие в диаграмме, добавьте точки останова перед выполнением диаграммы. Дополнительные сведения см. в разделе Отладка автономной диаграммы статусов.
Автономную диаграмму можно выполнить в MATLAB без открытия редактора Stateflow Editor. Если диаграмма открыта, редактор подсвечивает активные состояния и переходы с помощью анимации диаграммы.
Откройте диаграмму в редакторе Stateflow. В окне команд MATLAB введите:
edit sf_chart.sfxСоздайте объект диаграммы Stateflow с помощью имени sfx для автономной диаграммы как функции. Укажите начальное значение для данных u как пара имя-значение.
s = sf_chart('u',1)Stateflow Chart
Execution Function
y = step(s)
Local Data
u : 1
x : 1
y : 1
Active States: {'A'}s, выполняет переход по умолчанию и инициализирует значения x и y. Редактор Stateflow анимирует диаграмму и выделяет активное состояние A.

Для выполнения диаграммы вызовите step функция. Например, предположим, что вы вызываете step функция со значением u = 1:
step(s,'u',1)disp(s)
Stateflow Chart
Execution Function
y = step(s)
Local Data
u : 1
x : 2
y : 2
Active States: {'A'}u не удовлетворяет условию [u<0] к переходу из состояния A, это состояние остается активным и значения x и y увеличение до 2.

Снова выполните диаграмму, на этот раз со значением u = −1:
step(s,'u',-1)disp(s)
Stateflow Chart
Execution Function
y = step(s)
Local Data
u : -1
x : 1
y : 3
Active States: {'B'}B. Значение x уменьшается до 1 и значение y увеличивается до 3.

Чтобы получить доступ к значению любых данных диаграммы, используйте точечную нотацию. Например, локальным данным можно присвоить значение 3. x путем ввода:
s.x = 3
Stateflow Chart
Execution Function
y = step(s)
Local Data
u : -1
x : 3
y : 3
Active States: {'B'}Выполните диаграмму со значением u = 2:
step(s,'u',2)disp(s)
Stateflow Chart
Execution Function
y = step(s)
Local Data
u : 2
x : 4
y : 5
Active States: {'A'}A и изменяет значения x и y.

Чтобы остановить анимацию диаграммы, удалите объект диаграммы Stateflow s:
delete(s)
Можно выполнить несколько объектов диаграммы, определенных одной и той же автономной диаграммой. Параллельные объекты диаграммы поддерживают свое внутреннее состояние независимо, но остаются связанными с той же диаграммой в редакторе. Анимация диаграммы отражает состояние последнего выполненного объекта диаграммы. Выполнение нескольких объектов диаграммы при открытом редакторе Stateflow может привести к путанице и не рекомендуется.