SMCCg
The SMCCg protocol is a modified version of the SMCC protocol. The key difference between SMCC and SMCCg is that SMCCg includes gravity in the z-axis acceleration measurement.
Data:
Roll, pitch, heading
Surge, sway, heave
Surge velocity, sway velocity, heave velocity
x acceleration, y acceleration, z acceleration (including gravity)
Format:
$PSMCCG,±xx.xx, ±yy.yy, ±zzz.z, ±ss.ss, ±ww.ww, ±hh.hh, ±sv.sv, ±sw.sw, ±hv. hv, ±ax.axa, ±ay.aya, ±az.aza*cs<CR><LF>
SMCCg protocol description | |||||
---|---|---|---|---|---|
FIELD N. | FIELD | DESCRIPTION | UNIT | TYPE | NOTE |
0 | $PSMCCG | identifier | - | string | Telegram identifier. |
1 | ±xx.xx | roll angle | [deg] | DBL | Sign: Positive (+) is port up, negative (-) is port down. xx.xx: ‘xx' is the integer part of the roll represented by two digits in range [-99,99], ‘.’ is decimal separator and 'xx’ is the fractional part of the roll represented by two positive digits in range [0,99]. |
2 | ±yy.yy | pitch angle | [deg] | DBL | Sign: Positive (+) is bow down, negative is (-) bow up. yy.yy: ‘yy' is the integer part of the pitch represented by two digits in range [-99,99], ‘.’ is decimal separator and 'yy’ is the fractional part of the pitch represented by two positive digits in range [0,99]. |
3 | ±zzz.z | heading angle | [deg] | DBL | Heading increase in clockwise direction. zzz.z: ‘zzz' is the integer part of the heading represented by three positive digits in range [0,359], ‘.’ is decimal separator and 'z’ is the fractional part of the heading represented by one positive digit in range [0,9]. |
4 | ±ss.ss | surge | [m] | DBL | Sign: Positive (+) is forward (bow direction), negative (-) is backward (stern direction). ss.ss: ‘ss' is the integer part of the surge represented by two digits in range [-99,99], ‘.’ is decimal separator and 'ss’ is the fractional part of the surge represented by two positive digits in range [0,99]. |
5 | ±ww.ww | sway | [m] | DBL | Sign: Positive (+) is starboard right, negative (-) is port left. ww.ww: ‘ww' is the integer part of the sway represented by two digits in range [-99,99], ‘.’ is decimal separator and 'ww’ is the fractional part of the sway represented by two positive digits in range [0,99]. |
6 | ±hh.hh | heave | [m] | DBL | Sign: Positive (+) is upward w.r.t reference plane, negative (-) is downward w.r.t reference plane. hh.hh: ‘hh' is the integer part of the heave represented by two digits in range [-99,99], ‘.’ is decimal separator and 'hh’ is the fractional part of the heave represented by two positive digits in range [0,99]. |
7 | surge velocity | [m/s] | DBL | Sign: Positive (+) is forward (bow direction), negative (-) is backward (stern direction). sv.sv: ‘sv' is the integer part of the surge velocity represented by two digits in range [-99,99], ‘.’ is decimal separator and 'sv’ is the fractional part of the surge velocity represented by two positive digits in range [0,99]. | |
8 | ±sw.sw | sway velocity | [m/s] | DBL | Sign: Positive (+) is starboard right, negative (-) is port left. sw.sw: ‘sw' is the integer part of the sway velocity represented by two digits in range [-99,99], ‘.’ is decimal separator and 'sw’ is the fractional part of the sway velocity represented by two positive digits in range [0,99]. |
9 | ±hv.hv | heave velocity | [m/s] | DBL | Sign: Positive (+) is upward w.r.t reference plane, negative (-) is downward w.r.t reference plane. hv.hv: ‘hv' is the integer part of the heave velocity represented by two digits in range [-99,99], ‘.’ is decimal separator and 'hv’ is the fractional part of the heave velocity represented by two positive digits in range [0,99]. |
10 | ±ax.axa | acceleration x | [m/s²] | DBL | Sign: Positive (+) is forward (bow direction), negative (-) is backward (stern direction). ax.axa: ‘ax' is the integer part of the acceleration (x) represented by two digits in range [-99,99], ‘.’ is the decimal separator and 'axa’ is the fractional part of the acceleration (x) represented by three positive digits in range [0,999]. |
11 | ±ay.aya | acceleration y | [m/s²] | DBL | Sign: Positive (+) is starboard right, negative (-) is port left. ay.aya: ‘ay' is the integer part of the acceleration (y) represented by two digits in range [-99,99], ‘.’ is the decimal separator and 'aya’ is the fractional part of the acceleration (y) represented by three positive digits in range [0,999]. |
12 | ±az.aza | acceleration z (including gravity) | [m/s²] | DBL | Sign: Positive (+) is downward, negative (-) is upward. az.aza: ‘az' is the integer part of the acceleration (z) represented by two digits in range [-99,99], ‘.’ is the decimal separator and 'aza’ is the fractional part of the acceleration (z) represented by three positive digits in range [0,999]. |
13 | CS | checksum | - | HEX | XOR of characters between $ and * |
Example:
SMCC frame with raw example data is listed below.
$PSMCC,+00.28,-02.08,+106.0,-00.30,+00.08,-00.17,-00.06,+00.01,-00.02,- 00.365,-00.046,-09.813*70<CR><LF>
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 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
PSMCCG | +00.28 | -02.08 | +106.0 | -00.30 | +00.08 | -00.17 | -00.06 | +00.01 | -00.02 | -00.365 | -00.046 | -09.813 | 70 |
Decoded values:
Roll
Raw value: +00.28, decoded roll angle: 0.28 degrees
Pitch
Raw value: -02.08, decoded pitch angle: 2.08 degrees
Heading
Raw value: +106.0, decoded heading angle: 106.0 degrees
Surge
Raw value: -00.30, decoded surge: -0.3 m
Sway
Raw value: +00.08, decoded sway: 0.08 m
Heave
Raw value: -00.17, decoded heave: -0.17 m
Surge velocity
Raw value: -00.06, decoded surge velocity: 0.06 m/s
Sway velocity
Raw value: +00.01, decoded sway velocity: 0.01 m/s
Heave velocity
Raw value: -00.02, decoded heave velocity: -0.02 m/s
Acceleration x
Raw value: -00.365, decoded acceleration x: -0.365 m/s²
Acceleration y
Raw value: -00.046, decoded acceleration y: -0.046 m/s²
Acceleration z
Raw value: -09.813, decoded acceleration z: -9.813 m/s²
Checksum
Created from XOR operations of characters between $ and * in the example frame.
Note 1
The fields of data (e.g., ‘xx.xx’) are decimal numbers with leading zeroes where appropriate.
Note 2
The reference frame for data (e.g., roll) is configurable in the SMCCg protocol. Also, the data's location (e.g., MRU or MP1) is configurable.