Release Date: Oct 6, 2011
Generic Release Name: BP12
Public Release Name: Non-sidereal Observing - first version release BP12
General Description: This release contains non-sidereal tracking and hot spot drift guiding
This release cannot be used on the telescope due to fatal software problems. See BP13
Telescope Operator Overview Information
The sound control in the LSSGUI has been improved. There is now a queue for sounds, so the GUI performance will not suffer if many sounds are requested rapidly. The queue can be cleared and its length is displayed. A sound event can be replayed by double clicking the event in either window.
The BP11 MCSPU executable will not work with BP12.
The BP11 LBC control program will not work with BP12.
Support Astronomer Overview Information
The IRTC now supports two cameras. See help on commands SetCamera and ShowCamera. The default camera is IRTC2 (the one we've always had on the telescope) except for client 'IRC1' where IRTC1 is the default. The list of possible client names is now irc, IRC, IRC1, IRC2, IRCL, and IRCR.
The PSF can now perform mode 1 pointing adjustments using monocular range balancing. There is a control button on the PSFGUI arbitrator form to enable/disable this feature. The default is disabled.
The TCS now supports the acquisition of non-sidereal targets via the NSIGUI or the IRC software. It is envisioned the observers will use the NSIGUI until the instrument support software can be modified to accommodate this new functionality.
The Details
Specific Tests that need to be performed with the Telescope
Update to include sequence number on mount polynomials.
Networks
none.
PLCs
Shutter door ladder logic program modified to reflect the work done to the outboard latch stations over the summer shutdown.
TCS Subsystems and GUIs, and significant configuration files
tcs.conf
PCS support - Modified the tcs.conf file by adding the EPHEM_DIR variable. This variable defines the location for the ASCII ephemeris file which is retrieved from JPL Horizons in support of non-sidereal targets.
Clean up main and add try/catch around addSource. Issue event and exit if configuration file is missing.
Rename IIF_C.hpp to IIF_C.h.
Allow skip collimation for 'small' Offsets for side 'both' in binocular mode.
Use class methods for serializing in Position, Offset, and Hotspot classes, and remove method 'AssemblePositionOptionalXML'
Support user-defined top-level XML tag when serializing Position class.
First cut at supporting non-sidereal tracking data in the IIF. A new class NonSidereal has been created. It is defined analogous to Position, Offset, and Hotspot, and is optional in a Preset.
Do not check for offSource immediately after a failed Offset or RunAO; instead wait for onSource to become true once. This prevents a failed Offset/RunAO from causing a canceled Preset if the telescope stays offSource after the command fails (IssueTrak 3436).
Do not create all the IIF commands when the IIF object is instantiated. The old behavior was causing the IIF to run out of file descriptors when there were many ICE proxies established since each one has an IIF object. The new behavior means a command object is created whenever it is needed, and then deleted when the command finishes (just like all the other subsystems) (IssueTrak 3398).
Add UpdateNonSiderealTarget command.
Treat offsets in Presets with very small values(< 5e-10 rad) as no offset.
Reject Presets that have both non-sidereal and offset specified.
Cancel a Preset if thin shell is not ready when it should be (IssueTrak 3435).
Make the ICE proxy name available to all commands to allow for future special handling for some proxies.
Add support for a 'Preset non-sidereal override'. Non-sidereal information can now be stored in the IIF (sent with the IRC for example) which will be used in a subsequent Preset command from another instrument. This is to support non-sidereal tracking before instruments can directly send non-sidereal requests in their Presets.
Add sounds to Preset command done events (different sounds for complete, warning, failed).
Add sounds to preset canceled events.
Allow asynchronous Presets to change sidereality if BinocularControl CLEARPRESET has been issued. Otherwise asynchronous Presets must be the same type of sidereality.
Add data from GetRotatorTrajectory to the ICE result object.
Change 'unsigned int' to 'size_t' for string size/length variables for 64 bit compatibility.
Add handle_critical() for telemetry R14.
Do not resume AO if the AO offset fails in OffsetPointing, instead fall back to AGW guiding/active optics if possible. This is to support an offset outside the W stage patrol field in the same way we do for AGw guiding.
Toggle guiding/active optics on/off if the AO loop is opened/closed after it has been successfully started to support AO engineering tests.
Allow small numerical slop when comparing NonSidereal objects
Use complete Nonsidereal object when checking left=right non-sidereal targets in Preset.
Allow LINC to use the GetTrajectory command.
Change RunAO command to take a new enum operation type instead of a boolean to support additional flexibility for AO engineering (IssueTrak 3538).
Do not prevent a monocular asynchronous non-sidereal Preset.
Add reflective memory variables so instruments have access to both the requested Preset mode (S_PresetMode) and the effective mode (S_EffectiveMode) (IssueTraks 3351 and 3350).
Allow guide and active mode for non-sidereal Presets.
Do not cancel operating Presets with Cancel Sync Presets button (IssueTrak 3608). Add command cancel to cancel operating Presets.
Synchronize GetRotatorTrajectory with both Preset and Offset so the PCS will always have new data. This allows the LBC to issue GetRotatorTrajectory without having to know if the PCS has the new target/position yet. (IssueTrak 3595).
IIFGUI Version 3.8
Remove Version and standby displays; put the versions in the 'About' box.
Reorganize main and add try/catch around addSource().
Slightly compact the main window.
Support display of and clearing the new 'Preset non-sidereal override' state.
Show more complete AO status: Off, RIP, Open, Closed.
Use violet color to indicate Preset mode when the effective and requested modes are not the same.
Display PCS achieved RA and DEC instead of target data.
Add displays for BinocularControl requests (IssueTrak 3608).
Improve sound support by adding a separate thread with a queue to allow sound to 'stack up' without delaying the GUI display. A new GUI button clears the sound queue to avoid screaming and swearing if an hour's worth of sounds get queued.
Sounds can be re-played by double clicking on an event in either window.
The MCS GUIs have been changed a lot. The main GUI has been reduced in size by half. It now has a 'set encoder' button and an on-source display. Under normal conditions the T.O. should be able to do everything necessary to bring up the AZ & EL axes by using just this GUI.
The azimuth and elevation sub-GUIs have had new status information added including motor torques, plus new sub-GUIs showing error status bits.
Time-to-limit displays have been added to Azimuth and rotator GUIs. 'ON_SOURCE' has been added to the rotator GUIs.
Obsolete and non-functional status information has been removed from the Power status GUI and HBS-system GUI.
The Enclosure sub-GUI now shows the enabled/disabled status of the bogies and allows the operator to change that status. The Encl_Folw_Tel signal has been added to the display.
Tool-tips in general have been corrected and expanded.
The mcs/sound/ directory has 44 new sound files (used in events by MCSPU) and each foo.wav sound file has a corresponding foo.txt file which contains the text that was used to generate the foo.wav file.
Support for left rear rotator has been added to the MCSGUI.
The MCSPU has had Left Rear Bent Gregorian rotator added to it.
Some bugs have been fixed (IT #3651, 3643, 6309.).
The MCSPU now monitors the rpc call rates from TCS and logs when they change significantly. This should help diagnose any communication problems with the TCS that may occur in the future.
Logging has been upgraded in general to help diagnose future problems.
Non-Sidereal Support - New Non-Sidereal Target support methods: no separation check is performed on the Binocular Preset for non-sidereal targets. The two sides of the telescope MUST preset to the same location with the same tracking rate. The telescope sides can be mis-aligned via an offset.
setDifferentialRateTarget() - The target is defined by the quintuple: time, RA, Dec, differential tracking rate in RA, and differential tracking rate in Dec.
setNSEphemerisTarget() - The target is defined by an ephemeris file acquired from JPL Horizons. Each ephemeris line in the file consists of (at least): time, RA, Dec, differential tracking rate in RA, and differential tracking rate in Dec. The quintuple used for defining the target is based upon linear interpolation of the data bracketing the current time. Extrapolation is performed implicitly by the pointing kernel routines based upon the time.
updateDifferentialRateTarget() - Allows the observer to update the differential tracking rates by providing new absolute rate values (versus delta values). When this is done, the time is set to "current time" and the RA and Dec are set to the "achieved" values. Note this routine is always applied to BOTH sides of the telescope in Binocular mode; the two telescope sides MUST have the same tracking rates.
Modified the Offset routines to accommodate non-sidereal targets.
New internal and external data dictionary items have been created to support non-sidereal targets. The public (external) data dictionary items are, where S = L or R:
S_NSRATRKRate: Differential tracking rate for RA, double, arcseconds/hour
S_NSDECTRKRate: Differential tracking rate for Dec, double, arcseconds/hour
S_NSTRKEpoch: Differential tracking reference epoch, double, MJD UTC (days)
S_NSTRKEquinox: Tracking equinox, string
S_NSTRKFrame: Tracking coordinate frame, string
When computing the requested separation of non-sidereal targets on an offset to determine if the binocular pointing constraint has been violated, the instantaneous non-sidereal object position is computed manually. The new position is based upon the Preset RA and Dec, the elapsed time since the Preset, and incorporates the differential tracking rates.
Modified the creation of the default guide star for non-sidereal targets for LBC and MAT only. When the fundamental non-sidereal object routine, setDifferentialRateTarget(), is executed, a non-sidereal target is created. For LBC and MAT only, a sidereal guide star is also created at the RA/Dec of the non-sidereal target at time "now". This is done particularly in this manner as a non-sidereal target can be specified with an epoch for the past or future; the pointing kernel uses the differential tracking rates to compute the RA/Dec for time NOW for the target.
General
Re-instated code to enforce an error if the separation of each telescope side is greater than the specified error limit. This supplements the current warning code.
Replaced doSeparationCheckError with copointingLimitError which can be invoked by the commands: SetEquatorialTarget, OffsetTelescopeEquatorial, and OffsetTelescopeDETXY.
Modified the PCS diagnostic file - Added the SX and DX rotator sequence numbers and the MJDUTC for better cross-checking against other diagnostic sources. Also, added back the velocity and acceleration coefficients for the rotator polynomials.
Added handle_critical(string) implementation to the callback which inherits from ambassador class for Telemetry Release R14.
Created new variables for Telemetry in the "telescope" telemeter
targetNSRARate double radians/day
targetNSDECRate double radians/day
Added try/catch around the "addSource" lines which access the subsystem ".conf" files such that an event is now generated when a configuration file cannot be accessed; the PCS will exit.
pcs.conf
Added INIT_DIR_PCS to pcs.conf for the planetary ephemeris files and cleaned up arrangement for downtown vs testing vs mountain variables. The downtown and testing variables are explicitly annotated. Use of this functionality is for testing only.
PCSGUI
For the mount/rotators form, read the MJD from the mount polynomials which are always generated; formerly used the rotator polynomials which are only generated if the authorized instrument is using a telescope rotator.
Modified the MJD display on the mount/rotators form to have a format of f13.7. Also, changed the label to MJDTAI.
Clean up main and add try/catch around addSource. Issue event and exit if configuration file is missing.
Do not perform shell offload at Preset time; just zero Z2, Z3, and Z4 on the secondary. IssueTrak 3397. This is patched in BP11 June 9.
Protect the collimation temperature compensation calculation from really bad temperature values: issue an event and skip the calculation. IssueTrak 3346.
Add handle_critical() for telemetry R14.
Put adaptive secondary values in psf.conf for the left side.
Implement mode 1 pointing adjustments using (optional) monocular range balancing and add the control flag to arbitrator telemetry.
Calculate the range balanced desiredTip and desiredTilt for mode 1, mode 3a, and mode 3b pointing adjustments, and send them to the PCS.
Return a warning from adjustPointing() if a limit is reached.
PSFGUI Version 4.35
Clean up main and add try/catch around addSource().
Add 'Stop all GUIs' button to stop all GUIs on the entire cluster. The list of GUIs to stop is kept in tcs.conf.
Use WEXITSTATUS macro to get return status from system() calls.
Add a short (1.5 sec) delay after stopping a subsystem and then issue a network 'trigger' so all networkservers will update. This is to help keep the display updated correctly if a subsystem doesn't stop.
The ArgumentList class was modified to not use the DOM parser (xerces), and to extend type checking to more simple data types. This last change makes it incompatible with previous builds.
Replace 'unsigned int' with 'size_t' when dealing with sizes of STL container objects for 64 bit compatibility. The ArgumentList class was not modified.
datadictionary - reflective memory and event support
Replace 'unsigned int' with 'size_t' when dealing with sizes of STL container objects for 64 bit compatibility.
eventhandler - event handling
Replace 'unsigned int' with 'size_t' when dealing with sizes of STL container objects for 64 bit compatibility.
networkconfig - subsystem management
Remove WXGUI, PRESETGUI, TEL, and SDB from the process list checked with 'netconfig ps'. Change MAT to MATGUI in same list.
Replace 'unsigned int' with 'size_t' when dealing with sizes of STL container objects for 64 bit compatibility.
Remove method getTelemetryIP() since it is no longer needed.
Add method trigger() to generate a network 'trigger' packet.
reflectivememory - global shared memory
Do not return error for gshmmconfig -z (used by TCSGUI 'start all') if the error is ENOENT (shared memory segment does not exist); instead go ahead and create it. This will eliminate the 'file does not exist' error from TCSGUI 'start all' the first time after a machine has been rebooted.
Replace 'unsigned int' with 'size_t' when dealing with sizes of STL container objects for 64 bit compatibility.
Check if recvfrom() (in GshmServer.cpp) returns too early with a timeout, and print a message to SysLog if so. This is to help understand shared memory loop timeouts.
rpc - communication protocol
If the connect call in RPC.cpp fails with EADDRNOTAVAIL, loop on wait and retry since this error means all ports are currently bound to sockets in TIME_WAIT. This may not happen on the mountain, but it does in stress testing.
setvalue - reflective memory access
Replace 'unsigned int' with 'size_t' when dealing with sizes of STL container objects for 64 bit compatibility.
Change the camera IP address to 192.168.18.171. Patched in Version 2.4
Remove whitespace in fields parsed by the ListString class. This allows one to use whitespace to align fields in several irc input files.
First cut at supporting non-sidereal tracking. New commands SetNonSidereal and ClearNonSidereal set and clear a NonSidereal object passed to the PresetTelescope command.
Add UpdateNonSiderealTarget command.
Support 'Preset non-sidereal override' by augmenting the UpdateNonSiderealTarget command to support sending non-sidereal information to be saved in the IIF.
Version 3.0
Add support for two cameras (IRTC1, IRTC2) in IRS, IRC, and IRTCGUI. Associate the camera number with the proxy name. Use the IRTCGUI invocation name as its proxy. New IRC commands SetCamera and ShowCamera. Create new symbolic links IRC1, IRC2, IRTC1GUI, IRTC2GUI as camera specific executables
Improve IRC help formatting.
Change unsigned int to size_t where appropriate.
Support new operation type flag for RunAO.
Add ICE remove() command.
Add NSIGUI as new executable for generating non-sidereal target data.
Add NSQuery command for command line access to the non-sidereal query engine.