Appendix A:Level 1A File Format Description |
The purpose of this appendix is to define the content and format of the SABER Level 1A file. This file will be a product derived from Level 0B modal files and will contain instrument, housekeeping, spacecraft (S/C) and ancillary data in engineering units. The Level 1A file will be separated into scan events that are determined by the scan mode and scan mirror position and velocity, and used as input to the Level 1B processing.
The Level 1A file will be the output from Level 1A processing, which reads in modal files, converts to engineering units, determines scan event boundary times, and merges data into scan events. For Level 1A processing this involves reading in the scan mode flag and scan angle and determining boundary times for beginning and ending angles of the type of scan. Scan events are listed in Table 1.
Event Definition | Scan Mode Flag |
Scan Angle Direction |
Scan Angle Range [mrads] |
Event Type String |
Description |
Adaptive Down | ADPTSCAN | TBD | TBD | ADAPT_UP | Nominal scan down |
Adaptive Up | ADPTSCAN | TBD | TBD | ADAPT_DN | Nominal scan up |
IFC | IFCBBXXX | TBD | TBD | IFCBBXXX | Stare at Internal Flight Calibrator |
Space Look | SPACLOOK | TBD | TBD | SPACLOOK | Stare at cold space |
Acquisition Down | ACQNSCAN | TBD | TBD | ACQ_UP | Acquisition scan down |
Acquisition Up | ACQNSCAN | TBD | TBD | ACQ_DN | Acquisition scan up |
Lower Baffle Look | ACQNSCAN | TBD | TBD | LBAFF | Mirror Scans into lower baffle |
Upper Baffle Look | ACQNSCAN | TBD | TBD | UBAFF | Mirror Scans into upper baffle |
Fast Scan Down | FASTSCAN | TBD | TBD | FAST_DN | Scan down at fast rate |
Fast Scan Up | FASTSCAN | TBD | TBD | FAST_UP | Scan up at fast rate |
TBD 1-? | SPARE1-? | TBD | TBD | TBD | Spares for future modes |
Table 1: SABER Scan Modes
The Level 1A file will contain data merged from Level 0B files with samples taken between beginning and ending times of each defined event, determined by the scan mode. The scan events are determined by the scan mode flag and the position and velocity of the scan mirror. Each record will be tagged with a time and scan mode flag (see Table 1). The record time will be in msec since UT midnight, and will be the time when the first measurement field was sampled.
The Level 1A file will be divided into adaptive scan events containing instrument data sampled between scan event time boundaries, along with ancillary data required to process each event. Each adaptive scan event will have a scan event header, followed by data that is scan mode event dependent. The event headers contain time information and ancillary data required for processing the event.
The Level 1A format will be ASCII with free format records and fields, (easily represented by a structure). ASCII format ensures cross-platform compatibility, since Linux, SGI and NT workstations will need to share SABER data. Each file contains one day of data. There will be 3 record types; (1) Instrument data, sampled at 22.7 Hz, (2) HouseKeeping data, sampled at 0.063 Hz, and (3) S/C data, sampled at 2 Hz. Based on these sampling rates, the Level 1A file will contain roughly 1 housekeeping record (type 2) for every 32 S/C records (type 3) for every 360 Instrument data records (type 1). The first 4 fields in each record (regardless of type) will be header fields consisting of time, record type, status, and number of fields remaining. The rest of the fields are record-dependent, which are described below.
The Level 1A file is based on adaptive scan mode events. Each time the SABER mirror makes a scan through the Earths atmosphere, a scan event is defined. The Level 1A file is thus a collection of scan events. For each scan event, the bracketing IFC and Space-look data are included, as well as any baffle-look data if taken. Exactly what data is contained in each event appears in the scan event header. The scan event header will contain the following fields: Event Number (for current day), Year, Date, Orbit Number, Begin Time, End Time, Orbit Number, Data Type, Number of records, where
Event Number is the scan number for the current day,
Year is the 4-digit year,
Date is the 3-digit day-ofyear (001-365),
Orbit Number is the TIMED orbit number,
Data Type: Number of Records describes the data which follow in this event and is repeated for all the merged data in the current event and is defined in Table 2.
The format for each data type is described below. Note that each event type has a self-described format, since a reader routine can tell from the (Data Type: Number of Records) fields in the event header precisely what data follows.
Data Type |
Description |
DC | Instrument Data |
HK | HouseKeeping Data |
NMC | Pressure Temperature Altitude from NMC data |
PVAT | Position, Velocity, Attitude and Time data |
SOL | Solar Geomagnetic Indices |
Table 2: Data types which appear in SABER Level 1A file.
The 6 types of records written in a Level 1A file are described below.
This record type contains data from the Data Collection packets. "PGA" refers to the programmable Gain Amplifier setting in engineering units. Each channel has 3 gain range settings, described in the SABER Instrument Specification document.
Field |
Value | Units |
1 |
Record Start Time | Milliseconds since UT midnight |
2 |
Scan Angle | milliradians |
3-22 |
Channel 1-10 PGA Setting | [unitless] |
23-32 |
Channel 1-10 Voltage | [Volts] |
33 |
Quality Flag | N/A |
Table 3: Level 1A DC record type definition.
The structure which defines record type 1 follows:
// Instrument Data Record
typedef struct {
long int startTime; // Record start time (msec since UT midnight
double scanAngle; // Scan Mirror Angle [mrads]
double gain[10]; // Channel 1-10 PGA settings []
int chan[10]; // Channel 1-10 output voltages [counts]
double qualityFlag; // Record quality indicator [tbd]
} DC_Record;
Contains housekeeping data subcommed from the Data Collection packets, as well as any data from housekeeping mode packets.
Field # |
Mnemonic |
Value |
Units |
||
1 |
Record Start Time | Milliseconds | |||
HouseKeeping Temperature Monitors |
|||||
5 |
tfo1vg1 | Temperature 1 Focal Plane 1 | (voltage) | ||
6 |
tfo1vg2 | Temperature 1 Focal Plane 2 | (voltage) | ||
7 |
tfo1c | Temperature 1 Focal Plane | (current) | ||
8 |
tfo2vg1 | Temperature 2 Focal Plane 1 | (voltage) | ||
9 |
tfo2vg2 | Temperature 2 Focal Plane 2 | (voltage) | ||
10 |
tfo2c | Temperature 2 Focal Plane | (current) | ||
11 |
tfo3v | Top of Cold Link #3 | (voltage) | ||
12 |
tfo3c | Top of Cold Link #3 | (current) | ||
13 |
tfo4v | Top of Cold Link #4 | (voltage) | ||
14 |
tfo4c | Top of Cold Link #4 | (current) | ||
15 |
tfo5v | Bottom of Cold Link #5 | (voltage) | ||
16 |
tfo5c | Bottom of Cold Link #5 | (current) | ||
17 |
tfo6v | Bottom of Cold Link #6 | (voltage) | ||
18 |
tfo6c | Bottom of Cold Link #6 | (current) | ||
19 |
tto1v | Radiator Near Aperture Top | |||
20 |
tto2v | Radiator Near Aperture Bottom | |||
21 |
tto3v | Baffle Near Aperture Top | |||
22 |
tto4v | Baffle Hot Spot | |||
23 |
tto5v | Baffle Near Rear Joint | |||
24 |
tto6v | Wall Near Bearing Right | |||
25 |
tto7v | Wall Near Encoder | |||
26 |
tto8v | Encoder Mount Front | |||
27 |
tto9v | Encoder Mount Back | |||
28 |
tto10v | Fore-optics S/C | |||
29 |
tto11v | IFC #1 | (voltage) | ||
30 |
tto11c | IFC #1 | (current) | ||
31 |
tto12v | IFC #2 | (voltage) | ||
32 |
tto12c | IFC #2 | (current) | ||
33 |
tto13v | IFC #3 | (voltage) | ||
34 |
tto13c | IFC #3 | (current) | ||
35 |
tto14v | Fore-optics Radiator | |||
36 |
tto15v | Chopper Base Right | |||
37 |
tto16v | Chopper Base Left | |||
38 |
tm01v | Refrigerator Mount Top | |||
39 |
tm02v | Refrigerator Mount Bottom | |||
40 |
tm03v | Radiator at Ref Mount Base | |||
41 |
tm04v | Radiator at Electronics Box | |||
42 |
tm05v | Electronics Box Hot Spot | |||
43 |
tm06v | Electronics Box Back | |||
44 |
tm07v | Radiator at RFE Box | |||
45 |
tm08v | RFE Box Hot Spot | |||
46 |
tm09v | RFE Box Back | |||
47 |
tco1v | Cover Deploy System | |||
48 |
tref | Reference Voltage for Current | |||
HouseKeeping Power Monitors |
|||||
49 |
v1p5 | DC/DC#1 +5V, C&DH | Volts | ||
50 |
v2p15 | DC/DC#2 +15V, Housekeeping | |||
51 |
v2m15 | DC/DC#3 -15V, Housekeeping | |||
52 |
v4p5 | DC/DC#4 +5V, Scan, Analog Count | |||
53 |
v5p15 | DC/DC#5 +15V, Scan, Analog Count | |||
54 |
v5m15 | DC/DC#6 -15V, Scan, Analog Count | |||
55 |
v6p15 | DC/DC#7 +15V, Scan Drive | |||
56 |
v7p15 | DC/DC#8 +15V, Signal Process | |||
57 |
v7m15 | DC/DC#9 -15V, Signal Process | |||
58 |
v9p5 | DC/DC#10 +5V, Signal Process | |||
59 |
v10p28 | DC/DC#11 +28V, Refrigerator | |||
HouseKeeping Calibration Sources |
|||||
60 |
bbsetv | Blackbody Set Voltage | |||
61-63 |
jscur[3] | Jones Source Currents | |||
HouseKeeping Refrigerator |
|||||
64 |
rcs | Refrigerator Compressor Position | |||
65 |
rbs | Refrigerator Balancer Position | |||
66 |
rcc | Refrigerator Compressor Current | mAmps | ||
67 |
rbc | Refrigerator Balancer Current | mAmps | ||
68 |
rao | Refrigerator Accelerometer Out | |||
69 |
trch | Temperature Cold Head | |||
HouseKeeping Status |
|||||
70 |
stat1Hbeat | Heartbeat, Error Counters | |||
71 |
stat2Uplink | Uplink Status | |||
72 |
stat3Onoff | On/Off Status | |||
73 |
stat4Lnktmp | TFO3V, Ref Cold Link Temp | |||
74 |
stat5Intrpt | Interrupt, Subsystem Status | |||
HouseKeeping Register Values |
|||||
75 |
ti | Time Interrupt Compare Word | |||
76-85 |
ge[10] | Auto Gains (on/off) | |||
86-95 |
ghtp[10] | Auto Gain High Trip Points | |||
96-105 |
gltp[10] | Auto Gain Low Trip Points | |||
106-115 |
o[10] | Channel Offsets | Volts | ||
116 |
mdump | EEPROM Dump Block Start Position | |||
117-119 |
jssetcur[3] | Jones Source Set Currents | |||
120 |
bbt | Blackbody Set Temperature | |||
121 |
adscoff1 | Adaptive Scan Offset 1 | |||
122 |
adscml1 | Adaptive Scan Mirror Limit 1 | |||
123 |
adscoff2 | Adaptive Scan Offset 2 | |||
124 |
adscml2 | Adaptive Scan Mirror Limit 2 | |||
125-127 |
dfsa[3] | Data Formatter Start Addresses | |||
128 |
rcon1 | Refrigerator Control Word 1 | |||
129 |
rcon2 | Refrigerator Control Word 2 | |||
130 |
crccomp | CRC Compare Value | |||
131 |
crccur | CRC Present Value | |||
132 |
retupad | Return From Uplink Address | |||
133 |
astemp | Adaptive Scan Temporary Store | |||
134 |
ad1_2p | Adaptive Scan 1/2 Peak Value | |||
135 |
ml1_2p | Mirror Location at 1/2 Peak | |||
136 |
mfsp1 | Mirror Full Sweep Position 1 | |||
137 |
mfsp2 | Mirror Full Sweep Position 2 |
The structure(s) that defines record type 2 follows;
// HouseKeeping Record
typedef struct {
long int startTime; // Record start time (msec since UT midnight
HK_Temp_Mon temp_mon; // Temperature Monitors Structure (ch 0-43)
HK_Power_Mon power_mon; // Power Monitors Structure (ch 44-54)
HK_Cal_Src cal_src; // Calibration Sources Structure (ch 55-58)
HK_Refrig refrig; // Refrigerator Structure (ch 59-64)
HK_Status hkStatus; // Status Structure (ch 65-69)
HK_Reg_Val reg_val; // Register Values Structure (ch 70-132)
} HkRec;
// HouseKeeping Temperature Monitors
typedef struct {
double tfo1vg1; // Temperature 1 Focal Plane 1 (voltage)
double tfo1vg2; // Temperature 1 Focal Plane 2 (voltage)
double tfo1c; // Temperature 1 Focal Plane (current)
double tfo2vg1; // Temperature 2 Focal Plane 1 (voltage)
double tfo2vg2; // Temperature 2 Focal Plane 2 (voltage)
double tfo2c; // Temperature 2 Focal Plane (current)
double tfo3v; // Top of Cold Link #3 (voltage)
double tfo3c; // Top of Cold Link #3 (current)
double tfo4v; // Top of Cold Link #4 (voltage)
double tfo4c; // Top of Cold Link #4 (current)
double tfo5v; // Bottom of Cold Link #5 (voltage)
double tfo5c; // Bottom of Cold Link #5 (current)
double tfo6v; // Bottom of Cold Link #6 (voltage)
double tfo6c; // Bottom of Cold Link #6 (current)
double tto1v; // Radiator Near Aperture Top
double tto2v; // Radiator Near Aperture Bottom
double tto3v; // Baffle Near Aperture Top
double tto4v; // Baffle Hot Spot
double tto5v; // Baffle Near Rear Joint
double tto6v; // Wall Near Bearing Right
double tto7v; // Wall Near Encoder
double tto8v; // Encoder Mount Front
double tto9v; // Encoder Mount Back
double tto10v; // Fore-optics S/C
double tto11v; // IFC #1 (voltage)
double tto11c; // IFC #1 (current)
double tto12v; // IFC #2 (voltage)
double tto12c; // IFC #2 (current)
double tto13v; // IFC #3 (voltage)
double tto13c; // IFC #3 (current)
double tto14v; // Fore-optics Radiator
double tto15v; // Chopper Base Right
double tto16v; // Chopper Base Left
double tm01v; // Refrigerator Mount Top
double tm02v; // Refrigerator Mount Bottom
double tm03v; // Radiator at Ref Mount Base
double tm04v; // Radiator at Electronics Box
double tm05v; // Electronics Box Hot Spot
double tm06v; // Electronics Box Back
double tm07v; // Radiator at RFE Box
double tm08v; // RFE Box Hot Spot
double tm09v; // RFE Box Back
double tco1v; // Cover Deploy System
double tref; // Reference Voltage for Current
} HkTempMon;
// HouseKeeping Power Monitors
typedef struct {
double v1p5; // DC/DC#1 +5V, C&DH
double v2p15; // DC/DC#2 +15V, Housekeeping
double v2m15; // DC/DC#3 -15V, Housekeeping
double v4p5; // DC/DC#4 +5V, Scan, Analog Count
double v5p15; // DC/DC#5 +15V, Scan, Analog Count
double v5m15; // DC/DC#6 -15V, Scan, Analog Count
double v6p15; // DC/DC#7 +15V, Scan Drive
double v7p15; // DC/DC#8 +15V, Signal Process
double v7m15; // DC/DC#9 -15V, Signal Process
double v9p5; // DC/DC#10 +5V, Signal Process
double v10p28; // DC/DC#11 +28V, Refrigerator
} HkPowerMon;
// HouseKeeping Calibration Sources
typedef struct {
double bbsetv; // Blackbody Set Voltage
double jscur[3]; // Jones Source Currents
} HkCalSrc;
// HouseKeeping Refrigerator
typedef struct {
double rcs; // Refrigerator Compressor Position
double rbs; // Refrigerator Balancer Position
double rcc; // Refrigerator Compressor Current
double rbc; // Refrigerator Balancer Current
double rao; // Refrigerator Accelerometer Out
double trch; // Temperature Cold Head
} HkRefrig;
// HouseKeeping Status
typedef struct {
short int stat1Hbeat; // Heartbeat, Error Counters
short int stat2Uplink; // Uplink Status
short int stat3Onoff; // On/Off Status
double stat4Lnktmp; // TFO3V, Ref Cold Link Temp
short int stat5Intrpt; // Interrupt, Subsystem Status
} HkStatus;
// HouseKeeping Register Values
typedef struct {
short int ti; // Time Interrupt Compare Word
char ge[10]; // Auto Gains (on/off)
double ghtp[10]; // Auto Gain High Trip Points
double gltp[10]; // Auto Gain Low Trip Points
double o[10]; // Channel Offsets
short int mdump; // EEPROM Dump Block Start Position
double jssetcur[3]; // Jones Source Set Currents
double bbt; // Blackbody Set Temperature
double adscoff1; // Adaptive Scan Offset 1
double adscml1; // Adaptive Scan Mirror Limit 1
double adscoff2; // Adaptive Scan Offset 2
double adscml2; // Adaptive Scan Mirror Limit 2
short int dfsa[3]; // Data Formatter Start Addresses
short int rcon1; // Refrigerator Control Word 1
short int rcon2; // Refrigerator Control Word 2
short int crccomp; // CRC Compare Value
short int crccur; // CRC Present Value
short int retupad; // Return From Uplink Address
short int astemp; // Adaptive Scan Temporary Store
short int ad1_2p; // Adaptive Scan 1/2 Peak Value
short int ml1_2p; // Mirror Location at 1/2 Peak
short int mfsp1; // Mirror Full Sweep Position 1
short int mfsp2; // Mirror Full Sweep Position 2
} HkRegVal;
This record type contains data from Pointing Velocity Attitude Time (PVAT) file.
Field |
Value | Units |
1 |
Record Start Time | Milliseconds since UT midnight |
2 |
TBD | TBD |
This record type contains pressure, altitude and temperature data for the current SABER scan. The profile comes from the NMC NetCDF file. The profile selected is based on 60km tangent point location and time for the unrefracted ray.
Field |
Value | Units |
1 |
Profile Latitude (60 km TP) | Degrees (0=equator, -90=S. Pole, +90=North Pole) |
2 |
Profile Longitude (60 km TP) | Degrees E |
3 |
TIMED Orbit Number | |
4 |
SABER Scan # | |
5 |
Date | YYYYDDD |
6 |
Time (60 km ) | Msec since midnight |
The structure which defines record type 1 follows:
// Spacecraft Data Record
typedef struct {
long int startTime; // Record start time (msec since UT midnight
} HC_Record;
TBD