NMEA 0183 - NMEA 0183

NMEA 0183 представляет собой комбинированную электрическую спецификацию и данные для связи между морская электроника Такие как эхолот, сонары, анемометр, гирокомпас, автопилот, Приемники GPS и многие другие виды инструментов. Он был определен и контролируется Национальная ассоциация морской электроники. Он заменяет предыдущий NMEA 0180 и NMEA 0182 стандарты.[1] В морских приложениях для отдыха от него постепенно отказываются в пользу более новых. NMEA 2000 стандарт[нужна цитата ], хотя NMEA0183 остается нормой для коммерческих перевозок.

Используемый электрический стандарт: EIA-422, хотя большая часть оборудования с выходами NMEA-0183 также может управлять одним EIA-232 порт. Хотя стандарт предусматривает изолированные входы и выходы, существуют различные серии оборудования, которые не соответствуют этому требованию.

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

На уровне приложения стандарт также определяет содержимое каждого типа предложения (сообщения), чтобы все слушатели могли точно анализировать сообщения.

Хотя NMEA0183 определяет только транспорт RS422, также существует стандарт де-факто, в котором предложения из NMEA0183 помещаются в UDP дейтаграммы (одно предложение на пакет) и отправленные по IP-сети.

Стандарт NMEA является проприетарным и продается по цене не менее 2000 долларов США (за исключением членов NMEA) по состоянию на сентябрь 2020 года.[2][3] Однако большая часть этого была реконструирована из открытых источников.[4][5]

Последовательная конфигурация (уровень канала передачи данных)

Типичный Скорость передачи4800
Биты данных8
ПаритетНикто
Стоповые биты1
РукопожатиеНикто

Существует вариант стандарта под названием NMEA-0183HS, который определяет скорость передачи 38 400 бод. Это обычно используется АИС устройств.

Структура сообщения

  • Все переданные данные можно распечатать ASCII символы от 0x20 (пробел) до 0x7e (~)
  • Символы данных - это все указанные выше символы, кроме зарезервированных символов (см. Следующую строку)
  • Зарезервированные символы используются NMEA0183 для следующих целей:
ASCIIHexДекабрьИспользовать
<CR>0x0d13Возврат каретки
<LF>0x0a10Перенос строки, конечный разделитель
!0x2133Начало инкапсуляции разделителя предложений
$0x2436Начальный разделитель
*0x2a42Разделитель контрольной суммы
,0x2c44Разделитель полей
\0x5c92Разделитель блока TAG
^0x5e94Разделитель кода для шестнадцатеричного представления символов ISO / IEC 8859-1 (ASCII)
~0x7e126Зарезервированный
  • Сообщения имеют максимальную длину 82 символа, включая символы $ или! начальный символ и конечный
  • Начальный символ для каждого сообщения может быть либо $ (для обычных сообщений с разделителями полей), либо! (для сообщений со специальной инкапсуляцией)
  • Следующие пять символов идентифицируют говорящего (два символа) и тип сообщения (три символа).
  • Все последующие поля данных разделены запятыми.
  • Если данные недоступны, соответствующее поле остается пустым (оно не содержит символа перед следующим разделителем - см. Образец файла раздел ниже).
  • Первый символ, следующий сразу за последним символом поля данных, - это звездочка, но она включается только в том случае, если указана контрольная сумма.
  • За звездочкой сразу следует контрольная сумма представлен как двузначный шестнадцатеричный номер. Контрольная сумма - это побитовое исключающее ИЛИ из ASCII коды всех символов между $ и *, не включительно. Согласно официальной спецификации, контрольная сумма является необязательной для большинства предложений данных, но обязательна для RMA, RMB и RMC (среди прочих).
  • <CR><LF> заканчивает сообщение.

Например, сигнал о прибытии в точку маршрута имеет следующий вид:

$ GPAAM, A, A, 0,10, N, WPTNME * 32

Другой пример сообщений AIS:

! AIVDM, 1,1`` A, 14eG; o @ 034o8sd 062D, 0 * 7D

Расширения поставщика

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

Совместимость программного обеспечения

NMEA 0183 поддерживается различными программами для навигации и картографии. Известные приложения включают:

Образец файла

Образец файла, созданный регистратором GPS Tripmate 850. Этот файл был создан в Leixlip, Графство Килдэр, Ирландия. Рекорд длится две секунды.

$ GPGGA, 092750.000,5321.6802, N, 00630.3372, W, 1,8,1.03,61.7, M, 55.2, M ,, * 76 $ GPGSA, A, 3,10,07,05,02,29,04,08 , 13 ,,,,, 1.72,1.03,1.38 * 0A $ GPGSV, 3,1,11,10,63,137,17,07,61,098,15,05,59,290,20,08,54,157,30 * 70 $ GPGSV , 3,2,11,02,39,223,19,13,28,070,17,26,23,252`` 04,14,186,14 * 79 $ GPGSV, 3,3,11,29,09,301,24,16,09,020, , 36 ,,, * 76 $ GPRMC, 092750.000, A, 5321.6802, N, 00630.3372, W, 0.02,31.66,280511 ,,, A * 43 $ GPGGA, 092751.000,5321.6802, N, 00630.3371, W, 1,8, 1.03,61.7, M, 55.3, M ,, * 75 $ GPGSA, A, 3,10,07,05,02,29,04,08,13 ,,,,, 1.72,1.03,1.38 * 0A $ GPGSV, 3,1,11,10,63,137,17,07,61,098,15,05,59,290,20,08,54,157,30 * 70 $ GPGSV, 3,2,11,02,39,223,16,13,28,070, 17,26,23,252`` 04,14,186,15 * 77 $ GPGSV, 3,3,11,29,09,301,24,16,09,020`` 36`` * 76 $ GPRMC, 092751.000, A, 5321.6802, N , 00630.3371, W, 0,06,31.66,280511``, A * 45

Обратите внимание на некоторые пустые поля, например:

  • GSV В записях, описывающих «видимые» спутники, отсутствует поле SNR (отношение сигнал / шум) для спутника 16 и все данные для спутника 36.
  • GSA запись, в которой перечислены спутники, используемые для определения исправить (положение) и дает DOP исправления содержит 12 полей для номеров спутников, но учитывались только 8 спутников, поэтому 4 поля остаются пустыми.

C реализация генерации контрольной суммы

Контрольная сумма в конце каждого предложения - это XOR всех байтов в предложении, за исключением начального знака доллара. Следующее Код C генерирует контрольную сумму для строки, введенной как «mystring», и выводит ее в выходной поток. В примере используется предложение из файла-образца.

#включают <stdio.h>int контрольная сумма(const char *s) {    int c = 0;    пока (*s)        c ^= *s++;    возвращаться c;}int главный(){    char mystring[] = «BNALF, 1,1,0,, B, W, V ,, 220003,, 0,0, ВИЗУАЛЬНАЯ СИГНАЛИЗАЦИЯ»;    printf("Строка:% s пКонтрольная сумма: 0x% 02X п", mystring, контрольная сумма(mystring));    возвращаться 0;}

Положение дел

NMEA 0183 продолжал поддерживаться отдельно: версия 4.10 была опубликована в начале мая 2012 года, а 12 мая 2012 года была обнаружена ошибка.[8] Пока не ясно, идет ли какое-то активное развитие. Последнее объявление NMEA по этому вопросу старше стандарта V4.10.[9]Есть обновление[10] от 27 ноября 2018 г. по 4.11.2018 г.

Смотрите также

Рекомендации

[11]== Примечания ==

  1. ^ Питер Беннетт (15 сентября 1997 г.). «FAQ по NMEA». Архивировано из оригинал на 2014-02-15. Получено 2013-10-21.
  2. ^ «Публикации и стандарты Национальной ассоциации морской электроники (NMEA) / NMEA 0183». NMEA. Ноябрь 2008 г. Архивировано с оригинал в 2013-10-21. Получено 2013-10-21.
  3. ^ «Национальная ассоциация морской электроники - NMEA». www.nmea.org. Получено 2020-09-24.
  4. ^ Раймонд, Эрик С. (март 2019 г.). "Обнаружение NMEA".
  5. ^ Дейл ДеПрист. «Данные NMEA». Получено 2020-10-20.
  6. ^ «Карты Google для Android». Google. Получено 2013-10-21.
  7. ^ Марк Балмер (2006–2008). "/sys/kern/tty_nmea.c". Перекрестная ссылка BSD. OpenBSD. Сложить резюме.
  8. ^ «ОШИБКА № 0183 120512» (PDF). NMEA. Получено 2013-10-21.
  9. ^ «Обновление стандартов NMEA, март 2012 г.» (PDF). NMEA. Март 2012 г.. Получено 2013-10-21.
  10. ^ «NMEA ИЗУЧАЕТ ОБНОВЛЕННУЮ ВЕРСИЮ NMEA 0183 ДЛЯ НОВЫХ ГЛОБАЛЬНЫХ СПУТНИКОВЫХ СИСТЕМ» (PDF). Ноябрь 2018 г.. Получено 2019-01-30.
  11. ^ «Двунаправленный мультиплексор NMEA 0183 с конвертером SeaTalk». Двунаправленный мультиплексор NMEA 0183 Quark-elec с конвертером SeaTalk.

внешняя ссылка