Представляйте разнообразные пути при помощи соединительных соединений

Формат этикетки для сегментов перехода

Формат этикетки для сегмента перехода, вводящего соединение, эквивалентен для переходов, вводящих состояния, как показано в следующем примере. График использует неявное упорядоченное расположение исходящих переходов (см. Неявное Упорядоченное расположение).

Выполнение перехода в этом примере происходит можно следующим образом:

  1. Когда событие имеет место, S1 состояния проверяется на исходящий переход с соответствующим заданным событием.

  2. Если переход с соответствующим событием найден, условие перехода для того перехода (в скобках) оценено.

  3. Если condition_1 оценивает к истине, действие условия condition_action (в фигурных скобках), выполняется.

  4. Исходящие переходы от соединения проверяются на допустимый переход. Начиная с condition_2 верно, допустимый межгосударственный переход от S1 к S2 \exists.

  5. S1 состояния выйдите действия выполняются и завершаются.

  6. S1 состояния отмечен неактивный.

  7. Действие перехода transition_action выполняется и завершается.

  8. Завершенный межгосударственный переход от S1 к S2 происходит.

  9. S2 состояния отмечен активный.

  10. S2 состояния действия записи выполняются и завершаются.

Построение решения, "если затем еще"

Этот пример показывает поведение if-then-else построение решения. График использует неявное упорядоченное расположение исходящих переходов (см. Неявное Упорядоченное расположение).

Первоначально, график спит. A состояния активно. Условие [C_two] верно. Событие E_one происходит и пробуждает график, который обрабатывает событие от корня вниз через иерархию:

  1. Корневые проверки графика, чтобы видеть, существует ли допустимый переход в результате E_one.

    Допустимый сегмент перехода от A состояния к соединительному соединению существует. Поскольку неявное упорядоченное расположение применяется, сегменты перехода, начинающиеся с 12-часовой позиции по соединительному соединению, оценены для валидности. Первый сегмент перехода, помеченный условием [C_one], не допустимо. Следующий сегмент перехода, помеченный условием [C_twoisvalid. Полный переход от A состояния утверждать C isvalid.

  2. A состояния выйдите из действий (exitA()) выполнитесь и завершитесь.

  3. A состояния отмечен неактивный.

  4. C состояния отмечен активный.

  5. C состояния действия записи (entC()) выполнитесь и завершитесь.

  6. График возвращается ко сну.

Эта последовательность завершает выполнение этого графика Stateflow®, сопоставленного с событием E_one.

Переход самоцикла

Этот пример показывает поведение перехода самоцикла с помощью соединительного соединения. График использует неявное упорядоченное расположение исходящих переходов (см. Неявное Упорядоченное расположение).

Первоначально, график спит. A состояния активно. Условие [C_one] является ложным. Событие E_one происходит и пробуждает график, который обрабатывает событие от корня вниз через иерархию:

  1. Корневые проверки графика, чтобы видеть, существует ли допустимый переход в результате E_one. Допустимый сегмент перехода от A состояния к соединительному соединению существует. Поскольку неявное упорядоченное расположение применяется, сегмент перехода, помеченный условием, оценен для валидности. Поскольку условие [C_one] не допустимо, полный переход от A состояния утверждать B не допустимо. Сегмент перехода от соединительного соединения назад, чтобы утвердить A isvalid.

  2. A состояния выйдите из действий (exitA()) выполнитесь и завершитесь.

  3. A состояния отмечен неактивный.

  4. Действие перехода A_two выполняется и завершается.

  5. A состояния отмечен активный.

  6. A состояния действия записи (entA()) выполнитесь и завершитесь.

  7. График возвращается ко сну.

Эта последовательность завершает выполнение этой диаграммы Stateflow, сопоставленной с событием E_one.

Построение цикла for

Этот пример показывает поведение for цикл с помощью соединительного соединения. График использует неявное упорядоченное расположение исходящих переходов (см. Неявное Упорядоченное расположение).

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

  1. Корневые проверки графика, чтобы видеть, существует ли допустимый переход в результате E_one. От A состояния существует допустимый сегмент перехода к соединительному соединению. Действие условия сегмента перехода, i = 0, выполняется и завершается. Из двух сегментов перехода, оставляя соединительное соединение, сегмент перехода, который является самоциклом назад к соединительному соединению, оценивает затем для валидности. Тот сегмент берет приоритет в оценке, потому что это имеет условие, тогда как другой сегмент не помечен. Это поведение оценки отражает неявное упорядоченное расположение исходящих переходов в графике.

  2. Условие [i < 10] оценивает как верный. Действия условия i++ и вызов func1 выполнитесь и завершитесь, пока условие не становится ложным. Поскольку соединительное соединение не является конечным пунктом назначения, место назначения перехода все еще неизвестно.

  3. Безусловный сегмент, чтобы утвердить B теперь допустимо. Полный переход от A состояния утверждать B isvalid.

  4. A состояния выйдите из действий (exitA()) выполнитесь и завершитесь.

  5. A состояния отмечен неактивный.

  6. B состояния отмечен активный.

  7. B состояния действия записи (entB()) выполнитесь и завершитесь.

  8. График возвращается ко сну.

Эта последовательность завершает выполнение этого графика, сопоставленного с событием E_one.

Обозначение блок-схемы

Этот пример показывает поведение диаграммы Stateflow что обозначение блок-схемы использования. График использует неявное упорядоченное расположение исходящих переходов (см. Неявное Упорядоченное расположение).

Первоначально, график спит. A.A1 состояния активно. Условие [C_one()] первоначально верно. Событие E_one происходит и пробуждает график, который обрабатывает событие от корня вниз через иерархию:

  1. Корневые проверки графика, чтобы видеть, существует ли допустимый переход в результате E_one. Нет никакого допустимого перехода.

  2. A состояния проверяется для допустимых переходов и обнаруживает допустимый внутренний переход к соединительному соединению.

  3. Следующие возможные сегменты перехода оценены. Только один исходящий переход существует, и ему задали действие условия. Действие условия выполняется и завершается.

  4. Следующие возможные сегменты оценены. Существуют два исходящих перехода: условный переход самоцикла и безусловный сегмент перехода. Поскольку неявное упорядоченное расположение применяется, условный сегмент перехода более приоритетен. Начиная с условия [C_one()] верно, переход самоцикла взят. Поскольку итоговое место назначения перехода не было достигнуто, этот самоцикл продолжается до [C_one()] является ложным.

    Примите что после пяти итераций, [C_one()] является ложным.

  5. Следующий возможный сегмент перехода (к следующему соединительному соединению) оценен. Это - безусловный сегмент перехода с действием условия. Сегмент перехода взят и действие условия, {d=my_func()}, выполняется и завершается. Возвращенное значение d 84.

  6. Следующий возможный сегмент перехода оценен. Существуют три исходящих сегмента перехода: два условных выражения и одно безусловное. Поскольку неявное упорядоченное расположение применяется, сегмент, помеченный условием [d < 100] оценивает сначала на основе геометрии двух исходящих условных сегментов перехода. Поскольку возвращенное значение d 84, условие [d < 100] верно и этот переход к целевому A.A1 состояния isvalid.

  7. A.A1 состояния выйдите из действий (exitA1()) выполнитесь и завершитесь.

  8. A.A1 состояния отмечен неактивный.

  9. A.A1 состояния отмечен активный.

  10. A.A1 состояния действия записи (entA1()) выполнитесь и завершитесь.

  11. График возвращается ко сну.

Эта последовательность завершает выполнение этой диаграммы Stateflow, сопоставленной с событием E_one.

Переход от общего источника до Множественных адресов

Этот пример показывает поведение переходов от общего источника до нескольких условных мест назначения, использующих соединительное соединение. График использует неявное упорядоченное расположение исходящих переходов (см. Неявное Упорядоченное расположение).

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

  1. Корневые проверки графика, чтобы видеть, существует ли допустимый переход в результате E_two. Допустимый сегмент перехода существует от A состояния к соединительному соединению. Поскольку неявное упорядоченное расположение применяется, оценка сегментов с эквивалентным приоритетом метки начинается с 12-часовой позиции по соединительному соединению и прогрессу по часовой стрелке. Первый сегмент перехода, помеченный событием E_one, не допустимо. Следующий сегмент перехода, помеченный событием E_twoisvalid. Полный переход от A состояния утверждать C isvalid.

  2. A состояния выйдите из действий (exitA()) выполнитесь и завершитесь.

  3. A состояния отмечен неактивный.

  4. C состояния отмечен активный.

  5. C состояния действия записи (entC()) выполнитесь и завершитесь.

  6. График возвращается ко сну.

Эта последовательность завершает выполнение этой диаграммы Stateflow, сопоставленной с событием E_two.

Разрешите одинаково Допустимые пути к переходу

Что конфликтует переходы?

Конфликтные переходы являются двумя одинаково допустимыми путями из того же источника в диаграмме Stateflow в процессе моделирования. В случае конфликта график оценивает одинаково допустимые переходы на основе упорядоченного расположения режима в графике: явный или неявный.

  • Для явного упорядоченного расположения (режим по умолчанию), оценка конфликтных переходов происходит на основе порядка, который вы задаете для каждого перехода. Для получения дополнительной информации смотрите Явное Упорядоченное расположение.

  • Для неявного упорядоченного расположения в графиках C оценка конфликтных переходов происходит на основе внутренних правил, описанных в Неявном Упорядоченном расположении.

Пример конфликтных переходов

Следующий график имеет два одинаково допустимых пути к переходу:

Разрешение конфликтов для неявного упорядоченного расположения

Для неявного упорядоченного расположения график оценивает несколько исходящих переходов с равным приоритетом метки в по часовой стрелке прогрессия, начинающая с двенадцатичасовой позиции по состоянию. В этом случае, переход от A состояния утверждать B происходит.

Разрешение конфликтов для явного упорядоченного расположения

Для явного упорядоченного расположения график разрешает конфликт путем оценки исходящих переходов в порядке, который вы задаете явным образом. Например, если вы щелкаете правой кнопкой по переходу от A состояния утверждать C и выберите Execution Order> 1 из контекстного меню, график оценивает тот переход сначала. В этом случае, переход от A состояния утверждать C происходит.

Как конфликт перехода происходит

Переход по умолчанию, чтобы утвердить A данные о присвоениях a равняйтесь 1 и данные b равняйтесь 10. during действие A состояния шаг a и декременты b во время каждого временного шага. Переход от A состояния утверждать B допустимо если условие [a > 4] верно. Переход от A состояния утверждать C допустимо если условие [b < 7] верно. В процессе моделирования существует временной шаг где A состояния активно, и оба условия верны. Этой проблемой является конфликт перехода.

Переход от многочисленных источников до общего места назначения

Этот пример показывает поведение переходов от многочисленных источников до одного места назначения, использующего соединительное соединение.

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

  1. Корневые проверки графика, чтобы видеть, существует ли допустимый переход в результате E_one. Допустимый сегмент перехода существует от A состояния к соединительному соединению и от соединения, чтобы утвердить C.

  2. A состояния выйдите из действий (exitA()) выполнитесь и завершитесь.

  3. A состояния отмечен неактивный.

  4. C состояния отмечен активный.

  5. C состояния действия записи (entC()) выполнитесь и завершитесь.

  6. График возвращается ко сну.

Эта последовательность завершает выполнение этой диаграммы Stateflow, сопоставленной с событием E_one.

Переход от источника до места назначения на основе общего события

Этот пример показывает поведение переходов от многочисленных источников до одного места назначения на основе того же события с помощью соединительного соединения.

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

  1. Корневые проверки графика, чтобы видеть, существует ли допустимый переход в результате E_one. Допустимый сегмент перехода существует от B состояния к соединительному соединению и от соединения, чтобы утвердить C.

  2. B состояния выйдите из действий (exitB()) выполнитесь и завершитесь.

  3. B состояния отмечен неактивный.

  4. C состояния отмечен активный.

  5. C состояния действия записи (entC()) выполнитесь и завершитесь.

  6. График возвращается ко сну.

Эта последовательность завершает выполнение этой диаграммы Stateflow, сопоставленной с событием E_one.

Отследите в обратном порядке в блок-схемах

Этот пример показывает поведение переходов с соединениями что поведение отслеживания в обратном порядке силы в блок-схемах. График использует неявное упорядоченное расположение исходящих переходов (см. Неявное Упорядоченное расположение).

Первоначально, A состояния активно и условия c1C2 , и c3 верны:

  1. Корневые проверки графика, чтобы видеть, существует ли допустимый переход от A состояния.

    Существует допустимый сегмент перехода, отмеченный условием c1 от A состояния к соединительному соединению.

  2. Условие c1 верно и действие a1 выполняется.

  3. Условие c3 верно и действие a3 выполняется.

  4. Условие c4 не отслеживание в обратном порядке истинного и потока управления, чтобы утвердить A.

  5. Корневые проверки графика, чтобы видеть, существует ли другой допустимый переход от A состояния.

    Существует допустимый сегмент перехода, отмеченный условием c2 от A состояния к соединительному соединению.

  6. Условие c2 верно и действие a2 выполняется.

  7. Условие c3 верно и действие a3 выполняется.

  8. Условие c4 не отслеживание в обратном порядке истинного и потока управления, чтобы утвердить A.

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

Предыдущий пример показывает неожиданное поведение выполнения обоих действий a1 и a2. Другое неожиданное поведение является выполнением действия a3 дважды. Чтобы разрешить эту проблему, рассмотрите добавляющие безусловные переходы к завершающим работу соединениям.

Завершающие работу соединения позволяют потоку заканчиваться если любой c3 или c4 не верно. Этот проект листы утверждает активное, не выполняя ненужные действия.