exponenta event banner

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

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

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

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

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

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

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

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

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

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

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

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

  • Можно также вызвать функциональный блок Simulink в блоке Subsystem без определения из функционального блока MATLAB или диаграммы Stateflow ® в блоке.

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

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

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

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

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

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

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

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

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

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

См. также

Блоки

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