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

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

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

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

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

Функциональный блок 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 в модели, на которую ссылаются, помещенной в подсистему

Если Функциональный блок 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 позволен в родительской модели.

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

Блоки

Похожие темы

Была ли эта тема полезной?