Информация об изменениях

Сообщение Re[5]: Какие есть способы получать более-менее точное время? от 11.03.2022 17:43

Изменено 11.03.2022 21:22 watchmaker

Re[5]: Какие есть способы получать более-менее точное время?
Здравствуйте, vsb, Вы писали:

vsb>Ну мне все эти микросекунды роли не играют, у меня точность 2 секунды, а не микросекунды.


Действительно, непонятно зачем тебе советуют тут решать какие-то уравнения, слушать несколько спутников, вычислять коррекции и поправки, и прочую жесть.

Так как в gps каждая строка данных, переданная со спутника, содержит временную метку в HOW-слове. Для желаемой точности достаточно просто транслировать её наружу с любого из спутников, даже без сравнения с другими.


> Т.е. я бы предпочёл запитать приёмник на 10 мс, поймать первый попавшийся сигнал и потушить его сразу, и пусть там будет точность +- секунда


А вот так не получится.
Хотя временные метки и находятся в каждом subframe, но один subframe занимает 300 бит, а в GPS скорость передачи — 50 бит в секунду. То есть для минимальной порции данных придётся принимать сигнал минимум 6 секунд.

Дальше — хуже. В HOW находится не весь timestamp, а лишь младшая его часть — время с начала gps-недели.
Какая сейчас gps-неделя, конечно, тоже передаётся, но лишь в subframe 1, то есть раз в 30 секунд. И там тоже не все биты, а лишь по модулю 1024 (https://en.wikipedia.org/wiki/GPS_week_number_rollover).

Но и это ещё не всё. Тебя скорее интересует UTC-время. А в нём есть високосные секунды. А gps-time течёт непрерывно.
То есть gps-timestamp нужно скорректировать на несколько целочисленных високосных секунд: а они наступают непредсказуемо. Если эту информацию не обновлять, то каждые несколько лет будет добавляться ошибка ровно в одну секунду.
А обновлять эту информацию можно либо из tzdata, либо из 18-страницы альманаха (транслируется раз в 12.5 минут).

Понятно, что если слышно несколько спутников, то можно дождаться первого ответа, кратно уменьшив время ожидания, но даже если тебе откуда-то (например, с предыдущего запуска) уже известна вся нужная информация, то всё равно субсекундного времени приёма не будет достаточно.
Re[5]: Какие есть способы получать более-менее точное время?
Здравствуйте, vsb, Вы писали:

vsb>Ну мне все эти микросекунды роли не играют, у меня точность 2 секунды, а не микросекунды.


Действительно, непонятно зачем тебе советуют тут решать какие-то уравнения, слушать несколько спутников, вычислять коррекции и поправки, и прочую жесть.

Так как в gps каждая строка данных, переданная со спутника, содержит временную метку в HOW-слове. Для желаемой точности достаточно просто транслировать её наружу с любого из спутников, даже без сравнения с другими.


> Т.е. я бы предпочёл запитать приёмник на 10 мс, поймать первый попавшийся сигнал и потушить его сразу, и пусть там будет точность +- секунда


А вот так не получится.
Хотя временные метки и находятся в каждом subframe, но один subframe занимает 300 бит, а в GPS скорость передачи — 50 бит в секунду. То есть для минимальной порции данных придётся принимать сигнал минимум 6 секунд.

Дальше — хуже. В HOW находится не весь timestamp, а лишь младшая его часть — время с начала gps-недели.
Какая сейчас gps-неделя, конечно, тоже передаётся, но лишь в subframe 1, то есть раз в 30 секунд. И там тоже не все биты, а лишь по модулю 1024 (https://en.wikipedia.org/wiki/GPS_week_number_rollover).

Но и это ещё не всё. Тебя скорее интересует UTC-время. А в нём есть високосные секунды. А gps-time течёт непрерывно.
То есть gps-timestamp нужно скорректировать на несколько целочисленных високосных секунд: а они наступают непредсказуемо. Если эту информацию не обновлять, то каждые несколько лет будет добавляться ошибка ровно в одну секунду.
А обновлять эту информацию можно либо из tzdata, либо из 18-й страницы альманаха (транслируется раз в 12.5 минут, достаточно получать раз в полгода).

Понятно, что если слышно несколько спутников, то можно дождаться первого ответа, кратно уменьшив время ожидания, но даже если тебе откуда-то (например, с предыдущего запуска) уже известна вся нужная информация, то всё равно субсекундного времени приёма не будет достаточно.