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

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

Примечание

Ссылка подсистемы совместима с SLX и форматами файлов MDL.

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

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

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

Создайте схему блока Subsystem

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

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

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

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

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

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

Создать блок-схему подсистемы:

  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. В панели инструментов Simulink, на вкладке Referenced Subsystem, задают имя файла блок-схемы подсистемы в the File Name поле или нажимают Browse, чтобы перейти к нему.

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

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

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

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

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

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

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

  2. Задайте имя для компонента подсистемы в поле имени файла Подсистемы. Имя должно быть допустимым именем MATLAB. Преобразование создает файл подсистемы в текущем каталоге. Чтобы создать файл в определенном месте, нажмите Browse и перейдите к местоположению сохранения. Затем передайте существующие тестовые обвязки блок-схеме подсистемы. Чтобы передать тестовые обвязки, установите флажок Transfer test harness(es) to subsystem block diagram затем, нажмите Convert.

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

Совет

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Примечание

  • Вы не можете непосредственно замаскировать блок Subsystem Reference. Чтобы замаскировать блок Subsystem Reference, выберите блок. На вкладке Referenced Subsystem нажмите Create System Mask. Это действие открывает ссылаемый файл подсистемы и создает маску на нем.

  • Вы не можете установить параметры с помощью set_param в вызове назад код подсистемы маскированной. Однако, если на подсистему ссылаются от библиотеки, можно сделать так.

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

Симулируйте схему блока Subsystem с тестовой обвязкой

Блок-схема подсистемы не может быть симулирована как модель или подсистема. Однако можно создать тестовые обвязки на блок-схеме подсистемы и симулировать тестовую обвязку. Это действие помогает вам проверять на любые ошибки или несоответствия при редактировании блок-схемы подсистемы. Можно сопоставить больше чем одну тестовую обвязку к файлу подсистемы и установить тестовую обвязку по умолчанию для подсистемы от набора доступных тестовых обвязок.

Симулировать с тестовой обвязкой:

  1. Откройте блок-схему подсистемы.

  2. В панели инструментов Simulink, на вкладке Subsystem, нажимают Add Test Harness.

    Окно Create Test Harness появляется.

    test harness window

  3. Задайте имя для новой тестовой обвязки и нажмите OK. Это становится тестовой обвязкой по умолчанию.

  4. Нажмите Run with Test Harness на панели инструментов, чтобы запустить тестовую обвязку на подсистеме, не открывая тестовую обвязку. Кликните по флажку Open harness on run, чтобы автоматически открыть тестовую обвязку при выполнении его на подсистеме.

    Test Harness Options

Установите Тестовую обвязку с помощью Командной строки

Можно установить тестовую обвязку по умолчанию блок-схемы подсистемы с помощью команды:

set_param('<subsystemfilename>','DefaultTestHarness','<testHarnessName>');

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

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

Файлы подсистемы, созданные в R2019b, не могут быть экспортированы в предыдущую версию. Для получения информации о том, как экспортировать модель Simulink в предыдущую версию, см. Модель Экспорта к Предыдущей Версии Simulink.

Управляйте подсистемой, на которую ссылаются, программно

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

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

Можно создать подсистему, на которую ссылаются, с помощью 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 или Файл MDL Типом Схемы блока Subsystem

Можно проверять, являются ли SLX или файл MDL типом блок-схемы подсистемы, который может быть помещен в блок 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.

Похожие темы