The DPU sends telemetry data serially at 38400 baud with eight data bits, one stop bit, and no parity. Each package consists of a four byte header followed by zero or more data bytes. The header is a three byte synchronization pattern followed by a package identifier. Packages may be sent following the first synchronization pulse after the nadir pulse, but must conclude before the next nadir pulse. The package types used by HENA are summarized in the following tables.
Data packages are used to downlink science and housekeeping data. Each data product is placed in a package; the application id identifies the data type. The Compression bit would be set to command the CIDP to compress the data. Since the HENA DPU compresses its own data, this bit will never be set. The byte count gives the length of the data and checksum fields; the most significant byte of the length is sent first. Up to 63,980 bytes of data can be sent in one package. Following the data is a checksum, consisting of the byte-wise exclusive-or of the data.
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
|---|---|---|---|---|---|---|---|---|
| 0 | 0xfe - Synchronization Pattern 1 | |||||||
| 1 | 0xfa - Synchronization Pattern 2 | |||||||
| 2 | 0x30 - Synchronization Pattern 3 | |||||||
| 3 | 0xdc - Data Package Id | |||||||
| 4 | Cmp | Application Id | ||||||
| 5 | Byte Count, 7 - N (ms) | |||||||
| 6 | Byte Count (ls) | |||||||
| 7+ | ... Data ... | |||||||
| N | Checksum | |||||||
Each package is converted to a HENA CCSDS packet by the CIDP. The packet will have an application process id consisting of 0101XXXXXXX where XXXXXXX is the application id from the package. The CCSDS packet secondary header will have the spacecraft time at the start of the next spin. The package checksum will be included in the packet data. If the checksum is bad, the package is downlinked as if the application id were 0x7f; the application id 0x7f is reserved by the CIDP for this use.
The CIDP request package requests action of the CIDP. The request id identifies the action to take. The byte count gives the length of the checksum field and is always one.
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
|---|---|---|---|---|---|---|---|---|
| 0 | 0xfe - Synchronization Pattern 1 | |||||||
| 1 | 0xfa - Synchronization Pattern 2 | |||||||
| 2 | 0x30 - Synchronization Pattern 3 | |||||||
| 3 | 0xd5 - CIDP Request Package Id | |||||||
| 4 | Request Id | |||||||
| 5 | Byte Count, 7 - N (ms) (= 0) | |||||||
| 6 | Byte Count (ls) (= 1) | |||||||
| 7 | Checksum (= 0) | |||||||
At most one request may be sent per spin. The CIDP will act on the request within two spins. The following requests are defined:
At least one package must be sent to the CIDP every spin to allay the CIDP watchdog's suspicions of HENA's demise. The No-data package is sent if HENA has no other data to send.
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
|---|---|---|---|---|---|---|---|---|
| 0 | 0xfe - Synchronization Pattern 1 | |||||||
| 1 | 0xfa - Synchronization Pattern 2 | |||||||
| 2 | 0x30 - Synchronization Pattern 3 | |||||||
| 3 | 0xac - No Data Id | |||||||
| 4 | Fill (= 0) | |||||||
| 5 | Byte Count, 7 - N (ms) (= 0) | |||||||
| 6 | Byte Count (ls) (= 1) | |||||||
| 7 | Checksum (=0) | |||||||
Science data products are accumulators, PHA results, images from the HENA-M and HENA-S sensors, and various data structure dumps. Each product is accumulated and transmitted at a fixed interval or on demand as specified in the table below. Each product is sent in separate packages with a unique application id.
| Product | AppIDs (hex) | Rate |
|---|---|---|
| Accumulators | 0x00 | 2 sectors |
| HENA-M PHA Results | 0x01 | 2 sectors |
| HENA-S PHA Results | 0x02 | 2 sectors |
| HENA-M Raw + PHA | 0x03 | 2 sectors |
| HENA-S Raw + PHA | 0x04 | 2 sectors |
| High Res. Image | 0x05 | 1 spin |
| Low Res. Image | 0x06 | 1 spin |
| SSD Image | 0x07 | 1 spin |
| Memory Dump | 0x08 | on demand |
| Memory Checksum | 0x09 | on demand |
| Parameters | 0x0a | on demand |
| Calibration Sequences | 0x0b | on demand |
| Monitor Limits | 0x0c | on demand |
| SSD Parameters | 0x0d | on demand |
| Schedule | 0x0e | 1 spin |
| Macro Status | 0x0f | on demand |
Each science data package has a common eight-byte header. This HENA data header contains the spacecraft time when the data was taken, and for integrated data, when the integration began. The header also has a bit indicating the instrument charge mode (0=neutral, 1=ion). The header also indicates this package's position in a multi-package data item.
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
|---|---|---|---|---|---|---|---|---|
| 0 | Spacecraft Time (ms byte) | |||||||
| 1 | Spacecraft Time | |||||||
| 2 | Spacecraft Time | |||||||
| 3 | Spacecraft Time (ls byte) | |||||||
| 4 | Spin No. (ms byte) | |||||||
| 5 | Spin No. (ls byte) | |||||||
| 6 | Charge | Start Sector No. | ||||||
| 7 | Sequence/Fragment No. | |||||||
Following the header is the science data. The format of each science data product is described below.
HENA accumulator packages consists of a package header (replaced by a CCSDS header in the CIDP), a HENA data header, and compressed accumulator values. Each 24-bit accumulator is log-compressed to ten bits.
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
|---|---|---|---|---|---|---|---|---|
| 0 | Start_Fast (bits 9-2) | |||||||
| 1 | Start_Fast (bits 1-0) | Start_Shaped (bits 9-4) | ||||||
| 2 | Start_Shaped (bits 3-0) | Start_Coinc (bits 9-6) | ||||||
| 3 | Start_Coinc (bits 5-0) | Stop_Fast (bits 9-8) | ||||||
| 4 | Stop_Fast (bits 7-0) | |||||||
| 5 | Stop_Shaped (bits 9-2) | |||||||
| 6 | Stop_Shaped (bits 1-0) | Stop_Coinc (bits 9-4) | ||||||
| 7 | Stop_Coinc (bits 3-0) | MCP_TOF (bits 9-6) | ||||||
| 8 | MCP_TOF (bits 5-0) | Coinc (bits 9-8) | ||||||
| 9 | Coinc (bits 7-0) | |||||||
| 10 | Energy Rate (bits 9-2) | |||||||
| 11 | Energy Rate (bits 1-0) | SSD_Pileup (bits 9-4) | ||||||
| 12 | SSD_Pileup (bits 3-0) | TOF_SSD (bits 9-6) | ||||||
| 13 | TOF_SSD (bits 5-0) | Full_MCP (bits 9-8) | ||||||
| 14 | Full_MCP (bits 7-0) | |||||||
| 15 | Full_SSDbits 9-2) | |||||||
| 16 | Full_SSD (bits 1-0) | Valid_Rate (bits 9-4) | ||||||
| 17 | Valid_Rate (bits 3-0) | Xfer_Event (bits 9-6) | ||||||
| 18 | Xfer_Event (bits 5-0) | SSD_TOF (bits 9-8) | ||||||
| 19 | SSD_TOF (bits 7-0) | |||||||
Data log-compressed to ten bits consists of a five-bit exponent and a five-bit mantissa.
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||
|---|---|---|---|---|---|---|---|---|---|
| exponent | mantissa | ||||||||
Data is decompressed using the following pseudo-C algorithm:
if(exponent==0) result = mantissa else result = (mantissa | 0x20) << (exponent - 1)
HENA-M PHA result packages consist of a package header (replaced by a CCSDS header in the CIDP), a HENA data header, and PHA results. Each PHA result occupies four bytes. Each package holds zero to 256 events. A package with zero events would be sent if HENA-M PHA data was enabled but no events were observed.
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
|---|---|---|---|---|---|---|---|---|
| 0 | Azimuth | CTOF | ||||||
| 1 | CTOF | |||||||
| 2 | Elevation | PHf (ms) | ||||||
| 3 | PHf (ls) | PHb | ||||||
HENA-S PHA result packages consist of a package header (replaced by a CCSDS header in the CIDP), a HENA data header, and PHA results. Each PHA result occupies four bytes. Each package holds zero to 256 events. A package with zero events would be sent if HENA-S PHA data was enabled but no events were observed.
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
|---|---|---|---|---|---|---|---|---|
| 0 | Azimuth | E (ms) | ||||||
| 1 | E (ls) | |||||||
| 2 | Elevation | CTOF (ms) | ||||||
| 3 | CTOF (ls) | |||||||
HENA-M raw + PHA result packages consist of a package header (replaced by a CCSDS header in the CIDP), a HENA data header, and event data. Each event occupies eighteen bytes: fourteen bytes for the seven raw data words and four bytes of PHA results. Each package holds zero to 56 events.
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
|---|---|---|---|---|---|---|---|---|
| 0 | spare | Event ID (ms) | ||||||
| 1 | Event ID (ls) | |||||||
| 2 | spare | MTOF (ms) | ||||||
| 3 | MTOF (ls) | |||||||
| 4 | spare | Wft (ms) | ||||||
| 5 | Wft (ls) | |||||||
| 6 | spare | Wfb (ms) | ||||||
| 7 | Wfb (ls) | |||||||
| 8 | spare | Wb (ms) | ||||||
| 9 | Wb (ls) | |||||||
| 10 | spare | Sb (ms) | ||||||
| 11 | Sb (ls) | |||||||
| 12 | spare | Ib (ms) | ||||||
| 13 | Ib (ls) | |||||||
| 14 | Azimuth | CTOF | ||||||
| 15 | CTOF | |||||||
| 16 | Elevation | PHf (ms) | ||||||
| 17 | PHf (ls) | PHb | ||||||
HENA-S raw + PHA result packages consist of a package header (replaced by a CCSDS header in the CIDP), a HENA data header, and event data. Each event occupies sixteen bytes: twelve bytes for the six raw data words and four bytes of PHA results. Each package holds zero to 64 events.
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
|---|---|---|---|---|---|---|---|---|
| 0 | spare | Event ID (ms) | ||||||
| 1 | Event ID (ls) | |||||||
| 2 | spare | STOF (ms) | ||||||
| 3 | STOF (ls) | |||||||
| 4 | spare | Wft (ms) | ||||||
| 5 | Wft (ls) | |||||||
| 6 | spare | Wfb (ms) | ||||||
| 7 | Wfb (ls) | |||||||
| 8 | spare | E (ms) | ||||||
| 9 | E (ls) | |||||||
| 10 | [m] | PID (ms) | ||||||
| 11 | PID (ls) | |||||||
| 12 | Azimuth | E (ms) | ||||||
| 13 | E (ls) | |||||||
| 14 | Elevation | CTOF (ms) | ||||||
| 15 | CTOF (ls) | |||||||
Each HENA image is sent as a series of packages. A package consists of a package header (replaced by a CCSDS header in the CIDP), a HENA data header, a compression subheader, and compressed pixels. Each 16-bit pixel is log-compressed to eight bits; then the entire block of pixels is Rice-compressed. Compression type and compression information appear before the first pixel. Currently, the only compression type is Rice compression; type will be zero and information will be the Rice code (the number of uncompressed bits in each pixel). This is followed by the first pixel, log-compressed, but not Rice-compressed. Then, Rice-compressed pixels follow.
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
|---|---|---|---|---|---|---|---|---|
| 0 | Image Id (see Appendix 3) | |||||||
| 1 | Compression Type | Compression Information | ||||||
| 2 | First Pixel | |||||||
| 3+ | Remaining Rice-compressed Pixels ... | |||||||
Each image is divided into fragments for the purpose of splitting the image across multiple packages. Each package is self-contained so that if one package is lost, the remaining packages can be used to reconstruct a partial image. HENA images have either high-spatial resolution (120x40), low-spatial resolution (60x20), or SSD resolution (80x24). High-spatial resolution images have eight fragments each containing 600 pixels. Low-spatial resolution images have four fragments each containing 300 pixels. SSD images have four fragments each containing 480 pixels. Image fragments are numbered starting at zero; the data header of a package will list the fragment contained in the package. Within each fragment, pixels are sent starting at the lower left pixel, moving horizontally over the first row, then starting at the left of the next row, etc.
Images are decompressed with the following pseudo-C algorithm:
if info == 8 /* if backup (i.e. no) comp */ P0 = read(8 bits) /* first pixel */ for each remaining pixel Pi = (Pi-1 - Df) & 0xff else P0 = read(8 bits) /* first pixel */ for each remaining pixel Pi = (Pi-1 - Dr) & 0xff for each pixel /* undo lossy comp */ exponent = Pi >> 4; mantissa = Pi & 0x0f if(exponent==0) Pi' = mantissa else Pi' = (mantissa | 0x10) << (exponent - 1)where Dr is computed as follows:
for(i=0; read(1 bit)==0; i++) /* count zeroes */ ; Dcode = (i << info) | read(info bits) Dr = (Dcode & 0x01) ? ~(Dcode >> 1) : (Dcode >> 1)
and, where Df is computed as follows: Dcode = read(info bits) Df = (Dcode & 0x01) ? ~(Dcode >> 1) : (Dcode >> 1)and, where read(n) is a function that reads next n bits from subpacket data field; read(0) returns 0.
Memory dump packages consist of a package header (replaced by a CCSDS header in the CIDP), a HENA data header, a memory dump subheader, and memory data. Up to 256 bytes can be sent in a single package; if a larger dump was requested, multiple packages will be sent with an incrementing sequence number in the data header. There is no guarantee of consistency within or between packages.
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
|---|---|---|---|---|---|---|---|---|
| 0 | Address (ms bits) | |||||||
| 1 | Address (ls bits) | |||||||
| 2 | spare | spare | Address Space | Page | ||||
| 3 | spare | |||||||
| 4+ | ... Dump Bytes ... | |||||||
Memory checksum packages consist of a package header (replaced by a CCSDS header in the CIDP), a HENA data header, a memory checksum subheader, and memory checksum.
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
|---|---|---|---|---|---|---|---|---|
| 0 | Address (ms bits) | |||||||
| 1 | Address (ls bits) | |||||||
| 2 | Length (ms bits) | |||||||
| 3 | Length (ls bits) | |||||||
| 4 | spare | spare | Address Space | Page | ||||
| 5 | Checksum | |||||||
A parameter package consists of a package header (replaced by a CCSDS header in the CIDP), a HENA data header, and data. The data consists of HENA parameter values. The package is only sent in response to a H_MEM_STR_READ command. Note: each parameter is 16 bits.
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
|---|---|---|---|---|---|---|---|---|
| 0 - 11 | HV slew rate for coincidence, start, and stop MCPs, positive collimators and negative collimators, and SSD bias (in steps/s) | |||||||
| 12 - 23 | Alternative HV level for coincidence, start, and stop MCPs, positive collimators and negative collimators, SSD bias | |||||||
| 24 - 25 | Earth avoidance zone (in sectors) | |||||||
| 26 - 27 | Sun avoidance zone (in sectors) | |||||||
| 28 - 29 | Motor interrupt period (in processor clocks) | |||||||
| 30 - 31 | Motor steps to open/close shutter | |||||||
| 32 - 33 | Motor power level (clock duty cycle) | |||||||
| 34 - 35 | Start top offset | |||||||
| 36 - 37 | Start bottom offset | |||||||
| 38 - 39 | Stop wedge offset | |||||||
| 40 - 41 | Stop strip offset | |||||||
| 42 - 43 | Stop interstitial offset | |||||||
| 44 - 45 | MTOF offset | |||||||
| 46 - 47 | STOF offset | |||||||
| 48 - 49 | Gain for Xf (Gf') | |||||||
| 50 - 51 | Offset of Xf (Of') | |||||||
| 52 - 53 | Gain for Xb (Gxb') | |||||||
| 54 - 55 | Offset for Xb (Oxb') | |||||||
| 56 - 57 | Gain for Yb (Gyb') | |||||||
| 58 - 59 | Offset for Yb (Oyb') | |||||||
| 60 - 61 | spare | |||||||
| 62 - 63 | spare | |||||||
| 64 - 71 | Correction factors for PHf MCP gain: f[4] indexed by Xf | |||||||
| 72 - 103 | Correction factors for Phb MCP gain: f[4,4] indexed by Xb and Yb | |||||||
| 104 - 123 | Thresholds for classifying HENA-M CTOF: T0, T1, ... T9 | |||||||
| 124 - 143 | Correction factors for SSD TOF electron path: f[10] indexed by SSD Y pixel number | |||||||
| 144 - 159 | Thresholds for classifying HENA-S CTOF: T0, T1, ... T7 | |||||||
| 160 - 183 | SSD mass calculation parameters: B1 - B6 | |||||||
| 184 - 191 | Thresholds for classifying HENA-S mass: T0, T1, ... T3 | |||||||
| 192 - 193 | TDC control register | |||||||
| 194 - 225 | spare | |||||||
A calibration sequence package consists of a package header (replaced by a CCSDS header in the CIDP), a HENA data header, and data. The data consists of three calibration sequences. The package is only sent in response to a H_MEM_STR_READ command.
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
|---|---|---|---|---|---|---|---|---|
| 0 - 104 | ... Calibration Sequence 1 (105 bytes) ... | |||||||
| 105 - 209 | ... Calibration Sequence 2 (105 bytes) ... | |||||||
| 210 - 314 | ... Calibration Sequence 3 (105 bytes) ... | |||||||
Each sequence step has the following format, consisting of seven bytes, one byte for each calibrator value, time through coincidence. This is repeated for each of the fifteen sequence steps.
| time | SSD | top/coin | bottom | wedge | strip | inter |
A monitor limits package consists of a package header (replaced by a CCSDS header in the CIDP), a HENA data header, and data. The data consists of pairs of monitor limits, a low limit and a high limit, for each monitor. The package is only sent in response to a H_MEM_STR_READ command.
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
|---|---|---|---|---|---|---|---|---|
| 0 | Bias V Low Limit | |||||||
| 1 | Bias V High Limit | |||||||
| 2 | +30V Supply Voltage Low Limit | |||||||
| 3 | +30V Supply Voltage High Limit | |||||||
| 4 | +15V Supply Voltage Low Limit | |||||||
| 5 | +15V Supply Voltage High Limit | |||||||
| 6 | +5V Digital Supply Voltage Low Limit | |||||||
| 7 | +5V Digital Supply Voltage High Limit | |||||||
| 8 | +5V Analog Supply Voltage Low Limit | |||||||
| 9 | +5V Analog Supply Voltage High Limit | |||||||
| 10 | -5V Supply Voltage Low Limit | |||||||
| 11 | -5V Supply Voltage High Limit | |||||||
| 12 | +5V Digital Supply Current Low Limit | |||||||
| 13 | +5V Digital Supply Current High Limit | |||||||
| 14 | +5V Analog Supply Current Low Limit | |||||||
| 15 | +5V Analog Supply Current High Limit | |||||||
| 16 | -5V Supply Current Low Limit | |||||||
| 17 | -5V Supply Current High Limit | |||||||
| 18 | High Voltage Supply Current Low Limit | |||||||
| 19 | High Voltage Supply Current High Limit | |||||||
| 20 | Heater Supply Current Low Limit | |||||||
| 21 | Heater Supply Current High Limit | |||||||
| 22 | spare | |||||||
| 23 | spare | |||||||
| 24 | spare | |||||||
| 25 | spare | |||||||
| 26 | HENA Sensor Base Thermistor Low Limit | |||||||
| 27 | HENA Sensor Base Thermistor High Limit | |||||||
| 28 | Shutter Thermistor Low Limit | |||||||
| 29 | Shutter Thermistor High Limit | |||||||
| 30 | MEU Thermistor Low Limit | |||||||
| 31 | MEU Thermistor High Limit | |||||||
| 32 | Start MCP Voltage Low Limit | |||||||
| 33 | Start MCP Voltage High Limit | |||||||
| 34 | Stop MCP Voltage Low Limit | |||||||
| 35 | Stop MCP Voltage High Limit | |||||||
| 36 | Coinc MCP Voltage Low Limit | |||||||
| 37 | Coinc MCP Voltage High Limit | |||||||
| 38 | Positive Collimator Voltage Low Limit | |||||||
| 39 | Positive Collimator Voltage High Limit | |||||||
| 40 | Negative Collimator Voltage Low Limit | |||||||
| 41 | Negative Collimator Voltage High Limit | |||||||
| 42 | analog ground/spare Low Limit | |||||||
| 43 | analog ground/spare High Limit | |||||||
| 44 | digital ground/spare Low Limit | |||||||
| 45 | digital ground/spare High Limit | |||||||
| 46 | SSD +5V Digital Voltage Low Limit | |||||||
| 47 | SSD +5V Digital Voltage High Limit | |||||||
| 48 | SSD +5V Analog Voltage Low Limit | |||||||
| 49 | SSD +5V Analog Voltage High Limit | |||||||
| 50 | SSD +5V Amptek Voltage Low Limit | |||||||
| 51 | SSD +5V Amptek Voltage High Limit | |||||||
| 52 | SSD -5V Analog Voltage Low Limit | |||||||
| 53 | SSD -5V Analog Voltage High Limit | |||||||
| 54 | MCP +5V Voltage Low Limit | |||||||
| 55 | MCP +5V Voltage High Limit | |||||||
| 56 | MCP -5V Voltage Low Limit | |||||||
| 57 | MCP -5V Voltage High Limit | |||||||
| 58 | Shutter Status Low Limit | |||||||
| 59 | Shutter Status High Limit | |||||||
| 60 | Instrument Current Low Limit | |||||||
| 61 | Instrument Current High Limit | |||||||
| 62 | Shutter Current Low Limit | |||||||
| 63 | Shutter Current High Limit | |||||||
| 64 | Start Fast, Low Limit | |||||||
| 65 | Start Fast, High Limit | |||||||
| 66 | Stop Fast, Low Limit | |||||||
| 67 | Stop Fast, High Limit | |||||||
| 68 | Coincidence, Low Limit | |||||||
| 69 | Coincidence, High Limit | |||||||
| 70 | Energy, Low Limit | |||||||
| 71 | Energy, High Limit | |||||||
| 72 | Positive Collimator Discharge, Low Limit | |||||||
| 73 | Positive Collimator Discharge, High Limit | |||||||
| 74 | Negative Collimator Discharge, Low Limit | |||||||
| 75 | Negative Collimator Discharge, High Limit | |||||||
The current SSD parameters are sent on request. Each package consists of a package header (replaced by a CCSDS header in the CIDP), a HENA data header, and data. The data consists of the SSD's current PHA, Actel, I/O, and FEA register values. The package is only sent in response to a H_MEM_STR_READ command.
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
|---|---|---|---|---|---|---|---|---|
| 0-5 | ... PHA registers, addresses 000616 - 000b16 (6 bytes) ... | |||||||
| 6-13 | ... Actel registers, addresses 800016 - 800716 (8 bytes) ... | |||||||
| 14-35 | ... I/O registers, addresses 900216 - 901716 (22 bytes) ... | |||||||
| 36-995 | ... FEA registers, addresses a00016 - a3bf16 (15*64 bytes) ... | |||||||
The current shutter and HV safing schedule is sent periodically. Each package consists of a package header (replaced by a CCSDS header in the CIDP), a HENA data header, and data. The data consists of the sector numbers at which the specified events will occur. Events that can never happen (e.g., because they are disabled) are reported as occurring in sector 120.
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
|---|---|---|---|---|---|---|---|---|
| 0 | Suppress event collection | |||||||
| 1 | Resume event collection | |||||||
| 2 | Start HV ramp down | |||||||
| 3 | Start HV ramp up | |||||||
| 4 | Close shutter to avoid sun | |||||||
| 5 | Reopen shutter (sun) | |||||||
| 6 | Close shutter to avoid earth | |||||||
| 7 | Reopen shutter (earth) | |||||||
| 8 | End integration and send MCP images | |||||||
| 9 | End integration and send SSD images | |||||||
The status of each macro definition is sent on request. Each package consists of a package header (replaced by a CCSDS header in the CIDP), a HENA data header, and data. The data consists of the address of the first block of each macro; this will be zero for an undefined macro. The package is only sent in response to a H_MEM_STR_READ command.
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
|---|---|---|---|---|---|---|---|---|
| 0 | Macro 0 (ms) | |||||||
| 1 | Macro 0 (ls) | |||||||
| ... | ... | |||||||
| 510 | Macro 255 (ms) | |||||||
| 511 | Macro 255 (ls) | |||||||
Housekeeping data products are listed in the following table. Each product is sent in a separate package with a unique application id.
| Product | AppIDs (hex) | Rate |
|---|---|---|
| Status | 0x40 | commandable |
| Command Echo | 0x41 | as needed |
| Alarm | 0x42 | as needed |
Each housekeeping data package has an eight-byte header identical to the one used for science data (see above). Following the header is the data. The format of each housekeeping data product is described below.
A status package is sent periodically. Each package consists of a package header (replaced by a CCSDS header in the CIDP), a HENA data header, and data. The data consists of analog status values, digital status, and the current instrument configuration. The package is sent automatically; the rate can be set by command (H_TLM_STAT_RATE).
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
|---|---|---|---|---|---|---|---|---|
| 0-31 | ... Analog Status (32 bytes) ... | |||||||
| 32-35 | ... Digital Status (4 bytes) ... | |||||||
| 36-61 | ... Hardware Configuration (26 bytes) ... | |||||||
| 62-93 | ... Software Configuration (32 bytes) ... | |||||||
| 94-101 | ... Software Information (8 bytes) ... | |||||||
The analog status data consists of 32 one-byte values. With the exception of the shutter current, a new analog value is read from the hardware every 200 milliseconds. The shutter current is read only while the shutter power is on. Each value is an 8-bit, unsigned number. Whenever the status package is sent, the most recent analog values are sent. All of the analogs except for the thermistor values are sent as read from the hardware; the thermistor values are modified to give them a positive slope (255 - value). The analogs are listed in the following table:
|   | Description |
|---|---|
| 0 | Bias V |
| 1 | +30V Supply Voltage |
| 2 | +15V Supply Voltage |
| 3 | +5V Digital Supply Voltage |
| 4 | +5V Analog Supply Voltage |
| 5 | -5V Supply Voltage |
| 6 | +5V Digital Supply Current |
| 7 | +5V Analog Supply Current |
| 8 | -5V Supply Current |
| 9 | High Voltage Supply Current |
| 10 | Heater Supply Current |
| 11 | spare |
| 12 | spare |
| 13 | HENA Sensor Base Thermistor |
| 14 | Shutter Thermistor |
| 15 | MEU Thermistor |
| 16 | Start MCP Voltage |
| 17 | Stop MCP Voltage |
| 18 | Coinc MCP Voltage |
| 19 | Positive Collimator Voltage |
| 20 | Negative Collimator Voltage |
| 21 | analog ground/spare |
| 22 | digital ground/spare |
| 23 | SSD +5V Digital Voltage |
| 24 | SSD +5V Analog Voltage |
| 25 | SSD +5V Amptek Voltage |
| 26 | SSD -5V Analog Voltage |
| 27 | MCP +5V Voltage |
| 28 | MCP -5V Voltage |
| 29 | Shutter Status |
| 30 | Instrument Current |
| 31 | Shutter Current |
The digital status consists of digital values monitored by the DPU. The digital status is defined in the following table:
| Description | Encoding | |
|---|---|---|
| 0/7 | HV Safe Power (S/W) | 0=normal, 1=disallow turn on |
| 0/6 | HV Safe Limit (H/W) | 0=normal, 1=limit in hardware |
| 0/5-3 | spare |   |
| 0/2 | HV Safing | 0=HV Ready, 1=Safe HV |
| 0/1 | spare |   |
| 0/0 | Cover Status | 0=Open, 1=Closed |
| 1/7-4 | Negative Collimator Discharges |   |
| 1/3-0 | Positive Collimator Discharges |   |
| 2 | EDAC Errors Corrected |   |
| 3 | spare |   |
The hardware configuration data describes the commanded state of the instrument's hardware control registers. The format is defined in the following table:
| Description | Encoding | |
|---|---|---|
| 0/7 | HV Power | 0=off, 1=on |
| 0/6-5 | spare |   |
| 0/4 | HV Negative Collimator Mode | 0=disabled, 1=enabled |
| 0/3 | HV Positive Collimator Mode | 0=disabled, 1=enabled |
| 0/2 | HV Coincidence MCP Mode | 0=disabled, 1=enabled |
| 0/1 | HV Stop MCP Mode | 0=disabled, 1=enabled |
| 0/0 | HV Start MCP Mode | 0=disabled, 1=enabled |
| 1/7 | spare |   |
| 1/6 | Decontamination Heater On Pulse | 100 ms high-going pulse |
| 1/5 | SSD Bias Power | 0=off, 1=on |
| 1/4 | spare |   |
| 1/3 | MCP Calibrator Power | 0=off, 1=on |
| 1/2 | SSD Preamp Power | 0=off, 1=on |
| 1/1 | Sensor SSD Analog Power | 0=off, 1=on |
| 1/0 | Sensor MCP Analog Power | 0=off, 1=on |
| 2/7 | spare |   |
| 2/6 | Wax Actuator Secondary Power | 0=off, 1=on |
| 2/5 | Wax Actuator Primary Power | 0=off, 1=on |
| 2/4 | Decontamination Heater Off Pulse | 100 ms high-going pulse |
| 2/3 | Survival Heater | 0=off, 1=on |
| 2/2-0 | Cal. TOF |   |
| 3 | HV Start MCP Actual Level |   |
| 4 | HV Stop MCP Actual Level |   |
| 5 | HV Coincidence MCP Actual Level |   |
| 6 | HV Positive Collimator Actual Level |   |
| 7 | HV Negative Collimator Actual Level |   |
| 8 | Start TOF Threshold |   |
| 9 | Stop TOF Threshold |   |
| 10 | Coincidence TOF Threshold |   |
| 11 | Calibrator Top/Coin Level |   |
| 12 | Calibrator Bottom Level |   |
| 13 | Calibrator Wedge Level |   |
| 14 | Calibrator Strip Level |   |
| 15 | Calibrator Interstitial Level |   |
| 16 | SSD Bias Actual Level |   |
| 17 | MCP Event Mode |   |
| 18 | SSD Event Mode |   |
| 19 | spare |   |
| 20 | spare |   |
| 21 | spare |   |
| 22/7-6 | spare |   |
| 22/5 | MCP Cal. Clock | 0=disabled, 1=enabled |
| 22/4 | SSD Cal. Clock | 0=disabled, 1=enabled |
| 22/3-0 | spare |   |
| 23/7-3 | spare |   |
| 23/2 | Shutter Motor Power | 0=off, 1=on |
| 23/1-0 | Shutter Motor Phase |   |
| 24-25 | spare |   |
The software configuration data describes the commanded state of the instrument's software. The format is defined in the following table:
| Description | Encoding | |
|---|---|---|
| 0/7 | spare |   |
| 0/6 | Wax Actuator Operation | 0=disabled, 1=enabled |
| 0/5 | Sensor Raw Data Collection | 0=disabled, 1=enabled |
| 0/4 | Accumulator Data Collection | 0=disabled, 1=enabled |
| 0/3 | HENA-M PHA Data Collection | 0=disabled, 1=enabled |
| 0/2 | HENA-S PHA Data Collection | 0=disabled, 1=enabled |
| 0/1 | HENA-M Image Data Collection | 0=disabled, 1=enabled |
| 0/0 | HENA-S Image Data Collection | 0=disabled, 1=enabled |
| 1/7 | Calibrator Cycle SSD Pixel | 0=off, 1=on |
| 1/6 | Charge Mode | 0=neutral, 1=ion |
| 1/5 | Earth Shutter Mode | 0=no-op, 1=close |
| 1/4 | Sun Shutter Mode | 0=no-op, 1=close |
| 1/3 | Sun HV Mode | 0=no-op, 1=ramp down |
| 1/2 | Sun Data Mode | 0=collect, 1=reject |
| 1/1 | Data Collection Mode | 0=normal, 1=backup |
| 1/0 | Monitor Response | 0=disabled, 1=enabled |
| 2 | HV Start MCP Limit |   |
| 3 | HV Stop MCP Limit |   |
| 4 | HV Coincidence MCP Limit |   |
| 5 | HV Positive Collimator Limit |   |
| 6 | HV Negative Collimator Limit |   |
| 7 | HV Start MCP Goal |   |
| 8 | HV Stop MCP Goal |   |
| 9 | HV Coincidence MCP Goal |   |
| 10 | HV Positive Collimator Goal |   |
| 11 | HV Negative Collimator Goal |   |
| 12 | Calibrator Sequence Number | 0=no sequence |
| 13 | MCP PHA Mode |   |
| 14 | MCP PHA Priority |   |
| 15 | SSD PHA Mode |   |
| 16 | SSD PHA Priority |   |
| 17 | Telemetry PHA-M Percentage |   |
| 18 | Housekeeping Rate |   |
| 19 | Enabled Memory Space |   |
| 20 | SSD Bias Limit |   |
| 21/7 | Image Motion Compensation Mode | 0=disabled, 1=enabled |
| 21/6 | Decontamination Heater Mode | 0=disabled, 1=enabled |
| 2/5-2 | spare |   |
| 21/1-0 | Shutter Operations Mode | 0=manual, 1=auto, 2=open, 3=close |
| 22 | SSD Bias Goal |   |
| 23 | spare |   |
| 24-25 | Telemetry Allocation |   |
| 26-27 | Enabled First Address |   |
| 28-29 | Enabled Last Address |   |
| 30-31 | spare |   |
The software information consists of values generated internally by the software. The software information is defined in the following table:
| Description | Encoding | |
|---|---|---|
| 0/7-2 | spare |   |
| 0/1 | Recalculating | 0=idle, 1=calculating tables |
| 0/0 | Macro Learn | 0=idle, 1=learning |
| 1 | Macro ID |   |
| 2 | Commands Executed |   |
| 3 | Commands Rejected |   |
| 4 | Software Version |   |
| 5 | Telemetry Messages Sent |   |
| 6 | Shutter Status | 0=closed, 1=open, 2=unknown |
| 7 | spare |   |
Each command received by the DPU is echoed in a package. Each echo package consists of a package header (replaced by a CCSDS header in the CIDP), a HENA data header, and command data. The command's opcode and first nine arguments are included, followed by a macro bit (set to 1 if the command was executed as part of a macro) and a code summarizing the command's result. If the command has fewer than nine arguments, the unused echo bytes are filled with zeroes. The result codes are defined in Appendix 4.
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
|---|---|---|---|---|---|---|---|---|
| 0 | Opcode (ms) | |||||||
| 1 | Opcode (ls) | |||||||
| 2 | Arg 0 | |||||||
| 3 | Arg 1 | |||||||
| 4 | Arg 2 | |||||||
| 5 | Arg 3 | |||||||
| 6 | Arg 4 | |||||||
| 7 | Arg 5 | |||||||
| 8 | Arg 6 | |||||||
| 9 | Arg 7 | |||||||
| 10 | Arg 8 | |||||||
| 11 | Macro? | Result Code | ||||||
Alarm packages report problems. Each package consists of a package header (replaced by a CCSDS header in the CIDP), a HENA data header, and alarm data. The alarm data consists of an 8-bit number identifying the alarm and an 8-bit value with additional information. The flag indicates transient or persistent alarms. See Appendix 2 for a list of the alarm ids.
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
|---|---|---|---|---|---|---|---|---|
| 0 | Identifier | |||||||
| 1 | Value | |||||||
| 2 | Flag (0=persistent 1=transient) | |||||||
| 3 | spare | |||||||
The HENA telemetry allocation is 41,666 bytes per spin. The command H_TLM_ALL_ALLOC can change this for ground testing or if the total IMAGE telemetry is reassigned. The production of data is partially controlled by ground command. Many HENA data products (e.g., accumulators) can be enabled or disabled by the H_SEN_CNTRL command. The rate at which status data is generated is controlled by H_TLM_STAT_RATE. Other data is generated automatically (e.g. command echo) or in response to a ground command (e.g. memory dump).
At the start of each spin, the HENA software divides the telemetry allocation among the enabled, synchronous producers as follows. The status and accumulator data have a fixed size and are allocated first. The remaining bandwidth is divided between images and PHA data. If the actual image data exceeds this bandwidth, low priority images will be discarded until the data fits in its given bandwidth. Any bandwidth remaining is divided between the HENA-M and HENA-S PHA data according to the percentage defined by the H_TLM_PHA_ALLOC command. This algorithm assumes that no asynchronous data will be generated.
If more data is generated than can be sent, the data is queued until there is an opportunity to send it. On subsequent spins, the telemetry production bandwidth that is parceled out is reduced until the backlog is cleared. HENA will never send more telemetry in a spin than has been allocated.
Return to HENA Software User's Guide.
Report problems to John Hayes.