636 lines
28 KiB
Text
636 lines
28 KiB
Text
|
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
|
|||
|
<repeat for up to 4 satellites per sentence>
|
|||
|
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
|
|||
|
|
|||
|
|
|||
|
|