|
sbgECom Library
5.8.935-stable
Interface SBG Systems IMU/AHRS/INS
|
SBG Systems’ AHRS and INS devices support output via the standard NMEA 2000 (N2K) protocol. NMEA 2000 is a widely adopted marine communication standard built on a Controller Area Network (CAN) bus architecture, designed to provide robust, real-time data exchange between multiple electronic devices.
Using NMEA 2000 messages enables seamless integration with a broad range of marine electronics such as chartplotters, autopilots, and monitoring systems without relying on proprietary interfaces. However, NMEA 2000 messages provide a predefined and standardized set of Parameter Group Numbers (PGNs), are less efficient as sbgECom binary messages and don't give access to all the features, options and status of SBG Systems products.
Unlike the older NMEA 0183 standard, which uses ASCII text messages, NMEA 2000 is a binary protocol that operates over a CAN bus. Data is structured into Parameter Group Numbers (PGNs), where each PGN defines a specific message type and purpose for example, position, heading, or attitude.
NMEA 2000 messages are transmitted over CAN frames, each with a maximum payload of 8 bytes. For example, the CAN messages SBG_ECAN_MSG_NMEA_2000_SYSTEM_TIME and SBG_ECAN_MSG_NMEA_2000_HEART_BEAT together represent a single, coherent data set that must be interpreted collectively.
This approach allows NMEA 2000 to support complex datasets such as attitude, velocity, position, and sensor measurements, while maintaining the efficiency and robustness of the CAN bus.
By using standardized messages and PGNs, NMEA 2000 ensures that devices from different manufacturers can communicate seamlessly, while still allowing manufacturers like SBG Systems to expose additional proprietary features through their native protocols.
The NMEA 2000 Fast Packet protocol is a transport mechanism designed to efficiently transmit Parameter Group Numbers (PGNs) whose payload exceeds the standard 8-byte limit of a single CAN frame. Instead of relying on the larger and more complex multi-packet transport protocol, Fast Packet allows up to 223 bytes of data to be streamed while preserving the PGN identity and message priority in every transmitted frame.
The first frame transmitted uses 2 bytes to identify sequential Fast Packet parameter groups and sequential frames within a single parameter group transmission. The first byte contains a sequence counter to distinguish consecutive transmission of the same parameter groups and a frame counter set to frame zero. The second byte in the first frame identifies the total size of the parameter group to follow. Successive frames use just single data byte for the sequence counter and the frame counter.
| Name (Log ID) | Description |
|---|---|
| SBG_ECAN_MSG_NMEA_2000_ATTITUDE (0x0DF11900) | Orientation of the vessel. |
| SBG_ECAN_MSG_NMEA_2000_COG_SOG_RAPID_UPDATE (0x09F80200) | Rapid update of Course Over Ground (COG) and Speed Over Ground (SOG). |
| SBG_ECAN_MSG_NMEA_2000_HEART_BEAT (0x1DF01100) | Transmitted by all NMEA devices to indicate their presence on the network. |
| SBG_ECAN_MSG_NMEA_2000_HEAVE (0x0DF11400) | Vertical distance relative to the average sea level. |
| SBG_ECAN_MSG_NMEA_2000_POSITION_RAPID_UPDATE (0x09F80100) | Rapid update of latitude and longitude. |
| SBG_ECAN_MSG_NMEA_2000_RATE_OF_TURN (0x09F11300) | Rate of change of the heading. |
| SBG_ECAN_MSG_NMEA_2000_SYSTEM_TIME (0x0DF01000) | UTC time and date. |
| SBG_ECAN_MSG_NMEA_2000_VESSEL_HEADING (0x09F11200) | True heading. |
The SBG_ECAN_MSG_NMEA_2000_ATTITUDE message provides a regular transmission of attitude.
SBG_ECAN_MSG_NMEA_2000_ATTITUDE (0x0DF11900)| Field | Description | Scaling | Unit | Format | Size(bytes) | Size(bits) | Offset |
|---|---|---|---|---|---|---|---|
| Sequence ID | Generic counter | - | - | uint8 | 1 | - | 0 |
| Yaw | Yaw | 10^-4 | rad | int16 | 2 | - | 1 |
| Pitch | Pitch | 10^-4 | rad | int16 | 2 | - | 3 |
| Roll | Roll | 10^-4 | rad | int16 | 2 | - | 5 |
| NMEA Reserved | Reserved field | - | - | uint8 | 1 | - | 7 |
The SBG_ECAN_MSG_NMEA_2000_COG_SOG_RAPID_UPDATE message provides a regular transmission of Course Over Ground (COG) and Speed Over Ground (SOG).
SBG_ECAN_MSG_NMEA_2000_COG_SOG_RAPID_UPDATE (0x09F80200)| Field | Description | Scaling | Unit | Format | Size(bytes) | Size(bits) | Offset |
|---|---|---|---|---|---|---|---|
| Sequence ID | Generic counter | - | - | uint8 | 1 | - | 0 |
| COG Reference | Direction reference | - | - | uint8 | - | 2 | - |
| NMEA Reserved | Reserved field | - | - | uint8 | - | 6 | 1 |
| Course Over Ground | Course-Over-Ground (COG) | 10^-4 | rad | uint16 | 2 | - | 2 |
| Speed Over Ground | Generic Speed | 10^-2 | m/s | uint16 | 2 | - | 4 |
| NMEA Reserved | Reserved field | - | - | uint16 | 2 | - | 6 |
The SBG_ECAN_MSG_NMEA_2000_HEART_BEAT message confirms that a device is still present on the network.
SBG_ECAN_MSG_NMEA_2000_HEART_BEAT (0x1DF01100)| Field | Description | Scaling | Unit | Format | Size(bytes) | Size(bits) | Offset |
|---|---|---|---|---|---|---|---|
| Update Rate | Data interval | 10^-3 | s | uint16 | 2 | - | 0 |
| Heartbeat Sequence Counter | Generic counter | - | - | uint8 | 1 | - | 2 |
| Class 1 CAN Controller State | CAN state | - | - | uint8 | - | 2 | - |
| Class 2 Second CAN Controller State | CAN state | - | - | int32 | - | 2 | - |
| Equipment Status | Device status | - | - | uint8 | - | 2 | - |
| NMEA Reserved | Reserved field | - | - | uint8 | - | 2 | 3 |
| NMEA Reserved | Reserved field | - | - | uint32 | 4 | - | 4 |
The SBG_ECAN_MSG_NMEA_2000_HEAVE message provides a regular transmission of vertical displacement (heave).
SBG_ECAN_MSG_NMEA_2000_HEAVE (0x0DF11400)| Field | Description | Scaling | Unit | Format | Size(bytes) | Size(bits) | Offset |
|---|---|---|---|---|---|---|---|
| Sequence ID | Generic counter | - | - | uint8 | 1 | - | 0 |
| Heave | Heave | 10^-2 | - | uint8 | 2 | - | 1 |
| Delay | Delay | 10^-2 | - | uint8 | 2 | - | 3 |
| Delay Source | Measurement Delay Source | - | - | int32 | - | 4 | - |
| NMEA Reserved | Reserved field | - | - | uint8 | - | 20 | 5 |
The SBG_ECAN_MSG_NMEA_2000_RATE_OF_TURN message provides a regular transmission of the vessel’s rate of turn (angular velocity around the vertical axis).
SBG_ECAN_MSG_NMEA_2000_RATE_OF_TURN (0x09F11300)| Field | Description | Scaling | Unit | Format | Size(bytes) | Size(bits) | Offset |
|---|---|---|---|---|---|---|---|
| Sequence ID | Generic counter | - | - | uint8 | 1 | - | 0 |
| Rate of Turn | Rate of Turn | 1/32 * 10^-7 | rad/s | int32 | 4 | - | 1 |
| NMEA Reserved | Reserved field | - | - | uint8 | 3 | - | 5 |
The SBG_ECAN_MSG_NMEA_2000_POSITION_RAPID_UPDATE message provides a regular transmission of position data, including latitude and longitude.
SBG_ECAN_MSG_NMEA_2000_POSITION_RAPID_UPDATE (0x09F80100)| Field | Description | Scaling | Unit | Format | Size(bytes) | Size(bits) | Offset |
|---|---|---|---|---|---|---|---|
| Latitude | Latitude, WGS-84 | 10^-7 | deg | int32 | 4 | - | 0 |
| Longitude | Longitude, WGS-84 | 10^-7 | deg | int32 | 4 | - | 4 |
The SBG_ECAN_MSG_NMEA_2000_SYSTEM_TIME message provides a regular transmission of UTC time and date.
SBG_ECAN_MSG_NMEA_2000_SYSTEM_TIME (0x0DF01000)| Field | Description | Scaling | Unit | Format | Size(bytes) | Size(bits) | Offset |
|---|---|---|---|---|---|---|---|
| Sequence ID | Generic counter | - | - | uint8 | 1 | - | 0 |
| Source | Time source | - | - | uint8 | - | 4 | - |
| NMEA Reserved | Reserved field | - | - | uint8 | - | 4 | 1 |
| Date | Generic date | - | day | uint16 | 2 | - | 2 |
| Time | Generic time of day | 10^-4 | s | uint32 | 4 | - | 4 |
The SBG_ECAN_MSG_NMEA_2000_VESSEL_HEADING message represents the vessel’s heading, indicating the direction the boat’s bow is pointing relative to true north.
SBG_ECAN_MSG_NMEA_2000_VESSEL_HEADING (0x09F11200)| Field | Description | Scaling | Unit | Format | Size(bytes) | Size(bits) | Offset |
|---|---|---|---|---|---|---|---|
| Sequence ID | Generic counter | - | - | uint8 | 1 | - | 0 |
| Heading Sensor Reading | Heading Sensor Reading | 10^-4 | rad | uint16 | 2 | - | 1 |
| Deviation | Magnetic Heading Correction | 10^-4 | rad | int16 | 2 | - | 3 |
| Variation | Magnetic Heading Correction | 10^-4 | rad | int16 | 2 | - | 5 |
| Heading Sensor Reference | Direction reference | - | - | uint8 | - | 2 | - |
| NMEA Reserved | Reserved field | - | - | uint8 | - | 6 | 7 |
| Name (Log ID) | Description |
|---|---|
| SBG_ECAN_MSG_NMEA_2000_GNSS_POSITION_DATA (0x0DF80500) | Position and GNSS fix status. |
| SBG_ECAN_MSG_NMEA_2000_GNSS_SATS_IN_VIEW (0x19FA0400) | Detailed information about satellites currently visible to the GNSS receiver, including PRN, elevation, azimuth, and signal strength (SNR). |
| SBG_ECAN_MSG_NMEA_2000_VESSEL_SPEED_COMPONENTS (0x09FE1200) | Longitudinal, transverse and sternward speed. |
The SBG_ECAN_MSG_NMEA_2000_GNSS_POSITION_DATA message provides a position and GNSS fix status.
SBG_ECAN_MSG_NMEA_2000_GNSS_POSITION_DATA (0X0DF80500)| Field | Description | Scaling | Unit | Format | Size(bytes) | Size(bits) | Offset |
|---|---|---|---|---|---|---|---|
| Sequence ID | Generic counter | - | - | uint8 | 1 | - | 0 |
| Position date | Generic date | - | day | uint16 | 2 | - | 1 |
| Position time | Generic time of day | 10^-4 | s | uint32 | 4 | - | 3 |
| Latitude | Latitude (Extended Resolution) | 10^-16 | deg | int64 | 8 | - | 7 |
| Longitude | Longitude (Extended Resolution) | 10^-16 | deg | int64 | 8 | - | 15 |
| Altitude | Altitude (Extended Resolution) | 10^-6 | m | int64 | 8 | - | 23 |
| Type of System | GNSS constellation system | - | - | uint8 | - | 4 | 31 |
| Method, GNSS | GNSS Quality | - | - | uint8 | - | 4 | - |
| Integrity | GNSS Integrity | - | - | uint8 | - | 2 | 32 |
| NMEA Reserved | Reserved field | - | - | uint8 | - | 6 | - |
| Number of SVs | Number of satellites used in the position solution | - | - | uint8 | 1 | - | 33 |
| HDOP | Horizontal dilution of precision | 10^-2 | - | int16 | 2 | - | 34 |
| PDOP | Position dilution of precision | 10^-2 | - | int16 | 2 | - | 36 |
| Geoidal Separation | Difference between geoid and WGS84 ellipsoid | 10^-2 | m | int32 | 4 | - | 38 |
| Number of Reference Stations | Number of DGNSS reference stations used | - | - | uint8 | 1 | - | 42 |
| Reference Station Type "1" | Type of the first DGNSS reference station | - | - | uint8 | - | 4 | - |
| Reference Station ID "1" | Identifier of the first DGNSS reference station | - | - | uint16 | - | 12 | 44 |
| Age of DGNSS Corrections "1" | Age of corrections received from the first DGNSS reference station | 10^-2 | s | uint16 | 2 | - | 46 |
| Reference Station Type "n" | Type of the nth DGNSS reference station | - | - | uint8 | - | 4 | - |
| Reference Station ID "n" | Identifier of the nth DGNSS reference station | - | - | uint16 | - | 12 | - |
| Age of DGNSS Reference Station "n" | Age of corrections received from the nth DGNSS reference station | 10^-2 | s | uint16 | 2 | - | 48 |
The BG_ECAN_MSG_NMEA_2000_GNSS_SATS_IN_VIEW message provides a detailed information about satellites currently visible to the GNSS receiver, including PRN, elevation, azimuth, and signal strength (SNR).
SBG_ECAN_MSG_NMEA_2000_GNSS_SATS_IN_VIEW (0x19FA0400)| Field | Description | Scaling | Unit | Format | Size(bytes) | Size(bits) | Offset |
|---|---|---|---|---|---|---|---|
| Sequence ID | Generic counter | - | - | uint8 | 1 | - | 0 |
| Mode | GNSS operating mode | - | - | uint8 | - | 2 | 1 |
| NMEA Reserved | Reserved field | - | - | uint8 | - | 6 | - |
| Number of SVs | Total number of visible satellites | - | - | uint8 | 1 | - | 2 |
| PRN "1" | PRN identifier of satellite | - | - | uint8 | 1 | - | 3 |
| Elevation "1" | Elevation angle of satellite | 10^-4 | rad | int16 | 2 | - | 4 |
| Azimuth "1" | Azimuth angle of satellite | 10^-4 | rad | uint16 | 2 | - | 6 |
| SNR "1" | Signal-to-noise ratio of satellite | 10^-2 | dB | int16 | 2 | - | 8 |
| Range Residuals "1" | Pseudorange/range residual for satellite | 10^-5 | m | int32 | 4 | - | 10 |
| PRN Status "1" | Status flags of satellite | - | - | uint8 | - | 4 | 14 |
| NMEA Reserved | Reserved field | - | - | uint8 | - | 4 | - |
| PRN "n" | PRN identifier of satellite | - | - | uint8 | 1 | - | 15 |
| Elevation "n" | Elevation angle of satellite | 10^-4 | rad | int16 | 2 | - | 16 |
| Azimuth "n" | Azimuth angle of satellite | 10^-4 | rad | uint16 | 2 | - | 18 |
| SNR "n" | Signal-to-noise ratio of satellite | 10^-2 | db | int16 | 2 | - | 20 |
| Range Residuals "n" | Pseudorange/range residual for satellite | 10^-5 | m | int32 | 4 | - | 22 |
| PRN Status "n" | Status flags of satellite | - | - | uint8 | - | 4 | 26 |
| NMEA Reserved | Reserved field | - | - | uint8 | - | 4 | - |
The SBG_ECAN_MSG_NMEA_2000_VESSEL_SPEED_COMPONENTS message provides a longitudinal, transverse and sternward speed.
SBG_ECAN_MSG_NMEA_2000_VESSEL_SPEED_COMPONENTS (0x09FE1200)| Field | Description | Scaling | Unit | Format | Size(bytes) | Size(bits) | Offset |
|---|---|---|---|---|---|---|---|
| Longitudinal Speed, Water-referenced | Vessel longitudinal speed relative to the surrounding water | 10^-3 | m/s | int16 | 2 | - | 0 |
| Transverse Speed, Water-referenced | Vessel transverse speed relative to the surrounding water | 10^-3 | m/s | int16 | 2 | - | 2 |
| Longitudinal Speed, Ground-referenced | Vessel longitudinal speed relative to the ground | 10^-3 | m/s | int16 | 2 | - | 4 |
| Transverse Speed, Ground-referenced | Vessel transverse speed relative to the ground | 10^-3 | m/s | int16 | 2 | - | 6 |
| Stern Speed, Water-referenced | Vessel sternward speed relative to the surrounding water | 10^-3 | m/s | int16 | 2 | - | 8 |
| Stern Speed, Ground-referenced | Vessel sternward speed relative to the ground | 10^-3 | m/s | int16 | 2 | - | 10 |