SMCC
The SMCC protocol is an NMEA 0183-compatible string used for connecting to helideck monitoring systems and other related systems.
Data:
Roll, pitch, heading
Surge, sway, heave
Surge velocity, sway velocity, heave velocity
x acceleration, y acceleration, z acceleration
Format:
$PSMCC,±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>
SMCC protocol description | |||||
---|---|---|---|---|---|
FIELD N. | FIELD | DESCRIPTION | UNIT | TYPE | NOTE |
0 | $PSMCCG | identifier | - | string | Telegram identifier. |
1 | ±xx.xx | roll | [deg] | DBL | Sign: Positive (+) when port up. 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 | [deg] | DBL | Sign: Positive (+) when bow down. 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 | [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 (+) in forward (bow) 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 (+) in right (starboard) direction. 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 (+) when elevated. 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]. Note that hh.hh is a decimal number with leading zeroes where appropriate. |
7 | ±sv.sv | surge velocity | [m/s] | DBL | Sign: Positive (+) in forward (bow) 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 (+) in right (starboard) direction. 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 (+) when elevated. 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 | 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 | 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 | [m/s²] | DBL | 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.
$PSMCCG,+00.28,-02.08,+106.0,-00.30,+00.08,-00.17,-00.06,+00.01,-00.02,-00.365,-00.046,-00.003*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 | -00.003 | 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: -00.003, decoded acceleration z: -0.003 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 SMCC protocol. Also, the data's location (e.g., MRU or MP1) is configurable.