Можно создавать диалоговые окна для маскированных блоков, внешний вид которых изменяется в ответ на ввод пользователем. Функции маскированных диалоговых окон, которые могут изменяться таким образом, включают в себя:
Видимость элементов управления параметрами - изменение параметра может привести к появлению или исчезновению другого параметра. Диалоговое окно расширяется или сжимается при появлении или исчезновении элемента управления соответственно.
Включенное состояние элементов управления параметрами - изменение параметра может привести к тому, что элемент управления для другого параметра будет включен или отключен для ввода. Отключенный элемент управления отображается серым цветом, чтобы визуально показать, что он отключен.
Значения параметров - изменение параметра диалогового окна маски может привести к установке соответствующих значений для соответствующих параметров диалогового окна маски.
Примечание
Добавление, удаление или изменение параметров маски ограничено обратным вызовом маски.
Создание динамического маскированного диалогового окна влечет за собой использование редактора масок с set_param команда. В частности, редактор масок используется для определения параметров диалогового окна, как статических, так и динамических. Для каждого динамического параметра вводится функция обратного вызова, определяющая реакцию диалогового окна на изменения этого параметра (см. раздел Выполнение кода обратного вызова). Функция обратного вызова, в свою очередь, может использовать set_param для установки параметров маски, влияющих на внешний вид и параметры других элементов управления в диалоговом окне (см. раздел «Создание диалогового окна динамической маски»). Наконец, можно сохранить модель или библиотеку, содержащую маскированную подсистему, чтобы завершить создание диалогового окна динамической маскировки.
Для просмотра связанного примера см. раздел Создание диалоговых окон динамической маски.
Выбранный параметр появляется в диалоговом окне маски, только если этот параметр установлен (по умолчанию).
При снятии этой опции запрос выбранного параметра отображается серым цветом и отключается управление редактированием запроса.
В этом примере показано, как создать маскирующие диалоговые окна для блоков, внешний вид которых изменяется в ответ на введенные данные.
В этом диалоговом окне маски можно задать два параметра. Первый параметр представляет собой всплывающее меню, с помощью которого можно выбрать одно из трех значений коэффициента усиления: 2, 5, или User-defined. В зависимости от значения, выбранного во всплывающем меню, появляется или исчезает поле редактирования для указания коэффициента усиления.
Выберите подсистему и на вкладке Блок подсистемы в группе Маска щелкните Создать маску.
Выберите панель «Параметры и диалоговое окно» в редакторе масок.
Перетащите параметр Popup и выберите его на панели «Диалоговое окно».
В поле Запрос введите Gain.
В поле Имя введите gainpopup.
На панели редактора свойств снимите флажок «Вычислить», чтобы Simulink ® использовал литеральные значения, заданные для всплывающего окна.
В поле «Параметры типа» нажмите кнопку «Изменить», чтобы ввести эти три значения в диалоговом окне «Параметры всплывающего окна»:
2 5 User-defined
Введите этот код в поле Dialog callback:
% Get the mask parameter values. This is a cell
% array of character vectors.
maskStr = get_param(gcb,'gainpopup');
% The pop-up menu is the first mask parameter.
% Check the value selected in the pop-up
if strcmp(maskStr(1),'U'),
% Set the visibility of both parameters on when
% User-defined is selected in the pop-up.
set_param(gcb,'MaskVisibilities',{'on';'on'}),
else
% Turn off the visibility of the Value field
% when User-defined is not selected.
set_param(gcb,'MaskVisibilities',{'on';'off'}),
% Set the character vector in the Values field equal to the
% character vector selected in the Gain pop-up menu.
%maskStr{2}=maskStr{1};
set_param(gcb,'editvalue',maskStr);
endПеретащите параметр Edit и выберите его на панели «Диалоговое окно».
В поле Запрос введите Value.
В поле Имя введите editvalue.
На панели редактора свойств снимите флажок «Видимые», чтобы Simulink отключил видимость этого свойства по умолчанию.
Нажмите кнопку «Применить».
Чтобы открыть диалоговое окно маски, дважды щелкните маскированную подсистему.
При выборе 2 или 5 в качестве коэффициента усиления Simulink скрывает значение. При выборе User-defined в качестве коэффициента усиления отображается значение.
Если низкоуровневые маскированные подсистемы ссылаются на символы, определенные высокоуровневыми маскированными подсистемами, и вы пытаетесь задать параметры блоков в низкоуровневых маскированных подсистемах, могут возникнуть неразрешенные ошибки символов. Поэтому избегайте использования set_param команды установки параметров блоков, находящихся в маскированных подсистемах, которые находятся в инициализируемой маскированной подсистеме. Попытка, если низкоуровневые маскированные подсистемы ссылаются на символы, определенные высокоуровневыми маскированными подсистемами.
Предположим, например, что маскированная подсистема A содержит маскированную подсистему B, которая содержит блок усиления C, параметр усиления которой ссылается на переменную, определенную В. Предположим также, что код инициализации подсистемы A содержит следующую команду:
set_param([gcb '/B/C'], 'SampleTime', '-1');
Моделирование или обновление модели, содержащей A, приводит к неразрешенной ошибке символа.