14 августа 2014

Особенности протокола NMEA2000 и его использование

NMEA (National Marine Electronics Association) 2000 — это стандарт передачи данных оборудования навигации, связи и других информационных сетей.

Без имени-7.jpgВ большинстве случаев NMEA2000 используется в морском деле. В основе этого протокола лежит протокол передачи данных CAN (Controller Area Network), использующийся, в основном, в судовой автоматике.

Национальная Ассоциация Морской Электроники (англ. National Marine Electronics Association — NMEA) разработала специальный протокол для обеспечения совместимости морского навигационного оборудования от разных производителей. 

С момента создания протокол NMEA претерпел несколько модификаций, связанных с добавлением новых полей и сообщений. Текущей версией, которую поддерживают большинство приемников, является версия 2.3, хотя уже опубликовано описание новой версии 3.0

Сообщения NMEA

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

Полная спецификация NMEA сообщений отсутствует в свободном доступе и ее нельзя официально скачать в электронном виде. Отдельные ее разделы, общее описание NMEA протокола и наиболее популярных сообщений можно найти в Интернете. Официально приобрести NMEA документацию можно на сайте //www.nmea.org/. 

Исходящие сообщения NMEA

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

  • заголовок, 
  • набор данных, представленных ASCII символами,
  • поле «чексуммы» для проверки достоверности переданной информации. 

Заголовок

Как правило, заголовок состоит из пяти символов. Первые два символа определяют тип сообщения, а оставшиеся три — его название. Например, заголовок GPS NMEA сообщений начинается с «GP». Сообщения, которые не описаны в спецификации NMEA, но реализованы в GPS-приемниках в соответствии с общими правилами, имеют префикс «Р», дополненный тремя символами, уникальными для каждой компании. Например, NMEA сообщения Garmin имеют префикс «PGRM», Magellan — «PMGN».

Данные

Каждое NMEA сообщение начинается с «$», заканчивается «\n» (перевод строки) и не может быть длиннее 80 символов. Все данные содержатся в одной строке и отделены друг от друга запятыми. Информация представлена в виде ASCII текста и не требует специального декодирования. Если данные не умещаются в выделенные 80 символов, то они «разбиваются» на несколько сообщений. Такой формат позволяет не ограничивать точность и количество символов в отдельных полях данных. Например, дробная часть значения координат может быть представлена тремя или четырьмя знаками после запятой, но это никак не должно повлиять на работу программного обеспечения, которые выделяет нужные данные из сообщения по номеру поля. 

Поле "чексуммы"

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

Входящие сообщения NMEA

Протокол NMEA 2000 поддерживает не только исходящие, но и входящие сообщения, с помощью которых, например, можно обновить или добавить путевые точки маршрута. Эти сообщения должны быть сформированы в строгом соответствии с форматом NMEA, в противном случае, они будут проигнорированы GPS-приемником

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

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 сообщений 

1. 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 режима. 

* Типы решений:

0 – нет решения,
1 – StandAlone,
2 – DGPS,  
3 – PPS,
4 – фиксированный RTK,
5 – не фиксированный RTK, 
6 – использование данных инерциальных систем,
7 – ручной режим,
8 – режим симуляции

2. 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 

3. 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, уровень сигнала 

4. 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 – NMEA заголовок 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 – Магнитные вариации 

5. 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 
А – Тип данных, (А – активные, V - игнорировать) 

6. ВOD – Азимут на пункт назначения

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

$GPBOD,045.,T,023.,M,DEST,START*01 где: 
BOD – NMEA заголовок 
045.,T – истинное направление на точку 
023.,M – магнитное направление на точку 
DEST – идентификационный номер конечной точки 
START – идентификационный номер начальной точки 

7. 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 – NMEA заголовок 
А – Тип данных, (А – активные, 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 – точка еще не достигнута) 

8. 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,.. - список путевых точек