NMEA

NMEA stands for National Marine Electronics Association, a trade organization for maritime equipment. The NMEA 2000 and NMEA 0183 standards published by this organization provide a basis for the communication of various maritime equipment via CAN (NMEA 2000) or RS422/RS232 (NMEA 0183):

NMEA standards define the data format and protocols for the transmission of information such as GPS positions, speeds and courses between different devices such as display instruments, measuring instruments, GPS receivers, autopilots and navigation systems.

This standard enables the interoperability of different manufacturer devices and ensures that they can communicate seamlessly with each other.

The NMEA 2000 standard supports multi-packet communication of up to 1785 bytes via the ISO 15765-2 (ISO TP) standard. NMEA defines various errors in messages for diagnosis (OBD), e.g., status indicators in PGN 127489 (Engine Parameters, Dynamic).

Byte 1:  Engine Instance (8-bit unsigned integer) This byte specifies the particular engine for which these data apply. A single engine has instance 0. For boats with multiple engines, numbering starts at 0 at the bow of the boat and increases towards the stern. Engines equidistant from bow and stern are numbered from port to starboard.
Byte 2:  Engine Oil Pressure (16-bit unsigned integer) This byte indicates the engine's oil pressure in units of 100 Pa.
Byte 3:  Engine Oil Temperature (16-bit unsigned integer) This byte displays the engine's oil temperature in units of 0.1°K.
Byte 4:  Engine Coolant Temperature (16-bit unsigned integer) This byte shows the temperature of the engine coolant in units of 0.1°K.
Byte 5:  Alternator Potential (16-bit signed integer) This byte specifies the generator voltage in units of 0.01V.
Byte 6:  Fuel Rate (16-bit signed integer) This byte indicates the engine's fuel consumption in units of 0.0001 cubic meters/hour.
Byte 7:  Total Engine Hours (32-bit unsigned integer) This byte indicates the cumulative running time of the engine in units of 1 second.
Byte 8:  Engine Coolant Pressure (16-bit unsigned integer) This byte specifies the pressure of the engine coolant in units of 100 Pa.
Byte 9:  Fuel Pressure (16-bit unsigned integer) This byte indicates the pressure of the engine fuel in units of 1000 Pa.
Byte 10: Reserved (8 bits) This byte is reserved by NMEA; typically, all bits are sent as logical 1.
Byte 11:    Engine Discrete Status 1 (16 bits) This byte indicates engine warning states with the following bit assignments (a value of 1 means a warning is present):
  Bit 0:    Check Engine
  Bit 1:    Over Temperature
  Bit 2:    Low Oil Pressure
  Bit 3:    Low Oil Level
  Bit 4:    Low Fuel Pressure
  Bit 5:    Low System Voltage
  Bit 6:    Low Coolant Level
  Bit 7:    Water Flow
  Bit 8:    Water in Fuel
  Bit 9:    Charging System
  Bit 10:   Glow Plug Indicator
  Bit 11:   High Boost Pressure
  Bit 12:   RPM Limit Exceeded
  Bit 13:   EGR System
  Bit 14:   Throttle Position Sensor
  Bit 15:   Emergency Stop Mode
Byte 12:    Engine Discrete Status 2 (16 bits) This byte indicates additional engine warning states with the following bit assignments (a value of 1 means a warning is present):
  Bit 0:    Warning Level 1
  Bit 1:    Warning Level 2
  Bit 2:    Power Reduction
  Bit 3:    Maintenance Needed
  Bit 4:    Engine Communication Error
  Bit 5:    Sub or Secondary Throttle
  Bit 6:    Neutral Start Protection
  Bit 7:    Engine Shutdown
  Bit 8-15: These bits are reserved and should be masked when reading
Byte 13:    Percent Engine Load (8-bit signed integer) This byte indicates the engine's percentage load in units of 1 percent.
Byte 14:    Percent Engine Torque (8-bit signed integer) This byte indicates the engine's percentage torque in units of 1 percent.

Examples of NMEA-compatible maritime devices:

NMEA