exponenta event banner

Построение и выполнение диаграммы потока состояний

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

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

Stateflow chart with two states.

В этом примере показано, как создать эту диаграмму Stateflow для моделирования в Simulink и выполнения в MATLAB.

Построение диаграммы потока состояний

Открытие редактора State Flow

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

  • Чтобы моделировать условную, основанную на событиях и времени логику для алгоритмов Simulink периодического или непрерывного времени, создайте диаграмму Stateflow, которую можно моделировать как блок в модели Simulink. В командной строке MATLAB введите:

    sfnew rectify     % create chart for simulation in a Simulink model

    Simulink создает модель с именем rectify содержит пустой блок диаграммы Stateflow. Чтобы открыть редактор Stateflow, дважды щелкните блок диаграммы.

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

    edit rectify.sfx  % create chart for execution as a MATLAB object

    Если файл rectify.sfx не существует, редактор Stateflow создает пустую диаграмму с именем rectify.

Основными компонентами редактора Stateflow Editor являются палитра объектов, холст диаграммы и панель «Символы».

  • Холст диаграммы - это область рисования, в которой диаграмма создается путем объединения состояний, переходов и других графических элементов.

  • В левой части полотна палитра объектов отображает набор инструментов для добавления графических элементов в диаграмму.

  • В правой части полотна на панели «Символы» можно добавить новые данные в диаграмму и разрешить все неопределенные или неиспользуемые символы.

Default view of the Stateflow Editor.

Совет

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

Добавить состояния и переходы

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

    Chart with one state, On.

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

    Chart with two states, On and Off.

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

    Либо, чтобы нарисовать переход, щелкните и перетащите от края одного состояния к краю другого состояния.

    Chart with the two states joined by transitions.

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

    Chart with transition conditions.

  5. Очистить диаграмму:

    • Для улучшения ясности переместите каждую метку перехода в удобное место выше или ниже ее соответствующего перехода.

    • Чтобы выровнять и изменить размер графических элементов диаграммы, на вкладке «Формат» нажмите кнопку «Автоматически упорядочить» или нажмите клавиши Ctrl + Shift + A.

    • Чтобы изменить размер диаграммы в соответствии с холстом, нажмите клавишу пробела или щелкните значок «Вписать в вид».

Разрешить неопределенные символы

Перед выполнением диаграммы необходимо определить каждый символ, используемый в диаграмме, и указать его объем (например, входные данные, выходные данные или локальные данные). На панели «Символы» неопределенные символы помечаются красным значком ошибки. В столбце Тип (Type) отображается предлагаемая область для каждого неопределенного символа в зависимости от его использования на диаграмме.

  1. Откройте панель «Символы».

    • При построении диаграммы в модели Simulink на вкладке Моделирование (Modeling) в разделе Данные конструкции (Design Data) выберите Панель символов (Symbols Pane).

    • При создании автономной диаграммы для выполнения в MATLAB на вкладке Диаграмма состояний выберите Добавить данные > Панель символов.

  2. На панели Символы (Symbols) щелкните Разрешить неопределенные символы (Resolve Undefined Symbols).

    • При построении диаграммы в модели Simulink редактор Stateflow разрешает символы x и t0 в качестве входных данных и y в качестве выходных данных.

    • При создании автономной диаграммы для выполнения в MATLAB редактор Stateflow разрешает t0, x, и y в виде локальных данных.

    Before and after views of the Symbols pane resolving the undefined symbols t0, x, and y.

  3. Потому что порог t0 не изменяется во время моделирования, измените его область на постоянные данные. В столбце Тип щелкните значок типа данных рядом с t0 и выбрать Constant Data.

  4. Установка значения порога t0. В столбце «Значение» щелкните пустую запись рядом с t0 и введите значение 0.

  5. Сохраните диаграмму Stateflow.

Теперь диаграмма готова для моделирования в Simulink или выполнения в MATLAB.

Моделирование диаграммы как блока симулятора

Чтобы смоделировать диаграмму внутри модели Simulink, подключите блок диаграммы к другим блокам модели через порты ввода и вывода. Если требуется выполнить диаграмму из окна команд MATLAB, см. раздел Выполнение диаграммы как объекта MATLAB.

  1. Чтобы вернуться в редактор Simulink, на панели проводника в верхней части полотна щелкните имя модели Simulink: rectify. Если панель проводника не видна, щелкните значок «Скрыть/Показать панель проводника» в верхней части палитры объектов.

  2. Добавьте источник в модель:

    • Из библиотеки источников Simulink добавьте блок Sine Wave (Simulink).

    • Дважды щелкните блок синусоидальной волны и установите для параметра Sample time значение 0.2.

    • Подключите выход блока синусоидальной волны к входу диаграммы Stateflow.

    • Пометить сигнал как x.

  3. Добавьте раковину в модель:

    • Из библиотеки Simulink Sinks добавьте блок Scope (Simulink) с двумя портами ввода.

    • Подключите выход блока синусоидальной волны к первому входу блока области.

    • Подключите выход диаграммы Stateflow ко второму входу блока Scope.

    • Пометить сигнал как y.

  4. Сохраните модель Simulink.

    In a Simulink model, a Sine Wave block creates an input signal for the chart. A Scope block plots the input and output of the chart.

  5. Чтобы смоделировать модель, щелкните Выполнить (Run). Во время моделирования Редактор потока состояний выделяет активные состояния и переходы с помощью анимации диаграммы.

  6. После моделирования модели дважды щелкните блок «Область». В области отображаются графики входных и выходных сигналов для диаграмм.

    Scope block showing the input and output of the chart.

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

Выполнение диаграммы как объекта MATLAB

Для выполнения диаграммы в окне команд MATLAB создайте объект диаграммы и вызовите его step функция. Если требуется смоделировать диаграмму внутри модели Simulink, см. раздел Моделирование диаграммы как блока Simulink.

  1. Создание объекта диаграммы r с использованием имени sfx файл, содержащий определение диаграммы в качестве функции. Укажите начальное значение для данных диаграммы x как пара имя-значение.

    r = rectify('x',0);
  2. Инициализация входных и выходных данных для выполнения диаграммы. Вектор X содержит входные значения синусоидальной волны. Вектор Y является пустым накопителем.

    T = 0:0.2:10;
    X = sin(T);
    Y = [];
  3. Выполните объект диаграммы, вызвав step функция многократно. Передача отдельных значений из вектора X как данные диаграммы x. Сбор результирующих значений y в векторе Y. Во время выполнения редактор Stateflow выделяет активные состояния и переходы с помощью анимации диаграммы.

    for i = 1:51
        step(r,'x',X(i));
        Y(i) = r.y;
    end
  4. Удаление объекта диаграммы r из рабочей области MATLAB.

    delete(r)
  5. Проверьте результаты выполнения диаграммы. Например, можно вызвать 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')

    MATLAB figure showing the input and output of the chart.

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

См. также

| | | (Simulink) | (Simulink)

Связанные темы