exponenta event banner

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

Порядок выполнения модели - это порядок, в котором Simulink ® вызывает методы вывода блоков во время моделирования. Simulink определяет этот порядок во время обновления модели, которое можно инициировать, щелкнув Обновить модель (Update Model) на вкладке Моделирование (Modeling). Simulink также обновляет модель во время моделирования.

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

Примечание

Дополнительные сведения о методах блокировки и выполнении см. в разделе:

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

На вкладке Отладка выберите Информационные наложения > Порядок выполнения. Средство просмотра порядка выполнения открывается на панели в правой части редактора Simulink.

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

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

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

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

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

Чтобы скрыть подсветку и порядок выполнения, нажмите кнопку «Очистить подсветку».

Переход от блоков к задачам

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

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, причем каждый невиртуальный блок получает приказ на выполнение.

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

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

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

Например, следующая модель содержит виртуальную подсистему с именем Car Dynamics и атомарную невиртуальную подсистему с именем Discrete Cruise Controller.

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

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

Примечание

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

Алгебраические петли

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

Подсистемы Function-Call и Action

Для подсистем function-call и action выполнение подсистемы привязано к выполнению инициатора. Следовательно, подсистема и ее инициатор совместно используют порядок выполнения.

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

Дополнительные сведения см. в разделе Обзор моделей Export-Function.

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

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

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

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

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

Simulink использует сортировку на основе задач для установки порядка выполнения блоков и портов на основе полученной информации о времени выборки. Сортировка на основе задач обеспечивает эффективный и более простой процесс для определения порядка выполнения блоков.

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

  • Задачи сортируются по отдельности на основе времени выборки.

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

  • Упрощается обработка переходов тарифов.

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

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

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

Влияние портов прямого канала на порядок выполнения

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

Примеры блоков с непрямыми входными сигналами:

  • Интегратор - выход является функцией его состояния.

  • Константа (Constant) - отсутствует вход.

  • Память (Memory) - Выход (Output) зависит от входных данных предыдущего шага времени.

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

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

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

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

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

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

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

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

  • Блок интегратора в виртуальной подсистеме Car Dynamics

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

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

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

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

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

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

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

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

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

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

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

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

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

Модернизация модели

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

  1. Откройте помощник по обновлению. На вкладке Моделирование (Modeling) выберите Мастер модели (Model Advisor) > Помощник по обновлению (Upgrade Advisor).

  2. Установите флажок Проверить относительные заказы на выполнение для блоков Чтение хранилища данных и Запись хранилища данных.

  3. Щелкните Выполнить эту проверку.

  4. Просмотрите все изменения в таблице Результат (Result). Для сохранения исходного порядка выполнения нажмите кнопку Изменить.

Создание кода

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

  1. Откройте мастер модели. На вкладке Моделирование (Modeling) выберите Мастер модели (Model Advisor) > По продукту (By Product) > Кодер Simulink (Simulink Coder).

  2. Установите флажок Проверка относительного изменения порядка выполнения для блоков Чтение хранилища данных и Запись хранилища данных.

  3. Щелкните Выполнить эту проверку.

  4. Просмотрите все изменения в таблице Результат (Result). При наличии расхождений и необходимости изменения порядка выполнения в обычном моделировании в соответствии с порядком выполнения в сгенерированном коде щелкните Изменить приоритеты блоков.

Связанные темы