Підготовка існуючих даних.
Площа крила |
S |
201.45 м2 |
Розмах крила |
L |
37.55 м |
Польотна вага |
G |
73000 кг |
Момент інерції |
Ix |
170000 кг м с2 |
Момент інерції |
Iy |
800000 кг м с2 |
Геометричні і масово-інерційні характеристики літака ТУ-154-Б.
Параметри атмосфери і аеродинамічні характеристики літака
Написання та налагодження програми.
Реалізація моделі відбувалася за допомогою середовища розробки Delphi 7 на мові програмування Pascal.
Основний код програми:
procedure TForm1.Button2Click(Sender: TObject); {Розрахунки}
var DT, count, q : real;
m, de, dn, ny, alfa : real;
C : array [1..6] of real;
A : array [1..7] of real;
B : array [1..7] of real;
ST : array [1..23] of real;
i, j : integer;
X : array [1..6] of real;
Y : array [1..6] of real;
begin
if(ComboBox1.Text='')
then
begin
ShowMessage('Виберіть будь-ласка характеристику');
end;
Series1.Clear; Series2.Clear; Series3.Clear; Series4.Clear;
st[1] := 97.2;{V0}
st[2] := 500;{H0}
st[3] := 0.119;{ph}
st[4] := 338.36;{ah}
st[5] := -0.141;
st[6] := -0.1518;
st[7] := -0.071;
st[8] := -0.8136;
st[9] := -0.02;
st[10] := -0.151;
st[11] := -0.16;
st[12] := -0.56;
st[13] := -0.1146;
st[14] := -0.07;
st[15] := 0;
st[16] := 0.026;
st[17] := -0.255;
st[18] := -5.78;
st[19] := 201.45;{Площа крила S}
st[20] := 37.55;{Розмах крила l}
st[21] := 73000;{Польота вага G}
st[22] := 170000;{Момент інерції Ix}
st[23] := 800000;{Момент інерції Iy}
DT := 0.05;
case ComboBox1.ItemIndex of
1: begin dN := -10; dE := 0; end;
2: begin dN := 0; de := -1; end;
end;
j:=0;
while j<=6 do
begin
X[j]:=0;
Y[j]:=0;
j:=j+1;
end;
q := ST[3]*ST[1]*ST[1]/2;
alfa := 57.3*(ST[21]-ST[17]*ST[19]*q)/ST[18]/ST[19]/q;
m := ST[21]/9.8;
C[6] := ST[1]/57.3;
A[1] := -ST[5]/ST[23]*ST[3]*ST[1]/4*ST[19]*ST[20]*ST[20];
A[2] := -ST[6]/ST[23]*ST[3]*ST[1]*ST[1]/2*ST[19]*ST[20];
A[3] := -ST[7]/ST[23]*ST[3]*ST[1]*ST[1]/2*ST[19]*ST[20];
A[4] := -ST[8]/m*ST[3]*ST[1]/2*ST[19];
A[5] := -ST[9]/ST[22]*ST[3]*ST[1]*ST[1]/2*ST[19]*ST[20];
A[6] := -ST[10]/ST[22]*ST[3]*ST[1]/4*ST[19]*ST[20]*ST[20];
A[7] := -ST[11]/m*ST[3]*ST[1]/2*ST[19];
B[1] := -ST[12]/ST[22]*ST[3]*ST[1]/4*ST[19]*ST[20]*ST[20];
B[2] := -ST[13]/ST[22]*ST[3]*ST[1]*ST[1]/2*ST[19]*ST[20];
B[3] := -ST[14]/ST[22]*ST[3]*ST[1]*ST[1]/2*ST[19]*ST[20];
B[4] := -9.8/ST[1]*COS(alfa);
B[4] := 0.05;
B[5] := -ST[15]/ST[23]*ST[3]*ST[1]*ST[1]/2*ST[19]*ST[20];
B[6] := -ST[16]/ST[23]*ST[3]*ST[1]/4*ST[19]*ST[20]*ST[20];
B[7] := SIN(alfa);
B[7] := 0.10;
Edit1.Text:= FloatToStrF(A[1],ffGeneral,5,3);
Edit2.Text:= FloatToStrF(A[2],ffGeneral,5,3);
Edit3.Text:= FloatToStrF(A[3],ffGeneral,5,3);
Edit4.Text:= FloatToStrF(A[4],ffGeneral,5,3);
Edit5.Text:= FloatToStrF(A[5],ffGeneral,5,3);
Edit6.Text:= FloatToStrF(A[6],ffGeneral,5,3);
Edit7.Text:= FloatToStrF(A[7],ffGeneral,5,3);
Edit8.Text:= FloatToStrF(B[1],ffGeneral,5,3);
Edit9.Text:= FloatToStrF(B[2],ffGeneral,5,3);
Edit10.Text:= FloatToStrF(B[3],ffGeneral,5,3);
Edit11.Text:= FloatToStrF(B[4],ffGeneral,5,3);
Edit12.Text:= FloatToStrF(B[5],ffGeneral,5,3);
Edit13.Text:= FloatToStrF(B[6],ffGeneral,5,3);
Edit14.Text:= FloatToStrF(B[7],ffGeneral,5,3);
Edit15.Text:= FloatToStrF(C[6],ffGeneral,5,3);
StringGrid1.Cells[0,0]:= 'T';
StringGrid1.Cells[1,0]:= 'De';
StringGrid1.Cells[2,0]:= 'Dn';
StringGrid1.Cells[3,0]:= 'Wx';
StringGrid1.Cells[4,0]:= 'Wy';
StringGrid1.Cells[5,0]:= 'betta';
StringGrid1.Cells[6,0]:= 'gama';
StringGrid1.Cells[7,0]:= 'psi';
StringGrid1.Cells[8,0]:= 'z';
i:=1;
while i<=601 do
begin
if i>=16 then dn:=0;
count := count + DT;
X[1] := Y[2];
X[2] := -A[1]*X[1]-B[6]*X[3]-A[2]*Y[5]-A[3]*DN-B[5]*DE;
X[3] := Y[4];
X[4] := -A[6]*X[1]-B[1]*X[3]-B[2]*Y[5]-A[5]*DN-B[3]*DE;
X[5] := B[7]*X[3]+X[1]+B[4]*Y[3]-A[4]*Y[5]-A[7]*DN;
X[6] := -C[6]*(Y[1]-Y[5]);
j:=1;
while j<=6 do
begin
Y[J]:=Y[J]+X[J]*DT;
j:=j+1;
end;
StringGrid1.Cells[0,i] := FloatToStr(count);
StringGrid1.Cells[1,i] := FloatToStr(de);
StringGrid1.Cells[2,i] := FloatToStr(dn);
StringGrid1.Cells[3,i] := FloatToStr(Y[4]);
StringGrid1.Cells[4,i] := FloatToStr(Y[2]);
StringGrid1.Cells[5,i] := FloatToStr(Y[5]);
StringGrid1.Cells[6,i] := FloatToStr(Y[3]);
StringGrid1.Cells[7,i] := FloatToStr(Y[1]);
StringGrid1.Cells[8,i] := FloatToStr(Y[6]);
StringGrid1.RowCount:=StringGrid1.RowCount+1;
Series1.AddXY(count,Y[1]);
Series2.AddXY(count,Y[5]);
Series3.AddXY(count,Y[3]);
Series4.AddXY(count,Y[6]);
i:=i+1;
end;
StringGrid1.RowCount:=StringGrid1.RowCount-1;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.Close;
end;
end.