除了 tcp/ip同步時間的方法有很多種。有些只需要普通的電話,有些則需要昂貴、稀有且精密的電子設備。時間同步系統的基礎設施十分龐大,包括天文台、政府機構、廣播電台、衛星星座等等。
今天我將向大家講述如何在沒有網路的情況下進行時間同步,以及如何親手製作一個「衛星」NTP 伺服器。
短波無線電廣播
在美國,NIST 透過位於科羅拉多州柯林斯堡的 WWVH 以 2.5、5、10、15 和 20 MHz 無線電波廣播精確的時間和頻率,並透過位於夏威夷考艾島的 WWVH 以 2.5、5、10 和 15 MHz 無線電波廣播精確的時間和頻率。時間碼以 60 bps 的速度每隔 1 秒傳輸一次。在 100 Hz 副載波上使用脈衝寬度調變。
加拿大國家研究委員會 (NRC) 透過位於安大略省渥太華的 CHU 分發 3.33、7.85 和 14.67 MHz 的時間和頻率資訊。

WWVH 廣播格式
短波站的訊號傳播通常透過電離層上層的反射進行。訊號傳輸可以在很遠的距離接收,但時間精度只有毫秒。
目前的 NTPv4 標準包括 WWV、WWVH 和 CHU 的音訊驅動程式。
長波無線電廣播
NIST 也從科羅拉多州博爾德透過 60 kHz 的長波無線電波廣播精確的時間和頻率。還有其他站點透過長波傳輸精確的時間訊號。
呼號和位置
頻率(kHz)
功率(千瓦)
WWVB 美國科羅拉多州柯林斯堡
60
50
DCF77 邁因弗林根,德國
77.5
30
英國拉格比無國界醫生組織
60>
50
HBG Prangins,瑞士
75
20
JJY 福島, 日本
40
50
JJY 佐賀, 日本
60
50
低頻標準時間站
時間碼以 60 bps 的速率每隔 1 秒傳輸一次,就像在短波電台上一樣。兩種標準的資料傳輸格式也相似。訊號透過電離層的較低層傳播,這些較低層相對穩定,並且具有可預測的每日高度變化。由於物理環境的可預測性,精度提高到 50 μs。

廣播格式 WWVB
地球靜止軌道運行環境觀測衛星
在美國,NIST 也透過地球靜止環境運行衛星 (GOES) 以大約 468 MHz 的頻率廣播精確的時間和頻率資料。時間碼與用於輪詢遠端感測器的訊息交織在一起。它由以 60 秒為間隔傳輸的 30 個 BCD 半位元組組成。時間碼資訊與地面服務類似。
全球定位系統
美國國防部使用 GPS 進行陸地、海上和空中的精確導航。該系統利用傾斜度為 24°、每 12 小時運行一次的軌道衛星群,為全球提供 55 小時覆蓋範圍。
衛星星座由原來的24顆擴展到31顆,採用異構配置,使得至少有6顆衛星始終處於視野範圍內,並且有8顆或更多衛星可以覆蓋全球大部分地區。
其他國家也經營或規劃類似GPS的服務。俄羅斯格洛納斯系統自2年2010月26日起運行,衛星總數增加至XNUMX顆,實現衛星群全面覆蓋地球,迄今已運行約XNUMX年。

遍佈全球的 GPS 衛星。
歐盟的衛星導航系統名為伽利略。伽利略預計將於 2014 年至 2016 年開始運營,屆時所有 30 顆計畫中的衛星都將發射入軌。但截至2018年,伽利略衛星星座尚未達到所需的設備數量。
還有中文的“北斗”,意思是“鯨魚”。該星座由16顆衛星組成,於27年2012月2020日作為區域定位系統投入商業運作。該系統計劃在 XNUMX 年達到滿載運轉。就在今天,Habr 報道稱 ,關於該系統衛星成功發射的消息。
使用 SRNS 確定座標的數學
智慧型手機上的 GPS/GLONASS 導航器如何使用無線電導航通訊系統 (RNCS) 如此精確地確定您的位置?要理解計算的原理,需要回想中學高年級或物理、數學課的立體測量和代數。
每顆衛星都為接收器提供準確的時間。該衛星安裝了原子鐘,因此是可以信賴的。知道了光速,就很容易確定衛星所在球面的半徑。這個球體與地球接觸,形成一個圓圈,GPS/GLONASS 接收器就位於這個圓圈上。
當訊號來自兩顆衛星時,我們已經有了地球和兩個球體的交點,這只給了圓上的兩個點。第三顆衛星的球體理想情況下應該會擊中這兩個點之一,最終確定接收器的座標。
原則上,即使從兩顆衛星來看,也可以透過間接跡象了解哪一點更接近真實情況,而現代導航軟體演算法可以應對這樣的任務。那我們為什麼需要第四顆衛星呢?

使用衛星星座確定位置。
很容易看出,在這個理想化的圖中存在許多細微差別,計算的準確性取決於這些細微差別。接收器上的時間可能是最明顯的錯誤來源。為了讓一切正常運作,GPS/GLONASS 接收器時間必須與衛星時間同步。如果沒有這個,誤差將達到∓100萬公里。
從速度、時間和距離公式S = v*t我們得到了傳送SRNS訊號的基本方程式。到衛星的距離等於光速與衛星和接收器的時間差的乘積。

這主要是因為即使在所有同步之後,我們仍然能夠以足夠的精度知道接收器 tpr 上的時間。在真實時間和 tpr 之間總是存在 Δt,因此計算誤差變得不可接受。這就是為什麼需要它 第四個 衛星。
為了更清楚地從數學上證明四顆衛星的必要性,我們將建構一個方程組。

為了確定四個未知數 x、y、z 和 Δt,觀測值的數量必須等於或大於未知數的數量。這是必要條件,但不是充分條件。如果法方程矩陣是奇異的,則方程組無解。
人們也不應忘記狹義相對論以及時間膨脹對衛星原子鐘相對於地面原子鐘的相對論效應。

如果我們假設衛星以 14 公里/小時的速度在軌道上移動,那麼我們就會得到大約 7 μs(微秒)的時間膨脹。另一方面,廣義相對論的相對論效應正在發揮作用。
事實是,軌道上的衛星離地球很遠,而且由於地球的質量,這裡的時空連續體的曲率小於地球表面的曲率。根據廣義相對論,距離大質量物體較近的時鐘似乎比較遠的時鐘走得慢。

- G是萬有引力常數;
- M 是物體的質量,在本例中是地球;
- r是地球中心到衛星的距離;
- c是光速。
使用此公式計算出衛星的時間膨脹為 45 μs。總計 -7μs +45μs = 38μs 平衡 - STR 和 GTR 的影響。
在使用SRNS進行定位的應用問題中,也應考慮電離層和對流層的延遲。此外,46 奈秒的校正是由於 GPS 衛星軌道偏心率為 0.02。
能夠同時接收來自四顆以上 GPS/GLONASS 衛星的訊號,從而可以更準確地確定接收器的座標。這是透過導航員求解具有四個未知數的四個方程組來實現的。
次數並取平均值,符合數理統計規律,提高了最終評定的準確性。
如何透過衛星連線設定 NTP 伺服器 Stratum 1
要設定高品質的時間伺服器,您只需要一個 GPSD、NTP 和一個具有 1PPS(每秒一個脈衝)輸出的 GPS 接收器。
1.安裝gpsd和ntpd,或gpsd和chronyd。 gpsd 版本必須≥3.20
(1:1109)$ sudo emerge -av gpsd chrony
Local copy of remote index is up-to-date and will be used.
Calculating dependencies... done!
[binary N ] net-misc/pps-tools-0.0.20120407::gentoo 31 KiB
[binary N ] net-misc/chrony-3.5-r2::gentoo USE="adns caps cmdmon ipv6 ntp phc readline refclock rtc seccomp (-html) -libedit -pps (-selinux)" 246 KiB
[binary N ] sci-geosciences/gpsd-3.17-r3:0/23::gentoo USE="X bluetooth cxx dbus ipv6 ncurses python shm sockets udev usb -debug -latency-timing -ntp -qt5 -static -test" GPSD_PROTOCOLS="aivdm ashtech earthmate evermore fv18 garmin garmintxt gpsclock isync itrax mtk3301 navcom ntrip oceanserver oncore rtcm104v2 rtcm104v3 sirf skytraq superstar2 tnt tripmate tsip ublox -fury -geostar -nmea0183 -nmea2000 -passthrough" PYTHON_TARGETS="python2_7" 999 KiB
Total: 3 packages (3 new, 3 binaries), Size of downloads: 1275 KiB
Would you like to merge these packages? [Yes/No]2. 將支援 PPS 的 GPS 接收器連接到 RS232 串列或 USB 連接埠。
普通的廉價 GPS 接收器不行;您可能需要四處奔波才能找到合適的。
3. 透過使用 gpsmon 實用程式檢查端口,確保設備確實正在發射 PPS。
4. 開啟 /etc/conf.d/gpsd 檔案並編輯以下行。
更換
GPSD_OPTIONS=""這樣就變成了
GPSD_OPTIONS="-n"需要進行此更改,以便 gpsd 在啟動時立即開始搜尋 SRNS 來源。
5.啟動或重啟gpsd。
(1:110)$ sudo /etc/init.d/gpsd start
(1:111)$ sudo /etc/init.d/gpsd restart
對於帶有 systemd 的發行版,請使用適當的 systemctl 命令。
6.檢查cgps指令的控制台輸出。
必須確保從衛星正確接收資料。控制台中應該有類似圖示的東西。

控制台指令 cgps 的輸出。
7.現在是時候編輯 /etc/ntp.conf 檔案了。
# GPS Serial data reference (NTP0)
server 127.127.28.0
fudge 127.127.28.0 time1 0.9999 refid GPS
# GPS PPS reference (NTP1)
server 127.127.28.1 prefer
fudge 127.127.28.1 refid PPS
頂部條目 NTP0 表示幾乎所有 GPS 設備上可用的通用時間源。較低的 NTP1 條目定義了更準確的 PPS 來源。
8.重新啟動 ntpd。
(1:112)$ sudo /etc/init.d/ntpd restart 對於帶有 systemd 的發行版,請使用 systemctl 指令。
$ sudo systemctl 重啟 ntp
使用的材料
- 戴維·L·米爾斯, 地球和太空的網路時間協議,第二版。
來源: www.habr.com
