Что случится?


6 апреля 2019 года произойдет второе обнуление счетчика недель GPS (GPS week rollover), первое было 21 августа 1999. Это означает, что в кадре навигационных данных, передаваемых спутниками GPS, после номера недели 1023 будет выдаваться номер недели равный 0, так как в структуре навигационного сообщения под номер недели GPS отведено 10-битное значение (если учесть, что в году порядка 52 недель то 1024 недели это чуть менее 20 лет).

Как это отразится на потребителях?


Приемники, в софте которых предусмотрено это событие, будут продолжать корректно декодировать номер текущей недели GPS из навигационного кадра и для потребителя номер недели будет продолжать увеличиваться, то есть нулевое значение будет автоматически интерпретироваться как 2048, 1 как 2049 и так далее. Но если приемник к этому не подготовлен, то он вернется в прошлое (в 1999 или даже в 1980 год).

Что можно/нужно сделать?


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

Обратиться к производителю приемников или софта, от которого зависит данные, попадающие потребителю.

Также имеет смысл добавить костыль на стороне потребителя – например добавить проверку:

if ( week < 1023 ) week += 2048;

Комментарии (7)


  1. Alexeyslav
    02.04.2019 10:03

    Что-то мне кажется, проверка там более грамотная. С такой проверкой, если обновить раньше времени то приемник перепрыгнет на 20 лет раньше срока и будет 2040 год.
    Что-то мне подсказывает что в данных поступающих со спутника должны быть и какие-то другие контрольные данные, помимо номера недели.
    Проверка может основываться к примеру на основе даты изготовления приемника, если она всяко позже 1999 года то переход счетчика через ноль должен накинуть в энергонезависимой памяти +20 лет, или основываться на последней принятой дате всё в той же энергонезависимой памяти и для этого приемник надо включать по меньшей мере раз в 10 лет. И это всё актуально для оффлайн-приеников, те что с A-GPS получают стартовую дату с наземных станций по другому каналу и способны отследить эти переходы сверяясь с другим источником.


  1. aamonster
    02.04.2019 10:29

    А в чём суть проблемы? Что после «холодного старта» приёмники, выпущенные более 10-15 лет назад, будут в NMEA-сообщениях выдавать неправильную дату?


    1. Svrg Автор
      02.04.2019 11:16

      может штрафы начнут приходить из прошлого…


  1. brzsmg
    02.04.2019 13:03

    Дата в GPS состоит из двух частей:
    количество недель (от 0 до 1 023 в старом протоколе 10 бит, от 0 до 8 191 в новом 13 бит)
    и секундой в неделе (от 0 до 604 800).

    Старый протокол используется в оборудовании выпущенном до 2010 года.
    И для определения даты, ему необходима приблизительная с точностью до 3584 дней.

    Получается что бы 07.04.2019 ваш приемник выдал 21.08.1999 или даже 06.01.1980 он должен быть достаточно старым, и не включавшимся с верной датой более 3584 дней.
    Для современных приемников такая проблема случиться в 2137 году, но к тому моменту думаю протокол уже опять измениться.


    1. Alexeyslav
      02.04.2019 14:51

      Ага, и гарантированы вечные допиливания… нет чтобы заранее выделить счетчику недель 20 бит и данная проблема отложилась бы на тысячелетия, а там глядишь уже будут совсем иные навигационные системы.


      1. brzsmg
        02.04.2019 15:26

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


    1. Svrg Автор
      02.04.2019 18:23

      13 бит передается на L2CM, но коммерческие приемники с поддержкой L2 только начали появляться, а так их стоимость от 150 тыс. руб. Да, еще обещают на L1C это передавать, но это новый сигнал и надо бы уточнить какие приемники его сейчас могут поддерживать. Взять например uBlox8 — там указан L1 C/A, стало быть 10 бит со всеми вытекающими. Но думаю они то в софте учли событие 06.04.19