Во время выполнения объекты Stateflow® взаимодействуют друг с другом, чтобы симулировать реальное поведение. В следующей модели показывают различные объекты Stateflow, и их взаимодействия объяснены.
Модель в качестве примера показывает, как общие графические и неграфические объекты в графике взаимодействуют во время выполнения. Эти объекты включают:
Условия и действия условия
Исключительный (OR) состояния
Блок-схемы
Вызовы функции
Соединения истории
Параллель (AND) состояния
Состояния активности
Переходы охраняют входные события
Для получения дополнительной информации семантики графика, смотрите Фазы Выполнения Графика.
Этот пример использует процесс регистрации отеля, чтобы объяснить семантику диаграммы Stateflow.
sf_semantics_hotel_checkin
модель состоит из четырех блоков Manual Switch, одного блока Mux, одного блока Multiport Switch, графика Отеля и блока Display.
Блок | Цель | Объяснение |
---|---|---|
Позвольте переключиться между двумя настройками в процессе моделирования, не имея необходимость приостанавливать или перезапускать. | В процессе моделирования можно в интерактивном режиме инициировать график путем отправки одного из этих входных событий:
| |
Объедините несколько входных сигналов в вектор. | График может поддержать несколько входных событий, только если они соединяются с триггерным портом графика как вектор из входных параметров. | |
Включите выбор больше чем среди двух входных параметров. | Этот блок вводит значение для входных данных графика Блок Manual Switch не может поддержать больше чем два входных параметров, но блок Multiport Switch может. | |
Покажите актуальное численное значение для входного сигнала. | В процессе моделирования, любое изменение в выходных данных графика |
График Отеля содержит графические объекты, такие как состояния и соединения истории и неграфические объекты, такие как действия условия и условия.
Для отображения объектов к их местоположениям в графике смотрите Объекты Stateflow.
Когда симуляция запускается, график просыпается и выполняет свои переходы по умолчанию, потому что опция Execute (enter) Chart At Initialization идет (см. Выполнение Графика при Инициализации). Затем график засыпает.
Примечание
Если эта опция выключена, график не просыпается вплоть до вас, переключается один из блоков Manual Switch. Можно проверить установку для этой опции в диалоговом окне Свойств диаграммы. Щелкните правой кнопкой в верхнем уровне графика и выберите Properties из контекстного меню.
График просыпается снова только, когда запускаемое фронтом входное событие имеет место: check_in
, room_service
, fire_alarm
, или all_clear
. Когда вы переключаете блок Manual Switch для входного события в процессе моделирования, график обнаруживает повышение или падающее ребро и просыпается. В то время как график бодрствует:
Блок Multiport Switch вводит значение для входных данных графика room_type
.
Блок Display показывает любое изменение в значении для выходных данных графика fee
.
После завершения всех возможных фаз выполнения график возвращается ко сну.
Следующие разделы объясняют выполнение графика для каждой теневой области графика Отеля.
Совет
Кликните по теневой области, чтобы перейти непосредственно к информации о той фазе выполнения графика.
В этом разделе описываются то, что происходит в Front_desk
состояние сразу после графика просыпается.
Этап | Сценарий отеля | Стройте диаграмму поведения |
---|---|---|
1 | Ваша первая остановка на стойке регистрации отеля. | На уровне графика, переходе по умолчанию к Для ссылки смотрите, Вводят График или состояние. |
2 | Вы покидаете стойку регистрации после регистрации в отель. |
Для ссылки смотрите, Как диаграммы Stateflow Отвечают на События. |
3 | Непосредственно перед тем, как вы покидаете стойку регистрации, вы берете свои сумки, чтобы переместиться в вашу комнату. | Непосредственно перед тем, как переход происходит, Для ссылки смотрите Выход состояние. |
Руководства по моделированию для Инициализации Графика. Следующие инструкции применяются к инициализации графика.
Руководство по моделированию | Почему эта инструкция применяется | Ссылка |
---|---|---|
Используйте исключительный (OR) разложение, когда никакие два состояния на уровне иерархии не смогут быть активными одновременно. | Эта инструкция гарантирует соответствующее выполнение графика. Например, | |
Используйте переход по умолчанию, чтобы отметить первое состояние, чтобы стать активными среди исключительного (OR) состояния. | Эта инструкция предотвращает ошибки несоответствия состояния во время выполнения графика. | |
Используйте события, вместо условий, чтобы охранять переходы, которые зависят от случаев без свойственного численного значения. | Поскольку вы не можете легко определить количество численного значения того, чтобы зарегистрироваться в отеле, смоделируйте такое вхождение как событие. | |
Используйте | Другие типы состояний активности выполняются по-другому и не применяются:
|
В этом разделе описываются то, что происходит после выхода из Front_desk
состояние: оценка группы исходящих переходов от одного соединения.
Этап | Сценарий отеля | Стройте диаграмму поведения |
---|---|---|
1 | Можно переместиться в один из трех типов комнат. | После Для ссылки смотрите Порядок Выполнения для набора Блок-схем. |
2 | Если вы выбираете президентский люкс, основной сбор 1500. | Если Примечание Если главный переход не является допустимым отслеживанием в обратном порядке потока управления к центральному соединению так, чтобы тестирование следующего перехода могло произойти. Этот тип отслеживания в обратном порядке является намеренным. Чтобы узнать о неумышленном отслеживании в обратном порядке и как избежать его, смотрите Отслеживание в обратном порядке в Блок-схемах и Лучшых практиках для Создания Блок-схем. |
3 | Если вы выбираете набор семейства, основной сбор 1000. | Если |
4 | Если вы выбираете одноместный номер, основной сбор 500. | Если |
Что происходит если room_type
имеет значение кроме 1, 2, или 3?
Руководства по моделированию для Оценки Исходящих Переходов. Следующие инструкции применяются к синтаксису перехода.
Руководство по моделированию | Почему эта инструкция применяется | Ссылка |
---|---|---|
Используйте условия, вместо событий, охранять переходы, которые зависят от случаев с численным значением. | Поскольку можно определить количество типа гостиничного номера численно, опишите выбор типа номера как условие. | |
Используйте действия условия вместо действий перехода, когда это возможно. | Действия условия выполняются, как только условие оценивает к истине. Действия перехода не выполняются, пока путь к переходу не завершен к завершающему работу соединению или состоянию. Если задержка выполнения не необходима, используйте действия условия вместо действий перехода. | |
Используйте явное упорядоченное расположение, чтобы управлять порядком тестирования группы исходящих переходов. | Можно задать явное или неявное упорядоченное расположение переходов. По умолчанию график использует явное упорядоченное расположение. Если вы переключаетесь на неявное упорядоченное расположение, порядок тестирования перехода может измениться, когда графические объекты перемещаются. |
В этом разделе описываются то, что происходит после того, как вы вводите Checked_in
состояние, независимо от которого подсостояние становится активным.
Этап | Сценарий отеля | Стройте диаграмму поведения |
---|---|---|
1 | После достижения вашей желаемой комнаты вы закончили перемещать свои сумки. |
|
2 | Если вы заказываете обслуживание номеров, ваш счет за гостиницу увеличивается постоянной суммой. | Если график получает широковещательную передачу события для
Для ссылки смотрите, Как диаграммы Stateflow Отвечают на События. |
Руководства по моделированию для Выполнения Состояний активности. Следующие инструкции применяются к состояниям активности.
Руководство по моделированию | Почему эта инструкция применяется | Ссылка |
---|---|---|
Используйте | Другие типы состояний активности выполняются по-другому и не применяются:
| Типы действий состояния |
Используйте | ||
Используйте сверхсостояние, чтобы заключить несколько подсостояний, которые совместно используют те же состояния активности. | Эта инструкция включает повторное использование состояний активности, которые применяются к нескольким подсостояниям. Вы пишете состояния активности только однажды, вместо того, чтобы написать им отдельно в каждом подсостоянии. | Создайте подсостояния и сверхсостояния |
Эта часть графика описывает, как можно выполнить вызовы функции, в то время как состояние активно.
Этап | Сценарий отеля | Стройте диаграмму поведения |
---|---|---|
1 | На основе вашего типа номера и общего количества запросов обслуживания номеров, можно отследить счет за гостиницу. |
Если вы дважды кликаете функциональное поле, вы видите этот скрипт в функциональном редакторе: function y = expenses(x) if (room_type == 1) y = 1500 + (x*50); else if (room_type == 2) y = 1000 + (x*25); else y = 500 + (x*5); end end |
Руководства по моделированию для Вызовов функции. Следующие инструкции применяются к вызовам функции.
Руководство по моделированию | Почему эта инструкция применяется | Ссылка |
---|---|---|
Используйте функции MATLAB для выполнения численных расчетов в графике. | Функции MATLAB лучше в обработке численных расчетов, чем графические функции, таблицы истинности или функции Simulink®. | Повторное использование код MATLAB путем определения функций MATLAB |
Используйте описательные имена в функциональных подписях. | Описательные имена функций улучшают удобочитаемость объектов диаграммы. |
Эта часть графика показывает, как состояние с исключительным (OR) разложение выполняется.
Этап | Сценарий отеля | Стройте диаграмму поведения |
---|---|---|
1 | Когда вы добираетесь до президентского люкса, вы вводите спальню сначала. Примечание Президентский люкс имеет отдельную спальню и обеденные зоны. Поэтому можно быть только в одной области набора в любое время. | Когда условие
Для ссылки смотрите, Вводят График или состояние. |
2 | Когда вы заказываете обслуживание номеров, вы вводите обеденную зону, чтобы поесть. | Когда |
3 | Когда это необходимо, еда удалила из обеденной зоны, вы заказываете обслуживание номеров снова и затем возвращаетесь к спальне. | Когда |
4 | Если вы покидаете президентский люкс из-за пожарной сигнализации, вы возвращаетесь к своей предыдущей комнате после сигнала отбоя. | Если переход из |
Руководства по моделированию для Выполнения Исключительных (OR) состояния. Следующие инструкции применяются исключительный (OR) состояния.
Руководство по моделированию | Почему эта инструкция применяется | Ссылка |
---|---|---|
Используйте исключительный (OR) разложение, когда никакие два состояния на том уровне иерархии не смогут быть активными одновременно. | Эта инструкция гарантирует соответствующее выполнение графика. Например, | |
Если возвращение к состоянию с исключительным (OR), разложение зависит от ранее активного подсостояния, используйте соединение истории. Этот тип соединения записывает активное подсостояние, когда график выходит из состояния. | Если вы не записываете ранее активное подсостояние, переход по умолчанию происходит, и неправильное подсостояние может стать активным после возвращения состояния. Например, если бы вы ели, когда пожарная сигнализация звучала, вы возвратились бы к спальне вместо столовой. |
Эта часть графика показывает, как состояние с параллелью (AND) разложение выполняется.
Этап | Сценарий отеля | Стройте диаграмму поведения |
---|---|---|
1 | Когда ваше семейство достигает набора, члены семьи могут быть в обеих спальнях (например, родительские элементы в спальне хозяев и дочерние элементы во второй спальне). Выбор помещения по умолчанию не применяется. | Когда условие
Для ссылки смотрите, Вводят График или состояние. |
2 | Можно занять обе комнаты одновременно. |
|
Руководства по моделированию для Выполнения Параллели (AND) состояния. Следующие инструкции применяют к параллели (AND) состояния.
Руководство по моделированию | Почему эта инструкция применяется | Ссылка |
---|---|---|
Используйте параллель (AND) разложение, когда все состояния на том уровне иерархии смогут быть активными одновременно. | Эта инструкция гарантирует соответствующее выполнение графика. Например, | |
Не используйте соединения истории в состояниях с параллелью (AND) разложение. | Эта инструкция предотвращает ошибки анализа. Поскольку все параллельные состояния на уровне иерархии активны одновременно, соединения истории не имеют никакого значения. | |
Используйте явное упорядоченное расположение, чтобы управлять порядком выполнения параллели (AND) состояния. | Можно задать явное или неявное упорядоченное расположение параллельных состояний. По умолчанию график использует явное упорядоченное расположение. Если вы переключаетесь на неявное упорядоченное расположение, порядок выполнения может измениться, когда параллель утверждает перемещение. |
Эта часть графика описывает, как события могут охранять переходы между исключительным (OR) состояния.
Этап | Сценарий отеля | Стройте диаграмму поведения |
---|---|---|
1 | Если пожарная сигнализация звучит, вы покидаете отель и перемещаетесь в зону ожидания снаружи. | Когда график получает широковещательную передачу события для |
2 | Если сигнал отбоя происходит, можно покинуть зону ожидания и возвратиться к предыдущему местоположению в отеле. | Когда график получает широковещательную передачу события для Соединение истории на каждом уровне иерархии в |
Руководства по моделированию для Защиты Переходов. Следующая инструкция обсуждает использование событий по сравнению с условиями.
Руководство по моделированию | Почему эта инструкция применяется | Ссылка |
---|---|---|
Используйте события, вместо условий, чтобы охранять переходы, которые зависят от случаев без численного значения. | Поскольку вы не можете легко определить количество численного значения пожарной сигнализации или сигнала отбоя, смоделируйте такое вхождение как событие. | Активируйте диаграмму Stateflow путем отправки входных Событий |