Differences

This shows you the differences between two versions of the page.

Link to this comparison view

atmel:nmea [2009/11/27 17:53] (current)
Line 1: Line 1:
 +
 +
 +=======NMEA Protocol=======
 +NMEA 0183 (or NMEA for short) is a combined electrical and data specification for communication between marine electronics and also, more generally, GPS receivers.
 +
 +The NMEA 0183 protocol is a means by which marine instruments and also most GPS receivers can communicate with each other. It has been defined by, and is controlled by, the US based National Marine Electronics Association.
 +
 +The 0183 standard, uses a simple serial protocol transmitting a "​sentence"​ from one "​talker"​ to one or more "​listeners"​.
 +
 +See Wikipedia: [[wp>​NMEA]]
 +
 +=====All $GPxxx sentence codes and short descriptions=====
 +
 +  * $GPAAM - Waypoint Arrival Alarm
 +  * $GPALM - GPS Almanac Data
 +  * $GPAPA - Autopilot format "​A"​
 +  * $GPAPB - Autopilot format "​B"​
 +  * $GPASD - Autopilot System Data
 +  * $GPBEC - Bearing & Distance to Waypoint, Dead Reckoning
 +  * $GPBOD - Bearing, Origin to Destination
 +  * $GPBWC - Bearing & Distance to Waypoint, Great Circle
 +  * $GPBWR - Bearing & Distance to Waypoint, Rhumb Line
 +  * $GPBWW - Bearing, Waypoint to Waypoint
 +  * $GPDBT - Depth Below Transducer
 +  * $GPDCN - Decca Position
 +  * $GPDPT - Depth
 +  * $GPFSI - Frequency Set Information
 +  * $GPGGA - Global Positioning System Fix Data
 +  * $GPGLC - Geographic Position, Loran-C
 +  * $GPGLL - Geographic Position, Latitude/​Longitude
 +  * $GPGRS - GPS Range Residuals
 +  * $GPGSA - GPS DOP and Active Satellites
 +  * $GPGST - GPS Pseudorange Noise Statistics
 +  * $GPGSV - GPS Satellites in View
 +  * $GPGXA - TRANSIT Position
 +  * $GPHDG - Heading, Deviation & Variation
 +  * $GPHDT - Heading, True
 +  * $GPHSC - Heading Steering Command
 +  * $GPLCD - Loran-C Signal Data
 +  * $GPMSK - Control for a Beacon Receiver
 +  * $GPMSS - Beacon Receiver Status
 +  * $GPMTA - Air Temperature (to be phased out)
 +  * $GPMTW - Water Temperature
 +  * $GPMWD - Wind Direction
 +  * $GPMWV - Wind Speed and Angle
 +  * $GPOLN - Omega Lane Numbers
 +  * $GPOSD - Own Ship Data
 +  * $GPR00 - Waypoint active route (not standard)
 +  * $GPRMA - Recommended Minimum Specific Loran-C Data
 +  * $GPRMB - Recommended Minimum Navigation Information
 +  * $GPRMC - Recommended Minimum Specific GPS/TRANSIT Data
 +  * $GPROT - Rate of Turn
 +  * $GPRPM - Revolutions
 +  * $GPRSA - Rudder Sensor Angle
 +  * $GPRSD - RADAR System Data
 +  * $GPRTE - Routes
 +  * $GPSFI - Scanning Frequency Information
 +  * $GPSTN - Multiple Data ID
 +  * $GPTRF - Transit Fix Data
 +  * $GPTTM - Tracked Target Message
 +  * $GPVBW - Dual Ground/​Water Speed
 +  * $GPVDR - Set and Drift
 +  * $GPVHW - Water Speed and Heading
 +  * $GPVLW - Distance Traveled through the Water
 +  * $GPVPW - Speed, Measured Parallel to Wind
 +  * $GPVTG - Track Made Good and Ground Speed
 +  * $GPWCV - Waypoint Closure Velocity
 +  * $GPWNC - Distance, Waypoint to Waypoint
 +  * $GPWPL - Waypoint Location
 +  * $GPXDR - Transducer Measurements
 +  * $GPXTE - Cross-Track Error, Measured
 +  * $GPXTR - Cross-Track Error, Dead Reckoning
 +  * $GPZDA - UTC Date / Time and Local Time Zone Offset
 +  * $GPZFO - UTC & Time from Origin Waypoint
 +  * $GPZTG - UTC & Time to Destination Waypoint
 +=====26 interpreted sentences transmitted by GPS unit=====
 +
 +====$GPAAM====
 +
 +**Waypoint Arrival Alarm**
 +
 +
 +This sentence is generated by some units to indicate the Status of arrival (entering the
 +arrival circle, or passing the perpendicular of the course line) at the destination waypoint.
 +<​code>​
 +  $GPAAM,​A,​A,​0.10,​N,​WPTNME*43
 +
 +Where:
 +    AAM    Arrival Alarm
 +    A      Arrival circle entered
 +    A      Perpendicular passed
 +    0.10   ​Circle radius
 +    N      Nautical miles
 +    WPTNME Waypoint name
 +    *43    Checksum data
 +</​code>​
 +
 +
 +====$GPALM====
 +
 +**GPS Almanac Data**
 +
 +
 +A set of sentences transmitted by some Garmin units in response
 +to a received $PGRMO,​GPALM,​1 sentence. It can also be received by
 +some GPS units (eg. Garmin GPS 16 and GPS 17) to initialize the
 +stored almanac information in the unit.
 +
 +Example 1: $GPALM,​1,​2,​3,​4,​5,​6,​7,​8,​9,​10,​11,​12,​13,​14,​15,​*CC
 +<​code>​
 +1 = Total number of sentences in set
 +2 = Sentence sequence number in set
 +3 = Satellite number
 +4 = GPS week number
 +5 = Bits 17 to 24 of almanac page indicating SV health
 +6 = Eccentricity
 +7 = Reference time of almanac
 +8 = Inclination angle
 +9 = Right ascension rate
 +10 = Semi major axis route
 +11 = Argument of perigee (omega)
 +12 = Ascension node longitude
 +13 = Mean anomaly
 +14 = af0 clock parameter
 +15 = af1 clock parameter
 +</​code>​
 +
 +Example 2: $GPALM,​1,​1,​15,​1159,​00,​441d,​4e,​16be,​fd5e,​a10c9f,​4a2da4,​686e81,​58cbe1,​0a4,​001*5B
 +
 +^Field ^Example ^Comments ^
 +|Sentence ID |$GPALM | |
 +|Number of messages |1 |Total number of messages in sequence |
 +|Sequence number |1 |This is first message in sequence |
 +|Satellite PRN |15 |Unique ID (PRN) of satellite message relates to |
 +|GPS week number |1159 | |
 +|SV health |00 |Bits 17-24 of almanac page |
 +|Eccentricity |441d | |
 +|Reference time |4e |Almanac reference time |
 +|Inclination angle |16be | |
 +|Rate of right ascension |fd5e | |
 +|Roor of semi-major axis |a10c9f | |
 +|Argument of perigee |4a2da4 | |
 +|Longitude of ascension node |686e81 | |
 +|Mean anomoly |58cbe1 | |
 +|F0 clock parameter |0a4 | |
 +|F1 clock parameter |001 | |
 +|Checksum |*5B | |
 +
 +====$GPAPB====
 +
 +**Autopilot format "​B"​**
 +
 +
 +This sentence is sent by some
 +GPS receivers to allow them to be used to control an autopilot unit.
 +This sentence is commonly used by autopilots and contains navigation
 +receiver warning flag status, cross-track-error,​ waypoint arrival
 +status, initial bearing from origin waypoint to the destination,​
 +continuous bearing from present position to destination and
 +recommended heading-to-steer to destination waypoint for the active
 +navigation leg of the journey.
 +
 +Note: Some autopilots, Robertson in particular, misinterpret
 +"​bearing from origin to destination"​ as "​bearing from present position
 +to destination"​. ​ This is likely due to the difference between the APB
 +sentence and the APA sentence. for the APA sentence this would be the
 +correct thing to do for the data in the same field. ​ APA only differs
 +from APB in this one field and APA leaves off the last two fields
 +where this distinction is clearly spelled out.  This will result in
 +poor performance if the boat is sufficiently off-course that the two
 +bearings are different.
 +
 +<​code>​
 +  $GPAPB,​A,​A,​0.10,​R,​N,​V,​V,​011,​M,​DEST,​011,​M,​011,​M*82
 +
 +where:
 +    APB     ​Autopilot format B
 +    A       ​Loran-C blink/SNR warning, general warning
 +    A       ​Loran-C cycle warning
 +    0.10    cross-track error distance
 +    R       steer Right to correct (or L for Left)
 +    N       ​cross-track error units - nautical miles (K for kilometers)
 +    V       ​arrival alarm - circle
 +    V       ​arrival alarm - perpendicular
 +    011,M   ​magnetic bearing, origin to destination
 +    DEST    destination waypoint ID
 +    011,M   ​magnetic bearing, present position to destination
 +    011,M   ​magnetic heading to steer (bearings could True as 033,T)
 +</​code>​
 +
 +
 +====$GPBOD====
 +
 +**Bearing Origin to Destination**
 +<​code>​
 +eg.  BOD,​045.,​T,​023.,​M,​DEST,​START
 +           ​045.,​T ​      ​bearing 045 degrees True from "​START"​ to "​DEST"​
 +           ​023.,​M ​      ​breaing 023 degrees Magnetic from "​START"​ to "​DEST"​
 +           ​DEST ​        ​destination waypoint ID
 +           ​START ​       origin waypoint ID
 +
 +</​code>​
 +
 +Example 1: $GPBOD,​099.3,​T,​105.6,​M,​POINTB,​*01\\
 +Waypoint ID: "​POINTB"​ Bearing 99.3 True, 105.6 Magnetic \\
 +This sentence is transmitted in the GOTO mode, without an active route on your GPS.
 +WARNING: this is the bearing from the moment you press enter in the GOTO
 +page to the destination waypoint and is NOT updated dynamically!
 +To update the information,​ (current bearing to waypoint), you will have to press enter in the GOTO page again.
 +
 +Example 2: $GPBOD,​097.0,​T,​103.2,​M,​POINTB,​POINTA*52\\
 +This sentence is transmitted when a route is active. It contains the active leg information:​ origin waypoint "​POINTA"​ and destination waypoint "​POINTB",​ bearing between the two points 97.0 True, 103.2 Magnetic. It does NOT display the bearing from current location to destination waypoint!
 +WARNING Again this information does not change until you are on the next leg of the route. (The bearing from POINTA to POINTB does not change during the time you are on this leg.)
 +
 +
 +====$GPBWC====
 +
 +**Bearing and distance to waypoint, great circle**
 +<​code>​
 +eg1. $GPBWC,​081837,,,,,,​T,,​M,,​N,​*13
 +
 +        BWC,​225444,​4917.24,​N,​12309.57,​W,​051.9,​T,​031.6,​M,​001.3,​N,​004*29
 +           ​225444 ​      UTC time of fix 22:54:44
 +           ​4917.24,​N ​   Latitude of waypoint
 +           ​12309.57,​W ​  ​Longitude of waypoint
 +           ​051.9,​T ​     Bearing to waypoint, degrees true
 +           ​031.6,​M ​     Bearing to waypoint, degrees magnetic
 +           ​001.3,​N ​     Distance to waypoint, Nautical miles
 +           ​004 ​         Waypoint ID
 +
 +eg2. $GPBWC,​220516,​5130.02,​N,​00046.34,​W,​213.8,​T,​218.0,​M,​0004.6,​N,​EGLM*11
 +               ​1 ​     2    3     ​4 ​   5    6  7   ​8 ​  ​9 ​   10  11 12 13
 +
 +      1    220516 ​   timestamp
 +      2    5130.02 ​  ​Latitude of next waypoint
 +      3    N         ​North/​South
 +      4    00046.34 ​ Longitude of next waypoint
 +      5    W         ​East/​West
 +      6    213.0     True track to waypoint
 +      7    T         True Track
 +      8    218.0     ​Magnetic track to waypoint
 +      9    M         ​Magnetic
 +      10   ​0004.6 ​   range to waypoint
 +      11   ​N ​        unit of range to waypoint, N = Nautical miles
 +      12   ​EGLM ​     Waypoint name
 +      13   ​*11 ​      ​checksum
 +</​code>​
 +
 +
 +
 +====$GPGGA====
 +
 +**Global Positioning System Fix Data**
 +
 +
 +eg1. $GPGGA,​170834,​4124.8963,​N,​08151.6838,​W,​1,​05,​1.5,​280.2,​M,​-34.0,​M,,,​*75
 +
 +^Name  ^Example Data  ^Description ​ ^
 +|Sentence Identifier |$GPGGA |Global Positioning System Fix Data |
 +|Time |170834 |17:08:34 UTC |
 +|Latitude |4124.8963, N |41d 24.8963'​ N or 41d 24' 54" N |
 +|Longitude |08151.6838,​ W |81d 51.6838'​ W or 81d 51' 41" W |
 +|Fix Quality:\\ * 0 = Invalid\\ ​ * 1 = GPS fix\\ * 2 = DGPS fix |1 |Data is from a GPS fix |
 +|Number of Satellites |05 |5 Satellites are in view |
 +|Horizontal Dilution of Precision (HDOP) |1.5 |Relative accuracy of horizontal position |
 +|Altitude |280.2, M |280.2 meters above mean sea level |
 +|Height of geoid above WGS84 ellipsoid |-34.0, M |-34.0 meters |
 +|Time since last DGPS update |blank |No last update |
 +|DGPS reference station id |blank |No station id |
 +|Checksum |*75 |Used by program to check for transmission errors |
 +Global Positioning System Fix Data.\\
 +Time, position and fix related data for a GPS receiver.
 +
 +eg2. $GPGGA,​hhmmss.ss,​ddmm.mmm,​a,​dddmm.mmm,​b,​q,​xx,​p.p,​a.b,​M,​c.d,​M,​x.x,​nnnn
 +
 +hhmmss.ss = UTC of position \\
 +ddmm.mmm = latitude of position\\
 +a = N or S, latitutde hemisphere\\
 +dddmm.mmm = longitude of position\\
 +b = E or W, longitude hemisphere \\
 +q = GPS Quality indicator (0=No fix, 1=Non-differential GPS fix, 2=Differential GPS fix, 6=Estimated fix) \\
 +xx = number of satellites in use \\
 +p.p = horizontal dilution of precision \\
 +a.b = Antenna altitude above mean-sea-level\\
 +
 +M = units of antenna altitude, meters \\
 +c.d = Geoidal height\\
 +M = units of geoidal height, meters \\
 +x.x = Age of Differential GPS data (seconds since last valid RTCM transmission) \\
 +nnnn = Differential reference station ID, 0000 to 1023 \\
 +
 +
 +====$GPGLL====
 +
 +**Geographic Position, Latitude / Longitude and time.**
 +<​code>​
 +eg1. $GPGLL,​3751.65,​S,​14507.36,​E*77
 +eg2. $GPGLL,​4916.45,​N,​12311.12,​W,​225444,​A
 +
 +           ​4916.46,​N ​   Latitude 49 deg. 16.45 min. North
 +           ​12311.12,​W ​  ​Longitude 123 deg. 11.12 min. West
 +           ​225444 ​      Fix taken at 22:54:44 UTC
 +           ​A ​           Data valid
 +
 +eg3. $GPGLL,​5133.81,​N,​00042.25,​W*75
 +               ​1 ​   2     ​3 ​   4 5
 +
 +      1    5133.81 ​  ​Current latitude
 +      2    N         ​North/​South
 +      3    00042.25 ​ Current longitude
 +      4    W         ​East/​West
 +      5    *75       ​checksum
 +</​code>​
 +
 +$--GLL,​lll.ll,​a,​yyyyy.yy,​a,​hhmmss.ss,​A ​ llll.ll = Latitude of position
 +
 +a = N or S \\
 +yyyyy.yy = Longitude of position \\
 +a = E or W \\
 +hhmmss.ss = UTC of position \\
 +A = status: A = valid data  \\
 +
 +
 +====$GPGRS====
 +
 +**GPS Range Residuals**
 +
 +
 +Example: $GPGRS,​024603.00,​1,​-1.8,​-2.7,​0.3,,,,,,,,,​*6C
 +
 +^Field ^Example ^Comments ^
 +|Sentence ID |$GPGRS | |
 +|UTC Time |024603.00 |UTC time of associated GGA fix |
 +|Mode |1 |0 = Residuals used in GGA, 1 = residuals calculated after GGA |
 +|Sat 1 residual |-1.8 |Residual (meters) of satellite 1 in solution |
 +|Sat 2 residual |-2.7 |The order matches the PRN numbers in the GSA sentence |
 +|Sat 3 residual |0.3 | |
 +|Sat 4 residual | |Unused entries are blank |
 +|Sat 5 residual | | |
 +|Sat 6 residual | | |
 +|Sat 7 residual | | |
 +|Sat 8 residual | | |
 +|Sat 9 residual | | |
 +|Sat 10 residual | | |
 +|Sat 11 residual | | |
 +|Sat 12 residual | | |
 +|Checksum |*6C | |
 +
 +====$GPGSA====
 +
 +**GPS DOP and active satellites**
 +<​code>​
 +eg1. $GPGSA,​A,​3,,,,,,​16,​18,,​22,​24,,,​3.6,​2.1,​2.2*3C
 +eg2. $GPGSA,​A,​3,​19,​28,​14,​18,​27,​22,​31,​39,,,,,​1.7,​1.0,​1.3*34
 +
 +1    = Mode:
 +       ​M=Manual,​ forced to operate in 2D or 3D
 +       ​A=Automatic,​ 3D/2D
 +2    = Mode:
 +       1=Fix not available
 +       2=2D
 +       3=3D
 +3-14 = PRN's of Satellite Vechicles (SV's) used in position fix (null for unused fields)
 +15   = Position Dilution of Precision (PDOP)
 +16   = Horizontal Dilution of Precision (HDOP)
 +17   = Vertical Dilution of Precision (VDOP)
 +</​code>​
 +
 +
 +====$GPGST====
 +
 +**GPS Pseudorange Noise Statistics**
 +
 +
 +Example: $GPGST,​024603.00,​3.2,​6.6,​4.7,​47.3,​5.8,​5.6,​22.0*58
 +
 +^Field ^Example ^Comments ^
 +|Sentence ID |$GPGST | |
 +|UTC Time |024603.00 |UTC time of associated GGA fix |
 +|RMS deviation |3.2 |Total RMS standard deviation of ranges inputs to the navigation solution |
 +|Semi-major deviation |6.6 |Standard deviation (meters) of semi-major axis of error ellipse |
 +|Semi-minor deviation |4.7 |Standard deviation (meters) of semi-minor axis of error ellipse |
 +|Semi-major orientation |47.3 |Orientation of semi-major axis of error ellipse (true north degrees) |
 +|Latitude error deviation |5.8 |Standard deviation (meters) of latitude error |
 +|Longitude error deviation |5.6 |Standard deviation (meters) of longitude error |
 +|Altitude error deviation |22.0 |Standard deviation (meters) of latitude error |
 +|Checksum |*58 | |
 +
 +====$GPGSV====
 +
 +**GPS Satellites in view**
 +<​code>​
 +eg. $GPGSV,​3,​1,​11,​03,​03,​111,​00,​04,​15,​270,​00,​06,​01,​010,​00,​13,​06,​292,​00*74
 +    $GPGSV,​3,​2,​11,​14,​25,​170,​00,​16,​57,​208,​39,​18,​67,​296,​40,​19,​40,​246,​00*74
 +    $GPGSV,​3,​3,​11,​22,​42,​067,​42,​24,​14,​311,​43,​27,​05,​244,​00,,,,​*4D
 +
 +    $GPGSV,​1,​1,​13,​02,​02,​213,,​03,​-3,​000,,​11,​00,​121,,​14,​13,​172,​05*62
 +
 +1    = Total number of messages of this type in this cycle
 +2    = Message number
 +3    = Total number of SVs in view
 +4    = SV PRN number
 +5    = Elevation in degrees, 90 maximum
 +6    = Azimuth, degrees from true north, 000 to 359
 +7    = SNR, 00-99 dB (null when not tracking)
 +8-11 = Information about second SV, same as field 4-7
 +12-15= Information about third SV, same as field 4-7
 +16-19= Information about fourth SV, same as field 4-7
 +</​code>​
 +
 +
 +====$GPHDT====
 +
 +**Heading, True.**
 +
 +
 +Actual vessel heading in degrees Ture produced by any device or system producing true heading.
 +
 +$--HDT,​x.x,​T\\
 + x.x = Heading, degrees True
 +
 +
 +
 +====$GPMSK====
 +
 +**Control for a Beacon Receiver**
 +
 +
 +<​code>​
 +  $GPMSK,​318.0,​A,​100,​M,​2*45
 +
 +where:
 +       ​318.0 ​     Frequency to use
 +       ​A ​         Frequency mode, A=auto, M=manual
 +       ​100 ​       Beacon bit rate
 +       ​M ​         Bitrate, A=auto, M=manual
 +       ​2 ​         frequency for MSS message status (null for no status)
 +       ​*45 ​       checksum
 +</​code>​
 +
 +
 +====$GPMSS====
 +
 +**Beacon Receiver Status**
 +
 +
 +Example 1: $GPMSS,​55,​27,​318.0,​100,​*66
 +
 +<​code>​
 +where:
 +       ​55 ​        ​signal strength in dB
 +       ​27 ​        ​signal to noise ratio in dB
 +       ​318.0 ​     Beacon Frequency in KHz
 +       ​100 ​       Beacon bitrate in bps
 +       ​*66 ​       checksum
 +</​code>​
 +
 +Example 2: $GPMSS,​0.0,​0.0,​0.0,​25,​2*6D
 +
 +^Field ^Example ^Comments ^
 +|Sentence ID |$GPMSS | |
 +|Signal strength |0.0 |Signal strength (dB 1uV) |
 +|SNR |0.0 |Signal to noise ratio (dB) |
 +|Frequency |0.0 |Beacon frequency (kHz) |
 +|Data rate |25 |Beacon data rate (BPS) |
 +|Unknown field |2 |Unknown field sent by GPS receiver used for test |
 +|Checksum |*6D | |
 +
 +====$GPR00====
 +
 +**List of waypoint IDs in currently active route**
 +
 +
 +<​code>​
 +eg1. $GPR00,​EGLL,​EGLM,​EGTB,​EGUB,​EGTK,​MBOT,​EGTB,,,,,,,​*58
 +eg2. $GPR00,​MINST,​CHATN,​CHAT1,​CHATW,​CHATM,​CHATE,​003,​004,​005,​006,​007,,,​*05
 +
 +List of waypoints. This alternates with $GPWPL cycle
 +which itself cycles waypoints.
 +</​code>​
 +
 +
 +====$GPRMA====
 +
 +**Recommended minimum specific Loran-C data**
 +<​code>​
 +eg. $GPRMA,​A,​lll,​N,​lll,​W,​x,​y,​ss.s,​ccc,​vv.v,​W*hh
 +A    = Data status
 +lll  = Latitude
 +N    = N/S
 +lll  = longitude
 +S    = W/E
 +x    = not used
 +y    = not used
 +ss.s = Speed over ground in knots
 +ccc  = Course over ground
 +vv.v = Variation
 +W    = Direction of variation E/W
 +hh   = Checksum
 +</​code>​
 +
 +
 +====$GPRMB====
 +
 +**Recommended minimum navigation information (sent by nav.
 +receiver when a destination waypoint is active)**
 +<​code>​
 +eg1. $GPRMB,​A,​0.66,​L,​003,​004,​4917.24,​N,​12309.57,​W,​001.3,​052.5,​000.5,​V*0B
 +
 +           ​A ​           Data status A = OK, V = warning
 +           ​0.66,​L ​      ​Cross-track error (nautical miles, 9.9 max.),
 +                                steer Left to correct (or R = right)
 +           ​003 ​         Origin waypoint ID
 +           ​004 ​         Destination waypoint ID
 +           ​4917.24,​N ​   Destination waypoint latitude 49 deg. 17.24 min. N
 +           ​12309.57,​W ​  ​Destination waypoint longitude 123 deg. 09.57 min. W
 +           ​001.3 ​       Range to destination,​ nautical miles
 +           ​052.5 ​       True bearing to destination
 +           ​000.5 ​       Velocity towards destination,​ knots
 +           ​V ​           Arrival alarm  A = arrived, V = not arrived
 +           ​*0B ​         mandatory checksum
 +
 +eg2. $GPRMB,​A,​4.08,​L,​EGLL,​EGLM,​5130.02,​N,​00046.34,​W,​004.6,​213.9,​122.9,​A*3D
 +            1   ​2 ​ 3   ​4 ​   5    6     ​7 ​  ​8 ​     9   ​10 ​   11    12   13
 +
 +      1    A         ​validity
 +      2    4.08      off track
 +      3    L         Steer Left (L/R)
 +      4    EGLL      last waypoint
 +      5    EGLM      next waypoint
 +      6    5130.02 ​  ​Latitude of Next waypoint
 +      7    N         ​North/​South
 +      8    00046.34 ​ Longitude of next waypoint
 +      9    W         ​East/​West
 +      10   ​004.6 ​    Range
 +      11   ​213.9 ​    ​bearing to waypt.
 +      12   ​122.9 ​    ​closing velocity
 +      13   ​A ​        ​validity
 +      14   ​*3D ​      ​checksum
 +
 +eg3. $GPRMB,​A,​x.x,​a,​c--c,​d--d,​llll.ll,​e,​yyyyy.yy,​f,​g.g,​h.h,​i.i,​j*kk
 +1    = Data Status (V=navigation receiver warning)
 +2    = Crosstrack error in nautical miles
 +3    = Direction to steer (L or R) to correct error
 +4    = Origin waypoint ID#
 +5    = Destination waypoint ID#
 +6    = Destination waypoint latitude
 +7    = N or S
 +8    = Destination waypoint longitude
 +9    = E or W
 +10   = Range to destination in nautical miles
 +11   = Bearing to destination,​ degrees True
 +12   = Destination closing velocity in knots
 +13   = Arrival status; (A=entered or perpendicular passed)
 +14   = Checksum
 +</​code>​
 +
 +
 +====$GPRMC====
 +
 +**Recommended minimum specific GPS/Transit data**
 +<​code>​
 +eg1. $GPRMC,​081836,​A,​3751.65,​S,​14507.36,​E,​000.0,​360.0,​130998,​011.3,​E*62
 +eg2. $GPRMC,​225446,​A,​4916.45,​N,​12311.12,​W,​000.5,​054.7,​191194,​020.3,​E*68
 +
 +           ​225446 ​      Time of fix 22:54:46 UTC
 +           ​A ​           Navigation receiver warning A = Valid position, V = Warning
 +           ​4916.45,​N ​   Latitude 49 deg. 16.45 min. North
 +           ​12311.12,​W ​  ​Longitude 123 deg. 11.12 min. West
 +           ​000.5 ​       Speed over ground, Knots
 +           ​054.7 ​       Course Made Good, degrees true
 +           ​191194 ​      UTC Date of fix, 19 November 1994
 +           ​020.3,​E ​     Magnetic variation, 20.3 deg. East
 +           ​*68 ​         mandatory checksum
 +
 +eg3. $GPRMC,​220516,​A,​5133.82,​N,​00042.24,​W,​173.8,​231.8,​130694,​004.2,​W*70
 +              1    2    3    4    5     ​6 ​   7    8      9     ​10 ​ 11 12
 +
 +      1   ​220516 ​    Time Stamp
 +      2   ​A ​         validity - A-ok, V-invalid
 +      3   ​5133.82 ​   current Latitude
 +      4   ​N ​         North/South
 +      5   ​00042.24 ​  ​current Longitude
 +      6   ​W ​         East/West
 +      7   ​173.8 ​     Speed in knots
 +      8   ​231.8 ​     True course
 +      9   ​130694 ​    Date Stamp
 +      10  004.2      Variation
 +      11  W          East/West
 +      12  *70        checksum
 +
 +eg4. for NMEA 0183 version 3.00 active the Mode indicator field is added
 +     ​$GPRMC,​hhmmss.ss,​A,​llll.ll,​a,​yyyyy.yy,​a,​x.x,​x.x,​ddmmyy,​x.x,​a,​m*hh
 +Field #
 +1    = UTC time of fix
 +2    = Data status (A=Valid position, V=navigation receiver warning)
 +3    = Latitude of fix
 +4    = N or S of longitude
 +5    = Longitude of fix
 +6    = E or W of longitude
 +7    = Speed over ground in knots
 +8    = Track made good in degrees True
 +9    = UTC date of fix
 +10   = Magnetic variation degrees (Easterly var. subtracts from true course)
 +11   = E or W of magnetic variation
 +12   = Mode indicator, (A=Autonomous,​ D=Differential,​ E=Estimated,​ N=Data not valid)
 +13   = Checksum
 +</​code>​
 +
 +
 +====$GPRTE====
 +
 +**Routes**
 +<​code>​
 +eg. $GPRTE,​2,​1,​c,​0,​PBRCPK,​PBRTO,​PTELGR,​PPLAND,​PYAMBU,​PPFAIR,​PWARRN,​PMORTL,​PLISMR*73
 +    $GPRTE,​2,​2,​c,​0,​PCRESY,​GRYRIE,​GCORIO,​GWERR,​GWESTG,​7FED*34
 +           1 2 3 4 5 ..
 +</​code>​
 +  * Number of sentences in sequence
 +  * Sentence number
 +  * '​c'​ = Current active route, '​w'​ = waypoint list starts with destination waypoint
 +  * Name or number of the active route
 +  * onwards, Names of waypoints in Route
 +
 +
 +====$GPTRF====
 +
 +**Transit Fix Data**
 +
 +
 +Time, date, position, and information related to a TRANSIT Fix.
 +
 +$--TRF,​hhmmss.ss,​xxxxxx,​llll.ll,​a,​yyyyy.yy,​a,​x.x,​x.x,​x.x,​x.x,​xxx\\
 +hhmmss.ss = UTC of position fix \\
 +
 +xxxxxx = Date: dd/mm/yy \\
 +llll.ll,a = Latitude of position fix, N/S \\
 +yyyyy.yy,a = Longitude of position fix, E/W \\
 +x.x = Elevation angle \\
 +x.x = Number of iterations\\
 +x.x = Number of Doppler intervals \\
 +x.x = Update distance, nautical miles \\
 +x.x = Satellite ID
 +
 +
 +
 +====$GPSTN====
 +
 +**Multiple Data ID.**
 +
 +
 +This sentence is transmitted before each individual sentence where there is a need for
 +the Listener to determine the exact source of data in the system. Examples might
 +include dual-frequency depthsounding equipment or equipment that integrates data
 +from a number of sources and produces a single output.
 +
 +$--STN,xx\\
 +xx = Talker ID number, 00 to 99
 +
 +
 +====$GPVBW====
 +
 +**Dual Ground / Water Speed**
 +
 +
 +Water referenced and ground referenced speed data.
 +
 +$--VBW,​x.x,​x.x,​A,​x.x,​x.x,​A\\
 +x.x = Longitudinal water speed, knots \\
 +x.x = Transverse water speed, knots \\
 +A = Status: Water speed, A = Data valid \\
 +
 +x.x = Longitudinal ground speed, knots \\
 +x.x = Transverse ground speed, knots \\
 +A = Status: Ground speed, A = Data valid
 +
 +
 +
 +====$GPVTG====
 +
 +**Track Made Good and Ground Speed.**
 +<​code>​
 +eg1. $GPVTG,​360.0,​T,​348.7,​M,​000.0,​N,​000.0,​K*43
 +eg2. $GPVTG,​054.7,​T,​034.4,​M,​005.5,​N,​010.2,​K*41
 +
 +           ​054.7,​T ​     True course made good over ground, degrees
 +           ​034.4,​M ​     Magnetic course made good over ground, degrees
 +           ​005.5,​N ​     Ground speed, N=Knots
 +           ​010.2,​K ​     Ground speed, K=Kilometers per hour
 +
 +eg3. for NMEA 0183 version 3.00 active the Mode indicator field
 +     is added at the end
 +     ​$GPVTG,​054.7,​T,​034.4,​M,​005.5,​N,​010.2,​K,​A*53
 +           ​A ​           Mode indicator (A=Autonomous,​ D=Differential,​
 +                        E=Estimated,​ N=Data not valid)
 +</​code>​
 +
 +
 +====$GPWPL====
 +
 +**Waypoint location**
 +<​code>​
 +eg1. $GPWPL,​4917.16,​N,​12310.64,​W,​003*65
 +
 +           ​4917.16,​N ​   Latitude of waypoint
 +           ​12310.64,​W ​  ​Longitude of waypoint
 +           ​003 ​         Waypoint ID
 +
 +             When a route is active, this sentence is sent once for each
 +             ​waypoint in the route, in sequence. When all waypoints have
 +             been reported, GPR00 is sent in the next data set. In any
 +             group of sentences, only one WPL sentence, or an R00
 +             ​sentence,​ will be sent.
 +
 +eg2.  $GPWPL,​5128.62,​N,​00027.58,​W,​EGLL*59
 +         ​1 ​    ​2 ​    ​3 ​   4  5   6
 +
 +      1    5128.62 ​  ​Latitude of nth waypoint on list
 +      2    N         ​North/​South
 +      3    00027.58 ​ Longitude of nth waypoint
 +      4    W         ​East/​West
 +      5    EGLL      Ident of nth waypoint
 +      6    *59       ​checksum
 +</​code>​
 +
 +
 +====$GPXTE====
 +
 +**Cross Track Error, Measured**
 +<​code>​
 +eg1. $GPXTE,​A,​A,​0.67,​L,​N
 +
 +           ​A ​           General warning flag V = warning
 +                                (Loran-C Blink or SNR warning)
 +           ​A ​           Not used for GPS (Loran-C cycle lock flag)
 +           ​0.67 ​        cross track error distance
 +           ​L ​           Steer left to correct error (or R for right)
 +           ​N ​           Distance units - Nautical miles
 +
 +eg2. $GPXTE,​A,​A,​4.07,​L,​N*6D
 +            1 2  3   4 5 6
 +
 +      1    A         ​validity
 +      2    A         cycle lock
 +      3    4.07      distance off track
 +      4    L         steer left (L/R)
 +      5    N         ​distance units
 +      6    *6D       ​checksum
 +</​code>​
 +
 +
 +====$GPZDA====
 +
 +**UTC Date / Time and Local Time Zone Offset**
 +
 +
 +Example 1: $GPZDA,​hhmmss.ss,​xx,​xx,​xxxx,​xx,​xx
 +
 +<​code>​hhmmss.ss = UTC
 +xx = Day, 01 to 31
 +xx = Month, 01 to 12
 +xxxx = Year
 +xx = Local zone description,​ 00 to +/- 13 hours
 +xx = Local zone minutes description (same sign as hours)
 +</​code>​
 +
 +Example 2: $GPZDA,​024611.08,​25,​03,​2002,​00,​00*6A
 +
 +^Field ^Example ^Comments ^
 +|Sentence ID |$GPZDA | |
 +|UTC Time |024611.08 |UTC time |
 +|UTC Day |25 |UTC day (01 to 31) |
 +|UTC Month |03 |UTC month (01 to 12) |
 +|UTC Year |2002 |UTC year (4 digit format) |
 +|Local zone hours |00 |Offset to local time zone in hours (+/- 00 to +/- 59) |
 +|Local zone minutes |00 |Offset to local time zone in minutes (00 to 59) |
 +|Checksum |*6A | |