Введите график или состояние

Стройте диаграмму и утвердите, что запись происходит когда:

  • График активируется впервые. Это называется инициализацией графика.

  • Существует допустимый переход в состояние. Смотрите Оценивают Переходы.

Рабочий процесс для ввода графика или состояния

Эта блок-схема показывает прогрессию событий, что Stateflow® берет для записи в график или состояние. В этой блок-схеме текущее состояние относится к состоянию, в котором происходят решение или процесс.

Стройте диаграмму записи

Первый раз, когда ваша диаграмма Stateflow становится активной, называется инициализацией. Когда инициализация вашего графика происходит, график вводится, и Stateflow выполняет любые переходы по умолчанию для исключительного (OR) состояния. Если состояния в верхнем уровне вашего графика параллельны (AND), они становятся активными на основе своего номера заказа.

Если вы хотите, чтобы ваш график взял какие-либо переходы по умолчанию перед временем t = 0, в диалоговом окне Chart Properties установите флажок Execute (enter) Chart At Initialization. Эта опция заставляет диаграмму Stateflow инициализировать в то же время, что и инициализация Simulink®. Пути к переходу по умолчанию графика затем выполняются во время фазы инициализации модели.

Запись состояния

Когда состояние отмечено для записи, действия записи для состояния выполняются. Если ваш график активен и прошел инициализацию, состояние верхнего уровня становится активным. Состояние отмечено для записи одним из этих способов:

  • Входящий переход пересекает государственные границы.

  • Входящий переход заканчивается в государственной границе.

  • Состояние является параллельным дочерним элементом состояния активного состояния.

Действия записи

Действиям записи предшествует префиксный entry или en для краткости сопровождаемый необходимым двоеточием (:), и затем сопровождаемый одним или несколькими действиями. Вы разделяете несколько действий при помощи возврата каретки, точка с запятой (;), или запятая (,). Если вы не задаете тип состояния активности явным образом для оператора, график обрабатывает тот оператор как entry, during действие.

Введите диаграмму Stateflow

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

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

  1. Действия перехода по умолчанию выполняются, и x = 0, y = 0, и z = 0.

  2. StateA отмечен для записи.

  3. StateA не подсостояние неактивного родительского элемента. Выполните entry действия для StateA. Теперь x = 1.

  4. StateA состояние, которое было первоначально отмечено для записи.

  5. StateA не содержит соединений истории.

  6. Существует переход по умолчанию к подсостоянию, StateA1. Перейдите к Оценивать блок-схеме Переходов.

  7. Следующим Оценивать блок-схема Переходов отметьте StateA1 для entry. Перейдите к Выходной блок-схеме Действий.

  8. Текущее состояние, StateA, сверхсостояние целевого состояния, StateA1. Возвратитесь к блок-схеме Действий Записи.

  9. StateA1 не подсостояние неактивного родительского элемента. Выполните entry действия для StateA1. Теперь x = 3.

  10. StateA1 состояние, которое было первоначально отмечено для записи.

  11. StateA1 не содержит соединений истории.

  12. StateA1 не содержит переходов по умолчанию.

  13. StateA1 не содержит одного подсостояний.

  14. График засыпает.

Шаги 1 - 14 происходят в начальном временном шаге. Это завершает процесс инициализации графика.

Ввод состояния при помощи соединений истории

Если вы хотите, чтобы ваша диаграмма Stateflow помнила и возвратилась к подсостоянию, которое было ранее активно, независимо от перехода по умолчанию, используйте соединение истории. Размещение соединения истории в состоянии заменяет продвижение перехода по умолчанию к исключительному (OR) подсостояния. После размещения соединения истории в состоянии, после записи, ваша диаграмма Stateflow помнит и вводит ранее активное подсостояние. Соединение истории применяется только к уровню иерархии, в которой это появляется.

В этом примере свет может быть включен или прочь. Эти опции обозначаются состояниями Power_on и Power_off. Опциями управляют входные события switch_on и switch_off. Когда свет включен, это может быть dim или яркий. Эти опции обозначаются состояниями Low и High и управляются входными событиями switch_low и switch_high.

Первоначально, график спит. Power_off состояния активно. Когда Power_on состояния было в последний раз активно, High было ранее активное подсостояние. Событие switch_on происходит и Power_on состояния отмечен для записи. В это время p = 0.

Следующим Рабочий процесс для Ввода Графика или состояния, пока график не засыпает, шаги выполнения для ввода Power_on состояния находятся в этом порядке:

  1. Power_on не дочерний элемент неактивного родительского элемента.

  2. Нет никаких действий записи для Power_on.

  3. Power_on состояние, которое было первоначально отмечено для записи.

  4. В Power_on существуют соединения истории.

  5. High было ранее активное подсостояние. Теперь p = 2.

  6. High не содержит соединений истории.

  7. High не содержит переходов по умолчанию.

  8. High не содержит одного подсостояний.

  9. График засыпает.

Это завершает entry действия для Power_on и High.

Ввод состояния при помощи суперпереходов

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

Когда состояние вводится посредством суперперехода, прежде чем действия записи для конечного пункта назначения будут выполнены, его сверхсостояния должны быть отмечены активные, и их действия записи должны быть выполнены. В этом примере, StateB1 был отмечен для записи от StateA2. На данном этапе x = 5, y = 5, и z = 1.

Следующим Рабочий процесс для Ввода Графика или состояния, пока график не засыпает, шаги выполнения для ввода StateB1 состояния находятся в этом порядке:

  1. StateB1 подсостояние неактивного родительского элемента (StateB).

  2. StateB отмечен как активный.

  3. StateB не подсостояние неактивного родительского элемента.

  4. Выполните действия записи для StateB. Теперь x = 4.

  5. StateB не состояние, которое было первоначально отмечено для записи.

  6. Выполните действия записи для StateB1. Теперь x = 3.

  7. StateB1 состояние, которое было первоначально отмечено для записи.

  8. StateB1 не имеет никаких соединений истории.

  9. StateB1 не содержит переходов по умолчанию.

  10. StateB1 не содержит одного подсостояний.

  11. График засыпает.

Это завершает entry действия для StateB и StateB1.

Похожие темы