基于GPS北斗卫星授时系统和NTP网络授时服务器的设计与开发

安徽京准科技提供@请勿转载@@ 更多资料请参考——ahjzsz.com

天文观测设备对于控制系统的时间准确度有严格要求。为此,采用搭建高精度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高精度校时方法,该方案操作简单,可扩展性好,校时精度同样可以达到微秒量级,能够满足大部分天文观测设备的校时需要。

基于GPS北斗卫星授时系统和NTP网络授时服务器的设计与开发的更多相关文章

  1. 北斗卫星同步时钟(NTP网络时钟服务器)成功投运世界级工程港珠澳大桥

    北斗卫星同步时钟(NTP网络时钟服务器)成功投运世界级工程港珠澳大桥 北斗卫星同步时钟(NTP网络时钟服务器)成功投运世界级工程港珠澳大桥 本文由北京华人开创科技公司提供 原址在 http://www ...

  2. SYN2136型 北斗NTP网络时间服务器

    SYN2136型  北斗NTP网络时间服务器 北斗NTP网络时间服务器时间服务器使用说明视频链接: http://www.syn029.com/h-pd-109-0_310_36_-1.html 请将 ...

  3. GPS校时器,GPS时钟装置,NTP网络时间服务器

    GPS校时器,GPS时钟装置,NTP网络时间服务器 GPS校时器,GPS时钟装置,NTP网络时间服务器 GPS校时器,GPS时钟装置,NTP网络时间服务器 GPS校时器,GPS时钟装置,NTP网络时间 ...

  4. 华人开创NTP网络授时服务器成功投运世界级超大工程港珠澳大桥

    华人开创NTP网络授时服务器成功投运世界级超大工程港珠澳大桥 本文由北京华人开创公司提供请勿转载 2017年12月中旬,我华人开创生产研发的NTP网络授时服务器成功投运世界级超大工程港珠澳大桥,为这个 ...

  5. NTP网络授时服务器部署及网络时钟同步设置说明

    NTP网络授时服务器部署及网络时钟同步设置说明 NTP网络授时服务器部署及网络时钟同步设置说明  本文由安徽京准科技提供@请勿转载. 一.前言 1.NTP简介 NTP是网络时间协议(Network T ...

  6. SYN2102型 NTP网络时间服务器

    SYN2102型  NTP网络时间服务器   ntp主时钟服务器ntp时钟服务器厂商使用说明视频链接: http://www.syn029.com/h-pd-57-0_310_1_-1.html 请将 ...

  7. SYN2101型 NTP网络时间服务器

    SYN2101型  NTP网络时间服务器   时钟校准服务器时间 ntp服务器ntp时间校准服务器使用说明视频链接: http://www.syn029.com/h-pd-56-0_310_1_-1. ...

  8. NTP网络时钟服务器品牌

    NTP网络时钟服务器品牌 在科技的不断进步和发展下,时钟的种类和功能也在发生着变化,以满足人们的各种需求,时钟从原始的机械时钟发展成具有多钟功能的时钟.而时钟服务器主要是给时钟提供时间信息的,时钟服务 ...

  9. 基于GPS\北斗、GIS、GPRS技术构建智能巡检系统

    巡线工负责输油管网设施的日常巡查,可以及时发现管网设施是否完好.但巡检工作辛苦,加之管线在大部分情况下又处于良好状态,使得巡检人员麻痹大意,往往不能按规定程序进行巡检,造成巡检不到位,这样就不能从根本 ...

随机推荐

  1. hdu 2892 area (圆与多边形交面积)

    Problem - 2892 这道题的做法是以圆心为原点,对多边形进行三角剖分.题目描述中,多边形的可能是顺时针或者是逆时针给出,不过在我的做法里,是用有向面积来计算的,和常见的多边形面积的求法类似, ...

  2. ubuntu18.04 挂载ntfs硬盘无法写入解决办法

    win10和ubuntu18.04双系统,在ubuntu下通过/etc/fstab挂载ntfs硬盘无写入权限,尝试通过chmod修改写入权限和ntfs-config图形工具修改写入权限均失败.在ubu ...

  3. angularJS 初始化

    AngularJS 启动有两种方式 1.绑定初始化,自动加载 通过绑定来进行angular的初始化,会把js代码侵入到html中. ng-app是angular的一个指令,代表一个angular应用( ...

  4. C# GUID ToString

    最近在看到小伙伴直接使用 Guid.ToString ,我告诉他需要使用 Guid.ToString("N") ,为什么需要使用 N ,因为默认的是 D 会出现连字符. Guid ...

  5. python基础十之装饰器

    1,装饰器的形成 编程原则:开放封闭原则. 开放:对扩展是开放的 封闭:对修改是封闭的 因为修改是封闭的,所以为了对函数进行功能的扩展,就使用装饰器! 2,装饰器的定义 # wrapper就是一个装饰 ...

  6. 【u212】&&【t036】最大和

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] N个数围成一圈,要求从中选择若干个连续的数(注意每个数最多只能选一次)加起来,问能形成的最大的和. [ ...

  7. 【js】vue 2.5.1 源码学习 (九) 响应数组对象的变

    大体思路(八) 本节内容: 1.Observe 如何响应数组的变化 代理原型 数组变异方法 shell cacheArrProto methods 新添加的数组需要加到显示系统里面,拦截 push等的 ...

  8. HDU 5912 Fraction(模拟)

    Problem Description Mr. Frog recently studied how to add two fractions up, and he came up with an ev ...

  9. P1044 最大值最小化

    题目描述 在印刷术发明之前,复制一本书是一个很困难的工作,工作量很大,而且需要大家的积极配合来抄写一本书,团队合作能力很重要.当时都是通过招募抄写员来进行书本的录入和复制工作的, 假设现在要抄写 \( ...

  10. Linux 内核 ksets 之上的操作

    对于初始化和设置, ksets 有一个接口非常类似于 kobjects. 下列函数存在: void kset_init(struct kset *kset); int kset_add(struct ...