Синхронизация времени ГНСС приемниками. Сочетание синхроимпульса (PPS) и информации о времени дня (TOD).
Вероятнее всего, вам известно, что ГНСС приемники по принципу своей работы имеют функцию синхронизации шкалы часов и могут предоставлять точное время. В цикле статей о синхронизации времени будут рассмотрены несколько различных интерфейсов вывода информации о времени ГНСС приемниками.
В настоящее время наиболее часто используемые формы интерфейсов вывода временной информации включают:
• PPS+TOD
• B-код
• Сетевая синхронизация NTP
• Сетевая синхронизация PTP
В данной статье будет рассмотрена первая форма, простейший интерфейс PPS+TOD.
Что такое PPS+TOD?
PPS (Pulse Per Second, импульс в секунду) является генерируемым ГНСС приемником на аппаратном уровне сигналом синхроимпульса. В обычных обстоятельствах формируется один импульс в секунду, а восходящий фронт импульса (может быть изменен на нисходящий) представляет целую часть секунды системы. Сигнал PPS при появлении отмечает начало секунды. В настоящее время точность времени формирования сигнала PPS распространенными ГНСС приемниками может достигать уровня 30~50 наносекунд.
Однако, сигнал PPS всего лишь представляет момент, и не содержит информацию о конкретном времени. После получения импульса PPS, другие устройства все еще не владеют информацией "год, месяц, день, час, минута, секунда, миллисекунда", соответствующей импульсу, таким образом им нужна информация TOD (Time of Day, время дня). Роль TOD – четко информировать о конкретном времени, соответствующему данному импульсу PPS. Взаимосвязь между PPS и TOD схематично представлена на следующем рисунке:
Рис. 1. PPS и TOD.
Обычно, ГНСС приемники имеют один или несколько последовательных портов, поэтому информация TOD передается по асинхронному последовательному интерфейсу. ГНСС приемник выдает сигнал PPS в целую секунду, и затем передает пакет данных с TOD, передавая временную информацию, соответствующую моменту PPS.
В области спутниковой навигации существует множество протоколов, имеющих возможности передачи данных TOD, среди которых наиболее часто используется сообщение ZDA протокола NMEA0183. ZDA (Время и Дата) содержит время и дату по шкале универсального скоординированного времени (UTC), включая такие элементы как год, месяц, день, час, минута, секунда и миллисекунда.
Формат типового сообщения NMEA ZDA следующий:
I $GNZDA,hhmmss.sss,day,month,year,xx,yy*CC
Далее следует описание полей в сообщении ZDA:
• $GNZDA: идентификатор сообщения ZDA. GPZDA означает ГНСС систему GPS, $BDZDA – BeiDou, $GLZDA – ГЛОНАСС, а $GNZDA означает, что используется несколько систем.
• hhmmss.sss: текущее время по шкале UTC в формате часов (hh), минут (mm), секунд (ss) с дробной частью (.sss). В протоколе NMEA0183 версии 4.1, секунды выводятся с точностью 3 знака (миллисекунда).
• day: день.
• month: месяц.
• year: год.
• xx: смещение локального часового пояса по отношению к UTC, в часах (если используется локальное время). Это поле пустое или отсутствует, если в сообщении нет информации о часовом поясе.
• yy: смещение локального часового пояса по отношению к UTC, в минутах (если используется локальное время). Это поле пустое или отсутствует, если в сообщении нет информации о часовом поясе.
• *CC: контрольная сумма, используется для контроля целостности информации в сообщении. Рассчитывается как результат операции XOR над строкой, содержащей ASCII коды всех символов в сообщении между $ и *.
Ниже представлен пример отправленной ГНСС приемником строки
I $GNZDA: $BDZDA,160012.750,19,08,2023,,*4C
Смысл информации в этой строке:
• Расчет времени выполнен на основе спутниковой группировки BeiDou.
• Дата – 19 августа 2023.
• Время – 16:00:12.750 UTC.
Как применяется PPS+TOD?
Возникает вопрос: данные TOD передаются после формирования сигнала PPS. Когда оборудование пользователя получает данные TOD, соответствующий им импульс PPS уже прошел. Как тогда можно применить полученную информацию?
Фактически, после получения данных TOD, пользовательское оборудование может вычесть время T0 и добавить 1 секунду, чтобы получить T1. При обнаружении следующего импульса PPS будет определено время T1. Возникает следующий вопрос: импульс PPS формируется только раз в секунду, представляя целую часть секунды. Если требуется более точное время, как следует обрабатывать эту информацию?
Представим следующий сценарий:
Рис. 2. Метка времени внешнего события.
Пользовательское оборудование принимает сигналы PPS и TOD от ГНСС приемника, и дополнительно принимает импульс внешнего события (EventMark). Необходимо установить метку времени на внешнее событие EventMark и определить соответствующую событию информацию "год, месяц, день, час, минута, секунда, миллисекунда". Как это может быть достигнуто?
Допустим, что пользовательское устройство представляет собой однокристальный микрокомпьютер или процессор ARM (в случае, если это ПЛИС, метод обработки аналогичен). Блок-схема процесса формирования точного времени и последовательность операций следующие:
Рис. 3. Вычисление точного времени внешнего события.
1. Запуск внутреннего таймера в микроконтроллере и выбор частоты тактового генератора (например, частота тактового генератора составляет 1 МГц для определения метки времени с разрешением 1 микросекунда).
2. Таймер продолжает работать.
3. При поступлении импульса PPS значение счетчика внутреннего таймера сбрасывается.
4. Импульс внешнего события EventMark используется как сигнал прерывания, при котором обработчик прерывания считывает значение счетчика таймера. Это значение есть доля секунды до момента события EventMark.
5. Прибавив время PPS + TOD к значению счетчика таймера, получим точную отметку времени события EventMark.
Источник: Блог «Коммуникации и Навигация» (通信与导航), 04.05.2025.
Перевод и адаптация: ООО «ГНСС плюс», 2025.