Barnard Microsystems Limited

Developing Unmanned Aircraft Systems to benefit Mankind

UA remote control message syntax - Remote Control

In this section, we detail a binary Unmanned Aircraft Remote Control 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 GCS staff voice. The GCS staff voice together with one remote control message per second can be transmitted using the modem capability of an inexpensive satellite phone.

Message length

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

  • three engines
  • three VHF communication systems
  • a Sense and Avoid system
  • two payload cameras

BLOCK 0 = preamble

section

Bytes

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

consisting of:

88 x NULL_0101

NULL_0101 = 01010101 = HEX 55

2 x Preamble_0

Preamble_0 = 00001111 = HEX 0F

90

BLOCK 1 for Unmanned Aircraft remote control

section

Bytes

padding with NULL_0101

NULL_0101 = HEX 55 = 0101 0101

107

Header

20

FCU

18

Settings

9

Communications systems

54

Sense and Avoid system

3

Payload

12

BLOCK 2 for flight plan update data

section

Bytes

Number of data Bytes = x = 0 to 255

1

flight_plan_ID

4

flight_plan_section_ID

2

flight plan update data: x Bytes

x

padding with NULL_0101

NULL_0101 = HEX 55 = 0101 0101

233 - x - 8

End_Of_String

1

  • BLOCK 0 consists of a preamble section only
  • 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 1 and 2 data may be encrypted using an algorithm that does not increase the message size. Any encryption is performed prior to FEC encoding.
  • BLOCK 0 + FEC encoded BLOCK 1 + FEC encoded BLOCK 2 = 600 Bytes = 4,800 bits.
  • This Remote Control 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 only sending the BLOCK 1 + BLOCK 2 data (510 Bytes) in a single datagram.

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 = FCU (Flight Control Unit)

02 = SETTINGS (settings: ON, OFF)

03 = COMMS (comms systems control)

04 = SENSE (Sense and Avoid camera control)

05 = PAYLOAD (payload control)

06 = engine

07 = flaps

08 = FCU_general

09 = comms_system

0A = camera

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

1

Used in the Preamble

HEX 0F = BIN 0000 1111

Example

text format

binary format

BEGIN HEADER

01:00 (not included)

ID_msg

ID_msg133

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

ID_GCS_backup

ID_GCS_backup

09:2C:A1:23

END

02 (not included)

03:00:00:85:04:2C:00:00:85:05:02:7E:C3:06:01:15:CA:07:05:0F: 08:2C:76:12:09:2C:A1:23

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

  • HEADER binary message section length = 20 Bytes

return to top

FCU section

FCU section: engines

Remote control

B0 HEX

Item_ID

name

Value

Bytes

comments on B1:B2:B3:B4

30

eng_status

1

B1 = B1_0 B1_1 B1_2 B1_3 B1_4 B1_5 B1_6 B1_7

B1_0 B1_1 = 0 0 = data corruption

B1_0 B1_1 = 0 1 = AUTO control by UA FCU = ON

B1_0 B1_1 = 1 0 = for remote control from GCS ON

B1_0 B1_1 = 1 1 = use Radio Control transmitter

B1_2 B1_3 = 0 0 = data corruption

B1_2 B1_3 = 0 1 = no slave eng

B1_2 B1_3 = 1 0 = for master eng 1 + slave eng 3 = ON

B1_2 B1_3 = 1 1 = data corruption

31

eng_ID

1

0 to 255

32

eng_prop_pitch

1

0 to 255

0 = one extreme

255 = the other extreme

33

eng_carb_SET

1

0 to 255

0 = one extreme

255 = the other extreme

34 - 3F

unused

12 Item_ID Bytes reserved for future use

FCU engine binary message section length = 1 + 3 Bytes per engine

FCU section: flaps

Remote control

B0 HEX

Item_ID

name

Value

Bytes

comments on B1

40

FLAP_status

1

B1 = B1_0 B1_1 B1_2 B1_3 B1_4 B1_5 B1_6 B1_7

B1_0 B1_1 = 0 0 = IGNORE: data corruption

B1_0 B1_1 = 0 1 = AUTO control by UA FCU = ON

B1_0 B1_1 = 1 0 = for remote control from GCS ON

B1_0 B1_1 = 1 1 = use Radio Control transmitter

B1_2 B1_3 = 0 0 = IGNORE: data corruption

B1_2 B1_3 = 0 1 = no slave aileron

B1_2 B1_3 = 1 0 = for master LH + slave RH = ON

B1_2 B1_3 = 1 1 = IGNORE: data corruption

41

F_aileron_LHS_set

1

0 to +/- 127 degrees

42

F_aileron_RHS_set

1

0 to +/- 127 degrees

43

F_lift_set

1

0 to +/- 127 degrees

44

F_rudder_set

1

0 to +/- 127 degrees

45

F_elev_set

1

0 to +/- 127 degrees

46

F_airbrake_set

1

0 to +/- 127 degrees

47 - 4F

unused

9 Item_ID Bytes reserved for future use

FCU flaps binary message section length = 7 Bytes

B0 HEX

Item_ID

name

Value

Bytes

comments on B1

50 - 54

unused

5 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 section: general

Remote control

B0 HEX

Item_ID

name

Value

Bytes

comments on B1:B2:B3:B4:B5

60

ENABLE_fuel_dump

1

B1 = B1_0 B1_1 B1_2 B1_3 B1_4 B1_5 B1_6 B1_7

B1_0 B1_0 B1_1 B1_0 B1_1 = 1 0 = fuel dump facility ENABLED

B1_0 B1_1 = 1 1 = IGNORE: data corruption

DUMP_fuel_1

B1_2 B1_3 = 0 0 = IGNORE: data corruption

B1_2 B1_3 = 0 1 = NO dump of fuel in TANK 1

B1_2 B1_3 = 1 0 = DUMP fuel in TANK 1

B1_2 B1_3 = 1 1 = IGNORE: data corruption

DUMP_fuel_2

B1_4 B1_5 = 0 0 = IGNORE: data corruption

B1_4 B1_5 = 0 1 = NO dump of fuel in TANK 1

B1_4 B1_5 = 1 0 = DUMP fuel in TANK 1

B1_4 B1_5 = 1 1 = IGNORE: data corruption

DUMP_fuel_3

B1_6 B1_7 = 0 0 = IGNORE: data corruption

B1_6 B1_7 = 0 1 = NO dump of fuel in TANK 1

B1_6 B1_7 = 1 0 = DUMP fuel in TANK 1

B1_6 B1_7 = 1 1 = IGNORE: data corruption

61 - 6F

unused

15 Item_ID Bytes reserved for future use

FCU general binary message section length = 1 Byte

Example

text format

binary format

BEGIN FCU

01:02 (not included)

BEGIN engine

01:09 (not included)

3 Bytes per engine

FCU engine Item_IDs

3 Bytes per engine

END

02 (not included)

BEGIN flaps

01:0A (not included)

7 Bytes

FCU flaps Item_IDs

7 Bytes

END

02 (not included)

BEGIN FCU_general

01:0C (not included)

FCU general Item_IDs

1 Bytes for a four altimeter system

END

02 (not included)

END

02 (not included)

  • FCU binary message section length = 10 + 7 + 1 = 18 Bytes for a 3 engined Unmanned Aircraft

return to top

Settings

Remote control

B1

setting_value

name

Value

Bytes

comments on B2

70

land_wheels_LHS

1

B2 = B2_0 B2_1 B2_2 B2_3 B2_4 B2_5 B2_6 B2_7

B 2 _0 B2_0 B2_1 B2_0 B2_1 = 1 0 = land_wheel_LHS = RETRACTED

B2_0 B2_1 = 1 1 = IGNORE: data corruption

land_wheels_RHS

B2_2 B2_3 = 0 0 = IGNORE: data corruption

B2_2 B2_3 = 0 1 = land_wheel_RHS = OUT

B2_2 B2_3 = 1 0 = land_wheel_RHS = RETRACTED

B2_2 B2_3 = 1 1 = IGNORE: data corruption

land_wheels_NOSE

B2_4 B2_5 = 0 0 = IGNORE: data corruption

B2_4 B2_5 = 0 1 = land_wheel_NOSE = OUT

B2_4 B2_5 = 1 0 = land_wheel_NOSE = RETRACTED

B2_4 B2_5 = 1 1 = IGNORE: data corruption

land_wheels_TAIL

B2_6 B2_7 = 0 0 = IGNORE: data corruption

B2_6 B2_7 = 0 1 = land_wheel_TAIL = OUT

B2_6 B2_7 = 1 0 = land_wheel_TAIL = RETRACTED

B2_6 B2_7 = 1 1 = IGNORE: data corruption

B1

setting_value

name

Value

Bytes

comments on B2

71

lights_wing_RHS

1

B2 = B2_0 B2_1 B2_2 B2_3 B2_4 B2_5 B2_6 B2_7

B2 _0 B2_0 B2_1 B2_0 B2_1 = 1 0 = lights_wing_RHS = ON

B2_0 B2_1 = 1 1 = IGNORE: data corruption

lights_wing_LHS

B2_2 B2_3 = 0 0 = IGNORE: data corruption

B2_2 B2_3 = 0 1 = lights_wing_LHS = OFF

B2_2 B2_3 = 1 0 = lights_wing_LHS = ON

B2_2 B2_3 = 1 1 = IGNORE: data corruption

lights_TAIL

B2_4 B2_5 = 0 0 = IGNORE: data corruption

B2_4 B2_5 = 0 1 = lights_TAIL = OFF

B2_4 B2_5 = 1 0 = lights_TAIL = ON

B2_4 B2_5 = 1 1 = IGNORE: data corruption

wheel_brake

B2_6 B2_7 = 0 0 = IGNORE: data corruption

B2_6 B2_7 = 0 1 = wheel_brake = OFF

B2_6 B2_7 = 1 0 = wheel_brake = ON

B2_6 B2_7 = 1 1 = IGNORE: data corruption

B1

setting_value

name

Value

Bytes

comments on B2

72

lights_wing_RHS

1

B2 = B2_0 B2_1 B2_2 B2_3 B2_4 B2_5 B2_6 B2_7

B 2 _0 B2_0 B2_1 B2_0 B2_1 = 1 0 = lights_wing_RHS = ON

B2_0 B2_1 = 1 1 = IGNORE: data corruption

lights_wing_LHS

B2_2 B2_3 = 0 0 = IGNORE: data corruption

B2_2 B2_3 = 0 1 = lights_wing_LHS = OFF

B2_2 B2_3 = 1 0 = lights_wing_LHS = ON

B2_2 B2_3 = 1 1 = IGNORE: data corruption

lights_TAIL

B2_4 B2_5 = 0 0 = IGNORE: data corruption

B2_4 B2_5 = 0 1 = lights_TAIL = OFF

B2_4 B2_5 = 1 0 = lights_TAIL = ON

B2_4 B2_5 = 1 1 = IGNORE: data corruption

wheel_brake

B2_6 B2_7 = 0 0 = IGNORE: data corruption

B2_6 B2_7 = 0 1 = wheel_brake = OFF

B2_6 B2_7 = 1 0 = wheel_brake = ON

B2_6 B2_7 = 1 1 = IGNORE: data corruption

73 - 7F

unused

12 Item_ID Bytes reserved for future use

Example

Syntax

comments

BEGIN SETTINGS

01:04 (not included)

settings Settings_ID setting_value

80:70:57

settings Settings_ID setting_value

80:71:93

settings Settings_ID setting_value

80:72:AC

END

02 (not included)

  • SETTINGS binary message section length = 9 Bytes

return to top

Communication systems

Remote control

B0 HEX

Item_ID

name

Value

Bytes

comments B1:B2:B3:B4

80

receiver_control

1

B1_0 B1_0 B1_1 B1_0 B1_1 = 1 0 = receiver set ON

B1_0 B1_1 = 1 1 = IGNORE: data corruption

transmitter_control

B1_2 B1_3 = 0 0 = IGNORE: data corruption

B1_2 B1_3 = 0 1 = transmitter set OFF

B1_2 B1_3 = 1 0 = transmitter set ON

B1_2 B1_3 = 1 1 = IGNORE: data corruption

81

system_ID

8

eight ASCII characters

82

Rx_freq

4

0 to 4,294,967,295 kHz

for VHF comms

83

Tx_freq

4

0 to 4,294,967,295 kHz

for VHF comms

84

Tx_OP_power

1

0 to 255 dBm

for VHF comms

85 - 8F

unused

11 Item_ID Bytes reserved for future use

Example

text format

binary format

BEGIN COMMS

01:05 (not included)

BEGIN comms_system

01:0F (not included)

18 Bytes / VHF transceiver

comms_system Item_IDs

18 Bytes = VHF TxRx

END

02 (not included)

END

02 (not included)

  • Three VHF comms systems would require 3 x 18 = 54 Bytes

return to top

Reserved_1 for future use

B0 HEX

Item_ID

name

Value

Bytes

comments B1:B2:B3:B4

90 - 9F

unused

16 Item_ID Bytes reserved for future use

A0 - A9

unused

16 Item_ID Bytes reserved for future use

AA

Preamble_1

0

Reserved for use in the Preamble

HEX AA = BIN 1010 1010

AB - AF

unused

14 Item_ID Bytes reserved for future use

return to top

S+A System

Remote control

B0 HEX

Item_ID

name

Value

Bytes

comments B1:B2:B3:B4

B0

SA_zoom_LHS_cam

1

0 - 255

0 = minimum zoom

255 = maximum zoom

B1

SA_zoom_FWD_cam

1

0 - 255

0 = minimum zoom

255 = maximum zoom

B2

SA_zoom_RHS_cam

1

0 - 255

0 = minimum zoom

255 = maximum zoom

B3 - BF

unused

13 Item_ID Bytes reserved for future use

Example

text format

binary format

BEGIN SENSE

01:08 (not included)

SA_zoom_LHS_cam 35

B0:23

SA_zoom_FWD_cam 105

B1:69

SA_zoom_RHS_cam 35

B2:23

END

02 (not included)

The cameras are assumed to be of the auto-focus type.

  • 1 camera looking to the left of centre
  • 1 camera looking straight ahead
  • 1 camera looking to the right of centre
  • The SENSE message length = 3 Bytes

return to top

PAYLOAD system

Remote control

B0 HEX

Item_ID

name

Value

Bytes

comments B1:B2:B3:B4

C0

cam_ID

4

B1:B2:B3 = Char_1:Char_2:Char_3, eg. NIK (for Nikon)

B4 = 0 to 255 = camera ID number

C1

cam_mag_compass

2

degrees = B1:B2 / 100

B1:B2 = 0 to 655.35 degrees

only 0 to 359.99 degrees used

C2

cam_elev

2

elev = B1:B2 / 100

B1:B2 / 100 = 0 to +/- 327.67 degrees

C3

cam_zoom_set

1

0 to 255 in arbitrary units, where:

0 = minimum zoom

255 = maximum zoom

C4

take_one_photo

1

B1_0 B1_0 B1_1 B1_0 B1_1 = 1 0 = take one photograph

B1_0 B1_1 = 1 1 = IGNORE: data corruption

C5

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

C6

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

C7 - CF

unused

14 Item_ID Bytes reserved for future use

Example

text format

binary format

BEGIN PAYLOAD

01:06 (not included)

BEGIN camera

01:12 (not included)

6 Bytes

camera Item_IDs

6 Bytes

END

02 (not included)

END

02 (not included)

The cameras are assumed to support auto-focus: hence no need to report on focus setting.

  • 2 camera on gimbals

2 cameras would require 2 x 6 Bytes = 12 Bytes

return to top

Reserved_2 for future use

B0 HEX

Item_ID

name

Value

Bytes

comments B1:B2:B3:B4

D0 - DF

unused

16 Item_ID Bytes reserved for future use

E0 - EF

unused

16 Item_ID Bytes reserved for future use

F0

Preamble_1

0

Used in the Preamble

HEX F0 = BIN 1111 0000

F1 - FE

unused

14 Item_ID Bytes reserved for future use

FF

Do not use.

Reserved for compatibility with STANAG 4586.

return to top