Во время выполнения объекты Stateflow® взаимодействуют друг с другом, чтобы моделировать реальное поведение. В следующей модели показывают различные объекты Stateflow, и их взаимодействия объяснены.
Модель в качестве примера показывает, как общие графические и неграфические объекты в графике взаимодействуют во время выполнения. Эти объекты включают:
Условия и действия условия
Исключительный (OR) состояния
Блок-схемы
Вызовы функции
Соединения истории
Параллель (AND) состояния
Акты государственной власти
Переходы охраняют входные события
Для получения дополнительной информации семантики графика, смотрите Фазы Выполнения Графика.
Этот пример использует процесс регистрации отеля, чтобы объяснить семантику диаграммы Stateflow.
Модель sf_semantics_hotel_checkin
состоит из четырех Ручных блоков switch, одного блока Mux, одного Многопортового блока switch, графика Отеля и блока Display.
Модель использует этот блок... | К... | Поскольку... |
---|---|---|
Позвольте переключиться между двумя настройками во время симуляции, не имея необходимость приостанавливать или перезапускать. | Во время симуляции можно в интерактивном режиме инициировать график путем отправки одного из этих входных событий:
| |
Объедините несколько входных сигналов в вектор. | График может поддержать несколько входных событий, только если они соединяются с триггерным портом графика как вектор входных параметров. | |
Включите выбор больше чем среди двух входных параметров. | Этот блок обеспечивает значение для входных данных графика Ручной блок switch не может поддержать больше чем два входных параметров, но Многопортовый блок switch может. | |
Покажите актуальное численное значение для входного сигнала. | Во время симуляции любого изменения в выходных данных графика |
График Отеля содержит графические объекты, такие как состояния и соединения истории и неграфические объекты, такие как действия условия и условия.
Для отображения объектов к их местоположениям в графике смотрите Объекты Stateflow.
Когда симуляция запускается, график просыпается и выполняет свои переходы по умолчанию, потому что опция Execute (enter) Chart At Initialization идет (см. Выполнение Графика при Инициализации). Затем график засыпает.
Если эта опция выключена, график не просыпается вплоть до вас, переключается один из Ручных блоков switch. Можно проверить установку для этой опции в диалоговом окне Свойств диаграммы. Щелкните правой кнопкой в верхнем уровне графика и выберите Properties из контекстного меню.
График просыпается снова только, когда запускаемое фронтом входное событие имеет место: check_in
, room_service
, fire_alarm
или all_clear
. Когда вы переключаете Ручной блок switch для входного события во время симуляции, график обнаруживает повышение или падающее ребро и просыпается. В то время как график бодрствует:
Многопортовый блок switch обеспечивает значение для входных данных графика room_type
.
Блок Display показывает любое изменение в значении для выходных данных графика fee
.
После завершения всех возможных фаз выполнения график возвращается ко сну.
Следующие разделы объясняют выполнение графика для каждой теневой области графика Отеля.
Кликните по теневой области, чтобы перейти непосредственно к информации о той фазе выполнения графика.
В этом разделе описываются то, что происходит в состоянии Front_desk
сразу после того, как график просыпается.
Этап | Сценарий отеля | Стройте диаграмму поведения |
---|---|---|
1 | Ваша первая остановка на стойке регистрации отеля. | На уровне графика переход по умолчанию к Для ссылки смотрите, Вводят График или состояние. |
2 | Вы покидаете стойку регистрации после регистрации в отель. | Событие Для ссылки смотрите Как События Процесса Графиков. |
3 | Непосредственно перед тем, как вы покидаете стойку регистрации, вы берете свои сумки, чтобы переместиться в вашу комнату. | Непосредственно перед тем, как переход происходит, действие Для ссылки смотрите Выход состояние. |
Руководства по моделированию для Инициализации Графика. Следующие инструкции применяются к инициализации графика.
Руководство по моделированию | Почему эта инструкция применяется | Ссылка |
---|---|---|
Используйте исключительный (OR) разложение, когда никакие два состояния на уровне иерархии не смогут быть активными одновременно. | Эта инструкция гарантирует соответствующее выполнение графика. Например, | |
Используйте переход по умолчанию, чтобы отметить первое состояние, чтобы стать активными среди исключительного (OR) состояния. | Эта инструкция предотвращает ошибки несоответствия состояния во время выполнения графика. | |
Используйте события, вместо условий, чтобы охранять переходы, которые зависят от случаев без свойственного численного значения. | Поскольку вы не можете легко определить количество численного значения того, чтобы зарегистрироваться в отеле, смоделируйте такое вхождение как событие. | |
Используйте действие | Другие типы актов государственной власти выполняются по-другому и не применяются:
|
В этом разделе описываются то, что происходит после выхода из состояния Front_desk
: оценка группы исходящих переходов от одного соединения.
Этап | Сценарий отеля | Стройте диаграмму поведения |
---|---|---|
1 | Можно переместиться в один из трех типов комнат. | После того, как событие Для ссылки смотрите Порядок Выполнения для набора Блок-схем. |
2 | Если вы выбираете президентский люкс, основной сбор 1500. | Если входные данные ПримечаниеЕсли главный переход не является допустимым отслеживанием в обратном порядке потока управления к центральному соединению так, чтобы тестирование следующего перехода могло произойти. Этот тип отслеживания в обратном порядке является намеренным. Чтобы узнать о неумышленном отслеживании в обратном порядке и как избежать его, смотрите Отслеживание в обратном порядке в Блок-схемах и Лучшых практиках для Создания Блок-схем. |
3 | Если вы выбираете комплект семейства, основной сбор 1000. | Если |
4 | Если вы выбираете одноместный номер, основной сбор 500. | Если |
Что происходит, если room_type
имеет значение кроме 1, 2, или 3?
Руководства по моделированию для Оценки Исходящих Переходов. Следующие инструкции применяются к синтаксису перехода.
Руководство по моделированию | Почему эта инструкция применяется | Ссылка |
---|---|---|
Используйте условия, вместо событий, охранять переходы, которые зависят от случаев с численным значением. | Поскольку можно определить количество типа гостиничного номера численно, выразите выбор типа номера как условие. | |
Используйте действия условия вместо действий перехода, когда это возможно. | Действия условия выполняются, как только условие оценивает к истине. Действия перехода не выполняются, пока путь к переходу не завершен к останавливающемуся соединению или состоянию. Если задержка выполнения не необходима, используйте действия условия вместо действий перехода. | |
Используйте явное упорядоченное расположение, чтобы управлять порядком тестирования группы исходящих переходов. | Можно задать явное или неявное упорядоченное расположение переходов. По умолчанию график использует явное упорядоченное расположение. Если вы переключаетесь на неявное упорядоченное расположение, порядок тестирования перехода может измениться, когда графические объекты перемещаются. |
В этом разделе описываются то, что происходит после того, как вы вводите состояние Checked_in
, независимо от которого подсостояние становится активным.
Этап | Сценарий отеля | Стройте диаграмму поведения |
---|---|---|
1 | После достижения вашей желаемой комнаты вы закончили перемещать свои сумки. | Действие |
2 | Если вы заказываете обслуживание номеров, ваш счет за гостиницу увеличивается постоянной суммой. | Если график получает широковещательную передачу события для
Для ссылки смотрите Как События Процесса Графиков. |
Руководства по моделированию для Выполнения Актов государственной власти. Следующие инструкции применяются к актам государственной власти.
Руководство по моделированию | Почему эта инструкция применяется | Ссылка |
---|---|---|
Используйте действие | Другие типы актов государственной власти выполняются по-другому и не применяются:
| Типы акта государственной власти |
Используйте | ||
Используйте сверхдержаву, чтобы заключить несколько подсостояний, которые совместно используют те же акты государственной власти. | Эта инструкция включает повторное использование актов государственной власти, которые применяются к нескольким подсостояниям. Вы пишете акты государственной власти только однажды, вместо того, чтобы написать им отдельно в каждом подсостоянии. | Создайте подсостояния и сверхдержавы |
Эта часть графика описывает, как можно выполнить вызовы функции, в то время как состояние активно.
Этап | Сценарий отеля | Стройте диаграмму поведения |
---|---|---|
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 путем отправки входных Событий |