基于GPS北斗卫星的NTP时钟服务器应用天文观测
天文观测设备对于控制系统的时间准确度有严格要求。为此,采用搭建高精度
NTP
服务器的方法实现系统校时。基本思路是从
NMEA018 3
数据中提取时间信息,通过
PPS
信号来保证高精度。具体实现方法是采用
GPS
接收模块
G591
来构造硬件电路,软件部分需要
NTP
服务器软件和
GPS
的正确安装和配置。对照实验表明,基于
GPS
的
NTP
服务器校时精度可以达到微秒量级,工作性能稳定而可靠。
0
引言
准确的时间是天文观测所必需的。天文望远镜在特定时间内的准确指向、
CCD
曝光时间的控制以及不同波段观测数据所进行的高精度同步比对等应用需要系统至少有亚毫秒的时间准确度。然而就目前来看,一般的计算机和嵌入式设备所使用的晶体振荡器的精度为几个或者几十个
ppm(
百万分之一秒
)
,并且会受温度漂移的影响,使得每天的误差能够达到秒级,若再考虑元器件的老化或外界干扰等因素,误差可能会超过
10 s
,如果不及时校正,其误差积累将不可忽视。
网络时间协议
NTP(Network Time Protocol)
是美国特拉华大学的
MILLS David L
.教授在
1982
年提出的,其设计目的是利用互联网资源传递统一和标准的时间。目前,使用
GPS
信号实现校时的研究工作很多,大多只是通过读取
GPS
模块解码出的串行数据,提取其中的时间信息来纠正系统时钟,该过程并不涉及
NTP
的使用,精度较低,一般为几十到几百毫秒。对此,本文充分利用了
NTP
服务器软件对
GPS
时钟源的支持,采用串行数据和秒脉冲相结合的方式来校准时间,校时精度大为提高。
1 GPS
同步时钟的校时方式
1
.
1 GPS
介绍
GPS(Global Positioning System
,全球定位系统
)
是
20
世纪
70
年代美国研制的新一代卫星导航、授时、定位系统。
24
颗专用的
GPS
卫星上都各自带有原子钟,能够全天候向地面广播精确的
UTC
标准时间。在许多通用
GPS
解码芯片解码出的数据流中,除了有位置信息,还包含时间信息
(
年月日时分秒
)
和
PPS(Pulseper Second
,秒脉冲信号
)
,
PPS
标识了时间信息的起点,其精确度可以到微秒量级。
1
.
2
校时方式介绍
NTP
是用来使计算机时间同步化的一种协议,其同步时钟源不仅仅局限于网络的时间服务器,还包括时钟设备,如石英钟,原子钟,
GPS
接收器等。
NTP
服务器软件将这些时钟源抽象成相应的数据结构,对应于不同的内存地址,通过读取该地址中的信息,进行统计学算法的处理来同步计算机的时钟。
使用
GPS
作为同步时钟源的校时方案主要有三种:脉冲同步方式、串行同步方式和综合方式。本文采用的
GPSD
校时方案是综合方式。三种方式的对照如表
1
所示。

1
.
3
基于
GPSD
的综合校时
GPSD(GPS Daemon)
是一个守护进程软件,用来处理
GPS
接收单元解码出的数据。基于
GPSD
综合校时的具体过程如图
1
所示。
GPS
天线接收
GPS
信号,传递给
G591
芯片进行解码,每秒输出
NMEA0183
协议格式的数据和
PPS
信号,
MAX 232
完成电平转换之后,分别经由串口的
RXD
和
DCD
端传递给计算机;
GPSD
软件经过处理,将准确的时间信息写到特定内存段中;
NTP
服务器软件通过共享内存的方式读取该地址段中的时间信息,进而完成校正系统时钟的工作。
基于
GPSD
综合校时方案是一种优势互补的校时方式。这种方式继承了
NMEA
串行校时方式可以获取时间信息的优势,同时利用了
PPS
脉冲校时延时估计误差小、精度高的特点,是一种简便有效的校时方案。
2
系统设计实现
2
.
1
硬件平台
GPSD
综合校时方案需要的硬件设备分为三个部分:
GPS
天线、
GPS
接收器和与
GPS
接收器连接的计算机,其相应的功能和应用如下:
(1)GPS
天线用于接收
GPS
信号。本文采用的是磁吸式
GPS
天线,使用时要水平放置,最好置于开阔地,如天窗、窗台、阳台等;
(2)GPS
接收器由电源、
GPS
接收和电平转换三个模块构成如图
2
所示。
GPS
接收模块采用
JRC(Japan Radio Company)
设计的
G591
芯片,该芯片支持多达
210 PRN
通道,输出数据为
NMEA0183
协议的串行数据,波特率为
9 600 b
/
s
,适用于各种相关开发。在本设计中,
G591
主要用来获取时间信息和
PPS
信号,不涉及定位导航;电源模块采用的是
AMS(Advanced Monolithie Systems)
设计的
AMS1117-3
.
3
芯片,该芯片输出电压为
3
.
3 V
,最大输出电流为
1 A
,用来给
G591
和
MAX232
供电;电平转换模块主要采用
MAXIM
公司设计的
MAX232
芯片,该芯片负责把
G591
输出的
CMOS
电平转换成
RS 232
电平,供串口读取。

(3)
计算机设备用于处理
GPS
数据,要求支持串口和网口等设备,以实现
GPS
数据接收和校时输出。
硬件平台搭建好了之后,本文对
PPS
信号和
NMEA0183
串行数据进行了相应的调试。对
PPS
信号的调试采用的是硬件方式,使用示波器来观察
GPS
接收器是否有秒脉冲信号输出,若天线和接收器工作正常,会检测到
PPS
端有脉宽为
100 ms
的秒脉冲输出;对
NMEA
数据的调试采用的是软件方式,使用
Windows
操作系统自带的超级终端或
Linux
操作系统的
minicom
等工具来读取串口,检测数据是否正常,正确的输出结果是
NME A0183
串行数据。
若由于天线或气象原因,
G591
模块没有接收到信号,则不会产生
PPS
信号,同时
NMEA0183
语句中的
GPRMC
语句的标志位也会变成无效。
2
.
2
软件平台
2
.
2
.
1
安装过程
本文使用的是
Ubuntu 11
.
04
操作系统,内核版本是
2
.
6
.
38
;需要的软件包有
setserial
,
gpsd
,
gpsd-cli-ents
,
python-gps
,
ntp
。在终端中使用
Ubuntu
自带的
apt-get
命令安装这些软件包,然后分别作出相应的设置:
(1)setserial
的版本是
2
.
17
,该软件是用来对串口进行相应的设置。为了能够让串口识别
PPS
信号,要对
setserial
的配置文件修改。在
autoserial
.
conf
中对接收
GPS
数据的串口添加
low_latency
关键字。
(2)gpsd
的版本是
2
.
95
。安装完成后,使用
dpkgreconfigure
命令要对
gpsd
重新进行配置,使其能够开机自动运行,读取串口数据。此外
gpsd
的调试方法也十分简便。如果放在后台执行,可以通过系统日志文件查看其工作状况;
gpsd
也可以在前台运行,通过进入调试模式来检查时间信息和
PPS
信号的捕获情况,详见
gpsd
的使用说明。
(3)ntp
的版本是
4
.
2
.
6
。安装完成后,要对
NTP
的配置文件
ntp
.
conf
进行修改。
NTP
服务器的正确配置决定了最终的时间同步结果。本设计选用的时间服务器只有
GPS
时钟源,具体配置如下:
Linux
操作系统从
2
.
6
.
34
版本开始支持
PPS
中断源,而本文采用的方案是通过共享内存的方式传递时间信息,会与
PPS
中断源发生冲突,所以要禁止掉内核响应
PPS
。
127
.
127
.
28
.
1
对应于
NTP
定义的一个内存段地址,
gpsd
进程就是通过这个地址向
NTP
传递时间信息。
2
.
2
.
2
结果
NTP
服务器安装后的调试工作可以通过参照系统和
NTP
的日志文件,以及查看串口状态等操作来进行。本文总结了
NTP
服务器正常工作的必要条件:正确的配置、可用的网络、有效的
GPS
信号、没有其他进程占据
GPS
时钟源使用的串口。当
NTP
服务器正常工作时,使用其自带的
ntpq
程序可以查看
NTP
的工作状态,即校时的效果。如果
GPS
设备正常工作,
NTP
服务器几秒钟后就能锁定
GPS
时钟源,输出结果如下所示:
3
测试与分析
3
.
1
对照实验
要衡量校时系统的好坏,偏移量
(offset)
和抖动
(jitter)
是重要的参考指标。本文为验证
GPS
校时的有效性和可行性设计了对照实验。实验内容是测试一台计算机分别采用网络校时、串行校时以及基于
GPSD
的综合校时三种方式的校时效果。网络校时采用的服务器为国家授时中心的
NTP
服务器,地址是:
210
.
72
.
154
.
44
;串行校时只需要向
NTP
配置文件中添加
server 127
.
127
.
28
.
0
;
通过编写
shell
脚本程序实时记录偏移量和抖动的情况。
shell
脚本程序主要功能是每
16 s
执行一次
“ntpq-p”
命令,将偏移量和抖动的结果输出到一个文件。
计算机设备通过互联网与网络时间服务器进行同步的结果,如图
3
所示,实验时间为
24 h
。从图中可以看出经过约
7 h
的锁定过程,
NTP
软件通过网络时间服务器将系统时钟的偏移量从约
80 ms
稳定到
10 ms
以下,抖动通常能稳定在
20 ms
以下,但部分时段也能够达到
50 ms
以上。
NTP
支持的
NMEA
串行方式的校时结果如图
4
所示,实验时间为
24 h
。可以看出,该方案的时钟偏移量和抖动在几十毫秒的范围内变化很快,
NTP
难以将时钟稳定到一个更小的范围。
采用基于
GPSD
综合方式的校时锁定过程如图
5
所示,实验时间为
8 h
。该过程持续了近
8 h
,时钟偏移从
-18 ms
稳定到
10μs
左右,而抖动从
4 ms
稳定到
10μs
以下。
采用基于 GPSD 综合方式的校时稳定过程如图 6 所示,实验时间为 24 h 。可以看出,该方案的时钟偏移和抖动明显优于前两种方案,偏移量通常低于 30μs ,抖动也不超过 50μs 。这期间,从大约 14 h 开始偏移量恒为 49μs ,抖动恒为 0μs ,并持续了约 3 h ;之后偏移和抖动又分别从 -230μs 和 60μs 逐渐稳定到 10μs 以下。这种现象的原因是 GPS 信号不好, GPSD 不再更新时间信息,使得 NTP 处于等待状态造成的。当 3 h 之后 GPS 信号再次有效时,校时系统自动开始重新锁定,无需人工干预。参考相关实验结果,证明了本实验结果的正确性。
3
.
2
数据分析
表
2
对三种校时结果数据进行了统计分析。结合图表分析可以看出,使用网络时间服务器,虽然校时工作较为稳定,但精度较低,维持在几个到几十个毫秒,主要的原因是网络传输延时的不确定性;采用单一的
NMEA0183
串行数据进行校时,效果并不理想,抖动太大,稳定性差,主要的原因是硬件资源分配过程中存在的随机性,使得
NMEA
串行数据的处理速度有随机偏差;本文采用的
NMEA
和
PPS
综合校时方案取得了较为理想的效果。授时精度可达微秒级,比上述两种方式提高了至少两个数量级。这种方式充分发挥了脉冲校时精确度高的特点,又保留了串行校时的时间信息,实现了优势互补。
4 结语
经过多次实验反复验证,本文采用的基于GPSD综合校时方案是一种行之有效的高精度校时方案,不仅实现了单机的精确校时,也可以通过网络提供NTP服务;相比于Linux PPS高精度校时方法,该方案操作简单,可扩展性好,校时精度同样可以达到微秒量级,能够满足大部分天文观测设备的校时需要。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69969420/viewspace-2741910/ ,如需转载,请注明出处,否则将追究法律责任。