Toto je starší verze dokumentu!
−Obsah
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 O synchronizaci času.
Testované GPS přijímače
Přijímače byly připojené k počítači přes moduly USB23R01B nebo 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
Modul GPS01A
Modul byl osazen čipem LEA-6S a připojen na sériovou RS232 linku počítače modulem RS232SINGLE01A. Připojení na reálné rozhraní RS232 umožňuje podstatně zvýšit přesnost synchronizace až na jednotky us.
Zapojení
Připojení GPS01A se provede seriovým modulem 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 RS232SINGLE01A propojený prostřední pin J5 připojit na DCD.
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
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
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ěřění synchronizace přes ntpd
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:~$
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.
Následně chrony restartujeme:
kaklik@radio-meteor:~$ sudo /etc/init.d/chrony restart Restarting time daemon: Starting /usr/sbin/chronyd... chronyd is running and online. kaklik@radio-meteor:~$
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 LinuxPPS.
Precision Time Protocol
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