Информация о времени от GPS-приемника: как определить, свежая она или просроченная?

Я вижу, что библиотека TinyGPS++ извлекает информацию о времени из предложений GxRMC и GxGGA NMEA, передаваемых приемником GPS. Однако в своих экспериментах я заметил, что оба моих GPS-приемника генерируют предложения GxRMC с данными о времени не реже одного раза в секунду, даже если у них нет доступа к спутникам.

Я предполагаю, что данные о времени поступают от внутренних часов приемника (и сохраняются между теплыми запусками). Это совершенно нормально. Тем не менее, я хотел бы знать, какие меры требуются спецификацией NMEA для обеспечения надежности этих временных данных.

Правильно ли я предполагаю, что устройство само должно понимать, что через определенный промежуток времени его внутренние часы расходятся? И что по истечении этого периода устройство само перестанет выдавать эти предложения GxRMC, пока не получит шанс увидеть спутник и повторно синхронизировать свои внутренние часы? Или я должен ожидать, что следующее поле в предложении GxRMC изменится с A на V?

Если нет, то как правильно убедиться, что я получаю "спутниковое время" (или близкое к этому) или вообще ничего?

, 👍0


1 ответ


Лучший ответ:

3

Большинство модулей GPS продолжают отправлять данные в формате NMEA независимо от того, есть ли у них привязка GPS или нет, однако вы можете проанализировать данные GPS, чтобы определить, являются ли данные последними данными, полученными от GPS, или нет. Если вы посмотрите на определение данных NMEA здесь, в данных есть несколько переменных, которые вы можете использовать, чтобы определить, данные являются последними данными из GPS или нет.

Вы можете использовать «Исправить качество» в GPGGA, а также «Предупреждение о достоверности/получателе» в GPRMC для вашего модуля. В TinyGPS действительно анализируются обе эти переменные.

В библиотеке tinyGPS, если _gps_data_good равно true, данные, поступающие от модуля GPS, являются последними данными, полученными от спутников GPS. Программа использует либо исправление, либо достоверность, чтобы определить это (см. библиотеку здесь и здесь).

Вы должны просто продолжать проверять эту переменную, чтобы определить, являются ли текущие данные последними из GPS или они рассчитываются внутренним образом.

,

Да спасибо. Действительно, я только что заметил, что поле предупреждения в сообщениях GPRMC/GNRMC меняется между A и V. Когда исправления нет, время указывается с помощью V (ненадежно). Более того, после относительно длительного отсутствия доступа к спутникам мой приемник полностью перестает сообщать время в предложениях GxRMC - поле времени остается пустым., @AnT

Интересно, что в этом состоянии, после частичного воздействия открытого неба (например, видны только один или два спутника, нет фиксации), приемник снова начинает сообщать время в GxRMC, но с меткой V (ненадежно). На первый взгляд это странно, так как информация о времени в этом случае, по-видимому, поступает со спутников. «V» меняется на «A» только тогда, когда достигается фиксация положения, что в моем случае излишне (мне не нужно положение, только время)., @AnT