И.В.Черных. Simulink. И. В. Черных. "Simulink Инструмент моделирования динамических систем"
Скачать 3.7 Mb.
|
Окно редактора маски с открытой вкладкой Initialization, в котором создано окно параметров генератора, показано на рис. 9.10.4. Рис. 9.10.4 Окно редактора маски на этапе создания окна параметров Выбор типа источников задания на частоту (внутренний или внешний) осуществляется с помощью блока Selector1 (см. рис. 9.10.2). Для этого значение параметра Elements блока Selector1 задано как [(Internal_freq+1)]. Таким образом, если флажок параметра Internal source of frequency signal установлен, то числовое значение переменной Internal_freq равно 1 и на выход селектора проходит сигнал от внутреннего источника, если же флажок снят, то на выход селектора проходит сигнал от входного порта системы (т.е. от внешнего по отношению к генератору источника). Аналогичным образом с помощью переменной Internal_magn выполняется выбор источника сигнала задания на амплитуду. Выбор формы выходного сигнала выполняется также с помощью блока Selector. Треугольный, прямоугольный и синусоидальный сигналы объединяются в вектор с помощью блока Mux, а затем в зависимости от числового значения переменной Wave_form, блок Selector выполняет выбор нужного элемента входного вектора. Значение параметра Elements блока Selector задано как [Wave_form]. Таким образом, если, например, параметр генератора Wave form имеет значение Sine, то числовое значение переменной Wave_form равно 3, и, следовательно, на выход селектора проходит третий элемент входного вектора, т.е. синусоидальный сигнал. 9.10.3. Создание пиктограммы подсистемы Пиктограмма подсистемы создается с помощью вкладки Icon (Пиктограмма) редактора маски. Окно редактора маски с открытой вкладкой Icon показано на рис. 9.10.5. Рис. 9.10.5 Вкладка Icon редактора маски Вкладка содержит следующие элементы: Drawing commands – Область ввода команд рисования. Команды рисования являются выражениями допустимыми в языке MATLAB. Icon frame – Список позволяющий выбрать способ отображения рамки пиктограммы: Visible – Рамка видна. Invisible – Рамка не видна. Icon transparency - Список позволяющий установить прозрачность пиктограммы: Opaque – Пиктограмма не прозрачна. Transparent– Пиктограмма прозрачна. Icon rotation - Список позволяющий задать возможность вращения пиктограммы: Fixed – Положение пиктограммы фиксировано. Rotates – Пиктограмма может вращаться вместе с блоком. Drawing coordinates – Список, задающий условия масштабирования пиктограммы. Autoscale – Автоматическое масштабирование. Рисунок занимает максимально возможную площадь внутри пиктограммы. Normalized – Нормализованное масштабирование. Координаты левого нижнего угла пиктограммы (0,0), координаты правого верхнего угла (1,1). Pixel – Координаты рисунка задаются в пикселах. 9.10.3.1. Команды вывода текста Для вывода текста могут использоваться следующие команды: disp('text') или disp(variablename) – Вывод текста 'text' или значения символьной переменной variablename в центре пиктограммы. text(x, y, 'text') или text(x, y, variablename) – Вывод текста 'text' или значения символьной переменной variablename начиная с позиции, заданной координатами x и y. text(x, y, 'text', 'horizontalAlignment', halign,'verticalAlignment', valign)-Вывод текста 'text' в позиции заданной координатами x и y и с указанием способов выравнивания относительно этой позиции по вертикали или горизонтали. Параметр halign может принимать значения: 'left', 'right' или 'center'. Параметр valign может принимать значения: 'base', 'bottom' или 'middle'. fprintf('text') или fprintf('format', variablename) – Форматированный вывод (по правилам языка C) текста 'text' или значения символьной переменной variablename в центре пиктограммы. port_label(port_type, port_number, label) – Вывод на пиктограмме метки порта. Например, выражение port_label('input', 1, 'a') выводит на пиктограмме метку a первого входного порта. Для вывода текста в несколько строк допускается использование сочетания символов \n для перехода на новую строку. Примеры маскированных подсистем с различными вариантами текстовых надписей даны на рис. 9.10.6. Значения текстовых переменных заданы на вкладке Initialization в графе Initialization commands. Рис. 9.10.6. Варианты текстовых надписей на пиктограммах [Скачать пример] 9.10.3.2. Команды построения графиков Для построения графиков на пиктограмме могут использоваться следующие команды: plot(Y) – В том случае, если Y является вектором, то строится график по оси абсцисс которого откладывается значение индекса элемента, а по оси ординат значение самого элемента. В том случае если Y является матрицей – строятся линии для каждого столбца. По оси абсцисс в этом случае также откладывается значение индекса элемента. plot(X1,Y1,X2,Y2,...) – Строится графики вида Y1(X1), Y2(X2) и т.д. Примеры маскированных подсистем с различными вариантами графиков представлены на рис. 9.10.7. Значения переменных заданы на вкладке Initialization в графе Initialization commands. Рис. 9.10.7. Варианты графиков на пиктограммах [Скачать пример] 9.10.3.3. Команды отображения передаточных функций Для отображения на пиктограмме передаточной функции используются следующие команды: dpoly(num, den) – Отображение дробно-рациональной передаточной функции (num – вектор коэффициентов числителя, den – вектор коэффициентов знаменателя). Оператор Лапласа будет отображен с помощью символа s. dpoly(num, den, 'character') - Отображение дробно-рациональной передаточной функции. Оператор Лапласа будет отображен с помощью символа character. dpoly(num, den, 'z') Отображение дискретной дробно-рациональной передаточной функции. dpoly(num, den, 'z-') - Отображение дискретной дробно-рациональной передаточной функции от обратного аргумента. droots(z, p, k) - Отображение Zpk-формы передаточной функции. Для рассматриваемого выражения может быть добавлен четвертый аргумент в виде 'z' или 'z-' для отображения дискретных передаточных функций. Примеры маскированных подсистем с различными вариантами отображения передаточных функций показаны на рис. 9.10.8. Рис. 9.10.8. Варианты отображения передаточных функций на пиктограммах [Скачать пример] 9.10.3.4. Команды отображения рисунка из графического файла Для отображения на пиктограмме рисунка из графического файла используются следующие команды: image(imread('filename')) – Отображение рисунка из файла с полным именем filename. Для правильной работы этой команды необходимо поместить рисунок в туже папку, где находится файл модели, и сделать эту папку рабочей. Допускается также совместно с именем файла указывать его полный путь. image(a, [x, y, w, h]) – Отображение рисунка содержащегося в переменной a. Ширина и высота рисунка задаются параметрами w и h, соответственно. Левый нижний угол рисунка расположен в точке с координатами x,y. Считывание рисунка из файла может быть выполнено командой a = imread('filename')). image(a, [x, y, w, h], rotation) – Команда аналогичная предыдущей, но позволяющая задавать поведение рисунка при вращении пиктограммы. Значение параметра rotation равное 'on' позволяет поворачивать рисунок вместе с пиктограммой подсистемы. patch(x, y) – Отображение закрашенного многоугольника, координаты которого заданы векторами x и y. Цвет рисунка – черный. patch(x, y, [r g b]) - Команда аналогичная предыдущей, но позволяющая задавать цвет рисунка. Параметры r,g и b задают соотношение красного, зеленого и синего цветов в рисунке. Значение параметров должно находиться в пределах от 0 до 1. Примеры маскированных подсистем с различными вариантами команд отображения рисунков показаны на рис. 9.10.9. Рис. 9.10.9. Варианты отображения рисунков на пиктограммах. [Скачать пример] 9.10.3.5. Использование редактора пиктограмм iconedit Для создания пиктограмм можно также использовать редактор пиктограмм iconedit. Для его вызова используется команда: iconedit('modelname','Subsystem'), где modelname – имя файла модели (без расширения), Subsystem – имя подсистемы, для которой будет создаваться пиктограмма. Пиктограмма создается по точкам, расположение которых указывается с помощью мыши. Между собой точки соединяются прямыми линиями. Для того, чтобы начать новую линию необходимо нажать клавишу n на клавиатуре. Для отмены создания последней точки используется клавиша d. Выход из редактора с автоматическим обновлением пиктограммы осуществляется клавишей q. По завершении работы с редактором необходимо также закрыть его окно рисования. Кроме обновления пиктограммы завершение работы с редактором пиктограмм сопровождается выводом в командной строке MATLAB графической команды, обеспечивающей построение пиктограммы. Пример пиктограммы, созданный с помощью iconedit, его окно рисования, а также текст команды, обеспечивающей построение пиктограммы, показаны на рис. 9.10.10. Рис. 9.10.10 Создание пиктограммы с помощью iconedit [Скачать пример] 9.10.3.6. Создание автоматически обновляемых пиктограмм Создание автоматически обновляемой пиктограммы рассмотрим на примере функционального генератора (рис. 9.10.2). Генератор может вырабатывать сигнал трех видов: треугольный, прямоугольный и синусоидальный. Вполне логично было бы создать такую пиктограмму, на которой отображалась бы форма выбранного на текущий момент сигнала. Это достаточно легко сделать, поскольку за выбор формы сигнала в рабочей области маски отвечает переменная Wave_form. Числовое значение этой переменной равное 1 соответствует треугольному сигналу на выходе генератора, значение равное 2 соответствует прямоугольному сигналу, и 3 – синусоидальному. Реализация поставленной задачи обеспечивается указанными ниже командами, которые необходимо ввести в графе Initialization commands редактора маски: switch Wave_form case 1 % треугольный сигнал x=[-6.28 -4.71 -1.57 1.57 4.71 6.28 ]; y=[0 1 -1 1 -1 0]; case 2 % прЯмоугольный сигнал x=[-6.28 -6.28 -3.14 -3.14 0 0 3.14 3.14 6.28 6.28 ]; y=[0 1 1 -1 -1 1 1 -1 -1 0]; case 3 % синусоидальный сигнал x=(-314*2:314*2)/100; y=sin(x); end; Примечание: Здесь и в дальнейшем в текстах на языке MATLAB включены комментарии на русском языке, которые необходимо удалить при составлении выражений в среде MATLAB. В зависимости от значения переменной Wave_form векторам x и y присваиваются разные значения, благодаря чему команда построения графика plot(x,y); , указанная в графе Drawing commands строит разные графики. Пример, показывающий все три варианта пиктограммы генератора, представлен на рис. 9.10.11. В примере, дополнительно, строятся оси координат с помощью следующих команд: plot([-6.28 -6.28],[1.2 -1.2]); plot([-6.28 8],[0 0]); Также в графе графе Drawing commands введена команда, рисующая одну точку в левом нижнем углу пиктограммы: 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 является % вторым в списке параметров окна диалога. |