Чтобы улучшить удобочитаемость графика 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
.
Чтобы создать модель Simulink с пустым графиком, в командной строке MATLAB®, вводят sfnew
.
В пустом графике добавьте, утверждает A
и B
. В текстовой подсказке введите операторы соответствующих мер.
Добавьте переход по умолчанию, чтобы утвердить A
и переходы между состояниями A
и B
.
Дважды кликните каждый переход. В текстовой подсказке введите соответствующее условие.
Чтобы создать файл, в котором можно сохранить определение типов от вкладки Home на панели инструментов MATLAB, выбирают New> Class.
В редакторе MATLAB, введите:
classdef TrafficColors < Simulink.IntEnumType enumeration RED(0) GREEN(10) end end
classdef
задает основанный на целом числе перечислимый тип данных под названием TrafficColors
. Раздел enumeration
содержит перечисляемые значения, которые этот тип данных позволяет сопровождаемый их базовым числовым значением.Сохраните свой файл как TrafficColors.m
в папке на пути поиска файлов MATLAB.
Чтобы разрешить неопределенные данные, в окне Symbols, кликают по значку Resolve undefined symbols. Редактор Stateflow присваивает соответствующий осциллограф каждому символу в графике.
Символ | Осциллограф |
---|---|
color | Выходные данные |
y | Локальные данные |
GREEN | Данные о параметре |
RED | Данные о параметре |
Задавать color
как перечисленные данные, в Property Inspector:
В поле Type выберите Enum: <class name>
. Замените <class name>
на TrafficColors
, имя типа данных, который вы задали ранее.
Под Logging установите флажок Log signal data.
Установить осциллограф и тип y
, в Property Inspector:
В поле Scope выберите Output
.
В поле Type выберите uint8
.
Под Logging установите флажок Log signal data.
В окне Symbols удалите символы GREEN
и RED
. Редактор Stateflow неправильно идентифицировал эти символы как параметры, прежде чем вы задали color
как перечисленные данные.
Когда вы моделируете модель, Инспектор Данных моделирования, значок подсвечен, чтобы указать, что это имеет новые данные моделирования. Чтобы открыть Инспектора Данных моделирования, кликните по значку.
В Инспекторе Данных моделирования установите флажки для color
и сигналов y
так, чтобы они были отображены на отдельных осях.
Чтобы получить доступ к записанным данным в рабочем пространстве 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