По мере увеличения размера и сложности модели ее можно упростить, сгруппировав блоки в подсистемы. Подсистема - это набор блоков, сгруппированных в один блок подсистемы.
Использование подсистем:
Устанавливает иерархическую блок-схему, где блок подсистемы находится на одном уровне, а блоки, составляющие подсистему, находятся на другом.
Сохраняет функционально связанные блоки вместе.
Помогает уменьшить количество блоков, отображаемых в окне модели.
Устанавливает интерфейс с входами и выходами.
При создании копии подсистемы эта копия не зависит от исходной подсистемы. Чтобы повторно использовать содержимое подсистемы в модели или между моделями, рассмотрите связанные подсистемы, ссылочные модели или подсистемы, связанные с блоком в пользовательской библиотеке. Дополнительные сведения см. в разделе Выбор типов компонентов модели.
Подсистема может быть виртуальной или невиртуальной. Виртуальная подсистема обеспечивает графическую иерархию в модели и не влияет на выполнение модели. Невиртуальная подсистема выполняется как один блок в модели.
Совет
Для контроллеров и других автономных компонентов определите жесткую границу вокруг связанных блоков с помощью невиртуальной подсистемы или ссылочной модели. Определение жесткой границы спереди позволяет избежать дорогостоящего рефакторинга при необходимости создания кода для компонента.
Simulink ® классифицирует невиртуальные подсистемы по следующим типам:
| Тип подсистемы | Описание |
|---|---|
| Атомная подсистема | Подсистема, которая выполняется как один блок. |
| Включенная подсистема | Подсистема, выполнение которой включено внешним входом. |
| Срабатывающая подсистема | Подсистема, выполнение которой инициируется внешним входом. |
| Подсистема вызова функций | Подсистема, выполнение которой управляется внешним входом вызова функции. |
| Включенная и запускаемая подсистема | Подсистема, выполнение которой включено и инициировано внешними входами. |
| Сбрасываемая подсистема | Подсистема, состояние блока которой сбрасывается с помощью внешнего триггера. |
| Если подсистема действий | Подсистема, выполнение которой разрешено блоком If. |
| Подсистема действий переключения вариантов | Подсистема, выполнение которой управляется блоком Switch Case. |
| Подсистема итератора | Подсистема, повторяющая выполнение на этапе моделирования, когда логическое условие является истинным. |
| Для итераторной подсистемы | Подсистема, повторяющая выполнение во время временного шага моделирования для указанного количества итераций. |
| Для каждой подсистемы | Подсистема, повторяющая выполнение каждого элемента или подрешетки входного сигнала и объединяющая результаты. |
Чтобы создать подсистему, можно:
В редакторе Simulink дважды щелкните и начните вводить тип подсистемы, затем выберите соответствующий блок в меню.
В редакторе Simulink перетащите рамку выбора, чтобы наметить подсистему, которую требуется создать, и выберите тип подсистемы.
Перетащите блок «Подсистема» из обозревателя библиотеки.
Скопируйте и вставьте блок подсистемы из модели.
При создании подсистемы из поля выбора она может быть пустой или содержать несколько блоков в одной области модели.


На панели действий выберите тип подсистемы, которую требуется создать.

Когда выбор содержит блоки, соответствующие портам ввода и вывода, новая подсистема включает копии этих блоков. Новая подсистема не содержит копий блоков, соответствующих портам управления.
После создания можно изменить тип подсистемы.
Чтобы выполнить подсистему как единицу, щелкните блок Подсистема. На вкладке Подсистема (Subsystem) выберите Атомная подсистема (Is Atomic Subsystem).
Чтобы подсистема выполнялась условно, добавьте блок, соответствующий порту управления.
Для безусловного выполнения подсистемы удалите блоки, соответствующие портам управления.
Порты блока подсистемы соответствуют блокам внутри подсистемы.
Например, этот блок подсистемы имеет два входных порта и один выходной порт.

Подсистема содержит два блока ввода (In1 и In2) и один блок исходящего порта (Out1), которые соответствуют портам в блоке подсистемы.

Для добавления портов в подсистему:
Щелкните кромку блока «Подсистема», затем выберите тип создаваемого порта.

Перетащите линию к краю блока «Подсистема».

Откройте подсистему, дважды щелкнув по блоку «Подсистема», затем добавьте соответствующие блоки в подсистему.
| Тип порта | Соответствующий блок |
|---|---|
| Сигнальный порт, вход | Блок ввода |
| Сигнальный порт, выход | Блок аутпорта |
| Порт шины, вход | В блоке элементов шины |
| Порт шины, выход | Блок Out Bus Element |
| Порт управления, включен | Включить блок |
| Порт управления, срабатывает | Триггерный блок |
| Порт управления, функциональный вызов | Триггерный блок с типом триггера, равным function-call |
| Порт управления, сброс | Сброс блока |
| Порт управления, действие | Блок порта действия |
| Порт подключения | Блок порта подключения (Simscape) |
Чтобы изменить расположение порта в блоке подсистемы, перетащите порт в новое расположение на любой стороне блока подсистемы.

По умолчанию Simulink маркирует порты в блоке подсистемы. Чтобы указать, как Simulink маркирует порты подсистемы:
Выберите блок «Подсистема».
На вкладке «Формат» панели инструментов Simulink выберите один из параметров маркировки в меню «Метки портов». Дополнительные сведения см. в разделе Отображение меток портов.
Можно изменить имя блока «Подсистема» и изменить блок так, как это делается с любым другим блоком. Например, можно:
Используйте маски блоков для скрытия содержимого подсистемы, чтобы она отображалась как атомарный блок с собственным значком и диалоговым окном параметров. Дополнительные сведения см. в разделе Основы маскирования.
Обратные вызовы блоков используются для выполнения действий в ответ на действия моделирования подсистемы, такие как обработка ошибки, удаление блока или строки в подсистеме или закрытие подсистемы. Дополнительные сведения о свойствах блока, таких как обратные вызовы, см. в разделе Задание свойств блока.
Параметр разрешения на чтение/запись блока подсистемы управляет уровнем доступа, разрешенным для подсистемы.
Примечание
Ограничение доступа для чтения или записи не препятствует изменению ограничений доступа. Чтобы скрыть запатентованную информацию, рекомендуется использовать защищенную модель. Дополнительные сведения см. в разделе Обзор возможностей защищенной модели.
Если подсистема хранится в пользовательской библиотеке, можно использовать параметр Разрешения на чтение/запись в родительском блоке библиотеки для управления доступом к связанным экземплярам блока. До тех пор пока связь с библиотекой остается нетронутой, ограниченный доступ может препятствовать просмотру или изменению содержимого подсистемы, позволяя использовать ее в модели. Дополнительные сведения см. в разделе Связанные блоки.
Simulink.BlockDiagram.copyContentsToSubsystem