Осциллограф Simulink® функция задана в ее родительской подсистеме в контексте модели. Если вы помещаете функцию в какой-либо блок Subsystem, доступ к функции снаружи модели запрещается по умолчанию. В обоих случаях блок Trigger параметр Function visibility установлен в scoped
. Блок Simulink Function может быть расположен:
В виртуальной подсистеме — Вызывают функцию из содержания иерархии блока Subsystem, не квалифицируя имя функции или вызывают функцию снаружи подсистемы путем квалификации имени функции с именем блока подсистемы.
В атомарной или невиртуальной подсистеме — Вызывают функцию из содержания иерархии блока Subsystem, не квалифицируя имя функции. Доступ к функции от за пределами подсистемы запрещается.
Размещение ограниченного по объему блока Simulink Function в любом блоке Subsystem (виртуальный или атомарный) ограничивает доступ к функции и удаляет имя функции из глобального пространства имен. Когда функциональная вызывающая сторона решает к функции иерархически, она ищет функцию, использующую следующие правила:
Правило 1 разрешения: ограниченный по объему блок Simulink Function в текущем блоке Subsystem с функциональной вызывающей стороной?
Правило 2 разрешения. Если ограниченная по объему функция не находится в текущей подсистеме, ограниченный по объему блок Simulink Function в родительском элементе или блок Subsystem прародителя один или несколько уровней выше функциональной вызывающей стороны, или в родительской модели?
Если функциональная вызывающая сторона решает к функции иерархически, можно вызвать функцию, не квалифицируя имя функции:
Функциональная вызывающая сторона расположена на том же иерархическом уровне как функция. В этом случае функциональная вызывающая сторона находит ограниченную по объему функцию в текущей подсистеме (Правило 1 Разрешения).
Функциональная вызывающая сторона, расположенная в блоке Subsystem один или несколько блочных уровней Subsystem ниже иерархического уровня блока Simulink Function. Функциональная иерархия вызывающей стороны не может включать блок Model, поскольку функциональная вызывающая сторона не может пересечь контуры модели - ссылки. В этом случае функциональная вызывающая сторона не нашла ограниченную по объему функцию в текущей подсистеме, но это нашло функцию в родительской подсистеме (Правило 2 Разрешения).
В этом случае функциональная вызывающая сторона не нашла ограниченную по объему функцию в текущей подсистеме, но это нашло функцию в родительской модели (Правило 2 Разрешения).
Можно также вызвать блок Simulink Function в блоке Subsystem без проверки от блока MATLAB Function или Stateflow® стройте диаграмму в блоке.
Когда вы помещаете блок Simulink Function в виртуальный блок Subsystem, имя функции не отображается за пределами подсистемы. Однако можно вызвать функцию путем квалификации имени функции с именем блока Subsystem. Когда функциональная вызывающая сторона решает к квалифицированной функции иерархически, она ищет виртуальный блок Subsystem, содержащий функцию, использующую следующие правила:
Правило 1 разрешения: виртуальный блок Subsystem в текущем компоненте с функциональной вызывающей стороной? Компонент может быть блоком Subsystem или Моделью.
Правило 2 разрешения. Если виртуальный блок Subsystem не находится в текущем компоненте, виртуальный блок Subsystem в родительском элементе или компоненте прародителя один или несколько уровней выше функциональной вызывающей стороны?
Если функциональная вызывающая сторона решает с виртуальным блоком Subsystem с ограниченной по объему функцией, можно вызвать функцию путем квалификации имени функции:
Функциональная вызывающая сторона, расположенная за пределами подсистемы один иерархический уровень выше функции. В этом случае функциональная вызывающая сторона находит блок Subsystem с ограниченной по объему функцией в текущей модели (Правило 1 Разрешения).
Вызывание функции от диаграммы Stateflow вне подсистемы один иерархический уровень выше функции. В этом случае функциональная вызывающая сторона находит блок Subsystem с ограниченной по объему функцией в текущей модели (Правило 1 Разрешения).
Функциональная вызывающая сторона находится в другой подсистеме на том же иерархическом уровне как функция. В этом случае функциональная вызывающая сторона не нашла блок Subsystem с ограниченной по объему функцией в текущей подсистеме, но это нашло блок Subsystem в родительской модели (Правило 2 Разрешения).
Функциональная вызывающая сторона находится в другой подсистеме один или несколько уровней подсистемы ниже иерархического уровня функции. В этом случае функциональная вызывающая сторона не нашла блок Subsystem с ограниченной по объему функцией в текущей подсистеме, но это нашло блок Subsystem в модели прародителя (Правило 2 Разрешения).
Функциональная иерархия вызывающей стороны не может включать блок Model, поскольку функциональная вызывающая сторона не может пересечь контуры модели - ссылки.