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

Simulink® определяет порядок выполнения для компонентов модели (подсистемы и модели-ссылки).

Экспорты функций

Модели export-function включают блоки Function-Call Subsystem, function-call Model блоки, блоки Simulink Function на корневом уровне и блоки S-Function, инициируемые блоками root Inport вызова функции.

Корневые блоки function-call Inport сортируются со следующими правилами:

  • Сначала сравните приоритеты блоков. Блок с самым высоким приоритетом (маленькое значение) сортируется перед остальными.

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

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

Корневые блоки Simulink Function сортируются после корневых блоков Inport вызова функции.

Тестируйте кабель для экспорта функций со строгим планированием

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

Если установить флажок для параметр конфигурации <reservedrangesplaceholder0>, то как проверки во время компиляции, так и во время выполнения гарантируют, что инициаторы будут вызывать вызовы функций на основе предопределенного порядка планирования. Инициаторы сортируются на основе их шага расчета приоритетов. В данном примере порядок планирования и приоритеты шага расчета не совпадают. В mHarness_ExpFcnMdl модели отображается ошибка.

Тестовая обвязка для моделей экспорта функций без строгого планирования

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

Если вы снимаете флажок для параметра конфигурации Enable strict scheduling checks for a referenced model и модель тестовой обвязки находится в режиме приема сигналов. Инициаторы вызова функции сортируются на основе их шага расчета приоритетов. В данном примере порядок выполнения FcnCallGen0p1 > FcnCallGen0p2 > FcnCallGen0p3 > FcnCallGen0p1.

Ошибка зависимости данных, вызванная правилами сортировки данных

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

Инициатор вызова функции FcnCallGen0p3 должна выполняться до FcnCallGen0p4. Однако, потому что FcnCallGen0p4 также является источником для FcnCallGen0p3 происходит зависимость данных, и Simulink отображает ошибку.

Тестируйте кабель для моделей с блоками Initialize, Reset и Terminate Function

Если блок Model ссылается на модель, которая имеет порты инициализации, сброса или завершения, инициаторы вызова функции, подключенные к этим портам, имеют более высокий приоритет, чем другие входные порты вызова функции. Для примера, экспорта функций моделей, моделей на основе скорости и моделей JMAAB-B могут иметь другие порты входа вызова функции. Simulink сортирует инициаторы вызова функции в следующем порядке:

  • Инициализируйте, сбросьте и завершите работу портов.

  • Если существует несколько портов сброса, инициаторы этих портов сброса не сортируются. Для примера, если у модели есть один порт инициализации, управляемый блоком Aдва порта сброса, управляемые блоками B и Cи один порт разрыва, управляемый блоком D, затем Simulink сортирует в порядке A, B или C, а затем D. B и C сортируются с помощью общих правил сортировки.

Инициаторы для блока Model в тестовой обвязке

Добавьте порты события вызова функции к блоку Model в тестовом кабеле, который ссылается на модель на основе скорости или модель JMAAB-B, выбрав Model параметра блока Schedule rates.

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

  • Инициализируйте, сбросьте и завершите работу портов.

  • Входные порты вызова функции, сопоставленные с корневыми блоками асинхронного вызова функции Inport, если адаптированная модель является моделью JMAAB-B. Среди тех «асинхронных» входных портов вызова функции используйте приоритеты задачи, заданные блоком Asynchronous Task Specification, соединенным с корневым Inport вызова функции, блоком внутри ссылочной модели, чтобы сравнить порты. В следующих случаях не сравнивайте порты:

    • Для двух входных портов «async» function-call с одинаковыми приоритетами задач.

    • Для входных портов «async» function-call с пустым (не заданным) приоритетом задачи

  • Периодические входные порты событий вызова функции сопоставлены с дискретными скоростями. Используйте для сравнения правила однотонного планирования (RMS) скорости.

В одной модели задачи все инициаторы находятся в одной задаче:

  • InitGen > ResetGen1 или ResetGen2 > TermGen > A10aGen или A10bGen или A[]Gen > D1Gen > D2Gen

  • A10aGen или A10bGen > A20Gen

  • Можно обменять относительное упорядоченное расположение (ResetGen1, ResetGen2) или (A10aGen, A10bGen), или (A[]Gen, A20Gen), и т.д.

В многозадачной модели инициаторы одного цвета находятся в одной задаче.

  • InitGen > D1Gen > D2Gen

  • A10aGen или A10bGen > A20Gen