Создайте и запустите диаграмму Stateflow

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

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

Stateflow chart with two states.

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

Создайте диаграмму Stateflow

Откройте редактора Stateflow

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

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

    sfnew rectify     % create chart for simulation in a Simulink model

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

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

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

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

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

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

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

  • На правой стороне холста, в панели Символов, вы добавляете новые данные в график и разрешаете любые неопределенные или неиспользованные символы.

Default view of the Stateflow Editor.

Совет

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

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

  1. От палитры объектов кликните по значку State и переместите указатель на холст графика. Состояние с его переходом по умолчанию появляется. Чтобы поместить состояние, кликните по местоположению на холсте. В текстовой подсказке введите имя состояния 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. Очистите график:

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

    • Чтобы выровняться и изменить размер графических элементов вашего графика, во вкладке Format, нажимают Auto Arrange или нажимают Ctrl+Shift+A.

    • Чтобы изменить размер графика, чтобы соответствовать холсту, нажмите клавишу "пробел" или кликните по значку Fit To View.

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

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

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

    • Если вы создаете график в модели Simulink, во вкладке Modeling, под Design Data, выберите Symbols Pane.

    • Если вы создаете автономную диаграмму для выполнения в MATLAB во вкладке State Chart, выберите Add Data> Symbols Pane.

  2. В панели Символов нажмите Resolve Undefined Symbols .

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

    • Если вы создаете автономную диаграмму для выполнения в MATLAB, редактор Stateflow разрешает t0X, и y как локальные данные.

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

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

  4. Установите значение для порога t0. В столбце Value кликните по пустой записи рядом с t0 и введите значение 0.

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

Ваш график теперь готов к симуляции в Simulink или выполнению в MATLAB.

Симулируйте график как блок Simulink

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

  1. Чтобы возвратиться к Редактору Simulink, на панели проводника наверху холста, кликают по имени модели Simulink: rectify. Если панель проводника не отображается, кликните по значку Hide/Show Explorer Bar наверху палитры объектов.

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

    • От библиотеки Simulink Sources добавьте блок Sine Wave (Simulink).

    • Дважды кликните блок Sine Wave и установите Sample time на 0,2.

    • Соедините выход блока Sine Wave к входу диаграммы Stateflow.

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

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

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

    • Соедините выход блока Sine Wave к первому входу блока Scope.

    • Соедините выход диаграммы 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 . Во время симуляции редактор Stateflow подсвечивает активные состояния и переходы посредством анимации графика.

  6. После того, как вы симулируете модель, дважды кликаете блок Scope. Осциллограф отображает графики сигналов ввода и вывода к графикам.

    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)

Похожие темы