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).
Odpowiedzi:
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
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:
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:
źródło
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
źródło
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.
źródło
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.
źródło