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

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 существуют функционально и выполняются как модуль. У них есть один порядок выполнения и различный системный индекс, чем модель корневого уровня или любая родительская невиртуальная подсистема. Блоки в невиртуальной подсистеме имеют свои собственные порядки выполнения, которые независимы от модели корневого уровня или любой родительской невиртуальной подсистемы.

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

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

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

Примечание

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

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

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

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

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

Simulink игнорирует любой приоритетный набор блока на Function-Call Subsystem, If Action Subsystem или блоках Switch Case Action Subsystem, но можно установить приоритет блока на блоках, которые инициируют эти подсистемы.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Эта модель иллюстрирует этот результат.

  • Блок Integrator 1/s в Автомобильной Динамике виртуальная подсистема не имеет никакого прямого проходного входа. Поэтому даже при том, что его вход соединяется с блоком Gain 1/m, блок Integrator сортируется перед блоком Gain 1/m. Выход блока Integrator управляет входом блока Gain b, таким образом, блок Integrator сортируется перед тем блоком Gain.

  • В модели корневого уровня, блок Step step response управляет блоком Sum, таким образом, блок Step сортируется перед блоком Sum. Блок Sum управляет прямым проходным входом Дискретного Контроллера Круиза невиртуальная подсистема, таким образом, подсистема сортируется после блока Sum.

Невиртуальная подсистема Контроллера Дискретного Круиза обработана как блок с прямым проходным входом, потому что его выход зависит от текущего значения входа через ветвь с Kp Блок Gain. В подсистеме, всех блоках Усиления, которые имеют прямые проходные входные параметры, запуск перед блоком Sum, которым они управляют.

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

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

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

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

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

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

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

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

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

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

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

Обновление моделей

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

  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.

Генерация кода

Когда модель скомпилирована для генерации кода, относительный порядок выполнения Data Store Read и блоков Data Store Write может отличаться по сгенерированному коду от порядка в нормальном режиме симуляции. Проверка Model Advisor обнаруживает эти различия и предоставляет возможность изменять порядок выполнения в нормальном режиме симуляции, чтобы совпадать с порядком в сгенерированном коде.

  1. Откройте Model Advisor. На вкладке Modeling выберите Model Advisor> By Product> Simulink Coder.

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

  3. Нажмите Run This Check.

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

Похожие темы