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

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

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

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

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

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

Редактор Stateflow является графической средой для разработки диаграмм переходов состояний, блок-схем, таблиц переходов состояний и таблиц истинности. Основные компоненты редактора Stateflow являются объектной палитрой, холстом графика и окном Symbols.

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

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

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

Создать диаграмму Stateflow, которую можно моделировать как блок в модели Simulink в подсказке команды MATLAB, введите:

sfnew rectify     % create chart for simulation in a Simulink model
С нескольких моментов Simulink открывает модель под названием rectify, который содержит пустой блок Stateflow Chart. Чтобы открыть редактора Stateflow, дважды кликните блок графика.

Создать автономную диаграмму Stateflow, которую можно выполнить как объект MATLAB в подсказке команды MATLAB, введите:

edit rectify.sfx  % create chart for execution as a MATLAB object
Если файл, rectify.sfx не существует, редактор Stateflow, открывает пустой график с именем rectify.

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

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

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

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

    Также, чтобы чертить переход, перетащите от ребра одного состояния к ребру другого состояния.

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

  5. Очистите график:

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

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

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

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

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

  1. В окне Symbols кликните по значку Resolve Undefined Symbols.

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

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

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

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

  4. Чтобы сохранить вашу диаграмму Stateflow, кликните по значку Save.

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

Моделируйте график как блок Simulink

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

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

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

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

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

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

    • Маркируйте сигнал как x.

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

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

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

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

    • Маркируйте сигнал как y.

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

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

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

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

Выполните график как объект 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')

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

Смотрите также

| | | |

Похожие темы