NMEA 0183 - NMEA 0183

NMEA 0183 je kombinovaná elektrická a datová specifikace pro komunikaci mezi námořní elektronika jako echolot, sonary, anemometr, kompas, autopilot, GPS přijímače a mnoho dalších typů nástrojů. Byl definován a je řízen Národní asociace námořní elektroniky. Nahrazuje dřívější NMEA 0180 a NMEA 0182 standardy.[1] V námořních aplikacích pro volný čas je pomalu vyřazován ve prospěch novějších NMEA 2000 Standard[Citace je zapotřebí ], ačkoli NMEA0183 zůstává normou v komerční přepravě.

Použitý elektrický standard je EIA-422, ačkoli většina hardwaru s výstupy NMEA-0183 je také schopna řídit jeden EIA-232 přístav. Ačkoli standardní volání vyžaduje izolované vstupy a výstupy, existují různé série hardwaru, které tento požadavek nesplňují.

Standard NMEA 0183 používá jednoduchý ASCII, sériová komunikace protokol, který definuje, jak jsou data přenášena ve „větě“ od jednoho „mluvčího“ k více „posluchačům“ najednou. Díky použití zprostředkujících expandérů může řečník vést jednosměrnou konverzaci s téměř neomezeným počtem posluchačů a používat multiplexery, více senzorů může mluvit na jeden port počítače.

Na aplikační vrstvě standard také definuje obsah každého typu věty (zprávy), aby všichni posluchači mohli přesně analyzovat zprávy.

Zatímco NMEA0183 definuje pouze přenos RS422, existuje také de facto standard, ve kterém jsou věty z NMEA0183 umístěny do UDP datagramy (jedna věta na paket) a odeslané přes síť IP.

Standard NMEA je vlastnický a od září 2020 se prodává za minimálně 2 000 USD (kromě členů NMEA).[2][3] Většina z nich však byla zpětně připravena z veřejných zdrojů.[4][5]

Sériová konfigurace (vrstva datového spojení)

Typický Přenosová rychlost4800
Datové bity8
ParitaŽádný
Stop bity1
Potřesení rukouŽádný

Existuje variace standardu zvaného NMEA-0183HS, která určuje přenosovou rychlost 38 400. Toto obecně používá AIS zařízení.

Struktura zprávy

  • Všechna přenášená data lze tisknout ASCII znaky mezi 0x20 (mezera) až 0x7e (~)
  • Datové znaky jsou všechny výše uvedené znaky kromě vyhrazených znaků (viz další řádek)
  • Rezervované znaky používá NMEA0183 pro následující použití:
ASCIIHexProsinecPoužití
<CR>0x0d13Návrat vozíku
<LF>0x0a10Posuv řádku, oddělovač konce
!0x2133Začátek oddělovače vět zapouzdření
$0x2436Spustit oddělovač
*0x2a42Oddělovač kontrolního součtu
,0x2c44Oddělovač pole
\0x5c92Oddělovač bloku TAG
^0x5e94Oddělovač kódu pro HEX reprezentaci znaků ISO / IEC 8859-1 (ASCII)
~0x7e126Rezervováno
  • Zprávy mají maximální délku 82 znaků, včetně $ nebo! počáteční znak a koncový
  • Počáteční znak pro každou zprávu může být buď $ (u konvenčních zpráv oddělených polem) nebo! (pro zprávy, které mají speciální zapouzdření)
  • Dalších pět znaků identifikuje mluvčího (dva znaky) a typ zprávy (tři znaky).
  • Všechna následující datová pole jsou oddělena čárkami.
  • Pokud data nejsou k dispozici, příslušné pole zůstane prázdné (před dalším oddělovačem neobsahuje žádný znak - viz Ukázkový soubor níže).
  • První znak, který bezprostředně následuje za posledním znakem datového pole, je hvězdička, ale je zahrnut, pouze pokud je zadán kontrolní součet.
  • Za hvězdičkou bezprostředně následuje a kontrolní součet reprezentován jako dvouciferný hexadecimální číslo. Kontrolní součet je bitový exkluzivní OR z ASCII kódy všech znaků mezi $ a *, ne včetně. Podle oficiální specifikace je kontrolní součet volitelný pro většinu datových vět, ale je povinný pro RMA, RMB a RMC (mimo jiné).
  • <CR><LF> ukončí zprávu.

Jako příklad má alarm příjezdu do waypointu formu:

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

Dalším příkladem zpráv AIS je:

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

Prodávající rozšíření

Většina výrobců GPS zahrnuje kromě standardních NMEA nastavených ve svých produktech také speciální zprávy pro účely údržby a diagnostiky. Rozšířené zprávy začínají „$ P“. Tyto rozšířené zprávy nejsou standardizovány.

Kompatibilita softwaru

NMEA 0183 je podporován různými navigačními a mapovacími programy. Pozoruhodné aplikace zahrnují:

Ukázkový soubor

Ukázkový soubor vytvořený záznamníkem GPS Tripmate 850. Tento soubor byl vytvořen v Leixlip, Hrabství Kildare, Irsko. Záznam trvá dvě sekundy.

$ 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

Všimněte si některých prázdných polí, například:

  • GSV záznamy, které popisují „viditelné“ satelity, postrádají pole SNR (odstup signálu od šumu) pro satelit 16 a všechna data pro satelit 36.
  • GSA záznam, který uvádí seznam satelitů použitých k určení a opravit (poloha) a dává DOP opravy obsahuje 12 polí pro čísla satelitů, ale bylo vzato v úvahu pouze 8 satelitů - takže 4 pole zůstávají prázdná.

C implementace generování kontrolního součtu

Kontrolní součet na konci každé věty je XOR všech bajtů ve větě, s výjimkou počátečního znaku dolaru. Následující Kód C. generuje kontrolní součet pro řetězec zadaný jako "mystring" a vytiskne jej do výstupního proudu. V příkladu je použita věta ze ukázkového souboru.

#zahrnout <stdio.h>int kontrolní součet(konst char *s) {    int C = 0;    zatímco (*s)        C ^= *s++;    vrátit se C;}int hlavní(){    char mystring[] = „BNALF, 1,1,0,, B, W, V ,, 220003,, 0,0, VISUAL ALARM“;    printf("Řetězec:% s nKontrolní součet: 0x% 02X n", mystring, kontrolní součet(mystring));    vrátit se 0;}

Postavení

Správa NMEA 0183 byla nadále udržována samostatně: V4.10 byla zveřejněna počátkem května 2012 a oprava byla zaznamenána 12. května 2012.[8] Není jasné, zda existuje nějaký aktivní vývoj. Nejnovější oznámení NMEA na toto téma je starší než standard V4.10.[9]Existuje aktualizace[10] ze dne 27. listopadu 2018 do 4.11.

Viz také

Reference

[11]== Poznámky ==

  1. ^ Peter Bennett (15. září 1997). „Nejčastější dotazy k NMEA“. Archivovány od originál dne 2014-02-15. Citováno 2013-10-21.
  2. ^ „Publikace a standardy od National Marine Electronics Association (NMEA) / NMEA 0183“. NMEA. Listopad 2008. Archivovány od originál dne 21.10.2013. Citováno 2013-10-21.
  3. ^ „National Marine Electronics Association - NMEA“. www.nmea.org. Citováno 2020-09-24.
  4. ^ Raymond, Eric S. (březen 2019). „Odhalení NMEA“.
  5. ^ Dale DePriest. „Data NMEA“. Citováno 2020-10-20.
  6. ^ „Mapy Google pro Android“. Google. Citováno 2013-10-21.
  7. ^ Marc Balmer (2006–2008). „/sys/kern/tty_nmea.c“. Křížový odkaz BSD. OpenBSD. Shrnutí ležel.
  8. ^ „ERRATA # 0183 120512“ (PDF). NMEA. Citováno 2013-10-21.
  9. ^ „Aktualizace standardů NMEA, březen 2012“ (PDF). NMEA. Březen 2012. Citováno 2013-10-21.
  10. ^ „NMEA ZVEŘEJŇUJE AKTUALIZOVANOU VERZE NMEA 0183 PRO NOVÉ GLOBÁLNÍ SATELITNÍ SYSTÉMY“ (PDF). Listopadu 2018. Citováno 2019-01-30.
  11. ^ „Obousměrný multiplexer NMEA 0183 s převodníkem SeaTalk“. Quark-elec obousměrný multiplexer NMEA 0183 s převodníkem SeaTalk.

externí odkazy