Динамическая подсистема маскированная

Позвольте библиотечному блоку изменять свое содержимое

Этот флажок включен, только если подсистема маскированная находится в библиотеке. Проверка этой опции позволяет коду инициализации блока изменять содержимое подсистемы маскированной (то есть, это позволяет коду добавить или удалить блоки и установить параметры тех блоков). В противном случае ошибка сгенерирована, когда библиотечный блок маскированный пытается изменить свое содержимое в любом случае. Чтобы установить эту опцию в подсказке MATLAB®, выберите блок самоизменения и введите следующую команду.

set_param(gcb, 'MaskSelfModifiable', 'on');

Затем сохраните блок.

Создайте маски самоизменения для библиотечных блоков

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

  • Измените содержимое подсистемы маскированной на основе параметров в диалоговом окне маски или когда подсистема будет первоначально перетащена из библиотеки в новую модель.

  • Варьируйтесь количество портов на многопортовом Блоке s-function, который находится в библиотеке.

Simulink® запускает код инициализации маски для самомодифицируемого библиотечного блока, когда вы загружаете блок. Если код инициализации маски управляет количеством портов ввода/вывода для блока, отметьте блок как самомодифицируемый. В противном случае код инициализации маски не выполнит и не определит правильный номер портов, которые отключат блок.

Создание самоизменения масок Используя редактор маски

Создать маску самоизменения с помощью Редактора Маски:

  1. Разблокируйте библиотеку (см. Блокировку и Разблокируйте Библиотеки).

  2. Выберите блок в библиотеке.

  3. На вкладке Block, в группе Mask, нажимают Edit Mask. Редактор Маски открывается.

  4. В Редакторе Маски панель Initialization выберите опцию Allow library block to modify its contents.

  5. Введите код, который изменяет подсистему маскированную в маске панель Initialization.

    Не вводите код, который структурно изменяет подсистему маскированную в диалоговом коллбэке параметра (см., Добавляет Код Маски). Выполнение так инициировало ошибку, когда вы редактируете параметр.

  6. Нажмите Apply, чтобы применить изменение или OK, чтобы применить изменение и закрыть Редактор Маски.

  7. Заблокируйте библиотеку.

Создание самоизменения масок из командной строки

Создать маску самоизменения из командной строки:

  1. Разблокируйте библиотеку используя следующую команду:

    set_param(gcs,'Lock','off')

  2. Укажите, что блок самоизменяет при помощи следующей команды:

    set_param(block_name,'MaskSelfModifiable','on')

    где block_name полный путь с блоком в библиотеке.

Создайте маску самоизменения

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

  1. В окне Library, на вкладке Library, нажимают Locked Library, чтобы разблокировать библиотеку.

  2. На вкладке Subsystem Block, в группе Mask, нажимают Edit Mask. Редактор Маски открывается.

  3. Редактор Маски панель Parameters & Dialog задает параметр numIn это хранит значение для опции Number of inports. Этот коллбэк диалогового окна маски добавляет или удаляет Input port в подсистеме маскированной на основе выбора, сделанного в списке Number of inports.

  4. Чтобы позволить коллбэку диалогового окна функционировать правильно, опция Allow library block to modify its contents на Редакторе Маски, панель Initialization выбрана. Если эта опция не выбрана, копия библиотечного блока не могла бы изменить их структурное содержимое. Кроме того, изменение выбора в списке Number of inports произвело бы ошибку.

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

Можно передать значения параметров маски от родительской подсистемы до дочернего блока тремя способами:

  • Используя продвижение параметра.

  • Используя код инициализации маски. Это сделано при помощи set_param команда на дочернем блоке.

  • Наличие дочерних параметров блоков ссылается на родительское название параметра маски. Это применимо только для параметров редактирования.

Похожие темы