GNSS终端的授时之一:PPS和TOD

图片

我们都知道GNSS终端具备授时功能,能够提供精确的时间信息。今天我们就来讨论一下GNSS终端输出时间信息的几种不同接口形式。目前常用的时间信息输出接口形式包括:

  • PPS+TOD

  • B码

  • 网络授时NTP

  • 网络授时PTP

本篇文章,我们先介绍最简单的PPS+TOD的接口形式。文章分为两个部分:

  1. 什么是PPS+TOD

  2. 怎么使用PPS+TOD

什么是PPS+TOD

PPS (Pulse Per Second)是一种硬件定时脉冲信号,由GNSS接收机输出。正常情况下每秒产生一个脉冲,在脉冲的上升沿(也可设置为下降沿)代表系统整秒时刻。当PPS信号到达时,标志着一秒的开始。目前常规GNSS接收机输出的PPS时间精度可达30ns~50ns级别。

但是PPS信号仅代表一个时刻,未包含具体的时间信息。其他设备接收到PPS脉冲后,仍需知道该脉冲对应的"年月日时分秒毫秒"信息,因此需要补充TOD(Time of Day)信息。TOD的作用是明确告知该PPS脉冲对应的具体时刻。

PPS和TOD信息的时序关系如下图所示:

PPS和TOD

PPS和TOD

一般GNSS接收机都配备串口,因此TOD信息通过异步串行总线接口传输。GNSS接收机在整秒时刻输出PPS脉冲信号,随后发送包含TOD的数据帧,提供PPS时刻对应的时间信息。

在卫星导航领域,传输TOD数据的协议帧较多,最常用的是NMEA0183的ZDA语句。ZDA(Time & Date)提供了UTC时间和日期信息,包含年、月、日、小时、分、秒和毫秒等要素。

(关于UTC时间、北斗时间、GPS时间、北京时间、格林威治时间等时间系统,后续将专门撰写文章进行详细介绍。

一个典型的NMEA ZDA语句格式如下:

**\$BDZDA,hhmmss.sss,day,month,year,xx,yy\*CC。**

各参数说明如下:

$BDZDA:ZDA语句标识符。通常表示数据来自北斗系统,GPZDA表示GPS系统,$GNZDA表示组合系统。

hhmmss.ss:当前UTC时间,格式为小时(hh)、分钟(mm)、秒(ss),后跟小数部分(.sss)。在NMEA-4.1协议中,秒精确到小数点后3位。

day:日期(日)。

month:月份。

year:年份。

xx:本地时区偏移量的小时部分(如适用)。无时区信息时该字段为空或省略。

yy:本地时区偏移量的分钟部分(如适用)。无时区信息时该字段为空或省略。

*CC:校验和,用于验证语句完整性。计算方法是从$开始到*之前所有字符ASCII码的异或结果。

假设接收到的$BDZDA语句如下:

\$BDZDA,160012.750,19,08,2023,,\*4C

其含义为:

  • 基于北斗卫星导航系统计算的时间信息。

  • 日期为2023年8月19日。

  • 时间为16:00:12.750,UTC时间。

怎么使用PPS+TOD

有朋友可能会问:TOD数据是在PPS信号之后发出的,当用户设备接收到TOD时,对应的PPS脉冲已经过去。这该如何应用呢?

实际上,用户设备接收到TOD数据后,可提取其中的时间T0,加 1秒得到T1。当检测到下一个PPS脉冲到来时,该时刻即为T1。

还有朋友会提出疑问:PPS每秒仅输出一次,代表整秒时刻。若需要更高分辨率的时间信息,应如何处理?

例如以下场景:

外部触发事件打时间戳

外部触发事件打时间戳

用户设备接收GNSS接收机的PPS和TOD信号,同时接收到外部触发事件(EventMark)。需要为该外部EventMark事件打时间戳,获取其对应的"年月日时分秒毫秒"信息,应如何操作?

假设用户设备为单片机或ARM处理器(若为CPLD/FPGA,处理方式相同)。操作步骤如下:

外部事件打时间戳

外部事件打时间戳

1. 在单片机内启动内部定时器,选择时钟频率(如1MHz主时钟)以获得1μs分辨率的时间戳。

2. 定时器持续运行。

3. PPS脉冲到达时,将内部定时器清零。

4. 将外部EventMark脉冲作为中断信号,在中断处理程序中读取定时器计数值,该值即为EventMark时刻1s以下的时间部分。

5. 将TOD中的PPS时间与定时器计数值相加,即可获得EventMark事件的完整时间戳。

码字不易,大家觉得文章不错,就安排一下一键三连吧:点赞、分享、推荐。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值