Данный документ описывает алгоритм дешифровки навигационных параметров, поступающих с приемника на ЭВМ, используемых для определения координат спутника в системе ECEF. Предлагается навигационные параметры записывать в виде массива векторов, компонентами которых являются номер спутника, момент времени в системе GPS, когда сигнал был получен приемником, эфемериды и поправки для эфемерид спутника.
Первый этап. На первом этапе проводится дешифровка параметров, поступающих в сообщениях U-blox класса RXM, с ID соответствующей RXM-EPH.
Дешифровка проводится только с сообщениями, у которых нулевой байт содержит 0xB5, в первом байте - 0x62, во втором байте - 0x02, в третьем байте – 0x31
Ниже идет последовательность шагов алгоритма на первом этапе дешифровки:
1. Получить первую компоненту вектора, номер спутника, SVN, (безразмерная величина) которая находится на байтовом промежутке [6, 9] (4 байта). SVN принимает значение от 1 до 32.
2. Проверить что HOW (байтовый промежуток [10, 13] (4 байта)) не равен нулю, иначе прекратить дешифровку данного сообщения.
3. Получить вторую компоненту, (размер 16 бит), местоположение [35, 36]. SF =
4. Получить третью компоненту, (размер 8 бит), местоположение [38, 38]. SF =
5. Получить четвертую компоненту, (размер 16 бит), местоположение [39, 40]. SF =
6. Получить пятую компоненту, (размер 22 бита), местоположение [42, 44-ый байт шестой бит]. SF =
7. Получить шестую компоненту, (размер 16 бит), местоположение [47, 48]. SF =
8. Получить седьмую компоненту, (размер 16 бит), местоположение [50, 51]. SF =
9. Получить восьмую компоненту, (размер 32 бита), местоположение начальной части [52, 52], а конечной [54, 56]. SF =
10. Получить девятую компоненту, (размер 16 бит), местоположение [58, 59]. SF =
11. Получить десятую компоненту, e (размер 32 бита), местоположение начальной части [60, 60], а конечной [62, 64]. SF =
12. Получить одиннадцатую компоненту, (размер 16 бит), местоположение [66, 67]. SF =
13. Получить двенадцатую компоненту, (размер 32 бита), местоположение начальной части [68, 68], а конечной [70, 72]. SF =
14. Получить тринадцатую компоненту, (размер 16 бит), местоположение [74, 75]. SF =
15. Получить четырнадцатую компоненту, (размер 16 бит), местоположение [78, 79]. SF =
16. Получить пятнадцатую компоненту, (размер 32 бита), местоположение начальной части [80, 80], а конечной [82, 84]. SF =
17. Получить шестнадцатую компоненту, (размер 16 бит), местоположение [86, 87]. SF =
18. Получить семнадцатую компоненту, (размер 32 бита), местоположение начальной части [88, 88], а конечной [90, 92]. SF =
19. Получить восемнадцатую компоненту, (размер 16 бит), местоположение [94, 95]. SF =
20. Получить девятнадцатую компоненту, (размер 32 бита), SF =
местоположение начальной части [96, 96], а конечной [98, 100].
21. Получить двадцатую компоненту, (размер 24 бита), месторасположение [102, 104]. SF =
22. Получить двадцать первую компоненту, IDOT (размер 14 бит), месторасположение [107, 108-ой байт шестой бит]. SF =
Рисунок 4 - Алгоритм обработки сообщения с эфемеридами
Второй этап.На втором этапе проводится дешифровка навигационных измерений, поступающих в сообщениях U-blox класса RXM, с ID соответствующей RXM-RAW.
Дешифровка проводится только с сообщениями, у которых нулевой байт содержит 0xB5, в первом байте - 0x62, во втором байте - 0x02, в третьем байте – 0x10 Измеренные значения присоединяются к тому вектору, компоненты которого были получены на ЭВМ одновременно с вышеупомянутыми измерениями.
Ниже идет последовательность шагов алгоритма на втором этапе дешифровки:
1. Получить двадцать вторую компоненту, ITOW (размер 32 бита), месторасположение [6, 9]. Это значение записано в числовом формате I4 Signed Long, и имеет размерность в миллисекундах.
2. Получить двадцать третью компоненту, Week (размер 16 бит), месторасположение [10, 11]. Это значение записано в числовом формате I2 Signed Short и имеет размерность в неделях.
3. Получить значение NSV (размер 8 бит), количество спутников, от которых были получены сигналы в данный момент времени. Месторасположение [12, 12]. Числовой формат значения – U1 Unsigned Char. Вводится индекс
k:= NSV.
4. I:= 0; k:= k-1
5. Получить значение SV (размер 8 бит), номер текущего спутника. Месторасположение [34+24*I, 34+24*I]. Это значение записано в числовом формате U1 Unsigned Char.
6. Получить двадцать четвертую компоненту, PR (размер 8 байт), месторасположение [22+24*I, 29+24*I]. Это значение записано в числовом формате R8 IEEE 754 Double Precision. PR необходимо включить в тот вектор, у которого первая компонента SVN равно значению SV, найденному на шаге 5 второго этапа. |
7. Если (k>0) то I:= I+1 и возврат к шагу 4 второго этапа.
Если же (k=0) тогда алгоритм завершается.
Рисунок 5 – Алгоритм обработки сообщения с сырыми данными
Третий этап.На третьем этапе проводится подведение компонентов вектора к соответствующим истинным значениям навигационных параметров с помощью фактора масштабирования SF (Scale Factor). Для компонент вектора без указания параметра SF следует полагать что фактор масштабирования равен единице. Таким образом,
a[ I ]:= SF*a[ I ] (1)
где a[ I ] –компонента вектора.
В результате работы данного алгоритма на выходе получается массив векторов, имеющих по 24 компоненты. Каждый вектор содержит данные по эфемеридам и поправкам эфемерид для заданного спутника в определенный момент времени в системе отсчета GPS.
Примечание: Байт, который идет в начале сообщения следует считать нулевым, а начальный бит в байте – первым, дешифруемые значения навигационных параметров записанными в память в числовом формате (U4) Unsigned Long, если не оговорено обратное. Все мультибайтовые значения в сообщений записаны в порядковом формате Little Endian ("Прямой порядок байт" в исполняемом коде; порядок от младшего к старшему: запись начинается с младшего и заканчивается старшим байтом).