Представляйте рабочие режимы при помощи состояний

state описывает рабочий режим реактивной системы. В Stateflow® стройте диаграмму, состояния используются для последовательного проекта, чтобы создать диаграммы переходов состояний.

Состояния могут быть активными или неактивными. Действие или неактивность состояния могут измениться в зависимости от событий и условий. Вхождение события управляет выполнением диаграммы переходов состояний, заставляя состояния стать активным или неактивным. Для получения дополнительной информации смотрите состояния.

Создайте состояние

Вы создаете состояния путем привлечения их в редакторе для конкретного графика (блок). Выполните эти шаги:

  1. В палитре объектов кликните по значку состояния.

  2. На холсте графика кликните по местоположению для нового состояния.

  3. Введите метку для состояния и затем щелкните за пределами состояния. Метка для состояния задает свое необходимое имя и дополнительные действия. Для получения дополнительной информации смотрите, Маркируют States.

Переместите и измените размер состояний

Чтобы переместить состояние, сделайте следующее:

  1. Перетащите состояние.

  2. Выпустите его в новом положении.

Чтобы изменить размер состояния, сделайте следующее:

  1. Поместите указатель по углу состояния.

    Когда указатель по углу, это появляется как симметричная стрела (PC только; внешний вид указателя меняется в зависимости от других платформ).

  2. Перетащите угол состояния, чтобы изменить размер состояния и отпустить левую кнопку мыши.

Создайте подсостояния и сверхсостояния

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:

  1. Щелкните правой кнопкой по состоянию и выберите Properties.

    Диалоговое окно Свойств состояний появляется. Для описаний свойств смотрите Свойства, которые Можно Установить в Общей Панели и Свойствах, которые Можно Установить в Панели Логгирования.

  2. Измените настройки свойства и затем нажмите одну из этих кнопок:

    • Apply, чтобы сохранить изменения и сохранить диалоговое окно State открытым

    • Cancel, чтобы возвратиться к предыдущим настройкам

    • OK, чтобы сохранить изменения и закрыть диалоговое окно

    • Help, чтобы отобразить документацию в окне браузера HTML

Свойства можно установить в общей панели

Панель General диалогового окна Свойств состояний появляется как показано.

Можно установить эти свойства в панели General.

Свойство

Описание

Имя

Имя диаграммы Stateflow; только для чтения; кликните по этой гипертекстовой ссылке, чтобы принести состояние к переднему плану.

Порядок выполнения

Установите порядок выполнения параллели (AND) состояние. Это свойство не появляется для исключительного (OR) состояния. Смотрите Порядок выполнения для Параллельных состояний.

Создайте данные для контроля

Выберите эту опцию, чтобы создать данные о действии состояния. Смотрите Действие Состояния монитора Через Активные Данные состояния.

Функциональная встроенная опция

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

  • Auto

    Встраивает функции состояния на основе внутренней эвристики.

  • Inline

    Всегда встраивает функции состояния в родительской функции, пока функция не является частью рекурсии. Смотрите Встроенные Функции состояния в Сгенерированном коде (Simulink Coder)

  • Function

    Создает отдельные статические функции для каждого состояния.

Метка

Метка для состояния, которое включает имя состояния и его связанных действий. Смотрите состояния Метки.

Свойства можно установить в панели логгирования

Панель Logging диалогового окна Свойств состояний появляется как показано.

Можно установить эти свойства в панели Logging.

Свойство

Описание

Регистрируйте сам действие

Сохраняет сам значение действия к MATLAB® рабочая область в процессе моделирования.

Тестовая точка

Определяет состояние как тестовую точку, которая может быть проверена с плавающим осциллографом во время симуляции модели. Можно также регистрировать значения тестовой точки в объекты рабочего пространства MATLAB. Смотрите Тестовые точки Монитора в диаграммах Stateflow.

Логгирование имени

Задает имя, сопоставленное с регистрируемым сам действие. Simulink® программное обеспечение использует имя сигнала в качестве своего имени логгирования по умолчанию. Чтобы задать пользовательское имя логгирования, выберите Custom от поля списка и вводят новое имя в смежном поле редактирования.

Ограничьте точки данных, чтобы продлиться

Ограничивает сам действие, регистрируемое к новым выборкам.

Децимация

Пределы сам действие регистрируются путем пропуска выборок. Например, фактор децимации 2 сохраняет любую выборку.

Свойства можно установить в панели документации

Панель Documentation диалогового окна Свойств состояний появляется как показано.

Можно установить эти свойства в панели Documentation.

Свойство

Описание

Описание

Текстовое описание или комментарий.

Ссылка на документ

Введите адрес URL или общую команду MATLAB. Примерами является www.mathworks.com, mailto:email_address, и edit /spec/data/speed.txt.

Маркируйте состояния

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

Метки состояния имеют следующий общий формат.

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

Курсивные записи в этом формате имеют следующие значения:

Ключевое слово

Запись

Описание

Не применяется

имя

Уникальная ссылка на состояние с дополнительной наклонной чертой

entry или en

действия входа

Действия выполнились, когда конкретное состояние вводится как результат перехода, взятого к тому состоянию

during или du

во время действий

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

exit или ex

выйдите из действий

Действия выполнились, когда из состояния выходят как результат перехода, у которого отнимают состояние

bind

данные или события

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

on

event_or_message_name

и

на event_name действиях

Заданное событие или сообщение

и

Действия, выполняемые, когда состояние активно и заданное событие, происходят, или сообщение присутствует.

Для получения дополнительной информации смотрите, Синхронизируют Компоненты модели Широковещательными Событиями и Связываются с диаграммами Stateflow путем Отправки сообщений.

Введите имя

Первоначально, метка состояния пуста. Диаграмма Stateflow указывает на это путем отображения a? в положении метки состояния (левый верхний угол). Начните помечать состояние путем ввода имени для состояния со следующими шагами:

  1. Кликните по состоянию.

    Состояние обращается к своему цвету подсветки, и символ вопросительного знака появляется в верхнем левом угле состояния.

  2. Нажмите ?, чтобы отредактировать метку.

    Курсор редактирования появляется. Вы теперь свободны ввести метку.

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

    После маркировки состояния щелкните снаружи. В противном случае продолжите начинать действия. Чтобы переиздать метку, кликните по тексту метки около позиции символа, которую вы хотите отредактировать.

Начните действия

После ввода имени состояния в метке можно начать действия для любого из следующих типов действия:

  • Действия входа — начинают на новой строке с ключевого слова entry или en, сопровождаемый двоеточием, сопровождаемым одним или несколькими операторами действия на одной или нескольких линиях. Чтобы разделить несколько действий с той же линией, используйте запятую или точку с запятой.

    Можно начать действия входа на той же линии как имя состояния. В этом случае начните действие входа с наклонной черты вправо (/) вместо ключевого слова записи.

  • Выйдите Действия — начинают на новой строке с ключевого слова exit или ex, сопровождаемый двоеточием, сопровождаемым одним или несколькими операторами действия на одной или нескольких линиях. Чтобы разделить несколько действий с той же линией, используйте запятую или точку с запятой.

  • Во время Действий — начинают на новой строке с ключевого слова during или du, сопровождаемый двоеточием, сопровождаемым одним или несколькими операторами действия на одной или нескольких линиях. Чтобы разделить несколько действий с той же линией, используйте запятую или точку с запятой.

  • Свяжите Действия — начинают на новой строке с ключевого слова bind сопровождаемый двоеточием, сопровождаемым одними или несколькими данными или событиями на одной или нескольких линиях. Чтобы разделить несколько действий с той же линией, используйте запятую или точку с запятой.

  • На Действиях — начинаются с ключевого слова on, сопровождаемый пробелом и именем события или сообщения, сопровождаемого двоеточием, сопровождаемым одним или несколькими операторами действия на одной или нескольких линиях, например

    on ev1: exit();
    

    Чтобы разделить несколько действий с той же линией, используйте запятую или точку с запятой. Если вы хотите, чтобы различные события инициировали различные действия, введите несколько on блоки в метке состояния. Каждый блок задает действие для определенного события или сообщения, например:

    on ev1: action1(); on ev2: action2();
    

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

Совет

Можно также отредактировать метку в диалоговом окне свойств для состояния. Смотрите Свойства состояний Изменения.

Смотрите также

Похожие темы