NORSUB8
The NORSUB8 protocol is a proprietary communication standard with an NMEA-based format, designed to store the data listed below.
Data:
Roll, pitch, heading
Surge, sway, heave
Roll rate, pitch rate, yaw rate
Surge velocity, sway velocity, heave velocity
x acceleration, y acceleration, z acceleration
x period, y period, z period
x amplitude, y amplitude, z amplitude
full status word
Format:
$PNORSUB8,T1,T2,roll,pitch,heading,surge,sway,heave,roll_rate,pitch_rate, yaw_rate,surge_vel,sway_vel, heave_vel,acc_x,acc_y,acc_z,T_x,T_y,T_z, A_x,A_y,A_z,status_full*CS<CR><LF>
NORSUB8 protocol description | |||||
---|---|---|---|---|---|
FIELD N. | FIELD | DESCRIPTION | UNIT | TYPE | NOTE |
0 | $PNORSUB8 | identifier | - | string | |
1 | T1 | time for valid measurement (internal clock) | [us] | uint32 | Can store values from 0 to (2^32-1). |
2 | T2 | delay from T1 to telegram is sent | [us] | uint32 | Can store values from 0 to (2^32-1). |
3 | roll | roll angle | [deg] | DBL (%.4f) | Floating-point number with four decimal places. |
4 | pitch | pitch angle | [deg] | DBL (%.4f) | Floating-point number with four decimal places. |
5 | heading | heading angle | [deg] | DBL (%.4f) | Floating-point number with four decimal places. Range: [0.0001, 359.9999]. |
6 | surge | surge | [m] | DBL (%.4f) | Floating-point number with four decimal places. |
7 | sway | sway | [m] | DBL (%.4f) | Floating-point number with four decimal places. |
8 | heave | heave | [m] | DBL (%.4f) | Floating-point number with four decimal places. Sign: Positive (+) when z-down. |
9 | roll_rate | roll rate | [deg/s] | DBL (%.4f) | Floating-point number with four decimal places. |
10 | pitch_rate | pitch rate | [deg/s] | DBL (%.4f) | Floating-point number with four decimal places. |
11 | yaw_rate | yaw rate | [deg/s] | DBL (%.4f) | Floating-point number with four decimal places. |
12 | surge_vel | surge velocity | [m/s] | DBL (%.4f) | Floating-point number with four decimal places. |
13 | sway_vel | sway velocity | [m/s] | DBL (%.4f) | Floating-point number with four decimal places. |
14 | heave_vel | heave velocity | [m/s] | DBL (%.4f) | Floating-point number with four decimal places. Sign: Positive (+) when z-down. |
15 | acc_x | acceleration x | [m/s²] | DBL (%.5f) | Floating-point number with five decimal places. |
16 | acc_y | acceleration y | [m/s²] | DBL (%.5f) | Floating-point number with five decimal places. |
17 | acc_z | acceleration z | [m/s²] | DBL (%.5f) | Floating-point number with five decimal places. |
18 | T_x | period x | [s] | DBL (%.2f) | Floating-point number with two decimal places. |
19 | T_y | period y | [s] | DBL (%.2f) | Floating-point number with two decimal places. |
20 | T_z | period z | [s] | DBL (%.2f) | Floating-point number with two decimal places. |
21 | A_x | amplitude x | [m] | DBL (%.2f) | Floating-point number with two decimal places. |
22 | A_y | amplitude y | [m] | DBL (%.2f) | Floating-point number with two decimal places. |
23 | A_z | amplitude z | [m] | DBL (%.2f) | Floating-point number with two decimal places. |
24 | status | full status message | - | uint32 | 1: OK, 0: error. See health monitoring system for more details. |
25 | CS | NMEA checksum | - | hex | XOR of characters between $ and * |
Example:
NORSUB8 frame with raw example data is listed below.
$PNORSUB8,1347578196,7939,-100.1028,0.8549,108.1722,0.029,0.021,-0.020, -0.069,-0.017,0.035,0.009,0.003,-0.003,0.00154,-0.00190,0.00302, 24.97, 25.00,23.02,2.01,1.02,0.85,1*5
Field 0 | Field 1 | Field 2 | Field 3 | Field 4 | Field 5 | Field 6 | Field 7 | Field 8 | Field 9 | Field 10 | Field 11 | Field 12 | Field 13 | Field 14 | Field 15 | Field 16 | Field 17 | Field 18 | Field 19 | Field 20 | Field 21 | Field 22 | Field 23 | Field 24 | Field 25 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
$PNORSUB8 | 1347578196 | 7939 | -100.1028 | 0.8549 | 108.1722 | 0.029 | 0.021 | -0.020 | -0.069 | -0.017 | 0.035 | 0.009 | 0.003 | -0.003 | 0.00154 | -0.00190 | 0.00302 | 24.97 | 25.00 | 23.02 | 2.01 | 1.02 | 0.85 | 1 | 5 |
Decoded values:
T1
Raw value: 1347578196, decoded time: seconds.
T2
Raw value: 7566, decoded time: seconds.
roll
Raw value: -100.1028, decoded roll angle: degrees.
pitch
Raw value: 0.8549, decoded pitch angle: degrees.
heading
Raw value: 108.1722, decoded heading angle: degrees.
surge
Raw value: 0.029, decoded heave: m.
sway
Raw value: 0.021, decoded heave: m.
heave
Raw value: -0.020, decoded heave: m.
roll rate
Raw value: -0.069, decoded roll rate: deg/s.
pitch rate
Raw value: -0.017, decoded pitch rate: deg/s.
yaw rate
Raw value: 0.035, decoded yaw rate: deg/s.
surge velocity
Raw value: 0.009, decoded surge velocity: m/s.
sway velocity
Raw value: 0.003, decoded surge velocity: m/s.
heave velocity
Raw value: -0.003, decoded heave velocity: m/s.
acceleration x
Raw value: 0.00154, decoded acc x: m/s².
acceleration y
Raw value: -0.00190, decoded acc y: m/s².
acceleration z
Raw value: 0.00302, decoded acc z: m/s².
period x
Raw value: 24.97, decoded period x: s.
period y
Raw value: 25.00, decoded period y: s.
period z
Raw value: 23.02, decoded period z: s.
amplitude x
Raw value: 2.01, decoded amplitude x: m.
amplitude y
Raw value: 1.02, decoded amplitude x: m.
amplitude z
Raw value: 0.85, decoded amplitude x: m.
status
Raw value: 1, decoded status: OK.
checksum: 5
Created from XOR operations of characters between $ and * in the example frame.
NORSUB7 / NORSUB7B / NORSUB8
NORSUB7, NORSUB7b and NORSUB8 are very similar in their structure. The important difference is that in the NORSUB7 and NORSUB7b protocol the surge, sway positions, velocities and accelerations are measured in the body frame, while in the NORSUB8 protocol they are measured in the heading frame. NORSUB7 and NORSUB8 contain the full STATUS word (n.24), while NORSUB7b contains the status split in to variables (n.24 and n.25): one containing the first two bytes, the other containing the last two.
Note
Unlike industry standards, the NORSUB8 protocol has a fixed reference frame for data (e.g., heave). However, the data's location (e.g., MRU or MP1) remains configurable.