BARNARD MICROSYSTEMS LIMITED

helping you keep an eye on things...

   
     
Home / unmanned air systems / reference / status message
   

 

   
Home | introduction | circuit design software | unmanned air systems | contact | what's new | site info
   
 

 

   

unmanned air ...

features 
issues 
applications I 
applications II 
geological survey 
oil leakage 
engines 
avionics 
airframes 
payload I 
payload II 
data processing 
milestones 
calendar 
reference 
 

reference

heli flight dynamics 
heli training 
status message 
remote control 

 

 

Small Unmanned Aircraft Status Message syntax

In this section, we detail a binary Unmanned Aircraft Status Message Syntax that is only 600 bytes in size. This 4,800 bit message can be BYTE multiplexed at a rate of 1 message per second with 4,800 bps CELP encoded digitised Tower or ATC voice. The Tower or ATC centre voice together with one status message per second can be transmitted using the modem capability of an inexpensive satellite phone to a low earth orbit satellite.

   

 

Message length

We calculate a Status Message length for a well equipped Unmanned Aircraft with:

  • three engines
  • three battery units
  • one generator
  • five Power Supply Units
  • four altimeters (3 ultrasonic + 1 LIDAR)
  • five communication systems (3 VHF + 1 satellite modem + 1 GSM modem)
  • a Sense and Avoid system
  • four cameras

BLOCK 0

section

Bytes

 

Preamble = 55:55:55:55:55:55:0F:0F

consisting of:

6 x NULL_0101

NULL_0101 = 01010101 = HEX 55

2 x Preamble_0

Preamble_0 = 00001111 = HEX 0F

8

90 Bytes

BLOCK 0 has a checksum, but is not FEC encoded

padding with n x NULL_0101

34

Payload

44

BLOCK 0 checksum

4

 

BLOCK 1

section

Bytes

 

padding with NULL_0101

NULL_0101 = HEX 55 = 0101 0101

0

223 Bytes

BLOCK 1 is FEC encoded

223 B goes to 255 B FEC

Header

28

Power

54

GPS

67

Warnings

15

Communications systems

59

 

BLOCK 2

   

section

Bytes

 

padding with NULL_0101

NULL_0101 = HEX 55 = 0101 0101

2

223 Bytes

BLOCK 2 is FEC encoded

223 B goes to 255 B FEC

IMU

52

FCU

105

Sense and Avoid system

58

End_Of_String

1

  • BLOCK 0 has a 4 Byte unsigned integer checksum, but is not FEC encoded since the Payload Status is not considered to be "mission critical" from a command and control perspective
  • BLOCK 1 is FEC encoded to 255 Bytes, as is BLOCK 2, using Reed Solomon RS(255,223) coding.
  • If the data in BLOCK 1 or in BLOCK 2 is less than 233 Bytes, then the data is padded with NULL_0101 to 233 Bytes. NULL_0101 = 0101 0101, i.e. an alternating sequence of ONEs and ZEROs.
  • BLOCK 0, 1 and 2 data may be encrypted using an algorithm that does not increase the message size. Any encryption of BLOCK 1 and BLOCK 2 data is performed prior to FEC encoding.
  • The Payload BLOCK 0 + FEC encoded BLOCK 1 + FEC encoded BLOCK 2 = 600 Bytes = 4,800 bits.
  • This Status Message is BYTE multiplexed with the 4,800 bps digitised voice channel to end up with a 9,600 bps digital data signal that can be transmitted via a satellite phone modem.

Compatibility with STANAG 4586

"The length shall be a 32-bit unsigned integer of the number of bytes in the “Message Data”.  The length shall be any number between 1 and 538.

Note the UDP protocol under IPv4 has a guaranteed minimum datagram size of 576 bytes that must be supported by all implementations.  Subtracting the IPv4 header size of 20 bytes and the UDP header size of 8 bytes, leaves 548 bytes as the maximum amount data that can be sent in a datagram that will guarantee interoperability.  Therefore, no message or multi-message datagram shall exceed this data limit.  Subtracting the message wrapper size of 24 bytes, gives 524 bytes as the maximum message length of a single message with no room for another message in the datagram.  Extra care should be taken when packing multiple messages in the same datagram." - STANAG 4586

One can comply with the message size recommended in STANAG 4586 by sending the BLOCK 0 data (90 Bytes) in one datagram, and the BLOCK 1 + BLOCK 2 data (510 Bytes) in a second datagram. Both BLOCK 0 and BLOCK1 contain the same message number, so the Ground Control Station can correctly reunite the data on receipt of the two datagrams.

return to top

Status Message keywords

B0 HEX

Item_ID

name

Value

Bytes

comments on B1:B2:B3:B4

00

End_Of_String

0

Reserved for use at the end of the BLOCK 2 section.

01

BEGIN

1

beginning of section; B1 = section ID (shown next)

00 = HEADER (message header data: message_ID,...)

01 = IMU (Inertial Measurement Unit)

02 = FCU (Flight Control Unit)

03 = POWER (electrical power supplies monitoring)

04 = WARNINGS (warning flags: ON, OFF)

05 = COMMS (status of comms systems; BER, RSSI)

06 = PAYLOAD (any warnings from payload)

07 = GPS (GPS data, received each second)

08 = SENSE (from Sense and Avoid system, if fitted)

09 = engine

0A = flaps

0B = altimeter

0C = FCU_general

0D = battery

0E = PSU

0F = comms_system

10 = GPS_satellite

11 = air_object

12 = camera

13 = generator

02

END

0

end of section

03

ID_msg

3

16,777,216 unique message IDs

sufficient for 194 day (each 24 hours) UA flight

04

ID_UA_source

4

B1:B2 = country code = the International Telephone Dialling Code, where the largest number = 1929 (the North American Numbering Plan) for Puerto Rico.

In STANAG 4586 a single Byte country code is used for NATO and "friendly" countries: no codes for others!

B3:B4 = 65,536 unique IDs

05

time_UTC

3

hhmmss with hh using 24 hour UTC GPS clock

eg: 231205 = 23h:12:05 = 5 seconds past 11:12 pm

06

date_UTC

3

Format is yymmdd

example 080117 = 17 JAN 2008

07

ID_BLK12_format

2

B1 = BLOCK 1 format ID from 0 to 255

B2 = BLOCK 2 format ID from 0 to 255

08

ID_GCS_destination

4

B1:B2 = country code = the International Telephone Dialling Code, where the largest number = 1929 (the North American Numbering Plan) for Puerto Rico.

B3:B4 = 65,536 unique IDs

09

ID_GCS_backup

4

B1:B2 = country code = the International Telephone Dialling Code, where the largest number = 1929 (the North American Numbering Plan) for Puerto Rico.

B3:B4 = 65,536 unique IDs

0A - 0E

unused

 

5 Item_ID Bytes reserved for future use.

0F

Preamble_0

0

Used in the Preamble

HEX 0F = BIN 0000 1111

Example

text format

binary format

BEGIN HEADER

01:00 (not included)

ID_msg

ID_msg 133

03:00:00:85

ID_UA_source

ID_UA_source GB_133

04:2C:00:00:85

time_UTC

time_UTC 16:35:23

05:02:7E:C3

date_UTC

date_UTC 071114

06:01:15:CA

ID_BLK12_format

ID_BLK12_format 5 15

07:05:0F

ID_GCS_destination

ID_GCS_destination

08:2C:76:12:46

ID_GCS_backup

ID_GCS_backup

09:2C:A1:23:77

END

02 (not included)

Note that the BEGIN HEADER and the END Item_IDs are not included to save message length.

  • HEADER binary message section length = 28 Bytes

return to top

IMU section

B0 HEX

Item_ID

name

Value

Bytes

comments on B1:B2:B3

10

IMU_gyro_x

3

0 to +/- 8,388,607 millidegrees / sec in B1:B2:B3 format

11

IMU_gyro_y

3

0 to +/- 8,388,607 millidegrees / sec in B1:B2:B3 format

12

IMU_gyro_z

3

0 to +/- 8,388,607 millidegrees / sec in B1:B2:B3 format

13

IMU_accel_AVG_x

3

0 to +/- 8,388,607 ug in B1:B2:B3 format (g = 9.8m/s2)

14

IMU_accel_AVG_y

3

0 to +/- 8,388,607 ug in B1:B2:B3 format (g = 9.8m/s2)

15

IMU_accel_AVG_z

3

0 to +/- 8,388,607 ug in B1:B2:B3 format (g = 9.8m/s2)

16

IMU_mag_x

3

0 +/- 8,388,607 nT in B1:B2:B3 format

Earth's magnetic field strength = 48,489 nT

17

IMU_mag_y

3

0 to +/- 8,388,607 nT in B1:B2:B3 frmat

18

IMU_mag_z

3

0 to +/- 8,388,607 nT in B1:B2:B3 format

19

IMU_inclin_x

2

0 to +/- 32,767 millidegrees in B1:B2 format

This is the "angle-of-attack".

1A

IMU_inclin_y

2

0 to +/- 32,767 millidegrees in B1:B2 format

This is the "horizontal situation indicator".

1B

IMU_temp

2

IMU_temp = B1:B2 / 100 in degrees Centigrade

B1B2 / 100 = 0 to 655.35 degrees Centigrade

1C

IMU_AMP_vib_x

3

0 to 16,777,215 ug in B1:B2:B3 format (g = 9.8m/s2)

vibration amplitude of largest peak in spectrum (not f=0)

1D

IMU_FREQ_vib_x

3

0 to 16,777,215 milliHz in B1:B2:B3 format

vibration frequency of largest peak in spectrum (not f=0)

suitable for engine related vibrations to 1,006,632 rpm

1E

IMU_AMP_vib_y

3

0 to 16,777,215 ug in B1:B2:B3 format (g = 9.8m/s2)

1F

IMU_FREQ_vib_y

3

0 to 16,777,215 milliHz in B1:B2:B3 format

20

IMU_AMP_vib_z

3

0 to 16,777,215 ug in B1:B2:B3 format (g = 9.8m/s2)

21

IMU_FREQ_vib_z

3

0 to 16,777,215 milliHz in B1:B2:B3 format

22 - 2E

unused

 

13 Item_ID Bytes reserved for future use.

2F

IMU_fault

1

B1 = 0 to 255

if B1 = 0 no fault is reported from the IMU

if B1 = 1 to 255, fault number B1 was reported by IMU

Example

text format

binary format

BEGIN IMU

01:01 (not included)

IMU Item_IDs

52 Bytes

END

02 (not included)

  • IMU binary message section length = 52 Bytes

return to top

FCU section

FCU section: engine

B0 HEX

Item_ID

name

Value

Bytes

comments on B1:B2:B3:B4

30

eng_ID

1

0 to 255

31

eng_prop_pitch

2

0 to 255

0 = one extreme

255 = the other extreme

32

eng_speed_ACT

2

engine_speed = B1:B2 * 10

B1:B2 * 10 = 0 to 655,350 rpm

33

eng_carb_SET

1

0 to 255 where 255 = max setting

34

eng_TEMP

2

temp = B1:B2 / 100 degrees Centigrade

B1:B2 / 100 = 0 to 655.35 degrees Centigrade

35

eng_TEMP_exhaust

2

temp = B1:B2 / 100 degrees Centigrade

B1:B2 / 100 = 0 to 655.35 degrees Centigrade

36

eng_flow_rate_fuel

2

16 bit value from ADC in arbitrary units

37

eng_AMP_vib

3

0 to 16,777,215 ug in B1:B2:B3 format (g = 9.8m/s2)

vibration amplitude of largest peak in spectrum (not f=0)

38 - 3F

unused

 

8 Item_ID Bytes reserved for future use

FCU engine binary message section length = 15 Bytes per engine

FCU section: flaps

B0 HEX

Item_ID

name

Value

Bytes

comments on B1

40

F_aileron_LHS_set

1

0 to +/- 127 degrees

41

F_aileron_LHS_act

1

0 to +/- 127 degrees

42

F_aileron_RHS_set

1

0 to +/- 127 degrees

43

F_aileron_RHS_act

1

0 to +/- 127 degrees

44

F_lift_LHS_set

1

0 to +/- 127 degrees

45

F_lift_LHS_actual

1

0 to +/- 127 degrees

46

F_lift_RHS_set

1

0 to +/- 127 degrees

47

F_lift_RHS_actual

1

0 to +/- 127 degrees

48

F_rudder_set

1

0 to +/- 127 degrees

49

F_rudder_actual

1

0 to +/- 127 degrees

4A

F_elev_LHS_set

1

0 to +/- 127 degrees

4B

F_elev_LHS_actual

1

0 to +/- 127 degrees

4C

F_elev_RHS_set

1

0 to +/- 127 degrees

4D

3_elev_RHS_actual

1

0 to +/- 127 degrees

4E

F_airbrake_LHS_set

1

0 to +/- 127 degrees

4F

F_airbrake_LHS_act

1

0 to +/- 127 degrees

50

F_airbrake_RHS_set

1

0 to +/- 127 degrees

51

F_airbrake_RHS_act

1

0 to +/- 127 degrees

52 - 54

reserved

 

2 Item_ID Bytes reserved for future use

55

NULL_0101

0

This is a NULL command used to pad out BLOCKs

HEX 55 = BIN 0101 0101

The complimentary command is AA = NULL_1010

56 - 5F

unused

 

10 Item_ID Bytes reserved for future use

FCU flaps binary message section length = 18 Bytes

FCU section: general

B0 HEX

Item_ID

name

Value

Bytes

comments on B1:B2:B3:B4:B5

60

FCU_pressure_BARO

3

0 to 16,777,215 Pa

zero altitude = 101,325 Pa

61

FCU_speed_air_pitot

2

0 to 65,535 cm/s (= 2,359 kph = 1,466 mph)

62

FCU_fuel_1

2

0 to 65,535 millilitres (cc)

63

FCU_fuel_2

2

0 to 65,535 millilitres (cc)

64

FCU_fuel_3

2

0 to 65,535 millilitres (cc)

65

FCU_direction_wind

2

0 to 359 degrees: NORTH is 0 degrees

66

FCU_speed_wind

1

0 to 255 kph (= 158 mph)

67

FCU_height_AGL_ALT

4

B1 = altimeter_type

where U = ultrasonic; L = LIDAR; M = microwave

B2 = altimeter_ID from 0 to 255

B3:B4:B5 = 0 to 16,777,215 mm (16.7 km = FL550)

68

FCU_dx_OpFlow

2

0 to 65,535 cm (655 m/s = 2,359 kph = 1,465 mph)

69

FCU_dy_OpFlow

2

0 to 65,535 cm (655 m/s = 2,359 kph = 1,465 mph)

6A

FCU_dPITCH_OpFlow

2

0 to +/- 32,767 millidegrees

6B

FCU_dROLL_OpFlow

2

0 to +/- 32,767 millidegrees

6C

FCU_light_ambient