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

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

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

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

Эти примеры показывают четыре отношения между Функциональными блоками Вызывающей стороны, Функциональными блоками Simulink и моделями, на которые ссылаются.

Функциональный блок Simulink в модели, на которую ссылаются,

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

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

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

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

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

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

  • Ввод: 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, предоставьте спецификацию аргумента, как вы делаете для модели, на которую ссылаются, в Функциональном Блоке Вызывающей стороны в Модели, на которую Ссылаются. Для Model_B, задайте параметры, как вы делаете для модели, на которую ссылаются, в Функциональном блоке Simulink в Модели, на которую Ссылаются.

Чтобы открыть завершенную модель, смотрите 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, и Параметр конфигурации Total number of instances allowed per top model установлен в One, родительская модель симулирует без ошибки. Начиная с Model_C не экспортирует функцию, она не должна следовать правилам экспорта функций.

  • Если Параметр конфигурации Total number of instances allowed per top model установлен в Multiple, Model_C экспортирует функцию независимо, если существует один экземпляр или несколько экземпляров модели. В обоих случаях Simulink отображает ошибку. Модель должна следовать правилам экспорта функций, но она делает, не потому что блок Function Caller не позволен на верхнем уровне модели экспорта функций.

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

Смотрите также

Блоки

Похожие темы