Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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]

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

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

Структура сообщения [ править ]

  • Все передаваемые данные представляют собой печатаемые символы ASCII от 0x20 (пробел) до 0x7e (~)
  • Символы данных - это все указанные выше символы, кроме зарезервированных символов (см. Следующую строку)
  • Зарезервированные символы используются NMEA0183 для следующих целей:
  • Сообщения имеют максимальную длину 82 символа, включая символы $ или! начальный символ и конечный <LF>
  • Начальный символ для каждого сообщения может быть либо $ (для обычных сообщений с разделителями полей), либо! (для сообщений со специальной инкапсуляцией)
  • Следующие пять символов идентифицируют говорящего (два символа) и тип сообщения (три символа).
  • Все последующие поля данных разделены запятыми.
  • Если данные недоступны, соответствующее поле остается пустым (оно не содержит символов перед следующим разделителем - см. Раздел « Образец файла » ниже).
  • Первый символ, следующий сразу за последним символом поля данных, - это звездочка, но она включается только в том случае, если указана контрольная сумма.
  • За звездочкой сразу следует контрольная сумма, представленная в виде двузначного шестнадцатеричного числа. Контрольная сумма является побитовое исключающее ИЛИ из ASCII кодов всех символов между $ и * , не включительно. Согласно официальной спецификации, контрольная сумма является необязательной для большинства предложений данных, но обязательна для RMA, RMB и RMC (среди прочих).
  • <CR> <LF> заканчивает сообщение.

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

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

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

! AIVDM, 1,1`` A, 14eG; o @ 034o8sd <L9i: a; WF> 062D, 0 * 7D

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

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

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

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

  • DeLorme Street Atlas
  • ESRI
  • Гугл Земля
  • Мобильная версия Карт Google [6]
  • gpsd - Демон GPS для Unix
  • JOSM - редактор карт OpenStreetMap
  • MapKing
  • Microsoft MapPoint
  • Улицы и поездки Microsoft
  • NetStumbler
  • OpenCPN - программное обеспечение для навигации с открытым исходным кодом
  • OpenBSD «ы hw.sensors рамки с nmea(4) псевдо-устройства драйвера [7]
  • OpenNTPD через sysctl hw.sensors § API timedelta
  • Рэнд МакНалли StreetFinder

Образец файла [ править ]

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

$ 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», и выводит ее в выходной поток. В примере используется предложение из файла-образца.

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

Статус [ изменить ]

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

См. Также [ править ]

  • Формат обмена GPS
  • ПреобразовательML
  • IEEE 1451
  • IEC 61162
  • NMEA 2000
  • NMEA OneNet

Ссылки [ править ]

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

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

Внешние ссылки [ править ]

  • Национальная ассоциация морской электроники
  • Веб-сайт NMEA, посвященный NMEA 0183
  • Спецификации NMEA в APRS Info