Uživatelské nástroje

Nástroje pro tento web


cs:time_sync

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
cs:time_sync [2014/04/15 23:28]
kaklik [Ověření synchronizace přes ntpd]
cs:time_sync [2014/05/06 14:30]
Řádek 1: Řádek 1:
-====== Synchronizace času pro experimentální účely ====== 
- 
-Přesná synchronizace času je častým problémem při současném měření na více místech. Pro je tomuto problému na MLABu věnován zatím nedokončený článek [[http://​www.mlab.cz/​Articles/​Texts/​Time_sync/​DOC/​HTML/​Time_synchronization.cs.html|O synchronizaci času]]. ​ 
- 
-===== Testované GPS přijímače ===== 
- 
-Přijímače byly připojené k počítači přes moduly [[cs:​usb232r|USB23R01B]] nebo [[cs:​rs232single|RS232SINGLE01A]]. 
- 
-==== GPS LR5952 s FTDI ==== 
- 
- 
-  $ ntpq -p 
-     ​remote ​          ​refid ​     st t when poll reach   ​delay ​  ​offset ​ jitter 
-  ============================================================================== 
-  xSHM(0) ​         .GPS.            0 l    3   ​16 ​ 377    0.000  664.159 ​  2.380 
-   ​SHM(1) ​         .PPS.            0 l   ​5h ​  ​16 ​   0    0.000   ​21.310 ​  0.000 
-  +ntp1.karneval.c 147.231.19.43 ​   2 u  314 1024  357  148.395 ​ -70.723 ​ 72.872 
-  +server.janbosko 147.231.19.43 ​   2 u  427 1024  377   ​99.940 ​  ​13.332 150.047 
-  *sip1.rsaf.cz ​   147.231.19.43 ​   2 u 1027 1024  377   ​28.626 ​   1.211  55.678 
-  +scotland0.netco 217.31.205.226 ​  3 u 1188 1024  376   ​34.541 ​  ​13.851 123.263 
-  +europium.canoni 193.79.237.14 ​   2 u  595 1024  377   ​52.950 ​  ​-7.180 119.333 
- 
-==== GPS LEA-6S s FTDI ==== 
- 
-  ntpq -p  
-     ​remote ​          ​refid ​     st t when poll reach   ​delay ​  ​offset ​ jitter 
-  ============================================================================== 
-  xSHM(0) ​         .GPS.            0 l    9   ​16 ​ 377    0.000  414.503 ​  1.231 
-  *SHM(1) ​         .PPS.            0 l   ​10 ​  ​16 ​ 377    0.000    0.022   0.019 
-  +sip1.rsaf.cz ​   147.231.19.43 ​   2 u   ​32 ​  ​64 ​ 367   ​20.919 ​   1.124  21.045 
-  -kox-1.avn.cz ​   147.231.19.43 ​   2 u   ​30 ​  ​64 ​ 377   ​11.739 ​  ​-8.069 ​ 13.864 
-  +bobek.sh.cvut.c 195.113.144.201 ​ 2 u   ​34 ​  ​64 ​ 377   ​12.620 ​   1.158  11.639 
-  -lama.svinov.net 195.113.144.201 ​ 2 u   ​57 ​  ​64 ​ 377   ​11.558 ​   1.964   7.812 
-  -europium.canoni 193.79.237.14 ​   2 u   ​37 ​  ​64 ​ 377   ​33.065 ​  ​-1.901 ​ 11.276 
- 
-Na výsledcích obou měření využívajících k připojení GPS modulu emulované rozhraní RS232 není přesnost synchronizace lepší než cca 1 ms. To je způsobeno vlastnostmi sběrnice USB, která má 1ms, jako základní časový interval. 
-==== Modul GPS01A ==== 
- 
-Modul byl osazen čipem LEA-6S a připojen na sériovou RS232 linku počítače modulem [[cs:​rs232single|RS232SINGLE01A]]. Připojení na reálné rozhraní RS232 umožňuje podstatně zvýšit přesnost synchronizace až na stovky nanosekund. ​ 
- 
-{{ :​cs:​designs:​measuring:​gps_time_sync.jpg?​direct&​500 |}} 
-=== Zapojení === 
- 
-Připojení [[cs:​gps|GPS01A]] se provede seriovým modulem [[cs:​rs232single|RS232SINGLE01A]] tak, že se moduly navzájem propojí podle následující tabulky: 
- 
-^ GPS01A ​ ^ RS232SINGLE01A ^ 
-| TXD | TXD | 
-| RXD  | RXD | 
-| TIMEPULSE | DTR/RTS| 
- 
-Ke správné funkci je pak ještě třeba mít oba moduly napájené z +3.3V a na modulu ​ [[cs:​rs232single|RS232SINGLE01A]] propojený prostřední pin J5 připojit na DCD. Modul [[cs:​rs232single|RS232SINGLE01A]] se následně připojí k počítači prokříženým,​ tzv. [[http://​en.wikipedia.org/​wiki/​Null_modem|Null modem]] kabelem. 
- 
-Při pořizování kabelu mezi modulem RS232SINGLE01A a počítačem je dobré se přesvědčít,​ zda kabel obsahuje skutečně všechny vodiče, neboť ňekteří výrobci šetří a kabelem provedou pouze signály TXD, RXD a GND. Signál DCD pak chybí a synchronizace nefunguje.. ​ 
- 
-U moderních počítačů je sériový port ve většině případů vyvedený na konektor na základní desce, ale není vyveden ven (podobně, jako některé USB porty). Existuje však tato vývodka, kterou lze z konektoru na základní desce udělat standardní RS232 DB9 konektor: 
- 
-{{:​cs:​designs:​tools:​board-serial.jpg?​direct&​300 |}} 
- 
-Lze jí pořídit například v[[http://​www.czc.cz/​premiumcord-com-port/​68388/​produkt|e-shopu CZC]]. 
- 
-=== Instalace časově synchronizovaného serveru === 
- 
-Pro časovou synchronizaci přes 1PPS potřebujeme v linuxu dva programy, které si budou navzájem přeposílat časová data.  ​ 
- 
-== gpsd == 
- 
-[[http://​catb.org/​gpsd/​gpsd.html|gpsd]] je daemon obecně určený pro komunikaci s gps přijímači. ​ 
- 
-V Ubuntu jej nainstalujeme jednoduše z repozitáře:​ 
- 
-  sudo apt-get install gpsd gpsd-clients 
- 
-Základní konfigurace ovšem není pro účely synchronizace času příliš vhodná, proto je potřeba daemona znovu nakonfigurovat. 
- 
-  sudo dpkg-reconfigure gpsd  
- 
-  Start gpsd automatically on boot? Yes 
-  Device the GPS receiver is attached to: /dev/ttyS0 
-  Should gpsd handle attached USB GPS receivers automatically?​ No 
-  Options to gpsd: -n 
- 
- 
- 
-== ntpd == 
- 
-  apt-get install ntp 
- 
-Do jeho konfiguračního souboru pak přidáme jako časový zdroj lokální socket od gpsd.  A deamon restartujeme. ​ 
- 
-  server 127.127.28.0 minpoll 4 
-  fudge 127.127.28.0 time1 0.100 refid NMEA 
-  server 127.127.28.1 minpoll 4 prefer 
-  fudge 127.127.28.1 refid PPS 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
-==== Ověření synchronizace přes ntpd ==== 
- 
-Na základě výše uvedené konfigurace by jsme ve výpisu měli vidět dva nové časové zdroje SHM(0) a SHM(1). 
- 
-  kaklik@Radio:​~$ ntpq -p 
-       ​remote ​          ​refid ​     st t when poll reach   ​delay ​  ​offset ​ jitter 
-  ============================================================================== 
-  -sip1.rsaf.cz ​   81.27.192.20 ​    3 u   ​32 ​  ​64 ​ 377   ​14.882 ​  ​-0.738 ​  5.407 
-  xntp1.karneval.c 195.113.144.201 ​ 2 u   ​27 ​  ​64 ​ 377  119.367 ​ -56.776 ​  5.241 
-  -srv2.trusted.cz 195.113.144.201 ​ 2 u   ​33 ​  ​64 ​ 377    7.044   ​-0.012 ​  7.680 
-  +pyrrha.fi.muni. 195.113.144.238 ​ 2 u   ​27 ​  ​64 ​ 377   ​12.338 ​  ​-0.344 ​  4.700 
-  +SHM(0) ​         .NMEA. ​          0 l   ​11 ​  ​16 ​ 377    0.000  -40.963 ​  5.879 
-  *SHM(1) ​         .PPS.            0 l    8   ​16 ​ 377    0.000   ​-0.015 ​  0.002 
-  -golem.canonical 193.79.237.14 ​   2 u   ​47 ​  ​64 ​ 377   ​34.770 ​  ​-0.054 ​  7.340 
-  kaklik@Radio:​~$ ntptime 
- 
-Po několika hodinách synchronizace se daemon ntp dostává do saturace svého rozlišení a přesnost hodin je udržována na 1-2 us.  
- 
- 
-  kaklik@Radio:​~$ ntptime 
-  ntp_gettime() returns code 0 (OK) 
-    time d5b7c760.46d43cec ​ Thu, Aug 15 2013 23:​32:​16.276,​ (.276676529),​ 
-    maximum error 2740 us, estimated error 2 us, TAI offset 0 
-  ntp_adjtime() returns code 0 (OK) 
-    modes 0x0 (), 
-    offset -5.915 us, frequency -85.833 ppm, interval 1 s, 
-    maximum error 2740 us, estimated error 2 us, 
-    status 0x2001 (PLL,NANO), 
-    time constant 4, precision 0.001 us, tolerance 500 ppm, 
-  kaklik@Radio:​~$ 
-  ​ 
-Pokud by jsme nyní chtěli ještě lepší časovou přesnost, tak musíme místo ntpd použít jiný program chrony. ​ 
- 
-=== Chrony === 
- 
-Chrony je správce hodin pracující s vyšším časovým rozlišením než ntp. Jeho základní jednotkou jsou ns, což umožňuje daemonu dosáhnout lepších parametrů, než ntpd. Nevýhodou je, že není příliš přizpůsoben pro jiné časové zdroje než GPS a má omezené možnosti distribuce hodin po síti. ​ 
- 
-  sudo apt-get install chrony 
-  ​ 
-Systém automaticky oddinstaluje případnou předchozí instalaci ntpd. Chrony má dvě možnosti, jak získat časovací značky z gpsd. První je identická s metodou, kterou používá i ntpd a využívá interní časové servery, které vytvoří gpsd pro jejich použití stačí v ///​etc/​chrony/​chrony.conf// ​ nastavit: ​ 
- 
-  # delay 0.0 is right, but use 0.2 to avoid NMEA 
-  # time fighting with PPS time 
-  refclock SHM 0 offset 0.0 delay 0.2 
-  refclock SHM 1 offset 0.0 delay 0.0 
-  ​ 
-Tato metoda však není příliš přesná, neboť využívá ještě transportní vrstvy jádra. Nicméně je nejčastěji používanou metodou v kombinaci Chrony a gpsd. Lepší však je použít komunikací přes socket, který chrony vytváří a gpsd do něj může zapisovat. ​ Ten to způsob se zapne následujícím parametrem. ​ 
- 
-  refclock SOCK  /​var/​run/​chrony.ttyS0.sock 
- 
-Aby se projevily změny provedené v konfiguračním souboru chrony, je potřeba po úpravách daemona restartovat. ​ 
- 
-  kaklik@radio-meteor:​~$ sudo /​etc/​init.d/​chrony restart 
-  Restarting time daemon: Starting /​usr/​sbin/​chronyd... 
-  chronyd is running and online. 
-  kaklik@radio-meteor:​~$ ​ 
- 
-Předchozí metodu používající prostředek SHM je pak vhodné zakomentovat,​ nebo smazat, aby chrony neměl problém s rozhodnutím o věrohodnosti zdrojů času. Při používání tohoto způsobu synchronizace je důležité si uvědomit, že socket vytváří chrony a gpsd se do něj připojuje při svém startu, je tedy nutné, aby chrony byl spuštěn dříve, než gpsd. To lze zařídit přenastavením priorit spouštěcích skriptů přidáním následujícího řádku do hlavičky souboru ///​etc/​init.d/​chrony//​ 
-  ​ 
-  # X-Start-Before: ​   gpsd  ​ 
- 
-A následným spuštěním aktualizace linků na spouštěcí skripty: 
- 
-  sudo update-rc.d -f chrony ​ remove 
-  sudo update-rc.d ​ chrony defaults 
-  ​ 
-konfigurace daemona gpsd je stejná jako v případě ntp. Průběh synchronizace lze pak sledovat následovně:​ 
- 
-  kaklik@Radio:​~$ chronyc sources 
-  210 Number of sources = 7 
-  MS Name/IP address ​          ​Stratum Poll LastRx Last sample 
-  ============================================================================ 
-  ^~ ntp.ipv4.cz ​                  ​2 ​   8     ​72 ​ -5305us[-5306us] +/-   46ms 
-  ^~ vpn.ipv4.cz ​                  ​2 ​  ​10 ​   326  -5184us[-5175us] +/-   43ms 
-  ^~ bobek.sh.cvut.cz ​             2   ​10 ​   562    -34us[ +440us] +/-   33ms 
-  ^~ kamelot3.dkm.cz ​              ​2 ​  ​10 ​   307    +63ms[ ​ +63ms] +/-  110ms 
-  #x SHM0                          0    4     ​19 ​  ​+133ms[ +133ms] +/-  100ms 
-  #* SHM1                          0    4     ​19 ​  ​+286ns[ +388ns] +/-  495ns 
-  kaklik@Radio:​~$ ​ 
- 
-V případě použítí synchronizace času přes socket z gpsd je přesnost přibližně dvakrát lepší. Hlavní výhodou této metody ale především je větší stabilita synchronizace,​ neboť v případě synchronizování přes SHM0/SHM1 má daemon problém s rozhodnutím o přesnosti jednotlivých časových zdrojů. Jak je vidět v předchozím případě, kde časovací zdroj SHM0 odpovídající NMEA výstupu je označen křížkem "​x"​ který znamená, že chrony jej neuznává jako věrohodný časovací zdroj. 
- 
-  kaklik@radio-meteor:​~$ chronyc sourcesstats 
-  210 Number of sources = 5 
-  MS Name/IP address ​          ​Stratum Poll LastRx Last sample 
-  ============================================================================ 
-  ^? lx.ujf.cas.cz ​                ​2 ​  ​10 ​   619  -6779us[-6794us] +/-   32ms 
-  ^? ntp.ipv4.cz ​                  ​2 ​   8    125    -27ms[ ​ -27ms] +/-   67ms 
-  ^? kamelot3.dkm.cz ​              ​2 ​  ​10 ​   877    -21ms[ ​ -21ms] +/-   66ms 
-  ^? smtp.martinpoljak.net ​        ​3 ​  ​10 ​   127  -6224us[-6221us] +/-   20ms 
-  #* SOCK                          0    4      9   ​-599ns[-1309ns] +/-  207ns 
-  kaklik@radio-meteor:​~$ ​ 
- 
-Vysvětlivky k parametrům lze zapnout parametrem -v. 
- 
-Dalšího zpřesnění by bylo pravděpodobně možné dosáhnout použitím speciálního modulu v jádře viz [[http://​linuxpps.org/​wiki/​index.php/​Main_Page|LinuxPPS]]. 
- 
-===  Precision Time Protocol === 
- 
-Instalace: 
- 
-  sudo apt-get install ptpd 
- 
-Spuštění na master počítači ​ 
- 
-  sudo ptpd -c -h -d -b eth0 
-  state: 2013-08-17 18:​24:​51:​129295,​ mst (ID:​000c6efffe53a5d2) ​ 
- 
- 
-Spuštění na klientovi: ​ 
- 
-  kaklik@radio-meteor:​~$ sudo ptpd -c -h -d -b eth0 -D 
-  sudo: unable to resolve host radio-meteor 
-  [sudo] password for kaklik: ​ 
-  timestamp, state, clock ID, one way delay, offset from master, slave to master, master to slave, drift 
-  2013-08-17 21:​42:​40:​702872,​ init 
-  2013-08-17 21:​42:​40:​703484,​ lstn 
-  2013-08-17 21:​12:​07:​129459,​ slv, 000c6efffe53a5d2/​01,​ 0.000091748,​ 0.000006752,​ 0.000089000,​ 0.000101000,​ -49228 
-  2013-08-17 21:​12:​08:​129479,​ slv, 000c6efffe53a5d2/​01,​ 0.000091748,​ 0.000001752,​ 0.000089000,​ 0.000086000,​ -49227 
-  2013-08-17 21:​12:​09:​129447,​ slv, 000c6efffe53a5d2/​01,​ 0.000091748,​ -0.000003748,​ 0.000089000,​ 0.000090000,​ -49230 
-  2013-08-17 21:​12:​10:​129432,​ slv, 000c6efffe53a5d2/​01,​ 0.000091748,​ -0.000003248,​ 0.000089000,​ 0.000087000,​ -49233 
- 
- 
- 
-==== Související moduly ==== 
- 
-  * [[cs:​gps|GPS01A]] 
-  * [[cs:​gp2|GP201A]] ​ 
-  * [[cs:​usb232r|USB23R01B]] ​ 
-  * [[cs:​rs232single|RS232SINGLE01A]]. 
- 
-==== Reference ==== 
- 
-  * http://​www.rjsystems.nl/​en/​2100-ntpd-garmin-gps-18-lvc-gpsd.php 
-  * http://​gpsd.berlios.de/​gpsd.html 
- 
- 
  
cs/time_sync.txt · Poslední úprava: 2014/05/06 14:30 (upraveno mimo DokuWiki)