W jakich systemach operacyjnych są używane samoloty i w jakich językach programowania są one rozwijane? [Zamknięte]

113

Zastanawiałem się, czy ktoś wie, jaki system operacyjny jest używany w samolotach komercyjnych (powiedzmy Boeing lub Airbus).

Jaki jest (preferowany) język programowania w czasie rzeczywistym? Słyszałem, że Ada jest używana w Boeingu, więc moje pytanie brzmi - dlaczego Ada? jakie kryteria musieli wybrać chłopcy z Boeinga? (Wydaje mi się, że Java nie byłaby dobrym wyborem, gdyby budził się śmieciarz).

adhg
źródło
11
Kiedy po raz pierwszy zobaczyłem to pytanie, pomyślałem, że pyta o systemy, które uruchamiają filmy w locie i takie na tylnych siedzeniach. Byłem kiedyś w locie Delta, gdzie zrestartowali ten system i można było powiedzieć, że działał Linux, wariant Debiana, który moim zdaniem.
Kris Harper
1
@ root45: ahhhhhh ... Przyznaję, że nawet nie przyszło mi to do głowy. Mogło być. Myślę, że niektórzy używają QNX, a inni Windows Embedded.
haylem
17
„Z jakiego systemu operacyjnego korzysta?” „Myślę, że to Vista”. „Umrzemy!”
StuperUser
1
@StuperUser: Jeden z moich ulubionych odcinków IT Crowd. ( youtube.com/watch?v=8y4akOH8v8Q - 2:34 minuty). Nie tylko komercyjne linie lotnicze, ale byłoby interesujące dowiedzieć się więcej o tym, z czego korzystają samoloty wojskowe, jeśli to nie to samo. Vista, lol.
Bratch
1
@Piskvor: istnieją maszyny wirtualne w czasie rzeczywistym dla Java (jak w języku, a nie na platformie). Nie wiem, czy warianty JavaRT zostały użyte w poważnych (i zamieszkałych) systemach lotu, ale widziałem, że były używane w modelach lub dronach.
haylem,

Odpowiedzi:

157

Awionika

W przypadku systemów sterowania samolotami nie mówimy o systemach operacyjnych, ale ogólnie o awionice , zintegrowanej awionice lub komputerowych systemach powietrznych. W rzeczywistości są one kombinacją wielu niezależnych lub współzależnych systemów dla różnych funkcji ( kontrola lotu , unikanie kolizji , pogoda, komunikacja, czarne skrzynki ...).

Każdy kontroler jest zwykle niezależnym modułem (sprzętem i oprogramowaniem) z oczywistych względów bezpieczeństwa: są to krytyczne systemy kontroli i monitorowania, a jeśli jeden z nich ulegnie awarii lub zostanie uszkodzony, jest to dość duża „niedogodność” dla osób, które są w zależności od samolotu. Niezawodność nabiera pełnego znaczenia, gdy jesteś w maszynie latającej. Zwykle tak jest

  • wykonane na zamówienie dla celów ich misji,
  • zbudowany do samodzielnej pracy i współpracy z innymi systemami,
  • zbudowany tak, aby był odporny na awarie własnych awarii ORAZ awarii innych systemów, z którymi jest połączony (ponieważ na przykład nie chcesz, aby system dźwiękowy pilota zdejmował sterowanie silnikiem).

To nie jest duży komputer, na którym wszystko działa. Jeśli pomyślisz o tym z perspektywy samolotu wojskowego, a nie komercyjnego (choć pod tym względem jest podobny, obraz może pomóc): jeśli część zostanie zastrzelona, ​​wolisz przynajmniej mieć inne części kontynuować (część kontrolująca systemy łączności i bezpieczeństwa może być interesująca, aby utrzymać się przy życiu ...). Stąd też duża wiązka przycisków widocznych w odrzutowcach, aby śledzić status różnych systemów.

Zazwyczaj są one budowane jako niestandardowe komponenty działające we własnym systemie lub są uruchamiane i planowane przez mikro-jądro (w większości przypadków z obsługą funkcji czasu rzeczywistego ).

Zależy to oczywiście od dostawców i krajów, ale zwykle muszą oni przynajmniej przestrzegać raczej ścisłych zestawów przepisów, wymagań projektowych i specyfikacji protokołu, które pozwalają na:

  • kontrola ich ścisłej zgodności z normami bezpieczeństwa i ochrony,
  • wzajemna komunikacja z innymi systemami (znacznie lepiej, jeśli samolot, którym wystartowałeś w Reykjaviku, może „rozmawiać” z tym sprzętem kontroli naziemnej w Tokio ...)

Wysiłki standaryzacyjne

DO-178B (znowelizowany w roku 1992) i jego następca DO-178C (znowelizowany w roku 2012) (i kilka związanych z nimi dokumentów) są przykładem certyfikaty odniesienia dla tych poziomów zgodności i są rozpoznawane przez FAA (USA), między innymi EASA (UE) i Transport Canada. Wiele innych organizacji jest zaangażowanych w tworzenie takich dokumentów, takich jak EUROCAE .

Takie systemy powietrzne są zwykle oprogramowaniem na zamówienie, ale w niektórych samolotach znane są następujące systemy:

Aby dać ci mgliste pojęcie o elementach wbudowanych w system awioniki, ta lista skrótów awioniki wskazuje na niektóre z nich (z pewnym nakładaniem się).

Znane języki używane w awionice komercyjnej i wojskowej

Oprócz zwykłych podejrzanych, których znamy w świecie programowania „mainstream”, znajdziesz kilka często wymienianych nazwisk, takich jak Ada , oraz niektóre mniej znane języki, takie jak (z datą i obecnie „na emeryturze” od 2010 r.) JOVIAL .


Powiązane pytania StackExchange:

Haylem
źródło
2
@mattnz: Dzięki. Ale szczerze mówiąc, jest to trochę dalekie od tego, o co prosi OP. Starałem się dostarczyć użytecznych informacji i wskazówek do celów dokumentacji, ale jeśli chodzi o rzeczywiste szczegóły implementacji, trudniej jest znaleźć twarde dane.
haylem
„I w rzeczywistości są one kombinacją wielu niezależnych lub zależnych systemów”. Czy masz na myśli, że istnieje oddzielny sprzęt dla nich?
stijn
2
Tak, zazwyczaj są to sprzęt specjalnie zaprojektowany. Nie ma szafy x86 sztuk, która obsługuje twój samolot.
Przypon
3
@stijn: Cóż, tak. Pomyśl o tym w ten sposób. Są to krytyczne systemy kontroli i monitorowania. Jeśli jeden z nich zawiedzie, oznacza to duży cholerny problem, z super dużym F i mniej grzecznym. Zwykle jest to: a) niestandardowe zbudowane na potrzeby ich misji b) zbudowane tak, aby działały niezależnie i współpracowały z innymi systemami c) zbudowane tak, aby były odporne na awarie własnych awarii i awarii innych systemów, do których jest podłączony (ponieważ nie na przykład, żeby system dźwiękowy pilota zdjął sterowanie silnikiem). To nie jest duży komputer, na którym wszystko działa.
haylem,
@stijn: Pomyśl o tym z perspektywy samolotu wojskowego, a nie komercyjnego, jeśli to pomaga: jeśli część zostanie zastrzelona, ​​wolisz przynajmniej mieć inne części do kontynuowania (powiedziałbym część kontrolująca systemy łączności i bezpieczeństwa może być interesująca do utrzymania przy życiu ...). Stąd też duża wiązka przycisków widocznych w odrzutowcach, aby śledzić status różnych systemów.
haylem
22

Większość współczesnych samolotów wykorzystuje RTOS ogólnego zastosowania (system operacyjny w czasie rzeczywistym), prawie to samo, co używane w automatyce fabrycznej, elektrowniach, statkach itp.

Airbus korzysta z kilku, w tym INTEGRITY od Northrop-grumman i programuje go w C / C ++, Boeing używa VxWorks między innymi

Martin Beckett
źródło
2
Stwierdzenie „... RTOS ogólnego przeznaczenia ...” trywializuje to, czego potrzeba, aby RTOS przekształcił się w system awioniki, nie jest to prawie taki sam RTOS, jaki jest używany w ACME Corps Digital TV Reciever.
mattnz
3
Nie, ale VxWorks może być używany do wszystkiego, od Mar Rovera po telefon Blackberry
Martin Beckett,
Przykro nam, to QNX jest używany w Blackberry, a nie VxWorks. Ale obowiązuje ta sama zasada - rtos COTS może być używany w samolotach
Martin Beckett
12

Za to, co jest warte: W przypadku statków kosmicznych (satelitów i międzyplanetarnych) C i C ++ nadal dominują (i przy bardzo ścisłej zgodności ze standardami ISO), generalnie uruchamiając VxWorks. Laboratoria zwykle będą trzymać się C lub C ++ w oparciu o znajomość programistów, zaufanie do łańcucha narzędzi kompilatora i wewnętrzne standardy kodowania. Istnieją ważne powody dla obu języków dla oprogramowania lotów w czasie rzeczywistym, ale każda organizacja ma tendencję do trzymania się jednego lub drugiego. Z drugiej strony instrumenty pomocnicze są powszechnie programowane w językach Forth, C i coraz bardziej nowoczesnych językach skryptowych, takich jak Lua.

Bill VB
źródło
3
Zazwyczaj jest to podzbiór C lub C ++, o ile czytałem, jak MISRA C lub JSF C ++.
Koder,
10

Warto również zauważyć, że systemy sterowania są często opracowywane przy użyciu projektowania opartego na modelach przy użyciu Simulink. Projekt jest następnie automatycznie konwertowany na kod C. Ludzie nadal czytają i weryfikują kod.

Ben Martin
źródło
Mój profesor rzeczywiście wspomniał o tym, mówiąc o krytycznych systemach w inżynierii oprogramowania.
Dielson Sales,
Wierzę, że Airbus używa SCADE do specyfikacji funkcjonalnej sprzętu i oprogramowania w swoich systemach sterowania lotem. Narzędzie może generować kod C lub Ada.
dodgy_coder