exponenta event banner

Инициализировать маску

Для инициализации маскированного блока можно добавить код MATLAB ® на панели «Инициализация» редактора масок. Simulink ® выполняет эти команды инициализации для инициализации маскированной подсистемы в критические моменты времени, такие как загрузка модели и начало прогона моделирования. Дополнительные сведения см. в разделе Выполнение команды инициализации.

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

  • Задание начальных значений параметров маски. Например, чтобы задать начальное значение параметра a, тип a = 5 на панели «Инициализация».

  • Задание значения дочернего блока. Например,

    set_param('Child block Name','Parameter name','Parameter Value')
  • Создание самодифицируемой маски. Дополнительные сведения см. в разделе Самодифицирующаяся маска.

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

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

Убедитесь, что параметры маски, используемые в коде инициализации маски, определены. Ошибки инициализации маски отображаются при редактировании команд инициализации маски, но это возможно только в том случае, если все значения параметров маски оцениваются без ошибок.

Примечание

  • Блоки, содержащие код инициализации, не работают так, как ожидалось при использовании ссылки на модель.

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

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

Панель инициализации содержит следующие разделы:

  • Диалоговые переменные

  • Команды инициализации

Диалоговые переменные

В разделе «Переменные диалогового окна» отображаются имена переменных, связанных с параметрами маски маскированного блока, которые определены на панели «Параметры».

Можно скопировать имя параметра из этого списка и вставить его в раздел Команды инициализации.

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

Команды инициализации

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

Во избежание перекликающихся результатов в окне команд MATLAB завершите команды инициализации точкой с запятой.

Для просмотра связанных примеров см. раздел

Рекомендации по инициализации маски

Команды инициализации маски должны соблюдать следующие правила:

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

  • Не используйте код инициализации для добавления или удаления блоков во время загрузки модели.

  • Для вложенной маскированной подсистемы не используйте set_param на родительском блоке из дочернего блока. Маска дочернего блока и маска родительского блока могут инициализировать один и тот же параметр блока, что приводит к непредвиденному поведению. Дополнительные сведения см. в разделе Небезопасная ошибка обратного вызова маски.

  • Не использовать set_param для блоков, которые находятся в другой маскированной подсистеме, инициализируемой пользователем. Попытка задать параметры блоков в подсистемах с масками более низкого уровня может вызвать неразрешенные ошибки символов, если подсистемы с масками более низкого уровня ссылаются на символы, определенные подсистемами с масками более высокого уровня.

    Предположим, например, маскированная подсистема A содержит маскированную подсистему B который содержит блок усиления C, чей Gain параметр ссылается на переменную, определенную B. Предположим также, что подсистема A имеет код инициализации, содержащий следующую команду:

    set_param([gcb '/B/C'], 'SampleTime', '-1');

    Моделирование или обновление модели, содержащей A, приводит к неразрешенной ошибке символа.

  • Для создания объектов данных нельзя использовать код инициализации маски. Объекты данных являются объектами следующих классов:

    • Simulink.Parameter и подклассы

    • Simulink.Signal и подклассы

  • Не добавляйте код инициализации для удаления того же маскированного блока.

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

Примечание

Не используйте код инициализации маски, чтобы комментировать или раскомментировать блок.

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