diff --git a/Docs/Serial/nmeafaq.txt b/Docs/Serial/nmeafaq.txt new file mode 100644 index 000000000..6b8f47472 --- /dev/null +++ b/Docs/Serial/nmeafaq.txt @@ -0,0 +1,636 @@ +One place to find this document is at: + + ftp://sundae.triumf.ca/pub/peter/nmeafaq.txt + +--------------------------------------------------------------------------- + + + The NMEA FAQ + Version 6.1 Sept. 15, 1997 + (NMEA URL updated) + +Additions, corrections, and comments should be emailed to the author, +Peter Bennett bennett@triumf.ca + +Contents: + +1. What is NMEA? + 1.1 What is an NMEA Standard + 1.2 NMEA Address + +2. Electrical Interface + +3. NMEA-0180 and NMEA-0182 + 3.1 Simple Format + 3.2 Complex Format + +4. NMEA-0183 + + 4.1 General Sentence Format + 4.2 Sentences sent by specific equipment + 4.3 Sample Sentences Dissected + 4.3.1 Standard Sentences + 4.3.2 Garmin Proprietary Sentences + +5. RS-232 connections + +6. Troubleshooting + +7. About the author + 7.1 Acknowledgements + +1. What is NMEA? + + The National Marine Electronics Association is dedicated to the + education and advancement of the marine electronics industry and + the market which it serves. + + It is a non-profit association composed of manufacturers, + distributors, dealers, educational institutions, and others + interested in peripheral marine electronics occupations + (quoted from a promo in "NMEA News") + + + 1.1 What is an NMEA standard? + + For the purposes of this article, an NMEA standard defines an + electrical interface and data protocol for communications + between marine instrumentation. (They may also have standards + for other things.) + + 1.2 NMEA Address + + P.O. Box 3435 + New Bern NC, 28564-3435 + U.S.A. + Phone: 919-638-2626 + Fax: 919-638-4885 + email: nmea@coastalnet.com + web page: http://www4.coastalnet.com/nmea/default.html + + +2. Electrical Interface + + These standards allow a single "talker", and several "listeners" + on one circuit. The recommended interconnect wiring is a + shielded twisted pair, with the shield grounded only at the + talker. The standards do not specify the use of any particular + connector. + + + The NMEA-0180 and 0182 standards say that the talker output may + be RS-232, or from a TTL buffer, capable of delivering 10 mA at + 4 V. A sample circuit shows an open collector TTL buffer with a + 680 ohm resistor to +12 V, and a diode to prevent the output + voltage from rising above +5.7 V. + + NMEA-0183 accepts this, but recommends that the talker output + comply with EIA-422. This is a differential system, having two + signal lines, A and B. The voltages on the "A" line correspond + to those on the older TTL single wire, while the "B" voltages + are reversed (while "A" is at +5, "B" is at ground, and vice + versa) + + In either case, the recommended receive circuit uses an + opto-isolator with suitable protection circuitry. The input + should be isolated from the receiver's ground. + + In practice, the single wire, or the EIA-422 "A" wire may be + directly connected to a computer's RS-232 input. + + + +3. NMEA-0180 and NMEA 0182 + + NMEA-0180 and 0182 are very limited, and just deal with + communcations from a Loran-C (or other navigation receiver, + although the standards specifically mention Loran), and an + autopilot. + + From the information I have, it appears that 0180 and 0182 are + identical. I suspect that equipment claiming to use NMEA-0180 + will use the "simple" format described below, while those using + NMEA-0182 will use the "complex" format. (but this is really + just a guess... corrections??) + + 3.1 "Simple" data format + + The simple format consists of a single data byte transmitted at + intervals of 0.8 to 5 seconds, at 1200 baud with odd parity. + Bits 5 - 0 give the cross-track error in units of 0.1 uS or 0.01 + nautical mile. The error is given in offset binary, with a + count of 1 representing full scale right error, 32 (hex 20) for + on course, and 63 (hex 3f) full scale left error. Bit 6 is a 1 + if the data is valid, and bit 7 is 0 to indicate the simple + data format. + + 3.2 "Complex" data format + + The complex format consists of a data block of 37 bytes of + (mostly) readable ASCII text giving cross-track error, bearing + to waypoint, present Lat/Long, and a binary status byte. The + data block shall be sent at intervals of 2 to 8 sec. All bytes + in the complex format have bit 7 = 1 to distinguish them from + the simple format. It is permissible for a sending device to + send both simple and complex data, and even to send a "simple" + data byte in the middle of a "complex" data block. + + Byte Data + 1 $ + 2 M | device + 3 P | address + + 4 K = kilometres | cross track + N = nautical miles | error + U = microseconds | units + + 5 - 8 0 - 9 or . cross track error value + 9 L or R cross track error position + + 10 T or M True or Magnetic bearing + 11 - 13 0 - 9 bearing to next waypoint + + 14 - 23 12D34'56"N or present latitude + 12D34.56'N + 24 - 34 123D45'56"W or present longitude + 123D45.67"W + + 35 non-ASCII status byte + bit 0 = 1 for manual cycle lock + 1 = 1 low SNR + 2 = 1 cycle jump + 3 = 1 blink + 4 = 1 arrival alarm + 5 = 1 discontinuity of TDs + 6 = 1 always + 36 "NUL" character (hex 80)(reserved status byte) + 37 "ETX" character (hex 83) + Any unavailable data is filled with "NUL" bytes. + + +4. NMEA-0183 + + 4.1 General Sentence Format + + Under the NMEA-0183 standard, all characters used are printable + ASCII text (plus carriage return and line feed). NMEA-0183 data + is sent at 4800 baud. + + The data is transmitted in the form of "sentences". Each + sentence starts with a "$", a two letter "talker ID", a three + letter "sentence ID", followed by a number of data fields + separated by commas, and terminated by an optional checksum, and + a carriage return/line feed. A sentence may contain up to 82 + characters including the "$" and CR/LF. + + If data for a field is not available, the field is simply + omitted, but the commas that would delimit it are still sent, + with no space between them. + + Since some fields are variable width, or may be omitted as + above, the receiver should locate desired data fields by + counting commas, rather than by character position within the + sentence. + + The optional checksum field consists of a "*" and two hex digits + representing the exclusive OR of all characters between, but not + including, the "$" and "*". A checksum is required on some + sentences. + + The standard allows individual manufacturers to define + proprietary sentence formats. These sentences start with "$P", + then a 3 letter manufacturer ID, followed by whatever data the + manufacturer wishes, following the general format of the + standard sentences. + + Some common talker IDs are: + GP Global Positioning System receiver + LC Loran-C receiver + OM Omega Navigation receiver + II Integrated Instrumentation + (eg. AutoHelm Seatalk system) + + 4.2 Sentences sent by specific equipment + + This section lists the sentence types used by various equipment. + The format and data included in each sentence type is given in + section 4.3. + + Eagle AccuNav + Standard: RMB, RMC, GLL, APB + Proprietary: PSLIB + It also pretends it's a Loran, sending LCGLL, as well as GPGLL + + Garmin GPS-38, NMEA-0183 V. 1.5 mode + Standard: GLL, RMB, RMC, WPL, BOD, XTE, VTG, BWC + Proprietary: PGRMM (map datum), PGRMZ (altitude), PSLIB (dgps ctrl) + + Garmin GPS-38, NMEA-0183 V. 2.0 mode + Standard: GLL, RMB, RMC, WPL, BOD, GSA, GSV, RTE, GGA + Proprietary: PGRME (estimated error), PGRMM, PGRMZ, PSLIB + + Garmin GPS-45 (and probably GPS-40 and GPS-90) + Standard: BOD, GLL, RTE, RMB, RMC, GGA, GSA, GSV + Proprietary: PGRME, PGRMM, PGRMZ + + Garmin GPS-65 (and probably GPS-75) + Standard: BWC, GLL, RMB, RMC, R00, WPL, XTE, VTG + Proprietary: PGRMM, PGRMZ, PSLIB + + Magellan Trailblazer + Standard: APB, BWC, GGA, GLL, RMB, RMC, VTG + Trimble Ensign XL + Standard: APA, BWC, BWR, GGA, GLL, RMB + + Trimble Flightmate Pro and Scoutmaster + Standard: APA, APB, BWC, GGA, GLL, GSA, GSV, RMB, RMC, + VTG, WCV, XTE, ZTC + + Autohelm Seatalk + Autohelm Seatalk is a proprietary bus for communications + between various intruments. Some of the instruments can act + as NMEA-0183 talkers or listeners. Data received from an + external NMEA-0183 device will, if Seatalk understands the + sentence, be re-transmitted, but not necessarily in the same + sentence type. + + The specific sentences sent will depend on the data + available on the Seatalk bus (i.e. sentences containing wind + speed and direction will only be sent if the system includes + a wind instrument) + + Seatalk output: + Standard: APB, BPI, BWC, VWR, VHW, DBT, GLL, HDM, HDT, HCS, + MTW, VTG + + Seatalk input: + Standard: APA, APB, RMB, XTE, XTR, BPI, BWR, BWC, BER, + BEC,WDR, WDC, BOD, WCV, VHW, VWR, DBT + + + 4.3 Sample Sentences Dissected + 4.3.1 Standard Sentences + + A talker typically sends a group of sentences at intervals + determined by the unit's update rate, but generally not more + often than once per second. + + Characters following the "*" are a checksum. Checksums are + optional for most sentences, according to the standard. + + APB - Autopilot format B + APB,A,A,0.10,R,N,V,V,011,M,DEST,011,M,011,M + A Loran-C blink/SNR 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 + 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 be given in True as 033,T) + (note: some pilots, Roberston in particular, misinterpret "bearing + from origin to destination" as "bearing from present position to + destination". This apparently results in poor performance if the + boat is sufficiently off-course that the two bearings are + different.) + + BOD - Bearing - origin to destination waypoint + BOD,045.,T,023.,M,DEST,START + 045.,T bearing 045 True from "START" to "DEST" + 023.,M breaing 023 Magnetic from "START" to "DEST" + DEST destination waypoint ID + START origin waypoint ID + + BWC - Bearing and distance to waypoint - great circle + 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 + + BWR - Bearing and distance to waypoint - rhumb line + (format same as BWC) + + DBT - Depth below transducer + DBT,0017.6,f,0005.4,M + 0017.6,f 17.6 feet + 0005.4,M 5.4 Metres + + GGA - Global Positioning System Fix Data + GGA,123519,4807.038,N,01131.324,E,1,08,0.9,545.4,M,46.9,M, , *42 + 123519 Fix taken at 12:35:19 UTC + 4807.038,N Latitude 48 deg 07.038' N + 01131.324,E Longitude 11 deg 31.324' E + 1 Fix quality: 0 = invalid + 1 = GPS fix + 2 = DGPS fix + 08 Number of satellites being tracked + 0.9 Horizontal dilution of position + 545.4,M Altitude, Metres, above mean sea level + 46.9,M Height of geoid (mean sea level) above WGS84 + ellipsoid + (empty field) time in seconds since last DGPS update + (empty field) DGPS station ID number + + GLL - Geographic position, Latitude and Longitude + GLL,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 + (Garmin 65 does not include time and status) + + GSA - GPS DOP and active satellites + GSA,A,3,04,05,,09,12,,,24,,,,,2.5,1.3,2.1*39 + A Auto selection of 2D or 3D fix (M = manual) + 3 3D fix + 04,05... PRNs of satellites used for fix (space for 12) + 2.5 PDOP (dilution of precision) + 1.3 Horizontal dilution of precision (HDOP) + 2.1 Vertical dilution of precision (VDOP) + DOP is an indication of the effect of satellite geometry on + the accuracy of the fix. + + GSV - Satellites in view + GSV,2,1,08,01,40,083,46,02,17,308,41,12,07,344,39,14,22,228,45*75 + 2 Number of sentences for full data + 1 sentence 1 of 2 + 08 Number of satellites in view + 01 Satellite PRN number + 40 Elevation, degrees + 083 Azimuth, degrees + 46 Signal strength - higher is better + + There my be up to three GSV sentences in a data packet + + HDM - Heading, Magnetic + HDM,235.,M + HDM Heading, Magnetic + 235.,M Heading 235 deg. Magnetic + (HDG, which includes deviation and variation, is recommended + instead) + + HSC - Command heading to steer + HSC,258.,T,236.,M + 258.,T 258 deg. True + 236.,M 136 deg. Magnetic + + MTW - Water temperature, Celcius + MTW,11.,C + 11.,C 11 deg. C + + R00 - List of waypoint IDs in currently active route + R00,MINST,CHATN,CHAT1,CHATW,CHATM,CHATE,003,004,005,006,007,,,*05 + (This sentence is produced by a Garmin 65, but is not listed + in Version 2.0 of the standard. The standard lists RTE for + this purpose.) + + RMB - Recommended minimum navigation information (sent by nav. + receiver when a destination waypoint is active) + RMB,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 + + RMC - Recommended minimum specific GPS/Transit data + RMC,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 = OK, 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, True + 191194 Date of fix 19 November 1994 + 020.3,E Magnetic variation 20.3 deg East + *68 mandatory checksum + + RTE - Waypoints in active route + RTE,2,1,c,0,W3IWI,DRIVWY,32CEDR,32-29,32BKLD,32-I95,32-US1,BW-32,BW-198*69 + 2 two sentences for full data + 1 this is sentence 1 of 2 + c c = complete list of waypoints in this route + w = first listed waypoint is start of current leg + 0 Route identifier + W3IWI... Waypoint identifiers + + VHW - Water speed and heading + VHW,259.,T,237.,M,05.00,N,09.26,K + 259.,T Heading 259 deg. True + 237.,M Heading 237 deg. Magnetic + 05.00,N Speed 5 knots through the water + 09.26,K Speed 9.26 KPH + + VWR - Relative wind direction and speed + VWR,148.,L,02.4,N,01.2,M,04.4,K + 148.,L Wind from 148 deg Left of bow + 02.4,N Speed 2.4 Knots + 01.2,M 1.2 Metres/Sec + 04.4,K Speed 4.4 Kilometers/Hr + + VTG - Track made good and ground speed + VTG,054.7,T,034.4,M,005.5,N,010.2,K + 054.7,T True track made good + 034.4,M Magnetic track made good + 005.5,N Ground speed, knots + 010.2,K Ground speed, Kilometers per hour + + WCV - Waypoint Closure Velocity + WDC - Distance to Waypoint + WDR - Waypoint Distance, Rhumb Line + + WPL - waypoint location + WPL,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. + + XTE - Cross track error, measured + XTE,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 + + XTR - Cross-Track Error - Dead Reckoning + XTR,0.67,L,N + 0.67 cross track error distance + L Steer left to correct error (or R for right) + N Distance units - Nautical miles + + +4.3.2 Proprietary Sentences + + The following are Garmin proprietary sentences. "P" denotes + proprietary, "GRM" is Garmin's manufacturer code, and "M" or "Z" + indicates the specific sentence type. + + $PGRME,15.0,M,45.0,M,25.0,M*22 + 15.0,M Estimated horizontal position error in metres (HPE) + 45.0,M Estimated vertical error (VPE) in metres + 25.0,M Overall spherical equivalent position error + + $PGRMZ,93,f,3*21 + 93,f Altitude in feet + 3 Position fix dimensions 2 = user altitude + 3 = GPS altitude + This sentence shows in feet, regardless of units shown on the display. + + $PGRMM,NAD27 Canada*2F + Currently active horizontal datum + + Proprietary sentences to control a Starlink differential beacon + receiver. (I assume Garmin's DBR is made by Starlink) + $PSLIB,,,J*22 + $PSLIB,,,K*23 + These two sentences are normally sent together in each group + of sentences from the GPS. + The three fields are: Frequency, bit Rate, Request Type. The + value in the third field may be: + J = status request + K = configuration request + blank = tuning message + + When the GPS receiver is set to change the DBR frequency or + baud rate, the "J" sentence is replaced (just once) by (for + example): $PSLIB,320.0,200*59 to set the DBR to 320 KHz, 200 + baud. + +5. RS-232 connections + + Although this is not really related to NMEA, many people want to + connect a GPS to a computer, so need to know about the RS-232 + serial ports on a computer. + + The RS-232 standard defines two classes of devices that may + communicate using RS-232 serial data - Data Terminal Equipment + (DTE), and Data Communication Equipment (DCE). Computers and + terminals are considered DTE, while modems are DCE. The + standard defines pinouts for DTE and DCE such that a "straight + through" cable (pin 2 to pin 2, 3 to 3, etc) can be used between + a DTE and DCE. To connect two DTEs together, you need a "null + modem" cable, that swaps pins between the two ends (eg. pin 2 to + 3, 3 to 2). Unfortunately, there is sometimes disagreement + whether a certain device is DTE or DCE, hence my standard RS-232 + disclaimer: + if it doesn't work, swap pins 2 and 3! + + The standard RS-232 connector is a 25 conductor DB-25, although + many PCs (and some other equipment) now use a 9 pin DE-9 (often + incorrectly called DB-9) + + Serial Port Connections + Computer (DTE) Modem + DB-25 DE-9 Signal Direction DB-25 + 2 3 Tx Data -> 2 + 3 2 Rx Data <- 3 + 4 7 Request to send -> 4 + 5 8 Clear to send <- 5 + 6 6 Data Set Ready <- 6 + 7 5 signal ground 7 + 8 1 Data CarrierDetect <- 8 + 20 4 Data Terminal Ready -> 20 + 22 9 Ring Indicator <- 22 + + For NMEA-0183 interfacing, we are only concerned with Rx Data, + signal ground (and possibly Tx Data, if we want the computer to + talk to the GPS) + + NMEA-0183 data is sent at 4800 baud. + +6. Troubleshooting + + First check that the talker (usually GPS or Loran) can send + NMEA-0183, and determine what sentences it sends. Also, verify + that the listener understands NMEA-0183, and that it understands + the sentences the talker is sending. In some cases the same + information may be sent in two or more different sentences. If + the talker and listener don't both use the same sentences, there + will be no communication. It may be possible to change the + sentences sent by the talker, to match those understood by the + listener. + + Next, check that the talker is indeed set to send NMEA-0183 + data. Some talkers may have provision to send NMEA-0180 or + 0182, or some proprietary format. + + A computer, using any convenient terminal program (Telix, + Procomm, Windows Terminal, etc.) set to 4800 baud, can be used + to monitor the NMEA data, and confirm what sentences are sent, + and that the data is in the correct format. + Verify that the wiring is correct - that the talker data output + is connected to the listener data input, and that a signal + ground line is connected between the two pieces of equipment. + + If you have multiple listeners connected to a single talker, you + may be overloading the talker port. Try connecting only one + listener at a time. + + On any NMEA-0183 circuit, there can _only_ be one talker. If + you must have more than one talker, and one of the talker + devices can also act as a listener, you may be able to connect + things "in series", so a talker-only output is connected to a + listener/talker input, and the listener/talker output is + connected to other listeners. However, some listener/talker + devices may reformat the data, or only pass data they + understand. (The Autohelm Seatalk system does this, and claims + the data as it's own, starting all output sentences with "$II".) + + Particularly with older equipment, the equipment may claim to + comply with NMEA-0183, but in fact have an error in the data + format. (My Kings 8001 Loran-C claims to send an APB sentence, + but gets some of the fields in the wrong order, so my autopilot + can't understand it.) This sort of problem can be verified by + capturing the NMEA-0183 data on a computer, and comparing the + data formats with those given above. + + +7. About the author + + This FAQ was written by: + Peter Bennett + bennett@triumf.ca + + I have an FTP site containing this file, a GPS FAQ, and other + NMEA information files and PC programs for capturing and + displaying NMEA data, and related things: + + ftp://sundae.triumf.ca/pub/peter/index.html + This site is mirrored in Germany at: + ftp://ftp-i2.informatik.rwth-aachen.de/pub/arnd/GPS/peter/index.html + +7.1 Acknowlegments + + I would like to thank the following for their contributions + or corrections to this document: + Tom Clark, clark@tomcat.gsfc.nasa.gov + Bob Shearer, t.shearer@unixa.nerc-wallingford.ac.uk + David Steckler, davidst@nobeltec.com + Karl Olmstead, olmstead@ridgecrest.ca.us + Dave Wells, KD6TO, davew@cruzio.com + Mike Morrow, caveman@castles.com + + + \ No newline at end of file