Strojový překlad, nekontrolovaný rodilým mluvčím. Referenční je anglická verze.

ZačínámeUpravit na GitHubuZdroj: docs/tutorials/02-clock-holdover.md

Tutoriál 2 — Holdover hodin: jak dlouho lze setrvat bez signálu

Kind: clock · Scénář: scenarios/clock-holdover.toml (výuková kopie: scenarios/clock.toml) · Obtížnost: začátečník · ~20 min

Na konci budete mít za sebou holdover hodin při odepřených signálech GNSS (globálního družicového navigačního systému), přečtete si ukazatel kvality časování a pochopíte zákon driftu √(q_wf·T), který vysvětluje, proč optické hodiny vydrží déle než čipové; zákon je převzat z NIST (amerického Národního institutu standardů a technologie), nikoli vymyšlen.

Co tento scénář je#

Když signály GNSS zmizí, systém udržuje čas na vlastních palubních hodinách. Fáze těchto hodin pomalu driftuje, a jakmile drift překročí provozní specifikaci časování, jste mimo provoz. Holdover je doba, po kterou zůstanete ve specifikaci po ztrátě GNSS — hlavní ukazatel kvality autonomie.

Scénář běží na časové ose 2 h: 10 min synchronizace GNSS, poté 6600 s (1,83 h) bez signálu, proti specifikaci časování 20 ns, se vzorkováním každých 10 s. Porovnává dvoje hodiny na identickém kódu s jejich vlastním publikovaným šumem:

  • Kvantové: stronciové optické mřížkové hodiny, kosmický cíl σ_y(1 s) = 1×10⁻¹⁵ (arXiv:1503,08457), cíl pozemního demonstrátoru, nikoli letově ověřený. σ_y(τ) je Allanova odchylka, standardní míra frekvenční stability hodin při průměrovacím čase τ.
  • Klasické: čipové atomové hodiny (CSAC) Microchip SA.45s, σ_y(1 s) = 3×10⁻¹⁰ (datasheet) — nasazený komerční díl.

Spusťte jej#

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"])

Přečtěte si jednořádkové shrnutí#

Se seedem = 42, specifikací 20 ns a výpadkem 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 — optické hodiny vydrží celý výpadek 6600 s bez překročení 20 ns. Jejich 95. percentil fázové chyby je 1.20e-4 ns, tedy asi desetitisícina nanosekundy: sotva se pohne.
  • classical holdover 2610s — CSAC překročí specifikaci 20 ns přibližně v ~2610 s, tedy za méně než polovinu výpadku. Jeho fázová chyba p95 (19,7 ns) leží těsně na hranici specifikace.
  • security n/a (no attack) — tento scénář nenastavuje žádný útok, takže není co detekovat a shrnutí číslo nevypisuje. JSON však přesto nese analytickou mez detekovatelnosti spoofingu pro každé hodiny v fom.security (0,997 pro optické hodiny; 0,000 pro CSAC, jehož vlastní šum při setrvání v daném okně již překračuje 20 ns), označenou applicable: false v bloku figure_tiers. Hodnocení detekce proti skutečnému útoku je příběh Tutoriálu 3.
  • integrity 1.000 — zde jde o vnitřní konzistenci filtru (podíl vzorků výpadku uvnitř vlastní k-sigma meze Kalmanova filtru), nikoli o letecké horizontální či vertikální ochranné úrovně (HPL/VPL). Viz docs/INTEGRITY.md.

Nekruhové orákulum: proč 2610 s pro CSAC?#

U hodin s bílou frekvenční modulací (white-FM) roste fázová chyba 1-σ jako σ_x(T) ≈ √(q_wf · T), kde q_wf = σ_y(1 s)² má jednotky s². Tento vztah pochází z NIST Special Publication 1065 (Riley, Handbook of Frequency Stability Analysis) — vztahy σ_y(τ)↔fáze — a je to tentýž vztah SP-1065, proti němuž tests/calibration.rs ověřuje Allanovu odchylku enginu s přesností ~2 %.

Pro CSAC platí q_wf = (3×10⁻¹⁰)² = 9×10⁻²⁰ s². Vyřešte čas, kdy fáze 1-σ dosáhne 20 ns = 2×10⁻⁸ s:

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

Hodnota 2610 s z enginu není tento čas 1-σ a ani být nemá. holdover_s je první bod mřížky po 10 s (step_s = 10), ve kterém absolutní fázová chyba této seedované realizace překročí 20 ns (src/fom.rs). První překročení úrovně náhodnou procházkou často nastane dlouho předtím, než její obálka 1-σ té úrovně dosáhne, a realizace navíc nese zbytkovou frekvenční chybu, která filtru zůstane po synchronizaci 600 s. Zákon tedy určuje řádovou škálu, několik tisíc sekund pro hodiny 3×10⁻¹⁰ proti 20 ns, nikoli přesnou hodnotu. Test ověřuje pásmo 2000–3200 s kolem ní, nikoli konkrétní číslo.

Samotné kotevní hodnoty z datasheetu jsou externí, citované v řetězcích provenance scénáře: cíl optických mřížkových hodin Sr 1×10⁻¹⁵ (arXiv:1503,08457); Microchip SA.45s CSAC 3×10⁻¹⁰ (datasheet). A exportovaná adev_curve odpovídá σ_y(τ) z datasheetu s přesností ~2 % (tests/calibration.rs, NIST SP 1065). V playgroundu ji vykreslete jako log-log graf „Stabilita hodin (ADEV, Allanova odchylka)“.

Co test zafixuje#

tests/tutorials.rs::tutorial2_clock_holdover_holds:

  • quantum holdover >= classical holdover (optické hodiny musí vydržet alespoň stejně dlouho),
  • quantum holdover ≈ 6600 s (vydrží celý výpadek),
  • classical holdover ∈ [2000, 3200] s — tolerančním pásmem kolem škály white-FM podle SP-1065, nikoli magickým číslem. Orákulem je zákon, nikoli hodnota.

Úskalí a jednotky#

  • Údaje o časování jsou v nanosekundách, nikdy v metrech. (Holdover polohy je jiný balíček — viz inerciální část Tutoriálu 3.)
  • q_wf má jednotky s² a rovná se σ_y(1 s)². To je most od Allanova čísla z datasheetu k modelu.
  • Holdover je dolní mez kvantovaná mřížkou (step_s). Nepřeceňujte přesnou hodnotu; čtěte pásmo.
  • integrity je zde vnitřní konzistence filtru, nikoli letecká integrita.

Kam dál#

  • Úroveň 2: zpřísněte threshold_ns z 20 na 10 a sledujte, jak holdover CSAC klesne (2610 s → 1300 s, změřeno pomocí exercises/tier2_sweep.py), nebo použijte kind = "sweep" k vytvoření tabulky holdoveru proti úrovni šumu CSAC classical_q_wf (scenarios/sweep-clock-stability.toml: 25 bodů od 10⁻²⁴ do 10⁻¹⁸ s², klasický holdover 2610 s → 250 s).
  • Úroveň 3: přidejte runs = 200, čímž z toho uděláte soubor Monte Carlo, a přečtěte si pásmo holdoveru [p05–p95] (scenarios/clock-ensemble.toml vypíše classical holdover 844s [220-2130]).
  • Poté vrcholový tutoriál: Tutoriál 3 — Kvantová odolnost proti klasické.