Tłumaczenie maszynowe, niezweryfikowane przez osobę, dla której polski jest językiem ojczystym. Wzorcem jest wersja angielska.

Synchronizacja czasuEdytuj na GitHubieŹródło: docs/TIMING-HIL.md

Synchronizacja czasu hardware-in-the-loop: odłącz antenę, oceń holdover

Operatorzy telekomunikacyjni i energetyczni testują system synchronizacji, odbierając mu GNSS i obserwując, co robi zegar. Kshana tego za nich nie robi i nie dotyka ich sprzętu. Czyta zapis błędu czasu, który wytworzyły własne przyrządy operatora, dzieli go w dwóch podanych przez operatora chwilach i mierzy każdy krok względem publicznych masek ITU-T. Rodzaj scenariusza to holdover-test; scenariusze przykładowe to scenarios/holdover-test-example.toml i scenarios/holdover-test-ptp4l.toml.

To etap 1 bezpieczeństwa sprzętu: pasywny, tylko odbiór, bez RF z Kshana (HARDWARE-SAFETY.md). Oprogramowanie wyłącznie doradcze, nie jest to sprzęt z zatwierdzeniem typu. Nikt nie ocenił, nie zatwierdził ani nie zweryfikował tej procedury i nic ona nie mówi o tym, czy system spełnia Zalecenie.

Test holdover oceniony na podstawie zapisu błędu czasu, z prawdziwego przebiegu silnika v0.40.0 na scenarios/holdover-test-example.toml (601 próbek co 5 s). GNSS jest odłączany przez operatora w 600 s i przywracany w 2400 s; błąd czasu dryfuje do 299 ns na końcu holdover, przekracza budżet 100 ns po 675 s i wraca do pasma 100 ns 70 s po przywróceniu. Werdykty: maski bazowe PASS, maski holdover FAIL, obwiednia holdover FAIL, powrót RECOVERED. Zmierzono względem maski, to nie jest zatwierdzenie. Czasy są oświadczeniem operatora, niezweryfikowanym przez Kshana. Wyłącznie doradczo: wynik analizy z narzędzia badawczo-inżynieryjnego; nie jest to sprzęt nawigacyjny z zatwierdzeniem typu ani usługa bezpieczeństwa życia.Test holdover oceniony na podstawie zapisu błędu czasu, z prawdziwego przebiegu silnika v0.40.0 na scenarios/holdover-test-example.toml (601 próbek co 5 s). GNSS jest odłączany przez operatora w 600 s i przywracany w 2400 s; błąd czasu dryfuje do 299 ns na końcu holdover, przekracza budżet 100 ns po 675 s i wraca do pasma 100 ns 70 s po przywróceniu. Werdykty: maski bazowe PASS, maski holdover FAIL, obwiednia holdover FAIL, powrót RECOVERED. Zmierzono względem maski, to nie jest zatwierdzenie. Czasy są oświadczeniem operatora, niezweryfikowanym przez Kshana. Wyłącznie doradczo: wynik analizy z narzędzia badawczo-inżynieryjnego; nie jest to sprzęt nawigacyjny z zatwierdzeniem typu ani usługa bezpieczeństwa życia.

Procedura#

Operator wykonuje cztery kroki. Kshana nie wykonuje żadnego z nich.

Krok Co robi operator Co pokazuje zapis
1. Stan wyjściowy Pozwala systemowi pracować zablokowanemu na GNSS tak długo, jak potrzebuje test (i odnotowuje, przez ile dni był wcześniej zablokowany). Błąd czasu przy dyscyplinowaniu.
2. Usunięcie GNSS Odłącza GNSS od badanego systemu, na przykład kabel anteny przy odbiorniku albo wyjście własnego symulatora laboratorium, i zapisuje czas. Najpierw sprawdź instrukcję producenta odbiornika: niektóre odbiorniki zasilają antenę, a niektóre potrzebują terminatora na otwartym porcie. Chwila, w której błąd czasu zaczyna dryfować.
3. Holdover Pozostawia system na własnym oscylatorze przez zaplanowany czas. Holdover systemu.
4. Powrót Przywraca GNSS i zapisuje czas. Błąd czasu wraca (lub nie).

Dwie rzeczy, które operator musi zrobić, bo Kshana nie może:

  • Podać dwa czasy. gnss_removed_s i gnss_restored_s to oświadczenie operatora. Kshana nie wykrywa usunięcia sygnału w zapisie i nie weryfikuje tych czasów. Błędny czas przesuwa granice kroków, a więc i wynik.
  • Użyj tego samego zegara dla zapisu i dla czasów. W logu zegara oś czasu zaczyna się od pierwszego odczytu, więc oba czasy są sekundami od pierwszej linii logu.

Co zapisać#

Dowolne z poniższych, przez istniejące czytniki clock_log (CLOCK-LOG-FORMATS.md):

Przyrząd Format Jak powstaje zapis
linuxptp ptp4l (serwomechanizm zegara podrzędnego lub granicznego) ptp4l uruchom z -m i zachowaj linie ptp4l[time]: master offset N sK freq ...
linuxptp phc2sys phc2sys linie phc2sys[time]: CLOCK_REALTIME phc offset N sK ...
linuxptp ts2phc ts2phc linie ts2phc[time]: /dev/ptpN offset N sK ...
chrony tracking.log chrony-tracking log tracking w chrony.conf
chrony statistics.log chrony-statistics log statistics w chrony.conf
licznik TAPR TICC ticc tryb znaczników czasu względem wzorca
eksport ASCII z TimeLab timelab faza w podanej jednostce
plik zegara RINEX rinex-clk jeden zegar
cokolwiek innego samples lub csv_path pary time_s,time_error_ns, próbkowane równomiernie

Ma znaczenie, co zapis mierzy. Log serwomechanizmu (linuxptp, chrony) rejestruje przesunięcie, które demon zmierzył i koryguje: to błąd czasu pozostały pod kontrolą serwomechanizmu, a nie niezależny pomiar zegara względem UTC. W kroku holdover testu, który naprawdę odbiera wzorzec, log serwomechanizmu nadal pokazuje to, co demon uważał, a to może różnić się od prawdziwego błędu. Mocniejszym zapisem jest TICC lub inny licznik względem niezależnego wzorca; przy podawaniu wyniku napisz, którego użyto.

Scenariusz#

kind = "holdover-test"
masks = ["prtc-a", "eprtc-a-holdover"]      # see docs/TELECOM-TIMING.md for the ids

[test]
gnss_removed_s = 600.0                      # the operator's statement
gnss_restored_s = 2400.0                    # omit if GNSS was not restored within the record
locked_duration_days = 5.0                  # how long it was locked before step 2 (sets the ePRTC-A period)
recovery_band_ns = 100.0                    # |TE| inside this counts as recovered
recovery_dwell_s = 60.0                     # ... and must stay inside this long

[series.clock_log]                          # or [series] samples = [[t, ns], ...] or csv_path = "..."
format = "ptp4l"
path = "holdover-2026-11-02.log"            # or text = "..." inline
kshana holdover-test.toml

Klucze opcjonalne: budgets (nazwa, max_abs_te_ns, źródło; gdy ich brak, obowiązują domyślne ustawienia telecom-timing) oraz clock = "..." wewnątrz [series.clock_log], aby wybrać jedno źródło z logu zawierającego kilka.

Co zawiera raport#

  • steps: dla stanu wyjściowego, holdover i powrotu: początek i koniec, liczba próbek oraz wartość średnia, rms, największa i końcowa błędu czasu.
  • masks: każda wymieniona maska, mierzona w kroku wskazanym przez jej warunek. Maska napisana dla zegara zablokowanego jest mierzona w stanie wyjściowym; napisana dla holdover lub zegara autonomicznego, w holdover. Każda kontrola ma swój limit, zmierzoną wartość, margines i tabelę, z której została przepisana. Maska, która wymaga dłuższego zapisu, niż dał krok, ma status INCOMPLETE i nigdy nie jest ekstrapolowana; maska, której silnik nie może ocenić dla odstępu próbkowania zapisu, ma status NOT-EVALUATED wraz z powodem.
  • holdover: ułamkowe przesunięcie częstotliwości, które system utrzymał (nachylenie prostej najmniejszych kwadratów przez błąd czasu w holdover, w ns/s, czyli w częściach na miliard), reszta względem tej prostej, największy bezwzględny błąd czasu i moment jego wystąpienia oraz skok w chwili usunięcia.
  • holdover_envelope: obwiednia holdover ePRTC-A z ITU-T G.8272.1 Tabela 3, wyznaczona z locked_duration_days, wraz z chwilą jej pierwszego przekroczenia.
  • budgets: czas po usunięciu, w którym każdy budżet błędu czasu zostaje pierwszy raz przekroczony.
  • recovery: czy |TE| weszło do pasma i pozostało w nim przez czas przetrzymania, ile po powrocie GNSS to nastąpiło, szczyt po przywróceniu i największy skok między kolejnymi próbkami podczas powrotu.
  • curves: MTIE i TDEV kroków stanu wyjściowego i holdover.
  • verdicts: jednowyrazowe podsumowanie każdego kroku.

Każda liczba niesie swoją jednostkę i źródło w bloku units raportu.

Słowa i limity#

  • Wynik jest mierzony względem maski. Maski są przepisane z swobodnie dostępnych Zaleceń ITU-T (te same tabele co w rodzaju telecom-timing, wymienione w TELECOM-TIMING.md), a każdy wpis, który Zalecenia pozostawiają „do dalszych badań”, jest nieobecny, a nie uzupełniony. Kshana nie twierdzi, że zegar lub system spełnia Zalecenie albo jest względem niego zatwierdzony, i raport też tego nie robi.
  • MODELLED. Logika kroków, dopasowanie prostej i reguła powrotu są sprawdzone na zapisach zbudowanych ze wzorów, których wyniki znane są przed przebiegiem; żaden laboratoryjny holdover nie został oceniony względem zewnętrznej wyroczni i żaden partner ani laboratorium na nic się nie zgodził. Potrzebne byłoby laboratorium czasu, zanim jakąkolwiek wartość dla klasy zegara można by awansować.
  • Czego nie obejmuje, podane w każdym raporcie: czy GNSS rzeczywiście został usunięty i przywrócony w podanych chwilach; każdy krok, którego operator nie zapisał; maski zdefiniowane przez filtr 0,1 Hz dla zapisu próbkowanego rzadziej niż raz na sekundę; własna niepewność pomiarowa przyrządu; oraz każda procedura z Zalecenia wykraczająca poza zapis błędu czasu (profile temperatury, obciążenie sieci pakietowej).
  • Pasmo powrotu to własny wybór testu. Wartość domyślna 100 ns to maksymalny bezwzględny błąd czasu PRTC-A (ITU-T G.8272); to wygodna granica, a nie wymaganie żadnego Zalecenia dotyczące powrotu.
  • Brak ścieżki nadawczej. Kshana czyta pliki. Nie generuje sygnału, a usuwanie GNSS w laboratorium odbywa się własnym sprzętem laboratorium i na jego własne upoważnienie.

Powierzchnie#

holdover-test jest rodzajem scenariusza, więc działa wszędzie, gdzie działają rodzaje: kshana <scenario.toml>, API Rust (kshana::api::run_toml), powiązanie Pythona (kshana.run), kompilacja WebAssembly i npm (samples lub clock_log.text w treści wywołania; kluczy plikowych tam nie ma), serwer MCP (run_scenario, tylko treść w wywołaniu) oraz moduł uruchamiania scenariuszy w Kshana Studio. Oba pliki scenariuszy są dołączone (kshana example holdover-test-example).