Когда модель увеличивается в размере и сложности, можно упростить его путем группировки блоков в подсистемы. Подсистема является набором блоков, которые вы группируете в один блок 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.
Соответствующие блокировки порта добавляются в подсистеме.
Совет
После автоматического создания порта метка порта на блоке 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. Для получения дополнительной информации смотрите, Показывают метки порта.
Можно непосредственно отредактировать метки порта на этих типах блоков подсистемы:
Регулярная подсистема
Подсистема с маской
Различная подсистема
Стройте диаграмму подсистемы
Чтобы отредактировать метку порта на подсистеме блокируются в текущей модели:
Укажите на метку порта. Появляется интерактивный сигнал метки порта (синее поле, окружающее метку порта). Кликните по сигналу.
В качестве альтернативы выберите порт и нажмите F2. Сигнал вводит режим редактирования.
Создание нового порта на блоке Subsystem с помощью автоматического создания порта также включает сигнал метки порта для быстрого редактирования.
Сигнал селектора порта, кажется, выше сигнала метки порта указывает на информацию о метке порта (имя блокировки порта, имя сигнала, вход шины или порт подключения), который редактируется. Для портов сигнала можно отредактировать и имя блокировки порта и имя сигнала порта от метки порта. Чтобы переключиться между значениями, кликните по соответствующему значку в селекторном сигнале или используйте горячие клавиши Ctrl+1,2.
Войдите значение в метке порта выдают и нажимают Enter или Esc, или щелкают далеко.
После того, как метка порта редактируется, Simulink автоматически обновляет имя связанного порта или сигнала в подсистеме.
Совет
Сделать последовательную метку порта редактирует на блоке подсистемы:
Выберите порт на блоке.
Отредактируйте метку порта и нажмите Enter. Это действие включает клавиатурный набор портов.
Можно выбрать смежные порты с помощью стрелки вверх или клавиши курсора "вниз" и требуя у F2 быстрого редактирования.
Эта таблица приводит действие обновления в зависимости от типа метки порта, заданной на блоке подсистемы.
Type of port label | Action |
---|---|
'none' | Редактирование, не поддержанное. |
Значок порта | Обновляет имена элементов в подсистеме в зависимости от параметра Icon display порта. Например, если значением параметра Icon display порта является Примечание Для этого типа метки порта информация, показанная на метке порта после того, как, редактирование зависит от итогового редактирования, выполняемого на этикетке с помощью селекторного сигнала:
|
Имя блокировки порта | Обновляет имя блока порта в подсистеме. Для этого типа метки порта можно отредактировать только имя блокировки порта с помощью сигнала селектора порта. |
Имя сигнала | Обновляет имя сигнала, соединенного с портом. |
Примечание
Simulink не показывает сигнал селектора порта для блоков Chart.
Редактирование меток порта на блоках Subsystem со значком маски не поддерживается.
Редактирование номеров портов от метки порта не поддерживается. Можно все еще отредактировать имя блокировки порта и предупредить об имени с помощью сигнала метки порта.
Редактирование имени распространенных сигналов от метки порта не поддерживается. Можно все еще отредактировать имя блокировки порта и внутреннее имя сигнала с помощью сигнала метки порта. Когда вы кликаете по сигналу, поле имени сигнала порта пусто, потому что внутренний сигнал не имеет имени.
Метки порта подсистемы показывают имя распространенных сигналов, когда все эти условия верны:
Значением параметра Icon display для базовой блокировки порта является Signal name
.
Внутренний сигнал в подсистеме соединяется, но не имеет имени.
Распространенный сигнал имеет имя.
Можно поменять имя блока Subsystem и изменить блок способ, которым вы делаете с любым другим блоком. Например, вы можете:
Примените маски блока, чтобы скрыть содержимое подсистемы, заставив его появиться как атомарный блок с его собственным значком и диалоговым окном параметра. Для получения дополнительной информации смотрите Основы маскирования.
Используйте коллбэки блока, чтобы выполнить действия в ответ на действия моделирования подсистемы, такие как обработка ошибки, удаление блока или линии в подсистеме или закрытия подсистемы. Для получения дополнительной информации о свойствах блока, таких как коллбэки, смотрите Specify Block Properties.
Параметр полномочий Чтения-записи средств управления блоком Subsystem уровень доступа допускал подсистему.
Примечание
Ограничение доступа для чтения или доступа для записи не препятствует тому, чтобы ограничения доступа были изменены. Чтобы скрыть конфиденциальную информацию, рассмотрите использование защищенной модели. Для получения дополнительной информации смотрите, Исследуют Защищенные Возможности Модели.
Когда подсистема хранится в пользовательской библиотеке, можно использовать параметр Read/Write permissions на родительском библиотечном блоке, чтобы управлять доступом для соединенных экземпляров блока. Пока ссылка библиотеки остается неповрежденной, ограниченный доступ может препятствовать тому, чтобы люди просмотрели или изменили содержимое подсистемы, все еще позволяя им использовать ее в модели. Для получения дополнительной информации смотрите Соединенные Блоки.
Simulink.BlockDiagram.copyContentsToSubsystem