Во время обновляющейся фазы симуляции Simulink® определяет порядок, в котором можно вызвать методы блока в процессе моделирования. Это упорядоченное расположение вызова блока является порядком выполнения.
Вы не можете установить этот порядок, но можно присвоить приоритеты невиртуальным блокам, чтобы указать к Simulink на их порядок выполнения относительно других блоков. Simulink пытается соблюдать приоритетные настройки блока, если нет конфликт с зависимостями по данным. Подтвердить результаты приоритетов, которые вы установили, или отлаживать вашу модель, отображение и рассматривать порядок выполнения ваших невиртуальных блоков и подсистем.
Для получения дополнительной информации о методах блока и выполнении, см.:
Отобразить порядок выполнения vdp
модель:
Откройте vdp модель.
На вкладке Debug и в разделе Diagnostics. выберите Information Overlays выпадающая стрела. В разделе Blocks диалогового окна выберите Execution Oder. Выполнение Одерское средство просмотра открывается в панели на правой стороне Редактора Simulink.
Simulink отображает номер в верхнем правом углу каждого невиртуального блока и каждой невиртуальной подсистемы. Эти числа указывают на порядок, в котором выполняются блоки. Первый блок, который выполнится, имеет порядок выполнения 1
.
Например, в модели уравнения Ван дер Поля, блоке Integrator с порядком выполнения 1
выполняется сначала. Блок Out1, с порядком выполнения 2
, выполняется второй. Точно так же оставшиеся блоки выполняются в числовом порядке от 3
к 9
.
В модели уравнения Ван дер Поля все невиртуальные блоки в модели имеют порядок выполнения. Системным индексом для модели верхнего уровня является 0
, и порядок выполнения блока лежит в диапазоне от 0
к 8
.
Следующая модель содержит атомарную, невиртуальную подсистему под названием Дискретный Контроллер Круиза и виртуальную подсистему под названием Автомобильная Динамика.
Когда вы включаете отображение порядка выполнения для системы корневого уровня, Simulink отображает порядок выполнения блоков.
Виртуальные блоки подсистемы существуют только графически и не выполняются. Следовательно, они не часть порядка выполнения. Порядок выполнения для блоков в виртуальной подсистеме определяется в контексте модели корневого уровня. Их порядок отображен на виртуальном блоке подсистемы как список в фигурных скобках.
Однако блоки в подсистеме имеют порядок выполнения в контексте выполнения модели корневого уровня.
Автомобильная подсистема Динамики является виртуальной подсистемой. Это не имеет одного порядка выполнения. Блоки выполняются на корневом уровне с блоком Integrator, выполняющимся сначала. Блок Integrator отправляет свой выход в блок Scope в модели корневого уровня, которая выполняется второй.
Дискретная Подсистема контроллера Круиза является атомарной подсистемой.
Порядок выполнения 5
указывает на подсистему, и блоки в ней являются пятыми, чтобы выполниться относительно блоков на корневом уровне.
Блоки в атомарной подсистеме имеют свой собственный порядок выполнения и выполняются в том порядке.
В зависимости от вашей настройки модели Simulink может вставить скрытые, невиртуальные подсистемы в вашу модель. В результате видимые блоки в скрытом блоке подсистемы могут иметь системный индекс, который отличается от индекса существующей системы. Например, если вы выбираете Conditional input branch execution, Simulink создает скрытые, невиртуальные подсистемы, которые могут влиять на отсортированный порядок выполнения.
Чтобы гарантировать, что порядок выполнения отражает зависимости по данным среди блоков, Simulink категоризирует входные порты блока согласно зависимости блока выходные параметры на входных портах блока. Входной порт, текущее значение которого определяет текущее значение одного из блока выходные параметры, является прямым проходным портом. Примеры блоков, которые имеют прямые проходные порты, включают:
Примеры блоков, которые имеют входные параметры "не прямое сквозное соединение":
Integrator — Выход является функцией своего состояния.
Constant — Не имеет входа.
Memory Выведите зависит от его входа от предыдущего временного шага.
С блоками вида Simulink использует следующие правила:
Если блок управляет прямым проходным портом другого блока, блок должен появиться в порядке выполнения перед блоком, которым это управляет.
Это правило гарантирует, что прямые проходные входные параметры с блоками допустимы, когда Simulink вызывает методы блока, которые требуют текущих входных параметров.
Блоки, которые не имеют прямых проходных входных параметров, могут появиться где угодно в порядке выполнения, пока они предшествуют любым прямым проходным блокам, которыми они управляют.
Размещение всех блоков, которые не имеют прямых проходных портов в начале порядка выполнения, удовлетворяет этому правилу. Это расположение позволяет Simulink игнорировать эти блоки во время процесса сортировки.
Применение этих правил приводит к порядку выполнения. Блоки без прямых проходных портов появляются в начале списка без определенного порядка. Эти блоки сопровождаются блоками с прямыми проходными портами, расположенными таким образом, что они могут подать допустимые входные сигналы с блоками, которыми они управляют.
Следующая модель, от Невиртуальных и Виртуальных Подсистем, иллюстрирует этот результат. Следующие блоки не имеют прямого сквозного соединения и поэтому появляются в начале порядка выполнения системы корневого уровня:
Блок Integrator в Автомобильной Динамике виртуальная подсистема
Блок Speed в модели корневого уровня
В Дискретной Подсистеме контроллера Круиза, всех блоках Усиления, которые имеют прямые проходные порты, запуск перед блоком Sum, которым они управляют.