Инициализация маски

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

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

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

  • Чтобы задать значение дочернего блока. Для примера,

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

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

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

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

Примечание

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

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

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

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

  • Dialog variables

  • Initialization commands

Переменные диалога

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

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

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

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

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

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

Чтобы просмотреть связанные примеры, смотрите

Лучшие практики инициализации маски

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

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

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

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

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

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

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

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

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

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

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

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

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

Примечание

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

Похожие темы