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

Чтобы улучшить удобочитаемость графика 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. Чтобы разрешить неопределенные данные, в окне Symbols, кликают по значку 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. В окне Symbols удалите символы GREEN и RED. Редактор Stateflow неправильно идентифицировал эти символы как параметры, прежде чем вы задали color как перечисленные данные.

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

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

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

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

    A = table(logsout.getElement('color').Values.Time, ...
       logsout.getElement('color').Values.Data);
    A.Properties.VariableNames = {'SimulationTime','Color'};
    A
    A =
    
      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
    

Похожие темы