company_banner

Синхронизация времени без интернета



    Помимо tcp/ip, существует множество способов синхронизация времени. Некоторые из них требуют лишь наличие обычного телефона, в то время, как другие требуют дорогостоящего, редкого и чувствительного электронного оборудования. Обширная инфраструктура систем синхронизации времени включает в себя обсерватории, государственные институты, радиостанции, спутниковые группировки и многое другое.

    Сегодня я расскажу, как устроена синхронизация времени без интернета и как сделать “спутниковый” NTP сервер своими руками.

    Радиовещание на коротких волнах


    В Соединенных Штатах Америки NIST передает точное время и частоту по 2.5, 5, 10, 15 и 20 МГц радиоволнам со станции WWVH в Форт-Коллинсе, штат Колорадо, и на частотах 2.5, 5, 10 и 15 МГц со станции WWVH в Кауаи, штат Гавайи. Временной код передается через 60-секундный интервал на скорости 1 б/с. с использованием широтно — импульсной модуляции на поднесущей 100 Гц.

    Национальный исследовательский совет (NRC) Канады осуществляет распространение временной и частотной информации на 3.33, 7.85 и 14.67 МГц со станции CHU в Оттаве, провинция Онтарио.

    image
    Формат вещания WWVH

    Распространение сигнала от коротковолновых станций обычно происходит путем отражения от верхних слоев ионосферы. Передачи сигнала могут быть получены на больших расстояниях, однако точность времени составляет порядка одной миллисекунды.

    Текущий стандарт NTPv4 включает в себя аудио драйверы для WWV, WWVH и CHU.

    Радиовещание на длинных волнах


    NIST также передает точное время и частоту по длинным радиоволнам на волне 60 kHz из Боулдера в штате Колорадо. Есть и другие станции передачи сигналов точного времени на длинных волнах.
    Позывные и локация Частота (kHz) Мощность (kW)
    WWVB Форт-Коллинс, Колорадо, США 60 50
    DCF77 Mainflingen, Germany 77.5 30
    MSF Rugby, United Kingdom 60> 50
    HBG Prangins, Switzerland 75 20
    JJY Fukushima, Japan 40 50
    JJY Saga, Japan 60 50
    Низкочастотные Станции Стандартного Времени

    Временной код передается через 60-секундный интервал на скорости 1 б/с, точно так же, как на коротковолновых станциях. Форматы передачи данных тоже сходны для обоих стандартов. Распространение сигнала происходит через нижние слои ионосферы, которые относительно стабильны и имеют предсказуемые суточные колебания высоты. Благодаря этой предсказуемости физической среды точность повышается до 50 μs.

    image
    Формат вещания WWVB

    Геостационарный эксплуатационный спутник наблюдения за окружающей средой


    В США NIST также передает данные о точном времени и частоте примерно на 468 МГц с геостационарных эксплуатационных спутников окружающей среды (GOES). Временной код чередуется с сообщениями, используемыми для опроса удаленных датчиков. Он состоит из 60 BCD полубайтов, передаваемых с интервалом в 30 с. Информация временного кода аналогична наземным службам.

    Системы глобального позиционирования


    Министерство обороны США использует GPS для точной навигации на суше, на море и в воздухе. Эта система обеспечивает 24-часовой охват земного шара с помощью группировки спутников на 12-часовых орбитах, наклоненных под углом 55°.

    Первоначальная группировка из 24 спутников была расширена до 31 спутника в неоднородной конфигурации, так что по крайней мере 6 спутников всегда находятся в поле зрения, а 8 или более спутников находятся в поле зрения в большей части света.

    Услуги, подобные GPS, эксплуатируются или планируются другими странами. Российский ГЛОНАСС работает уже с десяток лет, если считать со 2 сентября 2010 года, когда общее количество спутников было доведено до 26 — группировка была полностью развёрнута для полного покрытия Земли.

    image
    Спутники GPS вокруг земного шара.

    Спутниковая система навигации Европейского Союза называется «Галилео». Ожидалось, что «Галилео» начнет работать в 2014—2016 годах, когда на орбиту будут выведены все 30 запланированных спутников Но на 2018 год спутниковая группировка «Галилео» так и не достигла необходимого количества аппаратов.

    Есть еще китайский «Бэйдооу», что в переводе означает «кит». Группировка в составе 16 спутников была запущена в коммерческую эксплуатацию 27 декабря 2012, в качестве региональной система позиционирования. Планируется, что на полную мощность система выйдет к 2020 году. Как раз сегодня, на Хабре вышла статья, про успешный запуск спутника этой системы.

    Математика определения координат по СРНС


    Как GPS/Глонасс навигатор на вашем смартфоне определяет местоположение с такой точностью с помощью системы радионавигационной связи (СРНС)? Чтобы понять принцип расчетов нужно вспомнить стереометрию и алгебру в пределах старших классов средней, или физмат школы.

    Каждый спутник сообщает приемнику точное время. На спутнике установлены атомные часы и поэтому им можно верить. Зная скорость света нетрудно определить радиус сферы на поверхности которой находится спутник. Это же сфера соприкасаясь с Землей образует круг, на котором находится GPS / Глонасс приемник.

    Когда сигнал приходит с двух спутников, мы уже имеем пересечение Земли и двух сфер, что дает лишь две точки на круге. Сфера третьего спутника в идеале должна попасть в одну из этих двух точек, окончательно определив координаты приемника.

    В принципе даже с двух спутников по косвенным признакам можно понять, какая из двух точек ближе к истине и современные алгоритмы навигационного программного обеспечения могут справиться с такой задачей. Зачем же тогда нам нужен четвертый спутник?

    image
    Определение местоположения с помощью спутниковой группировки.

    Нетрудно заметить, что в этой идеализированной картине есть много нюансов, от которых зависит точность расчетов. Время на приёмнике, пожалуй самый очевидный источник погрешностей. Для того, чтобы все заработало как надо время GPS / Глонасс приёмника должны быть синхронизированы со временем спутника. Без этого погрешность составила бы ∓ 100 тыс. км.

    Из формулы скорости, времени и расстояния S = v*t получаем базовое уравнение для передачи сигнала СРНС. Расстояние до спутника равно произведению скорости света на разницу времени на спутнике и приёмнике.

    $S = с*(t_{сп} - t_{пр})$



    Главным образом это происходит вследствие того, что даже после всех синхронизаций время на приёмнике tпр мы знаем с достаточной степенью точности. Между истинным временем и tпр всегда будет существовать Δt, из-за которой погрешность вычислений становится неприемлема. Вот почему нужен четвертый спутник.

    Для более ясного математического обоснования необходимости четырех спутников построим систему уравнений.

    $R_{i} = (x - X_{i})^{2} + (y - Y_{i})^{2} + (z - Z_{i})^{2} + Δt$



    Для определения четырех неизвестных x, y, z, и Δt необходимо, чтобы число наблюдений равнялось или было больше, чем число неизвестных. Это необходимое, но недостаточное условие. Если матрица нормальных уравнений окажется вырожденной, у системы уравнений не будет решения.

    Не стоит также забывать про Специальную Теорию Относительности и релятивистские эффекты с замедлением времени на спутниковых атомных часах относительно наземных.

    $t_{сп}=\frac{t_{пр}}{\sqrt{1-(\frac{v}{c})^2}}$



    Если считать, что спутник движется по орбите со скоростью 14 тыс. км./ч., то получаем замедление времени около 7 μс (микросекунд). С другой стороны действуют релятивистские эффекты Общей Теории Относительности.

    Дело вот в чем, спутники на орбитах находятся на большом расстоянии от Земли, где кривизна пространственно-временного континуума меньше, чем на земной поверхности из-за массы Земли. Согласно ОТО ход часов, расположенных ближе к массивному объекту, будет казаться медленнее, чем тех, что находятся дальше от него.

    $t_{пр} = t_{сп}*\sqrt{1-\frac{2GM}{rc^2}}$


    • G — гравитационная постоянная;
    • M — масса объекта, в данном случае Земли;
    • r — расстояние от центра Земли до спутника;
    • c — скорость света.

    Вычисление по этой формуле даёт замедление времени 45 μс на спутнике. Итого -7μс +45μс = 38μс баланс — эффектов СТО и ОТО.

    В прикладных задачах определения местоположения с помощью СРНС следует также принять во внимание ионосферные и тропосферные задержки. Помимо того, корректировки 46 ns связаны c эксцентричностью 0.02 орбиты спутников GPS.

    Возможность получать сигналы одновременно более чем с четырех спутников GPS / ГЛОНАСС позволяет еще больше увеличить точность определения координат приёмника. Это достигается за счет того, что навигатор решает систему их четырех уравнений с четырьмя неизвестными $C^k_m$ число раз и берет среднее значение, повышая точность итоговой оценки согласно законам математической статистики.

    Как настроить NTP сервер Stratum 1 по спутниковой связи


    Для настройки высококачественного сервера времени необходимо всего лишь GPSD, NTP и GPS-приёмник, с выходом 1PPS (один импульс в секунду).

    1. Установите gpsd и ntpd, либо gpsd и chronyd. Версия gpsd должна быть ≥ 3.20

    (1:1109)$ sudo emerge -av gpsd chrony
    
    Local copy of remote index is up-to-date and will be used.
    
    Calculating dependencies... done!
    
    [binary  N     ] net-misc/pps-tools-0.0.20120407::gentoo  31 KiB
    
    [binary  N     ] net-misc/chrony-3.5-r2::gentoo  USE="adns caps cmdmon ipv6 ntp phc readline refclock rtc seccomp (-html) -libedit -pps (-selinux)" 246 KiB
    
    [binary  N     ] sci-geosciences/gpsd-3.17-r3:0/23::gentoo  USE="X bluetooth cxx dbus ipv6 ncurses python shm sockets udev usb -debug -latency-timing -ntp -qt5 -static -test" GPSD_PROTOCOLS="aivdm ashtech earthmate evermore fv18 garmin garmintxt gpsclock isync itrax mtk3301 navcom ntrip oceanserver oncore rtcm104v2 rtcm104v3 sirf skytraq superstar2 tnt tripmate tsip ublox -fury -geostar -nmea0183 -nmea2000 -passthrough" PYTHON_TARGETS="python2_7" 999 KiB
    
    Total: 3 packages (3 new, 3 binaries), Size of downloads: 1275 KiB
    
    Would you like to merge these packages? [Yes/No]

    2. Подключите GPS-приёмник с поддержкой PPS к последовательному RS232 или USB порту.

    Обычный дешевый GPS-приемник не подойдет; возможно, придется немного побегать, чтобы найти подходящий.

    3. Убедитесь, что устройство действительно выдаёт PPS, для этого проверьте порт утилитой gpsmon.

    4. Откройте файл /etc/conf.d/gpsd и отредактируйте следующую строку.

    Заменить

    GPSD_OPTIONS=""

    так, чтобы стало

    GPSD_OPTIONS="-n"

    Это изменение требуется для того, чтобы gpsd при старте сразу же начинал поиск источников СРНС.

    5. Запустите, или перезапустите gpsd.

    (1:110)$ sudo /etc/init.d/gpsd start
    (1:111)$ sudo /etc/init.d/gpsd restart
    

    Для дистрибутивов с systemd, используйте соответствующую команду systemctl.

    6. Проверьте консольный вывод команды cgps.

    Нужно удостовериться в том, что данные исправно поступают со спутников. В консоли должно быть нечто схожее с иллюстрацией.


    Вывод консольной команды cgps.

    7. Настало время отредактировать файл /etc/ntp.conf.

    # GPS Serial data reference (NTP0)
    server 127.127.28.0
    fudge 127.127.28.0 time1 0.9999 refid GPS
    
    # GPS PPS reference (NTP1)
    server 127.127.28.1 prefer
    fudge 127.127.28.1 refid PPS
    

    Верхняя запись NTP0 указывает на универсальный источник времени, доступный почти на всех устройствах GPS. Нижняя запись NTP1 определяет гораздо более точный PPS источник.

    8. Перезапустить ntpd.

    (1:112)$ sudo /etc/init.d/ntpd restart

    Для дистрибутивов с systemd, используйте команду systemctl.
    $ sudo systemctl restart ntp

    Использованные материалы





    RUVDS.com
    RUVDS – хостинг VDS/VPS серверов

    Комментарии 37

      +1
      Неплохо было бы упомянуть и про Европейскую RDS, тем более, что это — все еще действующая система.
        +5
        Но на 2018 год спутниковая группировка «Галилео» так и не достигла необходимого количества аппаратов.

        А на 2020 год?
          0
          Полная 30-спутниковая система Galileo (24 оперативных и 6 активных запасных частей) ожидается к 2020 г.
          На сейчас 26/30
          Satellites in orbit 22 usable, 2 testing only, 2 unavailable, and 2 retired
          0

          Неужели нельзя стратум 1 из старого мобильника сделать, надо обязательно покупать gps с rs232 портом?

            0

            Я сделал себе сервер времени из старого автомобильного gps трекера как дополнительную функцию к существующему серверу на rpi.
            В принципе необязательная вещь в доме.

            +2

            Галилео укомплектована и уже второй год в финальной стадии тестирования, там 22 спутника в работе + 2 вводятся.


            Время на орбите из-за ОТО не замедляется, а ускоряется.

              0
              Чтото крайне однобокая американская статья. Да ещё и только про спутники. А где про сигналы эталонного времени и частоты? Есть радиостанции на территории РФ и в Европе. Принимай и синхронтзируйся.)
                0
                В основном про спутники. Про радио — пара слов только.
                  0
                  да и если не точка на геоиде, то от одного спутника — сфера, определённой толщины, толщина определяется погрешностью исчисления времени,
                  соответственно от двух спутников — кольцо, бублик, от трёх — шар возможных координат,
                  и чем больше дополнительно спутников — меньше шар возможных координат, хотя тут очень много чего зависит от взаимных погрешностей.
                    0
                    Согласен. Не в качестве рекламы — лучше иметь два способа
                    www.ablogtowatch.com/casio-g-shock-gpw1000-first-watch-combines-gps-atomic-clock-radio-time-syncing
                  +1
                  Российский ГЛОНАСС работает уже с десяток лет, если считать со 2 сентября 2010 года, когда общее количество спутников было доведено до 26 — группировка была полностью развёрнута для полного покрытия Земли.
                  Это неправда — для полноценного функционирования ГЛОНАС требуется группировка из 24 спутников, которая и была развернута в полном составе 14 декабря 1995 года. Правда позднее, из за выработки ресурса спутников, группировка постепенно сокращалась и к 2001 году сократилась до 6. А 2 сентября 2010 года состоялось уже «второе пришествие» ГЛОНАСа в полном составе.

                  Увы, сейчас очень модно рассказывать о полном развале в 90-е и «чудесный» расцвет в 2000-е, но это не всегда соответствует истине.
                    +2
                    Увы, сейчас очень модно рассказывать о полном развале в 90-е и «чудесный» расцвет в 2000-е, но это не всегда соответствует истине.

                    У вас как-то странно первый абзац противоречит второму.
                    Девяностые 1995-2001 — спутники развалились на 75% (6/24)
                    Двухтысячные 2001-2010 — расцвели обратно до нужного количества
                      –4
                      Но до того, как «спутники развалились», ГЛОНАС был запущен с полной орбитальной группировкой именно в середине 90-х годов.
                    +2
                      +1
                      Радиовещание на длинных волнах

                      NIST также передает точное время и частоту по длинным радиоволнам на волне 60 kHz из Боулдера в штате Колорадо. Есть и другие станции передачи сигналов точного времени на длинных волнах.
                      Позывные и локация Частота (kHz) Мощность (kW)
                      DCF77 Mainflingen, Germany 77.5 30
                      0

                      В качестве GPS-приемника с последовательным портом можно использовать U-blox NEO-6/8, там и выход PPS есть, кстати.

                        +2
                        Лично я сторонник SiRF Star III и IV
                        1. Устанавливался в большинство навигаторов и смартфонов 10 лет назад, сегодня стоит копейки, т.е. уже есть готовая платформа
                        2. Сырые данные и PPS есть во всех чипах, только найти нужную ножку
                        3. Фазовые измерения крякнуты, а в сёрфе 4 так и вообще с завода
                        4. В данный момент ковыряю прошивку сёрфа, хочу найти инициализацию SBAS и вместо американских WAAS прошить наш «Луч» PRN 140
                          +1

                          Любопытный модуль, особенно порадовал форм-фактор .
                          Цену в $25 я бы не назвал копейками, да и достать их непросто видимо, на большинстве сайтов модуль значится как вышедший из продажи.


                          U-blox проще интегрировать в печатную плату, на мой взгляд. Есть отладочные модули, библиотеки, даташиты понятные, да и техподдержка у них отзывчивая. По цене выходит сопоставимо.


                          А зачем вам фазовые измерения, если не секрет?

                            +2
                            Да, Сёрф немного устарел, но ещё пару лет назад было много модулей на AliExpress.

                            Сырые данные (PR и Carrier Phase) нужны для точных координат, с одночастотным приёмником 5 см в кинематике и 1-2 см в статике — не проблема. В самом распространённом SiRF Star III фазовые данные были обнулены в протоколе данных по коммерческим причинам, но один умелец пропатчил прошивки. Т.к. никто особо не покупал у них лицензии, маркетинговая политика провалилась, в SiRF Star IV они перестали обнулять фазовые данный.

                            uBlox по-прежнему разделяет сегменты, для сырых данных требуются дорогие модули.

                            Многие используют для обработки данных open-source программу RTKLib, но я предпочитаю коммерческий софт, старенькую программу Ashtech GNSS Solutions, она работает с L1 без лицензии, а нам больше и не надо.

                            habr.com/ru/post/244475
                              0

                              Интересно, спасибо. Если понадобятся сантиметровые измерения, буду иметь в виду эти модули :)

                        +3
                          0

                          А спутники самодостаточны, или им необходима поддержка с земли? В случае БП, спутники продолжат выполнять свои функции?

                          0
                          Интересная статья, спасибо!
                            0
                            А все-таки какую точность можно при этом получить? (1us для нас важно) На днях слышал предложение по установке железа под ключ в серверную, стоило это в комплекте с другими услугами «очень дорого».
                              0

                              Касательно ntpd не скажу, а вот я разработал прошивку для STM32F427, который синхронизируется от GNSS с точностью до сотен наносекунд.

                                0
                                В этом примере satsignal.eu/ntp/Raspberry-Pi-NTP.html с Raspberry Pi 3 B — 1 µs.
                                +4
                                В описании GPS повторяется одна и та же ошибка, которая кочует из одной статьи в другую, в частности когда вводится оправдание для третьего спутника — нарисованы две окружности (на плоскости ))), пересечение которых даёт две точки и, мол, для идентификации нужной вводится третий спутник. Непростительная ошибка! Пересечение двух СФЕР это не две точки, а окружность, при добавлении третьей сферы получаются две точки. Три координаты = три неизвестных = три измерения. Т.к. есть ещё ошибка часов приёмника, то это четвёртая неизвестная и 4 измерения. Если высота нас не интересует, то берётся фиксированное значение и для определения достаточно трёх спутников (height aiding).
                                  +2
                                  В нормальных real-time системах ещё учитывается задержка (длина) антенного кабеля и коаксиального PPS от приёмника к компьютеру. В частности в приёмниках Trimble Thunderbolt это значение конфигурируется прямо в приёмнике. На самом деле это непростая задача т.к. у каждого коаксиального кабеля своя задержка (скорость ниже скорости света).

                                  Также пульс PPS привязан к тактовой частоте приёмника, обычно в бытовых приёмниках это около 16-24 MHz, соответственно существует джиттер. В вышеуказанном Thunderbolt кварц находится в двойной печке и управляется фильтром Калмана, который сглаживает джиттер и даже учитывает старение. На выходе кроме всего прочего эталонные 10 МГц.
                                    0
                                    При этом существуют и находят своих потребителей GPS-ретрансляторы.
                                      0
                                      Thunderbolt штука довольно точная, вот только стоит совсем немало. Другая лига. Если кому-то нужна точность Thunderbolt'а, эти люди врядли будут пользоваться материалами статьи, в которой даже принцип работы ГНСС неправильно описали.
                                      +1
                                      Упс… Всё пропало…
                                      Это достигается за счет того, что навигатор решает систему их четырех уравнений с четырьмя неизвестными Cmk число раз и берет среднее значение, повышая точность итоговой оценки согласно законам математической статистики.

                                      Методы наименьших квадратов, или наибольшего правдоподобия или прочая, прочая (с оценками ошибок и т.д.), для систем с числом измерений (уравнений) большим числа неизвестных не предлагать?
                                        +1
                                        Плюсую. Kalman Filter наше всё в навигации и уж тем более он встроен в КАЖДЫЙ GPS-приёмник ))) В некоторых даже можно настроить этот фильтр пресетами — пешеход, авто, море, авиа.
                                        0

                                        Спутник не на поверхости, а в центре сферы.

                                          +1
                                          По поводу
                                          7. Настало время отредактировать файл /etc/ntp.conf.
                                          fudge 127.127.28.0 time1 0.9999 refid GPS

                                          В GPSD Time Service HOWTO указано, что «0.9999» является только заполнителем и не должно использоваться в реальной конфигурации. Это число — смещение, вызванное аппаратной задержкой передачи сигнала от приемника демону gpsd. 0.9999 — очень большая задержка для реальных условий. Если Вы не можете заменить его реальным значение, лучше не указывать его вообще, чтобы запись выглядела так:
                                          fudge 127.127.28.0 refid GPS
                                          (раздел Feeding NTPD from GPSD GPSD Time Service HOWTO)
                                          Там же описан способ измерения реального значения.
                                            0
                                            Как появится GPS приемник с поддержкой PPS обязательно попробуем)

                                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                            Самое читаемое