Когда модель увеличивается в размере и сложности, можно упростить ее, сгруппировав блоки в подсистемы. Подсистема является набором блоков, которые вы группируете в один Subsystem блок.
Использование подсистем:
Устанавливает иерархическую блок-схему, где блок Subsystem находится на одном слое, а блоки, составляющие подсистему, находятся на другом.
Сохраняет функционально связанные блоки вместе.
Помогает уменьшить количество блоков, отображаемых в окне модели.
Устанавливает интерфейс с входами и выходами.
Когда вы делаете копию подсистемы, эта копия не зависит от исходной подсистемы. Чтобы повторно использовать содержимое подсистемы в модели или между моделями, рассмотрите ссылочные подсистемы, модели-ссылки или подсистемы, связанные с блоком в пользовательской библиотеке. Для получения дополнительной информации смотрите Выбор среди типов компонентов модели.
Подсистема может быть виртуальной или невиртуальной. 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 Editor перетащите рамку выбора, чтобы очертить подсистему, которую вы хотите создать, затем выберите тип подсистемы.
Перетащите блок 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 и изменить блок так, как вы делаете с любым другим блоком. Для примера можно:
Применить маски блоков, чтобы скрыть содержимое подсистемы, сделав его отображаемым как атомарный блок с собственным значком и диалоговым окном параметра. Для получения дополнительной информации см. раздел Основ маскирования.
Используйте коллбэки блоков для выполнения действий в ответ на действия моделирования подсистемы, такие как обработка ошибки, удаление блока или линии в подсистеме или закрытие подсистемы. Дополнительные сведения о свойствах блоков, таких как коллбэки, см. в разделе «Задание свойств блоков».
Параметр Read/Write permissions блока Subsystem управляет уровнем доступа, разрешенным для подсистемы.
Примечание
Ограничение доступа для чтения или записи не препятствует изменению ограничений доступа. Чтобы скрыть проприетарную информацию, рассмотрите использование защищенной модели. Для получения дополнительной информации см. «Исследование возможностей защищенной модели».
Когда подсистема хранится в пользовательской библиотеке, можно использовать параметр Read/Write permissions на родительском библиотечном блоке для управления доступом к связанным образцам блока. Пока ссылка на библиотеку остается нетронутой, ограниченный доступ может помешать людям просматривать или изменять содержимое подсистемы, одновременно позволяя им использовать ее в модели. Для получения дополнительной информации см. раздел «Связанные блоки».
Simulink.BlockDiagram.copyContentsToSubsystem