PDF Печать E-mail
Описание протокола NMEA

Стандарт интерфейса NMEA 0183 определяет требования к электрическим сигналам, протоколу передачи данных и времени, а также специфицирует формат предложений для последовательной шины (4800-бод). Каждая шина может иметь только один передатчик и множество слушателей.

По сути NMEA 0183 – это протокол обмена информацией между навигационными приборами (включая большинство приемников GPS. Этот стандарт был разработан и поддерживается расположенной в США Национальной Морской Ассоциацией Электроники (NMEA)

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

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

Вы можете приобрести полное описание последней версии на официальном сайте NMEA http://www.nmea.org/pub/0183/

Все команды и сообщения NMEA 0183 передаются в формате ASCII . Сообщения, которые относятся к GPS части протокола начинаются с префикса $GP. В последнем поле сообщения может быть указана контрольная сумма текущего сообщения, начинающаяся с разделителя *. Контрольная сумма представляет собой 8 – ми битную последовательность - сумму (исключающее ИЛИ) всех символов сообщения, включая пробелы, расположенных между разделителями $ и *, не включая последних.

Некоторые сообщения NMEA 0183


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

Формат сообщений NMEA 0183

$GPRMC – pекомендуемый минимум GPS / навигационных данных
$GPRMC, Hhmmss.ss, A, 1111.11, A, yyyyy.yy, a, x.x, x.x, ddmmyy, x.x, A *hh

1 2 3 4 5 6 7 8 9 10 11 12
$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. Запад/Восток (W/E)
  7. Скорость над поверхностью (SOG) в узлах
  8. Истинное направление курса в градусах
  9. Дата: dd/mm/yy
  10. Магнитное склонение в градусах
  11. Запад/Восток (W/E)
  12. Контрольная сумма строки (обязательно)
Пример:
Сигнал не распознан: $GPRMC,235947.000,V,0000.0000,N,00000.0000,E,,,041299,,*1D
Сигнал распознан: $GPRMC,092204.999,A,4250.5589,S,14718.5084,E,0.00,89.68,211200,,*25
$GPGGA - GPS Данные о местоположении
$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 4 5 6 7 8 9 10 11 12 13 14 15
$GPGGA, hhmmss.ss, 1111.11, a, yyyyy.yy, a, x, xx, x.x, xxx, M, x.x, M, x.x, xxxx *hh <CR><LF>
  1. Гринвичское время на момент определения местоположения.
  2. Географическая широта местоположения./li>
  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,235947.000,0000.0000,N,00000.0000,E,0,00,0.0,0.0,M,,,,0000*00
Сигнал распознан: $GPGGA,092204.999,4250.5589,S,14718.5084,E,1,04,24.4,19.7,M,,,,0000*1F
$GPGLL - географическое положение: широта и долгота
$GPGLL, 1111.11, a, yyyyy.yy, a, hhmmss.ss, A *hh
1 2 3 4 5 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,0000.0000,N,00000.0000,E,235947.000,V*2D
Сигнал распознан: $GPGLL,4250.5589,S,14718.5084,E,092204.999,A*2D>

$GPGSA - GPS факторы точности и активные спутники. Это сообщение отображает режим работы GPS приёмника, параметры спутников, используемых при решении навигационной задачи, результаты которой отображены в сообщении $GPGGA и значения факторов точности определения координат.
$GPGSA, a, x, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, x.x, x.x, x.x *hh

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 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,1,,,,,,,,,,,,,0.0,0.0,0.0*30
Сигнал распознан: $GPGSA,A,3,01,20,19,13,,,,,,,,,40.4,24.4,32.2*0A

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

1 2 3 4 5 6 7 8 15 16 17 18 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,1,1,01,21,00,000,*4B
Сигнал распознан: $GPGSV,3,1,10,20,78,331,45,01,59,235,47,22,41,069,,13,32,252,45*70

$GPVTG – истинное направление курса и скорость относительно земли
$GPVTG, x.x, T, x.x, M, x.x, N, x.x, K, i, *hh

1 2 3 4 5 6 7 8 9
$GPVTG, x.x, T, x.x, M, x.x, N, x.x, K, *hh <CR><LF>
  1. Направление курса в градусах (Course)
  2. Направление курса в градусах, T (Reference)
  3. Магнитное склонение в градусах (Course)
  4. Магнитное склонение в градусах, М (Reference)
  5. Скорость над поверхностью (SOG) (Horizontal Speed)
  6. Скорость над поверхностью (SOG), N = узлы (Knots)
  7. Скорость над поверхностью (SOG) (Horizontal Speed)
  8. Скорость над поверхностью (SOG), К = км/ч (Km/h)
  9. Контрольная сумма строки (обязательно) (Checksum)
Пример:
Сигнал распознан: $GPVTG,89.68,T,,M,0.00,N,0.0,K*5F
Сигнал не распознан: $GPVTG,,T,,M,,N,,K*4E

$GPZDA – время и дата
$GPZDA, hhmmss.s, xx, xx, xxxx, xx, xx *hh

1 2 3 4 5 6 7
$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 - Контрольная сумма строки (Checksum)
Пример:
$GPZDA,172809,12,07,1996,00,00*45

Источники:

http://www.nmea.org/pub/0183/
http://en.wikipedia.org/wiki/NMEA