КОРЗИНА
магазина
8 (499) 500-14-56 | ПН. - ПТ. 12:00-18:00
ЛЕСНОРЯДСКИЙ ПЕРЕУЛОК, 18С2, БЦ "ДМ-ПРЕСС"

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

Исходники изображение:

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

Сообщения NMEA передаваемые GPS-модулем могут состоять из одной или нескольких строк.

Состав строк:

  • Каждая строка начинается символом '$'.
  • Далее следуют два символа источника данных и три символа идентификатора строки.
  • После идентификатора следуют данные состоящие из параметров, разделённые запятыми.
  • Завершают строку символ '*', два символа контрольной суммы и символы "\r\n".

Источник данных:

Источник данных представлен двумя символами которые следуют за символом '$'.

  • GP - информация получена от спутников GPS (США).
  • GL - информация получена от спутников Глонасс (Россия).
  • GA - информация получена от спутников Galileo (Европа).
  • BD - информация получена от спутников Beidou (Китай).
  • GQ - информация получена от спутников QZSS (Япония).
  • GN - информация получена от спутников разных навигационных систем.

Идентификатор строки:

Идентификатор строки представлен тремя символами следующими за источником данных.

  • GGA - Данные о последнем зафиксированном местоположении.
  • GLL - Географические координаты.
  • GSA - Информация об активных спутниках (участвующих в позиционировании).
  • GSV - Информация о всех наблюдаемых спутниках.
  • RMC - Рекомендуемый минимум навигационных данных.
  • VTG - Скорость и курс относительно земли.
  • ZDA - Дата и время.
  • DHV - Информация о скорости движения GNSS приемника.
  • GST - Статистика ошибок позиционирования.
  • TXT - Текстовое сообщение.

Данные:

Данные состоят из параметров, разделённых запятыми. Тип и состав параметров зависит от идентификатора строки. Ниже рассмотрены параметры строк с разными идентификаторами.

Контрольная сумма:

Контрольная сумма представлена двумя символами следующими за символом '*'.

Контрольная сумма представляет из себя шестнадцатиричное представление результата операции XOR с байтами всех символов строки расположенных между '$' и '*', не включительно.

Состав сообщений:

Сообщения состоят из одной и более строк. Количество строк и их состав зависят от настроек GPS модуля.

При пользовании библиотекой iarduino_GPS_ATGM336, состав сообщений можно настроить функцией composition(), указав ей идентификаторы тех строк, которые требуется включить в состав сообщения отправляемого Trema GPS модулем ATGM336H.

Пример сообщений NMEA 0183:

Пример сообщения NMEA 0183 версии 4.1:

$GNGGA,102030.000,5546.95900,N,03740.69200,E,1,08,2.0,142.0,M,0.0,M,,*
$GNGLL,5546.95900,N,03740.69200,E,102030.000,A,A*
$GNGSA,A,3,10,16,18,20,26,27,,,,,,,4.8,2.0,4.3,1*
$GNGSA,A,3,19,  ,  ,  ,  ,  ,,,,,,,4.8,2.0,4.3,4*
$GNGSA,A,3,82,  ,  ,  ,  ,  ,,,,,,,4.8,2.0,4.3,2*
$GPGSV,3,1,12,07,08,343,,08,07,304,,10,28,195,42,13,20,054,,0*
$GPGSV,3,2,12,15,27,087,,16,47,262,39,18,66,082,23,20,58,174,23,0*
$GPGSV,3,3,12,21,75,089,23,26,33,222,31,27,38,298,40,29,15,127,,0*
$BDGSV,1,1,01,19,29,174,28,0*
$GLGSV,3,1,09,74,08,001,34,66,55,096,,82,69,318,21,73,25,326,,0*
$GLGSV,3,2,09,80,20,258,,65,18,025,,83,21,292,,81,51,092,,0*
$GLGSV,3,3,09,67,26,161,,0*
$GNRMC,102030.000,A,5546.95900,N,03740.69200,E,0.12,49.75,200220,,,A,V*
$GNVTG,49.75,T,,M,0.12,N,0.22,K,A*
$GNZDA,102030.000,20,02,2020,00,00*
$GPTXT,01,01,01,ANTENNA OK*
$GNDHV,102030.000,0.03,0.000,0.000,0.000,0.00,,,,,M*
$GNGST,102030.000,6.9,,,,5.6,9.2,10.1*
$GPTXT,01,01,02,MS=7,7,061A8200,33,0,00000000,20,2,00028000*

Отличия сообщений версий 2.0 и 4.0 от 4.1 рассмотрены в описаниях параметров строк.

GGA:

Строка с идентификатором GGA содержит данные о последнем местоположении.

Пример строки GGA:

$GNGGA,102030.000,5546.95900,N,03740.69200,E,1,08,2.7,142.0,M,0.0,M,,*FF/r/n
       ^          ^          ^ ^           ^ ^ ^  ^   ^     ^ ^   ^^^
       1          2          3 4           5 6 7  8   9     0 1   234

Назначение параметров строки GGA:

  • 1 - Время UTC в формате "ЧЧММСС.ССС". В примере "102030.000" = 10ч., 20м., 30.000 сек.
  • 2 - Широта в формате "ГГММ.МММММ". В примере "5546.95900" = 55°46.959' = 55.78265°.
  • 3 - Направление широты: 'N'-север / 'S'-юг. В примере 'N' - север.
  • 4 - Долгота в формате "ГГГММ.МММММ". В примере "03740.69200" = 37°40.692' = 37.6782°.
  • 5 - Направление долготы: 'E'-восток / 'W'-запад. В примере 'E' - восток.
  • 6 - Способ вычисления координат. В примере '1' - автономно.
    • '0' - недоступно.
    • '1' - автономно.
    • '2' - дифференциально.
    • '3' - PPS.
    • '4' - фиксированный RTK.
    • '5' - не фиксированный RTK.
    • '6' - экстраполяция.
    • '7' - фиксированные координаты.
    • '8' - режим симуляции.
  • 7 - Количество активных спутников, от "00" до "12". В примере "08".
  • 8 - Горизонтальный геометрический фактор ухудшения точности (HDOP). В примере "2.7".
  • 9,10 - Высота над уровнем моря (geoid), единицы измерения высоты. В примере "142.0,M".
  • 11,12 - Разница между эллипсоидом земли и уровнем моря (geoid), единицы измерения.
  • 13 - Количество секунд прошедших с получения последней DGPS поправки (SC104).
  • 14 - ID базовой станции предоставляющей DGPS поправки (если включено DGPS).

Примечание: В примере GPS-модуль не отправил значение параметров 13 и 14.

GLL:

Строка с идентификатором GLL содержит географические координаты.

Пример строки GLL:

$GNGLL,5546.95900,N,03740.69200,E,102030.000,A*FF/r/n   - версия 2.2
$GNGLL,5546.95900,N,03740.69200,E,102030.000,A,A*FF/r/n - версия 4.0 и 4.1
       ^          ^ ^           ^ ^          ^ ^
       1          2 3           4 5          6 7

Назначение параметров строки GLL:

  • 1 - Широта в формате "ГГММ.МММММ". В примере "5546.95900" = 55°46.959' = 55.78265°.
  • 2 - Направление широты: 'N'-север / 'S'-юг. В примере 'N'-север.
  • 3 - Долгота в формате "ГГГММ.МММММ". В примере "03740.69200" = 37°40.692' = 37.6782°.
  • 4 - Направление долготы: 'E'-восток / 'W'-запад. В примере 'E'-восток.
  • 5 - Время UTC в формате "ЧЧММСС.ССС". В примере "102030.000" = 10ч., 20м., 30.000 сек.
  • 6 - Достоверность полученных координат. В примере 'A' - данные достоверны.
    • 'A' - данные достоверны.
    • 'V' - ошибочные данные.
  • 7 - Способ вычисления координат. В примере 'A' - автономный.
    • 'A' - автономный.
    • 'D' - дифференциальный.
    • 'E' - аппроксимация.
    • 'M' - фиксированные данные.
    • 'N' - недостоверные данные.

Примечание: В сообщениях NMEA 0183 версии 2.2 строка содержит только 6 параметров.

GSA:

Строка с идентификатором GSA содержит информацию об активных спутниках.

Пример строки GSA:

$GPGSA,A,3,10,16,18,20,26,27,,,,,,,4.8,2.0,4.3*FF/r/n   - версия 2.2 и 4.0
$GNGSA,A,3,10,16,18,20,26,27,,,,,,,4.8,2.0,4.3,1*FF/r/n - версия 4.1
       ^ ^ ^  ^  ^  ^  ^  ^ ^^^^^^ ^   ^   ^   ^
       1 2 3  4  5  6  7  8 901234 5   6   7   8

Назначение параметров строки GSA:

  • 1 - Режим выбора формата 2D/3D: 'A'-автоматический / 'M'-ручной. В примере 'A' - автоматич.
  • 2 - Режим выбранного формата '1'-нет решения / '2'-2D / '3'-3D. В примере '3' - 3D.
  • 3-14 - ID активного спутника. В примере указаны ID 6 спутников: "10", "16", "18", "20", "26", "27".
  • 15 - Пространственный геометрический фактор ухудшения точности (PDOP). В примере "4.8".
  • 16 - Горизонтальный геометрический фактор ухудшения точности (HDOP). В примере "2.0".
  • 17 - Вертикальный геометрический фактор ухудшения точности (VDOP). В примере "4.3".
  • 18 - Номер навигационной системы (1-GPS, 2-Glonass, 3-Galileo, 4-Beidu). В примере '1'.

Примечание: В одном сообщении NMEA 0183 отправляется сразу несколько строк GSA, по одной для каждой спутниковой навигационной системы используемой модулем.

В сообщениях NMEA 0183 версии 2.2 и 4.0 строка содержит только 17 параметров, а источник данных (два первых символа после '$') указывает на конкретную спутниковую навигационную систему "GP", "GL", "GA", "BD", или "GQ", в отличии от версии 4.1, где источник данных для любой строки GSA указан как "GN", а спутниковая навигационная система определена в 18 параметре.

GSV:

Строка с идентификатором GSV содержит информацию о всех наблюдаемых спутниках.

Пример строки GSV:

Пример строки в которой присутствует информация о 4 спутниках (максимальное количество):

$GLGSV,3,1,09,74,09,089,06,66,55,095,,82,70,320,18,73,26,325,23*FF/r/n   - версия 2.2 и 4.0
$GLGSV,3,1,09,74,09,089,06,66,55,095,,82,70,320,18,73,26,325,23,0*FF/r/n - версия 4.1
       ^ ^ ^  ^  ^  ^   ^  ^  ^  ^  ^ ^  ^  ^   ^  ^  ^  ^   ^  ^
       1 2 3  4  5  6   7  4  5  6  7 4  5  6   7  4  5  6   7  8

Пример строки в которой присутствует информация только о 2 спутниках:

$GLGSV,3,3,09,67,26,161,23,82,70,320,18*FF/r/n   - версия 2.2 и 4.0
$GLGSV,3,3,09,67,26,161,23,82,70,320,18,0*FF/r/n - версия 4.1
       ^ ^ ^  ^  ^  ^   ^  ^  ^  ^   ^  ^
       1 2 3  4  5  6   7  4  5  6   7  8

Назначение параметров строки GSV:

  • 1 - Количество выводимых сообщений GSV для данной навигационной системы. В примере '3'.
  • 2 - Номер сообщения GSV для данной навигационной системы. В 1 примере '1', во втором '3'.
  • 3 - Количество наблюдаемых спутников указанной навигационной системы. В примере "09".
  • 4,5,6,7 - Данные о спутнике. В одной строке может быть от 0 до 4 блоков данных.
    Каждый блок данных состоит из 4 параметров:
    • ID спутника (от 1 до 255). ID не может быть равен '0'.
    • Угол возвышения спутника относительно модуля, в градусах ("00"-горизонт / "90"-зенит).
    • Азимут положения спутника относительно модуля, в градусах ("000" - "360").
    • Уровень сигнала SNR (отношение сигнал/шум) в дБ ("00" - "99"),
  • 8 - Дополнительный параметр, присутствует в версии 4.1 и выше, значение всегда равно '0'.

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

Источник данных (два первых символа после '$') указывает на спутниковую навигационную систему "GP", "GL", "GA", "BD", или "GQ", к которой относятся данные о спутниках в строке. Для каждой навигационной системы в одном сообщении может быть указано несколько строк, их количество указано в первом параметре строки, а номер строки указан во втором параметре.

В сообщениях NMEA 0183 версии 4.1 добавлен один последний дополнительный параметр, значение которого всегда равно 0.

RMC:

Строка с идентификатором RMC содержит рекомендуемый минимум навигационных данных.

Пример строки RMC:

$GNRMC,102030.000,A,5546.95900,N,03740.69200,E,0.12,49.75,200220,,*FF/r/n     - версия 2.2
$GNRMC,102030.000,A,5546.95900,N,03740.69200,E,0.12,49.75,200220,,,A*FF/r/n   - версия 4.0
$GNRMC,102030.000,A,5546.95900,N,03740.69200,E,0.12,49.75,200220,,,A,V*FF/r/n - версия 4.1
       ^          ^ ^          ^ ^           ^ ^    ^     ^     ^^ ^ ^
       1          2 3          4 5           6 7    8     9     01 2 3

Назначение параметров строки RMC:

  • 1 - Время UTC в формате "ЧЧММСС.ССС". В примере "102030.000" = 10ч., 20м., 30.000 сек.
  • 2 - Достоверность полученных координат. В примере 'A' - данные достоверны.
    • 'A' - данные достоверны.
    • 'V' - ошибочные данные.
  • 3 - Широта в формате "ГГММ.МММММ". В примере "5546.95900" = 55°46.959' = 55.78265°.
  • 4 - Направление широты: 'N'-север / 'S'-юг. В примере 'N'-север.
  • 5 - Долгота в формате "ГГГММ.МММММ". В примере "03740.69200" = 37°40.692' = 37.6782°.
  • 6 - Направление долготы: 'E'-восток / 'W'-запад. В примере 'E'-восток.
  • 7 - Скорость в узлах. В примере "0.12" = 0.222 км/ч.
  • 8 - Курс на истинный полюс в градусах. В примере "49.75" = 49.75°.
  • 9 - Дата в формате "ДДММГГ". В примере "200220" = 20.02.20г.
  • 10 - Магнитное склонение в градусах. Отсутствует в примере.
  • 11 - Направление магнитного склонения: 'E'-вычесть / 'W'-прибавить. Отсутствует в примере.
  • 12 - Способ вычисления координат (отсутствует в версии 2.2). В примере 'A' - автономный.
    • 'A' - автономный.
    • 'D' - дифференциальный.
    • 'E' - аппроксимация.
    • 'M' - фиксированные данные.
    • 'N' - недостоверные данные.
  • 13 - Статус навигации (отсутствует в версиях 2.2 и 4.0). В примере 'V'.

Примечание: В сообщениях NMEA 0183 версии 2.2 строка содержит только 11 параметров, а в версии 4.0 - 12 параметров.

VTG:

Строка с идентификатором VTG содержит скорость и курс относительно земли.

Пример строки VTG:

$GNVTG,49.75,T,,M,0.12,N,0.22,K*FF/r/n   - версия 2.2
$GNVTG,49.75,T,,M,0.12,N,0.22,K,A*FF/r/n - версия 4.0 и 4.1
       ^     ^^ ^ ^    ^ ^    ^ ^
       1     23 4 5    6 7    8 9

Назначение параметров строки VTG:

  • 1 - Курс на истинный полюс в градусах. В примере "49.75" = 49.75°.
  • 2 - Флаг достоверности курса: 'T'-True / 'F'-False. В примере 'T'-True.
  • 3 - Магнитное склонение в градусах. Отсутствует в примере.
  • 4 - 'M'-Магнитный.
  • 5,6 - Скорость, единицы измерения скорости. В примере "0.12,N" = 0.12 узлов.
  • 7,8 - Скорость, единицы измерения скорости. В примере "0.12,K" = 0.22 км/ч.
  • 9 - Способ вычисления скорости и курса (отсутствует в верс. 2.2). В примере 'A' - автономный.
    • 'A' - автономный.
    • 'D' - дифференциальный.
    • 'E' - аппроксимация.
    • 'M' - фиксированные данные.
    • 'N' - недостоверные данные.

Примечание: В сообщениях NMEA 0183 версии 2.2 строка содержит только 8 параметров.

ZDA:

Строка с идентификатором ZDA содержит дату и время.

Пример строки ZDA:

$GNZDA,102030.000,20,02,2020,00,00*FF/r/n
       ^          ^  ^  ^    ^  ^
       1          2  3  4    5  6

Назначение параметров строки ZDA:

  • 1 - Время UTC в формате "ЧЧММСС.ССС". В примере "102030.000" = 10ч., 20м., 30.000 сек.
  • 2 - День в формате "ДД". В примере "20" = 20 день месяца.
  • 3 - Месяц в формате "ММ". В примере "02" = февраль.
  • 4 - Год в формате "ГГГГ". В примере "2020" = 2020 год.
  • 5 - Часовой пояс - часы в формате "ЧЧ". В примере "00" - без сдвига часов от UTC.
  • 6 - Часовой пояс - минуты в формате "ММ". В примере "00" - без сдвига минут от UTC.

DHV:

Строка с идентификатором DHV содержит информацию о скорости движения приемника.

Пример строки DHV:

$GNDHV,102030.000,0.03,-0.179,0.105,0.071,0.04,,,,,M*FF/r/n
       ^          ^    ^      ^     ^     ^   ^^^^ ^
       1          2    3      4     5     6   7890 1

Назначение параметров строки DHV:

  • 1 - Время UTC в формате "ЧЧММСС.ССС". В примере "102030.000" = 10ч., 20м., 30.000 сек.
  • 2 - Скорость 3D в м/с. В примере "0.08".
  • 3 - Скорость ECEF-X в м/с. В примере "-0.179".
  • 4 - Скорость ECEF-Y в м/с. В примере "0.105".
  • 5 - Скорость ECEF-Z в м/с. В примере "0.071".
  • 6 - Скорость в м/с. В примере "0.04".

GST:

Строка с идентификатором GST содержит статистику ошибок позиционирования.

Пример строки GST:

$GNGST,102030.000,6.9,,,,5.6,9.2,10.1*FF/r/n
       ^          ^  ^^^ ^   ^   ^
       1          2  345 6   7   8

Назначение параметров строки GST:

  • 1 - Время UTC в формате "ЧЧММСС.ССС". В примере "102030.000" = 10ч., 20м., 30.000 сек.
  • 2 - Среднее квадратическое значение (RMS) стандартной девиации диапазонов в метрах.
  • 3 - Ошибка элипса полуоси semi-major в метрах. Отсутствует в примере.
  • 4 - Ошибка элипса полуоси semi-minor в метрах. Отсутствует в примере.
  • 5 - Ошибка ориентации элипса полуоси semi-major в градусах. Отсутствует в примере.
  • 6 - Ошибка широты в метрах. В примере "5.6" = ошибка широты до 5.6 м.
  • 7 - Ошибка долготы в метрах. В примере "9.2" = ошибка долготы до 9.2 м.
  • 8 - Ошибка высоты в метрах. В примере "10.1" = ошибка высоты до 10.1 м.

TXT:

Строка с идентификатором TXT содержит текстовое сообщение.

Пример строки TXT:

$GPTXT,01,01,01,ANTENNA OK*FF/r/n
       ^  ^  ^  ^
       1  2  3  4

Назначение параметров строки TXT:

  • 1 - Количество строк с текстом данного текстового сообщения. В примере "01" = 1 строка.
  • 2 - Номер строки с текстом данного текстового сообщения. В примере "01" = 1 строка.
  • 3 - Идентификатор типа сообщения. В примере "01" - Предупреждение.
    • "00" - ошибка.
    • "01" - предупреждение.
    • "02" - уведомление.
    • "07" - пользовательское.
  • 4 - Текстовое сообщение. В примере "ANTENNA OK".

Примечание: Текстовое сообщение может содержать пробелы и запятые.

Ссылки:




Обсуждение

Гарантии и возврат Используя сайт Вы соглашаетесь с условями