Monitor and Control of the K-band Focal Plane Array
Overview
The GBT M&C System
The GBT monitor and control (M&C) system, named Ygor, is a distributed object-oriented telescope control system written in C++. The basic design of the M&C system is simple. A radio telescope is defined as a laboratory rather than an instrument (i.e. it is a set of devices of which the antenna is only one, which needs to be configured in novel ways to accomplish observations or scans). Each device, such as the K-band Focal Plane Array, is an autonomous subsystem which can be fully configured prior to a scan through a finite set of control parameters in order to run the scan in coordination with other devices. For purposes of configuration and observing, each device requires no more than four interfaces (control, monitor, message/alarm, and data) which are identical for all devices. The same control interface for user programs is also used to recursively build a tree of control modules whose root is a generic "scan coordinator". Any control module of the tree may be used to initiate a scan for the sub-tree under its control because each control module is derived from the same base class (called a
Manager
) and therefore inherits all of the control protocols required to coordinate and initiate a scan. (
Clark, 1998)
Note: Throughout this document, items that are shown in
fixed font
refer to C++ classes used by the K-Band Focal Plane Array monitor and control software.
Ygor Component Diagram
KFPA Monitor and Control
To lay the foundation for the full integration of the K-band Focal Plane Array (KFPA) into the GBT M&C system, we plan to create a synchronous
Manager
, using the
ManagerSynchronous
base class, for the array which will implement three of the four interfaces described above: control, monitor, and message/alarm. The base
Manager
class provides a number of predefined control points and messages/alarms. Furthermore, we plan to leverage existing code which already monitors and controls the cryogenics, power supplies, and calibration diodes. This is accomplished by inheriting from the
GregorianRcvrMgr
base class. By convention, the receiver calibration engineering FITS files produced during a scan (i.e. the data interface) for the KFPA receiver will be generated by another, preexisting
Manager
, called the
Measurements Manager
.
The engineering specifications for the hardware monitor and control of the
HEMTBiasCard form the basis for the design detailed in this document and are further clarified in the
Monitor and Control Specification for the KFPA (Document A02920D004). One important issue to note regarding monitoring , which is referenced in the details of the
HEMTBiasCard, is that the "adjusting and monitoring of the bias would take place between scans or other times active observing is not taking place and the IIc bus will be dormant during observing to eliminate any possible RFI generated by the IIC bus."
The KFPA Manager will primarily communicate with an commercial, off-the-shelf, microcontroller (via 10/100 Ethernet) which is in turn connected with the sub-modules that actually monitor and control the instrument. A diagram depicting the connection from the Manager down to the M&C sub-modules is shown below. It is expected that a TCP/IP socket will most likely be used to establish communication between the Manager and the microcontroller(s). The communication protocol to be used between the Manager and the microcontroller(s) over the socket connection is to be determined.
High Level Diagram from Manager to Pixel
High Level Software Design
Monitor
Overview
Each individual monitor value is referenced by an object of the class
DataDescriptor
which contains a complete description of the value including name, explanation, data type, size, units, and array count (if a vector). These
DataDescriptors
allow more functionality to be handled by the base classes than otherwise would be possible. For example, the user programs do not have to be rewritten (or even recompiled) to handle new devices and their associated scan parameters and monitor values since the reading, writing, communicating, and displaying of their values depends on code based on the
DataDescriptors
not on compiled data types. Also, the displays can be embellished with explanations and units since the information is readily available. In fact, the
DataDescriptor
is complete enough that headers for FITS binary tables can be generated automatically. This allows the engineers to select any monitor point whose values are sent to a logging program which generates files in FITS format. Likewise, the observer can select any monitor point's values to be stored as part of the observational data along with traditionally sampled values such as antenna positions and weather. (
Clark, 1998)
Because adjusting and monitoring of the bias will likely take place between scans or other times active observing is not taking place and the IIc bus will be dormant during observing to eliminate any possible RFI generated by the IIC bus. This means that monitoring will not occur during data acquisition (i.e. during a scan).
Individual monitor values are grouped into a
Sampler
, which contains the monitored values along with a time stamp. The table below details the monitor values for the array, the units of the monitor value, the type of the monitor value, the vector size of the monitor value, the
Sampler
to which each belongs, an indication as to whether existing code can be leveraged for the KFPA Manager, a monitor rate for the sampling, and a description of the monitor value.
Table of Monitor Values
Monitor Value |
Unit |
Type |
Vector Size |
Sampler Name |
Unique to KFPA? |
Monitor Rate |
Description |
VdrainCtl |
Volts |
Float |
488 |
LNAbias |
|
TBD |
Control voltage for drain voltage for a single stage of LNA bias |
IdrainCtl |
Volts |
Float |
488 |
LNAbias |
|
TBD |
Control voltage for drain current for a single stage of LNA bias |
VgateCtl |
Volts |
Float |
488 |
LNAbias |
|
TBD |
Control voltage for gate voltage for a single stage of LNA bias |
VdrainCtl |
Volts |
Float |
61 |
noiseCalibration |
|
TBD |
Control voltage for drain voltage for a single stage of noise calibration |
IdrainCtl |
Volts |
Float |
61 |
noiseCalibration |
|
TBD |
Control voltage for drain current for a single stage of noise calibration |
VgateCtl |
Volts |
Float |
61 |
noiseCalibration |
|
TBD |
Control voltage for gate voltage for a single stage of noise calibration |
voltage TBD |
Volts |
Float |
1 |
downConverter |
|
TBD |
Voltage of down converter |
current TBD |
Amps |
Float |
1 |
downConverter |
|
TBD |
Current of down converter |
ampBiasMonitor |
None |
Integer |
1 |
downConverter |
|
TBD |
Monitor bits for amplifier bias |
bits TBD |
TBD |
TBD |
1 |
attenuatorCtrl |
|
TBD |
Control bits for attenuator |
loPower |
Volts |
Float |
61 |
downConverter |
|
TBD |
Module LO power |
LEDCtl |
None |
Enumeration [swOff, swOn] |
1 |
LNAbias |
|
TBD |
Control bit for LNA LED (on/off) |
LEDCurrent |
None |
Integer |
1 |
LNAbias |
|
TBD |
Control bit for LNA current |
pos5volts |
Volts |
Float |
1 |
powerSupply |
|
variable - set through control parameter (default 5 seconds) |
+5 volts |
neg5volts |
Volts |
Float |
1 |
powerSupply |
|
variable - set through control parameter (default 5 seconds) |
-5 volts |
pos15volts |
Volts |
Float |
1 |
powerSupply |
|
variable - set through control parameter (default 5 seconds) |
+15 volts |
neg15volts |
Volts |
Float |
1 |
powerSupply |
|
variable - set through control parameter (default 5 seconds) |
-15 volts |
pos28volts |
Volts |
Float |
1 |
powerSupply |
|
variable - set through control parameter (default 5 seconds) |
+28 volts |
D15KTemp |
Kelvin |
Float |
1 |
cryogenics |
|
variable - set through control parameter (default 2 seconds) |
Dewar 15K temperature |
D50KTemp |
Kelvin |
Float |
1 |
cryogenics |
|
variable - set through control parameter (default 2 seconds) |
Dewar 50K temperature |
D300KTemp |
Kelvin |
Float |
1 |
cryogenics |
|
variable - set through control parameter (default 2 seconds) |
Dewar 300K temperature |
ambientTemp |
Kelvin |
Float |
1 |
cryogenics |
|
variable - set through control parameter (default 2 seconds) |
Ambient temperature |
dewarVac |
Volts |
Float |
1 |
gregorian |
|
variable - set through control parameter (default 1 minute) |
Dewar vaccuum |
pumpVac |
Volts |
Float |
1 |
gregorian |
|
variable - set through control parameter (default 1 minute) |
Pump vaccuum |
vacIon |
Volts |
Float |
1 |
gregorian |
|
variable - set through control parameter (default 1 minute) |
Vac ion pump vacuum |
cryoCtl |
None |
Short |
1 |
gregorian |
|
variable - set through control parameter (default 1 minute) |
Cryogenics control readback |
xferSwCtl |
None |
Short |
1 |
gregorian |
|
variable - set through control parameter (default 1 minute) |
Transfer switch control readback |
ampPwrCtl |
None |
Short |
1 |
gregorian |
|
variable - set through control parameter (default 1 minute) |
Cryogenics amplifier power control readback |
IFfilterCtl |
None |
Short |
1 |
gregorian |
|
variable - set through control parameter (default 1 minute) |
IF filter control readback |
cryoStatus |
None |
Short |
1 |
gregorian |
|
variable - set through control parameter (default 1 minute) |
Cryogenics status register monitor |
switchStatus |
None |
Short |
1 |
gregorian |
|
variable - set through control parameter (default 1 minute) |
Transfer and noise switch register monitor |
stages TBD |
Volts |
Float |
1 |
cryoAmpBias |
|
variable - set through control parameter (default 1 minute) |
Cryogenic amplifier stages |
stages TBD |
Volts |
Float |
1 |
cryoAmpLED |
|
variable - set through control parameter (default 1 minute) |
Cryogenic amplifier stages |
bits TBD |
None |
Integer |
1 |
cryoStatusBits |
|
variable - set through control parameter (default 1 minute) |
Cryogenic control word bit values |
fields TBD |
Volts |
Float |
1 |
noiseSource |
|
variable - set through control parameter (default 1 minute) |
Diode voltages for noise source |
bits TBD |
None |
Integer |
1 |
switchStatusBits |
|
variable - set through control parameter (default 1 minute) |
Calibration control word bit values |
Control
Overview
Each individual scan parameter is referenced by an object of the class
DataDescriptor
which contains a complete description of the value including name, explanation, data type, size, units, and array count (if a vector). These
DataDescriptors
allow more functionality to be handled by the base classes than otherwise would be possible. For example, the user programs do not have to be rewritten (or even recompiled) to handle new devices and their associated scan parameters since the reading, writing, communicating, and displaying of their values depends on code based on the
DataDescriptors
not on compiled data types. Also, the displays can be embellished with explanations and units since the information is readily available. (
Clark, 1998)
Individual control values are represented via a
Parameter
, each of which is potentially associated with three customized methods - a check method, a dependency method, and an activate method. The check method evaluates incoming values for each
Parameter
to ensure that they make sense. The dependency method takes the checked value and further evaluates it with regard to any dependency the
Parameter
has with other
Parameters
. The activate method does just that; the incoming value is transferred to the hardware. It is worth noting that although each
Parameter
can have all three of this methods, usually only check and activate methods are implemented.
The table below details each
Parameter
name associated with a control value, the units of the control value, the type of the control value, the vector size of the control value, the name of the control value, an indication as to whether existing code can be leveraged for the KFPA Manager, and a description of the monitor value.
Table of Control Values
Parameter Name |
Unit |
Type |
Vector Size |
Unique to KFPA? |
Description |
asap |
None |
Boolean |
1 |
|
controls whether the manager starts as soon as possible |
attenuatorCtl |
TBD |
TBD |
1 |
|
Control for downconverter attentuator |
calStateCntl |
None |
Integer |
1 |
|
Computed control parameter sent to device |
cryoAmpMonitorRate |
None |
Enumeration [values from 100ms to 1 hr] |
1 |
|
Sets the 'cryoAmpBias' and 'cryoAmpLED' sampler monitor interval |
cryoMonitorRate |
None |
Enumeration [values from 100ms to 1 hr] |
1 |
|
Sets the 'cryogenics' sampler monitor interval |
cryoState |
None |
Enumeration [refrigOff, refrigHeat, refrigCool, refrigPump] |
1 |
|
Controls the state of the cryogenics refrigerator |
cryoStatusMonitorRate |
None |
Enumeration [values from 100ms to 1 hr] |
1 |
|
Sets the 'cryoStatusBits' sampler monitor interval |
debugLevel |
None |
Enumeration |
1 |
|
controls the level of debug printing |
gregorianMonitorRate |
None |
Enumeration [values from 100ms to 1 hr] |
1 |
|
Sets the 'gregorian' sampler monitor interval |
IdrainCalCtl |
Volts |
Float |
61 |
|
Control for drain current per single stage of noise calibration |
IdrainLNACtl |
Volts |
Float |
488 |
|
Control for drain current per single stage of LNA bias |
LEDCtl |
None |
Enumeration [swOff, swOn] |
1 |
|
On/off control of LED of LNA bias |
nextScanNumber |
None |
Integer |
1 |
|
1:N |
noiseSourceMonitorRate |
None |
Enumeration [values from 100ms to 1 hr] |
1 |
|
Sets the 'noiseSource' sampler monitor interval |
projectId |
None |
Char(16) |
1 |
|
project identifier string < 16 char |
recipientNumber |
None |
Integer |
1 |
|
number of clients of Manager |
requestedStartTime |
TimeStamp |
TimeStamp |
1 |
|
target start timme of next scan if asap flag is clear |
requestedStopTime |
TimeStamp |
TimeStamp |
1 |
|
target stop time of next scan |
scanId |
None |
Char(32) |
1 |
|
scan identifier string < 32 char |
scanLength |
TimeStamp |
Integer |
1 |
|
expected duration of next scan |
scanNumber |
None |
Integer |
1 |
|
1:N |
source |
None |
Char(32) |
1 |
|
source identifier string < 32 char |
startTime |
TimeStamp |
Integer |
1 |
|
expected start time of the next scan |
state |
None |
Enumeration [Off, Standby, Ready, Activating, Committed, Running, Stopping, Aborting, NotInService] |
1 |
|
current operational state of Manager |
status |
None |
Enumeration [clear, Info, Notice, Warning, Error, Fault, Fatal] |
1 |
|
summarizes the severity of the Message levels |
supplyMonitorRate |
None |
Enumeration [values from 100ms to 1 hr] |
1 |
|
Sets the 'powerSupply' sampler monitor interval |
switchStatusMonitorRate |
None |
Enumeration [values from 100ms to 1 hr] |
1 |
|
Sets the 'switchStatusBits' sampler monitor interval |
VdrainCalCtl |
Volts |
Float |
61 |
|
Control for drain voltage per single stage of noise calibration |
VdrainLNACtl |
Volts |
Float |
488 |
|
Control for drain voltage per single stage of LNA bias |
VgateCalCtl |
Volts |
Float |
61 |
|
Control for gate voltage per single stage of noise calibration |
VgateLNACtl |
Volts |
Float |
488 |
|
Control for gate voltage per single stage of LNA bias |
Data
The K-band Focal Plane Array Manager will not produce its own engineering FITS files. By the convention established with all other receivers, the receiver calibration engineering FITS files produced during a scan (i.e. the data interface) are generated by a different preexisting
Manager
, called the
Measurements Manager
. We envision that each pixel of the KFPA will have its own calibration entry in the receiver calibration database (currently in MySQL format). It is unclear at this time whether the
Measurements Manager
or receiver calibration database schema will require changes as a result of the introduction of the KFPA.
Messaging
Overview
In the GBT M&C system, each message is assigned a severity level (i.e., information, notice, warning, error, fault, or fatal). The base
Manager
class computes a status based on its most severe message currently active.
Managers
with a status of
error or higher prevent observing and indicate serious issues with the M&C system. The control hierarchy of
Managers
that make up the control system recursively passes these summary statuses up the hierarchy so that the status of each device and subsystem reflects the most severe level of all of its messages. From this it becomes trivial to create a display for indicating statuses for the entire system. (
Clark, 1998). In Ygor, messages are encapsulated by the
Message
class.
Messages Generated by Control Parameters
A
Manager's
scan parameters can generate two possible errors: one is the result of user input (illegal value) and the other is the result of failures in digital control interfaces (activate fault). The methods to check and activate scan parameter values are written for specific parameters in the derived
Manager
, e.g. the K-band Focal Plane Array
Manager
, but are called in the base
Manager
class. The base
Manager
class uses the return value of the scan parameter virtual methods to generate and report the appropriate messages for all parameters. (
Clark, 1998)
For each control
Parameter
for the KFPA, we will need valid input ranges from the design engineers. We can integrate those ranges into the respective check methods for each
Parameter
so that illegal input will be automatically flagged in the GBT operator's message window using
Messages
generated in the
Manager
base class; this is accomplished via a return value from the check method for a
Parameter
.
Failures in Digital Interfaces
For each control
Parameter
for the KFPA, we will check to ensure that the validated commanded value is properly set within the hardware. If a failure should occur, the failure will automatically flagged in the GBT operator's message window using
Messages
generated in the
Manager
base class; this is accomplished via a return value from the activate method for the
Parameter
.
Messages Generated from Sampled Values (i.e. Monitor Points)
Unlike control parameters, a
Manager
has no built-in
Messages
for monitored values. This means that for the K-band Focal Plane Array, we will need guidance from the design engineers in order to determine which monitor points need to be checked within the
Manager
, what criteria should be used to generate/clear the message, and the message attributes (e.g. message level, text, etc.).
Some of the pre-existing
Messages
that the KFPA will have (because it utilizes the same hardware for cryogenics, etc. as other GBT receivers) are shown in the table below. The messages/alarms are listed in ascending severity level. Any messages with a level of
error or higher prevent observing.
Level |
Text |
Info |
Debug Monitor window open failure. |
Notice |
Receiver cryogenics not in COOL mode. |
Notice |
The Cryo Refrigerator is under LOCAL control. |
Warning |
MCB Read Error. |
Warning |
MCB Write Error. |
Warning |
The Cal Control is under LOCAL control. |
Warning |
Check receiver refrigerator temperature. |
Warning |
Check receiver power supplies. |
Warning |
Check receiver dewar vacuum. |
Warning |
Check LO power level. |
Fatal |
Monitor semaphore error. |
References