无需网络即可同步时间

无需网络即可同步时间

除了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 长波无线电传输精确的时间和频率。 还有其他电台通过长波传输时间信号。

呼号和位置
频率(千赫兹)
功率(千瓦)

WWVB 美国科罗拉多州柯林斯堡
60
50

DCF77 德国迈因弗林根
77.5
30

无国界医生组织橄榄球,英国
60>
50

HBG 普兰金斯, 瑞士
75
20

JJY 福岛, 日本
40
50

JJY 佐贺, 日本
60
50

低频标准时间站

时间码以 60 秒间隔以 1 bps 传输,就像短波电台一样。 两种标准的数据传输格式也相似。 信号通过电离层的下层传播,电离层的下层相对稳定,并且每天的高度变化是可预测的。 由于物理环境的这种可预测性,精度提高到 50 μs。

无需网络即可同步时间
WWVB 广播格式

对地静止运行环境卫星

在美国,NIST 还通过地球静止运行环境卫星 (GOES) 在大约 468 MHz 上传输精确的时间和频率数据。 时间码与用于轮询远程传感器的消息交替出现。 它由 60 个 BCD 半字节组成,间隔 30 秒传输。 时间码信息与地面服务类似。

全球定位系统

美国国防部使用 GPS 在陆地、海上和空中进行精确导航。 该系统利用在 24 小时轨道上倾斜 12° 的卫星群提供全球 55 小时覆盖。

原来由 24 颗卫星组成的星座以异构配置扩展到 31 颗卫星,因此至少有 6 颗卫星始终处于视野范围内,并且在世界大部分地区都可以看到 8 颗或更多卫星。

其他国家正在运营或规划类似于GPS的服务。 俄罗斯格洛纳斯卫星导航系统已经运行了十几年,从2年2010月26日算起,当时卫星总数增至XNUMX颗,星座全面部署,完全覆盖地球。

无需网络即可同步时间
全球定位系统卫星。

欧盟的卫星导航系统称为伽利略。 预计伽利略将于2014-2016年开始运行,届时计划中的30颗卫星全部发射入轨,但截至2018年,伽利略卫星星座尚未达到所需的卫星数量。

还有中文的“北斗”,意思是“鲸鱼”。 该星座由16颗卫星组成,于27年2012月2020日投入商业运营,作为区域定位系统。 计划到XNUMX年该系统将达到满负荷。 就在今天,我出柜了哈布雷 文章,关于该系统卫星的成功发射。

使用 SRNS 确定坐标的数学

智能手机上的 GPS/GLONASS 导航器如何使用无线电导航通信系统 (SRNS) 确定如此精确的位置? 要理解计算原理,你需要记住高中时的立体测量和代数,或者物理和数学学校的知识。

每颗卫星都会告诉接收器准确的时间。 该卫星有一个原子钟,因此值得信赖。 知道了光速,就不难确定卫星所在表面球体的半径。 这个球体与地球接触,形成一个圆圈,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 ns 的修正是由于 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. 确保设备确实发出 PPS;为此,请使用 gpsmon 实用程序检查端口。

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

使用的材料

无需网络即可同步时间

无需网络即可同步时间

来源: habr.com

添加评论