Stateflow® график является графическим представлением конечного автомата, состоящего из состояний, переходов и данных. Можно создать диаграмму Stateflow, чтобы задать как MATLAB® алгоритм или Simulink® модель реагирует на внешние входные сигналы, события и условия, зависящие от времени. Для получения дополнительной информации смотрите Конечные автоматы Модели.
Например, эта диаграмма Stateflow представляет логику, лежащую в основе полупериодного выпрямителя. График содержит два состояния, пометил On и Off. В On состояние, выходной сигнал графика y равно входу x. В Off состояние, выходной сигнал обнуляется. Когда входной сигнал пересекает некоторый порог t0, переходы графика между этими состояниями. Действия в каждом состоянии обновляют значение y на каждом временном шаге симуляции.

В этом примере показано, как создать эту диаграмму Stateflow для симуляции в Simulink и выполнения в MATLAB.
Редактор Stateflow является графической средой для разработки диаграмм переходов состояний, блок-схем, таблиц переходов состояний и таблиц истинности. Прежде, чем открыть редактора Stateflow, выберите режим выполнения графика, который лучше всего удовлетворяет ваши потребности.
К условному выражению модели, основанной на событии, и основанной на времени логике для периодического или непрерывное время алгоритмов Simulink, использование sfnew функция, чтобы создать диаграмму Stateflow, которую можно симулировать как блок в модели Simulink. В командной строке MATLAB введите:
sfnew rectify % create chart for simulation in a Simulink model
Simulink создает модель под названием rectify это содержит пустой блок Stateflow Chart. Чтобы открыть редактора Stateflow, дважды кликните блок графика.
Чтобы спроектировать допускающий повторное использование конечный автомат и логику синхронизации для приложений MATLAB, используйте edit функция, чтобы создать автономную диаграмму Stateflow, которую можно выполнить как объект MATLAB. В командной строке MATLAB введите:
edit rectify.sfx % create chart for execution as a MATLAB object
Если файл rectify.sfx не существует, редактор Stateflow создает пустой график с именем rectify.
Основные компоненты редактора Stateflow являются холстом графика, палитрой объектов и панелью Символов.
Холст графика является областью рисунка, где вы создаете график путем объединения состояний, переходов и других графических элементов.
На левой стороне холста палитра объектов отображает набор инструментов для добавления графических элементов к вашему графику.
На правой стороне холста, в панели Символов, вы добавляете новые данные в график и разрешаете любые неопределенные или неиспользованные символы.

Совет
После того, как вы создадите свою диаграмму Stateflow, можно скопировать ее содержимое в другой график с различным режимом выполнения. Например, можно создать график для выполнения в MATLAB и скопировать его содержимое в график для симуляции в Simulink.
От палитры объектов кликните по значку State
и переместите указатель на холст графика. Состояние с его переходом по умолчанию появляется. Чтобы поместить состояние, кликните по местоположению на холсте. В текстовой подсказке введите имя состояния On и состояние активности y = x.

Добавьте другое состояние. Щелкните правой кнопкой и перетащите On состояние. Синие графические сигналы помогают вам выровнять свои состояния горизонтально или вертикально. Имя новых изменений состояния к Off. Дважды кликните состояние и измените состояние активности к y = 0.

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

Дважды кликните каждый переход и введите соответствующее условие перехода x<t0 или x>=t0. Условия появляются в квадратных скобках.

Очистите график:
Чтобы улучшить ясность, переместите каждую метку перехода в удобное местоположение выше или ниже его соответствующего перехода.
Чтобы выровняться и изменить размер графических элементов вашего графика, во вкладке Format, нажимают Auto Arrange или нажимают Ctrl+Shift+A.
Чтобы изменить размер графика, чтобы соответствовать холсту, нажмите клавишу "пробел" или кликните по значку Fit To View
.
Прежде чем можно будет выполнить график, необходимо задать каждый символ, который вы используете в графике и задаете его осциллограф (например, входные данные, выходные данные или локальные данные). В панели Символов неопределенные символы отмечены красным ошибочным значком
. Отображения столбца Type предложенный осциллограф для каждого неопределенного символа на основе его использования в графике.
Откройте панель Символов.
Если вы создаете график в модели Simulink, во вкладке Modeling, под Design Data, выберите Symbols Pane.
Если вы создаете автономную диаграмму для выполнения в MATLAB во вкладке State Chart, выберите Add Data> Symbols Pane.
В панели Символов нажмите Resolve Undefined Symbols
.
Если вы создаете график в модели Simulink, редактор Stateflow разрешает символы x и t0 как входные данные
и y как выходные данные
.
Если вы создаете автономную диаграмму для выполнения в MATLAB, редактор Stateflow разрешает t0X, и y как локальные данные
.

Поскольку порог t0 не изменяется в процессе моделирования, изменяет его осциллограф в постоянные данные. В столбце Type кликните по значку типа данных рядом с t0 и выберите
Constant Data.
Установите значение для порога t0. В столбце Value кликните по пустой записи рядом с t0 и введите значение 0.
Сохраните свою диаграмму Stateflow.
Ваш график теперь готов к симуляции в Simulink или выполнению в MATLAB.
Чтобы симулировать график в модели Simulink, соедините блок графика с другими блоками в модели через порты ввода и вывода. Если вы хотите выполнить график от командного окна MATLAB, смотрите, Выполняют График как Объект MATLAB.
Чтобы возвратиться к Редактору Simulink, на панели проводника наверху холста, кликают по имени модели Simulink: ![]()
rectify. Если панель проводника не отображается, кликните по значку Hide/Show Explorer Bar
наверху палитры объектов.
Добавьте источник в модель:
От библиотеки Simulink Sources добавьте блок Sine Wave (Simulink).
Дважды кликните блок Sine Wave и установите Sample time на 0,2.
Соедините выход блока Sine Wave к входу диаграммы Stateflow.
Пометьте сигнал как x.
Добавьте приемник в модель:
От библиотеки Simulink Sinks добавьте блок Scope (Simulink) с двумя входными портами.
Соедините выход блока Sine Wave к первому входу блока Scope.
Соедините выход диаграммы Stateflow к второму входу блока Scope.
Пометьте сигнал как y.
Сохраните модель Simulink.

Чтобы симулировать модель, нажмите Run
. Во время симуляции редактор Stateflow подсвечивает активные состояния и переходы посредством анимации графика.
После того, как вы симулируете модель, дважды кликаете блок Scope. Осциллограф отображает графики сигналов ввода и вывода к графикам.

Результаты симуляции показывают, что выпрямитель отфильтровывает отрицательные входные значения.
Чтобы выполнить график в командном окне MATLAB, создайте объект диаграммы и вызовите его step функция. Если вы хотите симулировать график в модели Simulink, смотрите, Симулируют График как блок Simulink.
Создайте объект диаграммы r при помощи имени sfx файл, который содержит определение графика как функцию. Задайте начальное значение для данных о графике x как пара "имя-значение".
r = rectify('x',0);Инициализируйте входные и выходные данные для выполнения графика. Векторный X содержит входные значения от синусоиды. Векторный Y пустой аккумулятор.
T = 0:0.2:10; X = sin(T); Y = [];
Выполните объект диаграммы путем вызова step функционируйте многократно. Передайте отдельные значения от векторного X как строят диаграмму данных x. Соберите получившиеся значения y в векторном Y. Во время выполнения редактор Stateflow подсвечивает активные состояния и переходы посредством анимации графика.
for i = 1:51 step(r,'x',X(i)); Y(i) = r.y; end
Удалите объект диаграммы r от рабочего пространства MATLAB.
delete(r)
Исследуйте результаты выполнения графика. Например, можно вызвать stairs функция, чтобы создать ступенчатый график, который сравнивает значения X и Y.
ax1 = subplot(2,1,1); stairs(ax1,T,X,'color','#0072BD') title(ax1,'x') ax2 = subplot(2,1,2); stairs(ax2,T,Y,'color','#D95319') title(ax2,'y')

Результаты выполнения показывают, что выпрямитель отфильтровывает отрицательные входные значения.