NMEA 2000 (standardized as IEC 61162-3), abbreviated NMEA2k or N2K, is a plug-and-play communications standard, which is used on boats and ships to connect together devices, displays and sensors. The speed of the NMEA 2000 bus is 250 kbit/s and it enables sensors and displays and any other NMEA 2000 compatible devices to “discuss” together. Electrically NMEA 2000 is compatible with Controller Area Network (“CAN bus”), which is used in gasoline and diesel powered (road) vehicles. NMEA 2000 protocol is based on SAE J1939, which has been expanded by marine-specific messages. The biggest difference between J1939 and NMEA 2000, in addition to the marine-specific messages, is that in J1939 the device and sensor IDs are hard-coded whereas in NMEA 2000, the addresses are negotiated when a new device joins the network. This makes NMEA 2000 a plug-and-play -type network. Majority of NMEA 2000 and J1939 messages are of a broadcast-type with no destination address specified. Because of this, no request-type messages are needed.
Raymarine SeaTalk 2, Raymarine SeaTalkNG, Simrad Simnet and Furuno CAN are rebranded NMEA 2000 networks, but use a different physical connector than the standard DeviceNet Micro-C M12 connector.
NMEA 2000 message structure
A 29-bit ID is used in NMEA 2000 (J1939) and the structure is as follows
|PRIORITY (PRIO)||RESERVED (R)||DATA PAGE (DP)||PDU FORMAT (PF)||PDU SPECIFIC (PS)||SOURCE ADDRESS (SA)|
|3 bits||1 bit||1 bit||8 bits||8 bits||8 bits|
First three bits (PRIO) specify the priority of the message, zero being the highest priority. Time-critical control messages (like engine control) usually get a high priority whereas less critical messages (such as speed) get a lower priority.
Next bit (R) is reserved for the future and should therefore be set to zero.
Next bit is the data page -selector (DP). That expands the possible PGN-space that the ID can be used for.
PDU format (PF) specifies if the message is a broadcast message or addressed to a certain device. PDU comes from Protocol Data Unit.
The meaning of the PDU specific -field (PS) depends on the value of PF as follows
- IF PF is between 0 and 239, the message has an address (PDU1) and PS-field contains the address.
- If PF is between 240 and 255, the message is a broadcast-message (PDU2) and PS-field contains the Group Extension. Group Extensions expand the available PGNs that can be broadcast to the network.
The last 8 bits of the ID contain the source ID (address) of the sending device. Each device must have its unique ID and there can only be 254 different ID’s in the network. However, only 50 devices can be simultaneously physically connected to the network.
Term Parameter Group Number (PGN) is used to refer to the 18-bit group of the Reserve bit, DP, DF and PS, which have been marked with blue on the table above.
Example: ID 0x1F50BEE in binary form is 000 000 0 1 11110101 00001011 11101110 and it can be divided into the following fields
- First three bits are not in use (000)
- Prio, R and DP (3+1+1 bits) = 0x01 (000 0 1)
- PF (8 bits) = 0xF5 = 245, which means this is a broadcast-message (PDU2)
- PS (8 bits) = 0x0B, which means Group Extension = 11
- SA (8 bits) = 0xEE = 238
PGN = R, DP, PF and PS -fields – in this case 0x1F50B (which is PGN 128267)
ID 0xDF50BEE also contains PGN 128267, but it cannot be directly seen from the HEX-value, because priority-bits are not 000 here. To get the PGN out from this, the HEX must first be translated into a binary number as follows
Then we take the binary of the PGN (R, DP, PF and PS) which is 0 1 11110101 00001011 and translate that into HEX, which is 0x1F50B (PGN 128267).
List of NMEA 2000 PGN’s
Below is the list of NMEA 2000 PGN’s (source Yacht Devices).
|65311||0x0FF1F||Magnetic Variation (Raymarine Proprietary)|
|127251||0x1F113||Rate of Turn|
|127488||0x1F200||Engine Parameters, Rapid Update|
|128259||0x1F503||Speed, Water referenced|
|129025||0x1F801||Position, Rapid Update|
|129026||0x1F802||COG & SOG, Rapid Update|
|129029||0x1F805||GNSS Position Data|
|129033||0x1F809||Local Time Offset|
|129283||0x1F903||Cross Track Error|
|129285||0x1F905||Navigation — Route/WP information|
|129291||0x1F90B||Set & Drift, Rapid Update|
|129540||0x1FA04||GNSS Sats in View|
|130066||0x1FC12||Route and WP Service — Route/WP— List Attributes|
|130067||0x1FC13||Route and WP Service — Route — WP Name & Position|
|130074||0x1FC1A||Route and WP Service — WP List — WP Name & Position|
|130316||0x1FD0C||Temperature, Extended Range|
|129038||0x1F80E||AIS Class A Position Report|
|129039||0x1F80F||AIS Class B Position Report|
|129040||0x1F810||AIS Class B Extended Position Report|
|129041||0x1F811||AIS Aids to Navigation (AtoN) Report|
|129793||0x1FB01||AIS UTC and Date Report|
|129794||0x1FB02||AIS Class A Static and Voyage Related Data|
|129798||0x1FB06||AIS SAR Aircraft Position Report|
|129809||0x1FB11||AIS Class B “CS” Static Data Report, Part A|
|129810||0x1FB12||AIS Class B “CS” Static Data Report, Part B|