Ограниченные по объему функциональные блоки 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 с ограниченной по объему функцией, можно вызвать функцию путем квалификации имени функции:

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

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

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

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

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

Моделирование мультиэкземпляра с функциями 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 с несколькими экземплярами смотрите, что Моделирующие Допускающие повторное использование Компоненты Использовать Умножают Инстанцированные Функции Simulink.

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

Блоки

Похожие темы