Вы можете добавить 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
и подклассы
Не добавляйте код инициализации, чтобы удалить тот же маскированный блок.
Используйте код инициализации маски, чтобы управлять только прямыми дочерними блоками.
Примечание
Не используйте код инициализации маски для комментариев или удаления блока.