PTP同步中的TAI和UTC时间

欢迎淘宝搜索飞灵科技,我司相关新产品陆续上线。

PTP主从同步的示例

PTP主时钟一般采用GNSS卫星授时,然后向网络中的PTP从时钟进行同步。这其中涉及一些时间域的概念:

  • GNSS卫星授时的报文中包含的是UTC时间
  • PTP主时钟使用高精度PTP时钟和网络硬件时间戳,使用的PTP时间域实际上是TAI时间。
  • PTP从时钟如果不支持网络硬件时间戳,而使用系统软件时间戳的话,其使用的是系统时间,也是UTC时间。

这种情况下,同步的过程如下图。
在这里插入图片描述

TAI时间和UTC时间同步验证

可以使用两块TSync开发板(板子介绍见https://flyelf-tech.gitee.io/docs/tsync/intro/)来验证上面的同步示例。操作步骤:

  1. 使用两块TSync开发板,一块作为主时钟(带GNSS模块),一块作为从时钟,eth0即PTP口用网线直连。分别上电启动。
  2. 主时钟端执行下面的命令,在后台运行两个同步程序,ts2phc用来和GNSS时间同步,ptp4l是ptp协议栈。注意,GNSS模块PPS灯闪烁时表示从卫星接收到有效PPS信号和时间信息。可以用tail -f /tmp/gnss.logtail -f /tmp/master.log实时查看详细运行log。
ts2phc -c eth0 -s nmea --ts2phc.nmea_serialport /dev/ttymxc1 -l 7 -m > /tmp/gnss.log &
ptp4l -i eth0 -m -2 --priority1=1 > /tmp/master.log &
  1. 从时钟端执行下面的命令,在后台进行ptp同步。和主时钟不同,这里指定-S选项使用软件时间戳即系统时间/UTC时间,而主时钟使用硬件时间戳/TAI时间。可以用tail -f /tmp/slave.log实时查看详细运行的log。
systemctl stop systemd-timesyncd
ptp4l -i eth0 -m -S -2 > /tmp/slave.log &
  1. 为了直观对比主时钟TAI时间,从时钟的UTC时间,可以在主时钟终端窗口每隔0.1s打印硬件PTP时钟时间信息,见下面命令。
while true; do phc_ctl /dev/ptp0 get; sleep 0.1;done

在从时钟终端窗口每隔0.1s打印系统时间信息,见下面命令。

while true; do date; echo ""; sleep 0.1;done

另外打开网页上的UTC和TAI时间,可以打开这个网站http://www.leapsecond.com/java/gpsclock.htm,然后进行对比。结果如下图,主时钟使用TAI时间,从时钟使用UTC时间,和网站查询到的TAI和UTC时间一致。

在这里插入图片描述

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值