connective junction представляет точку принятия решений в пути перехода. Можно объединить переходы и соединительные соединения, чтобы создать пути от общего источника к нескольким адресатам или от нескольких источников к общему месту назначения. Для получения дополнительной информации о семантике путей ветвления смотрите Представление нескольких путей при помощи соединительных соединений.
Когда вы добавляете переход к графику, Stateflow® Редактор предоставляет графические подсказки, которые позволяют добавить соединение или состояние. Чтобы разместить соединение в конце перехода, щелкните значок кругового соединения.
Кроме того, чтобы добавить изолированное соединение к графику:
Откройте Редактор Stateflow.
В палитре объектов щелкните значок Junction и переместите указатель мыши на холст графика. Появляется соединительное соединение.
Чтобы разместить соединительное соединение, щелкните место на холсте.
Для изменения размера одного или нескольких соединительных соединений:
Выберите соединительные соединения.
Щелкните правой кнопкой мыши одно из выбранных соединений и выберите Junction Size.
В раскрывающемся списке выберите размер соединения.
Чтобы изменить другие свойства соединительного соединения, щелкните правой кнопкой мыши соединительное соединение и выберите Properties. Диалоговое окно Соединительный узел (Connective Joint) отображает следующие свойства:
Parent - Родительское состояние соединительного соединения. Чтобы перенести родительский элемент на передний план, щелкните гипертекстовую ссылку. Это свойство доступно только для чтения.
Description - Текстовое описание соединения. Вы можете ввести краткое описание и комментарии.
Document link - Ссылка на онлайн-документацию для соединения. Можно ввести адрес веб-URL или MATLAB® команда, которая отображения документацию в подходящем интерактивном формате, таком как HTML файла или текст в Командном Окне MATLAB. При нажатии гиперссылки Document link Stateflow оценивает ссылку и отображает документацию.
Путем объединения переходов и соединительных соединений можно создать общие шаблоны переходов, такие как:
if-then-else
шаблоны принятия решений
for
шаблоны циклов
while
шаблоны циклов
Чтобы сократить время создания этих шаблонов, используйте Pattern Wizard. Для получения дополнительной информации смотрите Создать Графики потока при помощи Pattern Wizard.
If-then-else
Шаблон со всеми заданными условиямиВ этом примере состояние Checked_in
имеет путь перехода по умолчанию с тремя соединительными соединениями. Каждая ветвь пути охраняется условием.
Если состояние Front_desk
активно, событие check_in
инициирует выполнение перехода по умолчанию в Checked_in
. Результат перехода по умолчанию зависит от значения room_type
:
Если room_type
равен 1, substate Executive_suite
становится активным.
Если room_type
Значение 2, substate Family_suite
становится активным.
Если room_type
3, подсостояние Single_room
становится активным.
Если ни одно из этих условий не является true, путь перехода по умолчанию является недопустимым и Front_desk
остается активным.
Для получения дополнительной информации об этом графике см. Раздел «Как объекты Stateflow взаимодействуют во время выполнения».
If-then-else
Шаблон с безусловным переходомВ этом примере переход от состояния Start
имеет три соединительных соединения. Первые две ветви пути охраняются условием. Последняя ветвь пути безусловна.
График использует временную логику, чтобы определить, когда вход u
равен 1:
Если u
равен 1 перед временем, состояние Fast
становится активным.
Если u
равен 1 между и, состояние Good
становится активным.
Если u
равен 1 после, состояние Slow
становится активным.
Для получения дополнительной информации об этом графике смотрите Обнаружение истекшего времени.
For
Шаблон циклаВ этом примере графика потока использует комбинацию переходов и соединительных соединений, чтобы создать for
цикл.
Как значение счетчика i
Увеличения от 1 до 10, график потока жидкости задает элементы массива output
. Цикл в этом графике потока эквивалентен этому фрагменту кода MATLAB:
for i = 1:10 output(i) = 2*i; end
While
Шаблон циклаВ этом примере поток, график объединяет переходы и соединительные соединения, чтобы создать while
цикл, который вычисляет наибольший общий делитель входов.
Цикл в этом графике потока эквивалентен этому фрагменту Кода С:
while(q > 0) { r = fmod(p,q); p = q; q = r; }