Описание протокола NMEA-0183 версии 2.1

NMEA – это формат передачи сообщений между корабельными приборами. Он включает в себя систему сообщений для обмена информацией между навигационными GPS приёмниками и потребителями навигационной информации. Все команды и сообщения передаются в текстовом ASCII виде, относящиеся к GPS приёмникам начинаются с $GP, в конце строки сообщения должны быть символы <CR><LF>. В последнем поле сообщения может быть указана контрольная сумма текущего сообщения, начинающаяся с разделителя *. Контрольная сумма 8 – ми битная (исключающая ИЛИ) всех символов сообщения, включая пробелы, расположенных между разделителями $ и *, не включая последних. Шестнадцатеричный результат переводится в два ASCII символа (0-9, A-F).

 

Содержание некоторых сообщений протокола NMEA версии 2.1

  • $GPGGA Сообщение содержит GPS данные о местоположении, времени местоопределения, качестве данных, количестве использованных спутников, HDOP (Фактор Ухудшения Точности Плановых Координат), информацию о дифференциальных поправках и их возраст.
  • $GPGLL Сообщение содержит GPS–данные о географической широте, долготе и времени определения координат.
  • $GPGSA В этом сообщении отображается режим работы GPS приёмника, параметры спутников, используемых при решении навигационной задачи, результаты которой отображены в сообщении $GPGGA и значения факторов точности определения координат.
  • $GPGSV В сообщении указывается количество видимых спутников, их номера, возвышение, азимут, и значение отношения сигнал/шум для каждого из них.
  • $GPRMC Сообщение RMC содержит данные о времени, местоположении, курсе и скорости, передаваемые навигационным GPS приёмником. Контрольная сумма обязательна для этого сообщения, интервалы передачи не должны превышать 2 секунды. Все поля данных должны быть подготовлены, пока ещё нет самих данных. Недействительные поля могут быть использованы, пока данные временно не готовы.
  • $GPVTG Сообщение VTG передает текущее истинное направление курса (COG) и скорость относительно земли (SOG).
  • $GPZDA Сообщение ZDA содержит информацию о времени по UTC, календарный день, месяц, год и локальный часовой пояс.

 

GGA - GPS Данные о местоположении

  14 15
$GPGGA, hhmmss.ss, 1111.11, a, yyyyy.yy, a, x, xx, x.x, xxx, M, x.x, M, x.x, xxxx*hh

1. Гринвичское время на момент определения местоположения.

2. Географическая широта местоположения.

3. Север/Юг (N/S).

4. Географическая долгота местоположения.

5. Запад/Восток (E/W).

6. Индикатор качества GPS сигнала:

0 = Определение местоположения не возможно или не верно;
1 = GPS режим обычной точности, возможно определение местоположения;
2 = Дифференциальный GPS режим, точность обычная, возможно определение местоположения;
3 = GPS режим прецизионной точности, возможно определение местоположения.

7. Количество используемых спутников (00-12, может отличаться от числа видимых).

8. Фактор Ухудшения Точности Плановых Координат (HDOP).

9. Высота антенны приёмника над/ниже уровня моря.

10. Единица измерения высоты расположения антенны, метры.

11. Геоидальное различие - различие между земным эллипсоидом WGS-84 и уровнем моря(геоидом), ”-” = уровень моря ниже эллипсоида.

12. Единица измерения различия, метры.

13. Возраст Дифференциальных данных GPS - Время в секундах с момента последнего SC104 типа 1 или 9 обновления, заполнено нулями, если дифференциальный режим не используется.

14. Индификатор станции, передающей дифференциальные поправки, ID, 0000-1023.

15. Контрольная сумма строки.

Пример сообщения:
$GPGGA,004241.47,5532.8492,N,03729.0987,E,1,04,2.0,-0015,M,,,,*31

 

GLL - географическое положение — Широта/Долгота

  6 7  
$GPGLL, 1111.11, a, yyyyy.yy, a, hhmmss.ss, A*hh <CR><LF>

1. Географическая широта местоположения.

2. Север/Юг (N/S).

3. Географическая долгота местоположения.

4. Запад/Восток (E/W).

5. Гринвичское время на момент определения местоположения.

6. Статус A = данные верны
V = данные не верны

7. Контрольная сумма строки.

Пример сообщения:
$GPGLL,5532.8492,N,03729.0987,E,004241.469,A*33

 

GSA - GPS факторы точности и активные спутники

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

  17 18  
$GPGSA, a, x, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, x.x, x.x, x.x*hh <CR><LF>

1. Режим: M = Ручной, принудительно включен 2D или 3D режим;
A = Автоматический, разрешено автомат. выбирать 2D/3D.

2. Режим: 1 = Местоположение не определено, 2 = 2D, 3 = 3D

3-14. PRN номера спутников, использованных при решении задачи местоопределения (нули для неиспользованных).

15. Фактор PDOP.

16. Фактор HDOP.

17. Фактор VDOP.

18. Контрольная сумма строки.

Пример сообщения:
$GPGSA,A,3,01,02,03,04,,,,,,,,,2.0,2.0,2.0*34

 

GSV - видимые спутники GPS

В этом сообщении отображается число видимых спутников(SV), PRN номера этих спутников, их высота над местным горизонтом, азимут и отношение сигнал/шум. В каждом сообщении может быть информация не более чем о четырех спутниках, остальные данные могут быть расположены в следующих по порядку $GPGSV сообщениях. Полное число отправляемых сообщений и номер текущего сообщения указаны в первых двух полях каждого сообщения.

  7 8 15 19 20  
$GPGSV, x, x, xx, xx, xx, xxx, xx..........., xx, xx, xxx, xx*hh <CR><LF>

1. Полное число сообщений, от 1 до 9.

2. Номер сообщения, от 1 до 9.

3. Полное число видимых спутников.

4. PRN номер спутника.

5. Высота, градусы, (90° - максимум).

6. Азимут истинный, градусы, от 000° до 359°.

7. Отношение сигнал/шум от 00 до 99 дБ, ноль - когда нет сигнала.

8-11. Тоже, что в 4-7 для второго спутника.

12-15. Тоже, что в 4-7 для третьего спутника.

16-19. Тоже, что в 4-7 для четвертого спутника.

20. Контрольная сумма строки.

Пример сообщения:
$GPGSV,3,1,12,02,86,172,,09,62,237,,22,39,109,,27,37,301,*7A
$GPGSV,3,2,12,17,28,050,,29,21,314,,26,18,246,,08,10,153,*7F
$GPGSV,3,3,12,07,08,231,,10,08,043,,04,06,170,,30,00,281,*77

RMC – pекомендуемый минимум GPS / навигационных данных

   
$GPRMC, Hhmmss.ss, A, 1111.11, A, yyyyy.yy, a, x.x, x.x, ddmmyy, x.x, A *hh <CR><LF>
  1. Время фиксации местоположения UTC
  2. Состояние: А = действительный, V = предупреждение навигационного приёмника
  3. Географическая широта местоположения
  4. Север/Юг (N/S)
  5. Географическая долгота местоположения
  6. Запад/Восток (E/W)
  7. Скорость над поверхностью (SOG) в узлах
  8. Истинное направление курса в градусах
  9. Дата: dd/mm/yy
  10. Магнитное склонение в градусах
  11. Запад/Восток (E/W)
  12. Контрольная сумма строки (обязательно)

Пример сообщения:
$GPRMC,113650.0,A,5548.607,N,03739.387,E,000.01,255.6,210403,08.7,E*69

VTG – истинное направление курса и скорость относительно земли

   
$GPVTG, x.x, T, x.x, M, x.x, N, x.x, K, i, *hh <CR><LF>
  1. Направление курса в градусах, T
  2. Направление курса в градусах, T
  3. Магнитное склонение в градусах, М
  4. Магнитное склонение в градусах, М
  5. Скорость над поверхностью (SOG) в узлах, N = узлы
  6. Скорость над поверхностью (SOG) в узлах, N = узлы
  7. Скорость над поверхностью (SOG) в км/ч, К = км/ч
  8. Скорость над поверхностью (SOG) в км/ч, К = км/ч
  9. Контрольная сумма строки (обязательно)
  10. Контрольная сумма строки (обязательно)

Пример сообщения:
$GPVTG,217.5,T,208.8,M,000.00,N,000.01,K*4C

ZDA – время и дата

   
$GPZDA, hhmmss.s, xx, xx, xxxx, xx, xx *hh <CR><LF>
  1. Время UTC
  2. День (01до 31)
  3. Месяц (01 to 12)
  4. Год
  5. Часовой пояс, смещение от GMT, от 00 до ± 13 часов
  6. Часовой пояс, смещение от GMT, минуты
  7. hh Контрольная сумма строки

Пример сообщения:
$GPZDA,172809,12,07,1996,00,00*45