NMEA 0183 Protocol
NMEA 0183 (National Marine Electronics Association) is a combined electrical and data specification for communication between marine electronics such as echo sounder, sonars, anemometer, gyrocompass, autopilot, GPS receivers and many other types of instruments.
The protocol is widely used in maritime navigation systems and has been adopted for various GPS and positioning applications in other industries including power systems for time synchronization.
Physical Layer
Electrical Specifications
- Interface: RS232 or RS422
- Baud Rate: 4800 bps (standard), 9600, 19200, 38400 bps supported
- Data Format: 8 data bits, 1 stop bit, no parity
- Voltage Levels: ±12V (RS232) or differential (RS422)
Message Format
Common Talker Identifiers
| Talker ID | Device Type | Description |
|---|---|---|
| GP | GPS | Global Positioning System receiver |
| GL | GLONASS | Russian satellite navigation system |
| GA | Galileo | European satellite navigation system |
| GN | GNSS | Global Navigation Satellite System (combined) |
| LC | Loran-C | Loran-C receiver |
| II | Integrated | Integrated instrumentation |
Essential GPS Sentences
GGA - Global Positioning System Fix Data
$GPGGA,time,lat,latNS,lon,lonEW,quality,numSV,HDOP,alt,altUnit,sep,sepUnit,diffAge,diffStation*checksumPurpose: Essential fix data including time, position, and fix quality
- UTC time of position fix
- Latitude and longitude
- GPS quality indicator (0=invalid, 1=GPS fix, 2=DGPS fix)
- Number of satellites in use
- Horizontal dilution of precision
- Altitude above mean sea level
RMC - Recommended Minimum Navigation Information
$GPRMC,time,status,lat,latNS,lon,lonEW,speed,course,date,magVar,magVarEW*checksumPurpose: Minimum recommended navigation data
- UTC time and date
- Position status (A=active, V=void)
- Latitude and longitude
- Speed over ground (knots)
- Course over ground (degrees)
- Magnetic variation
GSA - GPS DOP and Active Satellites
$GPGSA,mode1,mode2,sat1,sat2,...,sat12,PDOP,HDOP,VDOP*checksumPurpose: Satellite information and dilution of precision
- Selection mode (M=manual, A=automatic)
- Fix type (1=no fix, 2=2D, 3=3D)
- PRN numbers of satellites used
- Position, horizontal, and vertical dilution of precision
GSV - GPS Satellites in View
$GPGSV,numMsg,msgNum,numSat,sat1,elev1,azim1,SNR1,...*checksumPurpose: Detailed satellite information
- Number of satellites in view
- Satellite PRN numbers
- Elevation and azimuth angles
- Signal-to-noise ratio
Time-Related Sentences
ZDA - Time and Date
$GPZDA,time,day,month,year,localZoneHour,localZoneMin*checksumPurpose: UTC date and time with local time zone offset
GBS - GPS Satellite Fault Detection
$GPGBS,time,errLat,errLon,errAlt,svid,prob,bias,stddev*checksumPurpose: RAIM satellite fault detection
Checksum Calculation
The checksum is calculated as the XOR of all characters between '$' and '*' (exclusive):
checksum = char1 ⊕ char2 ⊕ char3 ⊕ ... ⊕ charNThe result is converted to a two-character hexadecimal representation.
SerialMon Support
- Complete NMEA 0183 sentence parsing and validation
- Checksum verification
- GPS position and time data extraction
- Satellite tracking and signal quality monitoring
- Time synchronization using GPS time
- Support for multiple GNSS systems (GPS, GLONASS, Galileo)
- Navigation data logging and analysis
- Real-time position tracking
- Dilution of precision calculations
- Satellite constellation monitoring
Applications in Power Systems
- Time Synchronization: High-precision UTC time for protection and control systems
- Phasor Measurement Units: GPS timing for synchronized phasor measurements
- Fault Location: Precise timing for traveling wave fault location systems
- Asset Tracking: Location monitoring of mobile equipment and vehicles
- Emergency Response: Crew location and navigation during outage restoration
