Simulink® определяет порядок выполнения для компонентов модели, то есть, подсистем и моделей, на которые ссылаются.
Модели экспорта функций включают блоки Function-Call Subsystem, вызов функции блоки Model, блоки Simulink Function на корневом уровне и блоки S-Function, вызванные корнем вызова функции блоки Inport.
Корневой вызов функции блоки Inport сортируется со следующими правилами:
Сначала сравните приоритеты блока. Блок с самым высоким приоритетом (самый маленький номер) сортируется перед другими.
Если приоритеты блока являются тем же самым, сравнивают шаги расчета. Блок с более быстрым уровнем (меньшее значение шага расчета) сортируется перед другим.
Если шаги расчета являются тем же самым, сравнивают числа входного порта. Блок с меньшим номером порта сортируется перед другим.
Если OrderFunctionsByDependency
параметр устанавливается на 'on'
, блоки, которые имеют те же шаги расчета, далее сортируются на основе любой относительной зависимости по данным функций, с которыми соединяются блоки. Смотрите Порядок выполнения для Inport блоков Вызова функции Корневого Уровня.
Корневые блоки Simulink Function сортируются после корневого вызова функции блоки Inport.
Сошлитесь на модель экспорта функций в тестовой обвязке и соедините порты с блоками Function Generator.
Если вы устанавливаете флажок для параметра конфигурации Enable strict scheduling checks for referenced models, и время компиляции и проверки на этапе выполнения гарантируют, что инициаторы вызовут вызовы функции на основе предопределенного порядка планирования. Инициаторы сортируются на основе их приоритетов шага расчета. В данном примере порядок планирования и приоритеты шага расчета не соответствуют. Модель mHarness_ExpFcnMdl
отображает ошибку.
Сошлитесь на модель экспорта функций в тестовой обвязке и соедините порты с блоками Function-Call Generator.
Если вы снимаете флажок для параметра конфигурации, Enable strict scheduling checks for a referenced model и модель тестовой обвязки находятся в режиме взятия сигнала, инициаторы вызова функции сортируются на основе их приоритетов шага расчета. В данном примере порядком выполнения является FcnCallGen0p1
> FcnCallGen0p2
> FcnCallGen0p3
> FcnCallGen0p1
.
Рассмотрите модель, где выход от одного инициатора вызова функции является входом другому.
Инициатор вызова функции FcnCallGen0p3
должен быть выполнен перед FcnCallGen0p4
на основе их шагов расчета. Однако, потому что FcnCallGen0p4
также источник для FcnCallGen0p3
зависимость по данным происходит, и Simulink отображает ошибку.
Если блок Model ссылается на модель, которая имеет инициализирование, сброс или оконечные порты, у инициаторов вызова функции, соединенных с этими портами, есть более высокий приоритет, чем другие входные порты вызова функции. Например, модели экспорта функций, основанные на уровне модели и модели JMAAB-B (Simulink Coder) могут иметь другие входные порты вызова функции. Инициаторы вызова функции видов 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 вызова функции в модели, на которую ссылаются, чтобы сравнить порты. В следующих случаях не сравнивайте порты:
Для двух "асинхронных" входных портов вызова функции с теми же приоритетами задач.
Для "асинхронных" входных портов вызова функции с пустым (незаданным) приоритетом задач
Периодические порты ввода событий вызова функции сопоставлены с дискретными уровнями. Используйте правила пропорционального числу обращений планирования (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