Apollo Guidance Computer

Navigationscomputer an Bord der Apollo-Raumschiffe der NASA From Wikipedia, the free encyclopedia

Der Apollo Guidance Computer (AGC) war der bei den Apollo-Raumflügen eingesetzte Computer für die Navigation. Er wurde benutzt, um in Echtzeit Fluginformationen zu sammeln und zur Verfügung zu stellen sowie alle Navigationsfunktionen des Apollo-Raumfahrzeugs automatisch zu steuern. Er war damit das erste erkennbar moderne eingebettete System.

Kommando- und Servicemodul des Apollo 15-Raumfahrzeuges
Apollo Guidance Computer

Er wurde ab 1961 für das Apollo-Programm unter der Leitung von Charles Stark Draper am MIT Instrumentation Laboratory entwickelt. Die bei den Flügen benutzte Hardware wurde vom US-amerikanischen Rüstungs- und Elektronikkonzern Raytheon hergestellt.

Einsatz im Apollo-Programm

Bei jedem Mondflug – abgesehen von Apollo 8, die kein Lunar Module (LM) mitführte – wurden jeweils zwei AGC eingesetzt. Einer befand sich im Kommandomodul (CM) des Apollo-Raumfahrzeugs, zuständig für die Navigation bis zur Mondumlaufbahn und zurück, und ein weiterer in der Mondlandefähre, primär zuständig für die sichere Landung auf dem Mond und das Rendezvous mit dem Kommandomodul bei Rückkehr der Aufstiegsstufe. Beide Systeme waren baugleich, aber mit unterschiedlicher Software ausgestattet; die Navigationsdaten waren zwischen den Geräten kompatibel. Der AGC war Bestandteil des sogenannten Primary Guidance, Navigation and Control System (PGNCS, ausgesprochen: pings), dem unabhängigen inertialen Navigationssystem der Apollo-Raumfahrzeuge.

Darüber hinaus wurden bei den Mondmissionen zwei weitere Computer eingesetzt:

  • Ein Launch Vehicle Digital Computer (LVDC) genannter Flugcomputer, der im Booster Instrumentation Ring der Saturn V untergebracht war. Hierbei handelte es sich um einen von der IBM Federal Systems Division gebauten seriellen Rechner.
  • Ein kleiner von TRW gebauter Rechner im sogenannten Abort Guidance System (AGS) der Mondlandefähre. Dieses sollte im Falle eines Fehlers des PGNCS eingesetzt werden. Das AGS konnte zum Start der Landefähre vom Mond und zum Rendezvous mit dem Kommandomodul (CM) benutzt werden, aber nicht zum Landen auf dem Mond.

Anwendung außerhalb des Apollo-Programms

Fly-by-wire-System mit Apollo Gui­dance Computer in einer F-8 „Crusader“ der NASA (1971)

Der AGC bildete 1972 die Basis für ein experimentelles Fly-by-wire-System, welches in einer Vought F-8 „Crusader“ installiert wurde, um die Machbarkeit und die Vorzüge eines rechnergestützten Fly-by-wire-Systems zu demonstrieren. Dabei wurde der AGC nur in der ersten Phase dieses Projekts eingesetzt und in einer zweiten Phase durch einen anderen Rechner ersetzt. Die hierauf folgende Forschung führte zum Fly-by-wire-System des Space Shuttle und indirekt zu den Fly-by-wire-Systemen moderner Luftfahrzeuge.

Beschreibung

Prozessor

Liste der Befehle im Apollo Guidance Com­puter. Zur schnellen Verfügbarkeit war sie auf eine Instrumentenbrett­verkleidung gedruckt.

Der Apollo-Flugcomputer war der erste, bei dem integrierte Schaltkreise (IC) eingesetzt wurden. Die bis 1966 benutzte Block-I-Version des AGC war aus 4100 ICs aufgebaut. Jedes dieser ICs beinhaltete ein einzelnes NOR-Gatter mit drei Eingängen. Bei der ab Apollo 7 eingesetzten Block-II-Version des AGC waren jeweils zwei NOR-Gatter mit drei Eingängen in einem IC mit Flat-Pack-Gehäuse untergebracht. Es wurden etwa 5600 Gatter verbaut. Die in RTL-Logik aufgebauten Gatter wurden von Fairchild Semiconductor hergestellt. Die Verdrahtung der ICs war mittels Wickelverbindung aufgebaut und in Epoxidharz eingegossen. Der Prozessor arbeitete intern mit 16-Bit-Datenworten (14 Bit Daten, 1 Überlaufbit und 1 Vorzeichenbit (Einerkomplement)). Bei der Verwendung als Programmbefehl waren 3 Bit für den Opcode und 12 Bit für die Adresse reserviert.

Weitere Besonderheiten:

  • Der Prozessor arbeitete im Einerkomplement.
  • Der Adressbereich des Prozessors hatte je nach Befehl nur eine Größe von 1 bzw. 4 Ki-Worten. Um den gesamten Speicher ansprechen zu können, wurde der Speicher in umschaltbaren Speicherbänken organisiert.
  • Der Prozessor besaß insgesamt 6 Timer.

Speicher

Der Schreib-Lese-Speicher (RAM) des AGC war als Ringkernspeicher und der Festwertspeicher (ROM) als Core Rope Memory aufgebaut. Der RAM-Bereich konnte von den Astronauten, falls erforderlich, manuell beschrieben werden.

Die Block-I-Version des AGC verfügte über ein RAM mit einer Kapazität von 1024 Datenworten à 16 bit und ein ROM mit einer Kapazität von 12288 Datenworten à 16 bit, die später auf 24576 Datenworte erweitert wurde. Die Block-II-Version des AGC verfügte über ein RAM mit einer Kapazität von 2048 Datenworten und ein ROM mit einer Kapazität von 32768 Datenworten à 16 bit.[1]

Beide Speicher hatten eine Taktzeit von 11,72 μs. Die Datenworte hatten eine Länge von 16 Bit (15 Bit Daten und 1 Paritätsbit (ungerade Parität)).[1]

In heutiger, damals allerdings noch nicht üblicher Terminologie verfügte der AGC so insgesamt über 68 KiB Speicher. 64 KiB wurden als ROM für die gespeicherte Software verwendet. Die restlichen 4 KiB dienten als RAM.

Taktgeber

Als primärer Taktgeber wurde beim AGC ein Quarzoszillator mit einer Taktfrequenz von 2048 kHz benutzt. Dieses Taktsignal wurde durch 2 geteilt, um die internen Operationen des AGC mit einer Frequenz von 1024 kHz abzuarbeiten. Das 1024 kHz-Signal wurde ebenfalls durch 2 geteilt, um ein zweites Taktsignal mit einer Frequenz von 512 kHz zu erzeugen. Dieser MASTER FREQUENCY genannte Takt diente zur Synchronisation der externen Systeme des Apollo-Raumfahrzeugs.

Software

Die Informatikerin Margaret Hamilton vor der ausgedruckten Apollo-Flugsoftware, die am MIT von ihr und ihrem Team entwickelt wurde[2] (1969)

Nachdem die Entwicklung von Software für den AGC ursprünglich im Plan und Budget des Apollo-Programms nicht vorgesehen war, arbeiteten schließlich über 300 Personen daran. Zu den bekannteren gehört heute die Teamleiterin des Flug- und Navigationsprogramms, Margaret Hamilton. Erstmals wurde der Begriff des Software-Engineering etabliert sowie zahlreiche grundlegende Paradigmen desselben. Insbesondere das Prioritätsscheduling erwies sich als entscheidend für den Erfolg der ersten Mondlandung von Apollo 11. Die Software des AGC war in Assembler geschrieben. Ein EXEX genanntes Echtzeitbetriebssystem konnte bis zu sieben Prozesse nach Priorität gewichtet in einem nichtpräemptiven Multitasking-Verfahren bearbeiten. Jeder Prozess musste dabei periodisch die Kontrolle an EXEX zurückgeben. Ein achter Prozess mit diagnostischen Aufgaben wurde mit niedrigster Priorität ständig ausgeführt. Darüber hinaus gab es eine unterbrechungsgesteuerte Komponente, die WAITLIST genannt wurde.

Benutzerschnittstelle

Benutzerschnittstelle des Apollo Gui­dance Computers

Die Benutzerschnittstelle des AGC wurde DSKY (Display/Keyboard) genannt und bestand aus einer Reihe von Ziffernanzeigen und einer Tastatur, die an einen Taschenrechner erinnert. Befehle wurden numerisch als zweistellige Zahlen eingegeben. Für den eigentlichen Befehl gab es die Taste VERB (Verb), während der Parameter, falls erforderlich, mit der Taste NOUN (Substantiv) eingegeben wurde.

Das Kommandomodul verfügte über zwei DSKY, eins auf der Hauptinstrumententafel und eins im unteren Geräteraum in der Nähe des Sextanten zur Ausrichtung des inertialen Navigationssystems. Beide DSKY wurden durch denselben AGC betrieben. Die Mondlandefähre verfügte über nur ein DSKY für seinen AGC.

Gewicht

Zusammen mit dem Interface wogen die AGCs in der Apollo-Kapsel und in der Landefähre je rund 32 kg.

1201- und 1202-Programmalarme

Das Primary Guidance, Navigation and Control System (PGNCS) löste während des Mondabstiegs von Apollo 11 unerwartete Warnmeldungen aus, wobei das AGC zunächst einen 1202-Alarm („Executive overflow – NO CORE SETS“)[3] und anschließend einen 1201-Alarm („Executive overflow – NO VAC AREAS“) anzeigte.[4] Die Reaktion des AGC auf beide Alarme war ein Soft-Neustart. Die Ursache war ein schneller, stetiger Strom von unerwünschtem Verbrauch von Rechenkapazität durch das Rendezvous-Radar (das das umkreisende Kommandomodul verfolgte), das während des Abstiegs absichtlich im Standby-Modus belassen wurde, für den Fall, dass es für einen Abbruch benötigt würde.[5][6]

Während dieses Teils des Anflugs war der Prozessor normalerweise zu fast 85 % ausgelastet. Die zusätzlichen 6.400 Zyklus-Anforderungen pro Sekunde fügten eine Last von umgerechnet 13 % hinzu, sodass gerade noch genug Zeit blieb, um alle geplanten Aufgaben vollständig auszuführen. Fünf Minuten nach Beginn des Abstiegs gab Buzz Aldrin dem Computer den Befehl 1668, der ihn anwies, periodisch DELTAH (die Differenz zwischen der vom Radar erfassten Höhe und der berechneten Höhe) zu berechnen und anzuzeigen. Der Befehl 1668 erhöhte die Prozessorauslastung um weitere 10 %, was zu einem Exekutivüberlauf und einem 1202-Alarm führte. Nachdem er von Houston das „GO“ erhalten hatte, gab Aldrin den Befehl 1668 erneut ein, woraufhin ein weiterer 1202-Alarm auftrat. Bei der Meldung des zweiten Alarms fügte Aldrin den Kommentar hinzu: „Es scheint aufzutreten, wenn wir einen 1668 laufen haben.“ Die AGC-Software war mit Prioritätsplanung ausgelegt und stellte den Betrieb automatisch wieder her, indem sie Aufgaben mit niedrigerer Priorität, einschließlich der 1668-Anzeigeaufgabe, löschte, um ihre kritischen Steuerungs- und Kontrollaufgaben zu erfüllen. Der Flugleiter Steve Bales und sein Support-Team, zu dem auch Jack Garman gehörte, gaben mehrere „GO“-Befehle, und die Landung verlief erfolgreich.[7]

Das Problem wurde weder durch einen Programmierfehler in der AGC noch ein Pilotenfehler oder ein Hardwarefehler verursacht. Es wurde durch ein fehlerhaftes Schnittstellensteuerungsdokument (ICD) zwischen dem PGNCS und der ATCA (Attitude and Translation Control Assembly) verursacht, in dem die Phasensynchronisation zwischen zwei 800-Hz-Signalen nicht festgelegt war – ein Problem, das bereits während der Tests der LM-3 am Startplatz im Rahmen von Apollo 9 bekannt und dokumentiert war.[8] Da das Problem jedoch während der Tests nur einmal aufgetreten war, kamen sie zu dem Schluss, dass es sicherer sei, mit der vorhandenen, bereits getesteten Hardware zu fliegen, als mit einem neueren, aber weitgehend ungetesteten Radarsystem. In der tatsächlichen Hardware war die Position des Rendezvous-Radars mit Synchronisationssignalen codiert, die von einer anderen 800-Hz-Wechselstromquelle angesteuert wurden als der, die der Computer als Zeitreferenz verwendete. Die beiden 800-Hz-Quellen waren frequenzsynchronisiert, aber nicht phasensynchronisiert, und der zufällige Phasenversatz ließ es so erscheinen, als würde die Antenne in ihrer Position schnell „zappeln“, obwohl sie völlig stationär war. Diese Scheinbewegungen erzeugten die schnelle Abfolge von Zyklusversätzen und damit den Fehler 1202.[8]

J. Halcombe Lanings Software- und Computerdesign retteten die Landemission von Apollo 11. Ohne Lanings Entwurf wäre die Landung aufgrund eines instabilen Steuercomputers abgebrochen worden.[8]

Literatur

  • Eldon C. Hall: Journey to the Moon: The History of the Apollo Guidance Computer. American Institute of Aeronautics and Astronautics, Inc., Reston, VA 1996, ISBN 1-56347-185-X.
  • David A. Mindell: Digital Apollo: Human and Machine in Spaceflight. The MIT Press, Cambridge 2008, ISBN 978-0-262-13497-2.
  • Frank O’Brien: The Apollo Guidance Computer : Architecture and Operation. Springer, Berlin, New-York 2010, ISBN 978-1-4419-0876-6.
Commons: Apollo Guidance Computer – Sammlung von Bildern, Videos und Audiodateien

Quellen

  • James Tomayko: The Apollo guidance computer: Hardware. In: Computers in Spaceflight: The NASA Experience. NASA, abgerufen am 23. Mai 2017 (englisch).
  • James Tomayko: The Apollo guidance computer: Software. In: Computers in Spaceflight: The NASA Experience. NASA, abgerufen am 23. Mai 2017 (englisch).
  • James Tomayko: Using the AGC. In: Computers in Spaceflight: The NASA Experience. NASA, abgerufen am 23. Mai 2017 (englisch).
  • Frank O'Brian: The AGC hardware. In: The Apollo Guidance Computer: Architecture and Operation. Springer Verlag, abgerufen am 5. Mai 2018 (englisch).

Einzelnachweise

Related Articles

Wikiwand AI