NMEA0183(z " Krajowe Stowarzyszenie Elektroniki Morskiej”) to norma definiująca protokół tekstowy służący do wzajemnej komunikacji między urządzeniami morskimi (zwykle nawigacyjnymi) (lub urządzeniami używanymi w pociągach). Stał się szczególnie popularny ze względu na rozpowszechnienie odbiorników GPS wykorzystujących ten standard.

Ogólny widok ciągów w NMEA 0183

  • symbol "$" lub "!" (heks 24 lub heks 21)
  • 5-literowy identyfikator wiadomości. Pierwsze dwie litery to identyfikator źródła wiadomości, kolejne trzy litery to identyfikator formatu wiadomości, zgodnie z protokołem NMEA 0183 określonej wersji.
  • lista danych (liter, cyfr i kropek) oddzielonych przecinkami. Jeśli brakuje jakichkolwiek danych w środku linie, przecinki są nadal umieszczane (na przykład ","). Niektóre pola na końcu linie mogą w ogóle nie być obecne.
  • symbol „*”.
  • ośmiobitowa suma XOR wszystkich znaków (w tym "," i "^") w ciągu między "$" i "*" przekonwertowana na dwa znaki ASCII w duże litery dla szesnastkowej reprezentacji bajtu (0-9, A-F).
  • (szesnastkowy 0D, szesnastkowy 0A).

Maksymalna długość wiadomości jest ograniczona do 82 znaków (NMEA 0183 wer. 3.0)

Standard opisuje ponad 250 identyfikatorów sekwencji NMEA. Norma określa szybkość transmisji 4800 bodów. (Dla szybkości transmisji 38400 i wyższych istnieje rozszerzony standard NMEA-0183-HS).

Standard pozwala na dodawanie własnych identyfikatorów sekwencji, które są często wykorzystywane przez producentów do przenoszenia Dodatkowe informacje o działaniu urządzenia.

Ciąg RMC (przykład specjalny)

$GPRMC,hhmmss.sss,A,GGMM.MM,P,gggmm.mm,J,v.v, b.b, ddmmyy, x.x, n,m*hh

Znaczenie pól:

  • "GP" - identyfikator źródła; w podanym przykładzie jest to GPS, „GL” - GLONASS, „GA” - Galileo, „GN” - GLONASS + GPS itp.
  • „RMC” – „Zalecane minimalne zdanie C”
  • "hhmmss.sss" - czas ustalania lokalizacji UTC: "hh" - godziny, "mm" - minuty, "ss.sss" - sekundy. Długość części ułamkowej sekund jest różna. Zera wiodące nie są pomijane.
  • "A" - status: "A" - dane ważne, "V" - nieważne.
  • „GGMM.MM” – szerokość geograficzna. 2 cyfry stopni („GG”), 2 cyfry pełnych minut, kropka i część ułamkowa minuty o zmiennej długości. Zera wiodące nie są pomijane.
  • „P” - „N” dla szerokości geograficznej północnej lub „S” dla szerokości geograficznej południowej.
  • "ggmm.mm" - długość geograficzna. 3 cyfry stopni („ggg”), 2 cyfry pełnych minut, kropka i ułamkowa część minut o zmiennej długości. Zera wiodące nie są pomijane.
  • „J” - „E” dla Wschodu lub „W” dla Zachodu.
  • „v.v” - pozioma składowa prędkości nad ziemią w węzłach. Liczba zmiennoprzecinkowa. Części całkowite i ułamkowe o zmiennej długości.
  • "b.b" - kąt podłoża (kierunek prędkości) w stopniach. Liczba zmiennoprzecinkowa. Części całkowite i ułamkowe o zmiennej długości. Wartość 0 odpowiada przesunięciu się na północ, 90 na wschód, 180 na południe, 270 na zachód.
  • "ddmmyy" - data: dzień miesiąca, miesiąc, ostatnie 2 cyfry roku (wymagane są zera wiodące).
  • "x.x" to deklinacja magnetyczna w stopniach (często jej brak), obliczona na podstawie jakiegoś modelu. Liczba zmiennoprzecinkowa. Części całkowite i ułamkowe o zmiennej długości.
  • "n" - kierunek deklinacji magnetycznej: aby otrzymać kurs magnetyczny, deklinacja magnetyczna musi wynosić "E" - odejmij, "W" - dodaj do kursu rzeczywistego.
  • "m" - wskaźnik trybu: "A" - autonomiczny, "D" - różnicowy, "E" - aproksymacja, "N" - dane nierzetelne (często brak tego pola wraz z przecinkiem w starszych wersjach NMEA).
  • "hh" - suma kontrolna.
  • - bajt to 0x0D.
  • - bajt to 0x0A.

Przykłady ciągów RMC

Przykład 1

$GPMC,125504.049,A,5542.2389,N,03741.6063,E,0.06,25.82,200906,*17

Znaczenie pól:

  • 12 godzin 55 minut 4.049 sekund UTC
  • "A" - niezawodny
  • szerokość geograficzna 55° 42,2389", północ
  • długość geograficzna 37 ° 41,6063", wschód
  • prędkość 0,06 węzła

Opis protokołu NMEA. Wdrożenie w odbiornikach Garmin i GlobalSat

Wstęp

National Marine Electronics Association (NMEA) opracowało specjalny protokół w celu utrzymania kompatybilności morskiego sprzętu nawigacyjnego różnych producentów. Ten protokół NMEA opisuje nie tylko dane otrzymane z odbiorników GPS, ale także pomiary z sonarów, radarów, kompasy elektroniczne, barometry i inne urządzenia nawigacyjne używane na statkach.

Większość interfejs komunikacyjny przenośny GPS odbiorniki są realizowane zgodnie z tą specyfikacją. Większość programów nawigacyjnych, które zapewniają obsługę wyświetlania danych w czasie rzeczywistym i „rozumieją” protokół NMEA. Dane te zawierają pełne pomiary nawigacyjne odbiornika GPS - pozycję, prędkość i czas. Wszystkie wiadomości NMEA składają się z sekwencyjnego zestawu danych oddzielonych przecinkami. Każda indywidualna wiadomość jest niezależna od pozostałych i jest całkowicie „kompletna”. Wiadomość NMEA zawiera nagłówek, zestaw danych reprezentowanych przez znaki ASCII oraz pole „suma kontrolna” do weryfikacji ważności przesyłanych informacji.

Nagłówek standardowych wiadomości NMEA składa się z 5 znaków, z których pierwsze dwa określają typ wiadomości, a pozostałe trzy - jej nazwę. Na przykład wszystkie wiadomości GPS NMEA są poprzedzone przedrostkiem „GP”. Komunikaty, które nie są opisane w specyfikacji NMEA, ale są zaimplementowane w odbiornikach GPS zgodnie z Główne zasady, są poprzedzone literą „P”, po której następują trzy znaki unikalne dla każdej firmy. Na przykład „natywne” wiadomości NMEA firmy Garmin mają przedrostek „PGRM”, a Magellan – przedrostek „PMGN”
Każda wiadomość NMEA zaczyna się od "$", kończy na "n" ("nowy wiersz") i nie może być dłuższa niż 80 znaków. Wszystkie dane zawarte są w jednym wierszu i oddzielone od siebie przecinkami. Informacje są prezentowane jako tekst ASCII i nie wymagają specjalnego dekodowania. Jeśli dane nie mieszczą się w przydzielonych 80 znakach, są "dzielone" na kilka komunikatów NMEA.

Ten format pozwala nie ograniczać dokładności i liczby znaków w poszczególnych polach danych. Na przykład część ułamkowa wartości współrzędnych może być reprezentowana przez 3 lub 4 miejsca po przecinku, ale nie powinno to w żaden sposób wpływać na operację. oprogramowanie, który wyodrębnia wymagane dane z wiadomości według numeru pola. Na końcu każdego komunikatu NMEA znajduje się pole sumy kontrolnej oddzielone od danych znakiem „*”. Może być opcjonalnie używany do sprawdzania integralności i ważności każdej odebranej wiadomości.

Protokół NMEA obsługuje nie tylko wiadomości wychodzące, ale także przychodzące, które można wykorzystać na przykład do aktualizacji lub dodania punktów trasy. Te wiadomości muszą być w ścisła zgodność w formacie NMEA, w przeciwnym razie zostaną po prostu zignorowane przez odbiornik GPS. Należy zauważyć, że nie wszystkie programy nawigacyjne i modele odbiorników obsługują ten tryb, ponieważ wykorzystują zastrzeżone protokoły producentów - Garmin, Magellan itp. Do ładowania punktów i tras.

Od momentu powstania protokół NMEA przeszedł kilka modyfikacji związanych z dodawaniem nowych pól i komunikatów. obecna wersja obsługiwana przez większość odbiorników jest wersja 2.3, chociaż opis został już opublikowany Nowa wersja 3.0. Pełna specyfikacja komunikatów NMEA nie jest ogólnodostępna i nie może być oficjalnie pobierana w formie elektronicznej, jej poszczególne sekcje, ogólny opis Protokół NMEA i najpopularniejsze wiadomości można znaleźć w Internecie. Oficjalną dokumentację NMEA można kupić na stronie www.nmea.org.

lista wiadomości

Protokół NMEA opisuje dużą listę różnych komunikatów, spośród których można wyróżnić dwa tuziny komunikatów, które są aktywnie wykorzystywane w sprzęcie nawigacyjnym. Ze względu na dużą popularność i prostą prezentację danych, protokół NMEA znalazł zastosowanie nie tylko w sprzęcie morskim, ale także w geodezyjnych, domowych i lotniczych odbiornikach GPS.

  • AAM — dotarcie do punktu trasy
  • ALM - Dane Almanachu
  • APA - Dane autopilota "A"
  • APB - Dane autopilota "B"
  • BOD – Namiar do celu
  • DTM - Używany punkt odniesienia
  • GGA — informacje o naprawionym rozwiązaniu
  • GLL — dane dotyczące szerokości i długości geograficznej
  • GSA – Ogólne informacje satelitarne
  • GSV — szczegółowe informacje o satelitach
  • MSK - Przekazanie do podstawowego odbiornika
  • MSS - Podstawowy stan odbiornika
  • RMA - Zalecany zestaw danych Loran
  • RMB - Zalecany zestaw danych nawigacji GPS
  • RMC – Zalecany minimalny zestaw danych GPS
  • RTE — informacje o routingu
  • VTG - wektor ruchu i prędkości
  • WCV - Dane prędkości w pobliżu punktu trasy
  • WPL - Dane punktu trasy
  • XTC – Błąd wyłączenia śledzenia
  • XTE – Zmierzony błąd zejścia z toru
  • ZTG - czas UTC i pozostały czas do przybycia do celu
  • ZDA - Data i czas.

Niektóre wiadomości NMEA mogą zawierać te same pola danych lub mogą zawierać całe dane innych, mniejszych wiadomości NMEA.

ZawartośćWiadomości NMEA

GGA - poprawiona informacja o rozwiązaniu.
Najpopularniejszy i najczęściej używany komunikat NMEA z informacją o aktualnym ustalonym rozwiązaniu - współrzędne poziome, wartość wysokości, liczba używanych satelitów i rodzaj rozwiązania.

$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46,9,M,*47
gdzie:

  • GGA — nagłówek
  • 123519 – czas UTC 12:35:19
  • 4807.038, N — szerokość geograficzna, 48 stopni 7,038 minut szerokości geograficznej północnej
  • 01131.000, E — długość geograficzna, 11 stopni 31 000 minut na wschód
  • 1 - rozwiązanie typu, rozwiązanie StandAlone
    • 0 - brak rozwiązania,
    • 1-samodzielny,
    • 2-DGPS,
    • 3-PPS,
    • 4 - naprawiono RTK,
    • 5 - nie naprawiono RTK,
    • 6 - zastosowanie tych układów inercyjnych,
    • 7 - tryb ręczny,
    • 8 - tryb symulacji
  • 08 - liczba używanych satelit
  • 0,9 - współczynnik geometryczny, HDOP
  • 545,4, M - wysokość nad poziomem morza w metrach
  • 46,9, M - wysokość geoidy nad elipsoidą WGS 84
  • [pole puste] - czas, jaki upłynął od otrzymania ostatniej korekty DGPS. Wypełniane, gdy włączony jest tryb DGPS
  • [puste pole] - numer identyfikacyjny stacja bazowa. Wypełniany, gdy włączony jest tryb DGPS.

GSA- informacje ogólne o satelitach.
Ta wiadomość NMEA zawiera listę satelitów użytych do obliczenia pozycji oraz wartości czynników geometrycznych DOP, które określają dokładność obliczenia pozycji. Parametry DOP są określone przez geometryczny układ satelitów na niebie. Im lepiej satelity są „rozłożone” na niebie, tym niższy DOP i lepsza dokładność pozycji. Minimalna wartość PDOP (= 1) odpowiada sytuacji, gdy jeden satelita znajduje się bezpośrednio nad użytkownikiem, a pozostałe 3 są równomiernie rozmieszczone na poziomie horyzontu. Wartość PDOP jest obliczana jako pierwiastek kwadratowy z sumy kwadratów HDOP i VDOP.

$GPGSA,A,3,04,05,09,12,24,2,5,1,3,2,1*39
gdzie:

  • GSA — nagłówek
  • A - rodzaj wyboru pomiędzy rozwiązaniami 2D i 3D, Automatyczny (A-auto, M-manual)
  • 3 - typ rozwiązania, rozwiązanie 3D (1 - brak rozwiązania, 2 - rozwiązanie 2D, 3 - rozwiązanie 3D)
  • 04,05… - Kody PRN używane do obliczania pozycji satelity (12 pól)
  • 2,5 - przestrzenny współczynnik geometryczny, PDOP
  • 1,3 - poziomy współczynnik geometryczny, HDOP
  • 2,1 - pionowy współczynnik geometryczny, VDOP

GSV — szczegółowe informacje o satelitach
Ta wiadomość NMEA zawiera szczegółowe informacje o wszystkich satelitach śledzonych przez nawigator GPS. W oparciu o ograniczenie 80 znaków, dane tylko z 4 satelitów mogą być przesyłane jako część jednego komunikatu NMEA. W związku z tym wymagane są 3 komunikaty GSV dla 12 satelitów.
Pole SNR (Signal to Noise Ration) zawiera poziomy sygnałów nawigacyjnych odbieranych z satelitów. Teoretycznie jego wartość może wahać się od 0 do 99 i jest mierzona w dB. W rzeczywistości poziom sygnału mieści się w zakresie 25 ... 35 dB. Warto tutaj zaznaczyć, że parametr ten nie jest bezwzględny i nie nadaje się do porównywania czułości odbiorników różnych modeli i producentów. Nawigatorzy GPS mogą używać różnych algorytmów do obliczania poziomu odbieranego sygnału, co prowadzi do różnych wyników przy tym samym stopniu czułości odbiorników.
Dla każdego widocznego satelity GPS przesyłany jest zestaw informacji, w tym siła sygnału, wysokość i azymut satelity. Liczba tych „zestawów” jest określona przez całkowitą liczbę widocznych satelitów, których wartość jest transmitowana w osobnym polu.

$GPGSV,2,1,08,01,40,083,46,02,17,308,41,12,07,344,39,14,22,228,45*75
gdzie:

  • GSV - nagłówek
  • 2 - liczba wiadomości GSV w pakiecie
  • 1 - numer komunikatu w paczce (od 1 do 3)
  • 08 - liczba widocznych satelit
  • 01 - numer satelity
  • 40 - kąt elewacji, w stopniach
  • 083 - azymut w stopniach
  • 46 - SNR, poziom sygnału

RMC - zalecany minimalny zestaw Dane GPS
Ta wiadomość NMEA zawiera cały zestaw tak zwanych danych „PVT”. „PVT” to powszechny skrót oznaczający „pozycja, prędkość, czas” (pozycja, prędkość, czas).

$GPMC,123519,A,4807.038,N,01131.000,E,022.4,084.4,230394.003.1,W*6A

  • PKW - tytuł
  • 123419 - czas UTC, 12:34:59
  • A - status (A - aktywny, V - ignorowany)
  • 4807.038,N — Szerokość geograficzna, 48 stopni 07.038 minut szerokości geograficznej północnej
  • 01131.000,E — długość geograficzna, 11 stopni 31.000 minut na wschód
  • 022.4 — Prędkość, w węzłach
  • 084.4 - Kierunek ruchu, w stopniach
  • 230394 - Data 23 marca 1994
  • 003.1,W - Zmiany magnetyczne

GLL - dane o szerokości i długości geograficznej

Wiadomość NMEA z wartością współrzędnych szerokości i długości geograficznej oraz czasem obliczenia tego rozwiązania.

$GPGLL,4916,45,N,12311,12,W,225444,A,*31

  • GLL - nagłówek
  • 4916.46,N - szerokość geograficzna 49 stopni 16,45 minuta szerokości geograficznej północnej
  • 12311,12 W-długość geograficzna, 123 stopnie 11,12 minut na zachód
  • 225444 - Naprawiono czas w skali czasu UTC, 22:54:44

W OD - Azymut do celu
Ten komunikat NMEA wskazuje namiar do celu w trybie nawigacji.

$GPBOD,045.,T,023.,M,DEST,START*01

  • BZT - nagłówek
  • 045.,T - prawdziwy kierunek do punktu
  • 023.,M - kierunek magnetyczny do punktu
  • DEST - numer identyfikacyjny punkt końcowy
  • START - numer identyfikacyjny punktu startowego

$GPRMB,A,0,66,L,003,004,4917,24,N,12309,57,W,001,3,052,5,00,5,V*20

  • PPM - nagłówek
  • A - Typ danych, (A - aktywne, V - ignorowane)
  • 0,66,L - odchylenie od toru jazdy. Parametr określany jest w milach morskich. (L-lewa, R-prawa)
  • 003 - numer identyfikacyjny punktu startowego
  • 004 - numer identyfikacyjny punktu końcowego
  • 4917,24,N - wartość szerokości geograficznej punktu końcowego, 49 stopni 17,24 minuty szerokości geograficznej północnej
  • 12309.57,W - długość geograficzna punktu końcowego, 123 stopnie 09.57 minuta zachodnia
  • 001.3 - odległość do punktu w milach morskich
  • 052,5 - kierunek do punktu
  • 000.5 - prędkość, w węzłach
  • V - informacja o przyjeździe (A - dojazd, V - punkt jeszcze nie osiągnięty)

RTE — informacje o routingu

Wiadomość NMEA RTE zawiera listę punktów na aktywnej trasie. Istnieją dwa rodzaje komunikatów RTE. W pierwszym przypadku wyświetlane są wszystkie punkty trasy. W drugim tylko lista pozostałych punktów, które nie zostały jeszcze odwiedzone podczas poruszania się po trasie. Biorąc pod uwagę, że protokół NMEA ma ograniczenie, że długość komunikatu nie powinna przekraczać 80 znaków, komunikat RTE może składać się z kilku wierszy.

$GPRTE,2,1,c,0,W3IWI,DRIVWY,32CEDR,32-29,32BKLD,32-I95,32-US1,BW-32,BW-198*69

  • RTE - nagłówek
  • 2 - całkowita liczba komunikatów do wyświetlenia pełnej listy danych
  • 1 - numer wiadomości z listy ogólnej
  • c - typ wiadomości RTE (c - pełna lista waypointy, w - lista waypointów jeszcze do odwiedzenia)
  • 0 - identyfikator trasy
  • W3IWI,DRIVWY,.. - lista punktów trasy

Funkcje Garmin

Odbiorniki Garmin obsługują większość wiadomości NMEA zawierających pomiary GPS, współrzędne i czas - GGA, GLL, GSA, GSV, RMC. Oraz komunikaty nawigacyjne - RMB, BOD

Aby wyświetlić te komunikaty, należy zmienić interfejs z „Garmin” na „NMEA” w ustawieniach odbiornika i ewentualnie ustawić żądaną prędkość. Tę samą prędkość należy ustawić w programie nawigacyjnym w ustawieniach portu szeregowego, do którego podłączony jest nawigator.

Niestety odbiorniki z portem USB nie obsługują protokołu NMEA, ograniczając jego ustawienia tylko do protokołu Garmin.

Aby wyświetlić informacje przychodzące do portu szeregowego komputera, możesz użyć terminala Program Windows lub jeden z programów nawigacyjnych obsługujących tę funkcję.

Poniżej znajduje się lista wiadomości NMEA odbiornika Garmin eMap, które są zawarte w tej samej epoce.

$GPMC,135412,A,5522.8973,N,03710.1401,E,0.0,0.0,190507,9.3,E,A*1F

$GPRMB,A,,A,A*0B

$GPGGA,135412,5522,8973,N,03710.1401,E,1,04,5.4,205,2,M,15,8,M,*4A

$GPGSA,A,3,08,13,23,25,5,7,5,4,1,0*3C

$GPGSV,3,1,11,02,15,267,00,03,11,085,45,04,05,236,00,08,39,233,00*77

$GPGSV,3,2,11,10,32,308,00,13,63,109,43,16,17,037,00,23,31,111,38*77

$GPGSV,3,3,11,24,09,343,00,25,66,077,44,27,69,229,00*46

$GPGLL,5522,8973,N,03710,1401,E,135412,A,A*43

$GPBOD,T,M,*47

$PGRME,19,1,M,15,2,M,25,3,M*15

$ PGRMZ,673, f.3*19

$ PGRMM, WGS 84*06

Oprócz standardowych komunikatów NMEA, odbiorniki Garmin implementują własny zestaw komunikatów, z których każdy zawiera prefiks „GRM” w nagłówku, identyfikator „M” lub „Z” identyfikujący typ danych oraz pojedynczy znak nazwy.

PGRME – Szacowanie błędu pozycji

$PGRME,15,0,M,45,0,M,25,0,M*1C

  • 15.0,M - oszacowanie błędu pozycjonowania poziomego, w metrach
  • 45,0,M - oszacowanie błędu pionowego, w metrach
  • 25.0,M - równoważny błąd pozycjonowania sferycznego

PGRMZ - pomiary wysokości

$PGRMZ,93,f,3*21

  • 93,f - wartość wzrostu w funtach
  • 3 - warunki pomiaru pozycji (2 - wysokość, określony przez użytkownika, 3 - wysokość obliczona przez GPS)

PGRMM - aktualny punkt odniesienia

$PGRMM,NAD27 Kanada*2F

  • NAD27 Kanada - nazwa bieżącego poziomego układu odniesienia

OsobliwościSirf

Chipy GPS Sirf są używane w różnych nawigacja GPS sprzęt, począwszy od tablic konwencjonalnych, a skończywszy na przenośnych i motoryzacyjnych Nawigatorzy GPS. Ale w przeciwieństwie do nawigatorów obsługują tylko wiadomości NMEA związane z pomiarami GPS, obliczaniem pozycji i czasu - GGA, GLL, GSA, GSV, RMC, VTG, ZDA.

„Sirf” obsługuje również kilka „przychodzących” wiadomości NMEA do konfiguracji i ustawiania różnych parametrów. Ponadto „Sirf” implementuje własny protokół binarny, który pozwala na zmianę znacznie większej liczby ustawień. Te 5 "przychodzących" wiadomości NMEA zaczyna się od prefiksu $PSFR, zgodnie z regułami. Wszystkie wiadomości zawierają ustalony zestaw danych i kończą się znakiem „n” (nowy wiersz)

Aby skonfigurować parametry „Sirf”, użyj program specjalny Sirftech. Ustawienia wiadomości NMEA są konfigurowane w osobnej pozycji menu.

$GPGGA,100643.000,5522.9036,N,03710.1282,E,1.07,1.6,209,9,M,14,9,M,0000*52

$GPGSA,A,3,31,01,23,20,11,30,14,2,1,1,1,6,1,4*35

$GPGSV,3,1,12,20,84,187,41,01,49,067,46,23,46,238,45,31,45,073,50*7B

$GPGSV,3,2,12,11,25,194,34,13,16,240,04,15,319,30,17,14,273,21*7A

$GPGSV,3,3,12,30,10 026,33,14,05,063,22,05,04,009,25,25,03,195,*7F

$GPMC,100643.000,A,5522.9036,N,03710.1282,E,0.16,119.11,200507,*0D

Jak widać z powyższego przykładu, ustawienia „fabryczne” zawierają mniej komunikatów NMEA w porównaniu z ustawieniami Garmin. W razie potrzeby zestaw ten można rozszerzyć, ustawiając okres w brakujących komunikatach NMEA.

$GPGGA,100833.000,5522.9076,N,03710.1270,E,1.07,1.3,222,4,M,14,9,M,0000*53

$GPGLL,5522,9076,N,03710.1270,E,100833.000,A*34

$GPGSA,A,3,31,01,23,20,11,30,17,2.1,1.3,1.6*31

$GPGSV,3,1,12,20,84,180,43,01,49,067,47,23,47,238,45,31,45,072,49*77

$GPGSV,3,2,12,11,24,193,26,13,16,240,26,04,15,319,24,17,13,273,31*78

$GPGSV,3,3,12,30,10 025,26,14,404,064,22,25,04,195,05,04,008,21*7C

$GPMC,100833.000,A,5522.9076,N,03710.1270,E,0.18,4.86,200507,*00

$GPVTG,4,86,T,M,0,18,N,0,3,K*60

$GPZDA,100834,000,20.05.2007,*5A

PSFR100, PSFR102 - konfiguracja portu szeregowego

Wiadomość NMEA o numerze 100 służy do ustawienia portu A, wiadomość 102 - port B. Wiadomość 100 posiada dodatkowe pole, które pozwala przełączyć interfejs na binarny protokół Sirf.

W związku z tym w protokole binarnym znajduje się polecenie, które przełącza port z powrotem do formatu NMEA. Przed przejściem na protokół binarny musisz zrozumieć, czy program, który później pozwoli ci przywrócić protokół NMEA.

$PSRF100.0.960.8.1.0*0C

$PSRF102.9600.8.1.0*3C

  • PSRF100 - nagłówek
  • 0 - parametr wskazujący w jakim trybie zmieniono protokół (0-Sirf, 1-NMEA)
  • 9600 - szybkość portu (4800, 9600, 19200, 38400)
  • 8 - bity danych (7, 8)
  • 1 - bity stopu (0,1)
  • 0 - sparowane (0 - nie, 1-nieparzyste, 2-parzyste)

PSFR101, PSFR104 - inicjalizacja parametrów odbiornika

Wiadomości NMEA o numerach 101 i 104 są przeznaczone do inicjalizacji parametrów odbioru GPS. Zdefiniowanie tych parametrów może przyspieszyć czas akwizycji satelitów GPS. Komunikat 101 ustawia aktualne współrzędne w formacie XYZ, komunikat 104 - w formacie BLH (długość, szerokość geograficzna).

$PSRF101,-2686700,-4304200.3851624.95000.497260.921.12.3*22

$PSRF104.37.3875111,-121.97232.0.95000.237759.922.12.3*3A

  • PSRF101 - nagłówek
  • 37,38751111 - szerokość geograficzna w stopniach
  • -121.97232 - długość geograficzna w stopniach
  • 0 - wysokość w metrach
  • 95000 - przesunięcie zegara
  • 237759 - Czas GPS, w sekundach
  • 922 - Numer tygodnia GPS
  • 12 - liczba kanałów
  • 3 - typ inicjalizacji danych (1 - gorący start, 2 - ciepły start, 3 - inicjalizacja danych, 4 - zimny start z całkowitym skasowaniem danych, 8 - zimny start z przywróceniem ustawień fabrycznych)

PSFR103 - konfiguracja generacji Wiadomości NMEA

Ta wiadomość NMEA umożliwia ustawienie lub zapytanie o okres generowania dla każdej „wychodzącej” wiadomości NMEA.

$PSRF103.05.00.01.01*20

  • PSRF103 - nagłówek
  • 05 - tytuł wiadomości
    • 00-GGA
    • 01-GLL
    • 02-GSA
    • 04-RMS
    • 05-VTG
  • 00 - tryb (0 - ustawienie okresu, 1 - żądanie)
  • 01 - okres, w sekundach (0-255)
  • 01 - obecność sumy kontrolnej (0 - tak, 1 - nie)

Wyniki eksperymentu

W normalnych warunkach widoczności satelitów odbiornik Garmin eMap wysyła następujący zestaw komunikatów NMEA:

$GPMC,104644,A,5522.8965,N,03710.1389,E,0.0,0.0,200507,9.3,E,A*16

$GPRMB,A,,A,A*0B

$GPGGA,104644,5522,8965,N,03710,1389,E, 1 ,07 ,1,2,186,6,M,15,8,M,*44

$GPGSA,A,3,01,04,13,16,20,23,31,2.1,1.2,1.7*35

$GPGSV,3,1, 10 ,01,34,070,48,04,28,311,40,11,10,190,00,13,32,249,41*7E

$GPGSV,3,2, 10 ,16,11,111,40,20,68,142,50,23,64,247,49,25,21,196,00*70

$GPGSV,3,3, 10 .30.05.012.00.31.36.055.52*7D

$GPGLL,5522,8965,N,03710,1389,E,104644,A,A*40

$GPBOD,T,M,*47

$PGRME, 6.0 ,M,7,7,M,9,8,M*29

$PGRMZ,612,f,3*1E

$PGRM,WGS 84*06

$GPRTE,1,1,c,*37

Z analizy komunikatów widać, że w tej chwili odbiornik śledzi 10 satelitów (GSV), z których 7 (GGA) jest wykorzystywanych do obliczania pozycji. Błąd pozycjonowania poziomego wynosi 6 metrów (RME), a wskaźnik typu rozwiązania wynosi 1 (GGA)

Jeśli stworzysz warunki, w których Sygnał GPS nie zostanie zaakceptowany, wówczas komunikaty GGA będą zawierały "puste" pola, a wskaźnik typu decyzji przyjmie wartość 0 (GGA)

$GPGGA, 0 ,00,M,M,*66

$GPGSA,A,1,,*1E

W trybie „normalnym” wiadomości RMB i BOD zawierają puste pola. Po wybraniu punktu trasy „Droga” jako ostatecznego miejsca docelowego, pola te zostały „zapełnione” danymi. Jak wynika z analizy komunikatu, odległość do punktu to 1620 mil, azymut ruchu to 6,3 stopnia (BOD). W tym przypadku azymut wiadomości BOD i RMB różni się o 0,1 stopnia.

$GPRMB,A,0.00,R,Droga ,5524,501,N,03710.445,E, 1.620 ,6.4 ,V,A*59

$GPBOD, 6.3 ,T,357,0,M,Droga,*74

Po wybraniu trasy domowej do nawigacji, lista wszystkich punktów trasy została wyświetlona na liście wiadomości RTE. A w wiadomości RMB - numery identyfikacyjne początkowe i końcowe (kolejne) punkty trasy.

$GPRTE,1,1,c,DOM,SLOBODA,IERUSALIM,INSTYTUT*01

$GPRMB,A,9.99,R,SLOBOD,IERUSAL,5555.237,N,03649.976,E,34.346,340.6,V,A*1F

Wniosek

W większości przypadków użytkownik nie musi i nie jest zainteresowany tym, jakie dane iw jakich polach są przesyłane. Większość programów nawigacyjnych „parsuje” dane komunikatów NMEA i prezentuje je w przyjaznej dla użytkownika formie – wykresy, diagramy, tabele itp.

Szczególnie interesujące są komunikaty NMEA dla użytkowników, którzy chcieliby zbadać dane GPS, obliczyć szacunkowe wyniki otrzymanych pomiarów lub przeanalizować zachowanie odbiorników nawigacyjnych w różnych warunkach. Istnieje wiele programów, za pomocą których można rozwiązać te problemy.

H Jednak do głębokiej analizy danych GPS format NMEA nie jest przeznaczony, ponieważ nie zawiera tak zwanych „surowych” pomiarów - pseudoodległości, faz, Dopplera. Każdy producent sprzętu nawigacyjnego ma swój własny „otwarty” lub „zamknięty” protokół, który przekazuje te informacje.

NMEA to prosty i zrozumiały format, który pozwala nie tylko na wymianę danych między odbiornikami GPS i programy nawigacyjne, ale także daje użytkownikom pewne wyobrażenie o zasadach działania sprzętu do nawigacji satelitarnej

Miałem potrzebę przetestowania aplikacji, która wykorzystuje dane GNSS przez protokół NMEA. Wynikało to z faktu, że pracowałem nad projektem programu nawigacji lotniczej, testowanie w powietrzu jest naturalnie drogie, jazda samochodem z odbiornikiem GNSS na ziemi nie jest szczególnie wygodna, więc chciałem mieć dane protokołu NMEA na wirtualnym porcie równoległym z rzekomo przemieszczającego się sprzętu. Na początku szukałem innego oprogramowania, myślałem, że znajdę coś odpowiedniego, ale większość jest płatna i kontrola emulacji danych nie jest zbyt wygodna, chociaż emulują prawie wszystkie parametry standardu NMEA. Ale potrzebowałem czegoś prostego, emulującego współrzędne, prędkość w zasadzie nic więcej i potrzebowałem dość wygodnego i logicznego sterowania. Musiałem więc napisać taką aplikację w C#.

Fly_nmea


NMEA („National Marine Electronics Association”) – pełna nazwa to „NMEA 0183” – protokół tekstowy do komunikacji między sobą urządzeń morskich (zwykle nawigacyjnych).
Dane przekazywane są w postaci ofert. Format wniosku jest następujący:
$AAAA[,<данные>]*hh , gdzie:
$ - znak początku zdania (kod 24h);
AAAAA - Pięcioznakowy adres (nazwa) oferty;
[, <данные>] - lista pól danych oddzielonych przecinkami (kod 2Сh);
* - znak sumy kontrolnej (kod 2Ah);
hh - suma kontrolna.

Przykład sugestii:
GGA — dane pozycjonowania GPS
Czas, miejsce i dane związane z obserwacją.
$GPGGA,hhmmss.sss,llll.ll,a,yyyy.yy,a,x,xx,x.x,x.x,M,x.x,M,x.x,xxx*hh

Musiałem emulować cztery linie:

  • GLL — współrzędne lokalizacji
  • GSV- Widoczne satelity
  • RMC - Zalecany minimalny zestaw danych dla GPS i GLONASS
  • GSA - Współczynnik degradacji dokładności stosowany w satelitach nawigacyjnych
Emulacja jest zorganizowana w następującej kolejności:
  • początkowe współrzędne ustalamy w systemie WGS-84
  • następnie przechodzimy na rzut płaski np. Mercator (użyłem gotowej biblioteki C# do przekształcenia współrzędnych)
  • znając płaskie współrzędne x,y,h, realizujemy fizykę ruchu samolotu w zakresie zmiennych parametrów poprzez GUI takich jak: roll, pitch, speed
  • przelicza współrzędne płaskie na współrzędne B, L, H systemu WGS-84
  • z wymaganych czterech linii tworzymy pakiet wiadomości w standardzie NMEA
  • wyślij je do wirtualnego portu równoległego
Fly_nmea + czujnik Android
Dla wygodniejszego testowania ustawiłem też odbiór danych z Czujniki Androida(kąty nachylenia). Android wysyła dwa takie ciągi znaków przez UDP:
  • "Kąt:\t236.04152\t-1,0\t-3,0"
  • "dowód:\t-0,46309182\t-0,14982383\t-10,56939"
Na aplikacji do emulacji akceptuję je i na podstawie kątów pochylenia zmieniam parametry:
  • Poziom
W aplikacji emulacyjnej możesz przełączyć się ze sterowania przez interfejs programu na Android Sensor.
Połączenie Fly_nmea
Do emulacji portów COM przydatny jest również emulator wirtualnych portów szeregowych, będziesz musiał skonfigurować połączenie dwóch wirtualnych portów COM, na przykład: COM1<->COM6 i program Fly_nmea wyślą dane do COM6, a na COM1 odbierze je program używający protokołu NMEA.

Wniosek

Generalnie więcej czasu poświęciłem na szukanie takiego oprogramowania i nie stwierdzając, że byłbym w pełni usatysfakcjonowany, sam je napisałem szybciej. Oprócz projektu, nad którym pracowałem, udało mi się też całkiem pomyślnie podłączyć emulator do programów rozumiejących protokół NMEA, takich jak: 2Gis i SAS planet.



Czujnik FlyNMEA i Android (projekt przesyłania danych z czujników przez UDP)

NMEA0183– tekstowy protokół komunikacyjny stosowany w modułach odbiorników GPS. Ten standard został stworzony do komunikacji morskiego sprzętu nawigacyjnego. Protokół przewiduje transmisję poleceń tekstowych i wiadomości za pomocą znaków ASCII. Aby więc otrzymywać wiadomości, wystarczy użyć interfejs szeregowy UART, natomiast wszystkie komunikaty mogą być przesyłane bezpośrednio do komputera za pomocą do tego portu COM, ale nie zapominając o konieczności konwersji poziomów sygnału.

Moduł GPS przesyła wiadomości w różnych formatach zawierających różne zestawy danych: szerokość i długość geograficzną, prędkość, kurs, czas, liczbę satelitów itp. Wiadomości są przesyłane sekwencyjnie i są podzielone na kilka typów, format każdego rodzaju wiadomości zawiera w swoich polach ściśle określone informacje. Przyjrzyjmy się bliżej ogólnej strukturze komunikatów wysyłanych przez moduł GPS.

$ - każda wiadomość zaczyna się od tego znaku

Po którym następuje identyfikator 5 znaki tekstowe. Pierwsze dwie litery wskazują na przykład typ systemu nawigacyjnego "GP" - GPS lub " GL" - Glonass itp. Kolejne 3 znaki to identyfikator formatu wiadomości, który całkowicie określa zawartość kolejnych przesyłanych danych. Na przykład "PKM"- jest to zalecane minimum danych, które zawiera informacje o czasie i dacie, szerokości i długości geograficznej, prędkości, kursie i odchyleniu magnetycznym w stopniach (może ich brakować). Lub G.S.A., w tym miejscu będą przesyłane dane satelitarne. Poniżej omówiona zostanie struktura głównych typów komunikatów.

Potem następuje «,» - przecinek, po którym następuje natychmiast treść wiadomości z różnymi danymi, które są oddzielone od siebie tym samym przecinkiem. Jeśli przesyłana liczba nie jest liczbą całkowitą, to separatorem między liczbą całkowitą a częściami ułamkowymi jest kropka «.» .

Koniec treści wiadomości jest oznaczony symbolem «*» . Po tym następuje suma kontrolna wszystkich znaków zawartych między "$" i "*", to znaczy całej treści wiadomości, w tym samych danych i identyfikatorów na początku wiadomości. Suma kontrolna jest obliczana jako XOR (exclusive OR) wszystkich szesnastkowych kodów ASCII znaków wiadomości.

A na samym końcu każdej wiadomości muszą następować znaki nowego wiersza

Rozważ cel i strukturę różne rodzaje wiadomości.

PKW– zalecane minimalne dane nawigacyjne. Wiadomość zawiera minimalną wymaganą ilość informacji. Są to dane dotyczące szerokości i długości geograficznej, daty i czasu, prędkości. Do wielu zadań więcej nie jest potrzebne, na przykład w module Quektel L50 Wyłączyłem transmisję wszystkich innych rodzajów wiadomości, ponieważ absolutnie nie potrzebuję informacji o satelitach i poziomie ich sygnałów. A odbiór nadmiernych informacji wymaga komplikacji programu do przetwarzania tych danych. Struktura wiadomości to:

$GPMC, hhmmss.sss,A,ddmm.mmmm,N,ddmm. mmmm , mi,w.w,c. c, Dd / mm / rrrr,x,x,n,m*hh

Ta wiadomość zawiera następujące dane:

  • GPRMCsystem satelitarny GPS, identyfikator wiadomości RMC
  • hhmmss.sss– czas (Greenwich Mean Time), gdzie hh – godziny, mm – minuty, ss.sss – sekundy
  • A- dane są poprawne lub V- dane są nieważne. Symbol A w komunikacie pojawi się, gdy odbiór satelitarny jest wystarczająco silny, aby obliczyć dane pozycji. Symbol V nastąpi, gdy odbiornik nie widzi satelitów lub gdy liczba znalezionych satelitów jest niewystarczająca, aby wiarygodnie obliczyć współrzędne. Na przykład, jeśli włączysz moduł GPS gdzieś w domu z paneli i z dala od okien, najprawdopodobniej zobaczysz symbol V w otrzymanej wiadomości.
  • ddmm.mmmm- szerokość geograficzna, stopnie i minuty
  • N lub S- północ lub południe. Półkula, na której się znajdujesz. Jeśli jesteś w Australii, to pokaże S. W Jekaterynburgu mój moduł GPS się rozdaje N.
  • ddmm.mmmm- długość geograficzna, stopnie i minuty
  • mi lub W- półkula zachodnia lub wschodnia
  • v.v- prędkość w węzłach
  • c. c– kurs nad ziemią w stopniach. Przemieszczając się na północ, będzie to 0 stopni.
  • Dd / mm / rrrr- data
  • x.x– deklinacja magnetyczna
  • n jest kierunkiem deklinacji magnetycznej. Nie mogę nic wyjaśnić o tych dwóch ostatnich parametrach. Na przykład mój moduł GPS Quectel L50 przy odbiorze w mieszkaniu na oknie te dane w ogóle się nie pokazywały, po prostu je przegapiłem.
  • m– tryb nawigacji: N- nieprawidłowe dane A- autonomiczny, D- mechanizm różnicowy

Oto przykładowy komunikat RMC:

$GPMC,105954.000,A,3150.6731,N,11711.9399,E,0.00,96.10,250313,A*53

  • GMT 10h 59m 54s
  • A- dane są poprawne
  • Szerokość 31 stopni i 50,6371 minut
  • N– północna
  • Długość geograficzna 117 stopni 11,9399 minut
  • mi– wschodnia
  • Prędkość 0,00 węzłów
  • Dobrze 96,1 stopnia
  • data 25 marca 2013 r.
  • Dane o deklinacja magnetyczna zaginiony
  • Tryb - autonomiczny
  • Suma kontrolna znaków wiadomości 0x053

Tutaj należy zwrócić uwagę na jeden niuans. Dane dotyczące szerokości i długości geograficznej zawierają ułamkową część minut, która w ogóle nie odpowiada liczbie „sekund”, ponieważ jest to ułamek dziesiętny. Te programy do pracy z GPS, których próbowałem, dokładnie pokazują współrzędne na mapie. Ale jeśli wpiszesz te liczby w pasku wyszukiwania mapy Google, wtedy lokalizacja na mapie okaże się oddalona o kilka kilometrów od rzeczywistej. Podczas wprowadzania otrzymanych współrzędnych w tym przypadku konieczne jest podzielenie części ułamkowej szerokości i długości geograficznej przez 60, aby przekonwertować te liczby na „sekundy”. Przy pierwszym podłączeniu modułu Quectel L50 i wprowadzeniu do linii otrzymanych współrzędnych szerokości i długości geograficznej wyszukiwarka Google map, dostałem pozycję na mapie ze sporym błędem, mapa wskazywała miejsce gdzieś w okolicy Uralmasza.

Oto kilka innych typów wiadomości używanych w tym protokole:

  • VTG- prawdziwy kurs i prędkość względem ziemi
  • GGA- ostatnie dane dotyczące ustalenia pozycji
  • GSA- dane o aktywnych satelitach
  • GSV- dane o widocznych satelitach, ich pozycji i numerach oraz sile sygnału
  • GLL- dane dotyczące szerokości i długości geograficznej oraz czasu
  • ZDA- data i godzina

Nie analizowałem szczegółowo z czego składa się każda wiadomość, link do dokumentu opisującego protokół znajduje się na końcu artykułu. Określony typ modułu GPS może nie przesyłać wszystkich wymienionych danych. Możesz wyłączyć lub włączyć przesyłanie różnego rodzaju danych, a także ustawić termin ich wydania. Aby skonfigurować moduł, istnieją specjalne polecenia, które zaczynają się od identyfikatora $PSRFxxx, gdzie XXX określa typ i format polecenia, podobnie jak w wiadomościach wychodzących.

Na przykład polecenie $PSRF100.0.960.8.1.0*0C ustawia protokół wymiany i konfiguruje parametry portu szeregowego.

  • $PSRF100 - Identyfikator polecenia protokołu macierzystego SIRF
  • 0 – protokół binarny SIRF, 1 - Protokół NMEA
  • 9600 – prędkość bps
  • 8 bit danych
  • 1 zatrzymaj się
  • 0 - kontrola parzystości wyłączona

Zespół $PSRF103.00.00.02.01*26 konfiguruje parametry wyjściowe dla różnych typów komunikatów modułu:

  • $PSRF103– identyfikator polecenia protokołu natywnego SIRF
  • następnie po przecinku znajdują się dwie cyfry określające typ wiadomości niestandardowej: 00 - GGA
    01-GLL
    02-GSA
    03-GSV
    04-RMK
    05-VTG
  • kolejne dwie cyfry określają kolejność wydawania komunikatów, na przykład: 00 - okresowo
    01 - na życzenie
  • następujące liczby ustawiają okres raportowania w sekundach: 00 = Wyłączony (komunikaty są wyłączone)
    1-255 - przerwa między wiadomościami tego typu w sekundy
  • następnie włącz/wyłącz przesyłanie sumy kontrolnej w komunikacie NMEA przesyłanym przez moduł: 00 – przesyłanie sumy kontrolnej jest wyłączone
    01 - przesyłana jest suma kontrolna
  • po znaku „*”, podobnie jak w wychodzącym komunikacie NMEA, przesyłana jest suma kontrolna i znaki nowego wiersza.

To wszystko, co chciałem pokrótce opisać protokół NMEA 0183 i polecenia do sterowania modułem na chipsecie SIRF. Bardziej szczegółowe wyjaśnienie wszystkich tych komunikatów i poleceń znajduje się na przykład w opisie protokołu modułu Quectel L50, który można pobrać z poniższego linku.

Opis protokołu NMEA.

Wdrożenie w odbiornikach Garmin i GlobalSat

Wstęp

Narodowe Stowarzyszenie Elektroniki Morskiej (NMEA) opracowało protokół w celu utrzymania interoperacyjności między morskimi urządzeniami nawigacyjnymi różnych producentów. Ten protokół NMEA opisuje nie tylko dane otrzymywane z odbiorników GPS, ale także pomiary z sonarów, radarów, kompasów elektronicznych, barometrów i innych urządzeń nawigacyjnych używanych na statkach. Interfejs wymiany danych większości przenośnych odbiorników GPS jest zaimplementowany zgodnie ze specyfikacją NMEA. Większość programów nawigacyjnych, które zapewniają obsługę wyświetlania danych w czasie rzeczywistym i „rozumieją” protokół NMEA. Dane te zawierają pełne pomiary nawigacyjne odbiornika GPS - pozycję, prędkość i czas. Wszystkie wiadomości NMEA składają się z sekwencyjnego zestawu danych oddzielonych przecinkami. Każda indywidualna wiadomość jest niezależna od pozostałych i jest całkowicie „kompletna”. Wiadomość NMEA zawiera nagłówek, zestaw danych reprezentowanych przez znaki ASCII oraz pole „suma kontrolna” do weryfikacji ważności przesyłanych informacji. Nagłówek standardowych wiadomości NMEA składa się z 5 znaków, z których pierwsze dwa określają typ wiadomości, a pozostałe trzy - jej nazwę. Na przykład wszystkie wiadomości GPS NMEA są poprzedzone przedrostkiem „GP”. Komunikaty, które nie są opisane w specyfikacji NMEA, ale są zaimplementowane w odbiornikach GPS zgodnie ze wspólnymi zasadami, są poprzedzone literą „P”, po której następują trzy znaki unikalne dla każdej firmy. Na przykład „zastrzeżone” wiadomości NMEA firmy Garmin mają przedrostek „PGRM”, Magellan – „PMGN”. Każda wiadomość NMEA zaczyna się od „$”, kończy się „\n” („line feed”) i nie może być dłuższa niż 80 znaków. Wszystkie dane zawarte są w jednym wierszu i oddzielone od siebie przecinkami. Informacje są prezentowane jako tekst ASCII i nie wymagają specjalnego dekodowania. Jeśli dane nie mieszczą się w przydzielonych 80 znakach, są "dzielone" na kilka komunikatów NMEA. Ten format pozwala nie ograniczać dokładności i liczby znaków w poszczególnych polach danych. Na przykład część ułamkowa wartości współrzędnej może być reprezentowana przez 3 lub 4 miejsca po przecinku, ale nie powinno to wpływać na działanie oprogramowania, które wyodrębnia z komunikatu niezbędne dane według numeru pola. Na końcu każdego komunikatu NMEA znajduje się pole sumy kontrolnej oddzielone od danych znakiem „*”. Może być opcjonalnie używany do sprawdzania integralności i ważności każdej odebranej wiadomości. Protokół NMEA obsługuje nie tylko wiadomości wychodzące, ale także przychodzące, które można wykorzystać na przykład do aktualizacji lub dodania punktów trasy. Komunikaty te muszą być tworzone w ścisłej zgodności z formatem NMEA, w przeciwnym razie zostaną po prostu zignorowane przez odbiornik GPS. Należy zauważyć, że nie wszystkie programy nawigacyjne i modele odbiorników obsługują ten tryb, ponieważ do ładowania punktów i tras wykorzystują zastrzeżone protokoły producentów takich jak Garmin, Magellan itp. Od momentu powstania protokół NMEA przeszedł kilka modyfikacji związanych z dodawaniem nowych pól i komunikatów. Obecna wersja obsługiwana przez większość odbiorników to wersja 2.3, chociaż opis nowej wersji 3.0 został już opublikowany. Pełna specyfikacja wiadomości NMEA nie jest ogólnodostępna i nie może być oficjalnie pobierana w formie elektronicznej, jej poszczególne sekcje, ogólny opis protokołu NMEA oraz najpopularniejsze wiadomości można znaleźć w Internecie. Dokumentację NMEA można oficjalnie kupić na stronie http://www.nmea.org/ .

lista wiadomości

Protokół NMEA opisuje dużą listę różnych komunikatów, spośród których można wyróżnić dwa tuziny komunikatów, które są aktywnie wykorzystywane w sprzęcie nawigacyjnym. Ze względu na dużą popularność i prostą prezentację danych, protokół NMEA znalazł zastosowanie nie tylko w sprzęcie morskim, ale także w geodezyjnych, domowych i lotniczych odbiornikach GPS.

    AAM - Przybycie do Waypoint

    ALM - Dane Almanachu

    APA – Dane autopilota „A”

    APB - Dane autopilota "B"

    BOD – Namiar do celu

    DTM - Używany punkt odniesienia

    GGA — informacje o naprawionym rozwiązaniu

    GLL — dane dotyczące szerokości i długości geograficznej

    GSA – Ogólne informacje satelitarne

    GSV — szczegółowe informacje o satelitach

    MSK - Przekazanie do podstawowego odbiornika

    MSS - Podstawowy stan odbiornika

    RTE — informacje o routingu VTG — wektor ruchu i prędkości

    WCV - Dane prędkości w pobliżu punktu trasy

    WPL - Dane punktu trasy

    XTC – Błąd wyłączenia śledzenia

    XTE – Zmierzony błąd zejścia z toru

    ZTG - czas UTC i pozostały czas do przybycia do celu

    ZDA - Data i czas.

Niektóre wiadomości NMEA mogą zawierać te same pola danych lub mogą zawierać całe dane innych, mniejszych wiadomości NMEA.

GGA - poprawiona informacja o rozwiązaniu.

Najpopularniejszy i najczęściej używany komunikat NMEA z informacją o aktualnym ustalonym rozwiązaniu - współrzędne poziome, wartość wysokości, liczba używanych satelitów i rodzaj rozwiązania.

$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46,9,M,*47

GGA — nagłówek NMEA

123519 –czas UTC 12:35:19

4807.038, N — szerokość geograficzna, 48 stopni 7,038 minut szerokości geograficznej północnej

01131.000, E — długość geograficzna, 11 stopni 31 000 minut na wschód

1 - rozwiązanie typu, rozwiązanie StandAlone

08 - liczba używanych satelit

0,9 - współczynnik geometryczny, HDOP

545,4, M - wysokość nad poziomem morza w metrach

46,9, M to wysokość geoidy nad elipsoidą WGS 84

[pole puste] – czas, jaki upłynął od odebrania ostatniej korekty DGPS. Wypełniane, gdy włączony jest tryb DGPS

[puste pole] – numer identyfikacyjny stacji bazowej. Wypełniany, gdy włączony jest tryb DGPS.

GSA - ogólne informacje o satelitach.

Ta wiadomość NMEA zawiera listę satelitów użytych do obliczenia pozycji oraz wartości czynników geometrycznych DOP, które określają dokładność obliczenia pozycji. Parametry DOP są określone przez geometryczny układ satelitów na niebie. Im lepiej satelity są „rozłożone” na niebie, tym niższy DOP i lepsza dokładność pozycji. Minimalna wartość PDOP (=1) odpowiada sytuacji, gdy jeden satelita znajduje się bezpośrednio nad użytkownikiem, a pozostałe 3 są równomiernie rozmieszczone na poziomie horyzontu. Wartość PDOP jest obliczana jako pierwiastek kwadratowy z sumy kwadratów HDOP i VDOP.

$GPGSA,A,3,04,05,09,12,24,2,5,1,3,2,1*39

    GSA – nagłówek NMEA

    A - rodzaj wyboru pomiędzy rozwiązaniami 2D i 3D, Automatyczny (A-auto, M-manual)

    3 – typ rozwiązania, rozwiązanie 3D (1 – brak rozwiązania, 2 – rozwiązanie 2D, 3 – rozwiązanie 3D)

    04,05… - Kody PRN używane do obliczania pozycji satelity (12 pól)

    2,5 - przestrzenny współczynnik geometryczny, PDOP

    1,3 - poziomy współczynnik geometryczny, HDOP

    2,1 - pionowy współczynnik geometryczny, VDOP

GSV — szczegółowe informacje o satelitach

Ta wiadomość NMEA zawiera szczegółowe informacje o wszystkich satelitach śledzonych przez nawigator GPS. W oparciu o ograniczenie 80 znaków, dane tylko z 4 satelitów mogą być przesyłane jako część jednego komunikatu NMEA. W związku z tym wymagane są 3 komunikaty GSV dla 12 satelitów. Pole SNR (Signal to Noise Ration) zawiera poziomy sygnałów nawigacyjnych odbieranych z satelitów. Teoretycznie jego wartość może wahać się od 0 do 99 i jest mierzona w dB. W rzeczywistości poziom sygnału mieści się w zakresie 25 ... 35 dB. Warto tutaj zaznaczyć, że parametr ten nie jest bezwzględny i nie nadaje się do porównywania czułości odbiorników różnych modeli i producentów. Nawigatorzy GPS mogą używać różnych algorytmów do obliczania poziomu odbieranego sygnału, co prowadzi do różnych wyników przy tym samym stopniu czułości odbiorników. Dla każdego widocznego satelity GPS przesyłany jest zestaw informacji, w tym siła sygnału, wysokość i azymut satelity. Liczba tych „zestawów” jest określona przez całkowitą liczbę widocznych satelitów, których wartość jest transmitowana w osobnym polu.

$GPGSV,2,1,08,01,40,083,46,02,17,308,41,12,07,344,39,14,22,228,45*75

    GSV – nagłówek NMEA

    2 - liczba wiadomości GSV w pakiecie

    1 – numer wiadomości w pakiecie (od 1 do 3)

    08 - liczba widocznych satelit

    01 - numer satelity

    40 - kąt elewacji, w stopniach

    083 - azymut w stopniach

    46 - SNR, poziom sygnału

Ta wiadomość NMEA zawiera cały zestaw tak zwanych danych „PVT”. „PVT” to powszechny skrót oznaczający „pozycja, prędkość, czas” (pozycja, prędkość, czas).

$GPMC,123519,A,4807.038,N,01131.000,E,022.4,084.4,230394.003.1,W*6A

    RMC – nagłówek NMEA

    123419 - czas UTC, 12:34:59

    A - status (A-aktywny, V-ignoruj)

    4807.038,N — Szerokość geograficzna, 48 stopni 07.038 minut szerokości geograficznej północnej

    01131.000,E — długość geograficzna, 11 stopni 31.000 minut na wschód

    022.4 — Prędkość, w węzłach

    003.1,W - Zmiany magnetyczne

GLL - dane o szerokości i długości geograficznej

Wiadomość NMEA z wartością współrzędnych szerokości i długości geograficznej oraz czasem obliczenia tego rozwiązania.

$GPGLL,4916,45,N,12311,12,W,225444,A,*31

    GLL – nagłówek NMEA

    4916.46,N - szerokość geograficzna 49 stopni 16,45 minuta szerokości geograficznej północnej

    12311,12 W-długość geograficzna, 123 stopnie 11,12 minut na zachód

    225444 - Naprawiono czas w skali czasu UTC, 22:54:44

BOD - Azymut do celu

Ten komunikat NMEA wskazuje namiar do celu w trybie nawigacji.

$GPBOD,045.,T,023.,M,DEST,START*01

    BOD – nagłówek NMEA

    045.,T – prawdziwy kierunek do punktu

    023.,M – kierunek magnetyczny do punktu

    DEST - numer identyfikacyjny punktu końcowego

    START - numer identyfikacyjny punktu startowego

$GPRMB,A,0,66,L,003,004,4917,24,N,12309,57,W,001,3,052,5,00,5,V*20

    PPM – nagłówek NMEA

    A - Typ danych, (A - aktywne, V - ignorowane)

    0,66,L - odchylenie od toru jazdy. Parametr określany jest w milach morskich. (L-lewa, R-prawa)

    003 - numer identyfikacyjny punktu startowego

    004 - numer identyfikacyjny punktu końcowego

    4917,24,N to szerokość geograficzna punktu końcowego, 49 stopni 17,24 minuty szerokości geograficznej północnej

    12309.57,W to długość geograficzna punktu końcowego, 123 stopnie 09.57 minut na zachód

    001.3 – odległość do punktu w milach morskich

    000.5 - prędkość, w węzłach

    V - informacja o przyjeździe (A - dojazd, V - punkt jeszcze nie osiągnięty)

RTE — informacje o routingu

Wiadomość NMEA RTE zawiera listę punktów na aktywnej trasie. Istnieją dwa rodzaje komunikatów RTE. W pierwszym przypadku wyświetlane są wszystkie punkty trasy. W drugim tylko lista pozostałych punktów, które nie zostały jeszcze odwiedzone podczas poruszania się po trasie. Biorąc pod uwagę, że protokół NMEA ma ograniczenie, że długość komunikatu nie powinna przekraczać 80 znaków, komunikat RTE może składać się z kilku wierszy.

$GPRTE,2,1,c,0,W3IWI,DRIVWY,32CEDR,32-29,32BKLD,32-I95,32-US1,BW-32,BW-198*69

    RTE – nagłówek NMEA

    2 - całkowita liczba komunikatów do wyświetlenia pełnej listy danych

    1 – numer wiadomości z listy ogólnej

    с – rodzaj komunikatu RTE (с – pełna lista punktów na drodze, w – lista punktów do odwiedzenia)

    0 - identyfikator trasy

    W3IWI,DRIVWY,.. - lista punktów trasy

Funkcje Garmin

Odbiorniki Garmin obsługują większość wiadomości NMEA zawierających pomiary GPS, współrzędne i czas - GGA, GLL, GSA, GSV, RMC. Oraz komunikaty nawigacyjne - RMB, BOD

Aby wyświetlić te komunikaty, należy zmienić interfejs z „Garmin” na „NMEA” w ustawieniach odbiornika i ewentualnie ustawić żądaną prędkość. Tę samą prędkość należy ustawić w programie nawigacyjnym w ustawieniach portu szeregowego, do którego podłączony jest nawigator.

Niestety odbiorniki z portem USB nie obsługują protokołu NMEA, ograniczając jego ustawienia tylko do protokołu Garmin.

Aby wyświetlić informacje przychodzące do portu szeregowego komputera, możesz użyć programu terminala Windows lub jednego z programów nawigacyjnych obsługujących tę funkcję.

Poniżej znajduje się lista wiadomości NMEA odbiornika Garmin eMap, które są zawarte w tej samej epoce.

$GPMC,135412,A,5522.8973,N,03710.1401,E,0.0,0.0,190507,9.3,E,A*1F

$GPRMB,A,,A,A*0B

$GPGGA,135412,5522,8973,N,03710.1401,E,1,04,5.4,205,2,M,15,8,M,*4A

$GPGSA,A,3,08,13,23,25,5,7,5,4,1,0*3C

$GPGSV,3,1,11,02,15,267,00,03,11,085,45,04,05,236,00,08,39,233,00*77

$GPGSV,3,2,11,10,32,308,00,13,63,109,43,16,17,037,00,23,31,111,38*77

$GPGSV,3,3,11,24,09,343,00,25,66,077,44,27,69,229,00*46

$GPGLL,5522,8973,N,03710,1401,E,135412,A,A*43

$GPBOD,T,M,*47

$PGRME,19,1,M,15,2,M,25,3,M*15

$PGRMZ,673,f,3*19

$ PGRMM, WGS 84*06

Oprócz standardowych komunikatów NMEA, odbiorniki Garmin implementują własny zestaw komunikatów, z których każdy zawiera prefiks „GRM” w nagłówku, identyfikator „M” lub „Z” identyfikujący typ danych oraz pojedynczy znak nazwy.

PGRME – Szacowanie błędu pozycji

$PGRME,15,0,M,45,0,M,25,0,M*1C

    15.0,M - oszacowanie błędu pozycjonowania poziomego, w metrach

    45,0,M - oszacowanie błędu pionowego, w metrach

    25.0,M - równoważny błąd pozycjonowania sferycznego

PGRMZ - pomiary wysokości

$PGRMZ,93,f,3*21

    93.f to wartość wzrostu w funtach

    3 - warunki pomiaru pozycji (2 - wysokość określona przez użytkownika,

    3 - wysokość obliczona przez GPS)

PGRMM - aktualny punkt odniesienia

$PGRMM,NAD27 Kanada*2F

    NAD27 Kanada to nazwa obecnego poziomego układu odniesienia

Funkcje Sirf

Chipy GPS Sirf są używane w różnych urządzeniach do nawigacji GPS, od konwencjonalnych płyt do przenośnych i samochodowych nawigatorów GPS. Ale w przeciwieństwie do nawigatorów obsługują tylko wiadomości NMEA związane z pomiarami GPS, obliczaniem pozycji i czasu - GGA, GLL, GSA, GSV, RMC, VTG, ZDA.

„Sirf” obsługuje również kilka „przychodzących” wiadomości NMEA do konfiguracji i ustawiania różnych parametrów. Ponadto „Sirf” implementuje własny protokół binarny, który pozwala na zmianę znacznie większej liczby ustawień. Te 5 "przychodzących" wiadomości NMEA zaczyna się od prefiksu $PSFR, zgodnie z regułami. Wszystkie wiadomości zawierają stały zestaw danych i kończą się znakiem „\n” (znak wiersza)

Do konfiguracji parametrów „Sirf” służy specjalny program „SirfTech”. Ustawienia wiadomości NMEA są konfigurowane w osobnej pozycji menu.

$GPGGA,100643.000,5522.9036,N,03710.1282,E,1.07,1.6,209,9,M,14,9,M,0000*52

$GPGSA,A,3,31,01,23,20,11,30,14,2,1,1,1,6,1,4*35

$GPGSV,3,1,12,20,84,187,41,01,49,067,46,23,46,238,45,31,45,073,50*7B

$GPGSV,3,2,12,11,25,194,34,13,16,240,04,15,319,30,17,14,273,21*7A

$GPGSV,3,3,12,30,10 026,33,14,05,063,22,05,04,009,25,25,03,195,*7F

$GPMC,100643.000,A,5522.9036,N,03710.1282,E,0.16,119.11,200507,*0D

Jak widać z powyższego przykładu, ustawienia „fabryczne” zawierają mniej komunikatów NMEA w porównaniu z ustawieniami Garmin. W razie potrzeby zestaw ten można rozszerzyć, ustawiając okres w brakujących komunikatach NMEA.

$GPGGA,100833.000,5522.9076,N,03710.1270,E,1.07,1.3,222,4,M,14,9,M,0000*53

$GPGLL,5522,9076,N,03710.1270,E,100833.000,A*34

$GPGSA,A,3,31,01,23,20,11,30,17,2.1,1.3,1.6*31

$GPGSV,3,1,12,20,84,180,43,01,49,067,47,23,47,238,45,31,45,072,49*77

$GPGSV,3,2,12,11,24,193,26,13,16,240,26,04,15,319,24,17,13,273,31*78

$GPGSV,3,3,12,30,10 025,26,14,404,064,22,25,04,195,05,04,008,21*7C

$GPMC,100833.000,A,5522.9076,N,03710.1270,E,0.18,4.86,200507,*00

$GPVTG,4,86,T,M,0,18,N,0,3,K*60

$GPZDA,100834,000,20.05.2007,*5A

PSFR100, PSFR102 - konfiguracja portu szeregowego

Wiadomość NMEA o numerze 100 służy do ustawienia portu A, wiadomość 102 - port B. Wiadomość 100 posiada dodatkowe pole, które pozwala przełączyć interfejs na binarny protokół Sirf.

W związku z tym w protokole binarnym znajduje się polecenie, które przełącza port z powrotem do formatu NMEA. Przed przejściem na protokół binarny musisz zrozumieć, czy program, który później pozwoli ci przywrócić protokół NMEA.

$PSRF100.0.960.8.1.0*0C

$PSRF102.9600.8.1.0*3C

    PSRF100 — nagłówek NMEA

    0 - parametr wskazujący w jakim trybie zmieniono protokół (0-Sirf, 1-NMEA)

    9600 - szybkość portu (4800, 9600, 19200, 38400)

    8 - bity danych (7, 8)

    1 - bity stopu (0,1)

    0 - parowanie (0 - nie, 1-nieparzyste, 2-parzyste)

PSFR101, PSFR104 - inicjalizacja parametrów odbiornika

Wiadomości NMEA o numerach 101 i 104 są przeznaczone do inicjalizacji parametrów odbioru GPS. Zdefiniowanie tych parametrów może przyspieszyć czas akwizycji satelitów GPS. Komunikat 101 ustawia aktualne współrzędne w formacie XYZ, komunikat 104 - w formacie BLH (długość, szerokość geograficzna).

$PSRF101,-2686700,-4304200.3851624.95000.497260.921.12.3*22

$PSRF104.37.3875111,-121.97232.0.95000.237759.922.12.3*3A

    PSRF101 — nagłówek NMEA

    37,38751111 - szerokość geograficzna w stopniach

    121,97232 - długość geograficzna w stopniach

    0 - wysokość w metrach

    95000 - przesunięcie zegara

    237759 - Czas GPS, w sekundach

    922 - Numer tygodnia GPS

    12 - liczba kanałów

    3 – typ inicjalizacji danych (1 – gorący start, 2 – ciepły start, 3 – inicjalizacja danych, 4 – zimny start z całkowitym skasowaniem danych, 8 – zimny start z przywróceniem ustawień fabrycznych)

PSFR103 - Konfiguracja generowania komunikatów NMEA

Ta wiadomość NMEA umożliwia ustawienie lub zapytanie o okres generowania dla każdej „wychodzącej” wiadomości NMEA.

$PSRF103.05.00.01.01*20

    PSRF103 — nagłówek NMEA

    05 - tytuł wiadomości

    01 - okres, w sekundach (0-255)

    01 – obecność sumy kontrolnej (0- tak, 1 - nie)

Wyniki eksperymentu

W normalnych warunkach widoczności satelitów odbiornik Garmin eMap wysyła następujący zestaw komunikatów NMEA:

$GPMC,104644,A,5522.8965,N,03710.1389,E,0.0,0.0,200507,9.3,E,A*16

$GPRMB,A,,A,A*0B

$GPGGA,104644,5522,8965,N,03710,1389,E,1,07,1,2,186,6,M,15,8,M,*44

$GPGSA,A,3,01,04,13,16,20,23,31,2.1,1.2,1.7*35

$GPGSV,3,1,10,01,34,070,48,04,28,311,40,11,10,190,00,13,32,249,41*7E

$GPGSV,3,2,10,16,11,111,40,20,68,142,50,23,64,247,49,25,21,196,00*70

$GPGSV,3,3,10,30,05,012,00,31,36,055,52*7D

$GPGLL,5522,8965,N,03710,1389,E,104644,A,A*40

$GPBOD,T,M,*47

$PGRME,6,0,M,7,7,M,9,8,M*29

$PGRMZ,612,f,3*1E

$PGRM,WGS 84*06

$GPRTE,1,1,c,*37

Z analizy komunikatów widać, że w tej chwili odbiornik śledzi 10 satelitów (GSV), z których 7 (GGA) jest wykorzystywanych do obliczania pozycji. Błąd pozycjonowania poziomego wynosi 6 metrów (RME), a wskaźnik typu rozwiązania wynosi 1 (GGA)

Jeśli stworzysz warunki, w których sygnał GPS nie będzie odbierany, to komunikaty GGA będą zawierały "puste" pola, a wskaźnik typu rozwiązania przyjmie wartość 0 (GGA)

$GPGGA,0,00,M,M,*66

$GPGSA,A,1,,*1E

W trybie „normalnym” wiadomości RMB i BOD zawierają puste pola. Po wybraniu punktu trasy „Droga” jako ostatecznego celu podróży, pola te zostały „wypełnione” danymi. Jak wynika z analizy komunikatu, odległość do punktu to 1620 mil, azymut ruchu to 6,3 stopnia (BOD). W tym przypadku azymut wiadomości BOD i RMB różni się o 0,1 stopnia.

$GPRMB,A,0.00,R,Droga,5524.501,N,03710.445,E,1.620,6.4,V,A*59

$GPBOD,6,3,T,357,0,M,Droga,*74

Po wybraniu trasy domowej do nawigacji, lista wszystkich punktów trasy została wyświetlona na liście wiadomości RTE. A w komunikacie RMB - numery identyfikacyjne punktu początkowego i końcowego (następnego) trasy.

$GPRTE,1,1,c,DOM,SLOBODA,IERUSALIM,INSTYTUT*01

$GPRMB,A,9.99,R,SLOBOD,IERUSAL,5555.237,N,03649.976,E,34.346,340.6,V,A*1F

Wniosek

W większości przypadków użytkownik nie musi i nie jest zainteresowany tym, jakie dane iw jakich polach są przesyłane. Większość programów nawigacyjnych "parsuje" dane wiadomości NMEA i prezentuje je w przyjaznej dla użytkownika formie - wykresy, wykresy, tabele itp.

Szczególnie interesujące są komunikaty NMEA dla użytkowników, którzy chcieliby zbadać dane GPS, obliczyć szacunkowe wyniki otrzymanych pomiarów lub przeanalizować zachowanie odbiorników nawigacyjnych w różnych warunkach. Istnieje wiele programów, za pomocą których można rozwiązać te problemy.

Jednak do głębokiej analizy danych GPS format NMEA nie jest przeznaczony, ponieważ nie zawiera tak zwanych „surowych” pomiarów - pseudoodległości, fazy, dopplera. Każdy producent sprzętu nawigacyjnego ma swój własny „otwarty” lub „zamknięty” protokół, który przekazuje te informacje.

NMEA to prosty i zrozumiały format, który nie tylko umożliwia wymianę danych między odbiornikami GPS a programami nawigacyjnymi, ale także daje użytkownikom pewne wyobrażenie o zasadach działania urządzeń do nawigacji satelitarnej.

Uwaga!

Jak materiał źródłowy używany artykuł ze strony " Portal GPS"