state описывает рабочий режим реактивной системы. В Stateflow® стройте диаграмму, состояния используются для последовательного проекта, чтобы создать диаграммы переходов состояний.
Состояния могут быть активными или неактивными. Действие или неактивность состояния могут измениться в зависимости от событий и условий. Вхождение события управляет выполнением диаграммы переходов состояний, заставляя состояния стать активным или неактивным. Для получения дополнительной информации смотрите состояния.
Вы создаете состояния путем привлечения их в редакторе для конкретного графика (блок). Выполните эти шаги:
В палитре объектов кликните по значку состояния.
На холсте графика кликните по местоположению для нового состояния.
Введите метку для состояния и затем щелкните за пределами состояния. Метка для состояния задает свое необходимое имя и дополнительные действия. Для получения дополнительной информации смотрите, Маркируют States.
Чтобы переместить состояние, сделайте следующее:
Перетащите состояние.
Выпустите его в новом положении.
Чтобы изменить размер состояния, сделайте следующее:
Поместите указатель по углу состояния.
Когда указатель по углу, это появляется как симметричная стрела (PC только; внешний вид указателя меняется в зависимости от других платформ).
Перетащите угол состояния, чтобы изменить размер состояния и отпустить левую кнопку мыши.
substate является состоянием, которое может быть активно только, когда другое состояние, названное его родительским элементом, активно. Состояния, которые имеют подсостояния, известны как superstates. Чтобы создать подсостояние, кликните по инструменту State и перетащите новое состояние в состояние, вы хотите быть сверхсостоянием. Диаграмма Stateflow создает подсостояние в заданном родительском состоянии. Можно вложить состояния таким образом на любую глубину. Чтобы изменить происхождение подсостояния, перетащите его от его текущего родительского элемента в графике и пропустите его в его новом родительском элементе.
Примечание
Родительское состояние должно быть графически достаточно большим, чтобы вместить все его подсостояния. Вы можете должны быть изменить размер родительского состояния прежде, чем перетащить новое подсостояние в него. Можно обойти потребность в состоянии большого графического размера, объявив, что сверхсостояние субдиаграмма. Смотрите Инкапсулируют Модальную Логику при помощи Субдиаграмм для деталей.
Сгруппируйте состояние, чтобы переместить все графические объекты в состоянии вместе. Когда вы группируете состояние, график обрабатывает состояние и его содержимое как один графический модуль. Это поведение упрощает редактирование графика. Например, перемещение сгруппированного состояния перемещает все подсостояния и функции в том состоянии.
Можно сгруппировать состояние путем щелчка правой кнопкой по нему и затем выбора Group & Subchart> Group в контекстном меню. Состояние кажется теневым в сером, чтобы указать, что это теперь сгруппировано.
Необходимо разгруппировать состояние прежде, чем выполнить эти действия:
Выбор объектов в состоянии
Перемещение других графических объектов в состояние
При попытке переместить объекты, такие как состояния и графические функции в сгруппированное состояние, вы видите недопустимое перекрестное сообщение об ошибке. Кроме того, объекты с недопустимым пересечением имеют красную границу.
Можно разгруппировать состояние путем щелчка правой кнопкой по нему и затем очистки Group & Subchart> Group в контекстном меню. Фон состояния больше не кажется серым.
Вы задаете, содержит ли сверхсостояние параллель (AND) состояния или исключительный (OR) состояния путем установки его разложения. Состояние, подсостояния которого все активны, когда это активно, имеет параллель (AND) разложение. Состояние, в котором только одно подсостояние активно, когда это активно, имеет исключительный (OR) разложение. Разложение пустого состояния исключительно.
Чтобы изменить разложение состояния, выберите состояние, щелкните правой кнопкой, чтобы отобразить контекстное меню Decomposition состояния и выбрать OR (Exclusive) или AND (Parallel) в меню.
Можно также задать разложение состояния графика. В этом случае диаграмма Stateflow обрабатывает свои состояния верхнего уровня как подсостояния. График создает состояния с исключительным разложением. Чтобы задать разложение графика, отмените выбор любых выбранных объектов, щелкните правой кнопкой, чтобы отобразить контекстное меню Decomposition графика и выбрать OR (Exclusive) или AND (Parallel) в меню.
Внешний вид подсостояний указывает на разложение их сверхсостояния. Исключительные подсостояния имеют сплошные границы, параллельны подсостояниям, подчеркнутым штриховой линией границам. Параллельное подсостояние также содержит номер в своем правом верхнем углу. Номер указывает на порядок активации подсостояния относительно его одноуровневых подсостояний.
Можно задать порядок активации при помощи одного из двух методов: явное или неявное упорядоченное расположение.
По умолчанию, когда вы создаете новую диаграмму Stateflow, explicit ordering применяется. В этом случае вы задаете порядок активации на идущем от штата к штату базисе.
Можно также заменить явное упорядоченное расположение путем разрешения состояниям параллели порядка графика на основе местоположения. Этот режим известен как implicit ordering.
Для получения дополнительной информации смотрите Явное Упорядоченное расположение Параллельных состояний и Неявное Упорядоченное расположение Параллельных состояний.
Примечание
Порядок активации параллельного состояния появляется в его правом верхнем углу.
Используйте диалоговое окно State, чтобы просмотреть и изменить свойства для состояния. Получить доступ к диалоговому окну State:
Щелкните правой кнопкой по состоянию и выберите Properties.
Диалоговое окно Свойств состояний появляется. Для описаний свойств смотрите Свойства, которые Можно Установить в Общей Панели и Свойствах, которые Можно Установить в Панели Логгирования.
Измените настройки свойства и затем нажмите одну из этих кнопок:
Apply, чтобы сохранить изменения и сохранить диалоговое окно State открытым
Cancel, чтобы возвратиться к предыдущим настройкам
OK, чтобы сохранить изменения и закрыть диалоговое окно
Help, чтобы отобразить документацию в окне браузера HTML
Панель General диалогового окна Свойств состояний появляется как показано.
Можно установить эти свойства в панели General.
Свойство | Описание |
---|---|
Имя диаграммы Stateflow; только для чтения; кликните по этой гипертекстовой ссылке, чтобы принести состояние к переднему плану. | |
Установите порядок выполнения параллели (AND) состояние. Это свойство не появляется для исключительного (OR) состояния. Смотрите Порядок выполнения для Параллельных состояний. | |
Выберите эту опцию, чтобы создать данные о действии состояния. Смотрите Действие Состояния монитора Через Активные Данные состояния. | |
Выберите одну из этих опций, чтобы управлять встраиванием функций состояния в сгенерированном коде:
| |
Метка для состояния, которое включает имя состояния и его связанных действий. Смотрите состояния Метки. |
Панель Logging диалогового окна Свойств состояний появляется как показано.
Можно установить эти свойства в панели Logging.
Свойство | Описание |
---|---|
Сохраняет сам значение действия к MATLAB® рабочая область в процессе моделирования. | |
Определяет состояние как тестовую точку, которая может быть проверена с плавающим осциллографом во время симуляции модели. Можно также регистрировать значения тестовой точки в объекты рабочего пространства MATLAB. Смотрите Тестовые точки Монитора в диаграммах Stateflow. | |
Задает имя, сопоставленное с регистрируемым сам действие. Simulink® программное обеспечение использует имя сигнала в качестве своего имени логгирования по умолчанию. Чтобы задать пользовательское имя логгирования, выберите | |
Ограничивает сам действие, регистрируемое к новым выборкам. | |
Пределы сам действие регистрируются путем пропуска выборок. Например, фактор децимации 2 сохраняет любую выборку. |
Панель Documentation диалогового окна Свойств состояний появляется как показано.
Можно установить эти свойства в панели Documentation.
Метка для состояния задает свое необходимое имя для состояния и дополнительных действий, выполняемых, когда состояние введено, выходится или получает событие, в то время как это активно.
Метки состояния имеют следующий общий формат.
name/ entry:entry actions during:during actions exit:exit actions bind:data and events on event_or_message_name:on event_or_message_name actions
Курсивные записи в этом формате имеют следующие значения:
Ключевое слово | Запись | Описание |
---|---|---|
Не применяется | имя | Уникальная ссылка на состояние с дополнительной наклонной чертой |
| действия входа | Действия выполнились, когда конкретное состояние вводится как результат перехода, взятого к тому состоянию |
| во время действий | Действия, которые выполняются, когда состояние получает событие, в то время как это активно без допустимого перехода далеко от состояния |
| выйдите из действий | Действия выполнились, когда из состояния выходят как результат перехода, у которого отнимают состояние |
| данные или события | Связывает заданные данные или события к этому состоянию. Связанные данные могут быть изменены только этим состоянием или его дочерними элементами, но могут быть считаны другими состояниями. Связанные события могут быть широковещательно переданы только этим состоянием или его дочерними элементами. |
| event_or_message_name и на event_name действиях | Заданное событие или сообщение и Действия, выполняемые, когда состояние активно и заданное событие, происходят, или сообщение присутствует. Для получения дополнительной информации смотрите, Синхронизируют Компоненты модели Широковещательными Событиями и Связываются с диаграммами Stateflow путем Отправки сообщений. |
Первоначально, метка состояния пуста. Диаграмма Stateflow указывает на это путем отображения a? в положении метки состояния (левый верхний угол). Начните помечать состояние путем ввода имени для состояния со следующими шагами:
Кликните по состоянию.
Состояние обращается к своему цвету подсветки, и символ вопросительного знака появляется в верхнем левом угле состояния.
Нажмите ?, чтобы отредактировать метку.
Курсор редактирования появляется. Вы теперь свободны ввести метку.
Введите имя состояния в первой линии метки состояния. Имена являются чувствительными к регистру. Чтобы избежать конфликтов по совпадению имен, не присваивайте то же имя к одноуровневым состояниям. Однако можно присвоить то же имя к состояниям, которые не совместно используют тот же родительский элемент.
После маркировки состояния щелкните снаружи. В противном случае продолжите начинать действия. Чтобы переиздать метку, кликните по тексту метки около позиции символа, которую вы хотите отредактировать.
После ввода имени состояния в метке можно начать действия для любого из следующих типов действия:
Действия входа — начинают на новой строке с ключевого слова entry
или en
, сопровождаемый двоеточием, сопровождаемым одним или несколькими операторами действия на одной или нескольких линиях. Чтобы разделить несколько действий с той же линией, используйте запятую или точку с запятой.
Можно начать действия входа на той же линии как имя состояния. В этом случае начните действие входа с наклонной черты вправо (/)
вместо ключевого слова записи.
Выйдите Действия — начинают на новой строке с ключевого слова exit
или ex
, сопровождаемый двоеточием, сопровождаемым одним или несколькими операторами действия на одной или нескольких линиях. Чтобы разделить несколько действий с той же линией, используйте запятую или точку с запятой.
Во время Действий — начинают на новой строке с ключевого слова during
или du
, сопровождаемый двоеточием, сопровождаемым одним или несколькими операторами действия на одной или нескольких линиях. Чтобы разделить несколько действий с той же линией, используйте запятую или точку с запятой.
Свяжите Действия — начинают на новой строке с ключевого слова bind
сопровождаемый двоеточием, сопровождаемым одними или несколькими данными или событиями на одной или нескольких линиях. Чтобы разделить несколько действий с той же линией, используйте запятую или точку с запятой.
На Действиях — начинаются с ключевого слова on
, сопровождаемый пробелом и именем события или сообщения, сопровождаемого двоеточием, сопровождаемым одним или несколькими операторами действия на одной или нескольких линиях, например
on ev1: exit();
Чтобы разделить несколько действий с той же линией, используйте запятую или точку с запятой. Если вы хотите, чтобы различные события инициировали различные действия, введите несколько on
блоки в метке состояния. Каждый блок задает действие для определенного события или сообщения, например:
on ev1: action1(); on ev2: action2();
Выполнение действий, вы вводите для состояния, зависит только от их типа действия, а не порядка, в котором вы начинаете действия в метке. Если вы не задаете тип действия явным образом для оператора, график обрабатывает тот оператор как действие входа.
Совет
Можно также отредактировать метку в диалоговом окне свойств для состояния. Смотрите Свойства состояний Изменения.