Масштабные функциональные блоки Simulink в моделях

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

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

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

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

Решение для функции иерархически

Размещение блока Simulink Function в модели на корневом уровне ограничивает доступ к функции и удаляет имя функции из глобального пространства имен.

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

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

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

Разрешение на функцию по проверке

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

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

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

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

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

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

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

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

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

Мультиобразец с функциями Simulink

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

  1. Создайте модель, содержащую Simulink Function блоков.

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

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

  3. Добавьте Function Caller блоки к блоку Function-Call Subsystem. Получите доступ к функции в отдельных образцах модели путем определения имени функции с именем блока.

  4. На вкладке Debug выберите Information Overlays. В раскрывающемся списке выберите Function Connectors.

    Линии трассировки рисуются, чтобы помочь вам перемещаться от вызывающего функции к функции.

Для модели, использующей блоки Simulink Function с несколькими образцами, смотрите Моделирование Переиспользуемых Компонентов Использование Функций Multiply Instanced Simulink.

См. также

Блоки

Похожие темы