XDATA Decoding - projecthorus/sondehub-infra GitHub Wiki

XDATA Instrument Compatibility Table

Manufacturer Name ID Identify Decode Detected Introduced
EnSci Ozonesonde 0x01 :heavy_check_mark: :heavy_check_mark: :x: 01/04/2009
Vaisala OIF411 0x05 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
EnSci CFH 0x08 :heavy_check_mark: :x: :heavy_check_mark: 01/04/2009
NOAA FPH 0x10 :heavy_check_mark: :x: :heavy_check_mark: 01/04/2009
ETH Zurich COBALD 0x19 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: 01/04/2009
Anasphere SLW 0x28 :heavy_check_mark: :x: :x: 11/08/2011
NOAA POPS 0x38 :heavy_check_mark: :x: :x: 04/06/2014
Particles Plus OPC 0x39 :heavy_check_mark: :x: :x: 07/01/2015
Scienterra WVS 0x3A :x: :x: :x: Never flown
ETH Zurich PCFH 0x3C :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: 26/10/2015
Central Aerological Observatory FLASH-B 0x3D :heavy_check_mark: :heavy_check_mark: :x: 15/11/2016
NOAA TRAPS 0x3E :heavy_check_mark: :x: :x: 27/01/2017
Meisei Electric SKYDEW 0x3F :heavy_check_mark: :heavy_check_mark: :x: 22/05/2017
GasLab CICANUM 0x41 :heavy_check_mark: :x: :x: 04/06/2018
NOAA POPS 0x45 :heavy_check_mark: :x: :x: 30/08/2019
KNMI Tachometer 0x80 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: Unknown?

This table is mainly sourced from the NOAA XDATA Instrument ID Allocation table.

EnSci Ozonesonde Notes

The EnSci ECC Ozonesonde is available in three models which are compatible with all major radiosondes. The ECC Ozonesonde can calculate the amount of Ozone using an electrochemical concentration cell (ECC). The ECC Ozonesonde has a single data format with a length of 16 characters.

Ozonesonde Measurement XDATA Format

Sample data: 01010349FDC54296 (16 characters)

Field Position Length Hexadecimal Decimal Conversion Result
Instrument ID 0 2 01 1 - 1
Instrument Number 2 2 01 1 - 1
Cell Current 4 4 0349 841 *0.001 0.841 uA
Pump Temperature 8 4 FDC5 (signed) -571 *0.01 -5.71°C
Pump Current 12 2 42 66 - 66 mA
Battery Voltage 14 2 96 150 *0.1 15.0 V

Ozonesonde Ozone Partial Pressure Calculation

We are using the same calculations as the OIF411 for an approximate value.

Vaisala OIF411 Notes

The Vaisala OIF411 is an Ozone Interface Board that is used with the Science Pump Corporation ECC-6A or EN-SCI Z Ozone sensors. These two sensors are largely similar designs both using an electrochemical concentration cell (ECC) design to measure the amount of Ozone. The OIF411 has two data formats with lengths of 20 and 21 characters for measurements and diagnostics respectively.

OIF411 Measurement XDATA Format

Sample data: 050108CA186A0750B637CR (20 characters)

Field Position Length Hexadecimal Decimal Conversion Result
Instrument ID 0 2 05 5 - 5
Instrument Number 2 2 01 1 - 1
Ozone Pump Temperature 4 4 08CA (signed) 2250 *0.01 22.5°C
Ozone Current 8 5 186A0 100000 *0.0001 10.0000 uA
Battery Voltage 13 2 75 117 *0.1 11.7 V
Ozone Pump Current 15 3 0B6 182 - 182 mA
External Voltage 18 2 37 55 *0.1 5.5 V

OIF411 Diagnostics XDATA Format

Sample data: 0501G12345670000000AICR (21 characters)

Field Position Length Hexadecimal Decimal Conversion Result
Instrument ID 0 2 05 5 - 5
Instrument Number 2 2 01 1 - 1
Serial Number 4 8 G1234567 - - G1234567
Diagnostics Word 12 4 0000 - Table A1 Default value, no diagnostics bits active
Software Version 16 4 000A 10 *0.01 0.10

Table A1

Code Diagnostics Message
0000 Default value, no diagnostics bits active
0004 Ozone pump temperature below −5 °C.
0400 Ozone pump battery voltage (+VBatt) is not connected to OIF411.
0404 Both “Ozone pump temperature below −5 ºC” and “Ozone pump battery voltage (+VBatt) is not connected to OIF411” are active at the same time.

OIF411 Ozone Partial Pressure Calculation

Complete information on performing O3 partial pressure calculations can be found in Section 4.3.3 the OIF411 user guide - this section is a summary only.

The calculation for partial pressure is as follows:

OIF411 Ozone Partial Pressure Calculation

The Ozone current (I) and airflow temperature (Tp) are obtained directly from the telemetry, noting that Tp must be converted to Kelvin (+273.15). The ozone pump flow rate (t) and ozone sensor background current (Ibg) are measured before launch, and are not sent in the telemetry. There are also other correction parameters used such as the pump efficiency correction (Cef), which vary depending on the actual ozone sensor in use (remember the Vaisala OIF411 is an interface board - the actual sensor units are made by others).

To get an approximation of partial pressure, we can set Ibg=0 uA, and use a 'nominal' figure of 28.5 seconds for the pump flow rate (based on flow rate data provided by the Australian Bureau of Meteorology). This results in a value within +/- 1 mPa of the 'truth' data. Without the calibration information, this is the best we can do.

ETH Zurich COBALD Notes

The Compact Optical Backscatter Aerosol Detector is a lightweight backscatter instrument used to determine aerosol information including particle size and density. The COBALD is currently deployed at 17 sites worldwide with the majority of flights taking place at Jülich, Lindenberg (Germany), and Payerne, Zurich (Switzerland). The COBALD uses a single format XDATA measurement packet 30 characters long.

COBALD Measurement XDATA Format

Sample data: 190213FFFE005FCF00359943912CCA (30 characters)

Field Position Length Hexadecimal Decimal Conversion Result
Instrument ID 0 2 19 19 - 19
Instrument Number 2 2 02 2 - 2
Sonde Number 4 3 13F 319 - 319
Internal Temperature 7 3 FFE (signed) -2 *0.125 -0.25°C
Blue Backscatter 10 6 005FCF (signed) 24527 - 24527
Red Backscatter 16 6 003599 (signed) 13721 - 13721
Blue Monitor 22 4 4391 (signed) 17297 - 17297
Red Monitor 26 4 2CCA (signed) 11466 - 11466

ETH Zurich PCFH Notes

The Peltier Cooled Frost point Hygrometer is a lightweight water vapor instrument. The PCFH uses five XDATA packet types measuring 32, 26, 30, and 18 characters long. The type of packet can be identified by the two character PacketID found at positions 5-6 in each packet.

PacketID Packet Type
00 Individual instrument identification (10 s)
01 Regular one second data, sub-sensor 1
02 Regular one second data, sub-sensor 2
03 Regular five second data
04 Instrument status (10 s)

PCFH Diagnostics XDATA Format (00)

Sample data: 3C010000011B062221 (18 characters)

Field Position Length Hexadecimal Decimal Conversion Result
Instrument ID 0 2 3C 60 - 60
Instrument Number 2 2 01 1 - 1
PacketID 4 2 00 0 - 0
Serial Number 6 4 0001 1 - 1
Temperature PCB date 10 2 1B - Table B1 Nov 2017
Main PCB date 12 2 06 - Table B1 Jun 2016
Controller FW date 14 2 22 - Table B1 Feb 2018
FPGA FW date 16 2 21 - Table B1 Jan 2018

Table B1

The two-character date value can be split into a year and month character where the resulting date is equal to 2016 + the year character and the month corresponds to the month character where January = 1 and December = 12.

Value Year Character Month Character Year Month Result
1B 1 11 2017 November Nov 2017
06 0 6 2016 June Jun 2016
22 2 2 2018 Febuary Feb 2018
21 2 1 2018 January Jan 2018

PCFH Measurement XDATA Format (01/02)

Sample data: 3C0101434A062C5CD4A5747B81486C93 (32 characters)

Field Position Length Hexadecimal Decimal Conversion Result
Instrument ID 0 2 3C 60 - 60
Instrument Number 2 2 01 1 - 1
PacketID 4 2 01 1 - 1
Timestamp 6 2 43 - - -
Frost Point Mirror Temperature 8 3 4A0 1184 *0.05 - 125 -65.80°C
Peltier Hot Side Temperature 11 3 62C 1580 *0.05 - 125 -46.00°C
Air Temperature 14 3 5CD 1485 *0.05 - 125 -50.75°C
Anticipated Frost Point Mirror Temperature 17 3 4A5 1189 *0.05 - 125 -65.55°C
Frost Point Mirror Reflectance 20 4 747B 29819 /32768 0.910
Reference Surface Reflectance 24 4 8148 33096 /32768 1.010
Reference Surface Heating Current 28 2 6C 108 /2.56 42.19% FS
Peltier Current 30 2 93 (signed) -109 /64 -1.703A

PCFH Measurement XDATA Format (03)

Sample data: 3C0103456076175EC5FC9DF9B1 (26 characters)

Field Position Length Hexadecimal Decimal Conversion Result
Instrument ID 0 2 3C 60 - 60
Instrument Number 2 2 01 1 - 1
PacketID 4 2 03 3 - 3
Timestamp 6 2 45 - - -
Heat Sink Temperature 1 8 3 607 1543 *0.05 - 125 -47.85°C
Reference Surface Temperature 1 11 3 617 1559 *0.05 - 125 -47.05°C
Heat Sink Temperature 2 14 3 5EC 1516 *0.05 - 125 -49.20°C
Reference Surface Temperature 2 17 3 5FC 1532 *0.05 - 125 -48.40°C
Thermocouple Reference Temperature 20 3 9DF 2527 *0.05 - 125 1.35°C
Reserved Temperature 23 3 9B1 2481 *0.05 - 125 -0.95°C

PCFH Measurement XDATA Format (04)

Sample data: 3C0104A427104E203A9861A8AB6A65 (30 characters)

Field Position Length Hexadecimal Decimal Conversion Result
Instrument ID 0 2 3C 60 - 60
Instrument Number 2 2 01 1 - 1
PacketID 4 2 04 4 - 4
Timestamp 6 2 A4 - - -
Clean Frost Point Mirror Reflectance 1 8 4 2710 10000 *0.001 10.000
Clean Reference Surface Reflectance 1 12 4 4E20 20000 *0.001 20.000
Clean Frost Point Mirror Reflectance 2 16 4 3A98 15000 *0.001 15.000
Clean Reference Surface Reflectance 2 20 4 61A8 25000 *0.001 25.000
6V Analog Supply Battery Voltage 24 2 AB 171 *0.02 + 2.5 5.92 V
4.5V Logic Supply Battery Voltage 26 2 6A 106 *0.02 + 2.5 4.62 V
4.5V Peltier & Heater Supply Battery Voltage 28 2 65 101 *0.02 + 2.5 4.52 V

Central Aerological Observatory FLASH-B Notes

The Fluorescent Lyman-Alpha Stratospheric Hygrometer for Balloon (FLASH-B) is an instrument from the Central Aerological Observatory that uses the fluorescent method to determine the water vapor mixing ratio. The FLASH-B uses a single XDATA packet measuring 35 characters long.

FLASH-B Measurement XDATA Format

Sample data: 3D0204E20001407D00E4205DC24406B1012 (38 characters)

Field Position Length Hexadecimal Decimal Conversion Result
Instrument ID 0 2 3D 61 - 61
Instrument Number 2 2 02 2 - 2
Photomultiplier Counts 5 4 4E20 20000 Counts -
Photomultiplier Background Counts 9 4 0014 20 - 20
Photomultiplier Temperature 13 4 07D0 2000 Temperature 26.32°C
Battery Voltage 17 4 0E42 3650 *0.005185 12.69 V
YUV Lamp Current 21 4 05DC 1500 *0.0101688 9.15 mA
PMT Voltage 25 4 2440 9280 *0.36966 1137.8 V
Firmware Version 29 2 6B 107 *0.1 10.7
Production Year 31 2 10 16 - 16
Hardware Version 33 2 12 18 - 18

FLASH-B Photomultiplier Counts

To calculate the photomultiplier counts six values are required including the pressure and temperature from the attached sonde and two calibration values that are not transmitted in telemetry.

TBD

FLASH-B Photomultiplier Temperature

The FLASH-B photomultiplier temperature in degrees celcius can be determined using the following equation.

Temperature = (-21.103 * log((_photomultiplier_temperature * 0.0183) / (2.49856 - (_photomultiplier_temperature * 0.00061)))) + 97.106

Meisei Electric SKYDEW Notes

The Peltier-based chilled-mirror hygrometer SKYDEW is an instrument from Meisei Electric used to determine the atmospheric water vapor using the thermodynamic measurement principle. The SKYDEW uses a single XDATA packet measuring 38 characters long with a rotating parameter included in each packet.

SKYDEW Measurement XDATA Format

Sample data: 3F0144A75446416100160ECAFFFF6EC8000006 (38 characters)

Field Position Length Hexadecimal Decimal Conversion Result
Instrument ID 0 2 3F 63 - 63
Instrument Number 2 2 01 1 - 1
Mirror Temperature AD Value 4 4 44A7 17575 Temperature 17575
Scattered Light Level 8 4 5546 21830 *0.0000625 1.3484 V
Reference Resistance 12 4 4161 16737 - 16737
Offset Value 16 4 0016 22 - 22
Peltier Current 20 4 0ECA 3786 *0.00040649414 - 1.5)*2 0.078 A
Heatsink Temperature 24 2 FF 255 Temperature -2.88°C
Circuit Board Temperature 26 2 FF 255 Temperature -2.78°C
Battery 28 2 6E 110 - 110
PID 30 2 C8 200 - 200
Parameter 32 4 0000 0 - 0
Parameter Type 36 2 06 6 Parameters 6

SKYDEW Parameters

The SKYDEW transmits a single parameter each XDATA packet out of a total of 10 different parameters. The parameter is 4 characters while the parameter type is identified by the two-character parameter type field.

Parameter Type Parameter Name Comment
00 Serial Number Unique serial number for the SKYDEW
01 Coefficient B Coefficient for calculating the resistance
02 Coefficent C Coefficient for calculating the resistance
03 Coefficent D Coefficient for calculating the mirror temperature
04 Coefficent E Coefficient for calculating the mirror temperature
05 Firmware Version Firmware version of the SKYDEW

SKYDEW Mirror Temperature

The SKYDEW uses the PT100 platinum resistance thermometer to determine the mirror temperature and seven transmitted values are required to calculate the temperature in degrees.

Value Size
Mirror Temperature AD Value 4
Reference Resistance 4
Offset Value 4
Coefficient B 4
Coefficient E 4
Coefficient D 4
Coefficient E 4

PT100 Resistance

The first step is to determine the resistance of the PT100.

B = -((Coefficient_B - 11000)/10000)
C = -((Coefficient_C - 11000)/10000)

Resistance = B * (100 * (Mirror_Temperature_AD_Value - Offset_Value) / (Reference_Resistance - Offset_Value)) + C

Mirror Temperature

We can now use this resistance value and the other two coefficients to calculate the mirror temperature in degrees.

D = -((Coefficient_D - 11000)/10000)
E = -((Coefficient_E - 11000)/10000)

TemperatureTemp = ((-0.0000269887 * Resistance^3) + (0.00179841 * Resistance^2) + (2.28094 * Resistance) - 243.379)
Temperature = TemperatureTemp - ((D * TemperatureTemp) + E)

SKYDEW Heat Sink Temperature

The heat sink temperature in degrees can be determined using the following formula.

Temperature = (((((log(((heatsink_temperature / 8192) * 141.9) / (3.3 - (heatsink_temperature / 8192) * 3.3) / 6)) / 3390) + 1) / 273.16)^-1 -276.16)

SKYDEW Circuit Board Temperature

Temperature = (((((log(((circuit_board_temperature / 8192) * 39.6) / (3.3 - (circuit_board_temperature / 8192) * 3.3) / 6)) / 3390) + 1) / 273.16)^-1 -276.16)

KNMI Tachometer Notes

KNMI has developed a small Arduino board for the Vaisala OIF411, which measures the motor turns of the pump of the ozone sonde using a light barrier. The board is powered directly from the 3V battery of the RS41. On the backside of the OIF411 therefor is a cable soldered which connects PIN 5 from the Radiosonde connector to PIN 4 of the additional sensor input.

The goal is to increase the precision of the measurement since the motor does not turns always exactly 40 times per second as it should. The transmission of the measurement occurs every 400 turns, so approximately every 10 seconds.

Delta is the time it takes the engine to turn 400 times. To calculate the revolutions per second in this timespan, divide 400 by delta.

The temperature sensor is currently not soldered to the board, so the value is always approximately the same.

KNMI Tachometer XDATA Format

Sample data: 80022B5A1EE4001384A407F8 (24 characters)

Field Position Length Hexadecimal Decimal Conversion Result
Instrument ID 0 2 80 80 - 80
Instrument Number 2 2 02 2 - 2
Tachometer Uptime 4 8 2B5A1EE4 727326436 * 8 / 1000000 5818.611488 seconds
Tachometer Delta 12 8 001384A4 1279140 * 8 / 1000000 10.23312 seconds
Temperature Sensor (not in use) 20 4 07F8 2040 - ?