Ссылка на подсистему позволяет сохранять содержимое подсистемы в отдельном SLX-файле и ссылаться на него с помощью блока ссылки на подсистему. Можно создать несколько экземпляров, ссылающихся на один и тот же файл подсистемы. При редактировании любого экземпляра ссылочной подсистемы изменения сохраняются в отдельном SLX-файле, в котором хранится подсистема, и синхронизируются все ссылочные экземпляры этого файла.
При сохранении подсистемы в отдельном файле ее можно многократно использовать с помощью блоков ссылок на подсистемы, ссылающихся на один и тот же файл подсистемы.
Блок привязки подсистемы можно идентифицировать по треугольникам в противоположных углах значка блока.
![]()
Подсистема, на которую имеется ссылка, поддерживает всю семантику обычной подсистемы. Подсистема со ссылкой адаптируется к контексту родительской модели и имеет идентичное поведение выполнения по сравнению с подсистемой без ссылки.
Файл подсистемы хранит содержимое блок-схемы подсистемы в SLX-файле.
Файл подсистемы:
Не удается смоделировать.
Не имеет набора конфигурации.
Не имеет рабочего пространства модели.
Не имеет возможности генерации кода.
Чтобы создать блок-схему подсистемы:
Откройте приложение Simulink ®.
На начальной странице в группе продуктов Simulink щелкните Пустая подсистема.

Либо на панели инструментов Simulink на вкладке Simulation (Моделирование) выберите New (Создать) и щелкните Blank Subsystem (Пустая подсистема). Откроется окно Подсистема (Subsystem).
Добавьте содержимое и нажмите кнопку Сохранить.
Укажите имя файла в диалоговом окне «Сохранить как». Имя файла должно быть допустимым именем MATLAB.
При этом создается новый файл подсистемы в указанном расположении.
Для программного создания файла подсистемы используется команда:
new_system(subsystemfilename,'subsystem')

Дополнительные сведения о программном управлении файлами подсистем см. в разделе Программно управляемая подсистема, на которую имеются ссылки.
Откройте модель, в которой требуется создать ссылку на блок-схему подсистемы.
Добавьте блок ссылки на подсистему с помощью обозревателя библиотеки Simulink или меню «Быстрая вставка блока». Пустой опорный блок подсистемы добавляется к холсту Simulink.
На панели инструментов Simulink на вкладке «Подсистема ссылок» укажите имя файла блок-схемы подсистемы в поле «Имя файла» или нажмите кнопку «Обзор» для перехода к нему.
Можно также дважды щелкнуть блок ссылки на подсистему, чтобы указать файл блок-схемы подсистемы.
Нажмите кнопку ОК, чтобы сохранить изменения.
Существующий блок подсистемы можно преобразовать в блок привязки подсистемы.
Рассмотрим модель с двумя блоками подсистемы, как показано на рисунке.

В этой модели имеется два блока подсистемы - подсистема контроллера и подсистема установки. Для преобразования блока подсистемы контроллера в подсистему, на которую имеется ссылка:
Выберите блок «Подсистема контроллера» и на вкладке «Блок подсистемы» выберите «Преобразовать» и нажмите «Преобразовать в ссылку на подсистему».

Укажите имя компонента подсистемы в поле Имя файла подсистемы. Имя должно быть допустимым именем MATLAB. При преобразовании создается файл подсистемы в текущей папке. Чтобы создать файл в определенном месте, нажмите кнопку Обзор и перейдите к месту сохранения. Затем перенесите существующие тестовые жгуты в блок-схему подсистемы. Для передачи тестовых жгутов установите флажок Передать тестовые жгуты на блок-схему подсистемы и нажмите кнопку Преобразовать.
Блок подсистемы переходит в блок ссылки подсистемы с именем файла подсистемы, отображаемым в верхней части значка блока.

Совет
При преобразовании связанного блока в подсистему, на которую имеется ссылка, выполните это в родительском блоке библиотеки этого связанного блока. После преобразования родительского блока библиотеки в подсистему, на которую имеются ссылки, все связанные с ним экземпляры блока также преобразуются в подсистемы, на которые имеются ссылки.
Невозможно преобразовать подсистему в подсистему, на которую имеется ссылка, если подсистема:
Не имеет разрешений на чтение и запись.
Имеет маску, которая пытается изменить ее содержимое.
В модели, содержащей несколько экземпляров ссылочной подсистемы, можно редактировать любой экземпляр, а после сохранения изменений обновления распространяются на все ссылочные экземпляры. При активном редактировании экземпляра ссылочной подсистемы все остальные ссылочные экземпляры блокируются и недоступны для редактирования.

В левом нижнем углу открытого файла подсистемы отображается значок, указывающий на доступность файла для редактирования. значок показывает два состояния:
указывает, что файл подсистемы доступен для правки. щелкните правой кнопкой мыши значок, чтобы просмотреть все активные экземпляры этой подсистемы и перейти к каждому из них.
указывает, что файл подсистемы недоступен для редактирования, поскольку активно редактируется другой экземпляр. Щелкните правой кнопкой мыши значок, чтобы открыть редактируемый экземпляр.
После редактирования экземпляра в модели можно сохранить изменения из опции Сохранить (Save), доступной на вкладке Моделирование (Simulation) окна модели. Раскрывающийся список Сохранить все (Save All) предоставляет две опции для сохранения изменений:
Сохранить все (Save All) - сохранение всех обновлений в текущей модели.
Сохранить конкретный ссылочный файл (Save Specific Referenced File) - сохранение конкретного файла подсистемы при внесении изменений в несколько файлов подсистемы.
Файл подсистемы можно замаскировать с помощью системной маски. При создании системной маски для файла подсистемы все ссылочные экземпляры используют одну и ту же системную маску.
Чтобы замаскировать файл подсистемы:
Откройте маскируемый файл подсистемы.
На панели инструментов Simulink на вкладке Подсистема щелкните Создать системную маску. Можно также щелкнуть правой кнопкой мыши в любом месте холста, выбрать «Маска» и выбрать «Создать системную маску». Откроется диалоговое окно Редактор масок (Mask Editor).
Добавьте параметры маски и нажмите кнопку ОК.
Примечание
Нельзя непосредственно маскировать блок ссылки на подсистему. Чтобы замаскировать блок ссылки на подсистему, выберите блок. На вкладке Подсистема ссылок (Referenced Subsystem) щелкните Создать системную маску (Create System Mask). Это действие открывает файл подсистемы, на который имеется ссылка, и создает на нем маску.
Дополнительные сведения о создании и редактировании системных масок см. в разделе Введение в системную маску.
Блок-схема подсистемы не может быть смоделирована как модель или подсистема. Однако можно создать тестовые жгуты на блок-схеме подсистемы и смоделировать тестовый жгут. Это действие помогает проверить наличие ошибок или расхождений при редактировании блок-схемы подсистемы. Можно связать несколько тестовых кабелей с файлом подсистемы и установить тестовый кабель по умолчанию для подсистемы из набора доступных тестовых кабелей.
Для моделирования с помощью тестового электрического жгута:
Откройте блок-схему подсистемы.
На панели инструментов Simulink на вкладке «Подсистема» нажмите кнопку «Добавить тестовый кабель».
Появится окно Создать тестовый электрический жгут (Create Test Harness).

Укажите имя нового тестового электрического жгута и нажмите кнопку OK. Этот тестовый электрический жгут становится тестовым по умолчанию.
Щелкните Выполнить с тестовым кабелем (Run with Test Harness) на панели инструментов, чтобы смоделировать тестовый электрический жгут.
Можно также остановить моделирование с помощью кнопки «Остановить», установить значение «Время остановки» для моделирования по умолчанию и обновить блок-схему с помощью кнопки «Обновить с помощью тестового кабеля».

Тестовый электрический жгут по умолчанию для блок-схемы подсистемы можно задать с помощью команды:
set_param('<subsystemfilename>','DefaultTestHarness','<testHarnessName>');
При экспорте модели, содержащей связанные подсистемы, в версию, предшествующую R2019b, все блоки ссылок на подсистемы преобразуются в независимые блоки подсистем.
Файлы подсистемы, созданные в R2019b, нельзя экспортировать в предыдущую версию. Сведения об экспорте модели simulink в предыдущую версию см. в разделе Экспорт модели в предыдущую версию Simulink.
Можно создать подсистему ссылок, найти доступные подсистемы ссылок в модели, изменить файл подсистемы ссылок в блоке и проверить тип блок-схемы файла SLX с помощью интерфейса командной строки.
Ссылочную подсистему можно создать с помощью команды new_system:
new_system(subsystemfilename,'SubSystem')Можно определить, содержит ли модель подсистему, на которую имеется ссылка, с помощью Simulink.findBlocksOfType функция:
Simulink.findBlocksOfType(bdroot, 'SubSystem','ReferencedSubsystem','.',Simulink.FindOptions('RegExp',1))Также можно использовать команду find_system:
find_system(bdroot, 'RegExp','on','BlockType','SubSystem','ReferencedSubsystem', '.')
Оба возвращают количество опорных блоков подсистемы в модели. По умолчанию find_system перечисляет все дочерние блоки в экземпляре ссылки на подсистему.
Если вы не хотите find_system для поиска в подсистеме, на которую имеется ссылка, используйте find_system с LookInsideSubsystemReference установить в значение off. По умолчанию LookInsideSubsystemReference имеет значение on.
Файл подсистемы, на который имеется ссылка в блоке ссылок на подсистему, можно изменить с помощью интерфейса командной строки с помощью set_param команда:
set_param(gcb, 'ReferencedSubsystem', '<subsystemfilename>')
Можно проверить, является ли SLX-файл типом блок-схемы подсистемы, которую можно поместить в опорный блок подсистемы, используя любую из следующих команд:
bdIsSubsystem(bdname)
logical 1 если bdname.slx является типом блок-схемы подсистемы и logical 0 При использовании этой команды убедитесь, что загружен файл bdname.slx.get_param(bdname,'BlockDiagramType')Эта команда возвращает Subsystem если bdname.slx является типом блок-схемы подсистемы. При использовании этой команды убедитесь, что загружен файл bdname.slx.
Simulink.MDLInfo(bdname)
Эта команда предоставляет всю информацию о модели, где BlockDiagramType свойство отображается как Subsystem если bdname.slx является типом блок-схемы подсистемы.
При использовании ссылочной подсистемы в модели:
Чтобы замаскировать подсистему, на которую имеется ссылка, используйте системную маску.
Не ссылайтесь на родительскую подсистему, поскольку она создает цикл ссылок.
Ссылочный блок подсистемы может ссылаться только на тип файла подсистемы.