Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2РГР_моделирование.docx
Скачиваний:
3
Добавлен:
14.09.2019
Размер:
1.54 Mб
Скачать
  1. Підготовка існуючих даних.

Площа крила

S

201.45 м2

Розмах крила

L

37.55 м

Польотна вага

G

73000 кг

Момент інерції

Ix

170000 кг м с2

Момент інерції

Iy

800000 кг м с2

Геометричні і масово-інерційні характеристики літака ТУ-154-Б.

Параметри атмосфери і аеродинамічні характеристики літака

  1. Написання та налагодження програми.

Реалізація моделі відбувалася за допомогою середовища розробки 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.