Можно поместить Функциональные блоки Simulink и функционировать вызывающие стороны (такие как Функциональные блоки Вызывающей стороны и диаграммы Stateflow) в модели, на которую ссылаются, но выполнение так требует некоторых специальных замечаний:
Модель, на которую ссылаются, должна следовать правилам модели экспорта функций. Смотрите Модели Экспорта функций.
Иногда, необходимо явным образом задать типы данных аргумента для блока Function Caller.
Эти примеры показывают четыре отношения между Функциональными блоками Вызывающей стороны, Функциональными блоками Simulink и моделями, на которые ссылаются.
В этом примере родительская модель содержит блок Function Caller, и модель, на которую ссылаются, Model_B
, содержит Функциональный блок Simulink. Model_B
должен следовать правилам модели экспорта функций.
Блок Function Caller может определить типы данных аргумента функции. В блоке Function Caller вы не должны задавать спецификацию Входного параметра и параметры спецификации Выходного аргумента.
Но с тех пор, по умолчанию, Функциональный блок Simulink ограничен по объему к модели, необходимо квалифицировать вызов имени функции с именем Блока модели.
Model_B
содержит Функциональный блок Simulink, который задает функцию для умножения входного параметра 2. Поскольку эта модель содержит только Функциональный блок Simulink, она удовлетворяет правила модели экспорта функций. Смотрите Модели Экспорта функций.
Для Model_B
, набор Параметры конфигурации для решателя, чтобы удовлетворить правила модели экспорта функций:
Ввод: Фиксированный шаг
.
Решатель: discrete (no continuous states)
.
Если Функциональный блок Simulink идентифицирован как глобальная переменная путем размещения его на корневом уровне модели, на которую ссылаются, нет никаких ограничений на то, куда эта модель, на которую ссылаются, может быть помещена.
Например, вы могли поместить Model_B
с Функциональным блоком Simulink в блоке Subsystem.
В этом примере родительская модель содержит Функциональный блок Simulink, и модель, на которую ссылаются, Model_A
, содержит блок Function Caller. Если вы хотите использовать это постукивание моделирования, Функциональный параметр видимости для Триггерной блокировки порта в Функциональном блоке Simulink может быть установлен на scoped
или global
.
Для родительской модели, набор тип решателя к Variable-step
или Fixed-step
.
Model_A
содержит блок Function Caller.
Поскольку блок Function Caller не может найти функцию в Model_A
, необходимо обеспечить спецификацию аргумента одним из двух способов. Установите Функциональный параметр видимости для блока Trigger к:
(1) scoped
и квалифицирует имя функции в параметре Прототипа функции блока Function Caller. Добавьте имя образцового файла (не имя Блока модели), где функция, как ожидают, будет разрешена. Например,
y = ModelFileName.FunctionName(u)
(2) global
и задает параметры аргумента блока Function Caller:
Спецификация входного параметра: Задайте, чтобы совпадать с типами данных входного параметра Функционального блока Simulink, например, double(1.0)
.
Задайте спецификацию аргумента для Функционального блока Simulink с параметром Типа данных в блоках Входного параметра и Выходного аргумента.
Спецификация выходного аргумента: Задайте, чтобы совпадать с типами данных выходного аргумента Функционального блока Simulink, например, double(1.0)
.
В этом примере родительская модель содержит две модели, на которые ссылаются. Model_A
является моделью, на которую ссылаются, с блоком Function Caller. Model_B
является моделью, на которую ссылаются, с ограниченным по объему Функциональным блоком Simulink. Только Model_B
с Функциональным блоком Simulink должен следовать правилам экспорта функций.
Для Model_A
обеспечьте спецификацию аргумента, как вы делаете для модели, на которую ссылаются, в Функциональном Блоке Вызывающей стороны в Модели, на которую Ссылаются. Для Model_B
задайте параметры, как вы делаете для модели, на которую ссылаются, в Функциональном блоке Simulink в Модели, на которую Ссылаются.
Model_A
содержит блок Function Caller. Если функция установлена в global
, задайте параметры Спецификации Аргумента Ввода и вывода. Если функция установлена в scoped
, обеспечьте имя файла модели, где функция, как ожидают, будет разрешена к как y = Model_B.FunctionName(u)
.
Model_B
содержит Функциональный блок Simulink, который задает функцию для умножения входного параметра 2. Поскольку эта модель содержит только Функциональный блок Simulink, она удовлетворяет правила модели экспорта функций. Смотрите Модели Экспорта функций.
В этом примере родительская модель содержит тот модель, на которую ссылаются, Model_C
, и с блоком Function Caller и с ограниченным по объему Функциональным блоком Simulink.
Если существует только один экземпляр Model_c
, и Общий номер Параметра конфигурации экземпляров, позволенных на топ-модель, определяется к One
, родительская модель моделирует без ошибки. Поскольку Model_C
не делает экспорта функция, это не должно следовать правилам экспорта функций.
Если Общий номер Параметра конфигурации экземпляров, позволенных на топ-модель, определяется к Multiple
, экспорт Model_C
функция независимо, если существует единственный экземпляр или несколько экземпляров модели. В обоих случаях Simulink отображает ошибку. Модель должна следовать правилам экспорта функций, но она делает, не потому что блок Function Caller не позволен на корневом уровне модели экспорта функций.
Model_C
содержит и блок Function Caller и ограниченный по объему Функциональный блок Simulink. Если вы хотите использовать этот шаблон моделирования, только один экземпляр Model_C
позволен в родительской модели.