Представляйте любой блок, выбранный из заданной пользователями библиотеки блоков
Simulink / Ports & Subsystems
Блок Configurable Subsystem представляет один из набора блоков, содержавшихся в заданной библиотеке блоков. Контекстное меню блока Configurable Subsystem позволяет вам выбрать, какой блок конфигурируемая подсистема представляет.
Конфигурируемые блоки Подсистемы упрощают создание моделей, которые представляют семейства проектов. Например, предположите, что вы хотите смоделировать автомобиль, который предлагает выбор механизмов. Чтобы смоделировать такой дизайн, вы сначала создали бы библиотеку моделей типов механизма, доступных с автомобилем. Вы затем использовали бы блок Configurable Subsystem в своей автомобильной модели, чтобы представлять выбор механизмов. Чтобы смоделировать особую разновидность основного автомобильного дизайна, пользователь должен только выбрать тип механизма, с помощью диалогового окна конфигурируемого блока двигателя.
Чтобы создать конфигурируемую подсистему в модели, необходимо сначала создать библиотеку, содержащую основную конфигурируемую подсистему и блоки, которые это представляет. Можно затем создать конфигурируемые экземпляры основной подсистемы путем перетаскивания копий основной подсистемы от библиотеки и бросания их в модели.
Можно добавить любой тип блока к основной конфигурируемой библиотеке подсистемы. Simulink® выводит имена порта для конфигурируемой подсистемы путем вхождения в уникальный список с имен порта всего выбора. Однако Симулинк использует имена порта по умолчанию для блочного выбора неподсистемы.
Вы не можете разорвать связи библиотеки в конфигурируемой подсистеме, потому что Симулинк использует те ссылки, чтобы реконфигурировать подсистему, когда вы выбираете новую настройку. Разрывание связей было бы полезно, только если вы не намереваетесь реконфигурировать подсистему. В этом случае можно заменить конфигурируемую подсистему на неконфигурируемую подсистему, которая реализует постоянную настройку.
Создать основную конфигурируемую подсистему:
Создайте библиотеку блоков, представляющих различные настройки конфигурируемой подсистемы.
Сохраните библиотеку.
Создайте экземпляр блока Configurable Subsystem в библиотеке.
Для этого перетащите копию блока Configurable Subsystem из библиотеки Simulink Ports & Subsystems в библиотеку, которую вы создали на предыдущем шаге.
Отобразите диалоговое окно блока Configurable Subsystem путем двойного клика по нему. Диалоговое окно отображается список других блоков в библиотеке.
Под Списком блочного выбора в диалоговом окне выберите блоки, которые представляют различные настройки конфигурируемых подсистем, которые вы создаете.
Чтобы применить изменения и закрыть диалоговое окно, кликните по кнопке OK.
Выберите Block Choice из контекстного меню блока Configurable Subsystem.
Контекстное меню отображает подменю, перечисляющее блоки, которые может представлять подсистема.
Выберите блок, который вы хотите, чтобы подсистема представляла по умолчанию.
Сохраните библиотеку.
Если вы добавляете или удаляете блоки из библиотеки, необходимо воссоздать любые Конфигурируемые блоки Подсистемы, которые пользуются библиотекой.
Если вы изменяете блок библиотеки, который является блочным выбором по умолчанию для конфигурируемой подсистемы, изменение сразу не распространяет к конфигурируемой подсистеме. Чтобы распространить это изменение, выполнить одно из следующих действий:
Измените блочный выбор по умолчанию на другой блок в подсистеме, затем возвратите блочный выбор по умолчанию к исходному блоку.
Воссоздайте конфигурируемый блок подсистемы, включая выбор обновленного блока как блочный выбор по умолчанию.
Если конфигурируемая подсистема в вашей модели содержит неработающую ссылку на блок библиотеки, редактирование ссылки и сохранение модели не фиксируют неработающую ссылку в следующий раз, когда вы открываете модель. Чтобы зафиксировать разорванную связь библиотеки в вашей конфигурируемой подсистеме, используйте один из следующих подходов.
Преобразуйте конфигурируемую подсистему в различную подсистему. Щелкните правой кнопкой по конфигурируемой подсистеме и выберите Subsystem и Model Reference> Convert Subsystem к> Различная Подсистема.
Удалите блок библиотеки из основной конфигурируемой библиотеки подсистемы, добавьте блок библиотеки назад к основной конфигурируемой библиотеке подсистемы, и затем повторно сохраните основную конфигурируемую библиотеку подсистемы.
Создать экземпляр конфигурируемой подсистемы в модели:
Откройте библиотеку, содержащую основную конфигурируемую подсистему.
Перетащите копию ведущего устройства в модель.
Выберите Block Choice из контекстного меню того Конфигурируемого экземпляра Подсистемы.
Выберите блок, который вы хотите, чтобы конфигурируемая подсистема представляла.
Экземпляр конфигурируемой системы отображает значок и диалоговое окно параметра блока, который это представляет.
Как с другими блоками, можно использовать диалоговое окно параметра конфигурируемого экземпляра подсистемы, чтобы установить его параметры в интерактивном режиме и команду set_param
, чтобы установить параметры из командной строки MATLAB® или в файле MATLAB. При использовании set_param
, необходимо задать имя полного пути текущего блочного выбора конфигурируемой подсистемы в качестве первого аргумента set_param
, например:
curr_choice = get_param('mymod/myconfigsys', 'BlockChoice'); curr_choice = ['mymod/myconfigsys/' curr_choice]; set_param(curr_choice, 'MaskValues', ...);
Конфигурируемая подсистема отображает набор портов ввода и вывода, соответствующих портам ввода и вывода в выбранной библиотеке. Симулинк использует следующие правила, чтобы сопоставить порты библиотеки с портами блока Configurable Subsystem:
Сопоставьте каждый исключительно именованный порт ввода/вывода в библиотеке к отдельному порту ввода/вывода того же имени на блоке Configurable Subsystem.
Сопоставьте все тождественно именованные порты ввода/вывода в библиотеке к тем же портам ввода/вывода на блоке Configurable Subsystem.
Отключите любой порт ввода/вывода, не используемый в настоящее время выбранным блоком библиотеки с блоком Terminator/Ground.
Это отображение позволяет пользователю изменять блок библиотеки, представленный блоком Configurable Subsystem, не имея необходимость повторно соединять связи проводом с блоком Configurable Subsystem.
Например, предположите, что библиотека содержит два блока A
и B
и что блок A
имеет входные порты, маркировал a
, b
, и c
и выходной порт маркировали d
, и тот блок B
имеет входные порты, маркировал a
и b
, и выходной порт маркировал e
.
Блок Configurable Subsystem на основе этой библиотеки имел бы три входных порта, маркировал a
, b
и c
, соответственно, и два выходных порта маркировали d
и e
.
В этом примере порт a
на блоке Configurable Subsystem соединяется с портом a
выбранного блока библиотеки, неважно, какой блок выбран. Порт c
на блоке Configurable Subsystem функционирует, только если блок A библиотеки выбран. В противном случае это просто отключает.
Блок Configurable Subsystem не обеспечивает порты, которые соответствуют портам non-I/O, таким как триггер и включают порты на инициированных и активированных подсистемах. Таким образом вы не можете использовать блок Configurable Subsystem непосредственно, чтобы представлять блоки, которые имеют такие порты. Можно сделать так косвенно, однако, путем переноса таких блоков в блоки подсистемы, которым соединили порты ввода или вывода с портами non-I/O.
Щелкните правой кнопкой по конфигурируемой подсистеме и выберите Subsystems и Model Reference> Convert Subsystem To> Variant Subsystem.
Во время преобразования Simulink выполняет следующие операции:
Заменяет блок Subsystem на блок Variant Subsystem, сохраняя порты и связи.
Добавляет исходная подсистема как различный выбор в блоке Variant Subsystem.
Заменяет блок Variant Subsystem, чтобы использовать подсистему, которая была первоначально активным выбором.
Заповедники соединяются с библиотеками. Для соединенных подсистем Симулинк добавляет соединенную подсистему как различный выбор.
Simulink также сохраняет блочные маски подсистемы, и он копирует маски в различный выбор.
Смотрите Различную Подсистему для получения дополнительной информации о различном выборе.
Подсистема, атомарная подсистема, невиртуальная подсистема, подсистема CodeReuse | Различная подсистема