Moderated Discussion Areas
ContinuousWave: Small Boat Electrical
NMEA GPS Sentences
|Author||Topic: NMEA GPS Sentences|
posted 09-21-2011 09:36 AM ET (US)
In a recent discussion about satellite based augmentation systems (SBAS) and the Wide Area Augmentation System (WAAS) in particular, reports from users of a number of different GPS receivers noted that a particular psuedo-random noise code number (PRN) was being used as the source for the correction data to obtain a precision fix.
As a follow-up to this discussion, I made an inquiry with the manufacturer of my GPS receiver regarding the method to identify which satellite (by PRN) was being used when a WAAS precision fix was obtain. My inquiry was as follows:
In reply, I received this response:
I was skeptical of the accuracy of that statement, so I replied with a request for more verification. I got a second reply that insisted the initial response was correct.
As a result of this, I began to look at the actual data that a GPS receiver can send using the common NMEA protocol, hoping to discover what particular NMEA sentence might contain information about the PRN of a WAAS correction source. As readers may well know, the actual NMEA standards are not published and must be purchased (at rather fantastical prices) to be obtained. However, many manufacturers have disclosed some of the NMEA standards in their own literature, so we have a glimpse at this information, although perhaps an incomplete one.
Using as a source the information I could find on the world wide web, I found a website hosted in Europe with information about GPS receiver NMEA sentences:
Among the NMEA sentences listed, the only one which seems to give information about the satellites is the $GPGSV, Satellites in View message. The format for this sentence is shown here
I then set about to collect some data from a GPS receiver. I have a BU-353 GPS receiver and a GPS UTILITY application. With these two I could read and capture NMEA data from the receiver. Here is a sample of the $GPGSV information:
Parsing this data using the NMEA format, I decode it as follows
But this particular receiver appears to not have been getting any WAAS satellites, so perhaps it is not the best example to use. (The BU-353 is rated as a WAAS capable receiver, by the way.
Next I turned to the string $GPGGA Global Positioning System Fix Data. This may have some information about WAAS. There is a field in $GPGGA for "DGPS reference station id" which I suspect will be the WAAS PRN, if WAAS is being used.
Since my initial efforts to capture the raw NMEA data from my receiver lacked any sign of WAAS, I would much appreciate if someone could submit some data from their GPS receiver output which contained the $GPGAA string when the GPS receiver was in a precision fix mode with WAAS. I would like to see that the receiver had to say in its $GPGAA sentence. Thanks!
posted 09-21-2011 05:51 PM ET (US)
I used to do this with my Garmin GPS-V (capture and decode the NMEA sentences, that is), but my current laptop does not have a serial port.
I've been meaning to buy the USB equivalent cable, maybe I should get on that.
posted 09-21-2011 08:24 PM ET (US)
Dave--Having a USB-Serial Port adaptor is very handy. I have one because my laptop has no serial ports. I use the KEYSPAN HS-19. This is a good device and typically has good drivers for all sorts of different operating systems. It is typically about $28 street-price.
posted 09-21-2011 08:30 PM ET (US)
Thanks Jim! I'm going to order one.
posted 09-21-2011 08:31 PM ET (US)
I took the BU-353 GPS receiver to the roof of my workplace this afternoon and let it settle in with a few minutes of GPS satellite lock. Then I captured 100-seconds worth of its data. In the data there were 100 $GPGAA sentences, so I have made an inference that the NMEA data rate is 1-Hz. I parsed some of the sentences to see what sort of information I could get. Here is a brief summary:
This is the $GPGAA sentence:
Parsing this sentence I get
Sequence Identifier = $GPGGA
Darn, no PRN of the WAAS satellite in this sentence. However, looking at the associated data for $GPGSV (satellites in view) I see
And in that data we see in the third group we have NMEA 51 (which corresponds to PRN-138) in view with an elevation of 35-degrees, azimuth of 213-degrees, and SNR of 34-dB. This is also interesting because, again, I am receiving PRN-138 in preference to PRN-133, which should be a better signal. I don't have any good explanation why this SiRF-III receiver would jump on PRN-138 before PRN-133.
Next we can look at $GPGSA to find the active satellites used in the position fix. Here is my data string:
Parsing this string I get
Mode = Automatic 3D/2D
This does not include any PRN for a WAAS source. It seems like you cannot deduce the WAAS source from this sentence, either.
So far the only basis to deduce that the WAAS correction was obtained from PRN-138 is because it was the only WAAS source listed as being in-view. But PRN-138 was not identified in any of the NMEA sentences as specifically being the WAAS source.
I am beginning to wonder exactly how one can determine the WAAS source PRN from the NMEA sentences?
posted 09-24-2011 09:37 AM ET (US)
I came across this excellent source of detailed information about NMEA-0183 sentences related to GPS devices on a manufacturer's website:
Under the section "Commands and Messages" (in the left pane) select the "Data Messages" option; this reveals a detailed listing and explanation of the usual $GPxxx message formats.
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.