НМЕА 0183
NMEA 0183 — это комбинированная электрическая спецификация и спецификация данных для связи между морской электроникой, такой как эхолот , гидролокаторы , анемометр , гирокомпас , автопилот , GPS-приемники и многие другие типы инструментов. Он определен и контролируется Национальной ассоциацией морской электроники (NMEA). Он заменяет более ранние стандарты NMEA 0180 и NMEA 0182 . [1] В морских приложениях для отдыха он постепенно заменяется новым стандартом NMEA 2000 . [2] [3] хотя NMEA 0183 остается нормой в коммерческом судоходстве.
Подробности
[ редактировать ]Используемый электрический стандарт — EIA-422 , также известный как RS-422, хотя большая часть оборудования с выходами NMEA-0183 также может управлять одним портом EIA-232 . Хотя стандарт требует изолированных входов и выходов, существуют различные серии оборудования, которые не соответствуют этому требованию.
Стандарт NMEA 0183 использует простой ASCII , протокол последовательной связи который определяет, как данные передаются в «предложении» от одного «говорящего» нескольким «слушателям» одновременно. Благодаря использованию промежуточных расширителей говорящий может вести однонаправленный разговор с практически неограниченным количеством слушателей, а при использовании мультиплексоров несколько датчиков могут общаться с одним компьютерным портом.
На уровне приложения стандарт также определяет содержимое каждого типа предложения (сообщения), чтобы все слушатели могли точно анализировать сообщения.
Хотя NMEA 0183 определяет только транспорт RS-422, существует также фактический стандарт, в котором предложения NMEA 0183 помещаются в дейтаграммы UDP (одно предложение на пакет) и передаются по IP-сети.
Стандарт NMEA является запатентованным и по состоянию на сентябрь 2020 года продается по цене не менее 2000 долларов США (за исключением членов NMEA). [4] [5] Однако большая часть информации была переработана из общедоступных источников. [6] [7]
настройки UART
[ редактировать ]Типичная скорость передачи данных | 4800 |
Биты данных | 8 |
Паритет | Никто |
Стоп-биты | 1 |
Рукопожатие | Никто |
Существует вариант стандарта NMEA-0183HS, который определяет скорость передачи данных 38 400 бод. Обычно это используется устройствами AIS .
Структура сообщения
[ редактировать ]- Все передаваемые данные представляют собой печатные символы ASCII от 0x20 (пробел) до 0x7e (~).
- Символами данных являются все вышеперечисленные символы, кроме зарезервированных символов (см. следующую строку).
- Зарезервированные символы используются NMEA0183 для следующих целей:
ASCII-код | Шестигранник | декабрь | Использовать |
---|---|---|---|
<CR> | 0x0d | 13 | Возврат каретки |
<ЛФ> | 0x0a | 10 | Перевод строки, ограничитель конца |
! | 0x21 | 33 | Начало разделителя предложений инкапсуляции |
$ | 0x24 | 36 | Начальный разделитель |
* | 0x2a | 42 | Разделитель контрольной суммы |
, | 0x2c | 44 | Разделитель полей |
\ | 0x5c | 92 | Разделитель блоков TAG |
^ | 0x5e | 94 | Разделитель кода для шестнадцатеричного представления символов ISO/IEC 8859-1 (ASCII). |
~ | 0x7e | 126 | Сдержанный |
- Сообщения имеют максимальную длину 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
Формат предложения NMEA
[ редактировать ]Основной идентификатор говорящего включает в себя: [8] [9]
Сообщение NMEA в основном включает в себя следующие «предложения» в сообщении NMEA: [10]
Предложение | Описание |
---|---|
$Talker ID+GGA | Фиксированные данные глобальной системы позиционирования |
$Talker ID+GLL | Географическое положение — широта и долгота |
$Talker ID+GSA | GNSS DOP и активные спутники |
$Talker ID+GSV | Спутники GNSS в поле зрения |
$Talker ID+RMC | Рекомендуемый минимум конкретных данных GPS |
$Talker ID+VTG | Курс относительно земли и путевая скорость |
Например, предложение для фиксированных данных глобальной системы позиционирования для GPS должно быть «$GPGGA».
Расширения поставщиков
[ редактировать ]Большинство производителей GPS включают в свои продукты специальные сообщения в дополнение к стандартному набору NMEA для целей обслуживания и диагностики. Расширенные сообщения начинаются с «$P». Эти расширенные сообщения не стандартизированы.
Совместимость программного обеспечения
[ редактировать ]NMEA 0183 поддерживается различным навигационным и картографическим программным обеспечением. Известные приложения включают в себя:
- Infrakit SURVEY
- ДеЛорма Атлас улиц
- ЭСРИ
- Google Планета Земля
- Карты Google для мобильных устройств [11]
- gpsd — Unix GPS-демон
- JOSM - Редактор карт OpenStreetMap
- КартаКинг
- Microsoft MapPoint
- Microsoft Улицы и поездки
- NetStumbler
- OpenCPN — навигационное программное обеспечение с открытым исходным кодом.
- OpenBSD Фреймворк hw.sensors с
nmea(4)
псевдоустройства драйвер [12] - OpenNTPD через sysctl timedelta hw.sensors § API
- Рэнд МакНэлли StreetFinder
- НаблюдательVIEW [13]
- QGIS [14]
Образец файла
[ редактировать ]Пример файла, созданного 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 поля остаются пустыми.
Статус
[ редактировать ]NMEA 0183 продолжал поддерживаться отдельно: версия 4.10 была опубликована в начале мая 2012 года, а 12 мая 2012 года была отмечена ошибка. [15] 27 ноября 2018 г. было выпущено обновление до версии 4.11, которое поддерживает глобальные навигационные спутниковые системы, отличные от GPS . [16]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Питер Беннетт (15 сентября 1997 г.). «Часто задаваемые вопросы по NMEA» . Архивировано из оригинала 15 февраля 2014 г. Проверено 21 октября 2013 г.
- ^ «NMEA 0183 против NMEA 2000» . Ноябрь 2018 г. Архивировано из оригинала 19 августа 2013 г. Проверено 20 октября 2020 г.
- ^ Спитцер, Стив. (май 2009 г.). «Информационный документ NMEA 2000» (PDF) . Архивировано из оригинала (PDF) 02 марта 2021 г. Проверено 20 октября 2020 г.
- ^ «Публикации и стандарты Национальной ассоциации морской электроники (NMEA) / NMEA 0183» . НМЕА. Ноябрь 2008 г. Архивировано из оригинала 21 октября 2013 г. Проверено 21 октября 2013 г.
- ^ «Национальная ассоциация морской электроники — NMEA» . www.nmea.org . Архивировано из оригинала 31 марта 2022 г. Проверено 24 сентября 2020 г.
- ^ Раймонд, Эрик С. (март 2019 г.). «Раскрытие информации о NMEA» .
- ^ Дейл ДеПрист. «Данные NMEA» . Архивировано из оригинала 20 октября 2020 г. Проверено 20 октября 2020 г.
- ^ Эрик С. Рэймонд (26 мая 2024 г.). «Раскрытие информации о NMEA — идентификаторы говорящих» . Проверено 31 мая 2024 г.
- ^ «NMEA 0183 — Стандарт взаимодействия морских электронных устройств — Мнемоника идентификатора говорящего» (PDF) . 31 января 2020 г. Архивировано из оригинала (PDF) 2 сентября 2022 г.
- ^ Дональд Чой. «Введение в GPS-данные NMEA и RTCM» . п. 15 . Проверено 31 мая 2024 г.
- ^ «Карты Google для Android» . Проверено 21 октября 2013 г.
- ^ Марк Балмер (2006–2008). "/sys/kern/tty_nmea.c" . Перекрестная ссылка BSD . OpenBSD .
- «nmea — датчик дельты времени NMEA 0183». Сервер страниц руководства OpenBSD .
- ^ «ObserVIEW — бесплатное программное обеспечение для анализа вибрации» . Проверено 18 октября 2022 г.
- ^ «Документация QGIS — GPS-слежение в реальном времени» . Проверено 6 марта 2024 г.
- ^ «ОШИБКА № 0183 120512» (PDF) . НМЕА. Архивировано из оригинала (PDF) 17 апреля 2016 г. Проверено 21 октября 2013 г.
- ^ «NMEA ПУБЛИКУЕТ ОБНОВЛЕННУЮ ВЕРСИЮ NMEA 0183 ДЛЯ НОВЫХ ГЛОБАЛЬНЫХ СПУТНИКОВЫХ СИСТЕМ» (PDF) . Ноябрь 2018 г. Архивировано из оригинала (PDF) 31 января 2019 г. Проверено 30 января 2019 г.