Описание NMEA протокола. Реализация в приемниках Garmin и GlobalSat
Введение
Национальная Ассоциация Морской Электроники (National Marine Electronics Association - NMEA) разработала специальный протокол для поддержания совместимости морского навигационного оборудования различных производителей. Этот NMEA протокол описывает не только данные, полученные с GPS приемников, но и измерения сонаров, радаров, электронных компасов, барометров и других навигационных устройств, использующихся на морских судах.
Интерфейс обмена данными большинства портативных GPS приемников реализован в соответствии с этой спецификацией. Большинство навигационных программ, которые обеспечивают отображение данных в реальном времени, поддерживают и «понимают» NMEA протокол. Эти данные содержат полные навигационные измерения GPS приемника – позицию, скорость и время. Все NMEA сообщения состоят из последовательного набора данных, разделенных запятыми. Каждое отдельное сообщение не зависит от других и является полностью «завершенным». NMEA cообщение включает заголовок, набор данных, представленных ASCII символами, и поле «чексуммы» для проверки достоверности переданной информации.
Заголовок стандартных NMEA сообщений состоит из 5 символов, из которых два первых определяют тип сообщения, а оставшиеся три – его название. Например, все GPS NMEA сообщения имеют префикс «GP». Сообщения, которые не описаны в спецификации NMEA, но реализованы в GPS приемниках в соответствии с общими правилами, имеют префикс «Р», дополненный тремя символами, уникальными для каждой компании. Например, «собственные» NMEA сообщения Garmin имеют префикс «PGRM», Magellan – «PMGN» Каждое NMEA сообщение начинается с «$», заканчивается «n» ( «перевод строки») и не может быть длиннее 80-и символов. Все данные содержаться в одной строке и отделены друг от друга запятыми. Информация представлена в виде ASCII текста и не требует специального декодирования. Если данные не умещаются в выделенные 80 символов, то они «разбиваются» на несколько NMEA сообщений.
Такой формат позволяет не ограничивать точность и количество символов в отдельных полях данных. Например, дробная часть значения координат может быть представлена 3 или 4 знаками после запятой, но это никак не должно повлиять на работу программного обеспечения, которые выделяет нужные данные из сообщения по номеру поля. В конце каждого NMEA сообщения содержится поле «чексуммы», отделенное от данных символом «*». При необходимости оно может использоваться для проверки целостности и достоверности каждого принятого сообщения.
NMEA протокол поддерживает не только исходящие, но и входящие сообщения, с помощью которых, например, можно обновить или добавить путевые точки маршрута. Эти сообщения должны быть сформированы в строгом соответствии с форматом NMEA, в противном случае, они будут просто проигнорированы GPS приемником. Стоит отметить, что не все навигационные программы и модели приемников поддерживают этот режим, так как используют для загрузки точек и маршрутов фирменные протоколы производителей – Garmin, Magellan и т.д.
С момента создания, NMEA протокол претерпел несколько модификаций, связанных с добавлением новых полей и сообщений. Текущей версией, которую поддерживают большинство приемников, является версия 2.3, хотя уже опубликовано описание новой версии 3.0. Полная спецификация NMEA сообщений отсутствует в свободном доступе и ее нельзя официально скачать в электронном виде, Отдельные ее разделы, общее описание NMEA протокола и наиболее популярных сообщений можно найти в Интернете. Официально приобрести NMEA документацию можно на сайте www.nmea.org .
Список сообщений
NMEA протокол описывает большой список различных сообщений, из которых можно выделить два десятка сообщений, активно использующихся в навигационной аппаратуре. В связи с большой популярностью и простой представления данных, NMEA протокол нашел применение не только морской аппаратурой, но и в геодезических, бытовых и авиационных GPS приемниках.
- AAM – Прибытие в путевую точку
- ALM – Данные альманаха
- АPA – Данные автопилота «А»
- APB – Данные автопилота «В»
- BOD – Азимут на пункт назначения
- DTM – Используемый датум
- GGA – Информация о фиксированном решении
- GLL – Данные широты и долготы
- GSA – Общая информация о спутниках
- GSV – Детальная информация о спутниках
- MSK – Передача управлению базовому приемнику
- MSS – Статус базового приемника
- RMA – Рекомендованный набор данных системы «Loran»
- RMB – Рекомендованный набор навигационных GPS данных
- RMC – Рекомендованный минимальный набор GPS данных
- RTE – Маршрутная информация
- VTG – Вектор движения и скорости
- WCV - Данные скорости вблизи путевой точки
- WPL – Данные путевой точки
- XTC – Ошибка отклонения от трека
- XTE – Измеренная ошибка отклонения от трека
- ZTG – UTC время и оставшееся время до прибытия в точку назначения
- ZDA – Дата и время.
Некоторые из NMEA сообщений могут содержать одинаковые поля данных, либо полностью содержать данные других, меньших по размеру, NMEA сообщений.
Содержание NMEA сообщений
GGA - информация о фиксированном решении. Самое популярное и наиболее используемое NMEA сообщение с информацией о текущем фиксированном решении – горизонтальные координаты, значение высоты, количество используемых спутников и тип решения.
$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47 где:
- GGA – Заговолок
- 123519 –UTC время 12:35:19
- 4807.038, N – Широта, 48 градусов 7.038 минуты северной широты
- 01131.000, Е – Долгота, 11 градусов 31.000 минуты восточной долготы
- 1 - тип решение, StandAlone решение
- 0 – нет решения,
- 1 – StandAlone,
- 2 – DGPS,
- 3 – PPS,
- 4 – фиксированный RTK,
- 5 – не фиксированный RTK,
- 6 – использование данных инерциальных систем,
- 7 – ручной режим,
- 8 – режим симуляции
- 08 – количество используемых спутников
- 0.9 – геометрический фактор, HDOP
- 545.4, М – высота над уровнем моря в метрах
- 46.9, М – высота геоида над эллипсоидом WGS 84
- [пустое поле] – время прошедшее с момента получения последней DGPS поправки. Заполняется при активизации DGPS режима
- [пустое поле] – идентификационный номер базовой станции. Заполняется при активизации DGPS режима.
GSA – общая информация о спутниках. Это NMEA сообщение содержит список спутников, используемых в подсчете позиции и значения геометрических факторов DOPs, определяющих точность подсчете позиции. Параметры DOP определяются геометрическим расположением спутников на небе. Чем лучше «распределены» на небе спутники, тем меньше DOP и тем лучше точность позиции. Минимальное значение PDOP (= 1) соответствует ситуации, когда один спутник находится строго над пользователем, а другие 3 равномерно распределены вокруг на уровне горизонта. Значение PDOP вычисляется, как квадратный корень из суммы квадратов HDOP и VDOP.
$GPGSA,A,3,04,05,,09,12,,,24,,,,,2.5,1.3,2.1*39 где:
- GSA – заголовок
- А – тип выбора между 2D и 3D решениями, Автоматический (A-auto, M-manual)
- 3 – тип решения, 3D решение (1 – нет решения, 2 – 2D решение, 3 – 3D решение)
- 04,05… - PRN коды используемых в подсчете позиции спутников (12 полей)
- 2.5 – пространственный геометрический фактор, PDOP
- 1.3 – горизонтальный геометрический фактор, HDOP
- 2.1 – вертикальный геометрический фактор, VDOP
GSV - Детальная информация о спутниках Это NMEA сообщение содержит детальную информацию для всех отслеживаемых навигатором GPS спутников. Исходя из ограничения в 80 символов в составе одного NMEA сообщения могут передаваться данные только для 4-х спутников. Соответственно для 12 спутников требуется 3 сообщения GSV. Поле SNR (Signal to Noise Ration) содержит значения уровней, принимаемых со спутников, навигационных сигналов. Теоретически его значение может варьироваться от 0 до 99 и измеряется в dB. Фактически уровень сигнала лежит в диапазоне 25 …35 dB. Здесь стоит отметить, что данный параметр не является абсолютным и не подходит для сравнения чувствительности приемников разных моделей и производителей. В GPS навигаторах могут использоваться различные алгоритмы вычисления уровня принимаемого сигнала, что приводит к разным результатам при равной степени чувствительности приемников. Для каждого видимого GPS спутника передается набор информации, включающий уровень сигнала, угол возвышения и азимут спутника. Количество этих «наборов» определяется общем количеством видимых спутников, значение которого передается в отдельном поле.
$GPGSV,2,1,08,01,40,083,46,02,17,308,41,12,07,344,39,14,22,228,45*75 где:
- GSV – заголовок
- 2 – количество сообщений GSV в пакете
- 1 – номер сообщения в пакете (от 1 до 3)
- 08 – количество видимых спутников
- 01 – номер спутника
- 40 – угол возвышения, в градусах
- 083 – азимут в градусах
- 46 – SNR, уровень сигнала
RMC - рекомендованный минимальный набор GPS данных Это NMEA сообщение содержит весь наборы, так называемых «PVT» данных. «PVT» - общепринятое сокращение от «position, velocity, time» (позиция, скорость, время).
$GPRMC,123519,A,4807.038,N,01131.000,E,022.4,084.4,230394,003.1,W*6A
где:
- RMC – заголовок
- 123419 – UTC время, 12:34:59
- А – статус (А- активный, V- игнорировать)
- 4807.038,N – Широта, 48 градусов 07.038 минут северной широты
- 01131.000,Е – Долгота, 11 градусов 31.000 минута восточной долготы
- 022.4 – Скорость, в узлах
- 084.4 – Направление движения, в градусах
- 230394 – Дата, 23 марта 1994 года
- 003.1,W – Магнитные вариации
GLL - данные широты и долготы
NMEA сообщение со значением координат широты и долготы, и времени когда было вычислено это решение.
$GPGLL,4916.45,N,12311.12,W,225444,A,*31
где:
- GLL – заголовок
- 4916.46,N – широта, 49 градусов 16.45 минут северной широты
- 12311.12,W-долгота, 123 градуса 11.12 минут западной долготы
- 225444 – Время фиксации в шкале времени UTC, 22:54:44
- А – Тип данных, (А – активные, V - игнорировать)
ВOD - Азимут на пункт назначения Это NMEA сообщение указывает азимут на точку назначения в режиме навигации.
$GPBOD,045.,T,023.,M,DEST,START*01
где:
- BOD – заголовок
- 045.,T – истинное направление на точку
- 023.,M – магнитное направление на точку
- DEST – идентификационный номер конечной точки
- START – идентификационный номер начальной точки
RMB – рекомендованный набор навигационных GPS данных
NMEA сообщение содержит рекомендованный минимальный набор данных для навигации «по маршруту» или «на точку» в режиме «Goto».
$GPRMB,A,0.66,L,003,004,4917.24,N,12309.57,W,001.3,052.5,000.5,V*20
где:
- RMB – заголовок
- А – Тип данных, (А – активные, V - игнорировать)
- 0.66,L – отклонение от трека. Параметра определен в морских милях. (L –влево, R-вправо)
- 003 - идентификационный номер начальной точки
- 004 - идентификационный номер конечной точки
- 4917.24,N – значение широты конечной точки, 49 градусов 17.24 минуты северной широты
- 12309.57,W – значение долготы конечной точки, 123 градуса 09.57 минут западной долготы
- 001.3 – расстояние до точки, в морских милях
- 052.5 – направление на точку
- 000.5 – скорость, в узлах
- V – информация о прибытии ( А – прибытие, V – точка еще не достигнута)
RTE – Маршрутная информация
NMEA сообщение RTE выводит список путевых точек активного маршрута. Есть два типа сообщений RTE. В первом случае, отображаются все точки маршрута. Во втором, только список оставшихся точек, которые еще предстоит посетить при движении по маршруту. Учитывая, что в NMEA протоколе есть ограничение, по которому длина сообщение не должна превышать 80 символов, сообщение RTE может состоять из нескольких строк.
$GPRTE,2,1,c,0,W3IWI,DRIVWY,32CEDR,32-29,32BKLD,32-I95,32-US1,BW-32,BW-198*69
где:
- RTE – заголовок
- 2 – общее количество сообщений для отображения полного списка данных
- 1 – номер сообщения из общего списка
- с – тип RTE сообщения (с – полный список точек маршрута, w – список точек, которые еще предстоит посетить)
- 0 – идентификатор маршрута
- W3IWI,DRIVWY,.. - список путевых точек
Особенности Garmin
Приемники Garmin поддерживают большинство сообщений NMEA, содержащие GPS измерения, координаты и время – GGA, GLL, GSA, GSV, RMC. А также навигационные сообщения – RMB, BOD
Для вывода этих сообщений необходимо в настройках приемника изменить интерфейс с «Garmin» на «NMEA» и возможно установить нужную скорость. Эту же скорость необходимо установить в навигационной программе в настройках последовательного порта к которому подключается навигатор.
К сожалению, приемники с USB –портом не поддерживают NMEA протокол, ограничивая его настройки только протоколом «Garmin»
Для вывода информации поступающей в последовательный порт компьютера можно воспользоваться терминальной программой Windows, либо одной из навигационных программ поддерживающих такую возможность.
Ниже представлен список NMEA сообщений приемника Garmin eMap, которые содержаться в составе одной эпохи.
$GPRMC,135412,A,5522.8973,N,03710.1401,E,0.0,0.0,190507,9.3,E,A*1F
$GPRMB,A,,,,,,,,,,,,A,A*0B
$GPGGA,135412,5522.8973,N,03710.1401,E,1,04,5.4,205.2,M,15.8,M,,*4A
$GPGSA,A,3,,,,08,,13,,23,,25,,,5.7,5.4,1.0*3C
$GPGSV,3,1,11,02,15,267,00,03,11,085,45,04,05,236,00,08,39,233,00*77
$GPGSV,3,2,11,10,32,308,00,13,63,109,43,16,17,037,00,23,31,111,38*77
$GPGSV,3,3,11,24,09,343,00,25,66,077,44,27,69,229,00*46
$GPGLL,5522.8973,N,03710.1401,E,135412,A,A*43
$GPBOD,,T,,M,,*47
$PGRME,19.1,M,15.2,M,25.3,M*15
$ PGRMZ,673, f,3*19
$ PGRMM, WGS 84*06
В дополнение к стандартным NMEA сообщениям, в приемниках Garmin реализован собственный набор сообщений, каждое из которых в заголовке содержит префикс «GRM», идентификатор «М» или «Z», определяющий тип данных, и один символ для названия.
PGRME – оценка ошибки позиционирования
$PGRME,15.0,M,45.0,M,25.0,M*1C
где:
- 15.0,М – оценка горизонтальной ошибки позиционирования, в метрах
- 45.0,М – оценка вертикальной ошибки, в метрах
- 25.0,М – эквивалентная сферическая ошибка позиционирования
PGRMZ – измерения высоты
$PGRMZ,93,f,3*21
где:
- 93,f – значение высоты, в фунтах
- 3 - условия измерения позиции (2 – высота, определенная пользователем, 3 – высота, вычисленная GPS)
PGRMM – текущий датум
$PGRMM,NAD27 Canada*2F
где:
- NAD27 Canada – название текущего горизонтального датума
Особенности Sirf
GPS чипы компании «Sirf» используются в различном навигационном GPS оборудовании, начиная от обычных плат, заканчивая портативными и автомобильными GPS навигаторами. Но в отличие от навигаторов, они поддерживают только NMEA сообщения связанные с GPS измерениями, вычислением позиции и времени – GGA, GLL, GSA, GSV, RMC, VTG, ZDA.
«Sirf» поддерживает также несколько «входящих» NMEA сообщений, предназначенных для конфигурации и настройки различных параметров. В дополнение, в «Sirf» реализован собственный бинарный протокол, который позволяет изменить значительно больше настроек. Эти 5 «входящих» NMEA сообщений в соответствии с правилами начинают с префикса $PSFR. Все сообщения содержат фиксированный набор данных и заканчиваются символом «n» (перевод строки)
Для конфигурации параметров «Sirf» используется специальная программа «SirfTech». Настройка параметров NMEA сообщение осуществляется в отдельном пункте меню.
Все NMEA сообщения приемника можно сохранить в файл. Ниже представлен список NMEA сообщений приемника GlobalSat BT-338, которые содержатся в составе одной эпохи.
$GPGGA,100643.000,5522.9036,N,03710.1282,E,1,07,1.6,209.9,M,14.9,M,,0000*52
$GPGSA,A,3,31,01,23,20,11,30,14,,,,,,2.1,1.6,1.4*35
$GPGSV,3,1,12,20,84,187,41,01,49,067,46,23,46,238,45,31,45,073,50*7B
$GPGSV,3,2,12,11,25,194,34,13,16,240,,04,15,319,30,17,14,273,21*7A
$GPGSV,3,3,12,30,10,026,33,14,05,063,22,05,04,009,25,25,03,195,*7F
$GPRMC,100643.000,A,5522.9036,N,03710.1282,E,0.16,119.11,200507,,*0D
Как видно из приведенного примера, «заводские» установки содержат меньшее количество NMEA сообщений по сравнению с настройками Garmin. При необходимости этот набор можно расширить, установив период в недостающих NMEA сообщений.
$GPGGA,100833.000,5522.9076,N,03710.1270,E,1,07,1.3,222.4,M,14.9,M,,0000*53
$GPGLL,5522.9076,N,03710.1270,E,100833.000,A*34
$GPGSA,A,3,31,01,23,20,11,30,17,,,,,,2.1,1.3,1.6*31
$GPGSV,3,1,12,20,84,180,43,01,49,067,47,23,47,238,45,31,45,072,49*77
$GPGSV,3,2,12,11,24,193,26,13,16,240,26,04,15,319,24,17,13,273,31*78
$GPGSV,3,3,12,30,10,025,26,14,04,064,22,25,04,195,,05,04,008,21*7C
$GPRMC,100833.000,A,5522.9076,N,03710.1270,E,0.18,4.86,200507,,*00
$GPVTG,4.86,T,,M,0.18,N,0.3,K*60
$GPZDA,100834.000,20,05,2007,,*5A
PSFR100, PSFR102 – конфигурация последовательных портов
NMEA сообщение под номером 100 служит для установки порта А, сообщение 102 – порта В. Сообщение 100 имеет дополнительное поле, которое позволяет переключить интерфейс в бинарный Sirf протокол.
Соответственно, в бинарном протоколе существует команда, которая переключает порт обратно в NMEA формат. Прежде чем переключится в бинарный протокол, необходимо понять, если ли программа которая в дальнейшем позволит восстановить NMEA протокол.
$PSRF100,0,9600,8,1,0*0C
$PSRF102,9600,8,1,0*3C
где:
- PSRF100 – заголовок
- 0 – параметр, указывающий в каком режиме был изменен протокол (0-Sirf, 1-NMEA)
- 9600 – скорость порта (4800, 9600, 19200, 38400)
- 8 – биты данных (7, 8)
- 1 – стоп-биты (0,1)
- 0 – парность (0 – нет, 1-нечетная, 2-четная)
PSFR101, PSFR104 – инициализация параметров приемника
NMEA сообщения под номерами 101 и 104 предназначены для инициализации параметров, предназначенных для GPS приема. Определение этих параметров может ускорить время захвата GPS спутников. Сообщение 101 устанавливает текущие координаты в формате XYZ, сообщение 104 – в формате BLH (долгота, широта).
$PSRF101,-2686700,-4304200,3851624,95000,497260,921,12,3*22
$PSRF104,37.3875111,-121.97232,0,95000,237759,922,12,3*3A
где:
- PSRF101 – заголовок
- 37.3875111 – широта в градусах
- -121.97232 – долгота в градусах
- 0 – высота , в метрах
- 95000 – сдвиг часов
- 237759 – GPS время, в секундах
- 922 – номер GPS недели
- 12 – количество каналов
- 3 – тип инициализации данных (1 – горячий старт, 2 – теплый старт, 3 – инициализация данных, 4 – холодный старт с полной очисткой данных, 8 – холодный старт с восстановлением заводских настроек)
PSFR103 – конфигурация генерации NMEA сообщений
Это NMEA сообщение позволяет установить или запросить период генерации каждого «исходящего» NMEA сообщения.
|