Функциональные блоки Simulink в ссылочных моделях

Можно разместить Simulink Function блоки и функциональные вызывающие абоненты (такие как Function Caller блоки и Stateflow® Графики) в ссылочной модели, но для этого требуется некоторые специальные факторы:

  • Модель-ссылка должна следовать правилам модели экспорта функций. Смотрите Обзор Моделей Экспорта функций.

  • Иногда необходимо явным образом задать типы данных аргументов для блока Function Caller.

Эти примеры показывают четыре отношения между блоками Function Caller, блоками Simulink Function и ссылочными моделями.

Функциональный блок Simulink в ссылочных Моделях

В этом примере родительская модель содержит блок Function Caller и модель-ссылку, Model_B, содержит блок Simulink Function. Model_B должен следовать правилам модели экспорта функций.

Блок Function Caller может определять типы данных аргументов функции. В блоке Function Caller вам не нужно задавать параметры Input argument specification и Output argument specification.

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

Чтобы открыть завершенную модель, смотрите ex_referenced_model_with_simulink_function_block.

Model_B содержит блок Simulink Function, который задает функцию для умножения входа на 2. Поскольку эта модель содержит только блок Simulink Function, она удовлетворяет правилам модели экспорта функций. Смотрите Обзор Моделей Экспорта функций.

Для Model_B, установите Параметры конфигурации для решателя, чтобы удовлетворить правилам модели экспорта функций:

  • Type: Fixed-step.

  • Solver: discrete (no continuous states).

Функциональный блок Simulink в ссылках Модели помещен в подсистему

Если блок Simulink Function идентифицирован как глобальный путем установки Function visibility на global, нет никаких ограничений на размещение этой ссылочной модели.

Например, можно разместить Model_B с блоком Simulink Function в блоке Subsystem.

Блок вызывающего абонента функции в ссылочных Моделях

В этом примере родительская модель содержит блок Simulink Function и модель-ссылку, Model_A, содержит блок Function Caller. Если вы хотите использовать это паттерование моделирования, параметр Function visibility для блока Trigger порта в блоке Simulink Function должен быть установлен на global.

Для родительской модели установите тип решателя Variable-step или Fixed-step.

Чтобы открыть завершенную модель, смотрите ex_referenced_model_with_function_caller_block.

Model_A содержит блок Function Caller.

Поскольку блок Function Caller не может найти функцию в Model_Aнеобходимо задать параметр Function visibility для блока Trigger равный global и задайте параметры аргумента блока Function Caller:

  • Input argument specification: Задайте, чтобы соответствовать Simulink Function типам входных аргументов блока, например double(1.0).

    Задайте спецификацию аргумента для блока Simulink Function с параметром Data type в блоках Входной параметр и Выходной Аргумент.

  • Output argument specification: Задайте, чтобы соответствовать типам выходных аргументов блоков Simulink Function, например double(1.0).

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

В этом примере родительская модель содержит две модели-ссылки. Model_A является ссылочной моделью с Function Caller блоком. Model_B - модель, на которую ссылается объект со Simulink Function блоком. Только Model_B с блоком Simulink Function должен следовать правилам экспорт функций.

Для Model_A, укажите спецификацию аргумента для ссылок на модель в Function Caller Блока в Referenced Модели. Для Model_Bзадайте параметры для ссылок на модель в Simulink Function Блока в Referenced Модели.

Чтобы открыть завершенную модель, смотрите ex_referenced_model_with_simulink_function_and_function_caller.

Model_A содержит блок Function Caller. Если для функции задано значение global, задайте параметры входа и выходных аргументов. Если для функции задано значение scoped, укажите имя файла, а не имя блока модели, в которой функция должна быть разрешена как y = Model_B.FunctionName(u).

Model_B содержит блок Simulink Function, который задает функцию для умножения входа на 2. Поскольку эта модель содержит только блок Simulink Function, она удовлетворяет правилам модели экспорта функций. Смотрите Обзор Моделей Экспорта функций.

Вызывающий абонент функций и функций в одной модели

В этом примере родительская модель содержит одну ссылочную модель, Model_C, как с блоком Function Caller, так и с Simulink Function блоком.

  • Если существует только один образец Model_C, и значение Параметра конфигурации <reservedrangesplaceholder1> устанавливается равным Oneродительская модель моделируется без ошибок. Начиная с Model_C не экспортирует функцию, ей не нужно следовать правилам экспорт функций.

  • Если для Параметра конфигурации <reservedrangesplaceholder1> задано значение Multiple, Model_C экспортирует функцию независимо от того, существует ли один образец или несколько образцы модели. В обоих случаях Simulink отображает ошибку. Модель должна следовать правилам экспорта функций, но это не потому, что блок Function Caller не разрешен на верхнем уровне модели экспорта функций.

Model_C содержит как блок Function Caller, так и блок Simulink Function со областью видимости. Если вы хотите использовать этот шаблон моделирования, только один образец Model_C разрешено в родительской модели.

См. также

Блоки

Похожие темы