Область возможностей 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.
Установка Function visibility для блока Simulink Function равной scoped
инкапсулирует функцию в модель, позволяя вам создавать несколько экземпляров модели. Добавление имени образца модели к имени функции создает квалифицированное имя функции, которое является уникальным в родительской модели.
Создайте модель, содержащую Simulink Function блоков.
По умолчанию параметр Function visibility для блока Trigger внутри блока Simulink Function устанавливается равным scoped
.
Ссылка на модель с функциями Simulink из нескольких блоков Model. Добавьте блок Function-Call Subsystem для планирования вызовов функций.
Добавьте Function Caller блоки к блоку Function-Call Subsystem. Получите доступ к функции в отдельных образцах модели путем определения имени функции с именем блока.
На вкладке Debug выберите Information Overlays. В раскрывающемся списке выберите Function Connectors.
Линии трассировки рисуются, чтобы помочь вам перемещаться от вызывающего функции к функции.
Для модели, использующей блоки Simulink Function с несколькими образцами, смотрите Моделирование Переиспользуемых Компонентов Использование Функций Multiply Instanced Simulink.