Когда модель увеличивается в размере и сложности, можно упростить его путем группировки блоков в подсистемы. Подсистема является набором блоков, которые вы группируете в один блок Subsystem.
Используя подсистемы:
Устанавливает иерархическую блок-схему, где блок Subsystem находится на одном слое и блоках, которые составляют подсистему, находятся на другом.
Держит функционально связанные блоки вместе.
Помогает сократить количество блоков, отображенных в вашем окне модели.
Устанавливает интерфейс с вводами и выводами.
Когда вы делаете копию подсистемы, та копия независима от исходной подсистемы. Чтобы снова использовать содержимое подсистемы через модель или через модели, считайте подсистемы, на которые ссылаются, модели, на которые ссылаются или подсистемы соединенными с блоком в пользовательской библиотеке. Для получения дополнительной информации смотрите, Выбирают Among Types of Model Components.
Подсистема может быть виртуальной или невиртуальной. virtual subsystem обеспечивает графическую иерархию в модели и не влияет на выполнение модели. nonvirtual subsystem выполняется как единый блок в модели.
Совет
Для контроллеров и других автономных компонентов, задайте твердый контур вокруг связанных блоков при помощи невиртуальной подсистемы или модели, на которую ссылаются. Определение твердого контура заранее избегает дорогостоящего рефакторинга, когда это необходимо, чтобы сгенерировать код для компонента.
Simulink® классифицирует невиртуальные подсистемы в эти типы:
Тип подсистемы | Описание |
---|---|
Atomic Subsystem | Подсистема, которая выполняется как единый блок. |
Enabled Subsystem | Подсистема, выполнение которой включено внешним входом. |
Triggered Subsystem | Подсистема, выполнение которой инициировано внешним входом. |
Function-Call Subsystem | Подсистема, выполнением которой управляет внешний вход вызова функции. |
Enabled and Triggered Subsystem | Подсистема, выполнение которой включено и инициировано внешними входными параметрами. |
Resettable Subsystem | Подсистема, состояния блока которой сбрасываются с внешним триггером. |
If Action Subsystem | Подсистема, выполнение которой включено блоком If. |
Switch Case Action Subsystem | Подсистема, выполнением которой управляет блок Switch Case. |
While Iterator Subsystem | Подсистема, которая повторяет выполнение во время шага времени симуляции, в то время как логическое условие верно. |
For Iterator Subsystem | Подсистема, которая повторяет выполнение во время шага времени симуляции для конкретного количества итераций. |
For Each Subsystem | Подсистема, которая повторяет выполнение на каждом элементе или подрешетке входного сигнала и конкатенирует результаты. |
Чтобы создать подсистему, вы можете:
В Редакторе Simulink дважды кликните и начните вводить тип подсистемы, затем выберите соответствующий блок из меню.
В Редакторе Simulink перетащите рамку выделения, чтобы обрисовать в общих чертах подсистему, которую вы хотите создать, затем выбрать тип подсистемы.
Перетащите блок Subsystem из Браузера Библиотеки.
Скопируйте и вставьте блок Subsystem из модели.
Когда вы создаете подсистему из рамки выделения, выбор может быть пустым или может содержать несколько блоков в одной области модели.
От строки меню выберите тип подсистемы, которую вы хотите создать.
Когда выбор содержит блоки, которые соответствуют портам ввода и вывода, новая подсистема включает копии тех блоков. Новая подсистема не содержит копии блоков, которые соответствуют портам управления.
Можно изменить тип подсистемы после создания.
Чтобы заставить подсистему выполниться как модуль, кликните по блоку Subsystem. На вкладке Subsystem выберите Is Atomic Subsystem.
Чтобы заставить подсистему выполниться условно, добавьте блок, который соответствует порту управления.
Чтобы заставить подсистему выполниться безусловно, удалите блоки, которые соответствуют портам управления.
Порты на блоке Subsystem соответствуют блокам в подсистеме.
Например, этот блок Subsystem имеет два входных порта и один выходной порт.
Подсистема содержит два блока Inport (In1
и In2
) и один блок Outport (Out1
) это соответствует портам на блоке Subsystem.
Добавить порты в подсистему:
Кликните по ребру блока Subsystem, затем выберите тип порта, чтобы создать.
Перетащите линию к ребру блока Subsystem.
Откройте подсистему путем двойного клика по блоку Subsystem, затем добавьте соответствующие блоки в подсистему.
Тип порта | Соответствующий блок |
---|---|
Порт сигнала, вход | Блок Inport |
Порт сигнала, выход | Блок Outport |
Вход шины, вход | Блок In Bus Element |
Вход шины, выход | Блок Out Bus Element |
Порт управления, включенный | Блок Enable |
Порт управления, инициированный | Блок Trigger |
Порт управления, вызов функции | Блок Trigger с набором Trigger type к function-call |
Порт управления, сброс | Блок Reset |
Порт управления, действие | Блок Action Port |
Порт подключения | Блок Connection Port (Simscape) |
Чтобы изменить местоположение порта на блоке Subsystem, перетащите порт к новому местоположению на любой стороне блока Subsystem.
По умолчанию Simulink помечает порты на блоке Subsystem. Чтобы задать, как Simulink помечает порты подсистемы:
Выберите блок Subsystem.
На вкладке Format Панели инструментов Simulink выберите одну из опций маркировки в меню Port Labels. Для получения дополнительной информации смотрите, Показывают метки порта.
Можно поменять имя блока Subsystem и изменить блок способ, которым вы делаете с любым другим блоком. Например, вы можете:
Примените маски блока, чтобы скрыть содержимое подсистемы, заставив его появиться как атомарный блок с его собственным значком и диалоговым окном параметра. Для получения дополнительной информации смотрите Основы маскирования.
Используйте коллбэки блока, чтобы выполнить действия в ответ на действия моделирования подсистемы, такие как обработка ошибки, удаление блока или линии в подсистеме или закрытия подсистемы. Для получения дополнительной информации о свойствах блока, таких как коллбэки, смотрите Specify Block Properties.
Параметр полномочий Чтения-записи средств управления блоком Subsystem уровень доступа допускал подсистему.
Примечание
Ограничение доступа для чтения или доступа для записи не препятствует тому, чтобы ограничения доступа были изменены. Чтобы скрыть конфиденциальную информацию, рассмотрите использование защищенной модели. Для получения дополнительной информации смотрите, Исследуют Защищенные Возможности Модели.
Когда подсистема хранится в пользовательской библиотеке, можно использовать параметр Read/Write permissions на родительском библиотечном блоке, чтобы управлять доступом для соединенных экземпляров блока. Пока ссылка библиотеки остается неповрежденной, ограниченный доступ может препятствовать тому, чтобы люди просмотрели или изменили содержимое подсистемы, все еще позволяя им использовать ее в модели. Для получения дополнительной информации смотрите Соединенные Блоки.
Simulink.BlockDiagram.copyContentsToSubsystem