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 отображает ошибку.
Если блок Model ссылается на модель, которая имеет порты инициализации, сброса или завершения, инициаторы вызова функции, подключенные к этим портам, имеют более высокий приоритет, чем другие входные порты вызова функции. Для примера, экспорта функций моделей, моделей на основе скорости и моделей JMAAB-B могут иметь другие порты входа вызова функции. Simulink сортирует инициаторы вызова функции в следующем порядке:
Инициализируйте, сбросьте и завершите работу портов.
Если существует несколько портов сброса, инициаторы этих портов сброса не сортируются. Для примера, если у модели есть один порт инициализации, управляемый блоком A
два порта сброса, управляемые блоками B
и C
и один порт разрыва, управляемый блоком D
, затем Simulink сортирует в порядке A, B или C, а затем D. B и C сортируются с помощью общих правил сортировки.
Добавьте порты события вызова функции к блоку 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