Aktualności:

Czy uczestniczysz w Projekcie miesiąca?

Menu główne

Precyzja zegarów

Zaczęty przez Rysiu, 20 Maj 2012, 01:31

Rysiu

Jaką maksymalną precyzję trzymają zegary dostępne w domowych PC? Czas można synchronizować za pomocą protokołu NTP ale jaką maksymalną rozdzielczość oferują układy wbudowane we współczesne płyty główne?

Sporo informacji można znaleźć tutaj: http://www.go2shop.pl/shop_content.php/coID/11/product/Synchronizacja-zegara

Zbytnio nie pociesza cytat:

CytatI want to use a crystal as the base clock for a watch. Most reference designs I could find use a 32.768 kHz crystal at 20 ppm (parts per million) precision. According to my calculations, this leads to an error of max 52 seconds in a month. After 6 months, that 5 minutes. I would like something better!

Błąd 52 sekund na miesiąc? O zonk...  :deadman:

ryszard.korczyk

Większość systemów operacyjnych sama dba o synchronizację czasu z serwerami SNTP. Układy w starszych płytach głównych oferowały rozdzielczość 1/18,2s, o ile dobrze pamiętam. Nie wiem, jak jest w nowych płytach, gdzie RTC jest zaszyty w chipsetach.
Jeśli rozmawiamy o precyzji pomiaru czasu na PC należy pamiętać, że systemy takie jak windows, czy linux nie są systemami czasu rzeczywistego, więc nie zapewnia realtimowej reakcji na zdarzenia, a opóźnienia reakcji mogą nawet dochodzić do setek ms.
Największą dokładność czasu niskim kosztem można przy pomocy GPS, to powszechnie stosowane precyzyjne źródło czasu.

Rysiu

Z tego co czytałem to zegra sprzetowy trzyma tylko czas podczas gdy maszyna jest wyłączona. W momencie startu kernel odczytuje ten czas i dalej w systemie mamy już czas obsługiwany softwerowo, który charakteryzuje się znacznie większą precyzją (tutaj już chyba obsługuje to jakoś procesor).

Także w uruchomionym systemie dochodzi do softwerowej synchronizacji przez NTP. W Linux'ie o ile dobrze doczytałem czas softwerowy można wyciągnąć za pomocą "adjtimex -p". Granica błędu to ok. 1 us.

Jednak z systemami czasu rzeczywistego to dobra uwaga.

Problem wygląda następująco. Mam dwa układy działające niezależnie w dużej odległości. Muszą wykonywać poszczególne procedury w odpowiednich sekwencjach względem siebie. Głównie to oznacza, że jeden coś zaczyna robić w czasie N, a drugi w czasie N + epsilon (gdzie epsilon jest wartością możliwie skrajnie niską). Muszę mieć także gwarancję, że drugi układ wykona odpowiednie procedury w czasie nie dłuższym niż M.

Precyzję czasu muszę mieć najmarniej na poziomie 1 us. Odpada chyba synchronizacja za pomocą fal radiowych z zegarem adomowym w Niemczech, ponieważ z tego co czytałem tak sobie wygląda ten protokół (komunikacja chyba raz na minutę) i raczej nie ma szans wyciągnąć 1 us.

armar

Cytat: Rysiu w 20 Maj 2012, 11:25
Także w uruchomionym systemie dochodzi do softwerowej synchronizacji przez NTP. W Linux'ie o ile dobrze doczytałem czas softwerowy można wyciągnąć za pomocą "adjtimex -p". Granica błędu to ok. 1 us.

"NTP umożliwia synchronizację z dokładnością rzędu nanosekund" ( http://itpedia.pl/index.php/NTP_%28Network_Time_Protocol%29 ) :)


Cytat: Rysiu w 20 Maj 2012, 11:25Precyzję czasu muszę mieć najmarniej na poziomie 1 us. Odpada chyba synchronizacja za pomocą fal radiowych z zegarem adomowym w Niemczech, ponieważ z tego co czytałem tak sobie wygląda ten protokół (komunikacja chyba raz na minutę) i raczej nie ma szans wyciągnąć 1 us.
"Teoretyczna dokładność zastosowanego zegara atomowego to różnica 1 sekundy na 1 milion lat pracy" - więc 1 us na rok. ( http://pl.wikipedia.org/wiki/DCF77 )
Ludzie stawiają sobie Stratum-0 w oparciu o odbiornik GPS: http://time.qnan.org/

Rysiu

Cytat: armarB@P] link=topic=7405.msg190799#msg190799 date=1337519969]
"NTP umożliwia synchronizację z dokładnością rzędu nanosekund" ( http://itpedia.pl/index.php/NTP_%28Network_Time_Protocol%29 ) :)
Tak ale trochę dalej piszą:

CytatDokładność czasu NTP w sieciach lokalnych nie przekracza 1 ms, a w sieciach WAN jest rzędu dziesiątek ms.

Teoretycznie są to czasy rzędu ns ale mamy opóźnienia na łączach. Algorytmy tam zastosowane uwzględniają różne opóźnienie i problemy na łączach (domyślam się, że są bardzo zaawansowane skoro były/są stosowane np. przez wojsko) ale nie mam pojęcia jaki jest tego finalny efekt.


Cytat: armarB@P] link=topic=7405.msg190799#msg190799 date=1337519969]
"Teoretyczna dokładność zastosowanego zegara atomowego to różnica 1 sekundy na 1 milion lat pracy" - więc 1 us na rok. ( http://pl.wikipedia.org/wiki/DCF77 )
Ludzie stawiają sobie Stratum-0 w oparciu o odbiornik GPS: http://time.qnan.org/

Jeżeli będę korzystał z NTP to muszę mieć komputer podłączony do Internetu (on synchronizuje się z serwerami NTP) i potem układ sterujący innymi zabawkami (jakiś mikrokontroler) synchronizować z komputerem za pomocą jakiegoś portu komunikacji. Sprawa dość zawiła, a pewnie i jakieś spore opóźnienie będzie przy takim rozwiązaniu.

armar

Sprzętowe rozwiązania mają najmniejsze opóźnienia:
http://www.navi.pl/katalog/17/0/serwery_ntp.html

Rysiu

O cenach takich zabawek na stronie już nie wspominają - koszta pewnie nie byle jakie  :book:

Szopler

Chcesz mieć dokładny zegar - podłącz odbiornik GPS do mikrokontrolera taktowanego generatorem kwarcowym stabilizowanym termicznie (nie kwarcem). Sam procesor też musi mieć ustalone warunki termiczne bo raz będzie działał trochę szybciej, a raz trochę wolniej... to nie jest takie hop-siup 8)

Gołąbpocztowy

Cytat: Rysiu w 20 Maj 2012, 15:38
Cytat: armarB@P] link=topic=7405.msg190799#msg190799 date=1337519969]
"NTP umożliwia synchronizację z dokładnością rzędu nanosekund" ( http://itpedia.pl/index.php/NTP_%28Network_Time_Protocol%29 ) :)
Tak ale trochę dalej piszą:

CytatDokładność czasu NTP w sieciach lokalnych nie przekracza 1 ms, a w sieciach WAN jest rzędu dziesiątek ms.

Teoretycznie są to czasy rzędu ns ale mamy opóźnienia na łączach. Algorytmy tam zastosowane uwzględniają różne opóźnienie i problemy na łączach (domyślam się, że są bardzo zaawansowane skoro były/są stosowane np. przez wojsko) ale nie mam pojęcia jaki jest tego finalny efekt.


Cytat: armarB@P] link=topic=7405.msg190799#msg190799 date=1337519969]
"Teoretyczna dokładność zastosowanego zegara atomowego to różnica 1 sekundy na 1 milion lat pracy" - więc 1 us na rok. ( http://pl.wikipedia.org/wiki/DCF77 )
Ludzie stawiają sobie Stratum-0 w oparciu o odbiornik GPS: http://time.qnan.org/

Jeżeli będę korzystał z NTP to muszę mieć komputer podłączony do Internetu (on synchronizuje się z serwerami NTP) i potem układ sterujący innymi zabawkami (jakiś mikrokontroler) synchronizować z komputerem za pomocą jakiegoś portu komunikacji. Sprawa dość zawiła, a pewnie i jakieś spore opóźnienie będzie przy takim rozwiązaniu.
Ale protokół NTP bierze pod uwagę opóźnienia na łączach. Czy oba komputery są oddalone od siebie i komunikują się poprzez sieć Internet? Czy może są w jednej sieci lokalnej? Jeżeli tak to postaw software'owy serwer ntp u siebie i niech pobierają czas z niego. Będzie najdokładniej, a jeżeli będzie odbiegał od wzorcowego to o tyle samo przy jednym jak i drugim komputerze.

Rysiu

Cytat: Gołąbpocztowy w 20 Maj 2012, 23:44
Ale protokół NTP bierze pod uwagę opóźnienia na łączach. Czy oba komputery są oddalone od siebie i komunikują się poprzez sieć Internet? Czy może są w jednej sieci lokalnej? Jeżeli tak to postaw software'owy serwer ntp u siebie i niech pobierają czas z niego. Będzie najdokładniej, a jeżeli będzie odbiegał od wzorcowego to o tyle samo przy jednym jak i drugim komputerze.
Lokalny serwer NTP praktycznie niczego mi nie da bo najpierw będę miał niepewność na synchronizacji [Jakiś zegar atomowy] -> [Serwer lokalny], a potem podczas kolejnej synchronizacji [Serwer lokalny] -> [Urządzenie docelowe]. Niepewność czasu tutaj się nakłada.

Najlepszym rozwiązaniem jest chyba moduł GPS.

Szopler

Zobacz czego używali naukowcy z CERN przy ostatnich badaniach z neutronami co to niby były szybsze niż światło - GPS'u!
Co prawda najdokładniejszej istniejącej (wojskowej) ;) wersji, ale raczej nic lepszego i zarazem tak powszechnie dostępnego (szczególnie outdoor) nie znajdziesz. Kwestia odpowiedniego algorytmu synchronizacji i ogień! :attack: