Welche CPUs und Programmiersprachen werden in neuen Airliner-Flugsteuerungssystemen verwendet?

Werden die neuen Systeme von heute mit den gleichen CPUs und Programmiersprachen und Entwicklungssoftware gebaut wie die von vor 20 oder mehr Jahren?

Mit neu meine ich, dass diese Systeme derzeit für zukünftige Verkehrsflugzeuge entwickelt werden oder kürzlich zum ersten Mal in Betrieb genommen wurden.

Alle konkreten Beispiele für neue Designs, wie sie in einem großen Verkehrsflugzeug der neuesten Generation verwendet werden (die A350 und 787 sind die offensichtlichsten Beispiele), wären besser als allgemeine Antworten.

Ich interessiere mich für Beispiele aus allen flugwesentlichen Systemen (aber nicht zum Beispiel Bordunterhaltung).

Als Teil dieser Frage: Neigt die Industrie dazu, ihre Produkte durch inkrementelle Updates der von ihr übernommenen Mikroprozessoren und Programmiersprachen zu aktualisieren, oder neigt sie dazu, einmal pro Generation auf neue Technologien umzusteigen? Und gibt es signifikante Unterschiede in der Herangehensweise der Flugzeughersteller (im Gegensatz zur Militär-/allgemeinen Luftfahrtindustrie)?

Antworten (2)

Hinweis: Ich habe mich mehr auf Änderungen in der Luftfahrthardware und -software konzentriert als auf das, was derzeit verwendet wird, da die verknüpfte Frage zu Programmiersprachen für "neue" Flugzeuge immer noch aktuell ist. Ich möchte diese Frage oder ihre Antworten nicht wiederholen. Meiner Meinung nach werden C++, C# und Ada wahrscheinlich mindestens für das nächste Jahrzehnt die dominierenden Programmiersprachen für die Avionik sein.

Zunächst muss man den Lebenszyklus von Flugzeugen verstehen. Viele Flugzeuge sind seit mehr als 30 Jahren im Einsatz . Die Avionik erhält Updates (ob neue Funktionen hinzugefügt, Fehler behoben oder Konformität hinzugefügt wird, um Mandate zu erfüllen). Der Großteil der Arbeit wird jedoch während der anfänglichen Entwicklung der Software und Hardware geleistet. Die Konfiguration wird dann meist so lange fixiert, bis diese Avionik-Generation vom Hersteller ersetzt oder von einem anderen Hersteller nachgerüstet wird.

Was hat sich also in der Praxis geändert?

Wenn die Avionik ein Generations-Update durchläuft (wie CRTs auf LCD-Bildschirme), muss jede Änderung die Kosten wert sein, daher wird normalerweise nicht viel geändert. Vielleicht die CPU, aber definitiv nicht die Programmiersprache. Zum Beispiel war der G1000 12 Jahre lang auf dem Markt, bevor eine weitere Generation von Hardware veröffentlicht wurde (obwohl sie in der Zwischenzeit zahlreiche Software-Updates für Hardwarekompatibilität und synthetisches Sehen und dergleichen veröffentlicht haben).

In ähnlicher Weise war Avidyne Entegra fünf Jahre lang nicht verfügbar und fügte kontinuierlich wichtige Funktionen wie Datenverbindungswetter und LPV-Ansatz hinzu, bevor es schließlich 2009 in Release 9 die Hardware aktualisierte. Falcon-Jets wie die Falcon 900 hatten 2011 ein Software- und Hardware-Update ihrer Avionik , aber dieses Upgrade basierte auf der Hardware- und Softwarefamilie Primus Epic, deren erste Generation bereits 9 Jahre alt war. Ich glaube, alle 900er liefen vor dem Upgrade 2011 noch mit der alten Hardware von 1996. Am anderen Ende des Spektrums dieser langsamen Upgrades ist das JSF-System des Militärs so konzipiert, dass es alle paar Jahre problemlos aktualisiert werden kann (aber sie sagen nicht, wie oft).

Warum nicht häufigere Upgrades durchführen?

Was den Wert in der Avionik antreibt, sind normalerweise keine exotischen neuen Funktionen und schon gar keine Rechenleistung. Der Wert wird durch Zuverlässigkeit, Einhaltung von Vorschriften und Einhaltung von Sicherheitsvorschriften bestimmt . Dies erfordert Funktionen, die für den Ingenieur und den Piloten einfach genug sind, um sie zu verstehen, und die robust genug sind, dass Hunderte von Menschenleben davon abhängen. Daher erfordern die neu hinzugefügten Funktionen im Allgemeinen wenig zusätzliche Leistung, und es gibt wenig Anreiz für Spitzentechnologie oder die neuesten Programmierparadigmen wie Cloud Computing, maschinelles Lernen oder Objektorientierung.

Ein Ingenieur bei Rockwell Collins sagte etwas, das für die gesamte Avionik gilt: „In der Vergangenheit hatten wir Mühe, alles, was wir tun mussten, in die Größe des Prozessors und die Geschwindigkeiten zu integrieren, die wir hatten, und wie wir all diese Bits über die Schnittstellen bekommen, die wir hatten Prozessoren, die wir jetzt haben, und Glasfaserschnittstellen, das ist kein Problem mehr ... Jetzt besteht das Problem darin, gute, störungsfreie Software zu verwalten und zu entwerfen und alle beteiligten Codezeilen zu testen Bandbreite, die wir brauchen, wir müssen sicherstellen, dass wir sie nutzen können und uns nicht in die Ecke drängen."

Die Verifizierung ist einer der größten Antriebsfaktoren (und Kosten) bei der Verwendung von Prozessoren und Programmiersprachen. Sämtliche Hard- und Software muss ein Sicherheitsniveau aufweisendaran befestigt, wobei die kritischsten Funktionen (wie Avionik für Autoland) als "Level A" angesehen werden, was bedeutet, dass ein solcher Ausfall der Avionik katastrophal sein könnte. Um die strengen Sicherheitsanforderungen für Level-A-Software zu erfüllen (was oft ein solcher Fehler pro 10^9 Flugstunden ist), müssen die Software und die Hardware umfassend getestet werden, um sicherzustellen, dass nichts schief geht. Dazu gehört, dass jede Bedingung in jeder Codezeile abgedeckt wird. Die meisten Tools, die entwickelt wurden, um mit Ihrer Programmiersprache und Softwarearchitektur zu arbeiten, müssen ebenfalls formal verifiziert (normalerweise als "qualifiziert" bezeichnet) werden. Darüber hinaus müssen kostspielige Flugtests durchgeführt werden, um Änderungen zu bewerten. Dies erzeugt viel Trägheit und bedeutet eine komplette Überarbeitung eines bestehenden Produkts oder einen Neuanfang für ein neues Produkt, nur um ein "

Was ist mit der Unterstützung für neue CPU-Funktionen?

Virtualisierung (die es verschiedenen Betriebssystemen ermöglicht, sich so zu verhalten, als würden sie von selbst laufen, aber tatsächlich mit einer Schicht zwischen sich und der nackten Hardware laufen) und Multi-Core-Verarbeitung wird jetzt von einigen Echtzeit-Betriebssystemen für handelsübliche Prozessoren unterstützt . Diese müssen den Standards in DO-332 und anderen Materialien entsprechen. Laut meinem Text von 2013 befindet sich dies noch in der Untersuchungsphase und es wurde noch keine Avionik mit diesen Merkmalen zertifiziert. Das Hauptproblem ist, dass Mehrkernprozessoren nicht nur mehr Funktionen haben, sondern auch mehr Funktionen, die nicht umfassend dokumentiert oder testbar sind. Weitere Informationen zu Problemen bei der Verwendung von Multi-Core finden Sie im CAST 32 der FAA und in dieser Präsentation .

Virtualisierung (bei der verschiedene Prozesse so tun, als würden sie für sich alleine laufen, aber tatsächlich auf einer virtuellen Maschine laufen) „... hm, die Definition, die ich für Virtualisierung habe, lautet: CPU, Arbeitsspeicher, Speicher, I/O und Netzwerk scheinen ausschließlich im Besitz eines Betriebssystems zu sein und von diesem verwendet zu werden, während tatsächlich mehrere Betriebssysteminstanzen auf denselben Ressourcen ausgeführt werden, die ein Virtualisierer zwischen ihnen teilt. Die Virtualisierung kann durch Hardware oder durch Software erfolgen .
Danke @CodyP für diese ausführliche und informative Antwort auf die Frage. Hier gibt es viele Dinge, die einer genaueren Prüfung bedürfen, aber zwei stechen hervor: 1) multi-core processors [have] features that are not comprehensively documented or testable- mit anderen Worten, zukünftige CPU-Generationen könnten sich als im Wesentlichen ungeeignet für kritische Anwendungen in der Luft- und Raumfahrt erweisen! 2) Es kann eine Zeit kommen, in der die Mikroprozessorhardware, auf der diese sehr konservativen Systeme basieren, einfach nicht mehr verfügbar ist - wird das vielleicht ein Auslöser für eine Neuentwicklung von Software/Hardware von Grund auf sein?
@mins Danke für den Fang!
Umfassend dokumentiert oder testbar bedeutet, dass es interne verborgene Variablen und Funktionen gibt, die nicht vollständig beschrieben sind. Es wird sich wahrscheinlich irgendwann lohnen, Mehrkern-CPUs zu verwenden. Im schlimmsten Fall können Sie einen Kern ausschalten. Vergessen Sie jedoch nicht, dass 1) wir über eingebettete Prozessoren sprechen, nicht über Desktop- oder mobile Prozessoren, es handelt sich also um einen anderen Markt, und Sie werden sehen, dass verschiedene Prozessoren verwendet werden. 2) Sogar der Unterhaltungselektronikmarkt allein ist sehr vielfältig. Immerhin verbaut Apple immer noch Apple-Dual-Core-Prozessoren in iPads.
Bei der Virtualisierung besteht ein Hauptanliegen darin, dass je mehr Dinge Sie auf einer Maschine ausführen, desto mehr geben Sie sich einen „Single Point of Failure“. Wenn in einem Flugzeug etwas kaputt geht, mögen wir Redundanz und Systemunabhängigkeit: Je weniger Dinge kaputt gehen, wenn etwas anderes kaputt geht, desto besser!
@JonStory Ich bin mir nicht sicher, wie stark die Virtualisierung die Single-Point-of-Failure-Analyse beeinflusst, aber ich kann vermuten, dass sie sich bei korrekter Implementierung nicht wesentlich von aktuellen IMAs unterscheiden würde, bei denen möglicherweise Wartung und Fly-by-Wire nebeneinander ausgeführt werden auf einer einzigen Karte. Single Point of Failure wird durch mehrere separate solcher Computer gemildert. Die CPU-Virtualisierung wurde jedoch nicht mit der gleichen robusten Partitionierung entwickelt, die wir in der Avioniksoftware verwenden, sodass die Partitionierung eine Herausforderung darstellen würde.
Ja, es ist definitiv möglich - wie bei allem können wir nur zwei haben ... es ist nur so, dass Sie mehr in ein System stapeln: was großartig für Kostensenkungen ist, aber nicht unbedingt ideal für sicherheitskritische Zuverlässigkeit, wo "Jedes System macht eine Sache, alles von einer Sache und nichts als diese Sache" ist oft nützlicher. Es kann sicherlich ein beherrschbares Risiko sein, aber es ist nichtsdestotrotz ein Risiko
Abgewertet, weil es zwar eine ausführliche Antwort ist, aber die ursprüngliche Frage zu Prozessoren oder Programmiersprachen nicht wirklich beantwortet.
Definitiv nicht C#, ich schätze, du meinst einfach C. C# ist Garbage Collection, etwas, das du auf Echtzeitsystemen definitiv vermeiden würdest.

Viele Faktoren spielen bei der Auswahl der Programmiersprache und des Prozessors für jedes Produkt eine Rolle, einige davon sind:

  • Allgemeiner Zweck des Softwaresystems
  • Ausgewähltes Design Assurance Level (AE)
  • Hardwareeinschränkungen des Produkts
  • Unternehmenserfahrung mit einer Sprache
  • Verfügbare Entwicklungstools
  • Verfügbare Überprüfungstools

Ich glaube, dass die am häufigsten verwendeten Sprachen in sicherheitskritischen Systemen der Luftfahrt C und Ada sind, wobei C++ in den letzten 10 oder 15 Jahren mehr Verwendung gefunden hat.

Prozessoren können von einfachen 8-Bit-SO8-Mikros über PowerPC bis hin zu Multicore-x86- oder ARM-System-on-Chips reichen. Elektronische Hardware wie PLDs und FPGAs werden für bestimmte Arbeitslasten ebenfalls immer beliebter.

Willkommen bei Aviation.SE! Ihre Antwort könnte etwas detaillierter darüber sein, was sich geändert hat, um die Frage vollständig zu beantworten, ist aber ein guter Anfang. Viele Antworten werden im Laufe der Zeit bearbeitet und aufgebaut / verbessert, um mehr Details hinzuzufügen.