Call me back | My basket | Checkout | Add to email list

     You are here: Website » Knowledge base

« back to website

DataAndConfigurationMessages / 102GeneralCommsChannel

General comms channel

Description of General Comms Channel (channel 102):

Channel Number102
Total LengthVariable length message
CHANNEL MESSAGE LENGTH MESSAGE TYPE DATA0 DATA1..............DATAn CHECKSUM


MESSAGE TYPE description

  1. COMMUNICATION INITIALISE MESSAGE
  2. REQUEST TOTAL RUN FILE COUNT MESSAGE
  3. REQUEST RUN FILE NAME MESSAGE
  4. REQUEST RUN FILE DATA MESSAGE
  5. REQUEST DISCONNECT MESSAGE
  6. TRIGGERED TEST DATA MESSAGE
  7. GENERAL TEXT MESSAGE
  8. EXTERNAL ADC CALIBRATION MESSAGE
  9. CONFIGURE PERFORMANCE TEST

(Type 0) COMMUNICATION INITIALISE MESSAGE (DEPRECATED)

    MSG(0) = 102
    MSG(1) = 9 ( LENGTH)
    MSG(2) = [MESSAGE TYPE]  (0x0)
    MSG(3) = Asc("I")                                                 
    MSG(4) = Asc("N")                                                  
    MSG(5) = Asc("I")                                             
    MSG(6) = Asc("T")                                            
    MSG(7) = Asc("C")                                                
    MSG(8) = Asc("O")                                                  
    MSG(9) = Asc("M")                                                  
    MSG(10) = Asc("M")  
    MSG(11) = CHECK SUM      

(Type 1) REQUEST TOTAL RUN FILE COUNT MESSAGE (DEPRECATED)

    MSG(0) = 102
    MSG(1) = 1 ( LENGTH)
    MSG(2) = [MESSAGE TYPE]  (0x1)
    MSG(3) = CHECK SUM  

(Type 2) REQUEST RUN FILE NAME MESSAGE (DEPRECATED)

    MSG(0) = 102
    MSG(1) = 3 ( LENGTH)
    MSG(2) = [MESSAGE TYPE]  (0x2)
    MSG(3) = FILE_ID (LSB)
    MSG(4) = FILE_ID (MSB)
    MSG(5) = CHECK SUM  

(Type 3) REQUEST RUN FILE DATA MESSAGE (DEPRECATED)

    MSG(0) = 102
    MSG(1) = 3 ( LENGTH)
    MSG(2) = [MESSAGE TYPE]  (0x3)
    MSG(3) = FILE_ID (LSB)
    MSG(4) = FILE_ID (MSB)
    MSG(5) = CHECK SUM  

(Type 4) REQUEST DISCONNECT MESSAGE (DEPRECATED)

    MSG(0) = 102
    MSG(1) = 9 ( LENGTH)
    MSG(2) = [MESSAGE TYPE]  (0x4)
    MSG(3) = Asc("B")
    MSG(4) = Asc("R")
    MSG(5) = Asc("A")
    MSG(6) = Asc("K")
    MSG(7) = Asc("E")
    MSG(8) = Asc("O")
    MSG(9) = Asc("F")
    MSG(10) = Asc("F")
    MSG(11) = CHECK SUM

(Type 5) TRIGGERED TEST DATA MESSAGE

    MSG[0] = 102
    MSG[1] = 57 (Length)
    MSG[2] = 5  (Message type)

    MSG[3] = Test status flags
                NOTE: The test status flags require SPEEDBOX firmware v3.9.0 or later, and will read zero on earlier firmware versions
                Format: Bitfield with the following meanings:
                Bit 0: Ready (1) / Not ready (0)
                        Not ready indicates that the unit cannot start a test at present, e.g. no GPS lock or INS not converged.
                        Ready indicates that the unit is in a state at which testing could be performed if required, although it
                        should be noted that this is not an absolute guarantee since conditions do continuously change.
                Bit 1: Armed (1) / Not armed (0)
                        Armed indicates the configured test will start when the configured threshold is crossed.
                Bit 2: Active (1) / Not active (0)
                        Active indicates that a test is currently in progress.
                Bits 3 - 4: Reserved for future use.
                Bits 5 - 6: MFDD threshold speed units (only valid when Bit 7 is set)
                        The units are given as follows from the bit pattern:
                               Bit 5 zero, Bit 6 zero [00]: Units are m/s
                               Bit 5 set,  Bit 6 zero [01]: Units are kph
                               Bit 5 zero, Bit 6 set  [10]: Units are mph
                               Bit 5 set,  Bit 6 set  [11]: Units are knots
                Bit 7: MFDD threshold type flag
                        When Bit 7 is zero, MFDD thresholds are percentages of test start speed.
                        When Bit 7 is set, MFDD thresholds are fixed speeds in the units given by Bits 5 and 6.

    MSG[4, 5, 6] = Time into Test
                Format: 24bit, big endian, unsigned integer.
                Units: Seconds
                Scaling: 1000

    MSG[7, 8, 9, 10] = Path Distance 3D
                Format: 32bit, big endian, unsigned integer.
                Units: Meters
                Scaling: 1000

    MSG[11, 12, 13, 14] = Forward Distance 2D  (forwards and vertical distance components)
                Format: 32bit, big endian, signed integer.
                Units: Meters
                Scaling: 1000

    MSG[15, 16, 17, 18] = Deviation Distance 1D (sideways distance component)
                Format: 32bit, big endian, signed integer.
                Units: Meters
                Scaling: 1000

    MSG[19, 20, 21, 22] = Direct Distance 3D
                Format: 32bit, big endian, unsigned integer.
                Units: Meters
                Scaling: 1000

    MSG[23, 24, 25, 26] = Path Distance 2D
                Format: 32bit, big endian, unsigned integer.
                Units: Meters
                Scaling: 1000

    MSG[27, 28] = Average Acceleration during Test
                Format: 16bit, big endian, signed integer.
                Units: g
                Scaling: 1000

    MSG[29, bit 7 (MSB)] = MFDD Validity Flag
                Format: Single bit (byte 29 & 0x80)
                Meaning: 0 = MFDD Invalid, 1 = MFDD Valid

    MSG[29 (bits 0->6), 30] = MFDD (only if MFDD validity flag set)
                Format: 15bit, big endian, unsigned integer
                Units: g
                Scaling: 1000

    MSG[31] = Configured MFDD Start Threshold
                Format: Unsigned byte
                Units: % if MSG[3] Bit 7 is clear, otherwise units given by MSG[3] Bits 5 and 6
                Scaling: None

    MSG[32] = Configured MFDD End Threshold
                Format: Unsigned byte
                Units: % if MSG[3] Bit 7 is clear, otherwise units given by MSG[3] Bits 5 and 6
                Scaling: None

    MSG[33, 34, 35] = Initial Speed 3D (at start of triggered test)
                Format: 24bit, big endian, unsigned integer
                Units: m/s
                Scaling: 1000

    MSG[36, 37] = Initial Heading (at start of triggered test)
                Format: 16bit, big endian, signed integer
                Units: degrees
                Scaling: 100
                Range: -180..180°

    MSG[38, bit 7 (MSB)] = Final Speed Validity Flag
                Format: Single bit (byte 38 & 0x80)
                Meaning: 0 = Final Speed Invalid, 1 = Final Speed Valid

    MSG[38 (bits 0->6), 39, 40] = Final Speed 3D (only if Final Speed Validity Flag set)
                Format: 23bit, big endian, unsigned integer
                Units: m/s
                Scaling: 1000

    MSG[41, 42, 43] = Speed 3D
                Format: 24bit, big endian, unsigned integer
                Units: m/s
                Scaling: 1000

    MSG[44, 45] = Longitudinal Acceleration (continuous during test, peak value after completion of test)
                Format: 16bit, big endian, signed integer.
                Units: g
                Scaling: 1000

                NOTE: The continuous longitudinal acceleration is output during the test, but following the completion of
                the test the peak value is output, i.e:

                if Final_Speed_Validity_Flag == 1 then
                    Longitudinal_Acceleration = peak value
                else
                    Longitudinal_Acceleration = current value
                endif

    MSG[46, 47] = Lateral Acceleration
                Format: 16bit, big endian, signed integer.
                Units: g
                Scaling: 1000

    MSG[48, 49, 50, 51] = X Distance
                Format: 32bit, big endian, signed integer.
                Units: Meters
                Scaling: 1000

    MSG[52, 53, 54, 55] = Y Distance
                Format: 32bit, big endian, signed integer.
                Units: Meters
                Scaling: 1000

    MSG[56] = Distance Accuracy Estimate
                Format: Unsigned byte
                Units: Centimeters
                Scaling: None

    MSG[57, 58] = MFDD Time
                Format: 16bit, big endian, unsigned integer.
                Units: Seconds
                Scaling: 1000

                NOTE: MFDD Time is the time duration over which the MFDD has been calculated.

    MSG[59] = Checksum

(Type 7) GENERAL TEXT MESSAGE

    MSG(0) = 102
    MSG(1) = (N + 11)   where N is the length of text message (Maximum 64 characters)
    MSG(2) = [MESSAGE TYPE]  (0x7)
    MSG(3) = Priority
    MSG(4) = Time to display
    MSG(5) = Useful time
    MSG(6) = Hardware type
    MSG(7) = Serial Number (MSB)
    MSG(8) = Serial Number
    MSG(9) = Serial Number
    MSG(10) = Serial Number (LSB)
    MSG(11) = Text target
    MSG(12) = Other
    MSG(13+0) = Message Text Character 0
    MSG(13+1) = Message Text Character 1
    ......
    ......
    MSG(13+N-1) = Message Text Character N-1
    MSG(13+N) = Checksum
Description of message type 7
priority (1 byte):
0 - lowest priority, 10 - highest priority
nominally priority levels are as follows:
0: informational. eg system started up, configuration file loaded, GPS locked, INS converged, memory card 25% full
2: warning. eg CF card almost full, voltage near limit (possible sensor fault)
4: operational error. eg CF card full
6: hardware failure. eg GPS antenna fault, CF card cannot be accessed, 5v reference, accelerometer failure
display time (1 byte):
this is the number of seconds to display the message for, 0 means display until a button press
useful time (1 byte):
Time the message is relevant for, for example if we output the current SD memory space every 30 seconds, this has a useful life of 30 seconds, 0 means its useful forever
source hardware type (1 byte):
This is the code for the type of unit that generated the message
source serial number (4 bytes):
this is the serial number of the unit that generated the message
text target (1 byte):
bit 0: Warning message
bit 1: SPEEDBOX performance test message
spare byte (1 bytes):
for future expansion, just assign to 0
message text (n bytes):
ASCII codes for the text to be displayed, up to a maximum of 20 characters

(Type 8) EXTERNAL ADC CALIBRATION MESSAGE

    MSG(0) = 102
    MSG(1) = 0x04  message length
    MSG(2) = [MESSAGE TYPE]  (0x8)
    MSG(3) = Required action
    MSG(4) = 0x34
    MSG(5) = 0xA3
    MSG(6) = Checksum
Required action

bit 0 = Calibrate all ADC 12v
bit 1 = Calibrate all ADC 5v
bit 2 = Calibrate all accelerometers


(Type 9) Configure Performance Test

Byte offset n bytes Name Notes
0 1 Triggered test flags As existing definition
1 1 MFDD start threshold Either a percentage or integer speed in user units depending on interval flags bit 3
2 1 MFDD end threshold Either a percentage or integer speed in user units depending on interval flags bit 3
3 1 Units to display results See definition
4 1 Interval flags See definition
5 1 Info at intervals flags See definition
6 1 1 = send new triggered configuration to speedbox

2 = reply with new triggered configuration from speedbox

7 1 This increments with each message sent
8 16 Test name Terminate with 0 if less than 16 chars long
24 1 Triggered testing enabled
25 1 Spare
26 1 Spare
27 1 Spare
28 1 Start condition combining rule 0 => N/A (no additional condition), 1 => AND, 2 => OR
29 1 End condition combining rule 0 => N/A (no additional condition), 1 => AND, 2 => OR
30 2 Trigger rule 1 parameters See definition
32 4 Trigger rule 1 threshold F32 (see Trigger Rule Parameters table for units)
36 2 Trigger rule 2 parameters See definition
38 4 Trigger rule 2 threshold F32 (see Trigger Rule Parameters table for units)
42 2 Trigger rule 3 parameters See definition
44 4 Trigger rule 3 threshold F32 (see Trigger Rule Parameters table for units)
48 2 Trigger rule 4 parameters See definition
50 4 Trigger rule 4 threshold F32 (see Trigger Rule Parameters table for units)
54 4 Start/End marker longitude S32 Degrees x 1e-7 (see Marker triggered definition)
58 4 Start/End marker latitude S32 Degrees x 1e-7 (see Marker triggered definition)
62 2 Start/End marker heading U16 degrees x 1e-5 / 65536 (see Marker triggered definition)
64 4 End marker longitude S32 Degrees x 1e-7 (see Marker triggered definition)
68 4 End marker latitude S32 Degrees x 1e-7 (see Marker triggered definition)
72 2 End marker heading U16 degrees x 1e-5 / 65536 (see Marker triggered definition)

Note:

  • Trigger rule 1 is always used for start condition 1
  • Trigger rule 2 is always used for start condition 2
  • Trigger rule 3 is always used for end condition 1
  • Trigger rule 4 is always used for end condition 2

Previously this relationship was set by the indexes in old config msg 189, but in practice it was never varied from the above and hence the indexes have been abolished.


Triggered test flags:

Bit 0: Enable analog output
Bit 1: Enable pulse output
Bit 2: Enable distance output (no longer used, but retained in case required again)
Bit 3: Subsequent start triggers reset test (no longer used)
Bits 4->7 Currently unused


Units to display results:

Bits 0-3 Speed units:
0 = m/s
1 = kph
2 = mph
3 = knots
4->7 currently unused
Bits 4->5 Distance units:
0 = m
1 = ft
2->3 currently unused
Bits 6->7 Accel units:
0 = g
1 = m/s/s
2->3 currently unused


Interval flags

No bits set: No interval output
Bit 0 set: Output at speed intervals
Bit 1 set: Output at distance intervals
Bit 2: Currently unused
Bit 3: 0 => MFDD thresholds are % of start speed

1 => MFDD thresholds are speed in currently selected speed units

Bits 4-7: Currently unused


Info at interval flags

Bit 0: Time into test
Bit 1: Deviation distance
Bit 2: Acceleration
Bits 3-7: Reserved for when a customer inevitably wants something else output!

Note: Path dist is always output for speed intervals, and speed is always output for dist intervals, hence we don't include them here.


Trigger rule parameters

Byte 0: Bits 0->1: Hardware index (trigger number or ADC number, 0->3)
Bits 2->6: Reserved in case we require larger hardware indexes in future
Bit 7: Polarity, 0 => falling, 1 => rising
Byte 1: Condition 0 => NULL (not configured)

1 => SPEED, units of m/s

2 => TO A HALT (end condition) or PULL AWAY (inertial based) (start condition)

3 => ACCEL_LONG , units of g

4 => ACCEL_LAT, units of g

5 => ANALOG, units of volts

6 => HARDWARE TRIGGER, no units

7 => COMMAND MSG, no units

8 => DISTANCE, units of meters

9 => PULL AWAY (speed based)

10 => MARKER TRIGGERED (unit of distance in meters)


Marker triggered:

Start/End marker (longitude, latitude, heading) [index 54 to 63] contains values of start marker if ‘Marker triggered’ is selected for one of the conditions of ‘Start condition’. If ‘Marker triggered’ isn’t selected for ‘Start condition’, and is selected for one of the conditions of ‘End condition’, these fields contain values of end marker.

End marker (longitude, latitude, heading) [index 64 to 73] contains values of end marker if ‘marker triggered’ is selected for one of the conditions of ‘End condition’ while ‘marker triggered’ is selected for one of the conditions of ‘Start condition’.

If ‘Marker triggered’ isn’t selected for any condition, these fields are not present in the message.

Page last modified on September 12, 2017, at 08:11 AM