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

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

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

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

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

Создайте блок Subsystem

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

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

  • Невозможно моделировать.

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

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

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

Чтобы создать блок подсистемы:

  1. Откройте Simulink®.

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

    Кроме того, на панели инструментов Simulink, на вкладке Simulation, выберите New и нажмите Blank Subsystem. Откроется окно Подсистема.

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

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

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

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

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

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

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

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

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

  3. На панели инструментов Simulink, на вкладке Referenced Subsystem, укажите имя файла блока подсистемы в поле File Name или нажмите Browse, чтобы перейти к нему.

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

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

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

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

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

В этой модели у вас есть два блока Subsystem - подсистема Controller и подсистема Plant. Чтобы преобразовать блок Controller Subsystem в подсистему-ссылку:

  1. Выберите блок Controller Subsystem и на вкладке Блок Subsystem выберите 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. Это действие открывает файл подсистемы, на который ссылается, и создает на нем маску.

Дополнительные сведения о создании и редактировании системных масок см. в разделе Введение в системную маску.

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

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

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

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

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

    Появится Create Test Harness окно.

    test harness window

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

  4. Щелкните Run with Test Harness на панели инструментов, чтобы симулировать тестовую обвязку.

    Можно также остановить симуляцию кнопкой Stop, задать Stop Time для симуляции по умолчанию и обновить блок кнопкой Update with Test Harness.

    Test Harness Options

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

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

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

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

При экспорте модели, содержащей ссылочные подсистемы, в версию, предшествующую 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 может ссылаться только на тип файла подсистемы.

Похожие темы