Что такое файлы часов gps
Одно из требований для работы в цифроых модах - точная синхронизация времени компьютера. Как правило, радиолюбители выполняют эту операцию путем синхронизации часов операционной системы через сеть Интернет.
Но есть альтернативный, и на мой взгляд, более точный способ синхронизации с помощью GPS приемника. Достоинства этого способа синхронизации в том, что нет необходимости соединения с Интернетом. Это особенно полезно при работе на Полевых днях, на даче, в условиях отсутствия Интернета.
В Интернете можно найти несколько программ для реализации этого способа. Я использую бесплатную программу Сергея Кичатова "SatTime" с сайта Астрофорума.
Программа очень компактная (около 200 мб), не требует инсталляции. У меня работает с Windows7 и Windows10. Приемник подключается через COM-порт. У меня работает Bluetooht приемник BT-336, соединяющийся с компьютером через виртуальный COM-порт (дешевый USB адптер "Dexp", если нет встроенного Bluetooht-модуля в компьютере).
Совсем не сложно сделать GPS-приемник самому . Для этого нужен простейший GPS-модуль (например, NEO6MV2) и USB-COM конвертор (или преобразователь COM-TTL, если на вашем ПК есть com-порт). На Aliexpress всё это можно приобрести за адекватные деньги (около 300 руб). На радиорынках это будет стоить несколько дороже, но зато быстрее. Никаких средств программирования не требуется. Необходимо лишь знать скорость работы вашего GPS-модуля с COM-портом. Схема будет выглядеть так:
При использовании конвертера USB-COM питание GPS-модуля осуществляется от самого конветера. Если вы применяете преобразователь COM-TTL, то придется подать на модули внешнее питание от литиевой батареи или от usb-порта.
Ещё лучше - сделать GPS-приемник с Bluetooht-модулем, что позволит разместить приемник в зоне доступности спутников. Схема также достаточно простая. Единственное, возможно, придется настроить Bluetooht-модуль на необходимую скорость передачи вашего GPS-модуля.
- Запускаем её от имени администратора (!) .
- Выбираем COM-порт с которым работает GPS-приемник.
- Настраваем кнопкой [Settings] скорость работы COM-порта, которая зависит от вашего приемника.
- Запускаем работу приемника кнопкой [Open] .
- Ждем соединение приемника со спутниками.
- В строке "Satellites" увидим количество обнаруженных спутников (желательно не менее 4).
- Нажимаем кнопку [Sync> - Ваши часы на ПК засинхронизированы !
Вы увидите, что значение времени в строчках "Global_UTC" и "Local_UTC" идентичны. Строкой ниже - "Difference" Вы увидите расхождение ваших часов с глобальным временем. На моем скриншоте видно, что расхождение всего 0,025 секунды (!). Можно включить режим автоматической синхронизации [Auto Sync] , тогда компьютер будет постоянно синхронизироваться с заданным интервалом (например, 60 сек).
GPS приемники можно использовать не только для определения местоположения, но и для получения сигналов точного времени. В статье я покажу как настроить сервер точного времени, использующий в качестве источника GPS и работающий с точностью до нескольких микросекунд. В качестве примера я использую приемник Garmin и ОС FreeBSD, но статья также будет полезна обладателям Linux и Windows.
Подобный топик на хабре уже пробегал, но я считаю, что тему надо раскрыть гораздо подробнее: многие важные детали автор опустил.
1. Немного теории
По оценке журнала GPS World, сейчас в мире находится в использовании более миллиарда приёмников GPS, и более 90% из них используются только для получения сигналов точного времени. [19]
Для определения собственных трехмерных координат GPS-приемник рассчитывает расстояние до 4-х спутников. Это расстояние вычисляется путем измерения времени прохождения радиосигнала от спутника. Т.к. скорость света составляет 3×10 8 м/с, то время прохождения сигнала очень мало, и для расчета требуется очень точная синхронизация хода часов на спутнике и приемнике. Поэтому каждый спутник GPS оборудован атомными часами с точностью хода 1 нс/сут, а приемник обеспечивает точность времени около 50 нс [17]. Для определения времени приемнику достаточно получить сигнал с одного спутника (tanenn).
- если у системы нет доступа в Интернет;
- если вам нужна высокая точность времени — единицы микросекунд (мкс);
- если вам нужно синхронизировать распределенную систему от надежного источника времени;
- просто ради интереса :)
2. GPS-приемник
GPS-приемник можно использовать практически любой — главное, чтобы он поддерживал стандартный протокол NMEA 0183. Протокол NMEA служит для передачи GPS-информации простыми ASCII-строками по последовательному интерфейсу, такому как RS-232. Вместе с географическими координатами NMEA передает еще и точное время, как правило, раз в секунду.
Если вы хотите обеспечить еще большую точность — до нескольких микросекунд, необходимо использовать GPS-приемник, который умеет выдавать сигнал PPS (Pulse per second). PPS-импульс повторяется раз в секунду с очень большой точностью и может быть считан ntpd.
Ниже я рассмотрю оба варианта: сначала обычный NMEA и более подробно PPS.
3. Получение времени от GPS (без PPS)
3.1 Настройка GPS и ntpd
Windows администраторы могут установить порт ntpd для Windows и следовать указаниям в этой статье.
- Подключите GPS-приемник к COM-порту сервера (USB переходник тоже должен сработать).
- Создайте символическую ссылку /dev/gpsX на устройство (например, у меня /dev/cuau0 -> /dev/gps0).
- В ntp.conf добавьте строку
Строка 127.127.20.0 означает, что мы используем локальный источник времени, драйвер 20 (NMEA Generic), устройство /dev/gps0.
Если ваше устройство работает на скорости отличной от 4800 бит/c, необходимо задать скорость с помощью команды mode: 0 — 4800 бит/c (по умолчанию, можно не указывать), 16 — 9600, 32 — 19200 и т.д.
3.2 Проверка и коррекция
Для проверки нам потребуется использовать команду ntpq -p. Формат выдачи:
На каждой строке идет информация об источнике времени, будь то NTP-сервер или локальный источник времени.
Первый символ в строке — статус выбора: * — выбранный источник, + — насколько я понял, кандидат для выбора — на него переключится система в случае отказа основного источника, o — PPS-источник, пробел — не работающий источник, — x и др. — «забракованные» (ненадежные) источники.
Далее идут:
remote — имя узла или IP-адрес;
refid — ID источника (имя драйвера или адрес сервера, с которым синхронизируется источник);
stratum: 0 для первичного источника времени (GPS), 1 для сервера к нему подключенного, 2 для сервера, который синхронизируется с сервером stratum 1 и т.д.;
t — тип: l — локальные часы, u — сетевой узел и т.д.;
when — время с последней передачи;
poll — интервал опроса log2 секунд, т.е. если poll=4, сервер опрашивает источник раз в 2 4 = 16 секунд;
reach — восьмеричное число, показывающее успешность последних 8 попыток передачи. Например, 0 — ни одной успешной попытки, 3778=111111112 — все попытки успешны. После запуска ntpd, если все в порядке источник проходит значения reach 0, 1, 3, 7, 17, 37, 77, 177, 377;
delay — время следования пакета;
offset — разница между временем источника и локальным;
jitter — джиттер или иными словами дисперсия (разброс) времени прохождения пакета.
Больше всего нас будет интересовать символ статуса выбора, reach, offset и jitter. Reach должен быть равен 377, а offset и jitter быть как можно меньше.
Запустите команду ntpq -p. Дождитесь пока offset NTP-сервера не станет достаточно низким.
Выбранный ntpd сервер отмечен *, в то время как наш GPS-приемник помечен как плохой (x). Offset GPS-приемника составляет около -956 мс. По всей видимости, информация передается о предыдущей секунде. Чтобы скорректировать это отставание необходимо под строкой server 127.127.20.0… добавить строку:
Теперь можно снова сделать GPS предпочитаемым сервером. После перезапуска сервера перед GPS_NMEA(0) должна появиться *.
4. Получение времени от GPS с сигналами PPS
4.1 Подключение приемника Garmin 18x LVC
Для себя я выбрал приемник Garmin 18x LVC с точностью PPS-импульса ±1 мкс. Это OEM-приемник, у него нет красивого экранчика, но его удобно использовать в собственных приложениях.
Этот приемник передает данные на COM-порт и требует питания 5В, 90 мА, поэтому его будет удобно запитать от USB. Нам понадобится разъем «мама» DB9 или COM-кабель, разрезанный пополам, а также разрезанный кабель USB для питания. Родной разъем приемника тоже нужно отрезать — это не повлияет на гарантию. Схема соединения:
желтый провод — с pin 1 (PPS)
белый провод — с pin 2 (передача)
зеленый провод — с pin 3 (прием)
оба черных провода — с черным проводом USB и pin 5 (земля)
красный провод — с красным проводом USB (+5В).
Желательно припаять контакты. Простая скрутка может и не заработать (впрочем, я не проверял).
Вдохновившись статьями [2] и [3] я пошел еще дальше и добавил в схему подключения предохранитель, светодиод «питание», светодиод «PPS» и резисторы для светодиодов. Умельцы-электронщики вполне могут уместить все в вилке COM-кабеля, у меня же получилась целая коробочка.
Я купил готовую макетную плату, розетки DB-9 и USB тип B, винтовые клеммники (родной разъем BM06B-SRSS-TBT или SM06B-SRSS-TB я в продаже не нашел), предохранитель 1А и держатель. Как смог припаял все это, а разъемы приклеил Epoxy :)
В принципе, так заморачиваться необязательно. Можно просто соединить жилы от GPS, COM и USB, как сделано здесь.
4.2 Настройка Garmin 18x LVC
Для повышения производительности и надежности желательно настроить приемник. Это можно сделать, посылая команды через терминал (см. мануал) или с помощью Windows-утилиты SNSRCFG. Я выбрал второй путь.
Подключаемся к приемнику:
Comm → Setup: устанавливаем COM-порт, Baud rate: manual, 4800.
Comm → Connect
Программа должна загрузить текущую конфигурацию.
Настраиваем:
Config → Sensor Configuration
Необходимо убедиться, что PPS включен и увеличить длину импульса до 200 мс.
Также можно попробовать отключить DGPS — мы им пользоваться не будем, и установить Fix Mode = 2D — в теории это позволит приемнику работать при трех видимых спутниках вместо четырех. Однако не ручаюсь, что эти две опции на что-то влияют.
4.3 Настройка FreeBSD и ntpd
Поддержка PPS во FreeBSD присутствует довольно давно, поэтому PPS здесь настраивается проще и работает точнее. Пользователи Linux могут обратиться к статье Using a Garmin GPS 18 LVC as NTP stratum-0 on Linux 2.6. Настройки написанные ниже относится к FreeBSD.
Для включения поддержки PPS необходимо пересобрать ядро системы с опцией:
NTP-сервер уже присутствует в системе, но не лишним будет обновить. Для FreeBSD делаем это из портов:
Теперь необходимо добавить в rc.conf строки:
ntpd_program указывает на путь установки ntpd из портов.
Создайте символическую ссылки /dev/gpsX и на /dev/ppsX устройство (например, у меня /dev/cuau0 -> /dev/gps0). Можно воспользоваться командой ln или добавить соответствующие строки в /etc/devfs.conf:
В документации NTP рекомендуется с GPS получать только PPS-импульсы для точного хода часов, а само время — с другого сервера stratum 1. Для этого необходимо добавить в /etc/ntp.conf несколько (4-5) серверов stratum 1 и наш PPS, например:
Драйвер 22 отвечает за PPS. flag3 включает режим коррекции времени ядра (kernel discipline). В документации ntpd написано, что включать kernel discipline совсем не обязательно: ntpd будет работать точнее, если просто выставить minpoll 4. Однако у меня получается как раз наоборот: с flag3 часы идут точнее — так что я предлагаю вам поэкспериментировать с этим параметром самостоятельно.
Можно пойти другим путем: получать и время с GPS и сигналы PPS:
flag1 включает PPS, flag3 — kernel discipline.
Это позволит получать время без использование Интернета, но в этом случае скорее всего понадобится коррекция (аналогично п. 3.2).
После внесения изменений необходимо перезапустить ntpd:
Запустите команду ntpq -p (подробнее о ней рассказано в п. 3.2). Если вы получаете только PPS сигнал, то вывод должен приблизительно быть таким:
Перед PPS(0) должно стоять «o», reach в течении пары минут дойти до 377. Остальные сервера используются для получения времени.
Если вы получаете с GPS еще и NMEA-информацию, то
Перед GPS_NMEA(0) должна стоять *.
Не лишним будет проверить статус PPS. Это можно сделать с помощью команд ntpdc -c kerninfo или ntptime. ntptime дает немного более подробную информацию:
На что нужно смотреть:
ntp_gettime() и ntp_adjtime() должны возвращать «OK».
в status должны быть флаги PPSFREQ, PPSTIME, PPSSIGNAL, и не должно быть PPSWANDER, PPSJITTER, PPSERROR.
jitter exceeded показывает количество импульсов, пришедших не совсем вовремя. Беспокоиться стоит, если значение jitter exceeded станет слишком большим, и в статусе появится флаг PPSJITTER.
intervals — количество интервалов калибровки, должно увеличиваться на единицу раз в interval секунд (в примере 256 с)
stability exceeded — число слишком больших коррекций времени, 0 — всё в порядке.
errors — количество PPS импульсов, не пришедших вообще или пришедших совершенно не вовремя, не должно увеличиваться во время работы.
stability — чем меньше, тем стабильнее работает PPS-источник и часы сервера. Должно быть меньше 0.1.
jitter — джиттер PPS-импульсов. Должен быть несколько микросекунд (us), не больше.
5. Возможные проблемы и отладка
5.1 Don't panic!
Всегда учитывайте, что GPS-приемнику требуется некоторое время, чтобы установить свое местоположение после включения: до получаса для старых моделей, 45 секунд для Garmin 18x. Это время зависит от того, насколько долго приемник был выключен (tanenn). ntpd также требуется определенное время для коррекции хода часов. По моим наблюдениям: 10-20 секунд чтобы «увидеть» приемник, 20-30 минут чтобы offset снизился до оптимального значения. Если ваш reach после нескольких минут работы установился в 377, а offset сокращается (по модулю) — то все в порядке.
5.2 ntpd не видит приемник
Если ntpd не видит приемник: reach в ntpq -p застыл на нуле, — необходимо тщательно проверить подключение приемника к серверу. Остановите ntpd и откройте COM-порт в терминале. В FreeBSD:
где /dev/gps0 файл устройства, 4800 — скорость передачи данных.
Изучите логи ntpd. Возможно стоит установить самую свежую версия сервера.
Убедитесь, что общая длина кабеля от порта до приемника не превышает 5 м. В противном случае, вам придется заморачиваться и делать дифференциальную линию для передачи сигнала для защиты от помех. Рекомендуется экранирование кабеля GPS соединить с экранированием USB-кабеля.
5.3 ntpd не видит сигнал PPS
Опять же проверьте подключение, например с помощью вольтметра или осцилографа. Я использую карманный дешёвый осциллограф DSO Nano. Так выглядит PPS сигнал:
Не используйте переходники USB-COM: PPS сигнал через них может не идти или идти с задержкой. Как правило, COM-порт всегда присутствует на материнской плате, просто он может быть не выведен на стенку корпуса.
5.4 Большой offset/jitter
Попробуйте выключить буфферизацию COM-порта. Установите в /boot/device.hints:
Посмотрите, нет ли новых версий прошивки для вашего GPS-приемника. (Garmin 18x LVC Firmware download)
Очевидной идеей является повышение скорости передачи данных. Но согласно документации ntpd это нам ничем не поможет. Скорость лучше оставить 4800.
Возможно стоит попробовать изменить системный таймер ОС. В FreeBSD можно прописать в /etc/sysctl.conf:
У меня offset стал «прыгать», когда кондиционер в серверной стал постоянно то включаться, то выключаться.
График зависимости offset PPS и температуры, когда температура стабильна:
Когда кондиционер безобразничает:
Из графика видно, что offset зависит от температуры воздуха в помещении. Связано это, видимо, с несовершенством таймера на сервере. Способы устранения этой проблемы описаны здесь и здесь.
«Хардварным» способом является замена генератора на материнской плате на термокомпенсированный (TXCO). Но это вариант для гуру микроэлектроники и паяльника.
6. Подготовка NTP-сервера к использованию
Перед публикацией сервера в сеть, прочитайте разделы документации, касающиеся установки прав доступа и ограничения количества запросов.
Если вы хотите создать NTP-сервер для локальной сети, то можно добавить адрес сервера в параметры DHCP. Однако у меня есть подозрения, что на Windows-клиентах эта опция не работает, а на *nix dchpclient нужно настраивать на каждой машине.
Список клиентов можно посмотреть командой ntpdc -c monlist.
Также написал небольшой скрипт для Zabbix, отслеживающий параметры reach/offset/jitter PPS и выбранного сервера времени. Запуск скрипта нужно добавить в zabbix_agentd.conf:
Перезапустите агент. На сервере соответственно нужно добавить эти item'ы для NTP-сервера. Теперь можно настраивать триггеры и графики.
7. Другие способы синхронизации времени
Помимо NMEA ntpd поддерживает еще массу более экзотических устройств (см. полный список).
Стоит отметить, в первую очередь, возможность синхронизации часов по радиосигналу. Например, в России работает служба RWM, из Франкфурта в Германии вещает станция DCF77. DCF77 неплохо ловится в европейской части России (у меня в Москве уверенный прием). Подружить DCF77 и ntpd несложно, см. статью. Точность такого решения будет ниже, однако оно дешевле варианта с GPS в несколько раз: нужно только купить антенну, никаких знаний радиотехники здесь не требуется.
Умельцы могут настроить синхронизацию по импульсам радио «Маяк» в конце каждого часа. Длина последнего шестого импульса зависит от текущего часа. Но такой способ будет явно хуже по точности, чем обычная синхронизация времени по Интернету.
Точное время можно получать от оператора сотовой связи (hellt). Такая «фича» называется NITZ. Однако не все операторы и не все GSM-устройства её поддерживают. Я проверил свои GSM-модемы Siemens MC55 и Arduino GPRS-shield на чипе SIM900 — таких AT-команд в этих устройствах нет.
Существуют также готовые NTP-сервера с датчиками GPS или ГЛОНАСС, но они, понятно, стоят гораздо дороже.
Список работающих российских публичных серверов statum 1
Синхронизация времени по GPS представляет собой особую систему навигации, которая основывается на информации, полученного со спутника. Многие часы для точности оснащены этой системой, в том числе – первичные.
GPS синхронизация времени часов: как работает?
Технология основывается на принципе измерения расстояния от GPS приемника до самого спутника. При этом, расположение спутника известно заранее и записано в базу данных. Она хранится в памяти часов. В свою очередь спутник имеет свои атомные часы – это время вместе с сигналом передается часам на земле. Таким образом, устройство синхронизируется, получая точные данные о времени и дате.
Точность синхронизации времени GPS неоспорима. Ее использование позволяет получить единственный источник времени для всех людей в здании – не зависимо от помещений, в которых они находятся. Если произойдет отключение питания, то при его появлении часы автоматически синхронизируются со спутником, восстанавливая данные.
Изначально сигнал от спутника получают первичные часы, передавая его на вторичные. Синхронизация происходит несколько раз в день. Исключается необходимость ручного завода, настройки, установки времени. При переходе на летнее\зимнее время это происходит автоматически. Никаких сбоев или неточностей, которые могут негативно повлиять на производственные процессы.
Заказать цифровые уличные часы в Калининграде
На сайте нашей компании Системы Часофикации вы можете заказать часы с GPS синхронизацией времени. Мы изготовим оборудование для систем часофикации нужного вам типа. Не зависимо от этого, компания гарантирует точность, надежность, долговечность .
Каждому нашему покупателю мы гарантируем ряд преимуществ:
Оформить заказ вы всегда можете через сайт в любое время. В онлайн-форме укажите все необходимые характеристики. Оставьте в заявке контактную информацию, чтобы наш сотрудник связался для уточнения по заказу. По всем вопросам обращайтесь к сотрудникам компании по телефону!
Часы с дополнительными усложнениями всё больше находят своих почитателей, теперь это не только прибор для измерения времени, но и многофункциональное устройство. Одной из таких расширенных инновационных опций является GPS - часы получают данные о времени со спутника, позволяя получать результаты наивысшей точности.
Global Navigation System
Наручные часы с GPS подразумевают оснащение приёмником GPS-сигнала, который может считывать данные по GSM, GPRS или со спутников. Устройство со встроенным навигатором может определить любую необходимую точку на карте, определить местоположение владельца аксессуара, проложить желаемый маршрут, замерить уже пройденное расстояние. Вы точно никогда не заблудитесь и сможете исследовать любые точки мира.
Принимая сигналы, интеллектуальные модели последних поколений идентифицируют часовой пояс, текущее время и дату, после чего устанавливают все показатели на экране. Как правило, помимо возможности GPS, такие многофункциональные часы обладают Bluetooth, термометром, секундомером, альтиметром, глубиномером, компасом. Это позволяет использовать часы в любой из сфер жизни, как для решения повседневных задач, так и в туристических походах, спорте, плавании, в каталогах можно найти часы для дайвинга.
Реализация технологии
Технология основана на разработанной навигационной системе, хранящей все данные со спутников, находящихся в непосредственной близости вокруг Земли. Измеряется точное расстояние от часов до спутника, чьё местонахождение записано в базе данных и заранее известно, такие сведения хранятся в памяти наручных часов ещё до начала всех измерений.
Для установления времени по GPS рекомендуется расположить часы строго горизонтально. Лучше всего это делать в ясную погоду на открытой местности, где нет крупных зданий или сооружений. Для облегчения задачи можно настроить автоматическую синхронизацию, после этого для приёма GPS-сигнала можно будет просто оставить часы на ночь на подоконнике. Время приема сигнала составит от 6 до 60 секунд.
Особенности часов с GPS-навигатором
Все наручные часы с GPS обладают рядом схожих характеристик и преимуществ:
Читайте также: