0

我有一个与我的 C++ 应用程序接口的 AHRS(姿态航向参考系统)。我通过以太网从 AHRS 接收到 50Hz 的消息流,作为该消息的一部分,我得到了 UTC 时间。我的系统还将运行 NTPD 作为我们嵌入式网络的时间服务器。AHRS 还有一个 1PPS 输出,指示 UTC 的第二个翻转时间。我想将 NTPD 时间与 UTC 同步。经过一番研究,我发现有些技术利用串行端口作为 1PPS 的输入。据我所知,这些技术使用 GPSD 读取 1PPS 并与 NTPD 通信以同步系统时间。但是,GPSD 期望来自 GPS 的 NMEA 格式的消息。我没有那个。

我现在看到的方式,我有几个可选的方法:

  1. 不要使用 GPSD。编写一个程序,读取 1PPS 和包含 UTC 的以太网消息,然后以某种方式将此信息传达给 NTPD。

  2. 使用 GPSD。编写一个程序,将以太网消息重新打包成可以发送到 GPSD 的东西,并让它处理与 NTPD 的交互。

  3. 还有什么?

任何建议将不胜感激。

编辑: 我为这个结构不佳的问题道歉。

我对这个问题的解决方案如下: 1 - 将 1PPS 接口连接到 RS232 端口,事实证明这是 GPSD 处理的标准方法。2 - 编写自定义 C++ 应用程序来读取包含 UTC 的以太网消息,并从中构建包含 UTC 的 NMEA 消息。3 - 将 NMEA 消息馈送到 GPSD,GPSD 进而与 NTPD 接口以将 GPS/1PPS 信息与系统时间同步。

在此处输入图像描述

4

2 回答 2

0

我不知道您为什么要使用通过以太网帧传递的信号来驱动 PPS 设备。此外,PPS 并不像您想象的那样工作。PPS 信号中没有时间码,因此您无法将时间与 PPS 信号同步。PPS 信号只是用来通知计算机一秒钟有多长。

于 2016-01-05T20:51:21.863 回答
0

有一些示例显示如何使用串行端口读取 PPS 信号,例如通过将其连接到具有中断功能的引脚 - 这可能是 RingIndicator (RI) 或其他具有类似功能的东西。我看到的问题是,任何类型的代码驱动的中断服务都有其延迟和抖动。这是由您的系统设计定义的(如果您正在这样做,则由您自己的系统定制的特殊中断处理程序例程 - 在 PC 上,即使是良好的旧 ISA 总线引入的 NMI 处理程序也可能会看到这种效果)。

据我所知,在“计算机”上进行时间同步的人正在使用真正的硬件定时器计数器(例如 64 位)和一个锁存器,该锁存器被触发以在每个传入的 1PPS 脉冲上采样并保持定时器的值。- 人们已经在以太网上使用 PTP 执行此操作,但有细微的变化,即传入数据的特殊边缘用作触发器,并且通过此发送器和接收器可以使用进一步的程序逻辑同步,该逻辑从内置获取结果值PTP 硬件锁存器。见这里:https ://en.wikipedia.org/wiki/Precision_Time_Protocol

连同例如 802.1AS:http : //www.ieee802.org/1/pages/802.1as.html 在“相关倡议”部分将维基百科描述为:“IEEE 802.1AS-2011 是 IEEE 音频视频桥接 (AVB) 的一部分) 标准组,由 IEEE 802.1 时间敏感网络 (TSN) 任务组进一步扩展。它指定了使用 IEEE 1588-2008 在虚拟桥接局域网(由 IEEE 802.1Q 定义)上进行时间同步的配置文件. 特别是,802.1AS 定义了 IEEE 802.3(以太网)、IEEE 802.11(Wi-Fi)和 MoCA 如何都可以成为同一 PTP 时序域的一部分。”

一些文章(德语):https ://www.elektronikpraxis.vogel.de/ethernet-fuer-multimediadienste-im-automobil-a-157124/index4.html 和一些介绍:http ://www.ieee802.org/ 1/files/public/docs2008/as-kbstanton-8021AS-overview-for-dot11aa-1108.pdf

我对你的问题的理由是:是的,有可能。但由于您被迫使用的中断处理程序的延迟和抖动等各种内部因素,这是一个精度有限的设计。从长远来看,每个脉冲可实现的整体精度很难说,但在启动时可能在大约 10 ms 的范围内,单个脉冲可能/猜测为 0.1 ms。- 这样做意味着证明它。长期观察应该可以帮助您通过您非常特定的计算机和选定的软件环境揭示真正的实用上限。

于 2018-03-08T10:00:55.507 回答