Machinevertaling, niet beoordeeld door een moedertaalspreker. Engels is de referentie.

Aan de slagBewerken op GitHubBron: docs/tutorials/02-clock-holdover.md

Tutorial 2 — Klok-holdover: hoelang kunt u doorlopen zonder GNSS

Kind: clock · Scenario: scenarios/clock-holdover.toml (leerversie: scenarios/clock.toml) · Moeilijkheid: beginner · ~20 min

Aan het einde hebt u een klok-holdover uitgevoerd met GNSS-signalen (Global Navigation Satellite System) uitgeschakeld, de kwaliteitsmaat voor tijdsynchronisatie gelezen en de driftwet √(q_wf·T) begrepen die verklaart waarom de optische klok het langer volhoudt dan de klok op chipschaal, waarbij de wet afkomstig is van NIST (het Amerikaanse National Institute of Standards and Technology) en niet is verzonnen.

Wat dit scenario is#

Wanneer GNSS-signalen wegvallen, houdt een systeem de tijd bij op zijn eigen klok aan boord. De fase van die klok drijft langzaam af, en zodra de drift de operationele tijdsynchronisatiespecificatie overschrijdt, bent u buiten dienst. Holdover is hoelang u binnen de specificatie blijft na verlies van GNSS: de belangrijkste kwaliteitsmaat voor autonomie.

Het scenario draait een tijdlijn van 2 h: 10 min GNSS-synchronisatie, daarna 6600 s (1,83 h) zonder GNSS, tegen een tijdsynchronisatiespecificatie van 20 ns, elke 10 s bemonsterd. Het vergelijkt twee klokken met identieke code en hun eigen gepubliceerde ruis:

  • Quantum: een strontium-optische roosterklok, ruimtedoel σ_y(1 s) = 1×10⁻¹⁵ (arXiv:1503,08457), een doel voor een demonstrator op de grond, niet gevlogen. σ_y(τ) is de Allan-deviatie, de standaardmaat voor de frequentiestabiliteit van een klok bij middelingstijd τ.
  • Classical: een Microchip SA.45s atoomklok op chipschaal (CSAC), σ_y(1 s) = 3×10⁻¹⁰ (datasheet) — een commercieel onderdeel dat in gebruik is.

Uitvoeren#

cargo run -- scenarios/clock-holdover.toml

Python:

import json, kshana
r = json.loads(kshana.run(open("scenarios/clock-holdover.toml").read()))
print(r["quantum"]["fom"]["holdover_s"], r["classical"]["fom"]["holdover_s"])

Lees de samenvatting van één regel#

Met seed = 42, de specificatie van 20 ns en de uitval van 6600 s:

scenario 5ba83a232b94 | quantum holdover 6600s p95 1.20e-4ns integrity 1.000 security n/a (no attack) | classical holdover 2610s p95 19.7ns integrity 1.000 security n/a (no attack)
  • quantum holdover 6600s — de optische klok houdt de hele uitval van 6600 s vol zonder 20 ns te overschrijden. De fasefout in het 95e percentiel is 1.20e-4 ns, ongeveer een tienduizendste van een nanoseconde: hij beweegt nauwelijks.
  • classical holdover 2610s — de CSAC overschrijdt de specificatie van 20 ns bij ~2610 s, minder dan de helft van de uitval. De p95-fasefout (19,7 ns) zit vlak op de specificatielijn.
  • security n/a (no attack) — dit scenario configureert geen aanval, dus er valt niets te detecteren en de samenvatting drukt geen getal af. De JSON bevat nog wel de analytische detecteerbaarheidsgrens voor spoofing van elke klok in fom.security (0,997 voor de optische klok; 0,000 voor de CSAC, wier eigen doorloopruis over het venster al meer dan 20 ns bedraagt), gemarkeerd met applicable: false in het blok figure_tiers. Detectie scoren tegen een echte aanval is het verhaal van Tutorial 3.
  • integrity 1.000 — hier is dit zelfconsistentie van het filter (het deel van de uitvalsamples binnen de eigen k-sigma-grens van het Kalman-filter), niet een horizontaal of verticaal beschermingsniveau (HPL/VPL) uit de luchtvaart. Zie docs/INTEGRITY.md.

De niet-circulaire onafhankelijke referentie: waarom 2610 s voor de CSAC?#

Voor een klok met witte frequentiemodulatie (white-FM) groeit de 1-σ-fasefout als σ_x(T) ≈ √(q_wf · T), waarbij q_wf = σ_y(1 s)² de eenheid s² heeft. Deze relatie komt uit NIST Special Publication 1065 (Riley, Handbook of Frequency Stability Analysis) — de relaties tussen σ_y(τ) en fase — de zelfde SP-1065-relatie waartegen tests/calibration.rs de Allan-deviatie van de engine controleert tot op ~2 %.

Voor de CSAC is q_wf = (3×10⁻¹⁰)² = 9×10⁻²⁰ s². Los op naar de tijd waarop de 1-σ-fase 20 ns = 2×10⁻⁸ s bereikt:

T ≈ (2e-8)^2 / 9e-20 = 4e-16 / 9e-20 ≈ 4444 s   (1-sigma crossing)

De 2610 s van de engine is niet die 1-σ-tijd, en hoort dat ook niet te zijn. holdover_s is het eerste rasterpunt van 10 s (step_s = 10) waarop de absolute fasefout van deze geseede realisatie 20 ns overschrijdt (src/fom.rs). De eerste doorgang van een random walk door een niveau komt vaak ruim vóór de tijd waarop zijn 1-σ-envelop dat niveau bereikt, en de realisatie draagt ook de restfrequentiefout mee waarmee het filter blijft zitten na de synchronisatie van 600 s. De wet legt dus de schaal vast, enkele duizenden seconden voor een klok van 3×10⁻¹⁰ tegen 20 ns, niet de exacte waarde. De test eist een band van 2000–3200 s eromheen, niet het getal.

De datasheet-ankers zelf zijn extern, aangehaald in de provenance-teksten van het scenario: optisch Sr-roosterdoel 1×10⁻¹⁵ (arXiv:1503,08457); Microchip SA.45s CSAC 3×10⁻¹⁰ (datasheet). En de geëxporteerde adev_curve komt overeen met de σ_y(τ) uit de datasheet tot op ~2 % (tests/calibration.rs, NIST SP 1065). Teken hem in de playground als een log-log-grafiek "Klokstabiliteit (ADEV, Allan-deviatie)".

Wat de test vastlegt#

tests/tutorials.rs::tutorial2_clock_holdover_holds:

  • quantum holdover >= classical holdover (de optische klok moet minstens even lang volhouden),
  • quantum holdover ≈ 6600 s (houdt de volledige uitval vol),
  • classical holdover ∈ [2000, 3200] s — een tolerantieband rond de SP-1065-schaal voor white-FM, niet een magisch getal. De onafhankelijke referentie is de wet, niet de waarde.

Valkuilen en eenheden#

  • Tijdsynchronisatiecijfers zijn in nanoseconden, nooit in meters. (Positie-holdover is een ander pakket — zie het inertiële deel van Tutorial 3.)
  • q_wf heeft de eenheid s² en is gelijk aan σ_y(1 s)². Dat is de brug van een Allan-getal uit een datasheet naar het model.
  • Holdover is een op het raster gekwantiseerde ondergrens (step_s). Lees de exacte waarde niet te letterlijk; lees de band.
  • integrity is hier zelfconsistentie van het filter, geen integriteit in de zin van de luchtvaart.

Hoe nu verder#

  • Tier 2: scherp threshold_ns aan van 20 naar 10 en zie de holdover van de CSAC dalen (2610 s → 1300 s, gemeten met exercises/tier2_sweep.py), of gebruik kind = "sweep" om de holdover uit te zetten tegen het ruisniveau classical_q_wf van de CSAC (scenarios/sweep-clock-stability.toml: 25 punten van 10⁻²⁴ tot 10⁻¹⁸ s², holdover van de klassieke klok 2610 s → 250 s).
  • Tier 3: voeg runs = 200 toe om hier een Monte-Carlo-ensemble van te maken en lees de holdoverband [p05–p95] (scenarios/clock-ensemble.toml drukt classical holdover 844s [220-2130] af).
  • Daarna het sluitstuk: Tutorial 3 — Quantum tegenover klassieke veerkracht.