Index

The CBI Register List.

Most of the CBI hardware that is accessible to the control system is reached via the VME bus. Each card on the VME bus has registers for control and monitoring. Some of these registers are read-only. Others write-only and a few are read-write. The values written to write-only registers are also recorded in a software based array of shadow registers. This allows all registers, readable or not, to be monitored by the scanner task. In addition to VME hardware registers, some CBI attributes are recorded only in memory. These are made to look like registers and made available for monitoring via virtual boards. The list of all currently defined registers is given below.

The registers of each board are listed below using the following columns:

 board.name[dimension]   permissions  Description
The permissions are combinations of:

Index of boards


The archive frame description board.

 frame.nsnap         rwai  The number of averaged 25.6us samples
                           covered by each frame. This is a
                           combination of the hardware integration
                           time and the archive file integration
                           time. The monitor stream interface
                           automatically divides integrated register
                           values by this number to yield averages.
                           As a special case, nsnap is not itself
                           treated in this way (otherwise it would
                           always appear to be unity to monitor
                           clients).
 frame.record        r-a-  The scanner record number of the last
                           record in an archived frame.
 frame.mjd           r-a-  The Modified Julian Day number of the last
                           record an archived frame (UTC).
 frame.utc[2]        r-a-  The UTC expressed as a Modified Julian Date.
                           The first element of the register records
                           the Modified Julian Day number, and the
                           second records the number of milli-seconds
                           into the day.
 frame.lst           r-a-  The local sidereal time corresponding to
                           local.mjd,local.utc (milli-seconds).
 frame.features      r-au  This contains the union of up to 32 arbitrary
                           feature-designation bits received from the
                           control program during the period covered
                           by the containing archive frame.

The System Timing Generator board.

VME address = 0x000100 in A16 address space.
 tgen.psmod[13]      -wa-  Phase switch modulation function (0..31).
 tgen.psdmod[13]     -wa-  Phase switch demodulator function (0..31).
 tgen.interval       -wa-  Integration time 0 - 15.
                           Given a value T, the physical integration
                           time used by the system timing generator is
                           8.192e-4 x 2^T seconds. This sets the
                           interval between data-strobe interrupts.
                           Some of the integration accumulators will
                           overflow for T>11. So the maximum practical
                           hardware integration time is approximately
                           1.68 seconds.
 tgen.inhibit        -wa-  Inhibit integration if 1, allow integration
                           if 0. This enables or disables the
                           date-strobe interrupt that tells the
                           real-time scanner task to take a new
                           snapshot of the CBI registers.
 tgen.reload         -wa-  Reload chips.
                           Any write to this register will prompt all
                           of the CBI FPGA's to reload their programs.
                           Beware that this will result in the control
                           tasks that handle the corresponding boards
                           having an incosistent view of how the
                           boards are currently configured, so to
                           reconfigure them use the unflag command on
                           each effected board.

The channelizer digital-I/O interface board.

VME address = 0x000600 in A16 address space.
 chzr.id             r-a-  The manufacturer's board id = 0x2000.
 chzr.csr            rwa-  The board control/status register. Its 32
                           bits are assigned as follows (0-31).
                            0-7   -  Ignored. These bits remain low
                                     regardless of what is written to
                                     them.
                            8-10  -  Are interpreted as a 3-bit
                                     integer that sets the
                                     debounce delay applied to the
                                     digital inputs. This can either
                                     be zero, which turns off the
                                     debounce delay, or a number N
                                     between 1 and 7 which sets the
                                     delay to 2**(7+N) microseconds.
                            11-12 -  These bits are recorded in the
                                     register and and can be read back
                                     but they are otherwise ignored by
                                     the board.
                            13    -  This bit must be set to 1 to
                                     allow signals from the input
                                     connector to appear in the input
                                     register.
                            14    -  This bit must be set to 1 to
                                     allow the value of the output
                                     register to be latched to the
                                     output conntector.
                            15    -  This controls the fail-led on the
                                     face-plate of the board. The LED
                                     is turned on by setting this bit
                                     to 0.
 chzr.input[4]       rwa-  4 single byte digital input registers.
                           Note that negative logic is used, so
                           a high signal on the input connector is
                           represented by a low bit in the input
                           register. If we consider the 4 bytes to
                           form a contiguous 32 bit big-endian
                           integer, the bits are assigned as follows:

                            0-9    -  The lock bits of each of the
                                      synthesizers of the 10 bands.
                            10     -  The 100MHz reference synthesizer
                                      lock bit.

 chzr.output[4]      rwa-  4 single byte digital output registers.
                           Note that negative logic is used, so
                           after computing a bit pattern using the
                           documentation below, be sure to take its
                           complement before writing to the register.
                           If we consider the 4 bytes to form a
                           contiguous 32 bit big-endian integer, the
                           bits are assigned as follows:

                              0-3   -  The antenna to address (0-12).
                                       This reflects both the data
                                       available in the input register,
                                       and the intepretation of the
                                       following output bits.
                              4-7   -  The band to address (0..9). This
                                       reflects both the data available
                                       in the input register, and the
                                       intepretation of the following
                                       output bits.
                              8-12  -  The attenuation to insert in
                                       the signal path of the
                                       addressed antenna/band (0-32 db).
                              13    -  Turn the IF of the addressed
                                       antenna/band off=1,on=0.
                              14    -  Spare output to the channelizer.
                              15    -  Strobe. The attenuation values
                                       in bits 0-4 and the IF on/off
                                       state in bit 5 will be ignored
                                       by the channelizer until this
                                       bit changes from low to high.
                              16    -  Turn off=1,on=0 all IFs.
                              17    -  Reload PLA's.

The noise-generator digital-I/O interface board.

VME address = 0x000500 in A16 address space.
 ngen.id             r-a-  The manufacturer's board id = 0x2000.
 ngen.csr            rwa-  The board control/status register. Its 32
                           bits are assigned as follows (0-31).
                            0-7   -  Ignored. These bits remain low
                                     regardless of what is written to
                                     them.
                            8-10  -  Are interpreted as a 3-bit
                                     integer that sets the
                                     debounce delay applied to the
                                     digital inputs. This can either
                                     be zero, which turns off the
                                     debounce delay, or a number N
                                     between 1 and 7 which sets the
                                     delay to 2**(7+N) microseconds.
                            11-12 -  These bits are recorded in the
                                     register and and can be read back
                                     but they are otherwise ignored by
                                     the board.
                            13    -  This bit must be set to 1 to
                                     allow signals from the input
                                     connector to appear in the input
                                     register.
                            14    -  This bit must be set to 1 to
                                     allow the value of the output
                                     register to be latched to the
                                     output conntector.
                            15    -  This controls the fail-led on the
                                     face-plate of the board. The LED
                                     is turned on by setting this bit
                                     to 0.
 ngen.input[4]       rwa-  4 single byte digital input registers.
                           These are currently unused.
 ngen.output[4]      rwa-  4 single byte digital output registers.
                           Note that negative logic is used, so
                           after computing a bit pattern using the
                           documentation below, be sure to take its
                           complement before writing to the register.
                           If we consider the 4 bytes to form a
                           contiguous 32 bit big-endian integer, the
                           bits are assigned as follows:

                              0-12  -  Each bit controls a switch
                                       that connects noise to the
                                       corresponding receiver.
                              13    -  Bit 13 controls the master
                                       switch which sits between the
                                       noise generator and the
                                       individual receiver switches.
                              14    -  Bit 14 switches the noise
                                       generator amplifiers on=0 and
                                       off=1.

The digital I/O board that controls the reciever simulation box.

VME address = 0x000400 in A16 address space.
 rxsim.id            r-a-  The manufacturer's board id = 0x2000.
 rxsim.csr           rwa-  The board control/status register. Its 32
                           bits are assigned as follows (0-31).
                            0-7   -  Ignored. These bits remain low
                                     regardless of what is written to
                                     them.
                            8-10  -  Are interpreted as a 3-bit
                                     integer that sets the
                                     debounce delay applied to the
                                     digital inputs. This can either
                                     be zero, which turns off the
                                     debounce delay, or a number N
                                     between 1 and 7 which sets the
                                     delay to 2**(7+N) microseconds.
                            11-12 -  These bits are recorded in the
                                     register and and can be read back
                                     but they are otherwise ignored by
                                     the board.
                            13    -  This bit must be set to 1 to
                                     allow signals from the input
                                     connector to appear in the input
                                     register.
                            14    -  This bit must be set to 1 to
                                     allow the value of the output
                                     register to be latched to the
                                     output conntector.
                            15    -  This controls the fail-led on the
                                     face-plate of the board. The LED
                                     is turned on by setting this bit
                                     to 0.
 rxsim.input[4]      rwa-  4 single byte digital input registers.
                           These are currently unused.
 rxsim.output[4]     rwa-  4 single-byte digital output registers.
                           Note that negative logic is used, so
                           after computing a bit pattern using the
                           documentation below, be sure to take its
                           complement before writing to the register.
                           If we consider the 4 bytes to form a
                           contiguous 32 bit big-endian integer, the
                           bits are assigned as follows:

                              0-12  -  Each bit enables/disables the
                                       noise generator of the
                                       corresponding receiver. Set to
                                       the bits to 1 to enable.
                              13    -  This bit enables/disables the
                                       signal generator that injects
                                       a fake sky signal into all of
                                       the correlator receiver
                                       inputs. Set to 1 to enable.
                              14-26 -  Each bit enables/disables the
                                       insertion of a 90 degree phase
                                       shift in the signal path of the
                                       corresponding receiver. Bit 14
                                       corresponds to receiver 0, etc..

Receiver boards rx0 - rx12.

VME address of rxN = 0x800000 + 0x10000 x N in A24 address space.

Readonly registers:

 
 rx0.ps_enc          r-a-  Phase shifter encoder position (0..1023).
 rx0.half_acq        r-a-  Phase shifter acquired half step
                           (0=acquired,1=busy) 
 rx0.full_acq        r-a-  Phase shifter acquired full step
                           (0=acquired,1=busy) 
 rx0.spare_in[2]     r-a-  Spare digital inputs
 rx0.t[4]            r-ai  Cryostat temperature.
 rx0.atemp[2]        r-ai  Ambient temperature.
 rx0.he              r-ai  Helium pressure
 rx0.vac             r-ai  Vaccuum
 rx0.htr[3]          r-ai  Heater voltage
 rx0.aux[2]          r-ai  Spare analog inputs.
 rx0.led[2]          r-ai  Receiver LED currents.
 rx0.mix[2]          r-ai  Mixer current
 rx0.if_bias[2]      r-ai  IF amplifier bias voltages.
 rx0.lo_if_lev       r-ai  Local oscillator IF level
 rx0.lo_v_gunn       r-ai  Gunn oscillator bias voltage
 rx0.lo_v_var        r-ai  Varactor voltage
 rx0.lo_lock         r-ai  Integrated LO lock bit.
 rx0.lo_ref          r-ai  Integrated LO ref level bit.
 rx0.vd[8]           r-ai  HEMT drain voltage {polarization[2] x
                           stage[4]}.
 rx0.id[8]           r-ai  HEMT drain current {polarization[2] x
                           stage[4]}.
 rx0.vg[8]           r-ai  HEMT gate voltage {polarization[2] x
                           stage[4]}.
Write-only registers:
 rx0.htr_req[3]      -wa-  Set heater temperatures.
                           htr_req[0]   => Set the temperature of the
                            first of the cryostat heaters. The
                            calibration factors are currently unknown,
                            but are probably non-linear. The actual
                            value that is achieved can be read back,
                            in the same units, from rx0.t[0].
                           htr_req[1-2] => Set the temperatures of two
                            currently unassigned room-temperature
                            heaters.  The values entered set the
                            target sensor-output voltages in the
                            corresponding temperature-control feedback
                            loops. These voltages go linearly from 0v
                            at htr_req[1-2]=0, to 10v at
                            htr_req[1-2]=4096. The actual values that
                            are achieved can be read back, in the same
                            units, from rx0.atemp[0-1].
 
 rx0.htr_on[3]       -wa-  Switch heater on (1) or off (0).
                           htr_on[0]   => Enable/disable cryostat heater 0.
                           htr_on[1-2] => Enable/disable ambient heater 0-1.
                            Note that a given heater won't actually
                            switch on until the temperature that it
                            controls falls below its requested
                            temperature. 
                           Since none of these heaters are currently
                           used, they should be left switched off for
                           now.

 rx0.pshifter        -wa-  Set phase-shifter position.
                           This is a 10-bit register. The
                           phase-shifter motor turns through 360
                           degrees for a change in register value from
                           0 to 1023. The FPGA that controls the
                           phase-shifter motor employs the shortest
                           route to the requested position, so the
                           longest drive is actually 180 degrees.
                           Drive times are on the order of a second or
                           two.

 rx0.ps_move         -wa-  Enable phase-shifter motor (on=1, off=0).
                           After acquiring the desired pshifter
                           position, the phase-shifter motor can be
                           turned off to conserve power and reduce
                           interference. Don't do this if you are
                           using half-step mode. The coils need to be
                           kept energized to maintain a half-step
                           position.

 rx0.ps_half_step    -wa-  Request phase-shifter motor half steps (1), or
                          full steps (0).
                           The FPGA uses full steps to get to within
                           one step of the requested pshifter value,
                           then if half-step mode has been requested
                           and half a step will get it closer to the
                           requested position, it moves the motor half
                           a step by energizing two coils. Note that
                           this takes more power and precludes turning
                           off the motor after acquisition.

 rx0.lo_if_off       -wa-  Switch phase-lock IF off (1), or on (0).
                           This refers to enabling or disabling the
                           intermediate frequency stage of the
                           phase-locked loop oscillator. This should
                           normally be left switched on.

 rx0.lo_swp_off      -wa-  Switch LO sweep off (1), or on (0).
                           This refers to the sawtooth that is used to
                           (re-)acquire phase lock. It should normally
                           be left switched on.

 rx0.lo_osc_on       -wa-  Switch local oscillator on (1), or off (0).
                           This is the gunn-diode local oscillator of
                           the receiver. It starts out switched off,
                           but should be switched on before observing.

 rx0.lo_quad         -wa-  Phase shift the local oscillator by an
                           integer multiple of 90 degrees, using one
                           of the following numbers:
                            0 - No phase shift.
                            1 - 90 degrees phase shift.
                            2 - 180 degrees phase shift.
                            3 - 270 degrees phase shift.

 rx0.spare_out[2]    -wa-  Spare digital outputs.

Current assignments of uncommitted receiver registers

rx* .atemp[0] .atemp[1] .he .aux[0] .aux[1] .spare_in[0] .spare_in[1] .spare_out[0] .spare_out[1]
0 Fridge PSU - 3/supply 0&2 12GHz level 10MHz level 12GHz lock - - -
1 Corr crate - 4/supply 1&11 Tilt meter 2 x-tilt (1V=10") - - - pmac_reset- -
2 UPS crate - 3/return 0&2 az1_mtr_i (7.5V=100A) az2_mtr_i - - - -
3 rx3 cryostat - 5/supply 3&5 Tilt meter 1 temp (1V=10C) tilt meter 2 temp (1V=10C) - - - -
4 noise cal amps - 7/supply 4 - - - - video[0] video[1]
5 rxcard crate - 5/return 3&5 dk_tilt_x (1V=17") dk_tilt_y (1V=17") - - - -
6 chzr - 1/supply 6&9 - - - - - -
7 rx7 LO block - 2/supply 7&8 - - - - - -
8 pwr meter head - 2/return 7&8 - - - - - -
9 - - 1/return 6&9 - - - - - -
10 - - 6/return 10&12 - - - - - -
11 - - 4/return 1&11 - - - - - -
12 - - 6/supply 10&12 - - - - - -

Correlator boards corr0 - corr9.

VME address of corrN = 0x900000 + 0x10000 x N in A24 address space.

Readonly registers:

 corr0.vis[156]      r-ai  Visibilities, arranged as:
                             Baseline: 00-01..00-12  01-02..01-12 02-03..02-12
                                       re,im  re,im  re,im  re,im re,im  re,im
 corr0.test1[4]      r-ai  Accumulator test registers.
 corr0.tp[13]        r-ai  Total power for antennas 0..12. Note that
                           as the total power increases, the
                           corresponding value in tp[] becomes more
                           negative.
 corr0.test2[3]      r-ai  Accumulator test registers.
Software registers:
 corr0.tpzero[13]    rwai  The zero offsets to subtract from the
                           corr0.tp[] values. This register is
                           selectively updated when users invoke
                           the tpzero command.
 corr0.attn[13]      rwa-  The attenuations (0-31db) that are
                           currently being inserted into each reciever
                           signal path by the channelizer. This
                           register is selectively initialized via
                           invocations to the user "attenuate"
                           and "tp" commands.
 corr0.state[13]     rwa-  The on/off state of the IF amplifiers that
                           connect each receiver output to the
                           corresponding channel of the correlator. The
                           IF amplifier of receiver N is on if
                           state[N] is non-zero (receiver numbers
                           start at 0).

The GPS time-code-reader board.

VME address = 0x200 in A16 address space.
 gps.intset[4]       rw--  Interrupt assignment registers.
 gps.intvec[4]       rw--  Interrupt vector registers.
 gps.freeze          rw--  Reading this register freezes the time
                           readout registers.
 gps.release         rw--  Reading this register unfreezes the time
                           readout registers.
 gps.time_reg0       rw--  The first of the BCD time-readout
                           registers.
 gps.time_regs[3]    rw--  The rest of the BCD time-readout
                           registers.
 gps.config[4]       rw--  The main configuration registers of the
                           board.
 gps.period[2]       rw--  The period of the generator output pulses.
 gps.preset[7]       rw--  The BCD time-preset registers. These are
                           currently unused because the time is
                           provided externally by a GPS receiver.
 gps.start[8]        rw--  The BCD time at which to output a start
                           pulse. This is used to send a
                           synchronization pulse to the PMAC.
 gps.stop[8]         rw--  The BCD time at which to output a stop
                           pulse. This is currently unused.

The PMAC motion-controller VME card.

VME address of pmac.dpram_init = 0x700000 in A24 address space.

VME address of dual-port ram = 0x710000 in A24 address space.

  pmac.dpram_init        -w--  On startup the dual-port RAM start address
                               is written to this location.
PMAC <-> CPU synchronization flags.
  pmac.new_position      rw--  The CPU writes 1 to this flag register to
                               inform the PMAC when it has placed a new
                               position and mode in the following
                               registers. The PMAC clears it when it is
                               ready for a new position.
  pmac.position_fault    rw--  PMAC sets this flag register when it looses
                               sync. The CPU is then expected to to
                               resyncronize it.
  pmac.host_read         rw--  The CPU sets this to freeze the values of
                               the monitor registers until the CPU clears
                               it again.
  pmac.pmac_write        rw--  The PMAC sets this when it is writing to
                               the monitor registers.
Control registers.
  pmac.new_mode          rw--  The next operation that the PMAC should do,
                               from:
                                 0: track - Be at the target az,el,dk
                                            at the next 1-second tick
                                 1: slew  - Move to the target az,el,dk
                                            as fast as possible, then
                                            halt.
                                 2: halt  - Stop the telescope.
                                 3: sync  - Wait for a programmed pulse
                                            from the time-code-reader
                                            then enter track mode and
                                            aim to reach the target
                                            az,el,dk a second later
                               These values are enumerated in cbiregs.h.
  pmac.new_az            rw--  The target azimuth (encoder counts).
  pmac.new_el            rw--  The target elevation (encoder counts).
  pmac.new_dk            rw--  The target deck angle (encoder counts).
  pmac.new_az_rate       rw--  The target azimuth rate (milli-counts/sec).
  pmac.new_el_rate       rw--  The target elevation rate (milli-counts/sec).
  pmac.new_dk_rate       rw--  The target deck rate (milli-counts/sec).
Archived status registers.
  pmac.el_temp           rwa-  The temperature of the elevation motor
                               (degrees C x 100).
  pmac.az_temp[2]        rwa-  The temperatures of the two azimuth motors.
                               (degrees C x 100).
  pmac.el_current        rwa-  The current in the elevation motor (A x 100).
  pmac.el_enc_rot[2]     rwa-  Two additional terms to add to the elevation
                               encoder readings to correct for:
                                [0] - The rotation of the elevation
                                      encoder body due to deformation
                                      of the deck bearing.
                                [1] - The rotation of the elevation shaft
                                      due to changes in the direction
                                      of the load vector.
                               These corrections are measured by tilt
                               meters and reported in multiples of
                               0.01 arcseconds.
  pmac.el_torque_bias    rwa-  The torque bias of the elevation motor
                               (A x 100). 
  pmac.az2_torque_bias   rwa-  The torque bias of the second azimuth motor
                               (A x 100).
  pmac.x_tilt            rwa-  Tilt meter (arcsec x 100)
  pmac.y_tilt            rwa-  Tilt meter (arcsec x 100).
  pmac.az_mean_error     rwa-  The mean azimuth following error (counts x 100).
  pmac.az_rms_error      rwa-  The RMS azimuth following error (counts x 100).
  pmac.el_mean_error     rwa-  The mean elevation following error
                               (counts x 100).
  pmac.el_rms_error      rwa-  The RMS elevation following error (counts x 100).
  pmac.dk_mean_error     rwa-  The mean deck following error (counts x 100).
  pmac.dk_rms_error      rwa-  The RMS deck following error (counts x 100).
  pmac.pvt_move_time     rwa-  The actual duration that it took to do the
                               last 1-second move (us).
  pmac.move_time_err     rwa-  The accumulated move-duration error (us).
  pmac.dk_reset_ctr      rwa-  The number of deck resets since last
                               pmac reset.
  pmac.dk_slew_rate      rwa-  The actual deck slew rate as a
                               percentage of the maximum.
  pmac.spare_0           rwa-  A spare monitor register.
  pmac.spare_1           rwa-  Another spare monitor register.
  az1_phases[2]          rwa-  Azimuth motor 1 commanded currents of
                               phases A and B.
  az2_phases[2]          rwa-  Azimuth motor 2 commanded currents of
                               phases A and B.
  el_phases[2]           rwa-  Elevation commanded currents of phases
                               A and B.
  servo_outputs[4]       rwa-  The servo outputs of motors azimuth 1,
                               azimuth 2, elevation and deck. The
			       servo outputs are expressed in DAC
			       counts, and converted by the cal file,
                               to the amplitudes of the motor currents.
  pmac.drive_status[2]   rwa-  A bit-map of status flags. The following is
                               reproduced verbatim from Steve's documentation:
                               drive_status[0]:
                                 0   aena1 (az1_amp).
                                 1   -lim1
                                 2   +lim1
                                 3   fault1
                                 4   fatal_following_error1
                                 5   az_overlap_swith
                                 6   az1_amp_over_current
                                 7   az1_motor_over_current
                                 8   fault3 (az2_amp)
                                 9   az2_amp_over_current
                                 10  az2_motor_over_temp
                                 11  az_lap_at_startup
                                 12  aena5 (el_amp)
                                 13  -lim5
                                 14  +lim5
                                 15  fault5
                                 16  fatal_following_error5
                                 17  el_overlap_switch
                                 18  el_amp_over_current
                                 19  el_motor_over_temp
                                 20  aena7
                                 21  -lim8
                                 22  +lim8
                                 23  fault8
                                 24  fatal_following_error8
                                 25  dk_overlap_switch
                                 26  dk_amp_reset-
                                 27  dk_lap_at_startup
                                 28  timebase_phaselock-
                                 29  spare
                                 30  spare
                                 31  coord_system1_prog_running
                               drive_status[1]:
                                 0   az +ve end limit set
                                 1   az -ve end limit set
                                 2   az1 motor open loop
                                 3   az2 motor open loop
                                 4   el +ve end limit set
                                 5   el -ve end limit set
                                 6   el motor open loop
                                 7   dk +ve end limit set
                                 8   dk -ve end limit set
                                 9   dk motor open loop
                                 10  coord_system1_run_time_error
                                 11  Acquired
                                 12  Deck slew okay.
                                 13  Azimuth acquired.
                                 14  Elevation acquired.
                                 15  Deck acquired.
                                 16  Azimuth unstable.
                                 17  Elevation unstable.
                                 18  Deck unstable.
  pmac.az                rwa-  The azimuth-encoder reading (counts).
  pmac.el                rwa-  The elevation-encoder reading (counts).
                               Actually now this is zenith angle + 90 degrees.
  pmac.dk                rwa-  The deck-encoder reading (counts).
  pmac.plc_status        rwa-  Bit 1 indicates plc disabled.
  pmac.el_motor_enc      rwa-  The encoder readout from the elevation motor.
  pmac.az_motor_enc[2]   rwa-  The encoder readouts from the two azimuth motors.
  pmac.az_pos            rwa-  The position of the azimuth axis in encoder
                               counts. Unlike pmac.az this extends
                               more than a turn because of the wrap.
  pmac.el_pos            rwa-  Because there is no elevation wrap,
                               this is identical to pmac.el.
  pmac.dk_pos            rwa-  The position of the deck axis in encoder
                               counts. Unlike pmac.dk this extends
                               more than a turn because of the wrap.

The Tracker task status board.

  tracker.tick_utc[2]    rwa-  The UTC of the GPS 1-second tick at
                               which the information below was
                               recorded, expressed in MJD days and
                               milliseconds (rounded to the
                               second). This is the time associated
                               with positions read back from the PMAC,
                               but not the target time of the pointing
                               data.
  tracker.lacking        rwa-  A bitwise union of PointingPar enumerators.
                               Each enumerated bit represents a pointing model
                               parameter that has not been provided yet. (see
                               cbiregs.h for the contents of the
                               PointingPar enumeration).
  tracker.utc[2]         rwa-  The UTC date and time as MJD days and
                               milli-seconds.
  tracker.lst            rwa-  The local apparent sidereal time
                               (milliseconds).
  tracker.ut1utc         rwa-  The value of UT1-UTC (milliseconds).
  tracker.eqneqx         rwa-  The value of the equation of the
                               equinoxes (milli-seconds of sidereal time).
  tracker.mode           rwa-  The tracking mode:
                                 0: track - The recorded data refer to
                                            the next 1-second position
                                            of a track.
                                 1: slew  - The recorded data refer to
                                            the target of a slew.
                                 2: halt  - The telescope is halted.
                                 3: sync  - The pmac and the tracker
                                            are being synchronized.
                               These values are enumerated by the
                               PmacMode type in cbiregs.h.
  tracker.deck_mode      rwa-  The deck-axis tracking mode, selected from 
                               the DeckMode enumeration defined in
                               cbiregs.h.
                                 0: track - The deck angle is tracking
                                            the parallactic angle.
                                 1: zero  - The deck angle is fixed at
                                            the current deck-axis offset.
  tracker.refraction[3]  rwa-  The A and B refraction terms received
                               from the weather task (micro-arcseconds),
                               and the currently resulting offset in
                               elevation (milli-arcseconds).
  tracker.encoder_off[3] rwa-  The encoder angles {azimuth,elevation,deck},
                               at the topocentric zeroes of azimuth,
                               elevation and deck angle (milli-arcseconds).
  tracker.encoder_mul[3] rwa-  The number of encoder counts per turn
                               {azimuth,elevation,deck}.
  tracker.encoder_min[3] rwa-  The minimum allowed encoder counts
                               {azimuth,elevation,deck}.
  tracker.encoder_max[3] rwa-  The maximum allowed encoder counts
                               {azimuth,elevation,deck}.
  tracker.tilts[3]       rwa-  The axis tilts {hour-angle, latitude,
                               elevation} (milli-arcseconds).
  tracker.flexure        rwa-  The gravitational flexure of the telescope
                               (milli-arcseconds per cosine of elevation).
  tracker.axis           rwa-  The collimation and refraction models
                               being used. Its values are enumerated
                               by the PointingMode enumerator in
                               cbiregs.h. Thus 0 denotes optical
                               pointing, and 1 denotes radio pointing.
  tracker.collimation[2] rwa-  The collimation tilt {magnitude, direction}
                               (milli-arcseconds).
  tracker.site[3]        rwa-  The location of the site {latitude (mas),
                               longitude (mas), altitude (mm)}.
  tracker.source[3]      rwa-  The source name, encoded as 3 four-byte
                               string segments (see regmap.h for
                               unpack_int_string()). The source name is
                               guaranteed to be terminated by a 0 byte.
                               The max source name length is thus 11. This
                               could change, so the max source name length
                               is enumerated in cbiregs.h as SRC_LEN.
  tracker.equat_geoc[3]  rwa-  The geocentric apparent {RA (mas), Dec
                               (mas), Distance (micro-AU)}. This is
                               where the source would appear to be if
                               viewed from the center of the Earth.
  tracker.equat_off[2]   rwa-  User-supplied temporary equatorial offsets
                               {RA,Dec} (milli-arcsec). These are
                               added just before the conversion to
                               horizon coordinates.
  tracker.horiz_geoc[3]  rwa-  The geocentric apparent {Az,El,Pa}
                               (milli-arcseconds). These are the
                               horizon coordinates at which the source
                               would be seen from the center of the
                               Earth if the telescope could be moved
                               there without rotating it.
  tracker.horiz_topo[3]  rwa-  The topocentric apparent {Az,El,Pa}
                               (milli-arcseconds). These are the
                               horizon based coordinates that the
                               source would be seen from at the site,
                               after taking account of horizontal
                               parallax, atmospheric refraction and
                               diurnal aberration.
  tracker.horiz_mount[3] rwa-  The mount {Az,El,Pa} (milli-arcseconds).
                               These are the horizon coordinates at
                               which one has to point the telescope to
                               see the source, after taking account of
                               telescope flexure, the tilt of the
                               azimuth axis, the tilt of the elevation
                               axis, collimation errors, and the
                               addition of user specified sky-based
                               and telescope-based tracking offsets.
  tracker.horiz_off[3]   rwa-  User-supplied offsets in
                               {Azimuth,Elevation,Deck-angle}
                               (milli-arcsec).
  tracker.sky_xy_off[2]  rwa-  User-supplied sky-based {x,y} tracking
                               offsets (milli-arcsec), where x and y
                               lie along perpendicular great circles
                               that cross at the un-offset pointing
                               center. The y offset increases towards
                               the zenith, and the x offset increases
                               clockwise when looking down from above
                               the telescope.
  tracker.counts[3]      rwa-  The demanded encoder positions in
                               encoder counts {Azimuth,Elevation,Deck}.
  tracker.rates[3]       rwa-  The demanded move rates in
                               milli-counts/second {Azimuth,Elevation,Deck}.
  tracker.actual[3]      rwa-  The positions of the azimuth, elevation and
                               deck axes that were read from the
                               pmac on the most recent 1-second tick.
                               (milli-arcseconds).
  tracker.expected[3]    rwa-  The expected positions of the azimuth,
                               elevation and deck axes at the most
                               recent 1-second tick, for comparison
                               with tracker.actual. (milli-arcseconds)
  tracker.errors[3]      rwa-  The residuals after subtracting the
                               elements of tracker.expected[] from
                               tracker.actual[]. (milli-arcseconds).
  tracker.state          rwa-  The current tracking status,
                               recorded as one of the TrackingStatus
                               enumerators defined in cbiregs.h.
                                0 - LACKING
                                    At least one critical tracker
                                    configuration parameter hasn't
                                    been received from the control
                                    program.
                                1 - TIME ERROR
                                    The last time received from the
                                    GPS time-code reader was invalid.
                                2 - UPDATING
                                    The tracker is responding to a
                                    change in conditions such as a new
                                    command or configuration parameter
                                    received from the control program,
                                    or an error condition such as a
                                    loss of time sync.
                                3 - HALTED
                                    The telescope is currently halted.
                                4 - SLEWING
                                    The telescope is currently slewing.
                                5 - TRACKING
                                    The telescope is currently
                                    tracking a source.
                                6 - TOO LOW
                                    The telescope is trying to track a
                                    source that is below the lower
                                    elevation limit of the telescope,
                                    so the elevation is being held at
                                    this limit.
                                7 - TOO HIGH
                                    The telescope is trying to track a
                                    source that is above the upper
                                    elevation limit of the telescope,
                                    so the elevation is being held at
                                    this limit.
  tracker.off_source     rwau  This register takes two values, 0 and
                               1. It is set to 1 if the telescope was
                               known to be off source by the tracker
                               at any time during the archived
                               frame.
  tracker.x_tilt         rwa-  The x tilt of the azimuth platform is
                               recorded here when the tilt meter is
                               enabled (mas). Otherwise it is zero.
  tracker.y_tilt         rwa-  The y tilt of the azimuth platform is
                               recorded here when the tilt meter is
                               enabled (mas). Otherwise it is zero.
  tracker.rotcor         rwa-  The sum of the measured rotations of
                               the elevation axis and the elevation
                               encoder body (mas). This is zero when
                               this correction isn't enabled.
  tracker.corflags       rwa-  The bitwise union of cbiregs.h::CorFlag
                               correction flags.
  tracker.camera         rwa-  The number of the active optical
                               pointing camera.
  tracker.rotcor_zero[2] rwa-  The current zero points of the two
                               components of the rotcor correction (mas).
  tracker.track_mode     rwa-  What type of tracking to perform in
                               track mode. The following values are
                               enumerated in cbiregs.h:TrackMode.
                                 0 - DRIFT SCANNING
                                      The Right Ascension offset is
                                      steadily increased at the
                                      sidereal rate. For a sidereal
                                      source, the telescope essentially
                                      stops moving, apart from making
                                      tilt and refraction corrections.
                                 1 - TRACKING SOURCE
                                      The telescope follows the source
                                      as it moves with the sky.
  tracker.nsample        rwa-  The number of encoder fast-readout
                               samples in the readout arrays.
  tracker.ts_array       rwa-  The timestamp of readout 'n' is given
                               by subtracting 1 second from the
                               tracker.tick_utc, and adding
                               ts_array[n] microseconds. Only  the
                               first 'nsample' elements are
                               significant.
  tracker.az_array       rwa-  The 'nsample' azimuth-axis encoder
                               values, offset by one turn.
  tracker.el_array       rwa-  The 'nsample' elevation-axis encoder
                               values. This encoder actually measures
                               zenith-angle + 90 degrees.
  tracker.dk_array       rwa-  The 'nsample' deck-axis encoder
                               values, offset by one turn.

The virtual board that describes the optical-pointing camera.

  camera.angle           rwa-  The deck angle at which the sky
                               appears to be upright on the TV
                               display (milli-arcseconds).

The virtual weather station board.

  weather.utc[2]         rwa-  The UTC date and time on the weather station
                               clock expressed as a Modified Julian Date.
                               The first element of the register records
                               the Modified Julian Day number, and the
                               second records the number of milli-seconds
                               into the day.
  weather.int_temp       rwa-  The internal temperature of the weather
                               station (mC).
  weather.air_temp       rwa-  The air temperature around the weather
                               station (mC).
  weather.battery        rwa-  The weather-station battery voltage (mv).
  weather.humidity       rwa-  The relative humidity (0..1) x 1000.
  weather.wind_speed     rwa-  The wind speed measured by the weather
                               station (mm/s).
  weather.wind_dir       rwa-  The azimuth from which the wind is blowing
                               (milli-arcseconds).
  weather.pressure       rwa-  The atmospheric pressure (ub).

The register map of the VME/GPIB interface card.

VME base address = 0x300 in A16 address space.
  gpib.dir               r---  The data input register.
  gpib.cdor              w---  The command/data output register.
  gpib.isr1              r---  Interrupt status register 1
  gpib.imr1              w---  Interrupt mask register 1
  gpib.isr2              r---  Interrupt status register 2
  gpib.imr2              w---  Interrupt mask register 2
  gpib.spsr              r---  Serial poll status register
  gpib.spmr              w---  Serial poll mode register
  gpib.adsr              r---  Address status register
  gpib.admr              w---  Address mode register
  gpib.cptr              r---  Command pass-through register
  gpib.auxmr             w---  Auxiliary mode register
  gpib.adr0              r---  Address register 0
  gpib.adr               w---  Address register
  gpib.adr1              r---  Address register 1
  gpib.eosr              w---  End-of-string register

The virtual board that represents the noise-calibration system.

  noise.zero_utc[2]      rwa-  The UTC when the power meter was last
                               zeroed. This is expressed as a Modified
                               Julian Date. The day number portion is
                               stored in the first element, and the
                               time-of-day portion is recorded in
                               milliseconds in the second.
  noise.zero_life        rwa-  The requested number seconds between zero
                               calibrations.
  noise.power_utc[2]     rwa-  The UTC when the noise power was last read
                               from the power meter. This is expressed as
                               a Modified Julian Date. The day number
                               portion is stored in the first element, and
                               the time-of-day portion is recorded in
                               milliseconds in the second.
  noise.power_life       rwa-  The requested number seconds between power
                               readings.
  noise.power[2]         rwa-  The power readings that were read at the time
                               recorded in the power_utc[] register, in
                               units of milli-dbm.

The virtual board of the serial-I/O module monitor task.

  monitor.utc[2]          rwa-  The UTC when the last readout of the
                                serial I/O modules was started.
  monitor.interval        rwa-  The number of seconds between readouts.
  monitor.usable2         rwa-  1 if serial I/O module 2 is
                                functioning, 0 if not.
  monitor.module2[8]      rwa-  The last values read out from module 2.
                                [0] - gen1_engine_temp
                                [1] - gen1_fuel_temp
                                [2..7] - Unused.
  monitor.usable3         rwa-  1 if serial I/O module 3 is
                                functioning, 0 if not.
  monitor.module3[8]      rwa-  The last values read out from module 3.
                                [0] - gen2_X_voltage
                                [1] - gen2_Y_voltage
                                [2] - gen2_Z_voltage
                                [3] - gen2_charge_24V
                                [4..6] - Unused.
                                [7] - gen2_bat_voltage
  monitor.usable4         rwa-  1 if serial I/O module 4 is
                                functioning, 0 if not.
  monitor.module4[8]      rwa-  The last values read out from module 4.
                                [0] - gen1_engine_temp
                                [1] - gen1_fuel_temp
                                [2..7] - Unused.
  monitor.usable5         rwa-  1 if serial I/O module 5 is
                                functioning, 0 if not.
  monitor.module5[8]      rwa-  The last values read out from module 5.
                                [0] - gen1_X_voltage
                                [1] - gen1_Y_voltage
                                [2] - gen1_Z_voltage
                                [3] - gen1_charge_24V
                                [4..6] - Unused.
                                [7] - gen1_bat_voltage
  monitor.usable6         rwa-  1 if serial I/O module 6 is
                                functioning, 0 if not.
  monitor.module6[8]      rwa-  The last values read out from module 6.
                                [0] - chiller0_water_temp
                                [1] - chiller0_compressor_temp
                                [2] - chiller1_water_temp
                                [3] - chiller1_compressor_temp
                                [4] - chiller2_water_temp
                                [5] - chiller2_compressor_temp
                                [6] - chiller_container_air_temp
                                [7] - Unused.
  monitor.usable7         rwa-  1 if serial I/O module 7 is
                                functioning, 0 if not.
  monitor.module7[8]      rwa-  The last values read out from module 7.
                                [0] - chiller0_water_level (1V=OK, 0V=Fault)
                                [1] - chiller0_fault (1V=OK, 0V=Fault)
                                [2] - chiller1_water_level
                                [3] - chiller1_fault
                                [4] - chiller2_water_level
                                [5] - chiller2_fault
                                [6-7] - Unused.

Martin Shepherd (28-Jun-2000)