Maschinelle Übersetzung, nicht von einem Muttersprachler geprüft. Englisch ist die maßgebliche Fassung.

Empfängervertrauen und SeefahrtAuf GitHub bearbeitenQuelle: docs/LUNANET-AFS.md

LunaNet Augmented Forward Signal: Codes, Nachrichtenformat und lunanet-afs-check

Kshana implementiert die Spreizcodes und die Nachrichtenschicht des Augmented Forward Signal (AFS) von LunaNet so, wie eine Ausgabe der Spezifikation sie definiert, und prüft sich gegen die gedruckten Tabellen dieser Ausgabe.

Festlegung. LunaNet Interoperability Specification (LNIS) Version 5, Applicable Document 1 Volume A: LunaNet Signal-In-Space Recommended Standard, Augmented Forward Signal (LSIS-AFS) Version 1,0, 29. Januar 2025 (NASA). Abgerufen am 2026-10-18; PDF-SHA-256 986e0795…e61b6 (Herkunft). Eine spätere Ausgabe ist eine andere Festlegung und kann die Codes ändern: Das Dokument kennzeichnet seine Codetabellen mit {LSIS-TBC} und sagt, sie seien „nur zur Erleichterung von Test- und Integrationsarbeiten enthalten“. Jeder Bericht nennt diese Ausgabe.

Hinweis (beratend): Analyseausgabe eines Forschungs- und Ingenieurwerkzeugs, keine typzugelassene Navigationsausrüstung und kein Dienst für die Sicherheit menschlichen Lebens.

Der Codegenerator von LunaNet AFS, geprüft gegen die gedruckten Spalten der Spezifikation, aus einem echten Lauf der Engine v0.40.0 (`kshana lunanet-afs-check spec`, festgelegt auf LNIS V5, AD1 Volume A (LSIS-AFS) V1.0, 29. Januar 2025; das Dokument kennzeichnet seine Codetabellen mit {LSIS-TBC}). 9 von 10 Prüfungen sind erfüllt; B4 ist NOT MET (420 von 421 stimmten überein). Sie prüft einen Symbolstrom gegen eine Ausgabe einer veröffentlichten Spezifikation und sagt nichts über einen LunaNet-Knoten oder -Dienst. Hinweis (beratend): Analyseausgabe eines Forschungs- und Ingenieurwerkzeugs, keine typzugelassene Navigationsausrüstung und kein Dienst für die Sicherheit menschlichen Lebens. Sie prüft einen Symbolstrom gegen eine Ausgabe einer veröffentlichten Spezifikation und sagt nichts über einen LunaNet-Knoten oder -Dienst.Der Codegenerator von LunaNet AFS, geprüft gegen die gedruckten Spalten der Spezifikation, aus einem echten Lauf der Engine v0.40.0 (`kshana lunanet-afs-check spec`, festgelegt auf LNIS V5, AD1 Volume A (LSIS-AFS) V1.0, 29. Januar 2025; das Dokument kennzeichnet seine Codetabellen mit {LSIS-TBC}). 9 von 10 Prüfungen sind erfüllt; B4 ist NOT MET (420 von 421 stimmten überein). Sie prüft einen Symbolstrom gegen eine Ausgabe einer veröffentlichten Spezifikation und sagt nichts über einen LunaNet-Knoten oder -Dienst. Hinweis (beratend): Analyseausgabe eines Forschungs- und Ingenieurwerkzeugs, keine typzugelassene Navigationsausrüstung und kein Dienst für die Sicherheit menschlichen Lebens. Sie prüft einen Symbolstrom gegen eine Ausgabe einer veröffentlichten Spezifikation und sagt nichts über einen LunaNet-Knoten oder -Dienst.

Was implementiert ist#

Schicht Was Wo
AFS-I (Daten) Gold-Code 2047, auf 2046 Chips zyklisch verkürzt, G2 um eine Chipzahl je PRN verzögert, 1,023 Mchip/s, BPSK(1), 500 Symbol/s, PRN 1 bis 210 iq::signals::lunanet::afs_i, Signalname lunanet-afs-i
AFS-Q (Pilot) Weil-Code 10230 (die Konstruktion von GPS L1C), gestuft mit einem 4-Chip-Sekundärcode (S0 bis S3) und einem 1500-Chip-Tertiär-Weil-Code (12 s), 5,115 Mchip/s, BPSK(5), keine Daten. afs_q und der Signalname lunanet-afs-q sind die Empfängerreplik, primär x sekundär (8 ms): Das Tertiär-Rahmensynchronisations-Overlay von 12 s ist darin weggelassen, weil Akquisition und Verfolgung nicht gegen eine Replik von 12 s korrelieren. afs_q_tiered ist der volle Code von 12 s afs_q, afs_q_with, afs_q_tiered
Träger 2492,028 MHz (LSIS-020) AFS_HZ
Rahmen SP 68 + SB1 52 + 5880 verschachtelte Symbole = 6000 Symbole = 12 s bei 500 Symbol/s iq::lunanet_afs
SB1 9 Bits (FID 2, TOI 7), BCH(51.8), Generator 763 oktal, mit dem 256-Hypothesen-Korrelationsdecoder des Dokuments sb1_encode, sb1_decode
CRC CRC-24Q, Generator (1+X)P(X) (Anhang H) crc24q_bits, crc24q_bytes
Interleaver 60 Zeilen x 98 Spalten, zeilenweise geschrieben und spaltenweise gelesen interleave, deinterleave

Die beiden Komponenten werden von kshana iq scene, acquire, track und sweep wie jedes andere Signal akzeptiert, sodass eine Aufzeichnung nach AFS-I oder AFS-Q durchsucht (kshana iq acquire --signal lunanet-afs-i) und eine synthetische Szene für Tests von Software-Empfängern erzeugt werden kann. Eine synthetische Szene ist, wie bei jedem anderen Signal, eine Datei für einen Software-Empfänger; nichts hier steuert Funkhardware an.

Was nicht implementiert ist#

  • Die LDPC-Kodierung mit Rate 1/2 der Unterrahmen 2 bis 4. Ihre Prüfmatrizen stehen in Anhang 1, einer getrennten Datei, die nicht im PDF steht und nicht mitgeliefert wird. Die Unterrahmen 2 bis 4 werden als undurchsichtige Symbolblöcke der festgelegten Länge geführt und geprüft, und die CRC-24Q-Wörter darin werden nicht verifiziert. Ein Strom, der lunanet-afs-check symbols besteht, ist nicht als Träger gültiger Codewörter nachgewiesen.
  • Nachrichteninhalt (MSG-G1, MSG-G2, MSG-G4, ...): Das Dokument lässt mehrere Definitionen noch zu schreiben (TBW).
  • Codezuweisung je LunaNet-Knoten (Tabelle F-1 ist TBD). Die PRN 1 bis 12 haben vorläufige Testzuweisungen (Tabelle 11). afs_q(prn) verwendet den Primärcode der PRN n mit dem Sekundärcode S((n-1) mod 4); jenseits von PRN 12 ist das das Muster dieser Implementierung, nicht das des Dokuments. afs_q_with und afs_q_tiered nehmen jede Kombination, mit dem Tertiärcode jeder PRN.
  • Link-Budget, Signal-in-Space-Fehler, Leistungs- und Kohärenzanforderungen (LSIS-100 und folgende).

kshana lunanet-afs-check#

kshana lunanet-afs-check spec [--json] [--strict]
kshana lunanet-afs-check symbols <file> [--max-sp-errors <n>] [--json]
kshana lunanet-afs-check generate --frames <n> [--toi0 <t>] --out <file>
  • spec lässt die Implementierung gegen die gedruckten Tabellen und Rechenbeispiele des Dokuments laufen (Zielwerte B1 bis B10 der Vorregistrierung) und gibt jeden mit seiner Anzahl und seinem Status aus. --strict beendet sich mit 1, sofern nicht jeder Zielwert erreicht ist.
  • symbols liest einen Hard-Decision-Symbolstrom (Text aus 0 und 1; Leerraum wird ignoriert) und prüft das Synchronisationsmuster, die SB1-Dekodierung, FID (nur 0 ist definiert), die TOI-Kontinuität (Fortschreiten um eins modulo 100) und den Rahmenabstand (6000 Symbole). Bei jedem Problem endet es mit 1.
  • generate schreibt einen Teststrom: das Synchronisationsmuster des Dokuments, SB1- und Rahmenlängen, mit Platzhalter-Unterrahmen 2 bis 4 (die alternierende Füllung von LSIS-300, nicht LDPC-kodiert, keine Nachricht). Es sind Symbole zum Testen eines Prüfers oder eines Dekoders, keine Wellenform; Kshana schreibt kein Signal.

Python: lunanet_afs_check_spec, lunanet_afs_check_symbols, lunanet_afs_generate. WebAssembly: dieselben Namen. MCP: lunanet_afs_check (mode spec, symbols oder generate). Plugin: /kshana-lunanet-afs-check. Studio und JetBrains: N/A (SURFACES.md).

Ergebnisse#

In xval/lunanet-afs/PREREGISTRATION.md festgelegte Zielwerte, bevor der Generator existierte; Tests in tests/lunanet_afs_codes.rs.

Zielwert Aussage Ergebnis
B1 AFS-I erste und letzte 24 Chips, 210 PRNs MET, 420 von 420
B1b der gedruckte G2-Anfangszustand ist der Zustand nach der gedruckten Verzögerung NOT MET, 0 von 210: Die Behauptung hatte die Richtung falsch. Nachträglich (B1c, nicht vorregistriert): Der gedruckte Zustand ist der Zustand nach 2047 minus der Verzögerung, 210 von 210
B2 Legendre(10223) entspricht Tabelle D-1 MET
B3 AFS-Q primär erste und letzte 24 Chips, 210 PRNs MET, 420 von 420
B4 Legendre(1499) entspricht Tabelle E-1 und tertiär erste und letzte 24 Chips, 210 PRNs NOT MET, 420 von 421: Die Legendre-Folge stimmt überein, und 419 von 420 Codespalten stimmen überein. Die letzten 24 für PRN 147 gedruckten Chips (A14850) sind derselbe Wert, der für PRN 151 gedruckt ist, dessen Code der Generator reproduziert; zwei verschiedene Weil-Indizes (607 und 612) ergeben nicht dieselben letzten 24 Chips, daher ist der Eintrag für PRN 147 höchstwahrscheinlich ein Druckfehler im Dokument. Ohne die separate Code-Datei von Annex 3 lässt sich das nicht klären. Durch einen Test festgeschrieben
B5 Sekundärcodes S0 bis S3 entsprechen Tabelle 10 MET (die eigenen Konstanten des Dokuments)
B6 SB1-Rechenbeispiel aus Abbildung 8 MET: 0x045 wird zu 0x229F61DBB84A0 kodiert und zu FID 0, TOI 69 dekodiert (ein Beispiel)
B7 CRC-24Q-Prüfwert für 123456789 MET: 0xCDE703 (der Katalogwert, außerhalb der Spezifikation)
B8 Rahmenarithmetik MET
B9 Interleaving, dann De-Interleaving MET (eine Eigenschaft, MODELLED)
B10 Synchronisationsmuster MET (68 Symbole; eine Transkriptionsprüfung)

B1 bis B4 sind VALIDATED gegen die gedruckten Tabellen der zitierten Ausgabe, die das Dokument mit {LSIS-TBC} kennzeichnet. Ein Rundlauf Szene–Erfassung–Verfolgung beider Komponenten erfüllt dieselben Zielwerte wie die anderen Signale (tests/iq_signal_matrix.rs).