2016-01-04 12 views
0

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

Как я вижу это сейчас, у меня есть несколько дополнительных подходов:

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

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

  3. Что-то еще?

Любые предложения были бы очень оценены.

EDIT: Приносим извинения за этот плохой вопрос.

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

enter image description here

ответ

0

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

+0

Я не думаю, что я задал свой вопрос четко. Сигнал 1PPS поступает из встроенного GPS, и я хочу быть потребителем этого сигнала (я должен был показать сигнал 1PPS, подключенный к компьютеру на диаграмме выше). Я понимаю, что сигнал 1PPS - это всего лишь один цифровой сигнал, используемый для обозначения в течение 1 секунды второй точки опроса UTC. Это позволяет внешним системам точно синхронизировать с временем UTC, предоставляемым GPS (в сообщении Ethernet). –

+0

продолжение сверху: Итак, мой воображаемый сценарий: я получаю последнее время UTC (время в секундах с определенной эпохи) из сообщения Ethernet, назовем его T1. После получения T1, когда произойдет следующий импульс 1PPS, время UTC будет trunc (T1 + 1) секунд. –

0

есть примеры, показывающие, как можно считывать сигнал PPS с использованием последовательного порта, например. присоединяя его к соответствующему контакту прерывания - это может быть RingIndicator (RI) или что-то еще с сопоставимыми функциями. проблема, которую я вижу, заключается в том, что любая услуга прерывания, управляемая кодом, имеет свои latencys и дрожание. это определяется вашим дизайном системы (и если вы это делаете, своей собственной системой, специально разработанной для обработки обработчиков прерываний), на ПК даже хорошая старая шина 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-Sensitive Networking (TSN) Task Group. Он определяет профиль для использования 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 мс. - это значит доказать это. долгосрочные наблюдения должны помочь вам разоблачить настоящие практические шапки с помощью вашего конкретного компьютера и выбранной программной среды.

Смежные вопросы