В Stateflow®, семантика описывает поведение при выполнении вашей диаграммы Stateflow. Различные факторы могут влиять, как ваш график выполняется, включая:
Явное или неявное упорядоченное расположение состояний
Упорядоченное расположение перехода между состояниями
События отправляются параллелью или сверхсостояниями
Когда вы создаете свой график, вы ожидаете, что он будет вести себя определенным способом. Путем знания, как эти факторы влияют график, можно создать график, который ведет себя с намеренным взаимодействием графических и неграфических объектов. Графические и неграфические объекты являются базовыми блоками для всех диаграмм Stateflow.
Объекты Stateflow являются базовыми блоками диаграмм Stateflow. Эти объекты могут быть категоризированы или как графические или как неграфические. Графические объекты состоят из объектов, которые появляются графически в графике. Неграфические объекты появляются дословно в графике и часто относятся к данным, событиям и сообщениям. Этот график показывает разнообразие и графических и неграфических объектов.
Чтобы создать графические объекты, используйте палитру объектов в редакторе Stateflow (см. Операции редактора Stateflow).
Графические объекты | Типы | Ссылки |
---|---|---|
Блок-схемы | Шаблоны логики решения | Блок-схемы в Stateflow |
Шаблоны логики цикла | ||
Функции | Графические функции | Шаблоны логики повторного использования путем определения графических функций |
MATLAB® функции | Повторное использование код MATLAB путем определения функций MATLAB | |
Функции таблицы истинности | Используйте таблицы истинности, чтобы смоделировать комбинаторную логику | |
Simulink® функции | Повторное использование функции Simulink в диаграммах Stateflow | |
Соединения | Соединительные соединения | Объедините переходы и соединения, чтобы создать переходящие пути |
Соединения истории | Соединения истории | |
Состояния | Состояния с исключительным (OR) разложение | Исключительный (OR) разложение состояния |
Состояния с параллелью (AND) разложение | Параллель (AND) разложение состояния | |
Подсостояния и сверхсостояния | Создайте подсостояния и сверхсостояния | |
Переходы | Переходы по умолчанию | Переходы по умолчанию |
Переходы от объекта к объекту | Связи перехода | |
Внутренние переходы | ||
Переходы самоцикла |
Вы создаете неграфические объекты дословно в вашем графике. Смотрите Добавляют Данные Stateflow, Задают События в Графике и Задают сообщения в Графике для деталей. Примеры неграфических объектов включают:
Неграфический объект | Описание | Ссылка |
---|---|---|
Условие | Булево выражение, которое указывает, что путь к переходу допустим, если выражение верно; часть метки перехода | |
Действие условия | Действие, которое выполняется, как только условие оценивает к истине; часть метки перехода | |
Состояния активности | Выражения, которые задают действия, чтобы взять, когда состояние активно, таково как инициализация или обновление данных; часть метки состояния | |
Вызовы функции | Выражение раньше активировало определенную функцию в рамках графика. | Повторное использование код MATLAB путем определения функций MATLAB и повторного использования функции Simulink в диаграммах Stateflow |
Временные логические операторы | Операторы, которые используются к действиям диаграммы управления. | Управление выполнением диаграммы при помощи временной логики |
Набор путей к потоку по умолчанию выполняется. Если это действие не вызывает запись состояния, и график имеет параллельное разложение, то каждое параллельное состояние становится активным.
Если выполнение путей к потоку по умолчанию не вызывает запись состояния, ошибка несоответствия состояния происходит.
Если график не имеет никаких состояний, каждое выполнение эквивалентно инициализации графика. В противном случае активные дочерние элементы выполняются. Параллельные состояния выполняются в том же порядке, что они становятся активными.
Если родительский элемент состояния не активен, выполните шаги 1 - 4 для родительского элемента.
Если это состояние является параллельным состоянием, проверяйте, что все одноуровневые элементы с более высоким (то есть, ранее) порядок записи активны. В противном случае выполните шаги 1 - 5 для этих состояний сначала.
Параллель (AND), который состояния упорядочены для записи на основе того, используете ли вы явное упорядоченное расположение (значение по умолчанию) или неявное упорядоченное расположение.
Отметьте активное состояние.
Выполните любые действия входа.
Введите дочерние элементы в случае необходимости:
Если состояние содержит соединение истории и был активный дочерний элемент этого состояния в какой-то момент после новой инициализации графика, выполните действия входа для того дочернего элемента. В противном случае выполните пути к потоку по умолчанию для состояния.
Если это состояние имеет дочерние элементы, которые являются параллельными состояниями (параллельное разложение), выполняют шаги 1 - 5 записи для каждого состояния согласно его порядку записи.
Если это состояние имеет только одно дочернее подсостояние, подсостояние становится активным, когда родительский элемент становится активным, независимо от того, присутствует ли переход по умолчанию. Ввод родительского состояния автоматически делает подсостояние активным. Присутствие любого внутреннего перехода не оказывает влияния на определение активного подсостояния.
Если это состояние является параллельным состоянием, выполните все шаги записи для одноуровневого элемента, утверждают затем в порядке записи, если вы существуете.
Если родительский элемент пути к переходу различный как родительский элемент текущего состояния, выполните шаги 6 и 7 записи для непосредственного родителя этого состояния.
Набор внешних блок-схем выполняется. Если это действие вызывает изменение состояния, остановки выполнения. Этот шаг никогда не происходит для параллельных состояний.
Во время действий и допустимых действий на событии выполняются.
Набор внутренних блок-схем выполняется. Если это действие не вызывает изменение состояния, активные дочерние элементы выполняются, запускающийся на шаге 1. Параллельные состояния выполняются в том же порядке, что они становятся активными.
Если это - параллельное состояние, убедитесь, что все одноуровневые состояния, которые стали активными после этого состояния, уже стали неактивными. В противном случае выполните все шаги выхода на тех одноуровневых состояниях.
Если существуют какие-либо активные дочерние элементы, выполняют выходные шаги на этих состояниях в обратном порядке, что они стали активными.
Выполните любые выходные действия.
Отметьте состояние как неактивное.
Блок-схемы выполняются путем запуска на шаге 1 ниже с набором стартовых переходов. Стартовые переходы для внутренних блок-схем являются всеми сегментами перехода, которые происходят на соответствующем состоянии и находятся полностью в том состоянии. Стартовые переходы для внешних блок-схем являются всеми сегментами перехода, которые происходят на соответствующем состоянии, но находятся, по крайней мере, частично вне того состояния. Стартовые переходы для блок-схем по умолчанию являются всеми сегментами перехода по умолчанию, которые имеют начальные точки с тем же родительским элементом:
Упорядоченное расположение набора сегментов перехода происходит.
В то время как там остаются, сегменты, чтобы протестировать, тестируя сегмент на валидность происходят. Если сегмент недопустим, тестирование следующего сегмента происходит. Если сегмент допустим, выполнение зависит от места назначения:
Состояния
Тестирование остановок сегментов перехода и пути к переходу формируется, отходя назад и включая сегмент перехода от каждого предыдущего соединения до соответствующего стартового перехода.
Состояния, которые являются мгновенными дочерними элементами родительского элемента выхода пути к переходу.
Действие перехода от итогового пути к переходу выполняется.
Целевое состояние становится активным.
Соединения без исходящих сегментов перехода
Тестирование остановок без любых выходов состояния или записей.
Перекрестки с исходящими сегментами перехода
Шаг 1 повторяется с набором исходящих сегментов от соединения.
После тестирования всех исходящих сегментов перехода на перекрестке отследите в обратном порядке входящий сегмент перехода, который принес вам к соединению, и продолжите на шаге 2, начиная со следующего сегмента перехода после сегмента отслеживания в обратном порядке. Набор выполнения концов блок-схем, когда тестирование всех стартовых переходов завершено.
Выведите инициируют выполнение события фронтом сигнала, эквивалентно изменению значения значения выходных данных. Все другие события имеют следующее выполнение:
Если приемник события активен, то это выполняется. Приемник события является родительским элементом события, если прямая широковещательная передача события не происходит с помощью send()
функция.
Если приемник события не активен, ничего не происходит.
После широковещательной передачи события вещательная компания выполняет, рано возвращают логику на основе типа оператора действия, который вызвал событие.
Тип действия | Рано возвратите логику |
---|---|
Запись состояния | Если состояние более не активно в конце широковещательной передачи события, любые остающиеся шаги во вводе состояния не происходят. |
Выход состояния | Если состояние более не активно в конце широковещательной передачи события, любые остающиеся выходные действия и шаги в переходе состояния не происходят. |
Состояние во время | Если состояние более не активно в конце широковещательной передачи события, любые остающиеся шаги в выполнении активного состояния не происходят. |
Условие | Если состояние источника внутренней или внешней блок-схемы или родительское состояние блок-схемы по умолчанию более не активны в конце широковещательной передачи события, остающиеся шаги в выполнении набора блок-схем не происходят. |
Переход | Если родительский элемент пути к переходу не активен или если тот родительский элемент имеет активный дочерний элемент, остающиеся действия перехода и запись состояния не происходят. |