exponenta event banner

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

Разрешить блоку библиотеки изменять его содержимое

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

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

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

Создание самодифицируемых масок для блоков библиотеки

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

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

  • Изменение количества портов в многопортовом блоке S-Function, находящемся в библиотеке.

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

Создание самодифицируемых масок с помощью редактора масок

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

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

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

  3. На вкладке Блок (Block) в группе Маска (Mask) щелкните Править маску (Edit Mask). Откроется редактор масок.

  4. На панели инициализации редактора масок выберите параметр Разрешить блок библиотеки для изменения его содержимого.

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

    Не вводите код, структурно изменяющий маскированную подсистему в диалоговом режиме обратного вызова параметра (см. Добавление маскирующего кода). Это приводит к ошибке при редактировании параметра.

  6. Нажмите кнопку Применить (Apply), чтобы применить изменение, или кнопку ОК, чтобы применить изменение и закрыть редактор масок.

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

Создание самодифицируемых масок из командной строки

Чтобы создать самодифицирующуюся маску из командной строки:

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

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

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

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

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

Создать самодифицирующуюся маску

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

  1. В окне Библиотека (Library) на вкладке Библиотека (Library) щелкните Заблокированная библиотека (Locked Library), чтобы разблокировать библиотеку.

  2. На вкладке Блок подсистемы в группе Маска щелкните Изменить маску. Откроется редактор масок.

  3. Диалоговое окно «Параметры и параметры редактора масок» определяет параметр numIn , в котором хранится значение параметра Количество вводов. В этом окне обратного вызова маски добавляются или удаляются входные порты в маскированной подсистеме на основе выбора, сделанного в списке Количество входов.

  4. Для правильной работы обратного вызова диалогового окна на панели инициализации редактора масок установлен флажок Разрешить блоку библиотеки изменять его содержимое. Если этот параметр не выбран, копия блока библиотеки не может изменить их структурное содержимое. Кроме того, изменение выбора в списке Number of inports приведет к ошибке.

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

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

  • Использование повышения параметров.

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

  • Если параметры дочернего блока ссылаются на имя родительского параметра маски. Это применимо только для параметров редактирования.

Связанные темы