exponenta event banner

Функциональные блоки Simulink в моделях

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

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

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

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

Иерархическое разрешение функции

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

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

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

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

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

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

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

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

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

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

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

  • Блок функции Simulink нельзя поместить в один блок модели, а вызывающую функцию - в другой блок модели.

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

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

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

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

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

    По умолчанию для параметра видимости функции для блока триггера в блоке функции Simulink установлено значение scoped.

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

  3. Добавление блоков вызывающего абонента функции в блок подсистемы вызова функции. Доступ к функции в отдельных экземплярах модели осуществляется путем определения имени функции с именем блока.

  4. На вкладке «Отладка» выберите «Информационные наложения». В раскрывающемся списке выберите Функциональные соединители.

    Линии трассировки используются для перехода от вызывающей функции к функции.

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

См. также

Блоки

Связанные темы