Учебно-исследовательская работа Автоматизированная система предупреждения ошибок при взлёте самолёта изучение предметной области



бет6/6
Дата05.01.2024
өлшемі411.18 Kb.
#488517
түріИсследовательская работа
1   2   3   4   5   6
УИРС Авдияров

ПРИЛОЖЕНИЕ 1. ЛИСТИНГ ПРОГРАММЫ


var
Form1: TForm1;


implementation

{$R *.dfm}


procedure TForm1.btn1Click(Sender: TObject); //моделируем взлёт самолёта без нашей системы


var polosa,s,n,s1,vmax:Integer;
P,P1,v,G,i,S2,Ya,Xa,Cy,Cx,m,f:Real;
begin
polosa:=strtoint(edt2.text);
Chart1.Series[0].Clear;
Chart1.Series[1].Clear;
Chart1.Series[2].Clear;
S:=0;
v:=0;
S2:=strtofloat(edt8.text);
P:=StrToFloat(edt5.text);
m:=StrToFloat(edt3.text);

if rb1.Checked then f:=0.06; //выбор ср. величины коэфициента трения


if rb2.Checked then f:=0.06;
if rb3.Checked then f:=0.23;
if rb4.Checked then f:=0.26;

vmax:=strtoint(edt1.text)-strtoint(edt4.text);//учёт ветра


for S:=1 to polosa do begin
Chart1.Series[0].AddXY(S, vmax);
end;
v:=0;

if (P-Xa-(1.1*f*(m*g))<=0) then showmessage('сила тяги слишком мала!')


else begin
for n:=1 to polosa do begin
S:=n;
Cy:=strtofloat(edt9.text);
Cx:=strtofloat(edt6.Text);
if s=s1 then P:=P-P1;

Ya:=50;
Xa:=500;


i:=9.8*(P-Xa-(1.1*f*(m*9.8-Ya)))/m; if i<0 then break;
v:=Sqrt(Sqr(v)+(i*2)); //вычисляем скорость на каждом шаге
if v>=vmax then Break;
Chart1.Series[1].AddXY(S, v);
if (S mod 10)=0 then Chart1.Refresh;
Sleep(1);
end;
end;
btn2.Visible:=True;
end;

procedure TForm1.btn2Click(Sender: TObject);


var color: TColor;
S,S1,n1,n,polosa: integer;
flag:boolean;
P,P1,f,i,i2,G, S2, Ya, v, Cy, m, Xa, Cx, vmax, Smax2,Smax:Real;
begin
vmax:=StrToFloat(edt1.text)-StrToFloat(edt4.text);//учёт ветра
Flag:=false; //флаг остановки

P:=strtofloat(edt5.Text);


polosa:=strtoint(edt2.text);
S2:=strtofloat(edt8.text);
m:=StrToFloat(edt3.text);
P:=StrToFloat(edt5.text);

if rb1.Checked then f:=0.06;


if rb2.Checked then f:=0.06;
if rb3.Checked then f:=0.23;
if rb4.Checked then f:=0.26;

for n:=1 to Chart1.Series[1].LastValueIndex do begin //расчёт по метрам


if flag=true then break;
S:=n;
i:=(sqr(Chart1.Series[1].YValue[S])-sqr(v))/2;

Cy:=strtofloat(edt9.text);


Ya:=50;
Xa:=500;


i2:=9.8*((P*strtofloat(edt10.Text)/100)+Xa+(1.1*f*(m*9.8-Ya)))/m;


Smax2:=sqr(v)/(2*i2);


Smax:=(Sqr(Vmax)-(v*vmax))/(2*i);

if (polosa-S-10<=Smax2) and (polosa-S<=Smax) and (v
begin showmessage(floattostr(Smax)+' '+floattostr(Smax2));
flag:=true; end;

if flag=false then begin


v:=Chart1.Series[1].YValue[S];


Chart1.Series[2].AddXY(S, v);

if (S mod 5)=0 then Chart1.Refresh;


end;

if flag=true then stop(S,P,v);


if v>=vmax then break;
end;
end;

procedure TForm1.stop(S: integer; P,v: real);


var s1,polosa:integer;
F1,i,m,S2,Xa,Ya,f,Cy,Cx:Real;
begin
polosa:=strtoint(edt2.text);
S2:=strtofloat(edt8.text);
m:=StrToFloat(edt3.text);

if rb1.Checked then f:=0.06; //выбор ср. величины коэфициента трения


if rb2.Checked then f:=0.06;
if rb3.Checked then f:=0.23;
if rb4.Checked then f:=0.26;
s1:=0;
repeat
Chart1.Series[2].AddXY(S, v);
Sleep(1);
if (S mod 10)=0 then Chart1.Refresh;
inc(S);
inc(S1);
Cy:=strtofloat(edt9.text);
Cx:=strtofloat(edt6.text);
Ya:=50;
Xa:=500;
i:=9.8*((P*strtofloat(edt10.Text)/100)+Xa+(1.1*f*(m*9.8-Ya)))/m;
if (Sqr(v)-(i*2))<=0 then v:=0 else
v:=sqrt(Sqr(v)-(i*2));
if v<=0 then break;
if (S=polosa) then break;
until v=0;
end;
end.

Достарыңызбен бөлісу:
1   2   3   4   5   6




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет