Синхронизация NTPD с сигналом 1PPS

У меня есть AHRS (справочная система определения направления), которая взаимодействует с моим C ++ приложением. Я получаю поток сообщений 50 Гц через Ethernet от AHRS, и как часть этого сообщения я получаю время UTC. В моей системе также будет работать NTPD в качестве сервера времени для нашей встроенной сети. AHRS также имеет выход 1PPS, который указывает второе время пролонгации для UTC. Я хотел бы синхронизировать время NTPD с UTC. После некоторых исследований я обнаружил, что есть методы, которые используют последовательный порт в качестве входа для 1PPS. Из того, что я могу найти, эти методы используют GPSD для считывания 1PPS и связи с NTPD для синхронизации системного времени. Однако GPSD ожидает сообщение в формате NMEA от GPS. У меня этого нет.

На мой взгляд, у меня есть несколько дополнительных подходов:

  1. Не используйте GPSD. Напишите программу, которая читает 1PPS и Ethernet
    сообщение содержит UTC, а затем каким-то образом передает эту информацию
    в НТПД.

  2. Используйте GPSD. Напишите программу, которая перепаковывает сообщение Ethernet в
    что-то, что может быть отправлено в GPSD, и пусть он обрабатывает
    взаимодействие с НТПД.

  3. Что-то другое?

Любые предложения будут очень признательны.

РЕДАКТИРОВАТЬ:
Я прошу прощения за этот плохо построенный вопрос.

Мое решение этой проблемы заключается в следующем:
1 — интерфейс 1PPS к порту RS232, который, как выясняется, является стандартным подходом, который обрабатывается GPSD.
2 — написать пользовательское приложение C ++ для чтения сообщений Ethernet, содержащих UTC, и из этого построить сообщение NMEA, содержащее UTC.
3 — передать сообщение NMEA в GPSD, который, в свою очередь, взаимодействует с NTPD для синхронизации информации GPS / 1PPS с системным временем.

введите описание изображения здесь

0

Решение

Я не знаю, почему вы хотели бы управлять устройством PPS с сигналом, который доставляется через кадры Ethernet. Более того, PPS не работает так, как вы, кажется, думаете. В сигнале PPS нет временного кода, поэтому вы не можете синхронизировать время с сигналом PPS. Сигнал PPS просто используется для информирования компьютера о длительности секунды.

0

Другие решения

Есть примеры, которые показывают, как сигнал PPS может считываться с использованием последовательного порта, например, подключив его к выводу с возможностью прерывания — это может быть RingIndicator (RI) или что-то еще с сопоставимыми функциями. проблема, которую я вижу, состоит в том, что любой вид управляемой кодом службы прерывания имеет свои задержки и дрожание. это определяется вашей системной конструкцией (и если вы делаете это, своей собственной системой, настроенной специальной программой обработки прерываний — на ПК даже старые добрые ISA-шины, представленные обработчиками NMI, могут видеть такие эффекты).

насколько я понимаю, люди, которые выполняют синхронизацию времени на «компьютере», используют настоящий аппаратный счетчик таймера (например, с 64 битами) и защелку, которая запускается для выборки и удержания значения таймера при каждом входящем импульсе 1PPS. — люди делают это уже с PTP через Ethernet с небольшим изменением, что специальный край входящих данных используется в качестве триггера, и этот отправитель и получатель могут быть синхронизированы, используя дополнительную программную логику, которая получает результирующее значение из встроенного РТР-аппаратно-защелки.
посмотреть здесь: https://en.wikipedia.org/wiki/Precision_Time_Protocol

наряду с, например, 802.1AS: http://www.ieee802.org/1/pages/802.1as.html
описал википедию в разделе «Связанные инициативы» как:
«IEEE 802.1AS-2011 является частью группы стандартов IEEE Audio Video Bridging (AVB), дополнительно расширенной целевой группой IEEE 802.1 Time-Sensing Networking (TSN). Он определяет профиль для использования IEEE 1588-2008 для времени синхронизация по виртуальной мостовой локальной сети (как определено IEEE 802.1Q). В частности, 802.1AS определяет, как IEEE 802.3 (Ethernet), 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 мс при запуске с одним импульсом до 0,1 мс. — делать это значит доказывать это. долгосрочные наблюдения должны помочь вам раскрыть истинные практические ограничения с вашим очень конкретным компьютером и выбранной программной средой.

0

По вопросам рекламы [email protected]