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

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

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

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

  • Постарайтесь не задавать длинный список констант.

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

Стройте диаграмму поведения

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

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

Выполнение A состояния

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

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

  • Данные y шаг однажды на временной шаг (каждые 0.2 секунды) до условия [y > 6] верно.

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

Выполнение B состояния

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

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

  • Данные y декременты однажды на временной шаг (каждые 0.2 секунды) до условия [y < 3] верно.

  • График берет переход от 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  
    classdef раздел задает основанный на целом числе перечислимый тип данных под названием TrafficColors. 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 подсвечен, чтобы указать, что это имеет новые данные моделирования. Чтобы открыть Инспектора Данных моделирования, кликните по значку.

  2. В Инспекторе Данных моделирования установите флажки для 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
    

Похожие темы