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: