Во время выполнения, Stateflow® объекты взаимодействуют друг с другом, чтобы симулировать поведение в реальном мире. В следующей модели показываются различные объекты Stateflow, и их взаимодействия объясняются.
Пример модели показывает, как общие графические и неграфические объекты на графике взаимодействуют во время выполнения. Эти объекты включают:
Условия и действия условия
Эксклюзивные (ИЛИ) состояния
Блок- графики
Вызовы функций
Исторические соединения
Параллельные (И) состояния
Состояния активности
Переходы, охраняемые входом событиями
Для получения дополнительной информации о семантике графика смотрите Фазы выполнения графика.
Этот пример использует процесс регистрации в отеле, чтобы объяснить семантику диаграммы Stateflow.
The sf_semantics_hotel_checkin
модель состоит из четырех блоков Manual Switch (Simulink), одного блока Mux (Simulink), одного блока Multiport Switch (Simulink), графика Отеля и блока Display (Simulink).
Блок | Цель | Объяснение |
---|---|---|
Manual Switch (Simulink) | Включите переключение между двумя настройками во время симуляции без необходимости паузы или перезапуска. | Во время симуляции можно в интерактивном режиме запустить график, отправив одно из следующих входных событий:
|
Mux (Simulink) | Объедините несколько входных сигналов в вектор. | График может поддерживать несколько входных событий, только если они соединяются с триггерным портом диаграммы как вектор входов. |
Multiport Switch (Simulink) | Включите выбор из более чем двух входов. | Этот блок предоставляет значение для входных данных графика Блок Manual Switch не может поддерживать более двух входов, но блок Multiport Switch может. |
Display (Simulink) | Отобразите актуальное числовое значение для входного сигнала. | Во время симуляции любое изменение выходных данных графика |
График отеля содержит графические объекты, такие как состояния и исторические соединения, и неграфические объекты, такие как условия и действия условия.
Для отображения объектов в их местоположения на графике смотрите Stateflow Objects.
Когда симуляция начинается, график просыпается и выполняет свои переходы по умолчанию, потому что опция 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 | Вы покидаете стойку регистрации после регистрации в отеле. | The Для ссылки смотрите Как диаграммы Stateflow отвечают на события. |
3 | Перед тем, как покинуть стойку регистрации, вы забираете сумки, чтобы переехать в свою комнату. | Непосредственно перед переходом происходит Для ссылки смотрите Выход из состояния. |
Руководства по моделированию для инициализации графика. Следующие инструкции применяются к инициализации графика.
Руководство по моделированию | Почему применяется это руководство | Ссылка |
---|---|---|
Используйте эксклюзивное (OR) разложение, когда никакие два состояния на уровне иерархии не могут быть активными одновременно. | Это руководство обеспечивает правильное выполнение графика. Для примера, | |
Используйте переход по умолчанию, чтобы отметить первое состояние, которое станет активным среди исключительных состояний (OR). | Это руководство предотвращает ошибки несогласованности состояний во время выполнения графика. | |
Используйте события вместо условий, чтобы защитить переходы, которые зависят от вхождений без присущего им числового значения. | Поскольку вы не можете легко количественно определить числовое значение проверки в отеле, моделируйте такое вхождение как событие. | |
Использование | Другие виды состояний активности выполняются по-разному и не применяются:
|
В этом разделе описывается, что происходит после выхода из Front_desk
состояние: оценка группы исходящих переходов от одного соединения.
Стадия | Сценарий отеля | Поведение графика |
---|---|---|
1 | Можно переехать в один из трех типов комнат. | После Для получения ссылки смотрите Порядок выполнения для Набора Графиков потока. |
2 | Если вы выбираете исполнительный набор, базовая плата составляет 1500. | Если на Примечание Если верхний переход не действителен, управляйте обратными связями потока к центральному соединению, чтобы могло произойти тестирование следующего перехода. Этот тип обратного отслеживания является преднамеренным. Чтобы узнать о непреднамеренном обратном отслеживании и о том, как его избежать, смотрите Backtrack in Flow Charts и Лучшие Практики for Creating Flow Chart. |
3 | Если вы выбираете семейство набора, базовая комиссия составляет 1000. | Если |
4 | Если вы выбираете одноместный номер, базовая плата составляет 500. | Если |
Что будет, если room_type
имеет значение, отличное от 1, 2 или 3?
Руководства по моделированию для оценки исходящих переходов. Следующие инструкции применяются к синтаксису перехода.
Руководство по моделированию | Почему применяется это руководство | Ссылка |
---|---|---|
Используйте условия вместо событий, чтобы защитить переходы, которые зависят от вхождений с числовым значением. | Поскольку вы можете количественно определить тип гостиничного номера, выразите выбор типа номера в качестве условия. | |
По возможности используйте действия условия вместо действий перехода. | Действия условия выполняются, как только условие вычисляется как true. Переходные действия выполняются только после завершения переходного пути в оконечное соединение или состояние. Если задержка выполнения не требуется, используйте действия условия вместо действий перехода. | |
Используйте явное упорядоченное расположение для управления порядком проверки группы исходящих переходов. | Можно задать явное или неявное упорядоченное расположение переходов. По умолчанию на графике используется явное упорядоченное расположение. Если вы переключитесь на неявное упорядоченное расположение, порядок проверки перехода может измениться при перемещении графических объектов. |
В этом разделе описывается, что происходит после ввода Checked_in
состояние, независимо от того, какое подсостояние становится активным.
Стадия | Сценарий отеля | Поведение графика |
---|---|---|
1 | Достигнув нужной комнаты, вы заканчиваете перемещать сумки. | The |
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 | Когда вы достигаете executive suite, вы входите в спальню первым. Примечание В представительском наборе есть отдельная спальня и столовые. Поэтому вы можете находиться только в одной области набора в любое время. | Когда условие
Для ссылки смотрите Ввод графика или состояния. |
2 | Когда вы заказываете обслуживание номера, вы заходите в столовую, чтобы поесть. | Когда |
3 | Когда вы хотите, чтобы еда была удалена из столовой, вы заказываете обслуживание в номере снова, а затем возвращаетесь в спальню. | Когда |
4 | Если вы покидаете исполнительный набор из-за пожарной сигнализации, вы возвращаетесь в свою предыдущую комнату после сигнала all-clear. | Если переход вышел из |
Руководства по моделированию для выполнения исключительных (ИЛИ) государств. Следующие инструкции применяются к исключительным состояниям (OR).
Руководство по моделированию | Почему применяется это руководство | Ссылка |
---|---|---|
Используйте exclusive (OR) разложение, когда никакие два состояния на этом уровне иерархии не могут быть активны одновременно. | Это руководство обеспечивает правильное выполнение графика. Для примера, | |
Если возврат в состояние с исключительным (OR) разложением зависит от ранее активного подсостояния, используйте историческое соединение. Этот тип соединения регистрирует активное подсостояние, когда график выходит из состояния. | Если вы не записываете ранее активное подсостояние, происходит переход по умолчанию, и неправильное подсостояние может стать активным при повторном вводе состояния. Например, если бы вы ели, когда прозвучала пожарная сигнализация, то вернулись бы в спальню вместо столовой. |
Эта часть графика показывает, как выполняется состояние с параллельным (И) разложением.
Стадия | Сценарий отеля | Поведение графика |
---|---|---|
1 | Когда ваше семейство достигает набора, семейством представителей можете быть в обеих спальнях (для примера, родительских элементов в главной спальне и дети во второй спальне). Выбор комнаты по умолчанию не применяется. | Когда условие
Для ссылки смотрите Ввод графика или состояния. |
2 | Вы можете занять обе комнаты одновременно. |
|
Руководства по моделированию для выполнения параллельных (И) состояний. Следующие инструкции применяются к параллельным состояниям (AND).
Руководство по моделированию | Почему применяется это руководство | Ссылка |
---|---|---|
Используйте параллельное (И) разложение, когда все состояния на этом уровне иерархии могут быть активны одновременно. | Это руководство обеспечивает правильное выполнение графика. Для примера, | |
Не используйте никаких исторических соединений в состояниях с параллельным (И) разложением. | Это руководство предотвращает ошибки во время компиляции. Поскольку все параллельные состояния на уровне иерархии активны одновременно, исторические соединения не имеют никакого значения. | |
Используйте явное упорядоченное расположение для управления порядком выполнения параллельных (И) состояний. | Можно задать явное или неявное упорядоченное расположение параллельных состояний. По умолчанию на графике используется явное упорядоченное расположение. Если вы переключитесь на неявное упорядоченное расположение, порядок выполнения может измениться, когда параллельные состояния перемещаются. |
Эта часть графика описывает, как события могут защищать переходы между исключительными (OR) состояниями.
Стадия | Сценарий отеля | Поведение графика |
---|---|---|
1 | Если звучит пожарная сигнализация, вы покидаете отель и переезжаете в зону ожидания на улице. | Когда график получает широковещательное событие для |
2 | Если появляется сигнал полной очистки, можно покинуть зону ожидания и вернуться в предыдущее место внутри отеля. | Когда график получает широковещательное событие для Историческое соединение на каждом уровне иерархии в |
Руководства по моделированию для охраны переходов. В следующем руководстве рассматривается использование событий в зависимости от условий.
Руководство по моделированию | Почему применяется это руководство | Ссылка |
---|---|---|
Используйте события вместо условий, чтобы защитить переходы, которые зависят от вхождений без числового значения. | Поскольку вы не можете легко количественно определить числовое значение пожарной сигнализации или сигнала полного сброса, моделируйте такое вхождение как событие. | Активируйте диаграмму Stateflow путем отправки входных событий |