exponenta event banner

Назначение перечисляемых значений в диаграмме

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

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

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

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

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

Поведение диаграммы

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

Во время моделирования действие диаграммы чередуется между состояниями 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 в качестве перечисленных данных в Инспекторе свойств:

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

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

  3. Задание области действия и типа y, в Инспекторе свойств:

    • В поле Область выберите Output.

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

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

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

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

  1. При моделировании модели значок «Инспектор расчетных данных» подсвечивается, указывая на наличие новых расчетных данных. Чтобы открыть инспектор данных моделирования, щелкните значок.

  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
    

Связанные темы