Здравствуйте, поставлена задача по конвертации Sirf бинарных данных (логи - не риал тайм) в RINEX GLO навигационный файл. Почитал ICD_GLONASS - не до конца понял (нет опыта пока). Но кое-что все таки понял, спутники излучают навигационное сообщение строками 1-15. Строки 1-4 содержат эфемериды. На их основании и возможно построить результирующий RINEX GLONASS навигационный файл. RINEX формат предполагает набор последовательных записей с значениями координат, скоростей и ускорений соответствующих определенному спутнику. Каждая запись должна быть снабжена меткой времени, Epoch of ephemerides в терминах RINEX документа (вот кстати он ftp://igscb.jpl.nasa.gov/pub/data/format/glonass.txt). Так вот, подскажите плиз как получить это самое время эпохи. Думаю это напрямую связано с tb из GLONASS ICD (Слово tb – порядковый номер временного интервала внутри текущих суток по шкале системного времени ГЛОНАСС, к середине которого относится передаваемая в кадре оперативная информация.), но вот как непосредственно вычислить дату - не могу понять. Заранее спасибо!
Это студенческая работа? Если нет, то каков уровень требований к работе? Т.е. с какой целью она выполняется?
Да нет, не студенческая :-) Это мой таск на работе. Существует некая программа, которую надо расширить финкционалом преобразования бинарных данных в RINEX формат.
tb - это только время. Чтобы получить ещё и дату, нужно использовать слово Nt (текущая дата, календарный номер суток внутри четырехлетнего интервала, начиная с 1-го января високосного года).
Ага, понимаю. Получается "Epoch of ephemerides в RINEX GLO navigation file можно получить из tb и Nt. Спасибо. Еще пару разъяснений, если можно: 1) tb это время в каких-то интервалах, а как его получить в секундах? Word tb is an index of a time interval within current day according to UTC(SU) + 03 hours 00 min. The immediate data transmitted within the frame are referred to the middle of tb- time interval. Duration of the time interval and therefore maximum value of the word tb depend on value of a flag P1 (see below). Table 4.3 Word P1 Word P1 Time interval between adjacent values of tb, minutes 00 0 01 30 10 45 11 60 Это как понимать? Получается что tb это номер интервала? какого? и что означают эти "interval between adjacent values of tb" 2) не совсем понятно, как из Nt получить собственно дату Написано: A.3.1.3. Transformation of GLONASS-M current data information into common form Satellite navigation message contains current data information in NT parameter. It could be transformed into the common form by the following algorithm:.... ... Current day and month (dd/mm) are extracted from the reference table stored in user equipment ROM. Получается Nt это только для GLONASS-M? И где взять эту таблицу которая в РОМ? 3) Правильно ли я понимаю, что значения эфемерид положения, скорости, ускорения не меняются в рамках одного интервала tb? Т.е.30 мин (ну или сколько там) строки 1-4 ГЛОНАСС содержат одни и те же значения єфемерид? Спасибо!
tb - это номер интервала в течение суток. Величина интервала определяется словом P1. Т.е. время в секундах равно tb*dT*60, где dT - величина интервала. На практике я видел только интервалы 30 минут. (Точно не помню, с нуля или единицы нумеруются интервалы, может быть, нужно использовать (tb-1)). Nt - это номер дня в четырёхлетнем цикле. Возьмём теперешний четырёхлетний цикл, который начался в 2012г.. Для 1 января 2012г. Nt=1. Сегодня, 28 мая 2013г., Nt=514. Таблица в ROM нужна для того, чтобы быстро перевести Nt в дату, но это можно сделать и другими способами, не обязательно теми, которые описаны в ИКД. Если Вы программируете на языке высокого уровня, там наверняка есть функции для работы с датами. Зная tb и Nt, можно определить время и дату в пределах четырёхлетнего цикла. В спутниках Глонасс-М ещё передаётся номер четырёхлетнего цикла N4, так что дату можно определить однозначно Почти так, только tb - это середина интервала.Эфемериды постоянны не на интервале tb1..tb2, а на интервале tb ± dT/2. А Вы принципиально не читаете на "великом и могучем"? ИКД есть и на русском, правда, и там, и там есть ошибки.
Формально получается, что правильно определить по tb и P1 время эфемерид нельзя. P1 наверное может меняться втечение суток, так ли это - нигде не написано обратное? Да, но кто может гарантировать что это всегда так? Взять то можно, но вот не получится ли ошибка на стыке двух четырехлетних циклов? В моем случае девайс репортит время в GPS шкале (Sirf Msg ID 7) и может получится что эти самые циклы начинаются в разные моменты. Кстати, а где брать количество leap seconds для перевода GPS в UTC(SU)? Есть, но не могу привыкнуть к этим аббревиатурам: НКА, ПСПД, ПКУ...
Я вот откуда то скачал навигационный файл RINEX GLO, вот его кусочек: 2.01 GLONASS NAV DATA RINEX VERSION / TYPE CCRINEXG V1.4 UX CDDIS 02-JAN-13 15:35 PGM / RUN BY / DATE IGS BROADCAST EPHEMERIS FILE COMMENT teqc 2009Mar23 20130102 0:14: COMMENT 2013 1 1 0.163912773132D-06 CORR TO SYSTEM TIME 16 LEAP SECONDS END OF HEADER 1 13 1 1 0 15 0.0-0.175009481609D-03 0.000000000000D+00 0.300000000000D+02 0.845049365234D+04 0.138116741180D+01 0.000000000000D+00 0.000000000000D+00 -0.187447167969D+05-0.154329204559D+01 0.186264514923D-08 0.100000000000D+01 0.151097954102D+05-0.268421936035D+01-0.931322574616D-09 0.000000000000D+00 2 13 1 1 0 15 0.0-0.353753566742D-03-0.181898940355D-11 0.000000000000D+00 -0.723127099609D+04 0.220489501953D+01-0.000000000000D+00 0.000000000000D+00 -0.852351855469D+04-0.223299217224D+01 0.000000000000D+00-0.400000000000D+01 0.229278754883D+05-0.132862091065D+00-0.279396772385D-08 0.000000000000D+00 3 13 1 1 0 15 0.0-0.121566466987D-03 0.000000000000D+00 0.000000000000D+00 -0.175864340820D+05 0.177216053009D+01-0.000000000000D+00 0.000000000000D+00 0.582096142578D+04-0.162003040314D+01-0.931322574616D-09 0.500000000000D+01 0.175734951172D+05 0.231376934051D+01-0.279396772385D-08 0.000000000000D+00 4 13 1 1 0 15 0.0 0.274749472737D-04 0.000000000000D+00 0.000000000000D+00 Так в нем метка эпохи - 13 1 1 0 15. Получается если бы интервалы действительно были по 30 минут, то откуда тогда 15 секуд (хотя, возможно, указывается именно середина интервала)?
Можно. Если будет меняться, то тогда нельзя. Не может. Четырёхлетний цикл начинается в 0:0:0 по UTC(SU) независимо от шкалы Вашего девайса. Передаётся в составе цифровой информации GPS. Или в Интернет. О моменте изменения leap seconds сообщается заранее. Это не 15 секунд. Это 0 часов 15 минут 0.0 секунд. Следующие эфемериды будут в 0:45:0.0, т.е. через 30 минут
Ну да, опечатался. Все же, если все интервали по 30 минут, то откуда же берется метка для момента 15 минут: 13 1 1 0 15 ?
Еще объясните пожалуйста, получается что втечении всего интервала tb ± dt эфемериды не меняются. Тогда для RINEX GLO navigatio file достаточно получить одно значение эфемерид из последовательных строк 1-4 и вписать их в RINEX файл, а следующие эфемериды от тогоже SV с той же меткой tb просто игнорировать. Так выходит? Зачем тогда последним полеж записи в RINEX стоит "message frame time (sec of day UTC)"? Или же предполагается что все сообщения попадут в RINEX файл, даже если сами эфемериды в них не поменялись?
15 минут - это середина первого 30-минутного интервала, 45 минут - середина 2-го и т.д. Похоже, формулу для расчёта секунд придётся подкорректировать... На Вашем месте я бы сделал следующее. Насколько я понимаю, у Вас есть бинарные данные, т.е. имеются значения tb, Nt и N4. Скачайте из Интернет навигационный файл ГЛОНАСС на эти же сутки, и добивайтесь того, чтобы Ваши данные совпали с RINEX. В RINEX достаточно записать одно уникальное значение эфемерид. Поле "message frame time (sec of day UTC)" для расчётов не используется.