- •Лабораторная работа № 9 тема: «Связь Simulink-модели и приложения с графическим интерфейсом»
- •Описание приложения с графическим интерфейсом и Simulink-модели
- •Аргументы mysfun
- •Подфункция mdlInitializeSizes
- •Value - текущее значение, задаем равным InitControl.
- •Подфункция mdlUpdate
- •Окно с запросом на удаление окна приложения
- •Подфункция sldCallback
- •Текст s-функции mysfun с подфункциями
Style - определяет тип создаваемого элемента управления, в нашем случае значение 'slider' соответствует полосе прокрутки.
Position - положение полосы прокрутки в окне, значение - вектор [x y width height], где (x,y) - координаты левого нижнего угла полосы прокрутки, width - ширина, а height - высота (все единицы по умолчанию в пикселях).
Min - минимальное значение свойства Value полосы прокрутки, соответствующее крайнему левому положению бегунка, присваиваем 0, т.к. значение параметра Control должно быть больше или равно 0.
Max - максимальное значение свойства Value полосы прокрутки, соответствующее крайнему правому положению бегунка, присваиваем 5, т.к. значение параметра Control должно быть меньше или равно 5.
Value - текущее значение, задаем равным InitControl.
Callback - указатель на функцию, выполняющуюся при изменении положения бегунка пользователем, в нашем примере это функция sldCallback (см. раздел Подфункция sldCallback).
После создания полосы прокрутки вызывается функция set_param для задания значения InitControl постоянной блока Control. Входными аргументами функции set_param являются:
Полное имя блока, которое формируется сцеплением строк из имени модели (его возвращает функция gcs) и имени блока 'Control'. Имя блока отделяется от имени модели косой чертой.
Имя свойства 'Value' блока.
Значение свойства 'Value', которое должно быть строковым, поэтому используется функция num2str для преобразования числового значения InitControl в строковое представление.
Далее при помощи функции axes создаются нижние и верхние оси. При создании осей задействованы следующие их свойства.
Tag - тег, используемый далее в подфункции mdlUpdate (см. раздел Подфункция mdlUpdate) для указания осей, на которые следует выводить график. Для нижней пары осей задается тег 'ax1', а для верхней - 'ax2'.
Units - единицы измерения, используемые для задания положения осей в графическом окне, мы будем задавать положение осей в пикселях, поэтому устанавливаем значение 'pixels'.
Position - положение осей в окне, значение - вектор [x y width height], где (x,y) - координаты левого нижнего угла осей, width - ширина, а height - высота (все единицы в пикселях).
NextPlot - свойство, отвечающее за графический вывод на оси. В нашем случае в подфункции mdlUpdate (см. раздел Подфункция mdlUpdate) мы будем строить графики соединяя текущую точку (соответствующую значению отображаемой величины в данный момент времени) с предыдущей (соответствующей значению отображаемой величины в предыдущий момент времени, в который работал блок S-function). Значение 'add' говорит о том, что новая линия должна добавиться, а старые остаться.
XLim и YLim - вектора из двух элементов с пределами осей абсцисс и ординат, соответственно. По оси абсцисс откладывается время, мы задаем пределы от 0 до 50, которые будем затем увеличивать в подфункции mdlUpdate (см. раздел Подфункция mdlUpdate). При задании пределов по оси ординат мы учитываем границы значений отображаемых величин.
Color - цвет фона осей, задаем значение 'k' (черный).
Xcolor и YColor - цвет осей абсцисс и ординат, соответственно, и их разметки. Задаем значение 'g' (зеленый).
Box - прямоугольная рамка вокруг координатных осей, устанавливаем ее, задавая значение 'on'.
XGrid и YGrid - сетка по каждой из координатных осей, включаем ее, задавая значение 'on'.
Далее в функции mdlInitializeSizes помощи функции uicontrol создаются два статических текстовых объекта с заголовками Signal (для нижних осей) и Control (для верхних осей). При создании текстовых объектов используются следующие их свойства.
Style - определяет тип создаваемого элемента управления, в нашем случае значение 'text' соответствует статическому тексту.
String - надпись на объекте.
Position - положение текстового объекта в окне, значение - вектор [x y width height], где (x,y) - координаты левого нижнего угла текстового объекта, width - ширина, а height - высота (все единицы по умолчанию в пикселях).
FontSize - размер шрифта, по умолчанию он задается в пунктах.
FontWeight - жирность шрифта, 'bold' значит полужирный.
BackgroundColor - цвет фона, задаем 'k' (черный).
ForegroundColor - цвет текста, задаем 'm' (фиолетовый).
Последнее очень важное действие, выполняемое в функции mdlInitializeSizes, состоит в сохранении указателя на графическое окно Fig в свойстве UserData блока S-function. Это делается при помощи функции set_param, первым аргументом которой должен быть указатель на блок S-function. Указатель на текущий блок (т.е. как раз на блок S-function в момент его работы) возвращается функцией gcbh, поэтому запись указателя на окно приложения осуществляется при помощи следующего обращения
set_param(gcbh, 'UserData', Fig)