Apollo Guidance Computer32 de kilograme, 2.048 de cuvinte de memorie de lucru și o tastatură cu verbe și substantive. Așa a ajuns Eagle pe Lună.
Pagina are două părți. Mai întâi conceptele: ce face computerul, cum vorbea echipajul cu el prin DSKY (afișajul cu tastatură al computerului) și cum se orienta modulul lunar (LM). Apoi simulatorul, unde parcurgi o introducere în DSKY și trei secvențe din Apollo 11, tastă cu tastă, și vezi efectul asupra vehiculului: orientarea LM, traiectoria, ce se vede pe hublou și telemetria în timp real.
Afișajul din dreapta e un DSKY simulat care rulează acum V16 N36: monitorizează ceasul misiunii. R1 arată orele, R2 minutele, R3 secundele cu sutimi. Treci cu mouse-ul peste afișaj (sau atinge-l) ca să vezi ce înseamnă fiecare câmp.
1Ce este AGC
AGC era computerul de bord al navelor Apollo, proiectat la MIT Instrumentation Laboratory. Fiecare misiune lunară avea două: unul în modulul de comandă (software-ul Colossus) și unul în modulul lunar (software-ul Luminary; pentru Apollo 11, versiunea Luminary 099). LM mai avea un al doilea computer, mai simplu, construit de TRW: AGS (Abort Guidance System), care putea duce LM înapoi pe orbită dacă AGC se defecta.
Treaba lui se împărțea în trei: navigație (unde sunt și cât de repede merg, din platforma inerțială (IMU), radar și stele), ghidaj (unde trebuie să ajung și ce accelerație îmi trebuie acum) și control (pornește și dozează motorul, orientează nava cu micile propulsoare de orientare, numite RCS).
Software-ul rula pe un mic sistem de operare în timp real: un Executive care pornea lucrări după prioritate și un Waitlist pentru sarcini programate la momente precise. Când avea prea mult de lucru, putea face un restart controlat și să păstreze doar ce era vital. Această proprietate a salvat aterizarea Apollo 11 (vezi alarmele 1201/1202 mai jos).
2DSKY: afișaj și tastatură
DSKY (Display and Keyboard) era singura interfață directă cu computerul. Cifrele sunt electroluminescente, verzi. În partea de sus sunt trei câmpuri de două cifre, dedesubt trei registre de câte cinci cifre cu semn.
| Element | Ce înseamnă |
|---|---|
| PROG | programul major care rulează acum (de exemplu 63 = faza de frânare a coborârii). |
| VERB | acțiunea: afișează, monitorizează, încarcă, schimbă programul, cere aprobare. |
| NOUN | datele asupra cărora acționează verbul: ceasul, altitudinea, vitezele, unghiurile. |
| R1 R2 R3 | cele trei valori ale substantivului. Semnul + sau − înseamnă zecimal; fără semn, octal (codurile de alarmă). |
| COMP ACTY | se aprinde cât timp computerul execută o lucrare; când e stinsă, computerul doar așteaptă. |
| Lămpile | albe: KEY REL, OPR ERR (eroare de operator), STBY, NO ATT etc.; galbene: PROG (alarmă de program), RESTART, ALT și VEL (datele radarului de aterizare nu sunt bune), GIMBAL LOCK, TEMP. |
În simulator, când treci cu mouse-ul peste un câmp, un registru sau o lampă a DSKY-ului, apare o explicație: ce înseamnă valoarea, în ce unități e și cum se citește formatul (de exemplu, de ce +01234 înseamnă 123,4). Pe ecran tactil atingi câmpul.
Tastele
VERB și NOUN pregătesc introducerea celor două cifre. ENTR execută. PRO (proceed) răspunde „da, continuă” la o cerere a computerului. CLR șterge ce ai tastat, RSET stinge lămpile de eroare, iar KEY REL îi dă tastatura înapoi programului după ce ai cerut tu un afișaj. + și − marchează semnul când încarci numere.
3Verb + Noun: limbajul echipajului
O comandă e o propoziție scurtă: un verb și un substantiv. VERB 1 6 NOUN 3 6 ENTR, prescurtat V16N36E, înseamnă „monitorizează (16) ceasul (36)”. Programele folosesc același limbaj în sens invers: când computerul afișează un verb și un substantiv care clipesc, îți pune o întrebare și așteaptă răspunsul (de obicei PRO).
| Verb | Acțiune |
|---|---|
| V05 | afișează în octal (de ex. N09, codurile de alarmă) |
| V06 | afișează în zecimal |
| V16 | monitorizează în zecimal, actualizat la fiecare secundă |
| V34 | încheie afișajul sau programul curent |
| V35 | testul lămpilor DSKY |
| V37 | schimbă programul (V37E, apoi numărul programului, E) |
| V50 | „te rog execută” (de ex. V50N18: rotește nava) |
| V57 | permite actualizarea altitudinii cu radarul de aterizare |
| V82 | afișează parametrii orbitei (N44) |
| V99 | „autorizezi aprinderea motorului?” (cere PRO) |
| Noun | Date (R1 / R2 / R3) |
|---|---|
| N09 | coduri de alarmă |
| N18 | unghiurile de orientare dorite |
| N33 | ora aprinderii (TIG) |
| N36 | ceasul AGC: ore / minute / secunde |
| N40 | timp față de aprindere / ΔV rămas / ΔV realizat |
| N42, N44 | apolună / perilună / ΔV sau timp |
| N61 | timp până la creșterea tracțiunii / timp față de aprindere / abatere laterală |
| N62 | viteză / timp față de aprindere / ΔV |
| N63 | viteză inerțială / viteză verticală / altitudine |
| N64 | timp LPD + unghi LPD / viteză verticală / altitudine |
| N68 | distanță până la sit / timp rămas / Δh |
4Cum introduci comenzile
Echipajele scriau comenzile prescurtat: V pentru VERB, N pentru NOUN, E pentru ENTR. V16N36E înseamnă că apeși, în ordine, VERB 1 6 NOUN 3 6 ENTR. Aceeași notație apare în pașii simulatorului.
Pas cu pas: V16N36E
| Apeși | Ce se vede pe DSKY |
|---|---|
| VERB | câmpul VERB se golește și așteaptă două cifre; orice clipire se oprește cât timp scrii. |
| 1 6 | în VERB apare 16. O a treia cifră aprinde OPR ERR. |
| NOUN | câmpul NOUN se golește și așteaptă două cifre. |
| 3 6 | în NOUN apare 36. |
| ENTR | computerul execută comanda: R1, R2 și R3 arată orele, minutele și secundele. Cu verbul 16 valorile se actualizează la fiecare secundă. |
Până la ENTR nimic nu se execută, deci poți corecta: CLR șterge câmpul pe care îl scrii, iar o nouă apăsare pe VERB sau NOUN rescrie câmpul respectiv de la zero.
Situații speciale
| Tastezi | Ce se întâmplă |
|---|---|
| V37E 63E | schimbă programul. După primul ENTR câmpul NOUN clipește gol: cele două cifre tastate acum sunt numărul programului, fără să mai apeși NOUN. |
| V16E | verb fără substantiv: se aplică substantivului deja afișat. |
| V34E V35E V36E V57E V82E | verbe care nu au nevoie de substantiv: încheie, test lămpi, pornire curată, folosește radarul de aterizare, parametrii orbitei. |
| PRO | răspunde „da” la un verb și substantiv care clipesc. V34E răspunde „nu” și abandonează programul. ENTR singur nu e un răspuns. |
| KEY REL | cât timp afișezi ceva cerut de tine (de exemplu V16N68), programul nu-și poate arăta cererile și lampa KEY REL clipește. KEY REL sau V34E îi dă tastatura înapoi. |
| RSET | stinge lămpile OPR ERR și PROG; nu anulează nicio comandă. |
| + − | semnul unui număr când încarci date cu verbele 21–25. Încărcarea nu e simulată, așa că aici aprind OPR ERR. |
Ce aprinde OPR ERR
Cifre tastate fără VERB sau NOUN înainte, o a treia cifră într-un câmp, un verb sau un substantiv necunoscut, un program inexistent sau nepermis acum (de exemplu P40 înainte de P30). Simulatorul afișează de fiecare dată un mesaj scurt cu motivul. Apeși RSET și reiei comanda.
Ce înțelege simulatorul
Verbele 05 (doar cu N09), 06, 16, 34, 35, 36, 37, 57 și 82; verbele 50 și 99 le afișează doar computerul, ca cereri. Substantivele 09, 18, 20, 33, 36, 40, 42, 43, 44, 45, 60, 61, 62, 63, 64, 68, 74, 76, 81, 85 și 94. Programele 00, 12, 30, 40, 63 și 68 se aleg cu V37; 64, 65 și 66 pornesc singure sau din comenzile echipajului.
Tastatura calculatorului și ecranul tactil
| Tastă | Tasta DSKY |
|---|---|
| V / N | VERB / NOUN |
| 0–9 | cifrele |
| Enter sau E | ENTR |
| P | PRO |
| C sau Esc | CLR |
| R | RSET |
| K | KEY REL |
| + / − | + / − |
| Tastă | Panoul echipajului |
|---|---|
| W / S | maneta ACA înainte / înapoi |
| ↑ / ↓ | comutatorul ROD: coborâre mai lentă / mai rapidă |
| Y | rotire 180° (fața în sus) |
| X | ENGINE STOP |
| Spațiu | pauză |
ACA (Attitude Controller Assembly) este maneta cu care comandantul orientează LM; în P64 aceeași manetă mută ținta aterizării. ROD (Rate Of Descent) este comutatorul care, în P66, mărește sau micșorează viteza de coborâre cu 1 ft/s (0,3 m/s) la fiecare clic.
Pe ecran tactil apeși direct tastele DSKY. Butoanele ACA și ROD repetă comanda cât timp le ții apăsate. Fiecare pas din simulator are și butonul „Tastează pentru mine”, care apasă tastele în ordine, ca să urmărești secvența pe afișaj.
5Programe
Programele majore (afișate în PROG) sunt fazele zborului. Echipajul le alegea cu V37; unele se schimbau singure, de exemplu din P63 în P64 la poarta înaltă.
Poarta înaltă (în engleză high gate, termen preluat din aviație) este punctul în care se termină frânarea: circa 2,4 km altitudine (7.800 ft) și 7 km înainte de locul de aterizare, cu viteza redusă la circa 140 m/s. De acolo LM se ridică spre verticală, iar echipajul vede pentru prima dată locul de aterizare prin hublou. Poarta joasă (low gate) e capătul apropierii: circa 150 m altitudine și câteva sute de metri de țintă. De acolo echipajul putea lăsa computerul să aterizeze sau putea prelua controlul.
| Program | Rol |
|---|---|
| P00 | inactiv („POO”): computerul doar navighează |
| P12 | decolarea de pe Lună cu motorul de urcare (APS) |
| P30 | încarcă o manevră calculată la sol: ora și vectorul ΔV |
| P40 | execută aprinderea motorului de coborâre (DPS) pentru acea manevră |
| P52 | alinierea platformei inerțiale după stele |
| P63 | frânarea: de la 15 km și ≈ 1.700 m/s până la poarta înaltă |
| P64 | apropierea: LM se înclină ca echipajul să vadă locul de aterizare; unghiul afișat se citește pe scala LPD (Landing Point Designator) gravată pe hublou |
| P65 | aterizare complet automată (n-a fost folosită în zbor) |
| P66 | comandantul controlează orientarea și rata de coborâre, computerul dozează motorul |
| P68 | confirmarea aterizării și poziția pe suprafață; echipajul o alege cu V37E68E după ce e sigur că nu trebuie să decoleze imediat |
6Navigație și orientarea LM
Platforma inerțială (IMU) e un bloc cu giroscoape ținut fix față de stele prin trei cadre cardanice. Unghiurile dintre platformă și navă dau orientarea; accelerometrele de pe platformă dau schimbarea vitezei. Din ele AGC își ține la zi vectorul de stare: poziția și viteza.
Axele LM sunt diferite de cele ale unui avion. X merge în sus, de-a lungul tracțiunii motorului. Z merge înainte, prin hublouri și trapă. Y merge spre dreapta. Rotația în jurul lui X se numește yaw (girație), în jurul lui Y pitch (tangaj), în jurul lui Z roll (ruliu).
Fața în jos, fața în sus
La frânare tracțiunea trebuie să fie aproape opusă vitezei, deci axa X stă aproape orizontal. Apollo 11 a început coborârea cu hublourile spre Lună (fața în jos), ca să recunoască repere. După câteva minute echipajul a rotit LM cu 180° în jurul axei X (yaw), cu fața în sus, ca radarul de aterizare să vadă solul. Atunci prin hublou se vedea cerul negru și Pământul. La începutul P64 nava se ridică spre verticală și solul reapare în partea de jos a hubloului.
Radarul de aterizare și Δh
Altitudinea calculată de AGC venea din navigația inerțială, cu o eroare de câteva sute de metri. Radarul de aterizare (LR) măsura altitudinea direct. Diferența, numită Δh, apărea în registrul R3 al lui N68; de aceea a cerut Aldrin V16N68. După ce controlorii de la sol au aprobat valoarea și echipajul a tastat V57E, computerul începea să folosească radarul și Δh scădea spre zero. Lămpile ALT și VEL de pe DSKY se sting când radarul a prins solul.
7Coborârea, pe faze
DOI (Descent Orbit Insertion) e o aprindere scurtă, de circa 20–25 m/s, făcută cu jumătate de orbită înainte. Coboară perilună de la circa 110 km la 15 km. PDI (Powered Descent Initiation) pornește motorul de coborâre aproape de perilună, la circa 460 km de locul de aterizare. Primele 26 de secunde merge la 10 %, cât se aliniază motorul cu centrul de masă, apoi la tracțiune maximă.
Frânarea (P63) ține până la poarta înaltă, apropierea (P64) până la poarta joasă, iar ultima sută de metri o face fie computerul (P65), fie comandantul (P66).
De ce 94 % și apoi „reducerea tracțiunii”? Motorul de coborâre (DPS) se putea regla continuu doar între 10 % și 65 % din tracțiunea nominală de 46,7 kN. Între 65 % și circa 93 % camera de ardere ablativă se eroda prea repede, așa că acolo motorul lucra doar într-o poziție fixă, la tracțiunea maximă (FTP, fixed throttle position: circa 43,9 kN, adică 94 % în simulator). Ghidajul era gândit să ceară mai mult de 65 % aproape toată frânarea, deci motorul stătea la FTP. Cu circa două minute înainte de poarta înaltă comanda scădea sub prag și motorul trecea în zona reglabilă (throttle recovery), ca să rămână marjă de corecție pentru apropiere.
Ghidajul din Luminary calculează la fiecare 2 secunde accelerația necesară pentru a ajunge într-un punct-țintă cu viteza, accelerația și „smucitura” dorite. Timpul rămas până la țintă (TGO) se recalculează la fiecare ciclu. Simulatorul folosește aceeași formă a legii de ghidaj, cu ținte aproximate.
La Apollo 11, o mică eroare de navigație a făcut ca Eagle să fie cu circa 6 km mai departe decât plănuise. Locul spre care îl ducea computerul era chiar lângă craterul West, într-un câmp de bolovani. De aceea Armstrong a trecut în P66 și a zburat manual încă vreo 400 de metri. Simulatorul reproduce această situație.
8Alarmele 1201 și 1202
Comutatorul radarului de întâlnire era într-o poziție care făcea electronica lui să trimită spre AGC mii de impulsuri inutile pe secundă. Cauza era o nepotrivire de fază între alimentările de 800 Hz ale electronicii radarului și ale AGC: contoarele de unghi oscilau continuu, iar impulsurile mâncau 13–15 % din timpul procesorului. Când Aldrin a cerut în plus monitorizarea V16N68, rezerva de calcul s-a terminat.
Executive-ul nu mai avea zone de memorie libere pentru o nouă lucrare: 1202 înseamnă că nu mai erau „core sets”, 1201 că nu mai erau zone VAC. Computerul a făcut un restart controlat, a abandonat lucrările neesențiale și a continuat ghidajul. Au fost cinci alarme, la 316, 356, 552, 578 și 594 de secunde după PDI. Controlorii Steve Bales și Jack Garman au decis în câteva secunde că aterizarea poate continua.
9Despre simulator
Simulatorul nu rulează codul original Luminary (pentru asta există Virtual AGC). Reproduce comportamentul vizibil: verbe, substantive, programe, cereri care clipesc, alarme. Dedesubt rulează o fizică reală: gravitația Lunii, masa care scade odată cu consumul, limitele motorului (10–65 % sau 94 %) și o lege de ghidaj de tip Luminary.
Simplificări: zborul e plan (fără deplasare laterală), Luna e sferică și nu se rotește, platforma inerțială e perfectă, iar orientarea e redusă la tangaj și yaw. Unghiurile din N18 și N20 sunt măsurate față de verticala locală, nu față de platforma inerțială. Ghidajul se recalculează la 0,5 s (în Luminary, la 2 s). Craterele sunt generate procedural; doar craterul West e plasat intenționat lângă țintă. Eroarea inițială de altitudine a AGC (≈ 850 m) e aleasă pentru simulator. DSKY-ul real afișa unități imperiale (picioare, ft/s, mile marine); aici le poți alege din bara de sus. Implicit sunt metrice.
Cum îl folosești
Alegi un scenariu din bara de sus. Lista de pași îți spune ce tastezi și ce efect are; tastele și scurtăturile sunt descrise în secțiunea 4. Cât timp aștepți un eveniment, accelerează timpul; simulatorul revine singur la 1× când are nevoie de tine.
10Surse
Secvențele de taste, orele misiunii și valorile afișate vin din sursele de mai jos. Țintele legii de ghidaj din simulator sunt aproximări ale mele, alese astfel încât fazele să cadă la momentele din Apollo 11; nu sunt constantele din Luminary 099.
- Virtual AGC, Ron Burkey și colaboratorii. Folosit pentru: emulatorul AGC și DSKY, codul original Colossus și Luminary, exemplele V35E, V16N36E, V37E00E și V05N09E.
- Moonjs: An Online Apollo Guidance Computer Simulator, Shahriar Iravanian. Folosit pentru: Virtual AGC rulat în browser; exemple de comenzi (V16N65E, V06N62E, V91E).
- Apollo Guidance Computer Simulator, Mau0x80, GitHub. Folosit pentru: lămpile și tastele DSKY, scurtăturile de tastatură. Atenție: tabelul lor de faze trece PDI la 101:36:14, care e de fapt ora DOI; PDI a fost la 102:33:05.
- Tales from the Lunar Module Guidance Computer, Don Eyles. Folosit pentru: secvența V16N68 și alarmele 1202, conținutul N63, N64 și N68, unghiul LPD.
- LGC-Astronaut Interfaces During Landing (Luminary 1D), Don Eyles. Folosit pentru: conținutul N61, N62, N63, N64, N68 și N60, selectarea P68 cu V37E68E, redesemnarea LPD, comutatorul ROD (1 ft/s pe clic).
- A User’s Guide to the Luminary 1A Lunar Landing Programs, George W. Cherry și Don Eyles (MIT). Folosit pentru: condițiile nominale la PDI și la poarta înaltă (≈ 2,4 km, ≈ 7 km, ≈ 140 m/s).
- Apollo Experience Report: Descent and Ascent (TN D-6846), NASA. Folosit pentru: profilurile nominale ale coborârii și urcării Apollo 11.
- Apollo Operations Handbook, LM, secțiunea LGC/DSKY (LMA790-3-LM 4.4), NASA / Grumman. Folosit pentru: regulile DSKY: afișaje care clipesc, KEY REL, restricții pentru verbe și substantive.
- GSOP R-567, secțiunea 4: programele LM, MIT Instrumentation Laboratory. Folosit pentru: P12: ridicare verticală până la 40 ft/s, apoi înclinarea spre orizontală.
- Luminary 069, P12.agc, Virtual AGC. Folosit pentru: datele afișate în N76 la decolare.
- Simple AGC, NASSP (Project Apollo pentru Orbiter). Folosit pentru: succesiunea N62, V99N62 și N63 la PDI; semnificația N64 și N68.
- LM Descent to the Moon, Part 1: Theory and Software, Exo Cruiser. Folosit pentru: valorile N63 la aprindere, tracțiunea maximă de 43.900 N după 26 s, unghiul LPD de 33° la poarta joasă.
- Apollo 11 1201 and 1202 alarms, Space Daily, după analiza MIT din 4 august 1969. Folosit pentru: momentele celor cinci alarme: 316, 356, 552, 578 și 594 s după PDI.
- The Apollo 11 Moon Landing, We Hack the Moon (Draper). Folosit pentru: stingerea lămpilor ALT și VEL la ≈ 38.000 ft și cauza alarmelor 1202.
Cum tastezi comenzile
V16N36E = VERB 1 6 NOUN 3 6 ENTR. Nimic nu se execută până la ENTR; CLR șterge câmpul pe care îl scrii. Treci cu mouse-ul peste afișaj sau peste lămpi ca să vezi ce înseamnă fiecare valoare.