Машинний переклад, не перевірений носієм мови. Еталоном є англійська версія.

Початок роботиРедагувати на GitHubДжерело: docs/tutorials/02-clock-holdover.md

Посібник 2 — Holdover годинника: як довго можна триматися

Kind: clock · Сценарій: scenarios/clock-holdover.toml (навчальна копія: scenarios/clock.toml) · Складність: початкова · ~20 хв

До кінця ви виконаєте holdover годинника за відсутності сигналів GNSS (глобальної навігаційної супутникової системи), прочитаєте показник якості синхронізації та зрозумієте закон дрейфу √(q_wf·T), який пояснює, чому оптичний годинник протримається довше за мікрочиповий; цей закон узято з NIST (Національний інститут стандартів і технологій США), а не вигадано.

Що це за сценарій#

Коли сигнали GNSS зникають, система тримає час за власним бортовим годинником. Фаза цього годинника повільно дрейфує, і щойно дрейф перевищує експлуатаційний допуск синхронізації, ви виходите з обслуговування. Holdover — це час, протягом якого ви залишаєтеся в допуску після втрати GNSS, головний показник якості автономності.

Сценарій розгортає часову шкалу тривалістю 2 год: 10 хв синхронізації з GNSS, потім 6600 с (1,83 год) без сигналу, за допуску синхронізації 20 нс, з вибіркою кожні 10 с. Він порівнює два годинники на однаковому коді з їхнім власним опублікованим шумом:

  • Квантовий: оптичний годинник на ґратці зі стронцію, космічна мета σ_y(1 с) = 1×10⁻¹⁵ (arXiv:1503,08457), цільовий показник наземного демонстратора, не літав. σ_y(τ) — девіація Аллана, стандартна міра стабільності частоти годинника за часу усереднення τ.
  • Класичний: мікрочиповий атомний годинник (CSAC) Microchip SA.45s, σ_y(1 с) = 3×10⁻¹⁰ (даташит) — серійна комерційна деталь.

Запуск#

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

Прочитайте однорядковий підсумок#

Із seed = 42, допуском 20 нс і перервою 6600 с:

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 — оптичний годинник витримує всю перерву в 6600 с, не перевищивши 20 нс. Його 95-й процентиль похибки фази становить 1.20e-4 нс, приблизно одну десятитисячну наносекунди: він майже не зсувається.
  • classical holdover 2610s — CSAC перевищує допуск 20 нс приблизно на 2610 с, менш ніж за половину перерви. Його p95 похибки фази (19,7 нс) лежить саме на лінії допуску.
  • security n/a (no attack) — у цьому сценарії не налаштовано жодної атаки, тож виявляти нічого, і підсумок не друкує числа. JSON усе ж містить для кожного годинника аналітичну межу виявності спуфінгу в fom.security (0,997 для оптичного годинника; 0,000 для CSAC, власний шум якого на вільному ході за це вікно вже перевищує 20 нс), позначену applicable: false у блоці figure_tiers. Оцінювання виявлення на реальній атаці — це історія Посібника 3.
  • integrity 1.000 — тут це самоузгодженість фільтра (частка відліків перерви всередині власної k-сигма межі фільтра Калмана), а не авіаційний горизонтальний чи вертикальний рівень захисту (HPL/VPL). Див. docs/INTEGRITY.md.

Некруговий оракул: чому 2610 с для CSAC?#

Для годинника з білою частотною модуляцією (white-FM) 1-σ похибка фази зростає як σ_x(T) ≈ √(q_wf · T), де q_wf = σ_y(1 s)² має одиницю с². Це співвідношення походить із NIST Special Publication 1065 (Riley, Handbook of Frequency Stability Analysis) — співвідношень між σ_y(τ) і фазою; це те саме співвідношення SP-1065, за яким tests/calibration.rs перевіряє девіацію Аллана рушія з точністю ~2 %.

Для CSAC q_wf = (3×10⁻¹⁰)² = 9×10⁻²⁰ s². Знайдімо час, коли 1-σ фаза досягає 20 нс = 2×10⁻⁸ с:

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

Значення рушія 2610 с — це не той 1-σ час, і так має бути. holdover_s — перша точка сітки з кроком 10 с (step_s = 10), у якій абсолютна похибка фази цієї реалізації із зафіксованим seed перевищує 20 нс (src/fom.rs). Перетин рівня випадковим блуканням часто настає значно раніше, ніж його 1-σ огинальна сягає цього рівня, а ще реалізація несе залишкову похибку частоти, яку фільтр має після 600 с синхронізації. Тож закон задає масштаб — кілька тисяч секунд для годинника 3×10⁻¹⁰ проти 20 нс, — а не точне значення. Тест перевіряє діапазон 2000–3200 с навколо нього, а не саме число.

Самі опорні значення з даташитів зовнішні, вони наведені в рядках provenance сценарію: оптична мета на ґратці Sr 1×10⁻¹⁵ (arXiv:1503,08457); CSAC Microchip SA.45s 3×10⁻¹⁰ (даташит). А експортована adev_curve збігається з σ_y(τ) із даташиту з точністю ~2 % (tests/calibration.rs, NIST SP 1065). Побудуйте її в плейграунді як діаграму в подвійному логарифмічному масштабі «Стабільність годинника (ADEV, девіація Аллана)».

Що закріплює тест#

tests/tutorials.rs::tutorial2_clock_holdover_holds:

  • quantum holdover >= classical holdover (оптичний годинник має триматися щонайменше так само довго),
  • quantum holdover ≈ 6600 s (тримається всю перерву),
  • classical holdover ∈ [2000, 3200] s — діапазон допуску навколо масштабу white-FM за SP-1065, а не «магічне число». Оракулом є закон, а не значення.

Підводні камені та одиниці#

  • Показники синхронізації — у наносекундах, ніколи в метрах. (Holdover позиції — це інший пакет, див. розділ про інерціальні системи в Посібнику 3.)
  • q_wf має одиницю с² і дорівнює σ_y(1 с)². Це міст від числа Аллана з даташиту до моделі.
  • Holdover — це нижня межа, квантована сіткою (step_s). Не перечитуйте точне значення; читайте діапазон.
  • integrity тут — це самоузгодженість фільтра, а не авіаційна цілісність.

Що далі#

  • Рівень 2: зменшіть threshold_ns із 20 до 10 і подивіться, як holdover CSAC падає (2610 с → 1300 с, виміряно за допомогою exercises/tier2_sweep.py), або скористайтеся kind = "sweep", щоб звести holdover до таблиці залежно від рівня шуму CSAC classical_q_wf (scenarios/sweep-clock-stability.toml: 25 точок від 10⁻²⁴ до 10⁻¹⁸ с², holdover класичного годинника 2610 с → 250 с).
  • Рівень 3: додайте runs = 200, щоб перетворити це на ансамбль Монте-Карло, і прочитайте діапазон holdover [p05–p95] (scenarios/clock-ensemble.toml друкує classical holdover 844s [220-2130]).
  • Далі — завершальний посібник: Посібник 3 — Квантова проти класичної стійкості.