Jako kontroler w IVAO czasami przypisuję kody takie jak 0168 i później dowiaduję się, że kod jest nieprawidłowy. Dla mnie zakres 0-9 wydaje się bardziej logiczny. Dlaczego musimy używać liczb ósemkowych, a nie dziesiętnych?
Jako kontroler w IVAO czasami przypisuję kody takie jak 0168 i później dowiaduję się, że kod jest nieprawidłowy. Dla mnie zakres 0-9 wydaje się bardziej logiczny. Dlaczego musimy używać liczb ósemkowych, a nie dziesiętnych?
Czterocyfrowy kod transpondera, który jest wprowadzany przez pilota, jest liczbą ósemkową , a nie liczbą dziesiętną, aw systemie liczb ósemkowych prawidłowe są tylko cyfry 0-7.
Jeśli chodzi o dlaczego , wewnętrznie jest to 12-bitowa liczba binarna, a ósemkowa działa bardzo dobrze, ponieważ może być używana jako „skrót” do wprowadzania grup składających się z trzech cyfr binarnych naraz (000 - 111, czyli 0-7 ósemkowo).
Gdyby został zaprojektowany dzisiaj, z dostępną dodatkową mocą obliczeniową i złożonością oprogramowania, byłoby możliwe użycie liczby dziesiętnej, nawet jeśli jest przechowywany wewnętrznie jako plik binarny, aby był bardziej znany. Jednak w czasie gdy system był tworzony, zmiana pokręteł bezpośrednio ustawiała kod w sprzęcie, a konwersja byłaby znacznie bardziej złożona / trudna / kosztowna.
Krótko mówiąc, było to wygodne dla inżynierów i producentów, co jest dziwne dla użytkowników końcowych, więc zostawili to w ten sposób.
Reprezentacja ósemkowa to tani sposób radzenia sobie z małymi liczbami binarnymi
Transpondery trybu A i C wysyłają swoje ID za pomocą ciągu impulsów niemodulowanej nośnej, co można zobaczyć jako sekwencja bitów. Dziś takie transpondery używają 12 impulsów (transpondery trybu S używają 24-bitowego adresu, który jest inny):
Impulsy są oznaczone jako A4-A2-A1, B4-B2-B1, C4-C2-C1 i D4-D2-D1 (przeplatane transmisja). Są one zawarte w dwóch impulsach ramkowania w celu synchronizacji nadajnika-odbiornika, a dodatkowy impuls X w środku, zawsze na poziomie 0 dzisiaj, ale używany w czasach świetności jako niestandardowe dane przez producentów (np. Do raportowania do ATC pozycji chowane podwozie).
Transponderowi trzeba w jakiś sposób podać wartość każdego bitu. Dziś nie byłoby problemu z wprowadzeniem identyfikatora w postaci liczby dziesiętnej (od 0 do 4095), ale kiedy wynaleziono transponder, dziesiątki lat przed pojawieniem się niedrogich programowalnych chipów, niezawodny konwerter był kosztownym urządzeniem.
Z drugiej strony nie było możliwości podania tylko 12 wartości za pomocą przełączników On / Off:
Przykład miniaturowych przełączników, źródło
Oczywiście błędy byłyby liczne, zarówno podczas głosowej transmisji identyfikatora, jak i podczas jego wprowadzania.
Najprostszym szeroko stosowanym rozwiązaniem w przypadku bitów jest pogrupowanie ich i przypisanie pojedynczego symbolu do każdej możliwej kombinacji w grupie.
Dobrze byłoby użyć grup z 10 kombinacjami, mamy już symbole „0” do „9”, aby je reprezentować. Niestety, grupując bity po dwa, otrzymujemy grupy po 4 kombinacje każda. Jeśli pogrupujemy według trzech bitów, grupy mają 8 kombinacji. Po czterech, grupy mają 16 kombinacji itd.
Ponieważ mamy do czynienia z liczbą wyrażoną w radix 2, liczba używanych symboli to zawsze potęga dwóch, nigdy 10. Tak więc inżynierowie nie mieli wtedy wyboru , niż zapomnieć o liczbach dziesiętnych i użyć nieparzystej liczby kombinacji. Na przykład pogrupujmy według 2 bitów i użyjmy greckich liter jako wymaganych 4 symboli:
Bylibyśmy kiepskimi projektantami, gdybyśmy produkowali to (z wyjątkiem przeróbki Samolot!), ale masz zasadę. Aby system był prosty, możemy użyć liczb dziesiętnych, jeśli potrzebujemy maksymalnie 10 symboli, i uzupełnić litery, jeśli potrzebujemy więcej. To jest dokładnie to, co się robi, gdy liczby są zapisywane w postaci ósemkowej (grupy po 3 bity) i szesnastkowej (grupy po 4 bity).
Jak wyjaśniono w innych doskonałych odpowiedziach, pierwsze transpondery miały tylko 6 bitów ID, więc ósemkowe było rozsądnym wyborem, a identyfikatory zostały przedstawione jako 2 cyfry ósemkowe, np „75”, aby reprezentować „111 101”. Po wydłużeniu identyfikatora system ósemkowy pozostał w użyciu.
Jeśli interesują Cię szczegóły użycia ósemkowego, proponuję szczegóły poniżej.
Specyfikacja techniczna: 12-bitowa liczba binarna i 4096 wartości
Sygnał radiowy transpondera do transmisji ID składa się z 12 impulsów (tryby A / C), które mogą być niskie lub high, pozwala to na 4096 ( $ 2 ^ {\ small {12}} $ ) kombinacji.
Ponieważ impulsy mają tylko dwa stany, niski lub wysoki, możemy je bezpośrednio odnieść do 12-bitowej liczby binarnej z przedziału od 0 do 4095. Zilustrujmy to kilkoma wartościami:
Możemy dodać tyle 0 po lewej stronie, ile chcemy (np. aby mieć 12 bitów), tak jak dziesiętnie: 25 = 025 = 00025.
Reprezentacje liczb binarnych w formacie ósemkowym i szesnastkowym
Dla wygody zwykle zastępujemy grupy bitów jakimś odpowiednikiem, aby zmniejszyć liczbę używanych znaków. Często używa się grup 3 i 4 bitowych:
Ósemkowe : grupa 3 bitów może wygenerować 8 kombinacji, możemy łatwo zastąpić tę grupę pojedynczą liczbą w podstawie 8, aby pokryć te kombinacje. Radix 8 nosi nazwę „ ósemkowa” numeracji.
Szesnastkowy : Podobnie grupa 4 bitów generuje 16 kombinacji (dwukrotność liczby kombinacji dla grupy 3, ponieważ dwie wartości dodatkowego bitu mogą być skojarzone ze wszystkimi 3-bitowymi kombinacjami. Możemy zastąpić 4 bity grupy liczbą w podstawie 16. Taki system nosi nazwę " szesnastkowo "numeracja.
Wracając do naszych przykładów, zastępując grupy bitów ich odpowiednikami w podstawach 8 i 16:
Wybierz, której podstawy użyć
Co mamy do tej pory? Zaczęliśmy od Liczba 12-bitowa, pogrupowana bity po 3 lub 4, otrzymała wartość ósemkową (od 0000 do 7777) i wartość szesnastkową (od 000 do fff), dwie reprezentacje tej samej liczby binarnej.
Która z nich jest lepsza w tym przypadku? Odpowiedź została udzielona w innych znakomitych postach: Na początku było tylko 6 impulsów przydzielonych do ID. Logicznie zostały one pogrupowane według 3 i ósemkowo
Gdyby było 7 impulsów, prawdopodobnie wybrana byłaby reprezentacja szesnastkowa z wartościami od 00 do 7f.
Od podstawy do przełącznika elektromechanicznego
Łatwo jest zaprojektować przełącznik kołowy (pokrętło) z 8 symbolami ósemkowymi, który zarządza 3 rzeczywistymi przełącznikami do generowania 3 sygnałów elektrycznych włączania / wyłączania (niski / wysoki):
Do zamykania lub otwierania trzech styków używamy położenia kątowego koła. Jest wiele sposobów, aby to zrobić, jednym z nich jest użycie pędzli obracających się nad dyskiem z nadrukowanymi ścieżkami przewodzącymi:
Przełączniki zapewniają bezpośrednio grupę binarną. Montując cztery przełączniki, moglibyśmy dostarczyć transponderowi kod „squawk”, czyli konfigurację binarną dla impulsów ID.
Tak łatwo jest użyć 3 kół szesnastkowych z 4 stykami.
Dlaczego nie 10 symboli?
Nie możemy grupować bitów liczby binarnej w grupy, które mogą mieć dokładnie 10 kombinacji. Ta właściwość jest ograniczona do potęgi 2 radix (4, 8, 16, 32 ...)
Później, wraz z wprowadzeniem układów scalonych (tak prostych jak pamięci), można było przekształcić dość łatwo dziesiętnie do binarnego. 74S484 był jednym z takich układów scalonych. Mógł obsługiwać dwa wejścia reprezentujące wartości dziesiętne („ kod dziesiętny kodowany binarnie”, BCD) i konwertować je na czysty binarny. Konwerter dla 4 cyfr dziesiętnych (od 0 do 4095) zostałby zaprojektowany w następujący sposób, wykorzystując 5 z tych obwodów:
Jak widać, prostsze jest użycie tylko 8 symboli ( $ 2 ^ {\ small {3}} $ ) lub 16 ( 2 $ ^ {\ small {4}} $ ), a bardziej ogólnie potęga dwójki.
Uzasadnione jest myślenie, że moglibyśmy również użyć logiki opartej na prostych bramkach boolowskich (NAND , XOR ...) do zarządzania konwersją z dziesiętnego na binarny zamiast pamięci. Nie jest to widoczne na pierwszy rzut oka, ale w rzeczywistości wymagałoby to ogromnej liczby bramek.
Aby być przekonanym, wykonałem ćwiczenie tylko dla jednego kawałka (z 12) i tylko dwa koła dziesiętne na 4. Usunąłem szczegóły ćwiczenia, ale można je zobaczyć w historii zmian. Oto wynik:
Minimalizacja pozwoliła zmniejszyć liczbę terminów (stąd bramek) do 10. Jednak jest to tylko na jeden bit i dwa koła. Czasami po prostu nie jest warte dodatkowej trudności, szczególnie w czasach, gdy nie było układów scalonych, aby trzymać się ułamka dziesiętnego.
Prosta odpowiedź jest taka, że transponder w trybie A lub C dopuszcza 12 bitów danych identyfikacyjnych, a trzy bity można opisać jako cyfrę ósemkową. Dlatego są cztery cyfry ósemkowe, z zakresu od 0000 do 7777.
Pytanie uległo zmianie, więc uzupełniam tę odpowiedź. Konwencja używania liczb ósemkowych dla kodów transponderów sięga wcześniejszej implementacji transponderów, które miały 6 bitów danych identyfikujących statek powietrzny. Zdecydowano (wydaje mi się, że przez jakiś COTR w białej koszuli) zastosowano cyfry ósemkowe. Radzenie sobie z komputerami, ósemkowe lub szesnastkowe jest łatwiejsze niż dziesiętne. Później pole identyfikacyjne samolotu transpondera stało się 12-bitowe i zachowano konwencję ósemkową. Jest to konwencja i została utrzymana.
Uzupełnienie: Pamiętam transponder, który miał 6 przełączników do wprowadzania kodu, przed standardem 12-bitowym. Przełączniki były oznaczone trójkami z 4-2-1 pod nimi. Jeszcze przed opanowaniem umiejętności obsługi komputera przez masy, kiedyś można było spekulować na temat wyboru cyfr, a nie na przykład szesnastkowej, branej pod uwagę jako rozwijanej technologii IFF i transpondera. Kod squawk VFR można wprowadzić jako 12, co oznaczałoby najbardziej znaczące 1 przełączenie w górę i najmniej znaczące 2 przełączenie w górę. Pamiętam, że radar wtórny pokazuje, że to samo co 1200, mimo że pochodzi z transpondera bez standardu 12-bitowego. 77 lub wszystkie przełączniki w górę dotyczyły sytuacji awaryjnych, a 76 i 75 wszystkie odpowiednio mapowane na współczesne kody 7700, 7600 i 7500.
Wprowadzenie kodu squawk w ósemkowej lub podstawie-8, gdzie dopuszczalne cyfry to od 0 do 7, tworzy interfejs człowiek-maszyna między pilotem a transponderem tak prosto, jak to tylko możliwe.
Transpondery kompatybilne z modemem A i modem C używają 12-bitowych kodów identyfikacyjnych lub sygnałów nawigacyjnych. Każdy bit ma dwie opcje, wysoką lub niską, co daje łącznie 2 12 = 4 096 reprezentowalnych ( tj. , które mieszczą się w 12 bitów), w zakresie od 0 do 4095 w bazie 10, zapisane 4095 10 . Teraz nie wszystkie reprezentowalne indentyfikatory są prawidłowe . Na przykład 7500 8 jest zarezerwowane dla określonych sytuacji, ale nie jest to powodem do zmartwienia obwodów.
Ilości, które mieszczą się dokładnie w pewnej liczbie bitów, nie są wyrównane z mocą dziesięciu. Rozważmy hipotetyczny transponder, który akceptuje cztery cyfry dziesiętne od 0000 do 9999 lub 10 4 = 10 000 możliwych danych wejściowych. Jest bardziej prawdopodobne, że pilot zagłuszy fałszywy pisk niż reprezentatywny. Ten „prostszy” interfejs ma teraz warunek błędu, z którym musi sobie poradzić: reprezentowalne i nieprzedstawialne dane wejściowe. Jeśli pilot wpisze lub przekręci pokrętła do wartości powyżej 4095, w jaki sposób transponder odpowie? Czy powinno migać lampka błędu, którą pilot może przegapić? Jak powinien odpowiadać na przesłuchanie, gdy jest w złym stanie? Cicho przypnij kod nawigacyjny do wszystkich wysokich bitów (111 111 111 111 2 = 4095 10 = 7777 8 )? Przestać całkowicie odpowiadać? Więcej trybów oznacza więcej testów i większe koszty.
„Ach”, myśli sprytny inżynier ze starej szkoły. „Nigdy więcej fantazyjnych guzików; damy skrajnej lewej tarczy tylko pięć pozycji, od 0 do 4. ”Ale co z drugą tarczą, która musi wynosić 0, gdy pierwsza to 4, ale w przeciwnym razie może być dowolną cyfrą?
Mamy do wypełnienia dwanaście bitów. Być może pilot wchodzi bezpośrednio do pliku binarnego. „Cessna 123AB, pisk zero-zero-jeden-zero-jeden-zero-zero-zero-…” Wyobraź sobie przeciążenie częstotliwości z tak długimi instrukcjami, odczytami, korektami i potwierdzeniami.
Nasz krótki- pamięć terminowa wystarcza na około siedmiu rzeczy, daj lub weź dwa. Dwanaście cyfr binarnych („bitów”) jest zbyt nieporęcznych. Inne czynniki 12 to 6 × 2 i 4 × 3.
Rozłożenie dwunastu bitów identyfikacyjnych na sześć i dwa oznacza kody squawk w dwóch wielkościach 6-bitowych (0-63) lub sześciu 2-bitowych ( 0-3) kawałki. Wyobraź sobie, że w dawnych czasach mieliśmy do czynienia z tarczami 64-pozycyjnymi. Robiąc to za pomocą przycisków dziesiętnych, wracamy do problemu niemożliwych do reprezentacji kodów. Sześć pokręteł, każdy od 0 do 3, może działać, ale to zmniejsza tarcze i zmusza pilota do radzenia sobie blisko granicy pamięci krótkotrwałej, co sprawia, że ta opcja jest podatna na błędy, a zatem mniej pożądana.
Mogą działać trzy grupy wielkości 4-bitowych lub szesnastkowych. Chociaż wartości szesnastkowe mieszczą się w zakresie od 0 do 15 10 , powszechną konwencją jest używanie cyfr od 0 do 9, a następnie od A do F od dziesięciu do piętnastu. Innymi słowy, ograniczyliśmy się do jednej cyfry na miejsce, ale w dawnych czasach oznaczałoby to używanie 16-miejscowych tarcz. Dziś oznaczałoby to szesnaście przycisków na przodzie transpondera. Jednak „Zbliż się, Cessna tree-alpha-bravo ogłasza awarię i skrzeczący foxtrot-charlie-zero dla tego charlie foxtrot!” ma jakąś wartość mnemoniczną.
Patrząc na to z drugiej strony, mamy cztery grupy po trzy bity. W systemie binarnym wartości miejsca są potęgami dwójki (a nie dziesięcioma, jak zwykliśmy myśleć w systemie dziesiętnym). Pracując z trzema bitami każdy, maksymalna wartość dowolnej cyfry kodu nawigacyjnego to
$$ (1 \ cdot 2 ^ 2 = 4) + (1 \ cdot 2 ^ 1 = 2) + (1 \ cdot 2 ^ 0 = 1) = 7 $$
Oto kilka zalet:
Te 12 bitów zostało ustalonych przez system taktowanie i dokładność generowania impulsów oraz technologię przetwarzania dostępną w tym czasie. Po ustawieniu 12 bitów mogliby zrobić od 0 do 4095, ale wymagałoby to specjalnych przełączników i / lub przekładni dla wyświetlacza. Więc dla uproszczenia zastosowali Octal z 4 prostymi, 8-pozycyjnymi przełącznikami.
W systemach komputerowych wszystko jest binarne. Wynika to z faktu, że obwód logiczny ma tylko 2 stany, wysokie i niskie napięcie. Z tego powodu liczba dziesiętna nie byłaby tak prosta do konwersji na binarną, jak ósemkowa lub szesnastkowa.