Присвоение перечисленных значений на графике

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

  • Создайте ограниченное множество значений и обратитесь к этим значениям по имени.

  • Сгруппировать связанные значения в отдельные типы данных.

  • Избегайте определения длинного списка констант.

Перечисленные данные поддерживаются в диаграммах Stateflow в Simulink® модели. Для получения дополнительной информации смотрите Ссылку значений по Имени при помощи перечисленных данных.

Поведение графика

В этом примере показано, как создать график, которая использует перечисленные значения для выдачи ключевого слова status.

Во время симуляции действие графика чередуется между состояниями A и B.

Выполнение государственных A

  • В начале симуляции состояние A введен.

  • Конечные A выполняет entry действие путем присвоения значения RED к перечисленным данным color.

  • Область данных y Шаги один раз в временные шаги (каждые 0,2 секунды) до состояния [y > 6] является true.

  • График принимает переход от состояния A в состояние B.

Выполнение государственных B

  • После перехода от состояния A происходит, состояние B введен.

  • Конечные B выполняет entry действие путем присвоения значения GREEN к перечисленным данным color.

  • Область данных y уменьшается один раз в раз за временной шаг (каждые 0,2 секунды) до условия [y < 3] является true.

  • График принимает переход от состояния B вернуться в состояние A.

Создайте график

Добавление состояний и переходов к графику

  1. Чтобы создать модель Simulink с пустым графиком, в MATLAB® в командной строке введите sfnew.

  2. На пустой графике добавьте состояния A и B. В текстовом приглашении введите соответствующие операторы действий.

  3. Добавьте переход по умолчанию в состояние A и переходы между состояниями A и B.

  4. Дважды кликните каждый переход. В текстовом приглашении введите соответствующее условие.

Определите тип перечисленных данных для графика

  1. Чтобы создать файл, в котором можно хранить определение типов, на вкладке Home на панели инструментов MATLAB, выберите New > Class.

  2. В редакторе MATLAB введите:

    classdef TrafficColors < Simulink.IntEnumType
      enumeration
        RED(0)
        GREEN(10)
      end
    end  
    The classdef раздел задает тип перечисленных данных на основе целого числа с именем TrafficColors. The enumeration раздел содержит перечисленные значения, которые позволяет этот тип данных, и их базовое числовое значение.

  3. Сохраните файл как TrafficColors.m в папке по путь поиска файлов MATLAB.

Определите данные графики

  1. Чтобы разрешить неопределенные данные, на панели «Символы» щелкните значок Resolve undefined symbols. Редактор Stateflow присваивает соответствующие возможности видимости каждому символу на графике.

    СимволВозможности
    colorВыходные данные
    yЛокальные данные
    GREENПараметрические данные
    REDПараметрические данные

  2. Чтобы задать color как перечисленные данные, в Property Inspector:

    • В Type поле выберите Enum: <class name>. Замените <class name> с TrafficColors, имя ранее заданного типа данных.

    • В разделе Logging установите флажок Log signal data.

  3. Чтобы задать возможности и тип y, в Property Inspector:

    • В Scope поле выберите Output.

    • В Type поле выберите uint8.

    • В разделе Logging установите флажок Log signal data.

  4. На панели «Символы» удалите символы GREEN и RED. Редактор Stateflow неправильно определил эти символы как параметры перед указанием color как перечисленные данные.

Просмотр результатов симуляции

  1. Когда вы моделируете модель, значок Simulation Data Inspector подсвечивается, чтобы указать, что у него есть новые данные моделирования. Чтобы открыть Данные моделирования Inspector, щелкните значок.

  2. В Данные моделирования Inspector установите флажки для color и y сигналы так, чтобы они отображались на отдельных осях.

  3. Для доступа к записанным данным в рабочем пространстве MATLAB вызовите объект логгирования сигналов logsout. Для примера в командной строке введите:

    losgout = out.logsout;
    colorLog = logsout.getElement('color');
    Tbl = table(colorLog.Values.Time,colorLog.Values.Data);
    Tbl.Properties.VariableNames = {'SimulationTime','Color'}
    Tbl =
    
      9×2 table
    
        SimulationTime    Color
        ______________    _____
    
               0          RED
             1.6          GREEN
             2.8          RED
               4          GREEN
             5.2          RED
             6.4          GREEN
             7.6          RED
             8.8          GREEN
              10          RED
    

Похожие темы