Zapis TAWS-37
Zapis TAWS-37
gosc8123 gosc8123
2356
BLOG

Trajektoria TAWS-37-38

gosc8123 gosc8123 Nauka Obserwuj temat Obserwuj notkę 27

 Wyznaczenie trajektorii pionowej lotu TU-154M pomiędzy TAWS-37 i TAWS-38

Zapis TAWS-37

Dane z zapisu zdarzeń TAWS 37 i 38, oraz wykresu przeciążeń

(Baro Altidue)  Wysokość Baryczna : (752.0 ft * 0.3048 m/ft) – 168 m = 61,20 m (nad poziom lotniska)

 (Sink Rate)  Prędkość opadania   : -1505 ft/min * (0,3048 m/ft)  / 60 =  -7.64 m/s

Zapis TAWS-38

(Baro Altidue ) Wysokość  Baryczna :  (671.0 ft * 0.3048 m/ft) – 168m = 36.52 m (nad poziom lotniska)

(Sink rate) Prędkość opadania   394.35 ft/min * (0.3048 m/ft) / 60 =  2 m/s

Różnica czasu pomiędzy TAWS-37 i TAWS-38  :   06:40:59 – 06:40:43 = 16s 

 Przeliczniki :   1 ft = 0.3048 m,     1 kts (węzeł na sekundę) = 0.514 m/s

  skąd się wzięła zmiana wysokości barycznej

Między TAWS-34 a TAWS-35 został zresetowany (do ciśnienia standardowego) wysokościomierz baryczny podłączony do FMS, co daje poprawkę 0 168 metrów do następnych wskazań.

 

 Poniżej przedstawione są wykresy przeciążeń pionowych i sposób zdjęcia wartości do analiz. Niebieskie linie oznaczają czas zmiany przeciążenia. Na podstawie tych wykresów została stworzona dwu wymiarowa tablica  : czas zmiany przeciążenia, wartość przeciążenia. TAWS -37 jest oznaczony jako czas „0” , TAWS -38 ma być osiągnięty po 16 sekundach lotu.  Prędkość  pozioma samolotu nie ma wielkiego znaczenia dla tej uproszczonej symulacji, wiec w sposób uproszczony została przyjęta prędkość pozioma 79.43 m/s, Ale jak ktoś chce można stworzyć podobną tablice zmiany prędkości poziomej i użyć tej samej koncepcji (procedury) do odczytu zmian prędkości w funkcji czasu.  

przeciążenia pionowe 1

Przeciążenia pionowe 2

 pr_pion[0][0] = -5.571;  pr_pion[0][1]=1.040;

  pr_pion[1][0] = -4.446;  pr_pion[1][1]=1.094;

  pr_pion[2][0] = -4.196;  pr_pion[2][1]=1.067;

  pr_pion[3][0] = -3.196;  pr_pion[3][1]=1.040;

  pr_pion[4][0] = -3.053;  pr_pion[4][1]=1;

  pr_pion[5][0] = -2.071;  pr_pion[5][1]=1.040;

  pr_pion[6][0] = -1.303;  pr_pion[6][1]=0.959;

  pr_pion[7][0] = -1.178;  pr_pion[7][1]=1;

  pr_pion[8][0] = -0.589;  pr_pion[8][1]=0.959;

  pr_pion[9][0] = -0.446;  pr_pion[9][1]=1.04;

 //-------------------------------------------------

  pr_pion[10][0] = -0.321; pr_pion[10][1]=1;

  pr_pion[11][0] = 0.428;  pr_pion[11][1]=1.04;

  pr_pion[12][0] = 0.821;  pr_pion[12][1]=1.06;

  pr_pion[13][0] = 3.839;  pr_pion[13][1]=1.04;

  pr_pion[14][0] = 4.464;  pr_pion[14][1]=1.05;

  pr_pion[15][0] = 4.589;  pr_pion[15][1]=1.04;

  pr_pion[16][0] = 5.714;  pr_pion[16][1]=1;

  pr_pion[17][0] = 6.571;  pr_pion[17][1]=1.04;

  pr_pion[18][0] = 6.714;  pr_pion[18][1]=1.12;

  pr_pion[19][0] = 6.964;  pr_pion[19][1]=1.05;

  pr_pion[20][0] = 7.446;  pr_pion[20][1]=1.12;

  pr_pion[21][0] = 8.464;  pr_pion[21][1]=1.09;

  pr_pion[22][0] = 8.821;  pr_pion[22][1]=1.06;

  pr_pion[23][0] = 9.589;  pr_pion[23][1]=1.16;

  pr_pion[24][0] = 9.732;  pr_pion[24][1]=1.18;

  pr_pion[25][0] = 9.857;  pr_pion[25][1]=1.12;

  pr_pion[26][0] = 10.464; pr_pion[26][1]=1.18;

  pr_pion[27][0] = 11.714; pr_pion[27][1]=1.27;

  pr_pion[28][0] = 12.482; pr_pion[28][1]=1.32;

  pr_pion[29][0] = 12.607; pr_pion[29][1]=1.33;

  pr_pion[30][0] = 12.821; pr_pion[30][1]=1.36;

  pr_pion[31][0] = 13.839; pr_pion[31][1]=0.86;

  pr_pion[32][0] = 14.678; pr_pion[32][1]=1.22;

  pr_pion[33][0] = 14.964; pr_pion[33][1]=1.36;

  pr_pion[34][0] = 15.482; pr_pion[34][1]=1.22;

  pr_pion[35][0] = 15.607; pr_pion[35][1]=0.62;

  pr_pion[36][0] = 15.714; pr_pion[36][1]=1.16;

  pr_pion[37][0] = 15.875; pr_pion[37][1]=0.55;

  pr_pion[38][0] = 16.000; pr_pion[38][1]=1;

  pr_pion[39][0] = 16.482; pr_pion[39][1]=0.792;

  pr_pion[40][0] = 16.607; pr_pion[40][1]=0.616;

  pr_pion[41][0] = 16.678; pr_pion[41][1]=0.552;

  pr_pion[42][0] = 16.857; pr_pion[42][1]=0.488;

  pr_pion[43][0] = 16.982; pr_pion[43][1]=0.9821;

  pr_pion[44][0] = 17.089; pr_pion[44][1]=0.392;

  pr_pion[45][0] = 17.232; pr_pion[45][1]=0.376;

  pr_pion[46][0] = 17.339; pr_pion[46][1]=0.344;

  pr_pion[47][0] = 17.482; pr_pion[47][1]=0.232;

  pr_pion[48][0] = 17.625; pr_pion[48][1]=0.184;

  pr_pion[49][0] = 17.732; pr_pion[49][1]=0.232;

  pr_pion[50][0] = 17.875; pr_pion[40][1]=0.296;

  pr_pion[51][0] = 17.982; pr_pion[51][1]=0.488;

  pr_pion[52][0] = 18.107; pr_pion[52][1]=0.264;

  pr_pion[53][0] = 18.232; pr_pion[53][1]=0.440;

  pr_pion[54][0] = 18.357; pr_pion[54][1]=0.296;

 


Mamy dane wejściowe : wysokość początkową, prędkość wznoszenia początkową, zadaną (jakąś z lekka paraboliczną) trajektorie wyznaczoną jednoznacznie przez  zarejestrowane wartości przeciążeń, oraz wysokość końcowa i prędkość wznoszenia końcową.

Pojawia się ciekawe zagadnienie : nie jest oczywiste że dla zadanych warunków początkowych i zadanych przeciążeń pionowych, trajektoria lotu przetnie punkt końcowy i na dodatek z taką a nie inna prędkością wznoszenia. Czyli mamy podwójną weryfikacje trajektorii : osiągniecie punków  : początek – koniec, osiągniecie zadanej prędkości wznoszenia. I nie jest zbyt oczywiste czy zdeterminowana (przez zarejestrowane przeciążenia) trajektoria spełni te wymagania, a jeżeli tak to przy jakich warunkach ?

Z pobieżnych analiz wynika że samolot nie uderzy w „sławną brzozę,”  wiec można zapomnieć o „sławnej beczce”, więc upraszcza się nam bardzo symulacja (tylko przeciążenia pionowe), a program bardzo krótki (i banalny)

Funkcja która w zależności punktu czasu wyznacza przeciążenie na podstawie zadeklarowanej tablicy pr_pion :

//--------------wyznacz przeciążenie pionowe w funkcji do czasu -----------

float przeciazenie(float t )

{

 float pr=1;

 int z=0, i=0;     //z - zatrzask spełnienie warunku

 do {

  if (t<pr_pion[i][0])

 {

             z=1;

             if (i>0) pr=pr_pion[i-1][1];

             else pr=pr_pion[i][0];

 };

  i++;

 } while ((i<=Max_p)&&(z!=1));

  if (z==0) {  pr=pr_pion[Max_p-1][1];   };

 return pr;

};

Dzięki tej funkcji jesteśmy nie zależni od częstotliwości próbkowania (zadeklarowanej  ilości próbek iteracji)

 

//=========Glowna===petla===START=========================================

  for (i = 0; i < Max_pr; i++)

 {

  //--czas--------------

  tab_p[i+1].czas = tab_p[i].czas + delta_t;                //upływ czasy jednostajny

 

  tab_p[i+1].Vx = tab_p[i].Vx;                                       //--prędkość-pozioma--

  tab_p[i+1].Lx = tab_p[i].Lx - tab_p[i].Vx * delta_t;   //--droga-pozioma-----

 

  //przyspieszenie--pionowe--w : m/s

  tab_p[i].Pz =   przeciazenie(tab_p[i].czas + przesuniecie_t);             //  przeciążenie próbki

  tab_p[i].Az = ( przeciazenie(tab_p[i].czas + przesuniecie_t) - 1) * g; // przyspieszenie próbki

                                                                                       

  tab_p[i+1].Vz = tab_p[i].Vz + tab_p[i].Az * delta_t;     //prędkość pionowa wznoszenia

  tab_p[i+1].Lz = tab_p[i].Lz + tab_p[i].Vz * delta_t;      // wysokość pionowa

 

}; //==========KONIEC==głównej===pętli==========================


  

Jak widać program jest nadzwyczaj prosty, (całkowanie iteracyjne), należy tylko zwrócić uwagę na wywołanie funkcji „przeciążenie(t + przesunięcie_t) )” jest dodany dodatkowy parametr : przesunięcie czasowe, coś jak suwak czasu, do przodu , do tyłu. Dlaczego ten suwak czasu został wprowadzony ? Po pierwszym „odpaleniu”  programu dla przesunięcia czasowego =0, końcowa trajektoria (po 16s) kończyła się na wysokości 25 metrów nad poziom lotniska, i prędkością wznoszenia 7,25 m/s. Można by podkręcić wartości odczytanych przeciążeń do góry lub do dołu, ale to droga  „do nigdzie”  Dlaczego ? jak podkręcimy do góry to owszem wysokość wzrośnie, ale i wzrośnie prędkość wznoszenia która i tak już jest cztery razy za duża, no to został nam przesuwanie w poziomie, to przodu do tyłu (jak soczewkę do obrazu) zgrają się nam te parametry ?  czy nie ?   „Czy wyostrzy ? ”

 

 

 

Przesuniecie

Czasowe w „s”

Końcowa prędkość

Wznoszenia Vz

w „m/s”

W punkcie TAWS-38

Końcowa wysokość Lz w „m” w punkcie

TAWS-38

wysokość

Nad lotniskiem w „m” w miejscu brzozy i prędkość wznoszenia

(w nawiasie)

Minimalna wysokość nad lotniskiem w „m”

Odległość od pasa dla minimalnej wysokości w „m”

Czas osiągniecia minimalnej wysokości w „s”

-0.8

6.67

13.24

0.5    (3.22 m/s)

-1.4

952

12.36

-0.7

6.94

14.58

1.62  (3.54 m/s)

-0.63

960

12.26

-0.6

7.31

16.15

2.74  (3.8 m/s)

0.12

968

12.16

-0.4

7.85

19.08

5.62  (4.55 m/s)

2.09

986

11.94

-0.2

7.59

22.39

7.72  (5.17 m/s)

3.28

1000

11.76

0.0

7.25

25.6

10.14 (5.76 m/s)

4.73

1016

11.45

+0.1

7.2

26.421

11.33 (6.07 m/s)

5.38

1022

11.48

+0.2

7.19

28.08

12.81 (6.41 m/s)

6.2

1031

11.37

+0.3

7.19

29.86

14.36 (6.31 m/s)

7.08

1040

11.26

+0.4

7.194

31.117

15.66 (6.12 m/s)

7.79

1047

11.16

+0.5

7.15

32.10

16.56 (5.67 m/s)

8.179

1053

11.04

+0.6

6.95

33.19

17.54 (5.83 m/s)

8.62

1059

11.00

+0.7

6.39

34.17

18.49 (5.71 m/s)

9.06

1066

10.92

+0.8

5.94

34.66

19.23 (5.5 m/s)

9.39

1073

10.848

+0.9

5.42

35.23

19.76 (5.32 m/s)

9.53

1078

10.8

+1.0

5.02

35.83

19.71 (5.0 m/s)

9.77

1083

10.72

+1.1

4.7

36.36

20.26 (5.07 m/s)

10.039

1089

10.64

+1.2

4.29

36.50

20.81 (5.22 m/s)

10.24

1096

10.55

+1.3

3.6

36.69

22.29 (5.5 m/s)

10.43

1102

10.47

+1.4

3.01

37,22

22.87 (5.77 m/s)

10.63

1108

10.4

+1.5

2.34

37.37

22.59 (5.9 m/s)

10.84

1115

10.32

+1.6

1.609

37.49

24.14 (6.31 m/s)

11.052

1121

10.24

 

Na podstawie dość prostego programu symulacyjnego mamy następujące wyniki zamieszczone w tabeli. Zaznaczyłem dwie linie na kolor żółty, pierwsza linia dla przesunięcia -0.7s, w sposób częściowy mogła by odpowiadać hipotezie z oficjalnego raportu (dlatego została wyróżniona). Z grubsza zgadza się wysokość uderzenia w brzozę : 5.5 metra (podstawa brzozy jest -4 metry nad poziom lotniska) ale inne parametry już się nie zgadzają, dlatego należy je omówić. Niżej przedstawiona jest tabela z Raportu Milera o wysokościach i pościnanych przeszkodach.   Wiersz 5 tabeli poniżej określa w miarę podobną wysokość (błąd do przyjęcia) ścięcia brzózki i skrzydła., W symulacji powyżej gdzie jest założenie że samolot leci dalej poziomo, po 2,5 s lotu co odpowiada około 200 metrów lotu samolot jest się wstanie wzbić do wysokości 15,5 metra, a w tabeli poniżej po około (855m – 671m= 184m) wiersz 5 i 11. Robiąc beczkę do kąta -120  stopni jest się w stanie wzbić do 21 metrów. Wiadomym jest nawet bez symulacji że powyżej kąta przechyłu 30 stopni na tej niewielkiej prędkości tej klasy samolot to może co najwyżej spadać. 

Tabela kątaktu z przeszkodami terenowymi

Pełna symulację obrotu samolotu wykonałem. Aby wykonać manewr beczki i nie zaryć kikutem skrzydła w grunt za brzozą (pochylenie terenu do góry 2%) to w miejscu brzozy prędkość wznoszenia samolotu musiała by być większa od 9 m/s. Co to oznacza ? Wiersz 2,  to jest 1 sekunda lotu do tyłu do linii 5 (sławna brzoza) czyli od wysokości samolotu : 1.1m odejmijmy 9 metrów = -8 metrów. Tyle wynosi przeniżenie terenu w punkcie 2, a to oznacza szorowanie skrzydłami o ziemie, ale biorąc pod uwagę ze wysunięte podwozie ma wysokość od 1.5 metra do 2 metrów, to nie oznaczało by to szorowania tylko początek lądowania w tym miejscu, inaczej ujmując : brzoza musiała by rosnąc na skarpie, albo dla tego terenu samolot musiałby wylecieć z podziemnego tunelu aby dla zadanych parametrów (wznoszenie powyżej 9 m/s) aby beczkę wykonać. Przy założeniu że na sławnej brzozie samolot skrzydło zetnie co jak dla mnie jest niemożliwe ale ten tekst jest o wyznaczeniu trajektorii 

Z uproszczonej symulacji powyższej mamy w miejscu brzozy prędkość wznoszenia  3.54 m/s dla pełnej symulacji (z uwzględnieniem beczki) samolot  po około 3.5 sekundach lotu samolot przy kącie 102 stopnie zaryje kikutem skrzydła w ziemie, i to przy niemym założeniu że siła ciągu samolotu (silniki) jest przyłożona w tym samym punkcie co główna siła tarcia (czyli silniki umieszczone na skrzydłach). Wiadomym jest że silniki w TU-154M są umieszczone z tyłu, co powoduje że przy przechyle powyżej 20 stopni na tych niewielkich prędkościach samolot dużo szybciej będzie leciał w dół, niż to wynika z symulacji która nie uwzględnia momentu wykręcania, oddalenia wektora głównej siły tarcia (krawędzie skrzydeł) od wektora siły ciągu (silniki na ogonie samolotu). Oznacza to że uwzględniając spore rozsunięcie wektora siły ciągu od wektora siły tarcia prędkość wznoszenia przy brzozie musiała by być dużo- dużo większa niż wyliczone 9 m/s, Ale tego już nie symulowałem (nie liczyłem) bo nie ma sensu (szkoda czasu) . Tak wiec pierwszy żółty wiersz (2) z tabeli pierwszej neguje totalnie to co jest opisane w oficjalnym raporcie.

Zajmijmy się drugim bardziej żółtym wierszem  (21) z pierwszej tabeli,

Zgadza się prawie prędkość wznoszenia i wysokość ( o dziwo ?  „wyostrzyło”  ? jednak )  prędkość wznoszenia : błąd 17 % , wysokość : błąd  2 %, to całkiem niezły wynik.

 

Ten sam punktu ale z korektą w dół  : -0.1% odczytu przeciążenia z wykresu

Czyli współczynnik korygujący kor=0.999

Przesuniecie

Czasowe

Końcowa prędkość

Wznoszenia Vz

W punkcie TAWS-38

Końcowa wysokość Lz w punkcie

TAWS-38

wysokość

Nad lotniskiem w miejscu brzozy i prędkość wznoszenia

(w nawiasie)

Minimalna wysokość nad lotniskiem w m

Odległość od pasa dla minimalnej wysokości

Czas minimalnej wysokości w s

+1.5

2.19

36.12

22.59 (5.9 /s)

10.33

1111

10.36

 

Błąd prędkości wznoszenia +9,5%, Błąd wysokości -1% ,

Wykres przeciążeń pionowych  w oficjalnym raporcie niestety jest jakościowo badziewny,  (czy specjalnie ?) ponadto miernik przeciążeń pionowych też ma jakąś dokładność pomiaru, (błąd jest do oszacowanie ale trzeba go znać). Myślę że w granicach przesunięcia czasu od +1.4 do +1.6 może oscylować poprawny wynik.

Dlatego że prędkość wznoszenia od minimalnej wysokości narasta do czasu około 16 sekund (nie uwzględniając przesunięcia czasu (patrz macierz danych zdjęta z wykresu)), Co się dziej po 16 sekundach  z przeciążeniem ?, staje się dużo mniejsza od wartości  1g . Co to oznacza ? to oznacza że samolot gwałtownie wytraca  prędkość wznoszenia, i przesuwając „suwakiem czasu”  wchodzimy w fazę tego wytracania prędkości wznoszenia.

Bo jest czymś dziwnym  aby osiągając sporą prędkość wznoszenia 7.18 m/s , „ni z tego ni z owego”  samolot zaczął tracić tę prędkość wznoszenia, Świadczy to o dość banalnej przyczynie takiego stanu rzeczy  : silniki straciły ciąg , i używając uproszczonej przenośni  :  rzuconego kamienia w górę, nic już nie pcha do góry no to wytraca prędkość wznoszenia i za chwilę zacznie spadać.  

Został dwie rzeczy do zrobienia  : zobrazować końcówkę przesuniętego  wykresu przeciążeń  i  zobrazować trajektorię pionową, spełniająca kryteria TAWS-37 –

 TAWS 38.

przeciążenia normalne

Końcowy fragment oryginalnego wykresu przeciążeń pionowych

przeciążenie przesunięte o 1.5s

 W miejscu sławnej brzozy na wysokości 23.49 m nad płytą lotniska występują 2 piki przeciążeń raczej nie naturalne, a po 1 sekundzie lotu, od brzozy (15 sekunda) przeciążenia są już tak małe, że świadczy to o nie działaniu silników (utrata ciągu)

Dłuższe obniżenie przeciążenia po 12 sekundzie (0.88g) jeszcze przed brzozą trudno stwierdzić czy jest naturalne, Ale być może być jeszcze naturalne, (np. odpadnięcie delikatne, aby nie przeciągnąć) prędkość wznoszenia w tej fazie około 5.7 m/s  

 

  Trajektoria oficjalna i wyliczona (niebieska linia)

Niebieska linia oznacza trajektorie lotu spełniającą następujące kryteria :

- przecięcie w przestrzenie punktów TAWS-37 i TAWS-38

- prędkości opadania wznoszenia dla punktów TAWS-37  i TAWS-38

- Wykres przeciążeń pionowych zdjęty z oficjalnego wykresu Raportu Milera i

   przesunięty w czasie o +1.5 sekundy

Jak widać trajektoria lotu nie zeszła poniżej 10 metrów nad poziom lotniska w miejscu gdzie ziemia jest poniżej lotniska  -20  do -30 metrów, więc o kontakcie z przeszkodami naziemnymi mowy być nie może, może za radiolatarnią BRL, wylot spalin mógł coś na ziemi uszkodzić. Jeden świadek musiał trzymać się samochodu aby go nie zdmuchnęło, A co na wysokości koron (czubków) drzew ? trochę ich tam było.

 

Czerwona linia oznacza oficjalną trajektorie lotu z Raportu Milera. Co się rzuca w oczy nawet bez żadnych obliczeń i symulacji ? W punkcie TAWS-37 prędkość opadania wynosi -7.6 m/s, a na oficjalnej trajektorii samolot się nawet z lekka wznosi

A przed punktem TAWS 37  opada, nawet przesuniecie o 1.5 s nie jest wystarczające aby to nadrobić, dlaczego ?

Patrz wynikowa tabela pierwsza : do wyrównania prędkości opadania z -7.6 m/s do prędkości 0 m/s (czyli najniższa wysokość osiągnięta prze samolot, względem lotniska)  potrzeba około 10-11 sekund , a w raporcie to się dzieje w czasie mniejszym niż 1 sekunda ???.  no cóż takich „wałków” w raporcie jest więcej…

 

Pomimo tego że na oficjalnej mapce z raportu punk TAWS – 38 jest wykasowany (brak) to zielona linia łącząca poszczególne TAWS-y dochodzi poprawnie do niby nie istniejącego punktu TAWS-38.

 

 

Istnieje również problem przesunięcia przeciążeń poprzecznych, ale brak mi pomysłu jak go synchronizować z wykresem przeciążeń pionowych

 

 

 

Może tak ? synchronizacja  w czasie zmian przeciążeń świadcząca o gibnięciu ?

Gwałtowne gibnięcie powinno być zauważone również przez miernik przeciążeń pionowych.  Jeżeli jest to sensowne (nie wiem) to wynikało by z tego że pierwsze gibnięcie miał miejsce na 1 sekundę wcześniej od przelotu nad sławną brzozą  (czyli około 70-80 metrów przed sławną brzozą) , Ale do tego trzeba zanalizować i inne parametry, problem jest taki że jeżeli przesunęli wykres przeciążeń pionowych  o +1.5 sekundy , to stawia wiarygodność oficjalnego raportu w spore wątpliwości. Więc wszelkie dane trzeba „cedzić przez dobre sito”  co proste nie jest. Myślę że fragment tego „sita” dało się sensownie odtworzyć jeśli chodzi o TAWS-37 i TAWS-38

 

 

Więc do tej dyskusji o trajektorii dodaje swoje przemyślenia do oceny.

 

 

Co bym jeszcze dodał :

- Okolice TAWS-37 prędkość opadania -7.6 m/s co się zgadza mniej więcej z oficjalną trajektorią przed tym punktem… Za punktem TAWS-37 (około1930m przed początkiem pasa) oficjalna trajektoria idzie w górę, więc mamy z nagłą zmiana prędkości pionowej od -7,6 m/s do około +2 m/s w czasie około 0,2s było by to możliwe przy przeciążeniach rzędu 5g a rejestrowane w tym odcinku są przeciążenia w okolicach 1,02g… więc taka nagła zmiana prędkości opadania nie możliwa…

 

- odległość od 1170m w przybliżeni najniższy punkt, rejestrowane przeciążenia to 1,06g co daje przyspieszenie w górę +06 m/s_kwadrat, a w odległości 1170m (od progu) już 1,16g co daje 1,56m/s_kwadrat

W odległości od 1170m do 1000m (od pasa) samolot leci z lekka w dół lub poziomo… co przy dodatnim przyśpieszeniu jest nie możliwe

Od odległości 1170 do 1000m (na odcinku 170 metrów) samolot powinien zwiększyć wysokość o 3.5 metra, w oficjalnej mapce podejścia  tak się nie dzieje….

A za punktem odległość od pasa 1100m samolot jakby idzie w dół, przy dodatnim przyspieszeniu dwa minima funkcji parabolicznej :

Z = a *x_kwadrat /2

jest to niemożliwe…

 

Zakładam że mirnik przeciążeń pionowych jest zamocowany na żyroskopie czyli, stały wzgledem ziemi (horyzontu) a nie samolotu, czy tak jest  ? tego nie wiem,

Gdyby było inaczej (na stałe wzgledem samolotu)do brzozy kąt podniesienia samolotu nie jest duży,  i nie ma to dużego wpływy na wyniki, za brzozą ten kat rośnie i miało by to trochę wpływ na wyniki końcowe,

więc pytanie jak ten miernik jest zamocowany ?

 

 

Poniżej listing prostego programu : TAWS-37-TAWS-38 :

 

/---------------TAWS-37-38---V-1.0-----------------------------------------------------------

//---------------Licencja--Open-Suroce------------------------------------------------------

//---------------Mozna-kopiować-poprawiać-testować-itp.-i-podawać--dalej-------

 

#include <vcl.h>

#include <math.h>

#include <iostream.h>

#include <fstream.h>

#include "unit_strings.h"

 

#pragma hdrstop

 

//---------------------------------------------------------------------------

#pragma argsused

 

fstream zb_wyniki;       //zbior tekstowy wynikow

 

const Max_p = 55;        // maksymalna ilosc probek

float pr_pion[Max_p][2];

 

//---------definicja zmian przeciazen z wykresu

def_przeciazenie_p()

{

  pr_pion[0][0] = -5.571;  pr_pion[0][1]=1.040;

  pr_pion[1][0] = -4.446;  pr_pion[1][1]=1.094;

  pr_pion[2][0] = -4.196;  pr_pion[2][1]=1.067;

  pr_pion[3][0] = -3.196;  pr_pion[3][1]=1.040;

  pr_pion[4][0] = -3.053;  pr_pion[4][1]=1;

  pr_pion[5][0] = -2.071;  pr_pion[5][1]=1.040;

  pr_pion[6][0] = -1.303;  pr_pion[6][1]=0.959;

  pr_pion[7][0] = -1.178;  pr_pion[7][1]=1;

  pr_pion[8][0] = -0.589;  pr_pion[8][1]=0.959;

  pr_pion[9][0] = -0.446;  pr_pion[9][1]=1.04;

 //-------------------------------------------------

  pr_pion[10][0] = -0.321; pr_pion[10][1]=1;

  pr_pion[11][0] = 0.428;  pr_pion[11][1]=1.04;

  pr_pion[12][0] = 0.821;  pr_pion[12][1]=1.06;

  pr_pion[13][0] = 3.839;  pr_pion[13][1]=1.04;

  pr_pion[14][0] = 4.464;  pr_pion[14][1]=1.05;

  pr_pion[15][0] = 4.589;  pr_pion[15][1]=1.04;

  pr_pion[16][0] = 5.714;  pr_pion[16][1]=1;

  pr_pion[17][0] = 6.571;  pr_pion[17][1]=1.04;

  pr_pion[18][0] = 6.714;  pr_pion[18][1]=1.12;

  pr_pion[19][0] = 6.964;  pr_pion[19][1]=1.05;

  pr_pion[20][0] = 7.446;  pr_pion[20][1]=1.12;

  pr_pion[21][0] = 8.464;  pr_pion[21][1]=1.09;

  pr_pion[22][0] = 8.821;  pr_pion[22][1]=1.06;

  pr_pion[23][0] = 9.589;  pr_pion[23][1]=1.16;

  pr_pion[24][0] = 9.732;  pr_pion[24][1]=1.18;

  pr_pion[25][0] = 9.857;  pr_pion[25][1]=1.12;

  pr_pion[26][0] = 10.464; pr_pion[26][1]=1.18;

  pr_pion[27][0] = 11.714; pr_pion[27][1]=1.27;

  pr_pion[28][0] = 12.482; pr_pion[28][1]=1.32;

  pr_pion[29][0] = 12.607; pr_pion[29][1]=1.33;

  pr_pion[30][0] = 12.821; pr_pion[30][1]=1.36;

  pr_pion[31][0] = 13.839; pr_pion[31][1]=0.86;

  pr_pion[32][0] = 14.678; pr_pion[32][1]=1.22;

  pr_pion[33][0] = 14.964; pr_pion[33][1]=1.36;

  pr_pion[34][0] = 15.482; pr_pion[34][1]=1.22;

  pr_pion[35][0] = 15.607; pr_pion[35][1]=0.62;

  pr_pion[36][0] = 15.714; pr_pion[36][1]=1.16;

  pr_pion[37][0] = 15.875; pr_pion[37][1]=0.55;

  pr_pion[38][0] = 16.000; pr_pion[38][1]=1;

  pr_pion[39][0] = 16.482; pr_pion[39][1]=0.792;

  pr_pion[40][0] = 16.607; pr_pion[40][1]=0.616;

  pr_pion[41][0] = 16.678; pr_pion[41][1]=0.552;

  pr_pion[42][0] = 16.857; pr_pion[42][1]=0.488;

  pr_pion[43][0] = 16.982; pr_pion[43][1]=0.9821;

  pr_pion[44][0] = 17.089; pr_pion[44][1]=0.392;

  pr_pion[45][0] = 17.232; pr_pion[45][1]=0.376;

  pr_pion[46][0] = 17.339; pr_pion[46][1]=0.344;

  pr_pion[47][0] = 17.482; pr_pion[47][1]=0.232;

  pr_pion[48][0] = 17.625; pr_pion[48][1]=0.184;

  pr_pion[49][0] = 17.732; pr_pion[49][1]=0.232;

  pr_pion[50][0] = 17.875; pr_pion[40][1]=0.296;

  pr_pion[51][0] = 17.982; pr_pion[51][1]=0.488;

  pr_pion[52][0] = 18.107; pr_pion[52][1]=0.264;

  pr_pion[53][0] = 18.232; pr_pion[53][1]=0.440;

  pr_pion[54][0] = 18.357; pr_pion[54][1]=0.296;

 

 

};

 

//--------------wyznacz-przeciazenie-pionowe-w-funkcj-do-czasu-----------

float przeciazenie(float t )

{

 float pr=1;

 int z=0, i=0;

 do {

  if (t<pr_pion[i][0])

 {

                 z=1;

                 if (i>0) pr=pr_pion[i-1][1];

                 else pr=pr_pion[i][1];

 };

  i++;

 } while ((i<=Max_p)&&(z!=1));

  if (z==0) {  pr=pr_pion[Max_p-1][1];   };

 return pr;

};

 

 

//---------------funkcja-pisz--naglowka---co--10--wynikow--------------

void nagluwek()

{

  zb_wyniki << "-------------------------------------------------------------";

  zb_wyniki << "-------------------------------------------";

  zb_wyniki << endl;

 

  zb_wyniki << "  Lp.               Czas         Przeciazenie_pion   Vx              Vz       " ;

  zb_wyniki << "       Lx           Lz     " << endl;

  zb_wyniki << "-------------------------------------------------------------";

  zb_wyniki << "-------------------------------------------";

  zb_wyniki << endl;

 zb_wyniki.width(8);

return;

};

 

//============================================================================

int main(int argc, char* argv[])

{

  const int Max_pr=10000;     //ilosc probek iteracji  (do dowolnego zwiekszania)

 

 

  typedef struct par_lotu_  //uproszczona definicja parametrów lotu

  {

                double czas;     //czas kolejnej probki w sek, od zera

                double Vx;       //predkosc lotu w osi x  w m/s

                double Vz;       //predkosc lotu w osi z (do dolu)

                double Lx;       //przebyta droga w osi x w metrach

                double Lz;       //przebyta droga w osi z (do dolu)

                double Az;       //przyspieszenie pionowe

                double Pz;       //przecizenie pionowe

                } par_lotu;

 

 

const g=9.81;                  //przyspieszenie ziemskie w m/s

const p_wys_z=61.2;            //poczatkowa wysokosc nad lotniskiem  : TAWS 37

                  double Czas_l = 16;      //czas lotu do analizy w sek

                  double L_TAWS_37 = 1935; //poczatkowa odleglosc od lotniska TAWS 37

 

const double predkosc_Vx = 79.43;//predkosc w średnia pomiędzy TAWS-37 a TAWS-38

                  double predkosc_Vz =-7.64; // predkość pionowa poczatkowa

 

 

 

par_lotu tab_p[Max_pr+1];  //tablica wynikowa parametrow

 

double  przesuniecie_t; //przesuniecie czasowe wykresu przeciazen

double  delta_k;

 

 

 

const int dlz =120;         // dlugośc nazwy zbioru wynikowego

char nazwa_zb_[dlz+1];      // nazwa zbioru wynikowego

str_zero(nazwa_zb_, dlz);   // zerowanie nazwy zbioru

char *nazwa_zb;             //deklaracja

nazwa_zb = &nazwa_zb_[0];   //inicjalizacja

 

//podanie trzech kluczowych parametrow :

//poczatkowa predkosc wznoszenia, przesuniecie czasu wykresu przeciazen

cout << data_czas() <<" START PROGRAMU TAWS-37-38 "<< endl;

//cout << endl <<"Podaj poczatkowa predkosc pionowa (-7.64 m/s)  : ";

//cin  >> predkosc_Vz;

//cout << endl;

cout << endl <<"Podaj przesyniecie czasu (-5s do +2 s)  : ";

cin  >> przesuniecie_t;

cout << endl;

 

float delta_t=Czas_l/Max_pr; //wielkosc dyskretyzacji czasu w sek.

 

nazwa_zb = nazwa_zbioru(nazwa_zb, Czas_l, predkosc_Vz,przesuniecie_t);

cout <<endl <<" Wyniki w zbiorze : " << nazwa_zb << endl;

 

zb_wyniki.open(nazwa_zb, ios::trunc | ios::in | ios::out);

if (zb_wyniki==NULL)

{ cout <<" Blad otwarcia zbioru "<< nazwa_zb  << endl;

  exit;

};

zb_wyniki << data_czas() <<" START PROGRAMU moment_obrotu_s " << endl;

 

 

//zerowanie tablicy prubek iteracji

int i;

for (i = 0; i <= Max_pr; i++) {

  tab_p[i].czas=0;

  tab_p[i].Vx=0;

  tab_p[i].Vz=0;

  tab_p[i].Lx=0;

  tab_p[i].Lz=0;

  tab_p[i].Az=0;

  tab_p[i].Pz=0;

};

 

tab_p[0].Lx= L_TAWS_37;

tab_p[0].Lz= p_wys_z;      //wartosc poczatkowa wysokosci

tab_p[0].Vx= predkosc_Vx; //wartosc poczatkowa predkości poziomej

tab_p[0].Vz= predkosc_Vz; //wartosc poczatkowa prdkosci pionowej (wznoszenia)

 

def_przeciazenie_p();

 

// główna petala iteracyjna wyliczająca prodkosc i polozenie

// samolotu przez  zadany czas lotu

float kor=0.999;

//=========Glowna===petla===START=========================================

  for (i = 0; i < Max_pr; i++)

 {

  //--czas--------------

  tab_p[i+1].czas = tab_p[i].czas + delta_t;        //uplyw czasy jednostajny

 

  tab_p[i+1].Vx = tab_p[i].Vx;                      //--predkość-pozioma--

  tab_p[i+1].Lx = tab_p[i].Lx - tab_p[i].Vx * delta_t; //--droga-pozioma-----

 

  //przyspieszenie--pionowe--w : m/s

  tab_p[i].Pz =   przeciazenie(tab_p[i].czas + przesuniecie_t)* kor;

  tab_p[i].Az = ( (przeciazenie(tab_p[i].czas + przesuniecie_t)*kor) - 1) * g;

  //predkość pionowa wznoszenia

  tab_p[i+1].Vz = tab_p[i].Vz + tab_p[i].Az * delta_t;

  // wysokosc pionowa

  tab_p[i+1].Lz = tab_p[i].Lz + tab_p[i].Vz * delta_t;

 

}; //==========KONIEC==glownej===petli==========================

 

 

 

 

//----WYPLUWAMY---DANE---------------------------------------------------

zb_wyniki <<"Ilosc prubek iteracji   = "<< Max_pr << endl;

zb_wyniki <<"Czas lotu do analizy    = "<< Czas_l << endl;

zb_wyniki <<"predkosc poczatkowa pionowa Vz m/s = "<< predkosc_Vz << endl;

zb_wyniki <<"przesuniecie czasu (s)  = "<< przesuniecie_t << endl;

zb_wyniki <<"korekcja odczytu przeciazen z wykresu kor ="<< kor << endl << endl;

 

 

for (i = 0; i <= Max_pr; i++)

{

if ((i % 10)==0) { nagluwek(); };

 

zb_wyniki << i;

zb_wyniki.width(16);

 

zb_wyniki << tab_p[i].czas;

zb_wyniki.width(16);

 

zb_wyniki << tab_p[i].Pz<<" g";

zb_wyniki.width(12);

 

zb_wyniki << tab_p[i].Vx;

zb_wyniki.width(16);

 

zb_wyniki << tab_p[i].Vz;

zb_wyniki.width(16);

 

zb_wyniki << tab_p[i].Lx;

zb_wyniki.width(16);

 

zb_wyniki << tab_p[i].Lz;

zb_wyniki.width(8);

 

zb_wyniki << endl;

 

};

 

 

zb_wyniki << endl <<data_czas() <<" KONIEC PROGRAMU Tor_Lotu " << endl;

zb_wyniki.close();

 

cout << data_czas() <<" KONIEC PROGRAMU Tor_Lotu" << endl;

cout << "wcisnij `q`  i `enter` " ;

cin  >> Czas_l;

 

return 0;

}

 

 

Nagłowek biblioteki  unit_strings

 

//---------------------------------------------------------------------------

#ifndef unit_stringsH

#define unit_stringsH

 

#include <vcl\vcl.h>

 

#include <strstream.h>

#include <iostream.h>

#include <fstream.h>

#include <dos.h>

 

//---------------------------------------------------------------------------

char *Radiany_to_stopnie(float rad);

char *Radiany_to_stopnie(float rad, char *zm);

 

char *nazwa_zbioru(char *str, double czas, double wz, double przes);

//void  nazwa_zbioru(char *str_temp double czas, double wz);

//char *nazwa_zbioru(double czas, double wz);

 

void  str_zero   (char *s1, int n);   //--wstaw-n-zer-do-stringu-bez-adresu

 

char *data_str();

char *data_str(char *str);

char *godz_str();

char *godz_str(char *str);

char *data_czas();

char *data_czas(char *str);

 

#endif;

 

 Biblioteka  unit_strings :

 

Unit_string.ccp

//-----------------------------------------------------------------------------

#pragma hdrstop

#pragma package(smart_init)

 

#include "unit_strings.h"

 

const int Max_Str = 256;

char str_temp[Max_Str];

char str_temp1[Max_Str]; //zmienna stringowa

 

 

//----radiany---to--stopnie------------------------------

 char *Radiany_to_stopnie(float rad)

 {

   float st_r = (rad/(2*3.14))*360;

   int   st   = st_r / 1;

   float m_r  = (st_r - st) * 60;

   int   m    =  m_r / 1;

   float s_r  = (m_r - m) *60;

   int   s    = s_r / 1;

 

  sprintf(str_temp,"%03d:%02d:%02d",st,m,s);

  return str_temp;

 };

//------------------------------------------------------------

 char *Radiany_to_stopnie(float rad, char *zm)

 {

   float st_r = (rad/(2*3.14))*360;

   int   st   = st_r / 1;

   float m_r  = (st_r - st) * 60;

   int   m    =  m_r / 1;

   float s_r  = (m_r - m) *60;

   int   s    = s_r / 1;

 

  sprintf(zm,"%03d:%02d:%02d",st,m,s);

 return zm;

 };

 

//-----------------------------------------------------------------------------

void str_zero (char *s1, int n)   //--wstaw-n-zer-do-stringu---bez-adresu

{

  int i;

  char *zx;

  zx=s1;

  if (n>=0)

  {

    for (i=0; i<n; i++)

    {

      *zx=char(0);

      zx++;

    }

   }

  return ;

};

 

//--podaj-date-jako-string-temp--------------------------

char *data_str()

{

  struct date d;

  memset(str_temp,0,Max_Str);

  getdate(&d);

  sprintf(str_temp,"%4d-%02d-%02d", d.da_year, d.da_mon, d.da_day);

  return str_temp;

};

//--podaj_date-jako-string----------------------------------

char *data_str(char *str)

{

  struct date d;

  getdate(&d);

  sprintf(str,"%4d-%02d-%02d", d.da_year, d.da_mon, d.da_day);

  return str;

};

 

//--------podaj-czas-jako--string-temp---------------------

char *godz_str()

{

  struct time t;

  memset(str_temp,0,Max_Str);

  gettime(&t);

  sprintf(str_temp,"%02d:%02d:%02d", t.ti_hour, t.ti_min, t.ti_sec);

  return str_temp;

};

//--------podaj-czas-jako--string---------------------------

char *godz_str(char *str)

{

  struct time t;

  gettime(&t);

  sprintf(str,"%02d:%02d:%02d", t.ti_hour, t.ti_min, t.ti_sec);

  return str;

};

 

//---podaj-data--czas--jako--string-temp-------------------

char *data_czas()

{

  char dat[11], czas[9];

  sprintf(str_temp,"%10s  %8s ", data_str(dat), godz_str(czas) );

//  cout << str_temp  << endl;

  return str_temp;

};

//---podaj-data--czas--jako--string------------------------

char *data_czas(char *str)

{

  char dat[11], czas[9];

  sprintf(str,"%10s  %8s ", data_str(dat), godz_str(czas) );

// cout << str  << endl;

  return str;

};

 

char *nazwa_zbioru(char *str, double czas, double wz, double przes)

{

 int w =  czas;

 int re = (czas-w)*10;

 int wzn  = wz;

 int re_w = (wz-wzn) *10;

 int prz = przes;

 int w_prz = (przes-prz) * 10;

 

 sprintf(str,"TAWS37-38__%2d_%1d_czas__%1d_%2d_wznoszenie__%2d_%1d_przez.txt", w, re, wzn, re_w, prz, w_prz);

 

 return str;

};

 

 Program napisany jak najprściej (specjalnie nie obiektowo)

mozna potestować rózne warianty,

np/ wystartować z najnizszego punktu, według oficjalnej komisji

i zobaczyć wyniki...

 

 

 

 

 

Zobacz galerię zdjęć:

Zapis TAWS-38
Zapis TAWS-38 skąd się wzięła zmiana wysokości barycznej Tabela kątaktu z przeszkodami terenowymi przeciążenia pionowe 1 Przeciążenia pionowe 2 przeciążenia normalne Przeciążenie przesunięte o 1.5s Trajektoria oficjalna i wyliczona (niebieska linia)
gosc8123
O mnie gosc8123

interesują mnie sprawy sporne

Nowości od blogera

Komentarze

Inne tematy w dziale Technologie