Диалоговое окно «Динамическая маска»

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

  • Видимость элементов управления параметра - Изменение параметра может привести к появлению или исчезновению элемента управления для другого параметра. Диалоговое окно расширяется или сжимается, когда элемент управления появляется или исчезает, соответственно.

  • Включенное состояние параметров управления - Изменение параметра может привести к тому, что управление для другого параметра будет включено или отключено для входа. Отключенный элемент управления имеет серый цвет, чтобы визуально указать, что он отключен.

  • Значения параметров - Изменение параметра диалогового окна маски может привести к установке соответствующих параметров диалогового окна маски на соответствующие значения.

Примечание

Сложение, удаление или изменение параметров маски ограничено коллбэком маски.

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

Для просмотра связанного примера см. раздел Создание диалоговых окон динамической маски.

Показать параметр

Выбранный параметр появляется в диалоговом окне маски, только если эта опция установлена (по умолчанию).

Включите параметр

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

Диалоговое окно «Создание динамической маски»

В этом примере показано, как создать диалоговое окно маски блоков, внешний вид которых изменяется в ответ на ваш вход.

Вы можете задать два параметра, используя это диалоговое окно маски. Первый параметр является всплывающим меню, через которое вы выбираете одно из трех значений усиления: 2, 5, или User-defined. В зависимости от значения, выбранного в этом всплывающем меню, появляется или исчезает поле редактирования для определения усиления.

  1. Выберите подсистему и на вкладке Subsystem Block, в группе Mask, нажмите Create Mask.

  2. Выберите панель Parameters & Dialog в редакторе масок.

  3. Перетащите параметр Popup и выберите его на панели Dialog box.

    1. В Prompt поле введите Gain.

    2. В Name поле введите gainpopup.

    3. На панели редактора свойств очистите Evaluate так, чтобы Simulink® использует буквальные значения, заданные для всплывающего окна.

    4. В Type options поле нажмите кнопку Edit, чтобы ввести эти три значения в диалоговом окне Popup Options:

      2
      5
      User-defined

  4. Введите этот код в поле 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

  5. Перетащите параметр Edit и выберите его на панели Dialog box.

    1. В Prompt поле введите Value.

    2. В Name поле введите editvalue.

    3. На панели редактора свойств очистите Visible так, чтобы Simulink отключил видимость этого свойства по умолчанию.

  6. Нажмите Apply.

  7. Чтобы открыть диалоговое окно маски, дважды кликните маскированную подсистему.

    Если вы выбираете 2 или 5 как Gain, Simulink скрывает Value. Если вы выбираете User-defined как Gain видна Value.

Настройка параметров вложенных маскированных блоков

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

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

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

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

Похожие темы