Управляйте и отобразите порядок выполнения

execution order для модели является порядком, в котором Simulink® вызывает блок выходные методы в процессе моделирования. Simulink определяет этот порядок во время обновления модели, которое можно инициировать путем нажатия на Update Model на вкладке Modeling. Simulink также обновляет модель в процессе моделирования.

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

Примечание

Для получения дополнительной информации о методах блока и выполнении, см.:

Средство просмотра порядка выполнения

На вкладке Debug выберите Information Overlays> Execution Order. Средство просмотра Порядка выполнения открывается в панели на правой стороне Редактора Simulink.

Средство просмотра Порядка выполнения отображает список задач для существующей системы.

Каждое значение System Index соответствует группе блоков, которые выполняются независимо от других блоков, таких как блоки в невиртуальной подсистеме. В модели значения System Index уникальны. В иерархиях модели - ссылки то же значение System Index может использоваться многократно, но это остается уникальным в каждой модели в той иерархии. Чтобы определить, являются ли подсистемы частью той же системы в модели, сравните их значения System Index.

Каждая задача, перечисленная в столбце Task ID, соответствует группе блоков, которые совместно используют частоту дискретизации. Для размеров фиксированного шага Обработка каждый дискретный уровень как отдельный параметр конфигурации задачи определяет, выполняет ли Simulink блоки с дискретными уровнями в один или несколько задач.

Выбор задачи в средстве просмотра Порядка выполнения подсвечивает блоки, которые принадлежат задаче, и отображает их порядок выполнения. По умолчанию Simulink выбирает первую задачу, которая соответствует активной блок-схеме.

Когда активная блок-схема не содержит блоков, которые выполняются как часть данной задачи, вы не можете выбрать задачу в средстве просмотра Порядка выполнения. Активная блок-схема может содержать виртуальные блоки, такие как Inport блокируется, которые являются частью этой задачи.

Чтобы скрыть выделение и порядок выполнения, нажмите кнопку Clear Highlighting.

Навигация от блоков до задач

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

The selected Subsystem block has an information overlay that says "Task: 0,1." The
      information overlay contains a link for each task number.

Числа задачи в метке являются ссылками, по которым можно щелкнуть, чтобы выбрать соответствующую задачу в средстве просмотра Порядка выполнения. Когда модель имеет много задач, эти ссылки обеспечивают альтернативу просмотру списка задач в средстве просмотра Порядка выполнения.

Чтобы сравнить задачи среди блоков, выберите несколько блоков.

Обозначение порядка выполнения

Simulink отображает номер в верхнем правом углу каждого невиртуального блока. Эти числа указывают на порядок, в котором выполняются блоки. Первый блок, который выполнится, имеет самый низкий порядок выполнения, который обычно является 1. Отображенный порядок выполнения может пропустить числа, но блоки всегда выполняются в порядке видимых чисел. Предположим, что задача отображает порядки выполнения 1, 2, и 4. Блок пометил 1, выполняется, прежде чем блок пометил 2, который выполняется, прежде чем блок пометил 4.

Например, в vdp модель, порядок выполнения блока лежит в диапазоне от 1 к 9, с каждым невиртуальным блоком, получающим порядок выполнения.

Виртуальные и невиртуальные подсистемы

Виртуальные блоки Subsystem существуют только графически и не выполняются. Следовательно, они не часть порядка выполнения. Блоки в виртуальной подсистеме имеют порядок выполнения в контексте модели корневого уровня. Для виртуальных подсистем блокируйтесь, порядок выполнения в подсистеме перечислен в фигурных скобках {}.

Невиртуальные блоки Subsystem существуют функционально и выполняются как модуль. У них есть один порядок выполнения и различный системный индекс, чем родительская модель. Блоки в невиртуальной подсистеме имеют свои собственные порядки выполнения, которые независимы от родительской модели.

Например, следующая модель содержит виртуальную подсистему под названием Автомобильная Динамика и атомарную, невиртуальную подсистему под названием Дискретный Контроллер Круиза.

Виртуальная Автомобильная подсистема Динамики показывает список порядков выполнения в фигурных скобках для блоков, которые она содержит. Блоки, которые это содержит, выполняются на корневом уровне. Блок Integrator выполняется сначала и отправляет свой выход в блок Scope в модели корневого уровня, которая выполняется второй.

Невиртуальная Дискретная Подсистема контроллера Круиза имеет один порядок выполнения (5), который указывает, что подсистема и блоки в ней являются пятыми, чтобы выполниться относительно блоков на корневом уровне.

Примечание

В зависимости от вашей настройки модели Simulink может вставить скрытые, невиртуальные подсистемы в вашу модель. В результате видимые блоки в скрытом блоке Subsystem могут иметь системный индекс, который отличается от индекса существующей системы. Например, если вы выбираете параметр конфигурации выполнения ветви входа Conditional, Simulink создает скрытые, невиртуальные подсистемы, которые могут влиять на отсортированный порядок выполнения.

Алгебраические циклы

Блоки в алгебраическом цикле перемещены в скрытую невиртуальную подсистему. Порядок выполнения скрытой подсистемы определяется в контексте других блоков; затем, порядок выполнения блоков в скрытой подсистеме определяется.

Вызов функции и подсистемы действия

Для подсистем вызова функции и действия выполнение подсистемы связывается к выполнению инициатора. Подсистема и ее инициатор поэтому совместно используют порядок выполнения.

На корневом уровне моделей экспорта функций порядки выполнения вызова функции имеют F префикс.

Для получения дополнительной информации см. Обзор Моделей Экспорта функций.

Шины и несколько инициаторов

Блок имеет несколько порядков выполнения, когда блок выполняется многократно на основе различных путей к выполнению к тому блоку. Например:

  • Блок, соединенный с шиной, имеет порядок выполнения, соответствующий каждому сигналу, что шина содержит.

  • Подсистема вызова функции или действия с несколькими инициаторами имеет порядок выполнения, соответствующий каждому инициатору.

Как Simulink определяет порядок выполнения

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

С основанной на задаче сортировкой:

  • Задачи сортируются индивидуально на основе шага расчета.

  • Несколько отсортированных списков сгенерированы вместо одного сглаженного, отсортированного списка блоков через все задачи.

  • Обработка перехода уровня упрощена.

  • Избегают ложных блоков включения нарушений зависимостей данных в различных задачах.

  • Результаты генерации кода находятся в эффективных группировках уровня.

  • Одна подсистема может принадлежать различным отсортированным спискам в нескольких задачах.

Прямой проходной удар портов на порядок выполнения

Чтобы гарантировать, что порядок выполнения отражает зависимости по данным среди блоков, Simulink категоризирует входные порты блока согласно зависимости блока выходные параметры на входных портах блока. Входной порт, текущее значение которого определяет текущее значение одного из блока выходные параметры, является прямым проходным портом. Примеры блоков, которые имеют прямые проходные порты, включают:

Примеры блоков, которые имеют входные параметры "не прямое сквозное соединение", включают:

  • Integrator — Выход является функцией своего состояния.

  • Constant — Не имеет входа.

  • Memory Выведите зависит от его входа от предыдущего временного шага.

Правила для определения порядка выполнения блока

С блоками вида Simulink использует следующие правила:

  • Если блок управляет прямым проходным портом другого блока, блок должен появиться в порядке выполнения перед блоком, которым это управляет.

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

  • Блоки, которые не имеют прямых проходных входных параметров, могут появиться где угодно в порядке выполнения, пока они предшествуют любым прямым проходным блокам, которыми они управляют.

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

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

Следующая модель иллюстрирует этот результат. Следующие блоки не имеют прямого сквозного соединения и поэтому появляются в начале порядка выполнения системы корневого уровня:

  • Блок Integrator в Автомобильной Динамике виртуальная подсистема

  • Блок Speed в модели корневого уровня

В Дискретной Подсистеме контроллера Круиза, всех блоках Усиления, которые имеют прямые проходные порты, запуск перед блоком Sum, которым они управляют.

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

В симуляции у асинхронных инициаторов вызова функции есть самый высокий приоритет при определении порядка блочной сортировки в задаче. Для получения дополнительной информации смотрите Асинхронные Переходы Шага расчета и Уровня и Асинхронные Блоки (Simulink Coder).

Чтобы определить порядок выполнения блока в моделях, содержащих асинхронные шаги расчета, Simulink использует следующие правила:

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

    Например, в ниже модели, существует один асинхронный инициатор вызова функции, который инициирован дискретным уровнем D1. В дискретной задаче асинхронный инициатор вызова функции сортируется сначала. Блоки Rate Transition преобразуют между асинхронным уровнем, A1, и дискретный уровень, D1.

  • Если блок Rate Transition уменьшается до NoOp, блок Rate Transition не выполняется, и его положение в отсортированном порядке в дискретной задаче передается восходящему или нисходящему дискретному блоку, с которым это соединяется.

    Например, в вышеупомянутой модели, RTB2 уменьшается до NoOp, таким образом, его положение в отсортированном порядке передается нисходящему блоку Gain.

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

    Например, в ниже модели, два асинхронных инициатора вызова функции инициированы тем же дискретным уровнем, D1. Тот с более высоким приоритетом задач сортируется сначала.

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

Проверяйте на изменения порядка выполнения, включающие блоки памяти хранилища данных

Используя основанную на задаче сортировку вместо блочной сортировки может изменить относительный порядок выполнения, включающий блоки Data Store Memory. Советник по вопросам Обновления проверяет, обнаруживает изменения и предоставляет возможность сохранять исходный порядок выполнения при обновлении модели.

  1. Откройте Советника по вопросам Обновления. На вкладке Modeling выберите Model Advisor> Upgrade Advisor.

  2. Установите флажок для Check relative execution orders for Data Store Read and Data Store Write blocks.

  3. Нажмите кнопку Run This Check.

  4. Рассмотрите любые изменения в таблице Result. Если вы хотите сохранить исходный порядок выполнения, нажмите кнопку Modify.

Похожие темы