Ограниченные по объему функциональные блоки Simulink в моделях

Осциллограф функции Simulink® задан в контексте модели. Если вы помещаете Функциональный блок Simulink в модель на корневом уровне, функция ограничена по объему к модели по умолчанию. Блок Trigger параметр Function visibility установлен в scoped. Доступ к функции с функциональной расположенной вызывающей стороной:

  • В иерархии модели, содержащей функцию. Вызовите функцию, не квалифицируя имя функции.

  • Вне модели. Вызовите функцию путем квалификации имени функции с именем экземпляра блока модели, не образцового имени файла.

Установка Function visibility для Функционального блока Simulink к global позволяет вам получать доступ к функции отовсюду в модели или родительской модели. В результате модели с набором Функционального блока Simulink к глобальной переменной не могут быть мультиинстанцированы, потому что имена функций должны быть уникальными.

Решите к функции иерархически

Размещение ограниченного по объему Функционального блока Simulink в модели на корневом уровне ограничивает доступ к функции и удаляет имя функции из глобального пространства имен. Когда функциональная вызывающая сторона решает к функции иерархически, она ищет функцию, использующую следующие правила:

  • Правило 1 разрешения: ограниченный по объему Функциональный блок Simulink в текущей модели с функциональной вызывающей стороной?

  • Правило 2 разрешения: Если ограниченная по объему функция не находится в текущей модели, ограниченный по объему Функциональный блок Simulink в родительском элементе или модели прародителя один или несколько уровней выше функциональной вызывающей стороны?

Если функциональная вызывающая сторона решает к функции иерархически, можно вызвать функцию, не квалифицируя имя функции.

  • Функциональная вызывающая сторона расположена на том же иерархическом уровне как функция. В этом случае функциональная вызывающая сторона находит ограниченную по объему функцию в текущей модели (Правило 1 Разрешения).

  • Функциональная вызывающая сторона, расположенная в блоке Subsystem один или несколько уровней подсистемы ниже иерархического уровня функции. Функциональная иерархия вызывающей стороны не может включать блок Model, поскольку функциональная вызывающая сторона не может пересечь контуры модели - ссылки. В этом случае функциональная вызывающая сторона не нашла ограниченную по объему функцию в текущей подсистеме, но это нашло функцию в родительской модели (Правило 2 Разрешения).

  • Вы не можете разместить функциональную вызывающую сторону в блоке Model и Функциональном блоке Simulink в родительской модели,

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

Решите к функции проверкой

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

  • Правило 1 разрешения: блок Model в текущей модели с функциональной вызывающей стороной?

  • Правило 2 разрешения: Если блок Model не находится в текущей модели или подсистеме, блок Model в родительском элементе или модели прародителя один или несколько уровней выше функциональной вызывающей стороны?

Если функциональная вызывающая сторона решает к блоку Model с ограниченной по объему функцией, можно вызвать функцию путем квалификации имени функции:

  • Функциональная вызывающая сторона, расположенная за пределами блока Model один иерархический уровень выше функции. В этом случае функциональная вызывающая сторона находит блок Model с ограниченной по объему функцией в текущей модели (Правило 1 Разрешения).

  • Функциональная вызывающая сторона в подсистеме на том же иерархическом уровне как функция. В этом случае функциональная вызывающая сторона не нашла блок Model в текущей подсистеме, но это нашло блок Model в родительской модели (Правило 2 Разрешения).

  • Вы не можете поместить Функциональный блок Simulink в один блок Model и функциональную вызывающую сторону в другом блоке Model.

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

Если вы хотите получить доступ к функции с помощью этого шаблона моделирования, смотрите раздел Function Caller Block in Referenced Model и Function и раздел Function Caller in Separate Models в теме Функциональные блоки Simulink в Моделях, на которые Ссылаются.

Моделирование мультиэкземпляра с функциями Simulink

Установка Function visibility для Функционального блока Simulink к scoped инкапсулирует функцию в модели, позволяя вам мультиинстанцировать модель. Добавление образцового имени экземпляра к имени функции создает квалифицированное имя функции, которое уникально в родительской модели.

  1. Создайте модель, содержащую Функциональные блоки Simulink.

    По умолчанию параметр Function visibility для блока Trigger в Функциональном блоке Simulink устанавливается на scoped.

  2. Сошлитесь на модель с функциями Simulink от блоков многоуровневой модели. Добавьте блок Function-Call Subsystem, чтобы запланировать вызовы функций.

  3. Добавьте Функциональные блоки Вызывающей стороны в блок Function-Call Subsystem. Доступ к функции в отдельных образцовых экземплярах путем квалификации имени функции с именем блока.

  4. Из меню Display выберите Function Connectors. Прослеживающие линии проведены, чтобы помочь вам перейти от функциональной вызывающей стороны к функции.

Для модели с помощью Функциональных блоков Simulink с несколькими экземплярами смотрите, что Моделирующие Допускающие повторное использование Компоненты Использовать Умножают Инстанцированные Функции Simulink.

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

Блоки

Похожие темы