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

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

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

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

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

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

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

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

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

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

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

  • Ввод: Fixed-step.

  • Solver: discrete (no continuous states).

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

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

Например, вы могли поместить Model_B с Функциональным блоком Simulink в блоке Subsystem.

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

В этом примере родительская модель содержит Функциональный блок Simulink, и модель, на которую ссылаются, Model_A, содержит блок Function Caller. Если вы хотите использовать это постукивание моделирования, параметр Function visibility для Триггерной блокировки порта в Функциональном блоке Simulink может быть установлен на scoped или global.

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

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

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

(1) scoped и квалифицирует имя функции в блоке Function Caller параметр Function prototype. Добавьте имя образцового файла (не имя блока Model), где функция, как ожидают, будет разрешена. Например,

y = ModelFileName.FunctionName(u)

(2) global и задает параметры аргумента блока Function Caller:

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

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

  • Output argument specification: Задайте, чтобы совпадать с типами данных выходного аргумента Функционального блока 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 и Параметр конфигурации, 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. Если вы хотите использовать этот шаблон моделирования, только один экземпляр Model_C позволен в родительской модели.

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

Блоки

Похожие темы