Навигационные системы используют разные типы навигационных сообщений для модуляции разных сигналов. Например, сигналы GPS L1C/A модулируются сообщением в соответствии с протоколом LNAV, а сигналы GPS L2C и L5 сообщением CNAV.

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

Навигационный приемник использует навигационное сообщения для разных целей.

Во-первых, передаваемое навигационное сообщение позволяет разрешить неоднозначность кодовых измерений и восстановить сигнальное время.

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

В-третьих, принятое навигационное сообщение используется для предсказания символов навигационного сообщения в будущем. Это позволяет реализовать технологию wipe-off, расширить апертуру дискриминационных характеристик и существенно поднять чувствительность слежения.

Возникает вопрос, можем ли мы использовать навигационное сообщение одного типа чтобы решить перечисленные задачи для сигнала с навигационным сообщением другого типа. Например, сообщение L2C для C/A?

Оказывается, в случае с GPS, не совсем. Спутники GPS передают разные значения параметров в разных типах навигационного сообщения. Они соответствуют разным моментам времени toe и toc.

Для начала, дискрет toe и toc в навигационных сообщениях LNAV и CNAV разный. В LNAV мы можем встретить время с шагом 16 секунд, а в CNAV - только с шагом 300 секунд.

Выдержка из ИКД для Legacy NAV:

и для CNAV:

На старых спутниках, например IIR, можно встретить, например, toe = 467984, что не кратно 300 и не может быть напрямую использоваться для формирования CNAV сообщения. Но такие спутники и не содержат сигналов с сообщением CNAV.

К счастью, на новых спутниках и для LNAV используются значения кратные 300. Но спутники всё равно используют разное время эфемерид для LNAV и CNAV! Обратимся к данным, записанным 29 апреля 2022. Для начала взглянем на спутник IIF с PRN = 6.

Мы видим, что данные в сигналах L2C и L5 совпадают, но отличаются от данные в сигнале L1C/A. Времена эфемерид и клоков отличаются на 30 минут.

Аналогичная картина, если мы обратимся к самым современным спутникам - BlockIII:

Может быть мы можем хранить один набор эфемерид и пересчитывать их на разные toe и toc? Для задачи позиционирования - да, но для wipe-off это не подходит. Есть параметры, такие как Crs, Cus и т.д., для которых в сообщении не заданы производные.

Можем попробовать экстраполировать af0, но точность такой экстраполяции окажется недостаточной:

dtc  = LNAV.toc - CNAV.toc;
toc = CNAV.toc + dtc;
af1 = CNAV.af1 + CNAV.af2 * dtc * 1000; 
af0 = CNAV.af0 + af2 * dtc * 1000; 

результат будет близок к af0 в сообщение LNAV, но все же отличаться на 3 см. В сообщении же дискрет представления af0 8 мм, мы не получим bit-accurate совпадения.

Выводы:

  1. В LNAV и CNAV со спутника могут передаваться разные данные

  2. Для реализации wipe-off необходимо использовать эфемериды, переданные сигналом с тем же типом навигационного сообщения. Для решения навигационной задачи можно ограничиться хранением одного набора данных.

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


  1. tabtre
    30.04.2022 13:46

    Спасибо за статью)
    Ничего не понял, но зато нашел интересное слово эфемериды(погуглил и правда тоже ничего не понял)


    1. Korogodin Автор
      30.04.2022 14:04
      +1

      Да, надо признать, душновато получилось. Исправлюсь :)


    1. Jef239
      30.04.2022 16:05
      +3

      В космосе рельсов нету,зато есть орбиты. Которые немного меняютяс со временем. Мы можем задать орбиту с точностью в сотни метров, зато пару месяцев эта точность не будет ухудшаться. Это называеть альманах. А можем задать с точность порядка метра, но действительны эхти параметры будут недолго (эфемерно). Это называется эфемериды. По сути эфемериды - это альманахи с большей точностью параметров, расширенные разными коррекциями.


  1. Jef239
    30.04.2022 14:05
    +1

    Ну хоть бы ссылку на  описание wipe-off дали бы. Или сами описали бы, что это за зверь.

    А пересчет из LNAV в CNAV не получится - у CNAV точность выше. Сравните Table 20-III. Ephemeris Parameters с Table 30-I. Message Types 10 and 11 Parameters (2 of 2).

    Тот же Crs у CNAV длиной 24 бита (scale 2**-8), а у LNAV - 16 бит (2**-5). Ну то есть на 3 бита точнее и на 3 бита расширили диапазон. Аналогично af0 - 26 битов у CNAV и 22 бита у LNAV.

    Пересчитать из CNAV в LNAV можно, но при условии, что точность, с какой спутник ведет эфемеридные рассчеты - не выше точности CNAV. Где-то в ИКД было, что всякие вычисляются Crs побором параметров таким образом, чтобы эфемеридный расчет давал максимально близкую к реальной орбиту.

    Так что CNAV - просто точнее LNAV.

    А вот с GALILEO интересней, там FNAV и INAV расходятся по менее поянтным причинам. Возможно потому, что считаютяс в двух разных центрах.


    1. Korogodin Автор
      30.04.2022 14:21
      +1

      Мало того, что CNAV точнее, они ещё и на практике передаются на другое базовое время. О чем и заметка.

      Я пытаюсь для себя ответить на вопрос важный для архитектуры построения прошивки приемника или имитатора: требуется ли хранить несколько структур с эфемеридно-временным обеспечением или достаточно под каждый спутник заводить одну структуру эфемерид и клоков?

      Если говорить про тип данных, то в целом можно обойтись одним типом для каждой системы. Набор передаваемых данных пересекается процентов на 90, отличаются какие-то второстепенные параметры и разрядность. Например, под Галилео у нас заведен тип nIFNAV::Ephemeris, куда мы кладем и FNAV, и INAV.

      Но сколько объектов (инстансов, структур) заводить? Я начал с того, что выдавал каждому сигналу свою структуру. Но это явно перебор. Приходится накручивать логику как передать эти данные от одного сигнала другому, выбирать лучшие данные и т.п. Памяти много уходит.

      С другого конца эта же проблема возникает при чтении RINEX файлов, если мы их хотим использовать для теплого старта или имитации сигналов. Я, внезапно для себя, наткнулся на тот факт, что не любую запись в rinex файле я могу отразить в эфемериды для формирования CNAV. Опять же из-за базового времени toe/toc, которое не попадает в 300-секундный шаг CNAV.

      С INAV и FNAV я с вами полностью согласен. У меня тоже рвет шаблон, когда один спутник передает два разных набора af0, af1, af2 в двух соседних сигналах.


      1. Jef239
        30.04.2022 15:52
        +2

        требуется ли хранить несколько структур с эфемеридно-временным обеспечением или достаточно под каждый спутник заводить одну структуру эфемерид и клоков?

        Смотря для чего. Скажем для PPP нужны те эфемериды, от которых считаются принимаемые поправки. То есть самые обычные, те, что по L1 - LNAV, CT, INAV, D1/D2.

        А если вы сами считаете навигационное решение без внешних поправок - берите самые точные, то есть CNAV, ВТ, IMAV, CNAV1/2/3.

        отличаются какие-то второстепенные параметры и разрядность.

        Они не второстепенные, там прежде всего изменение большой полуоси со временем. Эти параметры дают большую точность эфемерид + возможность дольше использовать эфемериды без сильной потери точности.

        не любую запись в rinex файле я могу отразить в эфемериды для формирования CNAV. 

        Я бы сказал - никакую, в RINEX нету Adot (Change rate in semi-major axis). То есть сразу теряете качество до уровня LNAV. А пересчитать на другое время - вообще-то можно.

        Ну вот просто из головы. Берёте LNAV на одно время. Считаете 48 координат и скоростей - на 2 часа раз в 5 минут. Потом перечситываете его на другое время, опять считаете 48 точек. Разницу приводите раскладывается на radial, along-track и cross-track комоненты. После чего вам надо подобрать 6 параметров (по два на каждой комоненте) для уменьшения отличий.

        То есть просто погуглить, как осуществляется пересчет эфемерид на спутнике. Закладка идет в лучшем случаей 1 раз на виток (12 часов). А пересчитывать эфемериды до двух месяцев вперед умели начиная с II. Это "6.3.2 Extended Navigation Mode (Block II/IIA)."

        У меня тоже рвет шаблон, когда один спутник передает два разных набора af0, af1, af2 в двух соседних сигналах.

        У меня не рвёт. Два сигнала, излучаемые с двух разных антенн, не строго синхронны. Разница двух af0 означает сдвиг E5a относительно E5b, и обычно он равен половине длины волны, то есть они развернуты на 180 градусов.

        Разница в af1 и af2 может означать не только пересчет разными группами, а апроксимацию кривой на разные интервалы. Мне что-то помнится, что FNAV меняет toc раз в 30 минут, а INAV - раз в 10 минут. Но могу и ошибаться.

        Шаблоны мне (и не только мне) порвал СДКМ, когда разработчики приёменика объяснили, что у него доплер по частоте и коду может иметь разные знаки. То есть, похоже, что у Лучей разные генераторы на несущую и питы кода. @uncleYury - можете пояснить ситуацию, я верно догадался?

        P.S. Тема сисек wipe-off не раскрыта. Я реально не в курсе, что это за зверь.

        P.P.S. Пришла в голову мысль, что PLL для E5a (FNAV) и E5b (INAV) могут быть реально разными. Тогда разница в af1 и af2 отражает работу двух разных PLL.


        1. Korogodin Автор
          30.04.2022 16:00

          А пересчитать на другое время - вообще-то можно.

          Да, так и поступаю. Но это прокатывает для имитации сигнала, но не для создания bit-accurate копии сигнала, приходящего со спутника.

          Тема сисек wipe-off не раскрыта. Я реально не в курсе, что это за зверь.

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

          Можно предсказывать на базе структуры с эфемеридами, откуда вся эта заметка, а можно хранить неразобранные сабфреймы/сообщения и подменять в них только время и контрольные суммы.


          1. Jef239
            30.04.2022 16:13
            +1

            снимаете модуляцию с квадратур до подачи на дискриминаторы

            Как в анекдоте - "папа, а ты с кем сейчас разговаривал"? Но мысль понятна.

            А машину времени (ультразвуковую линию задержки) не применить? Задерживаем сигнал на 20 мс и имеем достоверную информацию о том, какой бит мы сейчас примем. То есть приёмник до задержк и для приёма ЭФИ, а после линии задержки - для точности.


            1. Korogodin Автор
              30.04.2022 16:14

              Беда в том, что это нужно на таких SNR, на которых биты уже не выделяются.


              1. Jef239
                30.04.2022 16:44

                Где-то я видел статью, что можно принимать эфемериды не входя в когерент, примерно на 25 SNR,


                1. Korogodin Автор
                  30.04.2022 16:46
                  +1

                  Тут скорее про диапазон 8-15 дБГц


                  1. Jef239
                    30.04.2022 16:59

                    Неужели что-то реально принимается?


                    1. Korogodin Автор
                      30.04.2022 17:15

                      На бровях, но грубо решиться можно


                      1. Jef239
                        30.04.2022 18:02
                        +1

                        А что за задача? Интернет есть? Ну просто мышление у меня такое, дифференциальное. Принять вторым приёмником из друго места с нормальным S/N, а сигнал с первого - просто задержать до прихода данных. Все равно он оцифрованный у вас, можно буфер сделать.


                      1. Korogodin Автор
                        30.04.2022 18:08

                        Да, можно подгрузить снаружи. И как показывает эта заметка, придётся грузить отдельно для cnav, отдельно для lnav.


                      1. Jef239
                        01.05.2022 02:00

                        Для CNAV точно грузить надо. LNAV - можно попробовать пересчитать. Всё-таки в LNAV точность на 3 бита меньше.


        1. Korogodin Автор
          30.04.2022 16:11

          Два сигнала, излучаемые с двух разных антенн, не строго синхронны. 

          Вы в этом случае начинаете рассматривать af0 как коррекцию к сигнальному времени, но по ИКД это же коррекция часов спутника:


          1. Jef239
            30.04.2022 16:37
            +1

            А мы со спутника только сигналы и принимаем. Это "5.1.4. Satellite Time Correction Algorithm".

            The predicted offset of the physical satellite signal TOT relative to the satellite signal TOT in GST can be computed for the dual frequency signal combination using the following formula:

            То есть это смещение физическиого сигнала относительно GST.

            P.S. TOT - Time Of Transmission


            1. Korogodin Автор
              30.04.2022 16:44

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


        1. Korogodin Автор
          30.04.2022 16:26

          P.P.S. Пришла в голову мысль, что PLL для E5a (FNAV) и E5b (INAV) могут быть реально разными. Тогда разница в af1 и af2 отражает работу двух разных PLL.

          У них один модулятор и общая несущая 1191.795, общий усилитель и фильтр в OMUX'е.


          1. Jef239
            30.04.2022 16:50

            По ГОСТ Р 54119-2010 у них несущие 1176,450 и 1207,140. По ICD (2.1.2. Carrier Frequencies) - тоже. А вот как из E5a и E5b получается E5 - я не в курсе. Подозреваю, что E5 просто суперпозиция E5а и E5b, а её несущая вообще лишь обозначает середину полосы.

            Но я тут могу, конечно, очень сильно лажануться.