Передача данных nmea с автопилота. Описание NMEA протокола. Реализация в приемниках Garmin и GlobalSat. GSV – Видимые спутники

NMEA 0183 (от «National Marine Electronics Association ») - стандарт определяющий текстовый протокол связи морского (как правило, навигационного) оборудования (или оборудования, используемого в поездах) между собой. Стал особенно популярен в связи с распространением GPS-приёмников , использующих этот стандарт.

Общий вид строк в NMEA 0183

  • символ «$» или «!» (hex 24 или hex 21)
  • 5-буквенный идентификатор сообщения. Первые две буквы - идентификатор источника сообщения, следующие три буквы - идентификатор формата сообщения, согласно протоколу NMEA 0183 определённой версии.
  • список данных (буквы, цифры и точки), разделённых запятыми. Если какие-либо данные отсутствуют внутри строки, запятые всё равно ставятся (например «,»). Некоторые поля в конце строки могут отсутствовать вовсе.
  • символ «*».
  • восьмибитная XOR -сумма всех символов (включая «,» и «^») в строке между «$» и «*» приведенная к двум ASCII-символам в верхнем регистре для 16-ричного представления байта (0–9, A–F).
  • (hex 0D, hex 0A).

Максимальная длина сообщения ограничена 82 символами (NMEA 0183 rev 3.0)

Стандарт описывает более 250 идентификаторов NMEA-последовательностей. Стандарт определяет скорости обмена данными в 4800 бод. (Для скоростей в 38400 бод и выше есть расширенный стандарт NMEA-0183-HS).

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

RMC-строка (частный пример)

$GPRMC,hhmmss.sss,A,GGMM.MM,P,gggmm.mm,J,v.v, b.b, ddmmyy, x.x, n,m*hh

Значение полей:

  • «GP» - идентификатор источника; в приведенном примере это GPS, «GL» - ГЛОНАСС , «GA» - Галилео , «GN» - ГЛОНАСС+GPS и т. п.
  • «RMC» - «Recommended Minimum sentence C»
  • «hhmmss.sss» - время фиксации местоположения по Всемирному координированному времени UTC : «hh» - часы, «mm» - минуты, «ss.sss» - секунды. Длина дробной части секунд варьируется. Лидирующие нули не опускаются.
  • «A» - статус: «A» - данные достоверны, «V» - недостоверны.
  • «GGMM.MM» - широта. 2 цифры градусов(«GG»), 2 цифры целых минут, точка и дробная часть минут переменной длины. Лидирующие нули не опускаются.
  • «P» - «N» для северной или «S» для южной широты.
  • «gggmm.mm» - долгота. 3 цифры градусов(«ggg»), 2 цифры целых минут, точка и дробная часть минут переменной длины. Лидирующие нули не опускаются.
  • «J» - «E» для восточной или «W» для западной долготы.
  • «v.v» - горизонтальная составляющая скорости относительно земли в узлах . Число с плавающей точкой. Целая и дробная части переменной длины.
  • «b.b» - путевой угол (направление скорости) в градусах . Число с плавающей точкой. Целая и дробная части переменной длины. Значение равное 0 соответствует движению на север , 90 - восток , 180 - юг , 270 - запад .
  • «ddmmyy» - дата : день месяца, месяц, последние 2 цифры года (ведущие нули обязательны).
  • «x.x» - магнитное склонение в градусах (часто отсутствует), рассчитанное по некоторой модели. Число с плавающей точкой. Целая и дробная части переменной длины.
  • «n» - направление магнитного склонения: для получения магнитного курса магнитное склонение необходимо «E» - вычесть, «W» - прибавить к истинному курсу.
  • «m» - индикатор режима: «A» - автономный, «D» - дифференциальный, «E» - аппроксимация , «N» - недостоверные данные (часто отсутствует, данное поле включая запятую отсутствует в старых версиях NMEA).
  • «hh» - контрольная сумма.
  • - байт равен 0x0D.
  • - байт равен 0x0A.

Примеры RMC-строки

Пример 1

$GPRMC,125504.049,A,5542.2389,N,03741.6063,E,0.06,25.82,200906,*17

Значение полей:

  • 12 часов 55 минут 4,049 секунд UTC
  • «A» - достоверно
  • широта 55° 42,2389", северная
  • долгота 37° 41,6063", восточная
  • скорость 0,06 узлов

Описание NMEA протокола.

Реализация в приемниках Garmin и GlobalSat

Введение

Национальная Ассоциация Морской Электроники (National Marine Electronics Association - NMEA) разработала специальный протокол для поддержания совместимости морского навигационного оборудования различных производителей. Этот NMEA протокол описывает не только данные, полученные с GPS приемников, но и измерения сонаров, радаров, электронных компасов, барометров и других навигационных устройств, использующихся на морских судах. Интерфейс обмена данными большинства портативных GPS приемников реализован в соответствии с NMEA спецификацией. Большинство навигационных программ, которые обеспечивают отображение данных в реальном времени, поддерживают и «понимают» 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 документацию можно на сайте http://www.nmea.org/ .

Список сообщений

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

    AAM – Прибытие в путевую точку

    ALM – Данные альманаха

    АPA – Данные автопилота «А»

    APB – Данные автопилота «В»

    BOD – Азимут на пункт назначения

    DTM – Используемый датум

    GGA – Информация о фиксированном решении

    GLL – Данные широты и долготы

    GSA – Общая информация о спутниках

    GSV – Детальная информация о спутниках

    MSK – Передача управлению базовому приемнику

    MSS – Статус базового приемника

    RTE – Маршрутная информация VTG – Вектор движения и скорости

    WCV - Данные скорости вблизи путевой точки

    WPL – Данные путевой точки

    XTC – Ошибка отклонения от трека

    XTE – Измеренная ошибка отклонения от трека

    ZTG – UTC время и оставшееся время до прибытия в точку назначения

    ZDA – Дата и время.

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

GGA - информация о фиксированном решении.

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

$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,*47

GGA – NMEA Заговолок

123519 –UTC время 12:35:19

4807.038, N – Широта, 48 градусов 7.038 минуты северной широты

01131.000, Е – Долгота, 11 градусов 31.000 минуты восточной долготы

1 - тип решение, StandAlone решение

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 – NMEA заголовок

    А – тип выбора между 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 – NMEA заголовок

    2 – количество сообщений GSV в пакете

    1 – номер сообщения в пакете (от 1 до 3)

    08 – количество видимых спутников

    01 – номер спутника

    40 – угол возвышения, в градусах

    083 – азимут в градусах

    46 – SNR, уровень сигнала

Это 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 – NMEA заголовок

    123419 – UTC время, 12:34:59

    А – статус (А- активный, V- игнорировать)

    4807.038,N – Широта, 48 градусов 07.038 минут северной широты

    01131.000,Е – Долгота, 11 градусов 31.000 минута восточной долготы

    022.4 – Скорость, в узлах

    003.1,W – Магнитные вариации

GLL - данные широты и долготы

NMEA сообщение со значением координат широты и долготы, и времени когда было вычислено это решение.

$GPGLL,4916.45,N,12311.12,W,225444,A,*31

    GLL – NMEA заголовок

    4916.46,N – широта, 49 градусов 16.45 минут северной широты

    12311.12,W-долгота, 123 градуса 11.12 минут западной долготы

    225444 – Время фиксации в шкале времени UTC, 22:54:44

ВOD - Азимут на пункт назначения

Это NMEA сообщение указывает азимут на точку назначения в режиме навигации.

$GPBOD,045.,T,023.,M,DEST,START*01

    BOD – NMEA заголовок

    045.,T – истинное направление на точку

    023.,M – магнитное направление на точку

    DEST – идентификационный номер конечной точки

    START – идентификационный номер начальной точки

$GPRMB,A,0.66,L,003,004,4917.24,N,12309.57,W,001.3,052.5,000.5,V*20

    RMB – NMEA заголовок

    А – Тип данных, (А – активные, V - игнорировать)

    0.66,L – отклонение от трека. Параметра определен в морских милях. (L –влево, R-вправо)

    003 - идентификационный номер начальной точки

    004 - идентификационный номер конечной точки

    4917.24,N – значение широты конечной точки, 49 градусов 17.24 минуты северной широты

    12309.57,W – значение долготы конечной точки, 123 градуса 09.57 минут западной долготы

    001.3 – расстояние до точки, в морских милях

    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 – NMEA заголовок

    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 сообщение осуществляется в отдельном пункте меню.

$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 – NMEA заголовок

    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 – NMEA заголовок

    37.3875111 – широта в градусах

    121.97232 – долгота в градусах

    0 – высота, в метрах

    95000 – сдвиг часов

    237759 – GPS время, в секундах

    922 – номер GPS недели

    12 – количество каналов

    3 – тип инициализации данных (1 – горячий старт, 2 – теплый старт, 3 – инициализация данных, 4 – холодный старт с полной очисткой данных, 8 – холодный старт с восстановлением заводских настроек)

PSFR103 – конфигурация генерации NMEA сообщений

Это NMEA сообщение позволяет установить или запросить период генерации каждого «исходящего» NMEA сообщения.

$PSRF103,05,00,01,01*20

    PSRF103 – NMEA заголовок

    05 – название сообщения

    01 – период, в секундах (0-255)

    01 – наличие чексуммы (0- да, 1 - нет)

Результаты эксперимента

В условия нормальной видимости спутников, приемник Garmin eMap выдает следующий набор NMEA сообщений:

$GPRMC,104644,A,5522.8965,N,03710.1389,E,0.0,0.0,200507,9.3,E,A*16

$GPRMB,A,,A,A*0B

$GPGGA,104644,5522.8965,N,03710.1389,E,1,07,1.2,186.6,M,15.8,M,*44

$GPGSA,A,3,01,04,13,16,20,23,31,2.1,1.2,1.7*35

$GPGSV,3,1,10,01,34,070,48,04,28,311,40,11,10,190,00,13,32,249,41*7E

$GPGSV,3,2,10,16,11,111,40,20,68,142,50,23,64,247,49,25,21,196,00*70

$GPGSV,3,3,10,30,05,012,00,31,36,055,52*7D

$GPGLL,5522.8965,N,03710.1389,E,104644,A,A*40

$GPBOD,T,M,*47

$PGRME,6.0,M,7.7,M,9.8,M*29

$PGRMZ,612,f,3*1E

$PGRMM,WGS 84*06

$GPRTE,1,1,c,*37

Из анализа сообщений видно, что в на текущий момент приемником отслеживается 10 (GSV) спутников, из которых 7 (GGA) используются в подсчете позиции. Горизонтальная ошибка позиционирования при этом равняется 6 метрам (RME), а индикатор типа решения – 1 (GGA)

Если создать условиях, при которых GPS сигнал не будет приниматься, то сообщения GGA будут содержать «пустые» поля, а индикатор типа решения примет значение 0 (GGA)

$GPGGA,0,00,M,M,*66

$GPGSA,A,1,,*1E

В «нормальном» режиме сообщения RMB и BOD содержат пустые поля. После того, как в качестве конечной точки назначения была выбрана путевая точка «Дорога», эти поля «наполнились» данными. Как следует из анализа сообщение, расстояние до точки – 1.620 миль, азимут движения - 6.3 градуса (BOD). При этом, азимут сообщений BOD и RMB отличается на 0.1 градус.

$GPRMB,A,0.00,R,Дорога,5524.501,N,03710.445,E,1.620,6.4,V,A*59

$GPBOD,6.3,T,357.0,M,Дорога,*74

После того, как для навигации был выбран маршрут «Home» в списке сообщения RTE отобразился список всех путевых точек маршрута. А в сообщении RMВ – идентификационные номера начальной и конечной (очередной) точек маршрута.

$GPRTE,1,1,c,HOME,SLOBODA,IERUSALIM,INSTITUT*01

$GPRMB,A,9.99,R,SLOBOD,IERUSAL,5555.237,N,03649.976,E,34.346,340.6,V,A*1F

Заключение

В большинстве случаев, пользователю не нужно, да и не интересно знать, какие данные и в каких полях передаются. Большинство навигационных программ «разбирают» данные NMEA сообщений и представляют их в удобном для пользователя виде – графики, схемы, таблицы и т.п.

Особый интерес представляют NMEA сообщения для пользователей, которые хотели бы провести исследования GPS данных, вычислить оценку полученных измерений, либо проанализировать поведения навигационных приемников в различных условиях. Есть целый ряд программ, с помощью которых можно решать эти задачи.

Но все же, для глубокого анализа GPS данных, формат NMEA не предназначен, так как не содержит так называемые «сырые» измерения – псевдодальности, фазы, допплер. Каждый производитель навигационной аппаратуры имеет свой «открытый» или «закрытый» протокол, который выводит эту информацию

NMEA – это простой и понятный формат, который позволяет не только обеспечить обмен данными между GPS приемниками и навигационными программами, но и дает пользователям некоторое представление о принципах работы спутниковой навигационной аппаратуры.

Внимание!

В качестве исходного материала использована статья с сайта " GPS portal "

Описание 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

В OD - Азимут на пункт назначения
Это NMEA сообщение указывает азимут на точку назначения в режиме навигации.

$GPBOD,045.,T,023.,M,DEST,START*01

  • BOD - заголовок
  • 045.,T - истинное направление на точку
  • 023.,M - магнитное направление на точку
  • DEST - идентификационный номер конечной точки
  • START - идентификационный номер начальной точки

$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 сообщение осуществляется в отдельном пункте меню.

$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 сообщения.

$PSRF103,05,00,01,01*20

  • PSRF103 - заголовок
  • 05 - название сообщения
    • 00 - GGA
    • 01 - GLL
    • 02 - GSA
    • 04 - RMS
    • 05 - VTG
  • 00 - режим (0 - установка периода, 1 - запрос)
  • 01 - период, в секундах (0-255)
  • 01 - наличие чексуммы (0- да, 1 - нет)

Результаты эксперимента

В условия нормальной видимости спутников, приемник Garmin eMap выдает следующий набор NMEA сообщений:

$GPRMC,104644,A,5522.8965,N,03710.1389,E,0.0,0.0,200507,9.3,E,A*16

$GPRMB,A,,A,A*0B

$GPGGA,104644,5522.8965,N,03710.1389,E,1 ,07 ,1.2,186.6,M,15.8,M,*44

$GPGSA,A,3,01,04,13,16,20,23,31,2.1,1.2,1.7*35

$GPGSV,3,1,10 ,01,34,070,48,04,28,311,40,11,10,190,00,13,32,249,41*7E

$GPGSV,3,2,10 ,16,11,111,40,20,68,142,50,23,64,247,49,25,21,196,00*70

$GPGSV,3,3,10 ,30,05,012,00,31,36,055,52*7D

$GPGLL,5522.8965,N,03710.1389,E,104644,A,A*40

$GPBOD,T,M,*47

$PGRME,6.0 ,M,7.7,M,9.8,M*29

$PGRMZ,612,f,3*1E

$PGRMM,WGS 84*06

$GPRTE,1,1,c,*37

Из анализа сообщений видно, что в на текущий момент приемником отслеживается 10 (GSV) спутников, из которых 7 (GGA) используются в подсчете позиции. Горизонтальная ошибка позиционирования при этом равняется 6 метрам (RME), а индикатор типа решения - 1 (GGA)

Если создать условиях, при которых GPS сигнал не будет приниматься, то сообщения GGA будут содержать «пустые» поля, а индикатор типа решения примет значение 0 (GGA)

$GPGGA,0 ,00,M,M,*66

$GPGSA,A,1,,*1E

В «нормальном» режиме сообщения RMB и BOD содержат пустые поля. После того, как в качестве конечной точки назначения была выбрана путевая точка «Дорога», эти поля «наполнились» данными. Как следует из анализа сообщение, расстояние до точки - 1.620 миль, азимут движения - 6.3 градуса (BOD). При этом, азимут сообщений BOD и RMB отличается на 0.1 градус.

$GPRMB,A,0.00,R,Дорога ,5524.501,N,03710.445,E,1.620 ,6.4 ,V,A*59

$GPBOD,6.3 ,T,357.0,M,Дорога,*74

После того, как для навигации был выбран маршрут «Home» в списке сообщения RTE отобразился список всех путевых точек маршрута. А в сообщении RMВ - идентификационные номера начальной и конечной (очередной) точек маршрута.

$GPRTE,1,1,c,HOME,SLOBODA,IERUSALIM,INSTITUT*01

$GPRMB,A,9.99,R,SLOBOD,IERUSAL,5555.237,N,03649.976,E,34.346,340.6,V,A*1F

Заключение

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

Особый интерес представляют NMEA сообщения для пользователей, которые хотели бы провести исследования GPS данных, вычислить оценку полученных измерений, либо проанализировать поведения навигационных приемников в различных условиях. Есть целый ряд программ, с помощью которых можно решать эти задачи.

Н о все же, для глубокого анализа GPS данных, формат NMEA не предназначен, так как не содержит так называемые «сырые» измерения - псевдодальности, фазы, допплер. Каждый производитель навигационной аппаратуры имеет свой «открытый» или «закрытый» протокол, который выводит эту информацию

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

Возникла у меня необходимость тестировать приложение, использующее данные GNSS по протоколу NMEA. Связано было с тем, что работал над проектом программы навигации самолета, тестировать в воздухе дорого естественно, на земле ездить на машине с GNSS приемником не особо удобно, вот и хотелось сидя за столом иметь на виртуальном параллельном порту данные протокола NMEA с якобы перемещающегося оборудования. Сначала искал разный софт думал, найду что то подходящее, но большинство платное и управление эмуляции данных не совсем удобное, хотя и эмулируют практически все параметры стандарта NMEA. Но мне надо было что-то простенькое эмулирующее координаты, скорость, в принципе не более того и требовалось достаточно удобное и логичное управление. Вот и пришлось написать приложение подобного рода на C#.

Fly_nmea


NMEA («National Marine Electronics Association») - полное название «NMEA 0183» - текстовый протокол связи морского (как правило, навигационного) оборудования между собой.
Данные передаются в виде предложений. Формат предложений следующий:
$AAAAA[, <данные> ]*hh , где:
$ - символ начала предложения (код 24h);
AAAAA - Пяти-символьный адрес (имя) предложения;
[, <данные> ] - список полей данных разделенных запятыми (код 2Сh);
* - признак контрольной суммы (код 2Ah);
hh - контрольная сумма.

Пример предложения:
GGA – Данные определения места по GPS
Время место и данные относящиеся к обсервации.
$GPGGA,hhmmss.sss,llll.ll,a,yyyy.yy,a,x,xx,x.x,x.x,M,x.x,M,x.x,xxx*hh

Мне требовалось эмулировать четыре строки:

  • GLL – Координаты места
  • GSV – Видимые спутники
  • RMC – Рекомендуемый минимальный набор данных по GPS и ГЛОНАСС
  • GSA – Фактор ухудшения точности, используемые для навигации спутники
Эмуляция организована в следующем порядке:
  • мы задаем начальные координаты в системе WGS-84
  • далее переходим в плоскую проекцию, например Меркатора(для преобразования координат использовал готовую библиотеку на C# )
  • зная плоские координаты x, y, h реализуем физику движения самолета по изменяемым параметрам через графический интерфейс, таких как: крен, тангаж, скорость
  • конвертируем плоские координаты в координаты B, L, H системы WGS-84
  • формируем пакет сообщений стандарта NMEA из требуемых четырех строк
  • отправляем их на виртуальный параллельный порт
Fly_nmea + Android Sensor
Для более удобного тестирования я еще наладил прием данных с Android сенсоров (углы наклона). Android по UDP отсылает две строки типа:
  • «Angle:\t236.04152\t-1.0\t-3.0»
  • «Acc:\t-0.46309182\t-0.14982383\t-10.56939»
На приложении эмуляции я их принимаю и исходя из углов наклона меняю параметры:
  • Тангаж
В приложении эмуляции можно переключится с управления через интерфейс программы на Android Sensor.
Подключение Fly_nmea
Для эмуляции COM портов пригодится еще Virtual Serial Ports Emulator, потребуется настроить связь двух виртуальных COM портов например: COM1 <-> COM6, и программа Fly_nmea будет отсылать данные на COM6, а на COM1 программа использующая NMEA протокол будет их забирать.

Заключение

В целом я больше потратил времени на поиск подобного софта, и не найдя что меня бы полностью удовлетворило быстрее написал его сам. По мимо проекта над которым я работал, так же удалось вполне удачно подключить эмулятор к программам, понимающим NMEA протокол таким как: 2Gis и SAS planet.



FlyNMEA и android sensor(проект по передаче данных с сенсоров по UDP)

  • Речные портативные УКВ радиостанции
  • Прочие станции УКВ
  • Приемники Navtex
  • РЛО / SART
  • Стационарные станции УКВ
    • Морские станции
    • Речные станции
    • Прочие
  • Морское радиооборудование – оборудование, предназначенное для охраны человеческой жизни на море, обеспечения безопасности мореплавания, управления работой флота и передачи общественной и частной корреспонденции. Для эффективного использования радиооборудования на судах необходимо знать его принципы построения, технические характеристики и особенности эксплуатации. В зависимости от района плавания к морскому радиооборудованию выдвигаются различные требования.

    А1 – в зоне действия береговых УКВ-радиотелефонных станций с использованием ЦИВ.
    А2 – в зоне действия ПВ-радиотелефонных станций с использованием ЦИВ, исключая район А1.
    А3 – в зоне действия спутников ИНМАРСАТ, исключая районы А1 и А2.
    А4 – за пределами районов А1, А2, А3.
    Таким образом, радиооборудование на судне состоит из трех комплексов: аппаратура УКВ-диапазона, аппаратура ПВ/КВ-диапазона и судовая земная станция (СЗС) системы ИНМАРСАТ. Вне зависимости от районов плавания на каждом судне должны быть установлены: УКВ-радиоустановка, РЛО (радиолокационный маяк-ответчик), приемник НАВТЕКС, АРБ (аварийный радиобуй), портативные аварийные УКВ-радиостанции.

    Радиооборудование на судне должно удовлетворять требованиям ГМССБ, указанным в правилах РМРС (Российского Морского Регистра Судоходства) и РРР (Российского Речного Регистра). На каждом судне должен быть размещен запасной источник питания, с помощью которого радиооборудование могло бы обеспечивать связь при бедствии в случае поломки или повреждения главного и аварийного источников энергии. При переходе от одного источника питания к другому, должна срабатывать световая и звуковая сигнализации. Для работы и ремонта оборудования предоставляется техническое обслуживание, которое выполняет следующие процедуры: доставка до места установки, хранение (при необходимости) и установка. Все эти этапы должны выполняться в соответствии с инструкциями в технической документации.

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

    На судах водоизмещением свыше 500 р.т. должно быть не менее трех УКВ переносных станций и двух радиолокационных ответчиков. На судах водоизмещением от 300 до 500 р.т. - две станции и 1 РЛО. Также рекомендуется оборудовать суда аппаратурой для приема факсимиле.

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

  • НАВИГАЦИЯ
    • Компасы гироскопические
    • Компасы магнитные
    • Картплоттеры
    • Лаги
    • Метеодатчики
    • Приемники ГНСС GPS/GLONASS
    • Радиолокационные станции
    • Репитеры
    • СКДВП (BNWAS)
    • Регистраторы данных рейса РДР/У-РДР
    • Автоматическая идентификационная система (АИС)
    • Системы приема внешних звуковых сигналов
    • Сонары
    • Спутниковый компас
    • Эхолоты
    • Авторулевые
    • Электронная картография
  • СПУТНИКОВАЯ СВЯЗЬ
    • FleetBroadband
    • Inmarsat LRIT, SSAS (ОСДР, ССОО)
    • Iridium (Иридиум)
    • Спутниковое телевидение
    • Терминалы BGAN
    • Терминалы VSAT

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

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

    Типы оборудования:

    Терминалы Inmarsat LRIT, SSAS (ОСДР, ССОО) – это морское спутниковое оборудование, обязательное для установки на пассажирские, коммерческие и грузовые суда с районами плавания А2, А3, А4.
    - Судовая Система Охранного Оповещения - позволяет отправлять скрытый сигнал тревоги в случае нападения на судно. ОСДР или LRIT - это система опознавания судов и слежения за ними на дальнем расстоянии.
    - Терминалы FleetBroadband – это оборудование морской системы спутниковой связи, дающие широкополосный выход в интернет, обеспечивающие спутниковую телефонную связь, передачу SMS сообщений.
    - VSAT – оборудование, обеспечивающее высокоскоростную передачу данных через спутниковый интернет, что позволяет организовывать даже видеоконференции на борту.

    Так же для этих целей используются терминалы BGAN, отличающиеся от оборудования FBB и VSAT компактностью, мобильностью и скоростью связи.
    Из узкоспециализированного спутникового морского оборудования на судах используются: станция спутниковой связи, антенна приема TV сигнала и, для дальних районов плавания и телефоны, работающие через спутниковые системы связи таких операторов, как Iridium, Inmarsat и Thuraya.

  • АВТОМАТИКА
    • Кренометры
    • Системы автоматики NAVIS
    • Системы автоматики Praxis
    • Системы автоматики МРС
    • Системы контроля расхода топлива
    • Датчики
    • Системы автоматики АБС
    • Системы автоматики Валком

    1. Обслуживание, сервис и ремонт судовой электроавтоматики:
    - автоматика систем дистанционного управления главных двигателей;
    - автоматика судовых электростанций;
    - ремонт и настройка систем ГЭУ;
    - ремонт, наладка и проверка автоматики и аварийно-предупредительной сигнализации главных двигателей (Wartsila, MAN, MAK, SKL);
    - ремонт, наладка и проверка автоматики и аварийно-предупредительной сигнализации вспомогательных и аварийных дизель-генераторов (Volvo Penta, Scania, Deutz, CAT).

    2. Обслуживание, сервис и ремонт электрооборудования общесудовых систем:
    - ремонт, наладка рулевых устройств и автоматики авторулевых;
    - ремонт, наладка, комплексная проверка систем пожарной сигнализации;
    - автоматика котельного оборудования;
    - автоматика систем топливоподготовки;
    - автоматика систем водоподготовки;
    - автоматика систем очистки сточных вод.

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

    4. Разработка и согласование проектной документации при модернизации и переоборудовании судовых систем автоматики.

    5. Капитальный, средний и текущий ремонт электродвигателей и генераторов любой мощности. Ремонт и настройка системы возбуждения генераторов, настройка параллельной работы генераторов.

  • ДОПОЛНИТЕЛЬНО
    • Гарнитуры и трубки
    • Гидростаты
    • Запасные части для КВУ
    • ЗИП для гирокомпасов
    • ЗИП для тифонов
    • Магнетроны
    • Преобразователи и распределители
    • Системы безбатарейной связи
    • Системы пожарной безопасности
    • Судовые дисплеи и ПК
    • Судовые тифоны
    • Элементы питания (АКБ)
    • Блоки Питания
    • Дополнительные блоки