Dear reader, the following is an article I wrote on the subject NMEA 0183 interfacing for MAINSHEET, the Catalina and Capri Owners association magazine. It appeared in the May, 1991 issue. You may distribute it freely but please make note of where it came from when you do. Wayne Simpson, <wms@spin.ho.att.com>. |
The coming of the microprocessor to marine electronics has
brought with it a promise and a curse. The promise is that two or
more devices can share information and so become more valuable
and convenient to use. The curse is that not all marine hardware
is compatible. To make matters worse, marine electronics manufac
turers often make it difficult for the consumer to tell whether
any two devices will work together until bought and wired togeth
er. Sometimes the result is a happy event. At other times, it can
be an exercise in frustration.
An interface is the boundary at which two independent sys
tems communicate and interact. When you connect an interface
cable from your loran to your autopilot, the wire is like the
string between two cans in a play telephone. The wire carries the
conversation, but it is the interfaces at each end that do the
talking. If the two devices speak the same language and can
understand the same words, then they can communicate. Otherwise,
they can't. There is a standard for communications in the marine
electronics industry, and most manufacturers claim to abide by
it, at least in part. Unfortunately this is not always enough.
In 1980, a group of professionals from the industry met to
develop a standard "language" for marine interfaces. The result
was the National Marine Electronics Association (NMEA) 0180
standard. It addressed one problem, that of making lorans and
autopilots work together, and it was a success. In the following
years this standard, revised, broadened, then totally revamped to
take into account the wide range of electronics appearing on
boats, led to the current NMEA 0183 standard used on almost all
equipment today.
The NMEA 0183 standard calls for data communication in the
form of coded "sentences." Each sentence begins with the
character "$" and ends with a carriage return and line feed
(<CR><LF>).
These last two characters are "control" characters and are not
normally printed (for this reason they are customarily shown
enclosed in brackets). Between the beginning and end of each
sentence are "fields" of data, each field separated by a comma.
The first field in any sentence (field 0) begins with the two
letter talker mnemonic code ("talkers" are devices that send out
information, "listeners" take it in) followed by the three
letter code for the sentence. Data follows in the standard format
for that sentence. Here's an example:
field #: 0, 1, 2, 3, 4 sentence: $LCGLL,4001.74,N,07409.43,W<CR><LF> |
What is being said here? Lets look at it field by field.
The
sentence begins with the start character "$."
Next comes the
talker identifier and sentence format code. LC stands for Loran-
C, GLL for present position in Lat/Lon.
Field 1 contains the
set's current latitude.
Field 2 is either N or S for North or
South.
Field 3 is the set's current longitude.
Field 4 is W or E
for West or East.
Thus, this sentence reads "Loran-C present
position in Lat/Lon: 40 degrees 1.74 minutes North, 74 degrees
9.43 minutes West." A carriage return and line feed close the
sentence. The GLL sentence is always displayed in this format.
Each type of sentence, and there are many, has its own specific
standard format (for a brief catalog of formats, see sidebar:
Deciphering the Code).
Standard sentences, each in a standard format. This is how
NMEA 0183 is intended to work. But compliance with the standard
is voluntary. It is up to the manufacturers to decide how they
will implement the standard, and to what extent they will comply
with it. Because the standard is so broad, there is often more
than one way to express the same information, and this can cause
problems. There are many different sentences, and few if any
talker devices say them all, or adhere strictly to the standard
format of those they do. Does your autopilot need information in
a form that your loran isn't sending out? How can you tell?
Don't count on there being an adequate explanation in the
manuals, because often it isn't there. The owners manual for my
loran describes the workings of the interface this way. "The
extra connector on the rear panel is a serial data output inter
face which can provide loran data to an autopilot, track plotter,
or fishfinder. The serial data is in NMEA 0183 format and is
transmitted continuously." That's it; the manual makes no other
mention of the interface anywhere. Other manuals I have seen are
about as descriptive. In a follow-up bulletin nearly a year
after I bought it the manufacturer of my loran mentioned what
sentences the data output sent (there were four) and what the pin
assignments for the output connector were. This section was
labeled "for techies only." These interfaces are touted in adver
tising copy, but it's clear the manufacturers don't really expect
you to use them. In the end, you probably will have to call the
manufacturer for a proper explanation of their interface, and ask
specifically whether they have tested the devices you have in
mind for compatibility.
So far we've discussed only software incompatibilities, but
there can be physical ones, too. NMEA 0183 specifies no standard
connector, and no two manufacturers seem to use the same one.
Usually, the owner will have to buy plugs from the manufacturers
and make his own cable.
Two years ago, when I bought my West Marine Vector I loran,
I had no intentions of ever using the interface. Why would you
want to interface your electronics, anyway? Here's one example. A
loran can tell you where you are, what direction to steer to get
to your destination, and how far off your intended course track
you are. By itself, however, it can't steer the boat. An autopi
lot can steer, but on it's own can't compensate for currents or
leeway. An autopilot interfaced with a loran can do all these
things, and then some. Here's another example. The more you use
the magic box, the more you realize the information it gives
should be displayed in the cockpit, where the helmsman can have
instant access to it. But the cockpit can be a harsh location for
electronics and most lorans aren't truly waterproof. A loran
"repeater," which echoes steering information on a remote dis
play, can provide useful steering information in the cockpit
while leaving the loran below in the nav station, safe from sun
and spray.
An integrated pilot/navigator system would have been nice,
but LEGACY, our 1977 Catalina 27, already had an autopilot, an
old style Autohelm 800. It worked perfectly well and I wasn't
going to replace it just to have one with an interface. A loran
repeater would be handy too, but those available commercially
cost as much as a second loran. I toyed with the idea of building
a repeater but in the end dismissed the whole thing as not being
worth the time, effort, or cost.
Two things happened last summer that changed my opinion on
interfacing. First, the old Autohelm failed, and the cost to fix
it was almost as much as a new digital autopilot. I went for the
new pilot, settling on a Navico Tillerpilot 5000 largely because
Autohelm had changed their mounting dimensions and would have
required me to change my setup. Navico's dimensions were always
very close the old Autohelm's, and would fit without modifica
tions.
The new pilot worked well all by itself, but an item on
Navico's option list caught my eye. It was a digital hand pro
grammer that made the TP5000 a much better pilot. It displayed
present heading from the pilot's internal fluxgate compass,
allowed you to make course changes in degrees rather than beeps,
had an off-course alarm and let you program the pilot's response
parameters to better tune them to the boat and conditions. Also
at the time, if you bought a pilot and programmer and sent the
receipts to Navico, they would send you the loran interface box
(which normally cost's $150 at discount) for free.
Second, while at a marine warehouse sale, I came across a
KVH model LRX+ loran repeater. It was complete with the warranty
card and instruction booklet. It's price was $100, 1/3 the usual
discount price. It was NMEA 0183 compatible, and so was my loran.
It even had a sheet with a listing of all the lorans the LRX+ had
successfully interfaced with. The Vector was there, right at the
bottom of the list. Why not?
I took it down to my boat, hooked it up to the NMEA inter
face on the back of my loran, programmed a course to a nearby
buoy, and waited for the repeater's display to come to life. It
did, and showed a bearing that was 12 degrees off! Something in
the back of my mind reminded me that the magnetic variation in my
area was 12 degrees. The repeater was displaying bearing in de
grees true rather than magnetic. Every time I wanted to get a
steering course off the display, I would have to do a calculation
in my head. The "curse" had visited me.
I was now in the position of having to figure out what the
problem was with the repeater. I had no knowledge of the NMEA
standard or how it worked, so I called KVH. They said that what
ever the loran was sending out over the interface was reported on
the display. I called West Marine to find out what the Vector was
sending out. They told me that both true and magnetic bearings
were sent, and that it was up to the repeater to differentiate
between them. I asked KVH for more help, and they offered to
upgrade the repeater's software to a newer version at no charge.
I sent the repeater off to KVH Industries in Middletown, RI.
While the repeater was away, I took a sample of the Vector's
data output using my PC. The procedure is described in the side
bar: Listening In, Speaking Out. Here's what I got:
$LCGLL,4004.22,N,07409.78,W $LCBWC,,4001.80,N,07403.66,W,117,T,129,M,005.2,N,011 $LCAPA,V,A,1.00,R,N,V,V,117,T,011 $LCVTG,,,271,M,02.3,N,, |
The pattern of four sentences repeated itself every two
seconds. Close inspection of this string revealed the problem. In
order to work with a wide variety of lorans, the KVH repeater's
program accepts data from several different sentences, two of
which, BWC (bearing to waypoint along great circle) and APA
(autopilot format A), appear in the above sample. Look closely at
the APA sentence. Data fields 8 and 9 display the bearing and
whether it represents degrees true or magnetic. The standard
format for APA is degrees magnetic, in this example it is degrees
true. There was a bug in the Vector's software.
Why couldn't the repeater see that the bearing was in de
grees true and disregard it? Most of these programs are "comma
counters." They recognise a sentence of interest from the ad
dress, then count commas until they get to the field in which
they expect to find data they need. They don't look at the fields
telling whether the information is true, magnetic, east, or west.
The people at KVH felt confident that the software upgrade
would cure this condition but when the repeater came back, my
problem was still there. I called West. The problem was their
doing in the first place, maybe they would fix it. Unfortunately
for me, the Vector I was made obsolete by the Vector II the
previous year. West planned no more software upgrades for the
Vector I, and it would be prohibitively expensive for them to
rewrite the software in response to this one complaint. I could,
perhaps, install the Vector II software (which corrected this
bug) but then I would lose some of the features the Vector I had
that the Vector II lacked. I decided it wasn't worth it.
There was still some confusion over exactly what data fields
the repeater was looking at. To find out, I wrote a loran simula
tor program for my computer (see sidebar). I coded the data in
each of the three fields that displayed bearing, giving each a
different value, and was able to prove that the repeater was
looking at the APA sentence for it's bearing to display.
Once again, I called KVH. Rob Solomon, one of KVH's techni
cal people who had stayed with me throughout this ordeal, was
certain the new software didn't look at APA for bearing. He
wanted to look further into the problem, but was unsure when he
would be able to find the time to do so. It was early February,
war had just broken out in the Persian Gulf and KVH was in the
midst of delivering 15,000 of it's DataScopes to Desert Storm
personnel. He promised to look at the LRX+'s software when things
quieted down. Oddly enough, he called back in an hour with the
LRX+'s program listing in hand. He told me absolutely that the
new software did not look at APA for bearing. Back to the drawing
board...
I went home that night and ran my simulator again. There was
no mistake. I wrote a letter to Rob at KVH. In it I included
everything I knew about the problem, a sample of the Vector's
data output, the listing of my simulator program, and the version
number of the software EPROM ("Erasable Programmable Read Only
Memory," the chip which stores the software) installed in my
repeater. I sent it off by FAX the following day. A few days
later, I called Rob to see if he had gotten the letter. He had,
but had not yet read it. When he did, he saw that I hadn't been
given the software he asked for. He sent a new EPROM chip in the
mail (the right one, this time) for me to put in myself. I did,
and it worked as promised. My problem was solved, but only after
five months had passed and I had spent many hours on testing and
investigation.
I had better luck regarding the autopilot. Late last summer,
wisened by my experience with the repeater (I had just begun the
process of sorting out it's troubles), I called West Marine and
spoke to Dave Wells, their technical support person for the
Vector. I was determined to find out whether the loran/autopilot
interface would work before I bought it. He told me the Vector
and the Navico pilot were compatible. He had tested them himself.
I bought the programmer and sent away for the junction box. When
it arrived, the manual informed me that my pilot would require a
software upgrade from the factory in order to work properly with
my loran (sound familiar?). It was by then late fall and I would
not be needing the pilot for months, so I sent it off to Navico's
Largo, FL plant. When it came back, I hooked the loran, pilot,
programmer and junction box together in my study to see what
would happen. The system worked as advertised. This time, the
"promise" was fulfilled.
My story has a happy ending. Come spring, I will be install
ing my new toys and enjoying them all summer. Others who try this
may not be so fortunate. The NMEA system can work, but there is
no guarantee in any particular case that it will. My repeater
adventure shows what sort of problems you can have, and to what
lengths you may have to go in order to solve them.
My recommendations are these: Do your homework before you
buy. If you are buying from a supplier who will do the installa
tion for you, make sure he will guarantee the satisfactory opera
tion of the interface. If you will do the installation yourself,
try to arrange for a full credit return in the event the inter
faces prove to be incompatible. Call the manufacturers and ask
questions. Take the time to understand what the NMEA 0183 stand
ard is and how it works.
If you find that you've been stuck anyway all is not com
pletely lost. A company called Maricom Electronics, at 2911 River
Drive, Thunderbolt, GA 31404 (phone (912) 354-4542) markets what
it calls a "Universal Marine Interface." For just under $400,
this box claims to take data in any format that any talker might
emit and put it into a form any listener will understand. In the
absence of less extreme solutions, this may be worth trying.
Have a problem to solve, or a solution to share? Send your comments and queries to the address above. If you require a quick answer, please include a self addressed, stamped envelope. Your submissions on computer disk (IBM format, any size) will make my job easier, but your paper submissions are, as always, welcomed and appreciated. Until next time...
The "language" of NMEA 0183 is extensive but not difficult
to understand. The ground rules are these: maximum sentence
length is 80 characters including the starting "$", the terminating
<CR><LF>, and everything in between. Minimum number of data
fields is two, including the address field (talker identifier and
sentence format). If data for any field is unavailable, a "null"
field, two commas with nothing between them (",,") can be sent
instead.
Here is a sampling of two letter talker identifier codes.
There are others, for everything from satellite communications to
atomic clocks, but these are some of the most familiar to the
recreational sailor.
LC Loran-C GP GPS TR Transit SATNAV AP Autopilot (magnetic) HC Magnetic heading compass RA Radar SD Depth sounder VW Mechanical speed log |
Now for some of the more common sentences that might be spoken by your LORAN, SATNAV, or GPS. This is not a complete listing, but should illustrate how the system works. In the following examples, the character "#" will denote some number (0-9). Remember that each of these sentences would be preceded by the start character "$" and the two letter talker ID. Each also would be followed by the sentence terminator, <CR><LF>.
Geographic Location in Lat/Lon field #: 0 1 2 3 4 sentence: GLL,####.##,N,#####.##,W 1, Lat (deg, min, hundredths); 2, North or South; 3, Lon; 4, West or East. |
Geographic Location in Time Differences field #: 0 1 2 3 4 5 sentence: GTD,#####.#,#####.#,#####.#,#####.#,#####.# 1-5, TD's for secondaries 1 through 5, respectively. |
Bearing to Dest wpt from Origin wpt field #: 0 1 2 3 4 5 6 sentence: BOD,###,T,###,M,####,#### 1-2, brg,True; 3-4, brg, Mag; 5, dest wpt; 6, org wpt. |
Vector Track and Speed Over Ground (SOG) field #: 0 1 2 3 4 5 6 7 8 sentence: VTG,###,T,###,M,##.#,N,##.#,K 1-2, brg, True; 3-4, brg, Mag; 5-6, speed, kNots; 7-8, speed, Kilometers/hr. |
Cross Track Error field #: 0 1 2 3 4 5 sentence: XTE,A,A,#.##,L,N 1, blink/SNR (A=valid, V=invalid); 2, cycle lock (A/V); 3-5, dist off, Left or Right, Nautical miles or Kilometers. |
Autopilot (format A) field #: 0 1 2 3 4 5 6 7 8 9 10 sentence: APA,A,A,#.##,L,N,A,A,###,M,#### 1, blink/SNR (A/V); 2 cycle lock (A/V); 3-5, dist off, Left or Right, Nautical miles or Kilometers; 6-7, arrival circle, arrival perpendicular (A/V); 8-9, brg, Magnetic; 10, dest wpt. |
Bearing to Waypoint along Great Circle fld: 0 1 2 3 4 5 6 7 8 9 10 11 12 sen: BWC,HHMMSS,####.##,N,#####.##,W,###,T,###,M,###.#,N,#### 1, Hours, Minutes, Seconds of universal time code; 2-3, Lat, N/S; 4-5, Lon, W/E; 6-7, brg, True; 8-9, brg, Mag; 10-12, range, Nautical miles or Kilometers, dest wpt. |
BWR: Bearing to Waypoint, Rhumbline, BPI: Bearing to Point of Interest, all follow data field format of BWC.
For a full explanation of the NMEA 0183 standard, you can write or call the NMEA. For a fee, they will send you the their 36 page booklet "NMEA 0183 Standard for Interfacing Marine Elec tronic Navigational Devices." The address is: National Marine Electronics Association, PO Box 50040, Mobile, AL 36605. Phone (205) 473-1793.
The data that comes out of your loran or other NMEA equipped
gear is in the same format as that from your personal computer.
It is possible, and very easy to take a look at what your talkers
are saying, and to speak to your listeners in a form they can
understand.
To listen in, you need a PC equipped with a serial (RS-232)
interface and modem program (such as HAYES SmartCom or CTRM). If
your program has a data capture feature, you can read data from
the line into a file for later use.
To make the connection, connect the NMEA signal line (line
A, output, etc) to the RS-232 "receive data" line (#2 on 9 pin
or #3 on 25 pin connectors), and the NMEA ground line (line B,
return, etc) to the RS-232 "signal ground" (#5 on 9 pin or #7 on
25 pin connectors).
The statistics for NMEA 0183 are as follows: 4800 baud, 8
data bits, 1 stop bit, no parity. Set your modem program for
these parameters. Switch on your loran (or other talker), start
the modem program, and the data should come pouring in.
One note of caution regarding radionavigation receivers:
they are very sensitive to the kind of RF interference computers,
fluorescent lights, TV's and other such things cause. Your re
ceiver may not be able to lock on to it's transmitters with these
things operating nearby, and you may have to set up the receiver
in another room and connect it with a long cable for it to work
properly.
Speaking to your listeners is only slightly more complicat
ed. You need to send the data strings over and over again at a
repetition rate of once every few seconds (but no faster than
once every second). For this, I wrote a short simulator program
in BASIC that does the job, and allows me to program in the text
I want to send. The connection is different, also. This time you
will have to connect the NMEA signal line to RS-232 "transmit
data" (#3 on 9 pin or #2 on 25 pin connectors), and NMEA ground
to RS-232 signal ground (as before). In addition, you probably
will have to bring the RS-232 "data set ready" (DSR) terminal to
a low voltage. You can do this by inserting a jumper between
"data terminal ready" (DTR, normally #4 on 9 pin or #20 on 25
pin) and DSR (#6 on 9 or 25 pin setups).
Here is the text of my NMEA 0183 simulator program:
005 REM LORAN SIMULATOR PROGRAM - Wayne Simpson, 1991 010 OPEN "com2:4800,n,8,1,RS" FOR OUTPUT AS#1 015 REM setup RS-232 to parameters and disable request to send 100 A$="$LCGLL,4004.22,N,07409.78,W" 110 B$="$LCBWC,,4001.80,N,07403.66,W,100,T,200,M,005.2,N,011" 120 C$="$LCAPA,V,A,0.25,R,N,V,V,300,T,011" 130 D$="$LCVTG,,,268,M,02.1,N,," 140 E$="" 200 PRINT A$ 'print GLL statement to screen 205 PRINT#1,A$ 'send GLL over interface 210 PRINT B$ 'BWC to screen 215 PRINT#1,B$ 'BWC to interface 220 PRINT C$ 'APA to screen 225 PRINT#1,C$ 'APA to interface 230 PRINT D$ 'VTG to screen 235 PRINT#1,D$ 'VTG to interface 240 PRINT E$ 'empty line to screen 245 PRINT#1,E$ 'empty line to interface 300 FOR I=1 TO 12000 310 NEXT 320 GOTO 200 330 REM line 300 provides the 2 second rep rate 340 REM line 320 repeats the transmission over and over 350 REM use ctrl-brk keystroke to terminate transmission |
Load this program into your computer, substitute into the A$-E$ variables whatever it is you want to say, and run it. You are now speaking NMEA, and can do a fair job of troubleshooting interface problems this way.
Nota bene: | the Magellan NAV5000D GPS and some other GPS's only send NMEA data after having a position fix. So setting things up indoors to try to debug connectors won't generate any data on the cable. |
TALKER DEVICE IDENTIFIER AUTOPILOT: General *AG Magnetic AP COMMUNICATIONS: Digital Selective Calling (DSC) *CD Satellite *CS Radio-Telephone (MF/HF) *CT Radio-Telephone (VHF) *CV Scanning Receiver *CX DECCA Navigation DE Direction Finder *DF Electronic Chart Display & Information System (ECDIS) EC Emergancy Position Indicating Beacon (EPIRB) *EP Engineroom Monitoring Systems ER Global Positioning System (GPS) GP HEADING SENSORS: Compass, Magnetic *HC Gyro, North Seeking *HE Gyro, Non-North Seeking HN Integrated Instrumentation II Integrated Navigation IN LORAN: Loran-A LA Loran-C LC OMEGA Navigation System OM Proprietary Code P Radar and/or ARPA *RA Sounder, depth *SD Electronic positioning system, other/general TR Sounder, scanning SS Turn Rate Indicator *TI TRANSIT Navigation System TR VELOCITY SENSORS: Doppler, other/general *VD Speed Log, Water, Magnetic VM Speed Log, Water, Mechanical VW TRANSDUCER YX TIMEKEEPERS, TIME/DATE: Atomic Clock ZA Chronometer ZC Quartz ZQ Radio Update, WWV or WWVH ZV Weather Instruments WI * Designated by I.E.C. for use with I.M.O. marine electronic devices. This is the minimum requirement for equipment that is specified by I.M.O. to meet S.O.L.A.S. regulations.
AAM - Waypoint Arrival Alarm............................... 22 ALM - GPS Almanac Data..................................... 22 APB - Autopilot Sentence "B"............................... 23 *ASD - Autopilot System Data................................ 23 BEC - Bearing & Distance to Waypoint, Dead Reckoning....... 23 BOD - Bearing, Origin to Destination....................... 24 BWC - Bearing & Distance to Waypoint, Great Circle......... 24 BWR - Bearing & Distance to Waypoint, Rhumb Line........... 24 BWW - Bearing, Waypoint to Waypoint........................ 24 DBT - Depth Below Transducer............................... 24 DCN - Decca Position....................................... 25 *DPT - Depth................................................ 25 *FSI - Frequency Set Information............................ 25 GGA - Global Positioning System Fix Data................... 26 GLC - Geographic Position, Loran-C......................... 26 GLL - Geographic Position, Latitude/Longitude.............. 27 GSA - GPS DOP and Active Satellites........................ 27 GSV - GPS Satellites in View............................... 27 GXA - TRANSIT Position..................................... 28 *HDG - Heading, Deviation & Variation....................... 28 *HDT - Heading, True........................................ 28 HSC - Heading Steering Command............................. 28 LCD - Loran-C Signal Data.................................. 29 MTW - Water Temperature.................................... 29 *MWV - Wind Speed and Angle................................. 29 OLN - Omega Lane Numbers................................... 29 *OSD - Own Ship Data........................................ 30 RMA - Recommend Minimum Specific Loran-C Data.............. 30 RMB - Recommend Minimum Navigation Information............. 31 RMC - Recommend Minimum Specific GPS/TRANSIT Data.......... 31 *ROT - Rate of Turn......................................... 32 *RPM - Revolutions.......................................... 32 *RSA - Rudder Sensor Angle.................................. 32 *RSD - RADAR System Data.................................... 32 RTE - Routes............................................... 33 *SFI - Scanning Frequency Information....................... 33 STN - Multiple Data ID..................................... 34 TRF - TRANSIT Fix Data..................................... 34 *TTM - Tracked Target Message............................... 35 *VBW - Dual Ground/Water Speed.............................. 35 VDR - Set and Drift........................................ 35 VHW - Water Speed and Heading.............................. 35 VLW - Distance Traveled through the Water.................. 36 VPW - Speed, Measured Parallel to Wind..................... 36 VTG - Track Made Good and Ground Speed..................... 36 WCV - Waypoint Closure Velocity............................ 36 WNC - Distance, Waypoint to Waypoint....................... 36 WPL - Waypoint Location.................................... 36
If you have comments or suggestions about the WWW-pages of Yacht-L or if you want to contact me personally, email me with or without attachments at E.R.Kooi@XS4all.NL
Last updated: 010716 Back to the top of this page or the homepage of Yacht-L