Написання та налагодження програми.
Вступ
Завданням даної розрахунково-графічної роботи є розробка та проведення дослідження цифрової моделі руху літака, яким описується рівнянням «Рух у боковій площині в земній системі координат»
1. Опис фізичного процесу та інформаційна модель.
Провести дослідження двох методів оптимізації и порівняти їх результати на прикладі одного масиву чисел.
Математична модель
Лінеалізовані диференціальні рівняння руху літака в боковій площині з постійною швидкістю і кутом атаки мають вигляд:
,
де
– кут рискання.
g- кут крену (кут між віссю ОУ зв’язаної СК і вертикальною площиною, що проходить через повздовжню вісь ПС);
b – кут ковзання (кут між площиною симетрії ПС і напрямком повітряного потоку, що набігає);
е – кут відхилення елеронів.
н – кут відхилення руля напрямку.
3. Обґрунтування алгоритму цифрової моделі.
Елерони (рулі крену) розташовані на кінцевій частині крила. Якщо лівий елерон відхиляється вниз, то правий вгору, підйомна сила лівої половини крила зростає, а правою зменшується. У результаті виникає момент, літак крениться.
Швидкий рух, що складається з рухів крену і рискання, розвивається в перші кілька секунд після початку дії збурень. Літак при цьому порівняно швидко обертається навколо осей OX і OY, в той час як його центр мас не встигає помітно переміститися вздовж осі OZ.
Виділення швидкого бічного обурення руху літака можливо, якщо кути атаки, тангажу і нахилу траєкторії в не обуреному русі малі, траєкторія польоту під час швидкого руху незмінна, а зміни моменту крену при відхиленні керма напряму - незначно.
Швидкість польоту і кут атаки, визначається з умови рівності в горизонтальному польоті підйомної сили і ваги літака є постійними за величиною.
Для вирішення диференціальних рівнянь бічного руху літака рекомендується використовувати метод численного інтегрування Ейлера, як найбільш простого і дозволяю чого отримувати результат з достатньою точністю, використовуючи рекурентне співвідношення:
Yi+1= Yi + it,
де t – крок інтегрування.
4. Підготовка існуючих даних.
Площа крила | 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.
Результати моделювання.
Початковий вигляд програми при запуску:
При виборі характеристики: руль напрямку і натиснення «Розрахувати» на вкладці «Розрахунки» бачимо наступне:
На вкладці «Таблиця» бачимо динамічні характеристики польоту.
Далі йдуть вкладки з графіками для кутів рискання, ковзання, крену та бічного відхилення для руля напрямку:
Змінивши характеристику на «Елерони» і натиснувши «Розрахувати» бачимо, що графіки змінили свій вигляд:
Висновки
Виконавши розрахунково-графічну роботу ми навчились будувати цифрову модель руху літака в бічній площині в земній системі координат а також переконались , що літак являється стійким і керованим у бічному русі.
Список використаної літератури
1. АЛЬБОМ аэродинамических характеристик самолета Ту-154Б. – М.: ГосНИИГА, 1983, – 89 с.
2. Аэромеханика самолета (под ред. Бочкарева А.Ф.). – М.: Машиностроение, 1977, – 416 с.
3. Лигум Т.И. Аэродинамика самолета Ту-154Б. – М.: Транспорт,1985. – 263 с.
4. Мудров А.Е. Численные методы для ПЭВМ на языках Бейсик, Фортран и Паскаль. – Томск: МП «Раско», 1991, – 272 с.
5. Никитин Г.А., Баканов Е.А. Основы авиации: Учебник для вузов гражданской авиации. – 2-е изд., перераб. и доп. – М.: Транспорт, 1984. – 261 с.
6. Самарский А.А., Гулин А.В. Численные методы: Учеб. пособие для вузов. – М.: Наука. Гл. ред. физ-мат. лит. , 1989. – 432 с.
7. Михалев И.А. и др. Системма автоматического управления полетом. М. Машиностроение, 1971. 464с.