МИНОБРНАУКИ РОССИИ
Федеральное государственное автономное образовательное учреждение высшего профессионального образования «Южный федеральный университет»
Факультет |
РАДИОТЕХНИЧЕСКИЙ |
|
Кафедра |
|
МИКРОПРОЦЕССОРНЫХ СИСТЕМ |
Отчет по лабораторной работе №1 по дисциплине:
«Объектно-ориентированное программирование».
На тему: «Спектр реакции системы на гармоническое воздействие».
Выполнил: |
|
студент группы Р-102 |
В.Г.Горчаков |
Проверил:доцент каф. МПС |
М.И.Ледовской |
Таганрог 2013 г.
Цель лабораторной работы
Изучить принципы создания приложения «Спектр реакции системы
на гармоническое воздействие» для Windows в инструментальной среде Delphi 7
Интерфейс приложения
графический |
свойство |
событие |
обработчик |
компонент |
|
|
|
|
|
|
|
Button1 |
Caption |
OnClick |
Button1Click |
CheckBox1 |
Caption |
OnClick |
CheckBox1Click |
GroupBox1 |
Caption |
|
|
Edit1 |
|
OnChange |
EditChange |
Label1 |
Caption |
|
|
RadioGroup1 |
Caption |
OnClick |
RadioGroup1Click |
UpDown1 |
|
Associate |
|
GroupBox3 |
Caption |
|
|
Edit2 |
|
OnChange |
EditChange |
Edit3 |
|
OnChange |
EditChange |
Edit4 |
|
OnChange |
EditChange |
Label2 |
Caption |
|
|
Label3 |
Caption |
|
|
Label4 |
Caption |
|
|
Label5 |
Caption |
|
|
Label6 |
Caption |
|
|
Label7 |
Caption |
|
|
UpDown2 |
|
Associate |
|
UpDown3 |
|
Associate |
|
UpDown4 |
|
Associate |
|
PaintBox1 |
|
OnPaint |
PaintBox1Paint |
Код программы:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, ComCtrls;
type
TForm1 = class(TForm) GroupBox1: TGroupBox; Edit1: TEdit;
UpDown1: TUpDown; GroupBox3: TGroupBox; Label1: TLabel;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit; UpDown2: TUpDown; UpDown3: TUpDown; UpDown4: TUpDown; Label2: TLabel; Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel; CheckBox1: TCheckBox; Button1: TButton; PaintBox1: TPaintBox;
RadioGroup1: TRadioGroup;
procedure PaintBox1Paint(Sender: TObject); procedure RadioGroup1Click(Sender: TObject); procedure CheckBox1Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure EditChange(Sender: TObject);
private
{Private declarations } public
{Public declarations } end;
const |
|
Ymax=100; |
// верхняя граница ПХ системы |
Xmax=10; |
// верхняя граница воздействия |
var
Form1: Tform1;
TypCharact: integer; // тип ПХ системы
p: integer; |
// параметр ПХ |
X0,Xm: real; |
// смещение и амплитуда воздействия |
f: integer; |
// частота воздействия |
implementation
{$R *.dfm}
// передаточная характеристика системы functionTransCharact(x: real): real;
var
y: real; begin
caseTypCharactof
0:y:=p*x;
1:y:=0.1*p*Sqr(x);
2:y:=Ymax*(1-Exp(-0.1*p*x));
end; TransCharact:=y; end;
//воздействие
function Influence(t: real): real; begin
Influence:=X0+Xm*Cos(2*Pi*f*t); end;
// спектр реакции системы procedureSpectrReact;
const |
|
|
|
tmax=1; |
// верхняя граница времени |
||
N=100; |
// количество интервалов дискретизации времени |
||
var |
|
|
|
l,b: integer; |
|
// кординаты левого нижнего угола области вывода |
|
w,h: integer; |
// ширина и высота области вывода |
||
x: real; |
|
// аргумент ПХ |
|
t: real; |
// время |
|
|
fmax: integer; |
// верхнее значение частоты воздействия |
||
A: array[1..5] of real; // амплитуды спектра |
|||
Amax: real; |
|
// верхнее значение амплитуды |
|
dx,dt,df: real; |
// приращения |
||
MasY: array[0..N] of real; |
// дискретные значения ПХ |
||
cx0: integer; |
// X-координатa начала координат графиков |
||
cy0: array[1..3] of integer; |
// Y-координаты начала координат графиков |
||
mx,mt,mf,mr: real; // масштабы |
|||
cy: integer; |
|
// текущая Y-координата |
|
z: real; |
|
// вспомогательные переменные |
|
i,k: integer; |
|
|
|
begin
// область вывода графиков with Form1.PaintBox1 do begin
Canvas.Pen.Color:=clBlack;
Canvas.Brush.Color:=clWhite;
Canvas.Rectangle(0,0,Width,Height);
l:=40; // X-координатa левоговерхнегоугла b:=Height-20; // Y-координатa левого верхнего угла h:=Height-50; // высота
w:=Width-80; // ширина end;
if f<>0 thenfmax:=5*f elsefmax:=1; // масштабы
mr:=(h-140)/4; // относительных единиц по Y-координате
mx:=(w-20)/Xmax; |
// аргумента ПХ по X-координате |
mt:=(w-20)/tmax; |
// времени по X-координате |
mf:=(w-20)/fmax; |
// частоты по X-координате |
with Form1.PaintBox1.Canvas do begin
//разметка осей для графика ПХ
//вертикальная ось
cx0:=l; cy:=b-h;
TextOut(cx0+w div 3,cy-20,'ПХсистемы'); TextOut(cx0+7,cy-15,'Y(X)');
for i:=0 to 4 do begin
MoveTo(cx0,cy); LineTo(cx0+3,cy);
TextOut(cx0-25,cy-7,FloatToStr(Ymax-(Ymax/5)*i)); MoveTo(cx0,cy); LineTo(cx0,cy+Round(0.2*mr)); cy:=cy+Round(0.2*mr);
end; TextOut(cx0-17,cy-7,'0');
//горизонтальная ось cy0[1]:=cy;
MoveTo(cx0,cy0[1]); LineTo(cx0+Round(Xmax*mx)+1,cy0[1]); dx:=Xmax/5;
for i:=1 to 5 do begin
MoveTo(cx0+Round(i*dx*mx),cy0[1]-3); LineTo(cx0+Round(i*dx*mx),cy0[1]); TextOut(cx0+Round(i*dx*mx)-3,cy0[1]+2,FloatToStr(i*dX)); end;
TextOut(w+40,cy0[1]+2,'X [ед]');
//разметка осей для графика воздействия
//вертикальная ось
cy:=cy+50;
TextOut(cx0+w div 3,cy-20,'Воздействие'); TextOut(cx0+7,cy-15,'X(t)');
for i:=0 to 4 do begin
MoveTo(cx0,cy); LineTo(cx0+3,cy); TextOut(cx0-20,cy-7,FloatToStr(Xmax-(Xmax/5)*i)); MoveTo(cx0,cy); LineTo(cx0,cy+Round(0.2*mr)); cy:=cy+Round(0.2*mr);
end; TextOut(cx0-17,cy-7,'0');
//горизонтальная ось cy0[2]:=cy;
MoveTo(cx0,cy0[2]); LineTo(cx0+Round(tmax*mt)+1,cy0[2]); dt:=tmax/5;
for i:=1 to 5 do begin
z:=i*dt; MoveTo(cx0+Round(z*mt),cy0[2]-3); LineTo(cx0+Round(z*mt),cy0[2]);
TextOut(cx0+Round(z*mt)-5,cy0[2]+2,FloatToStr(z)); end;
TextOut(w+40,cy0[2]+2,'t [c]');
//разметка осей для графика спектра
//вертикальная ось
cy:=cy+50;
TextOut(cx0+w div 4,cy-15,'Спектрреакции'); TextOut(cx0+7,cy-7,'А');
cy:=cy+10; Amax:=Ymax div 2;
for i:=0 to 10 do begin
MoveTo(cx0,cy); LineTo(cx0+3,cy); TextOut(cx0-20,cy-7,FloatToStr(Amax-(Amax/5)*i));
if i<>10 then begin
MoveTo(cx0,cy);
LineTo(cx0,cy+Round(0.2*mr));
cy:=cy+Round(0.2*mr); end;
if i=4 then cy0[3]:=cy; end;
// горизонтальнаяось
MoveTo(cx0,cy0[3]); LineTo(cx0+Round(fmax*mf)+1,cy0[3]); df:=fmax/5;
for i:=1 to 5 do begin
z:=i*df; MoveTo(cx0+Round(z*mf),cy0[3]-3); LineTo(cx0+Round(z*mf),cy0[3]);
TextOut(cx0+Round(z*mf)-7,cy0[3]+5,FloatToStr(i)+'f'); end;
TextOut(w+40,cy0[3]+5,'[Гц]');
// построение графика ПХ
Pen.Color:=clRed;
x:=0;
dx:=Xmax/N; MoveTo(cx0,cy0[1]-Round((TransCharact(0)/Ymax)*mr)); for i:=1 to N do
begin z:=i*dx;
LineTo(cx0+Round(z*mx),cy0[1]-Round((TransCharact(z)/Ymax)*mr)); MoveTo(cx0+Round(z*mx),cy0[1]-Round((TransCharact(z)/Ymax)*mr)); end;
// построение графика воздействия t:=0;
dt:=tmax/N;
MasY[0]:=TransCharact(Influence(0)); MoveTo(cx0,cy0[2]-Round((Influence(0)/Xmax)*mr)); for i:=1 to N do
begin z:=i*dt;
MasY[i]:=TransCharact(Influence(z)); LineTo(cx0+Round(z*mt),cy0[2]-Round((Influence(z)/Xmax)*mr)); MoveTo(cx0+Round(z*mt),cy0[2]-Round((Influence(z)/Xmax)*mr)); end;
// построение графика спектра if f<>0 then
begin
for k:=1 to 5 do begin
A[k]:=0;
z:=Pi*f*k*dt; for i:=1 to N do
A[k]:=A[k]+(MasY[i]-MasY[i-1])*Sin(z*(2*i-1));
z:=Sin(z)/Sqr(z)/N; A[k]:=-A[k]*z;
MoveTo(cx0+Round(k*f*mf),cy0[3]); LineTo(cx0+Round(k*f*mf),cy0[3]-Round((A[k]/Amax)*mr)); MoveTo(cx0+Round(k*f*mf)-2,cy0[3]-Round((A[k]/Amax)*mr)); LineTo(cx0+Round(k*f*mf)+2,cy0[3]-Round((A[k]/Amax)*mr)); end;
// коэффициентгармоник
if Form1.CheckBox1.Checked and (A[1]<>0) then TextOut(cx0,cy+10,'Коэффициентгармоник: '+ FloatToStrF(Sqrt(Sqr(A[2])+Sqr(A[3])+Sqr(A[4])+Sqr(A[5]))/A[1], ffFixed,3,2));
end; end; end;
procedure Tform1.PaintBoxPaint(Sender: Tobject); begin
SpectrReact; end;
procedure Tform1.RadioGroupClick(Sender: Tobject); begin
// изменениетипаПХ
TypCharact:=RadioGroup1.ItemIndex;
SpectrReact; end;
procedure Tform1.EditChange(Sender: Tobject); var
i: integer; s: string; begin
i:=(Sender as Tedit).Tag; s:=(Sender as Tedit).Text;
// обновление параметров ПХ и воздействия case i of
1:p:=StrToInt(s);
2:X0:=StrToFloat(s);
3:Xm:=StrToFloat(s);
4:f:=StrToInt(s);
end; SpectrReact; end;
procedure Tform1.ButtonClick(Sender: Tobject); begin
Application.Terminate; end;
procedure Tform1.CheckBoxClick(Sender: Tobject); begin
SpectrReact; end;
end.
Вывод: изучены принципы создания приложения «Спектр реакции системы на гармоническое воздействие» для Windows в инструментальной среде Delphi 7. Изучены основные свойства объектов среды программирования Delphi 7.