基于GPSD的高精度校时系统
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电平,供串口读取。本文引用地址:https://www.eepw.com.cn/article/193820.htm
(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时钟源,输出结果如下所示:
p2p机相关文章:p2p原理
评论