Simulink Инструмент моделирования динамических систем
Скачать 2.28 Mb.
|
plot([-10,-10],[-1.2 -1.2]); С помощью этой команды достигается относительное смещение графиков вправо. Таким образом в левой части пиктограммы появляется дополнительное свободное место для отображения меток входных портов (управление портами маскированной подсистемы будет рассмотрено позже). Рис. 9.10.11 Варианты пиктограммы функционального генератора. 9.10.4. Создание справки маскированной подсистемы Для создания описания и справки маскированной подсистемы служит вкладка Documentation (Документация). Вкладка Documentation содержит две графы: Block description (Описание блока) и Block Help (Справка по блоку). Внешний вид редактора маски с открытой вкладкой Documentation показан на рис. 9.10.12. Рис. 9.10.12 Вкладка Documentation редактора маски Текст, введенный в графу Block description, отображается в верхней части окна диалога и предназначен для краткого описания блока. В графу Block Help вносятся команды обеспечивающие загрузку файлов справки, созданных пользователем, в справочную систему при нажатии клавиши Help в окне параметров. Эти команды описаны в документации по Simulink. Наиболее удобным форматом файла справки является htm (html) – формат. Вызов справочного htm-файла осуществляется командой вида: web(['file:///' which('helpfile.htm')]); , где helpfile.htm – имя файла справки. Для правильной работы справочной системы необходимо, чтобы файл справки находился в той же папке, что и файл модели, и данная папка являлась рабочей. Допускается также вместе с именем файла указывать его полный путь. Пример окна справки подсистемы показан на рис. 9.10.13. Рис. 9.10.13.Пример окна справки подсистемы 9.10.5. Создание динамически обновляемых окон диалога Динамически обновляемое окно диалога это такое окно, внешний вид которого изменяется в зависимости от значения параметров заданных в самом окне. Например, для рассматриваемого в данной главе функционального генератора, в случае выбора внешних источников сигналов задания на частоту или амплитуду, графы, в которые вводятся значения частоты и амплитуды, могут отсутствовать или быть не активными. Для создания такого окна необходимо: 1. Выделить блок и ввести в командном окне MATLAB следующее выражение: set_param(gcb, 'MaskSelfModifiable', 'on') . После чего модель необходимо сохранить. Данная команда дает разрешение на самомодификацию окна. 2. Ввести в командном окне команду вида: set_param(gcb,'MaskCallbacks',{'parm1_callback', '','parm3_callback'}); , где в фигурных скобках указываются функции обрабатывающие событие изменения параметра. В данном примере функция parm1_callback обрабатывает событие при изменении первого параметра, а функция parm3_callback обрабатывает событие при изменении третьего параметра. В том случае, если для какого-либо параметра такая обработка не нужна, функция не записывается, но два апострофа для данного параметра (пустая функция) все равно должны указываться. В данном примере обработка события для второго параметра отсутствует. Сама функция может быть любым допустимым выражением на языке MATLAB. Применительно к рассматриваемому функциональному генератору эта команда выглядит следующим образом: set_param(gcb,'MaskCallbacks',{'call_back_freq','','','call_back_magn',''}); . Функция call_back_freq обрабатывает событие при установке или снятии флажка параметра Internal source of frequency signal (тип источника сигнала задания на частоту, переменная Internal_freq), а функция call_back_magn обрабатывает событие при установке или снятии флажка параметра Internal source of magnitude signal (тип источника сигнала задания на амплитуду, переменная Internal_magn). После этого модель необходимо сохранить. 3. Разработать функции обработки. Для рассматриваемого примера функция call_back_freq (файл call_back_freq.m) выглядит следующим образом: Freq_param=get_param(gcb,'Internal_freq'); % Присвоение переменной Freq_param значениЯ % параметра Internal_freq (тип источника % сигнала заданиЯ на частоту: внутренний или % внешний). Параметр Internal_freq является % вторым в списке параметров окна диалога. if strcmp(Freq_param,'on'); % Если значение переменной Freq_param есть 'on' % (внутренний источник сигнала заданиЯ на частоту), то enable={'on','on','on','on','on'}; % всем элементам вектора enable присваиваются % значениЯ равные 'on' (все параметры окна диалога % должны быть активны). else; % Если значение переменной Freq_param не равно 'on' % (внешний источник сигнала заданиЯ на частоту), то enable={'on','off','on','on','on'}; % второму элементу вектора enable присваивается % значение 'off' (второй параметр должен быть не % активным). end; % Завершение конструкци if … else set_param(gcb,'MaskEnables',enable); % Присвоение параметру маскированной подсистемы % MaskEnables значениЯ вектора enable. % Параметр MaskEnables устанавливает режим % активности параметров окна диалога маскированной % подсистемы. Функция проверяет значение параметра Internal_freq. Если значение этого параметра есть 'on', то вектор enable имеет все элементы равные 'on', если же значение параметра Internal_freq равно 'off' (используется внешний источник сигнала задания на частоту), то второй элемент вектора enable имеет значение 'off' и функция set_param(gcb,'MaskEnables',enable); сделает не активной графу для ввода второго параметра (частота внутреннего источника). Функция call_back_magn (файл call_back_magn.m) выглядит следующим образом: Magn_param=get_param(gcb,'Internal_magn'); % Присвоение переменной Magn_param % значениЯ параметра Internal_magn (тип % источника сигнала заданиЯ на амплитуду: % внутренний или внешний). % Параметр Internal_magn ЯвлЯетсЯ пЯтым % в списке параметров окна диалога. if strcmp(Magn_param,'on'); % Если значение переменной Magn_param есть 'on' % (внутренний источник сигнала заданиЯ на амплитуду), visible={'on','on','on','on','on'}; % то всем элементам вектора visible присваиваютсЯ % значениЯ равные 'on' (все параметры окна диалога % должны быть видимы). else; % Если значение переменной Magn_param не равно 'on' % (внешний источник сигнала заданиЯ на на амплитуду), то visible={'on','on','on','on','off'}; % пЯтому элементу вектора visible присваиваетсЯ % значение 'off' (пЯтый параметр окна диалога должен % быть не видимым). end; % Завершение конструкци if ... else set_param(gcb,'MaskVisibilities',visible); % Присвоение параметру маскированной подсистемы % MaskVisibilities значениЯ вектора visible. % Параметр MaskVisibilities устанавливает режим % видимости параметров окна диалога маскированной % подсистемы. Функция проверяет значение параметра Internal_magn. Если значение этого параметра есть 'on', то вектор visible имеет все элементы равные 'on', если же значение параметра Internal_magn равно 'off' (используется внешний источник сигнала задания на амплитуду), то пятый элемент вектора visible имеет значение 'off' и функция set_param(gcb,'MaskVisibilities',visible); сделает не отображаемой графу для ввода пятого параметра (амплитуда внутреннего источника). Для правильной работы такого окна диалога необходимо чтобы файл модели и файлы функций обработки находились в одной папке, и данная папка являлась рабочей. Согласно документации по Simulink текст callback-функций можно записывать также явным образом в вызове функции set_param. Внешний вид окна диалога генератора для случая использования внешних источников сигналов задания на частоту и амплитуду показан на рис. 9.10.14. Рис. 9.10.14.Окно диалога генератора При разработке динамически изменяемых окон диалога можно также переопределять с помощью функции set_param следующие параметры маскированной подсистемы:
Приложение 1. Система меню обозревателя библиотек программы Simulink
Таблица П.1
|