Ссылка подсистемы позволяет вам сохранять содержимое подсистемы в отдельном файле SLX и ссылаться на него с помощью блока Subsystem Reference. Можно создать несколько экземпляров, ссылающихся на тот же файл подсистемы. Когда вы редактируете любой экземпляр подсистемы, на которую ссылаются, изменения сохранены в отдельном файле SLX, в котором хранится подсистема, и все экземпляры, на которые ссылаются, того файла синхронизируются.
Когда вы сохраняете подсистему в отдельный файл, можно снова использовать его многократно при помощи блоков Subsystem Reference, ссылающихся на тот же файл подсистемы.
Можно идентифицировать блок Subsystem Reference треугольниками в противоположных углах значка блока.
Подсистема, на которую ссылаются, поддерживает всю семантику регулярной подсистемы. Подсистема, на которую ссылаются, адаптирует себя к контексту родительской модели и имеет идентичное поведение при выполнении когда по сравнению с подсистемой, на которую не ссылаются.
Подсистема хранилища файлов содержимое подсистемы в файле SLX.
Файл подсистемы:
Не может быть симулирован.
Не имеет конфигурации модели.
Не имеет рабочего пространства модели.
Не имеет возможности генерации кода.
Создать файл подсистемы:
Открытый Simulink®.
На начальной странице, в группе продуктов Simulink, нажимают Blank Subsystem.
В качестве альтернативы в панели инструментов Simulink, на вкладке Simulation, выбирают New и нажимают Blank Subsystem. Окно Subsystem открывается.
Добавьте содержимое и нажмите Save.
Задайте имя файла в диалоговом окне Save As. Имя файла должно быть допустимым именем MATLAB.
Это создает новый файл подсистемы в заданном местоположении.
Чтобы создать файл подсистемы программно, используйте команду:
new_system(subsystemfilename,'subsystem')
Для получения дополнительной информации об управлении файлами подсистемы программно, смотрите Управление Подсистема, на которую Ссылаются, Программно.
Откройте модель, в которой вы хотите сослаться на файл подсистемы.
Добавьте блок Subsystem Reference с помощью Браузера Библиотеки Simulink или Быстрого меню Insert Блока. Пустой блок Subsystem Reference добавляется к холсту Simulink.
Дважды кликните блок Subsystem Reference.
В диалоговом окне Block Parameter задайте имя файла подсистемы или нажмите Browse, чтобы перейти к нему.
Нажмите OK, чтобы сохранить изменения.
Можно преобразовать существующий блок Subsystem в блок Subsystem Reference.
Рассмотрите модель с двумя блоками Subsystem как показано.
В этой модели у вас есть два блока Subsystem – подсистема Controller и подсистема Plant. Преобразовывать блок Subsystem Controller в подсистему, на которую ссылаются:
Выберите блок Controller Subsystem и на вкладке Subsystem Block, выберите Convert и нажмите Convert to Subsystem Reference.
Задайте имя для компонента подсистемы в поле имени файла Подсистемы и нажмите Convert. Имя должно быть допустимым именем MATLAB. Преобразование создает файл подсистемы в текущем каталоге. Чтобы создать файл в определенном месте, нажмите Browse и перейдите к местоположению сохранения.
Блок Subsystem изменяется в блок Subsystem Reference с именем файла подсистемы, отображенного наверху значка блока.
Когда вы преобразуете соединенный блок в подсистему, на которую ссылаются, сделайте так в родительском библиотечном блоке того соединенного блока. Если вы преобразуете родительский библиотечный блок в подсистему, на которую ссылаются, все ее соединенные экземпляры блока также преобразованы в подсистемы, на которые ссылаются.
Вы не можете преобразовать подсистему в подсистему, на которую ссылаются, когда подсистема:
Сопоставили тестовую обвязку к нему.
Не имеет никаких полномочий чтения-записи.
Библиотечный блок, который имеет самомодифицируемую маску.
В модели, содержащей несколько экземпляров подсистемы, на которую ссылаются, можно отредактировать любой экземпляр и после сохранения изменений, которые обновления распространяют ко всем экземплярам, на которые ссылаются. Когда вы активно редактируете экземпляр подсистемы, на которую ссылаются, все другие экземпляры, на которые ссылаются, заблокированы и недоступны редактированию.
Значок, как показывают, в левом нижнем углу открытого файла подсистемы обозначает доступность файла для редактирования. Значок показывает два состояния:
указывает, что файл подсистемы доступен для редактирования. Щелкните правой кнопкой по значку, чтобы видеть все активные экземпляры той подсистемы и перейти каждому из них.
указывает, что файл подсистемы недоступен редактированию, когда другой экземпляр активно редактируется. Щелкните правой кнопкой по значку, чтобы открыть отредактированный экземпляр.
Если вы отредактировали экземпляр в модели, можно избавить изменения от опции Save, доступной во вкладке Simulation окна модели. Выпадающий Save All дает вам две опции, чтобы сохранить ваши изменения:
Save All – Сохранить все обновления в текущей модели.
Save Specific Referenced File – Сохранить определенный файл подсистемы, когда вы внесли изменения в несколько файлов подсистемы.
Если вы редактируете какой-либо экземпляр подсистемы, на которую ссылаются, в модели, сохраняете изменения прежде, чем обновить или симулировать модель. Несохраненные изменения в экземплярах, на которые ссылаются, вызывают ошибку в процессе моделирования.
Можно замаскировать файл подсистемы с помощью маски модели. Когда вы создаете маску модели для файла подсистемы, все экземпляры, на которые ссылаются, совместно используют ту же маску модели.
Замаскировать файл подсистемы:
Откройте файл подсистемы, который будет замаскирован.
В панели инструментов Simulink, на вкладке Modeling, галерее Component, нажимают Create Model Mask. В качестве альтернативы щелкните правой кнопкой где угодно по холсту и выберите Mask и нажмите Create Model Mask. Редактор Маски диалоговое окно открывается.
Добавьте параметры маски и нажмите OK.
Вы не можете непосредственно замаскировать блок Subsystem Reference. Чтобы замаскировать блок Subsystem Reference, щелкните правой кнопкой по блоку и выберите Mask> Open file and Create Model Mask . Это действие открывает ссылаемый файл подсистемы и создает маску модели на нем.
Для получения дополнительной информации о создании и редактировании масок модели, смотрите Введение в Маску Модели.
Когда вы экспортируете модель, содержащую подсистемы, на которые ссылаются, к версии до R2019b, все блоки Subsystem Reference преобразованы в независимые блоки Subsystem.
Файлы подсистемы не могут быть экспортированы в версию до R2019b. Для получения информации о том, как экспортировать simulink модель в предыдущую версию, смотрите Экспорт Модель к Предыдущей Версии Simulink.
Можно создать подсистему, на которую ссылаются, найти доступные подсистемы, на которые ссылаются, в модели, изменить файл подсистемы, на который ссылаются, в блоке и проверять тип блок-схемы файла SLX с помощью интерфейса командной строки.
Можно создать подсистему, на которую ссылаются, с помощью new_system команды:
new_system(subsystemfilename,'SubSystem')
Можно найти, содержит ли модель подсистему, на которую ссылаются, с помощью find_system команды:
find_system(bdroot, 'RegExp','on','BlockType','SubSystem','ReferencedSubsystem', '.')
Эта команда возвращает список блоков Subsystem Reference в модели. По умолчанию, find_system
списки весь дочерний элемент блокируются в экземпляре ссылки подсистемы.
Если вы не хотите find_system
чтобы посмотреть в подсистеме, на которую ссылаются, используйте find_system
с LookInsideSubsystemReference
установите на off
. По умолчанию, LookInsideSubsystemReference
установлен в on
.
Можно изменить файл подсистемы, ссылаемый в блоке Subsystem Reference через интерфейс командной строки с помощью set_param
команда:
set_param(gcb, 'ReferencedSubsystem', '<subsystemfilename>')
Можно проверять, является ли файл SLX типом блок-схемы подсистемы, который может быть помещен в блок Subsystem Reference с помощью любой из этих команд:
bdIsSubsystem(bdname)
logical 1
если bdname.slx является типом схемы блока Subsystem и logical 0
если это не. При использовании этой команды убедитесь, что bdname.slx загружается.get_param(bdname,'BlockDiagramType')
Эта команда возвращает Subsystem
если bdname.slx является типом схемы блока Subsystem. При использовании этой команды убедитесь, что bdname.slx загружается.
Simulink.MDLInfo(bdname)
Эта команда дает целую информацию модели где BlockDiagramType
свойство показывается Subsystem
если bdname.slx является типом схемы блока Subsystem.
При использовании подсистемы, на которую ссылаются, в модели:
Чтобы замаскировать подсистему, на которую ссылаются, используйте маску модели.
Не ссылайтесь на родительскую подсистему, потому что она создает ссылочный цикл.
Только на тип файла подсистемы может сослаться блок Subsystem Reference.