Ссылка подсистемы

Ссылка подсистемы позволяет вам сохранять содержимое подсистемы в отдельном файле SLX и ссылаться на него с помощью блока Subsystem Reference. Можно создать несколько экземпляров, ссылающихся на тот же файл подсистемы. Когда вы редактируете любой экземпляр подсистемы, на которую ссылаются, изменения сохранены в отдельном файле SLX, в котором хранится подсистема, и все экземпляры, на которые ссылаются, того файла синхронизируются.

Когда вы сохраняете подсистему в отдельный файл, можно снова использовать его многократно при помощи блоков Subsystem Reference, ссылающихся на тот же файл подсистемы.

Можно идентифицировать блок Subsystem Reference треугольниками в противоположных углах значка блока.

Подсистема, на которую ссылаются, поддерживает всю семантику регулярной подсистемы. Подсистема, на которую ссылаются, адаптирует себя к контексту родительской модели и имеет идентичное поведение при выполнении когда по сравнению с подсистемой, на которую не ссылаются.

Создайте файл Подсистемы

Подсистема хранилища файлов содержимое подсистемы в файле SLX.

Файл подсистемы:

  • Не может быть симулирован.

  • Не имеет конфигурации модели.

  • Не имеет рабочего пространства модели.

  • Не имеет возможности генерации кода.

Создать файл подсистемы:

  1. Открытый Simulink®.

  2. На начальной странице, в группе продуктов Simulink, нажимают Blank Subsystem.

    В качестве альтернативы в панели инструментов Simulink, на вкладке Simulation, выбирают New и нажимают Blank Subsystem. Окно Subsystem открывается.

  3. Добавьте содержимое и нажмите Save.

  4. Задайте имя файла в диалоговом окне Save As. Имя файла должно быть допустимым именем MATLAB.

    Это создает новый файл подсистемы в заданном местоположении.

Чтобы создать файл подсистемы программно, используйте команду:

new_system(subsystemfilename,'subsystem')
Если вы создаете файл подсистемы программно, это появляется в Браузере файла MATLAB как:

Для получения дополнительной информации об управлении файлами подсистемы программно, смотрите Управление Подсистема, на которую Ссылаются, Программно.

Сошлитесь на файл подсистемы в модели

  1. Откройте модель, в которой вы хотите сослаться на файл подсистемы.

  2. Добавьте блок Subsystem Reference с помощью Браузера Библиотеки Simulink или Быстрого меню Insert Блока. Пустой блок Subsystem Reference добавляется к холсту Simulink.

  3. Дважды кликните блок Subsystem Reference.

  4. В диалоговом окне Block Parameter задайте имя файла подсистемы или нажмите Browse, чтобы перейти к нему.

  5. Нажмите OK, чтобы сохранить изменения.

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

Можно преобразовать существующий блок Subsystem в блок Subsystem Reference.

Рассмотрите модель с двумя блоками Subsystem как показано.

В этой модели у вас есть два блока Subsystem – подсистема Controller и подсистема Plant. Преобразовывать блок Subsystem Controller в подсистему, на которую ссылаются:

  1. Выберите блок Controller Subsystem и на вкладке Subsystem Block, выберите Convert и нажмите Convert to Subsystem Reference.

  2. Задайте имя для компонента подсистемы в поле имени файла Подсистемы и нажмите Convert. Имя должно быть допустимым именем MATLAB. Преобразование создает файл подсистемы в текущем каталоге. Чтобы создать файл в определенном месте, нажмите Browse и перейдите к местоположению сохранения.

    Блок Subsystem изменяется в блок Subsystem Reference с именем файла подсистемы, отображенного наверху значка блока.

Совет

Когда вы преобразуете соединенный блок в подсистему, на которую ссылаются, сделайте так в родительском библиотечном блоке того соединенного блока. Если вы преобразуете родительский библиотечный блок в подсистему, на которую ссылаются, все ее соединенные экземпляры блока также преобразованы в подсистемы, на которые ссылаются.

Вы не можете преобразовать подсистему в подсистему, на которую ссылаются, когда подсистема:

  • Сопоставили тестовую обвязку к нему.

  • Не имеет никаких полномочий чтения-записи.

  • Имеет маску, которая пытается изменить ее содержимое.

Отредактируйте и сохраните подсистему, на которую ссылаются,

В модели, содержащей несколько экземпляров подсистемы, на которую ссылаются, можно отредактировать любой экземпляр и после сохранения изменений, которые обновления распространяют ко всем экземплярам, на которые ссылаются. Когда вы активно редактируете экземпляр подсистемы, на которую ссылаются, все другие экземпляры, на которые ссылаются, заблокированы и недоступны редактированию.

Значок, как показывают, в левом нижнем углу открытого файла подсистемы обозначает доступность файла для редактирования. Значок показывает два состояния:

  • указывает, что файл подсистемы доступен для редактирования. Щелкните правой кнопкой по значку, чтобы видеть все активные экземпляры той подсистемы и перейти каждому из них.

  • указывает, что файл подсистемы недоступен редактированию, когда другой экземпляр активно редактируется. Щелкните правой кнопкой по значку, чтобы открыть отредактированный экземпляр.

Если вы отредактировали экземпляр в модели, можно избавить изменения от опции Save, доступной во вкладке Simulation окна модели. Выпадающий Save All дает вам две опции, чтобы сохранить ваши изменения:

  • Save All – Сохранить все обновления в текущей модели.

  • Save Specific Referenced File – Сохранить определенный файл подсистемы, когда вы внесли изменения в несколько файлов подсистемы.

Примечание

Если вы редактируете какой-либо экземпляр подсистемы, на которую ссылаются, в модели, сохраняете изменения прежде, чем обновить или симулировать модель. Несохраненные изменения в экземплярах, на которые ссылаются, вызывают ошибку в процессе моделирования.

Добавьте маску модели для ссылки подсистемы

Можно замаскировать файл подсистемы с помощью маски модели. Когда вы создаете маску модели для файла подсистемы, все экземпляры, на которые ссылаются, совместно используют ту же маску модели.

Замаскировать файл подсистемы:

  1. Откройте файл подсистемы, который будет замаскирован.

  2. В панели инструментов Simulink, на вкладке Modeling, галерее Component, нажимают Create Model Mask. В качестве альтернативы щелкните правой кнопкой где угодно по холсту и выберите Mask и нажмите Create Model Mask. Редактор Маски диалоговое окно открывается.

  3. Добавьте параметры маски и нажмите OK.

Примечание

Вы не можете непосредственно замаскировать блок Subsystem Reference. Чтобы замаскировать блок Subsystem Reference, щелкните правой кнопкой по блоку и выберите Mask> Open file and Create Mask. Это действие открывает ссылаемый файл подсистемы и создает маску на нем.

Для получения дополнительной информации о создании и редактировании масок модели, смотрите Введение в Маску Модели.

Совместимость ссылки подсистемы с предыдущими версиями

Когда вы экспортируете модель, содержащую подсистемы, на которые ссылаются, к версии до R2019b, все блоки Subsystem Reference преобразованы в независимые блоки Subsystem.

Файлы подсистемы, созданные в 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', '.')

Оба возвращают количество блоков Subsystem Reference в модели. По умолчанию, find_system списки весь дочерний элемент блокируются в экземпляре ссылки подсистемы.

Если вы не хотите find_system чтобы посмотреть в подсистеме, на которую ссылаются, используйте find_system с LookInsideSubsystemReference установите на off. По умолчанию, LookInsideSubsystemReference установлен в on.

Измените файл, на который ссылаются, для подсистемы

Можно изменить файл подсистемы, ссылаемый в блоке Subsystem Reference через интерфейс командной строки с помощью set_param команда:

set_param(gcb, 'ReferencedSubsystem', '<subsystemfilename>')
Эта команда изменяет файл, в настоящее время ссылаемый блоком Subsystem Reference, и заменяет его на новый файл подсистемы, который вы задаете.

Проверяйте, является ли Файл SLX Типом Схемы блока Subsystem

Можно проверять, является ли файл 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.

Похожие темы