IMACS Software Documentation


Location of this document: http://instrumentation.obs.carnegiescience.edu/Software/IMACS/mechanics.html


Important note about the encoders:
Most encoders (except for the principal- and SH-guiders) are turned off when the stage is not moving because they emit light during operation. Their values are stored in temporary files and re-stored just before a stage is about to move. This requires extreme care when running IMACS from a differenct computer than usual (eg. laptop vs. 'llama'). It is absolutely necessary to initialize all devices after you switch control to a another computer.


Mechanics Control

The IMACS mechanical software suite is divided into three groups of programs:



Low Level Control

This group of programs allows the most detailed level of control for each components of IMACS. Each program runs independently of the other and has no "knowledge" of any interference between mechanical parts of any other component. They are designed for testing and determination of parameters (eg. motor speed, acceleration, filter- or mask-positions) to be stored in files and used by the mid- and high-level GUIs. WARNING: Do not startup any two or more programs in this group simultaneously. To start a second program please wait until the first is already running. Running two (or more) programs at the same time is ok, but all synchronization has to be done by the user.

rotest

Syntax: rotest [-h pixels] [-p port]
-h : font height in pixels (eg. '-h 18' uses a height of 18)
-p : port number the GUI is reading commands from

Note: This GUI controls IMACS' internal rotator that is NOT used at the Baade telescope. It was used for testing purposes at SBS and is not functional. It is included here for reference only.

1st group
File: [menu] :
Configure : apply configuration file (rotator.ini)
Help : open web-browser with the IMACS documentation
Exit : close GUI
Options : [menu] :
LogFile : edit name of the logfile in dialog-box
Unit Pulses : display position/move/speeds in 'pulses'
Unit Degrees : display position/move/speed in 'degress'

2nd group
Edit-Windows:
"Position" : enter current position (rotator has no encoder, this DEFINES the position!)
"Move[d]" : next rotator move [degrees]
"S[d/m]" : startup speed [degrees/minute]
"M[d/m]" : maximum speed [degrees/minute] (should be below 76)
"A[d/m/s] : acceleration/decelerations [degrees/minute/second]

Popup-Menus:
"HoldC" : holding current

Buttons:
"REV-" : start reverse (negative) motion (amount defined by "Move[d]")
"FOR+" : start forward (positive) motion (amount defined by "Move[d]")
"STOP" : emergency stop
"WarnLight" : manual control of green blinking light on top of electronics rack (Note: removed after installation at LCO)

Warning: When a motion exceeds the limits (currently -120, +340) of the utility wrap a dialog box will appear and inform you of a possible catastrophe. If you are absolutely sure that there is no problem, you may press [Ignore] and the motion will be executed.

Warning: Do not turn off the holding-current unless you are sure that the structure is balanced.

When started with the '-p' option the GUI will listen for commands on the port number given. This allows scripts to move the rotator.

TCP/IP commands:
version
returns version string: "version=1.00"
move 5
rotate structure +5 degrees; returns (after move) "rot= 5.0"
To read the current position send move 0.
speed 12
set rotator speed [deg/minute]; returns "speed= 12.0"

fstest

Syntax: fstest [-h pixels] [{1,2}]
-h : font height in pixels (eg. '-h 18' uses a height of 18)
1 : LongCamera filter server (default)
2 : ShortCamera filter server

1st group
Drop-Down Menus:
"File-Configure" : apply configuration files (fs?_select.ini,fs?_insert.ini)
"File-Help" : open web-browser with the IMACS documentation
"File-Exit" : close GUI

"Options-LogFile" : edit name of the logfile in dialog-box

2nd group
Edit-Windows:
"Encoder" : change current encoder value
"Pulses" : next tray move [pulses]
"S[hz]" : startup speed [pulses/second]
"M[hz]" : maximum speed [pulses/second]
"A[hz/s] : acceleration/decelerations [pulses/second/second]
Popup-Menus:
"HoldC" : holding current manual control
"Brake" : brake manual control
Buttons:
"REV-" : start reverse (negative) motion (amount defined by "Pulses")
"FOR+" : start forward (positive) motion (amount defined by "Pulses")
"STOP" : emergency stop
"HOME" : start home-search routine (initializes encoder)
"Status" : read encoder and limit/position sensors

3rd group
Popup-Menus:
"Filter" : insert/retract filter mechanism
LEDs:
Retract: large (left) and small (right) air-cylinder sensor
Extend: large (left) and small (right) air-cylinder sensor
Note: The filter-positions (encoder values) are stored in $IMACSINI/fs1_epos.ini and $IMACSINI/fs2_epos.ini


mstest

Syntax: mstest [-h pixels]
-h : font height in pixels (eg. '-h 18' uses a height of 18)

1st group
Drop-Down Menus:
"File-Configure" : apply configuration files (mask_select.ini,mask_insert.ini,mask_latch.ini)
"File-Help" : open web-browser with the IMACS documentation
"File-Exit" : close GUI

"Options-LogFile" : edit name of the logfile in dialog-box

2nd group
Edit-Windows:
"Encoder" : change current encoder value
"Pulses" : next tray move [pulses]
"S[hz]" : startup speed [pulses/second]
"M[hz]" : maximum speed [pulses/second]
"A[hz/s] : acceleration/decelerations [pulses/second/second]
Popup-Menus:
"HoldC" : holding current manual control
"Brake" : brake manual control
Buttons:
"REV-" : start reverse (negative) motion (amount defined by "Pulses")
"FOR+" : start forward (positive) motion (amount defined by "Pulses")
"STOP" : emergency stop
"HOME" : start home-search routine (initializes encoder)
"Status" : read encoder and limit/position sensors

3rd group
Popup-Menus:
"Latched" : latched (yes) or un-latched (no) the mask in the tray
"Mask" : push mask into (in) or out of beam (out)
"Clamped" : clamp (yes) or un-clamp (no) mask in focus position

4th group
LEDs:
"PSensor" : 8 position sensors 'in-tray', 1 sensor 'in-beam'
Note: The mask-positions (encoder values) are stored in $IMACSINI/mask_epos.ini.
Here are the values as of May/2004:
slot1=+150250 
slot2=+100200
slot3=+50000
slot4=+300
slot5=-50500
slot6=-99750
slot7=-124500
slot8=-149750


dstest

Syntax: dstest [-h pixels]
-h : font height in pixels (eg. '-h 18' uses a height of 18)

1st group
Drop-Down Menus:
"File-Configure" : apply configuration files (dsw_select.ini,dsc_insert.ini)
"File-Help" : open web-browser with the IMACS documentation
"File-Exit" : close GUI

"Options-LogFile" : edit name of the logfile in dialog-box

2nd group
Edit-Windows:
"Encoder" : change current encoder value
"Pulses" : next wheel move [pulses]
"S[hz]" : startup speed [pulses/second]
"M[hz]" : maximum speed [pulses/second]
"A[hz/s] : acceleration/decelerations [pulses/second/second]
Popup-Menus:
"HoldC" : holding current manual control
"Brake" : brake manual control
Buttons:
"REV-" : start reverse (negative) motion (amount defined by "Pulses")
"FOR+" : start forward (positive) motion (amount defined by "Pulses")
"STOP" : emergency stop
"HOME" : start home-search routine (initializes encoder)
"Status" : read encoder and limit/position sensors
LEDs:
"InWheel" : sensor on each wheel position (#1..#6)

3rd group
Popup-Menus:
"Wheel-Brake" : open/close disperser wheel "bicycle" brake.

4th group
Popup-Menus:
"Clamp" : pulls mechanism (grism,grating,mirror) off the wheel onto the 'matrix' ring.
Note: The disperser-positions (encoder values) are stored in $IMACSINI/dsw_epos.ini.
Here are the values as of Feb/4/2004:
slot1=+77945    ; grating-A (checked Apr/22)
slot2=+63575    ; mirror (adjusted Feb/04/04)
slot3=+49230    ; grating-B (adjusted Feb/04/04)
slot4=+34885    ; grism-1 (adjusted Feb/04/04)
slot5=+20535    ; grating-C (adjusted Feb/04/04)
slot6=-1625     ; grism-2 (adjusted Feb/04/04)
slot7=+9390     ; open


grtest

Syntax: grtest [-h pixels] [{A,B,C}] [{1,2,3,4}]
-h : font height in pixels (eg. '-h 18' uses a height of 18)
{A,B,C} : grating control channel ID (default=A)
{1,2,3,4} : grating mechanism ID (default=1)

1st group
Drop-Down Menus:
"File-Configure" : apply configuration files (gr?_select.ini)
"File-Help" : open web-browser with the IMACS documentation
"File-Exit" : close GUI

"Options-LogFile" : edit name of the logfile in dialog-box

2nd group
Edit-Windows:
"Encoder" : change current encoder value
"Pulses" : next grating-tilt move [pulses]
"S[hz]" : startup speed [pulses/second]
"M[hz]" : maximum speed [pulses/second]
"A[hz/s] : acceleration/decelerations [pulses/second/second]
Popup-Menus:
"HoldC" : holding current manual control
Buttons:
"REV-" : start reverse (negative) motion (amount defined by "Pulses")
"FOR+" : start forward (positive) motion (amount defined by "Pulses")
"STOP" : emergency stop
"HOME" : start home-search routine (initializes encoder)
"Status" : read encoder and position/limit sensors


dftest

Syntax: dftest [-h pixels] [-d {2,3}] [{1,2}]
-h : font height in pixels (eg. '-h 18' uses a height of 18)
-d : Mosaic2 or Mosaic3 dewar
1 : f/4 (LongCamera) detector focus (default)
2 : f/2 (ShortCamera) detector focus

The detector focus mechanisms for the Mosaic/2 and Mosaic/3 dewars have an absolute enocder (LVDT). They do not use the incremental encoder of the motor. Therefore the 'Encoder' edit window and the 'I+' and 'I-' buttons (search for index pulse) are disabled.

1st group
Drop-Down Menus:
"File-Configure" : apply configuration files (df1_select.ini,df2_select.ini)
"File-Help" : open web-browser with the IMACS documentation
"File-Exit" : close GUI

"Options-LogFile" : edit name of the logfile in dialog-box

2nd group
Edit-Windows:
"Encoder" : change current encoder value
"Pulses" : next focus motor move [pulses]
"S[hz]" : startup speed [pulses/second]
"M[hz]" : maximum speed [pulses/second]
"A[hz/s] : acceleration/decelerations [pulses/second/second]
Popup-Menus:
"HoldC" : holding current manual control
Buttons:
"REV-" : start reverse (negative) motion (amount defined by "Pulses")
"FOR+" : start forward (positive) motion (amount defined by "Pulses")
"STOP" : emergency stop
"I-" : search for index pulse (negative direction)
"I+" : search for index pulse (positive direction)
"Status" : read encoder and limit sensors


pgtest

Syntax: pgtest [-h pixels]
-h : font height in pixels (eg. '-h 18' uses a height of 18)

1st group
Drop-Down Menus:
"File-Configure" : apply configuration files (pgt_select.ini,pgf_insert.ini)
"File-Help" : open web-browser with the IMACS documentation
"File-Exit" : close GUI

"Options-LogFile" : edit name of the logfile in dialog-box

2nd group (theta motion)
Edit-Windows:
"Encoder" : change current encoder value
"Pulses" : next theta move [pulses]
"S[hz]" : startup speed [pulses/second]
"M[hz]" : maximum speed [pulses/second]
"A[hz/s] : acceleration/decelerations [pulses/second/second]
Popup-Menus:
"HoldC" : holding current manual control
"Brake" : brake manual control
Buttons:
"REV-" : start reverse (negative) motion (amount defined by "Pulses")
"FOR+" : start forward (positive) motion (amount defined by "Pulses")
"STOP" : emergency stop
"HOME" : start home-search routine (initializes encoder)
"Status" : read encoder and limit/position sensors

3rd group
Popup-Menus:
"Filter" : insert/retract filter


sgtest

Syntax: sgtest [-h pixels]
-h : font height in pixels (eg. '-h 18' uses a height of 18)

1st group
Drop-Down Menus:
"File-Configure" : apply configuration files (sgt_select.ini,sgr_select.ini,sgf_insert.ini,sgo_insert.ini)
"File-Help" : open web-browser with the IMACS documentation
"File-Exit" : close GUI

"Options-LogFile" : edit name of the logfile in dialog-box

2nd group (theta motion)
Edit-Windows:
"Encoder" : change current encoder value
"Pulses" : next theta move [pulses]
"S[hz]" : startup speed [pulses/second]
"M[hz]" : maximum speed [pulses/second]
"A[hz/s] : acceleration/decelerations [pulses/second/second]
Popup-Menus:
"HoldC" : holding current manual control
"Brake" : brake manual control
Buttons:
"REV-" : start reverse (negative) motion (amount defined by "Pulses")
"FOR+" : start forward (positive) motion (amount defined by "Pulses")
"STOP" : emergency stop
"HOME" : start home-search routine (initializes encoder)
"Status" : read encoder and limit/position sensors

3rd group (radial motion)
see theta motion above

4th group
Popup-Menus:
"Lens" : insert/retract SH-lens barrel
"Filter" : insert/retract filter


cgtest

Syntax: cgtest [-h pixels]
-h : font height in pixels (eg. '-h 18' uses a height of 18)

1st group
Drop-Down Menus:
"File-Configure" : apply configuration files (cgp_insert.ini,cgf_insert.ini,cgo_insert.ini)
"File-Help" : open web-browser with the IMACS documentation
"File-Exit" : close GUI

"Options-LogFile" : edit name of the logfile in dialog-box

2nd group (probe insert/retract)
Edit-Windows:
"Counter" : change current counter value (has no encoder)
"Pulses" : next probe move [pulses]
"S[hz]" : startup speed [pulses/second]
"M[hz]" : maximum speed [pulses/second]
"A[hz/s] : acceleration/decelerations [pulses/second/second]
Popup-Menus:
"HoldC" : holding current manual control
"Brake" : brake manual control
Buttons:
"REV-" : start reverse (negative) motion (amount defined by "Pulses")
"FOR+" : start forward (positive) motion (amount defined by "Pulses")
"STOP" : emergency stop
"HOME" : start home-search routine (resets counter)
"Status" : read encoder and limit/position sensors

3rd group
Popup-Menus:
"Lens" : insert/retract SH-lens barrel
"Filter" : insert/retract filter

Note: The Home-Search function utilizes the reverse limit switch as the HOME position.


pztest

Syntax: pztest [-h pixels] [-l {ser,tcp}] [{1,2}]
-h : font height in pixels (eg. '-h 18' uses a height of 18)
-l ser : use local serial ("com") port
-l tcp : use remote TCP/IP (Lantronix) terminal server (default)
1 : f/4 (LongCamera) position. Note: uses E515-controller protocol
2 : f/2 (ShortCamera) position. Note: uses E516-controller protocol

1st group
Drop-Down Menus:
"File-Configure" : configure controller
"File-Status" : read positions and voltages
"File-Help" : open web-browser with the IMACS documentation
"File-Exit" : close GUI

"Options-LogFile" : edit name of the logfile in dialog-box

2nd group
Edit-Windows:
"Voltage" : set voltage applied to piezo (servo-off mode)
"Position" : set position of piezo (servo-on mode)
Popup-Menus:
"Servo" : turn on/off servo-loop

Note: Unlike most other GUIs in this group a change in the "Position" or "Voltage" edit windows will be applied immediately and causes the piezo to move to a new position.


dctest

Note: L05 disabled as of 2008-01-15 (release 1.14)
Syntax: dctest [-h pixels] [-l {ser,tcp}]
-h : font height in pixels (eg. '-h 18' uses a height of 18)
-l ser : use local serial ("com") port
-l tcp : use remote TCP/IP (Lantronix) terminal server (default)

1st group
Drop-Down Menus:
"File-Configure" : configure controller and reset encoder
"File-Status" : read position of all 3 motors
"File-Help" : open web-browser with the IMACS documentation
"File-Exit" : close GUI

"Options-LogFile" : edit name of the logfile in dialog-box

2nd group
EditWindows, Buttons and LEDs:
"Position" Edit: displays current position and executes moves to new position (unit=micro-meter)
"1" : LED: negative limit-switch active (red)
"2" : LED: positive limit-switch active (red)
"curVel" : current velocity (output window only)
"3" : LED: motor moving (green)
"H-" : Button: search for index pulse (edge of reference marker) in neg. direction
"H+" : Button: search for index pulse (edge of reference marker) in pos. direction
"4" : LED: reference sensor active (green)
"5" : LED: index pulse found (green)
"maxVel" : Edit: max. velocity of motor motion (um/s)
"maxAcc" : Edit: max. acceleration (um/s^2)
"maxFEr" : Edit: max. following error (um)

Notes:

Home-search procedure:
For each motor follow these steps: (you may run motors simultaneously)

1. press H+
This will cause the motor to move "upward" (extend, away from detector) until one of three events:

2. press H-
This will cause the motor to move "downward" (retract, toward detector) until one of two events:

Troubleshooting:
When a motor becomes stuck, ie. does not respond to motions commanded by 'dctest' nor moves when the 'H+' (home) button is pressed, it appears that disconnecting and running the motors separately may help:


hptest

Syntax: hptest [-h pixels] [-p port] [{1,..,38}]
-h : font height in pixels (eg. '-h 18' uses a height of 18)
-p : listen on TCP/IP port
{1,..,38} : number of channels (1-38)
1-channel version: click on image to see the 38-channel version

1st group
Drop-Down Menus:
"File-Initiailize" : initialize HP data acquisition unit
"File-Help" : open web-browser with the IMACS documentation
"File-Exit" : close GUI

"Options-SmpTime" : change time between (automatic) updates
"Options-LogFile" : edit name of the logfile

2nd group
EditWindows:
"#" : edit channel number
Popup Menus:
"#" : assign data type {Temperature,Voltage,Current,Pressure}
This GUI reads the sensor values from the HP-Data-Acqusition-Unit. It automatically updates the current channel every 5 seconds and increments the current channel by one. The readings of each channel are written to the file /tmp/hptest%02d.dat.
When started with the '-p' option the GUI will listen for commands on the port number given. This allows scripts to read the sensors.
TCP/IP Commands:
version
returns version string: "version=0.92"
read 3
returns reading of channel 3, eg. "#3= 15.1"
This is the sensor list as of May/2004:
101-110      structure temperature #1-#10
121,122      coolant pressure in/out
201,202      structure temperature #11,#12
203,204      collimator temperaure #1,#2
205,206      f/4 (long) camera temperature #1,#2
207,208      f/2 (short) camera temperature #1,#2
209,210      coolant temperature in/out
221          air pressure
301          saddle-back temperature
302          electronics rack temperature
303          motor-controller 5 volt
304          motor-controller 24 volt
305          f/4 (long) science array 48 volt
306          f/4 (long) flexure array 48 volt
307          f/2 (short) science array 48 volt
308          f/2 (short) flexure array 48 volt
309          guider camera-1 48 volt
310          guider camera-2 48 volt
313          guider camera-3 48 volt
314          RS485-converter 24 volt
315          RS485-converter 12 volt
316          DOS-PC 5 volt
317          AC 120 volt
318          L05-controller 12 volt


hatest

Syntax: hatest [-h pixels]
-h : font height in pixels (eg. '-h 18' uses a height of 18)

1st group
Drop-Down Menu:
"File-Configure" : configure digital I/O port
"File-Help" : open web-browser with the IMACS documentation
"File-Exit" : close GUI

2nd group
Buttons:
"Close" : move hatch until closed
"Stop" : stop hatch movement
"Open" : move hatch until opened
Note: There is no feed-back (ie. limit-sensors) on the hatch. There are internal limit-switches inside the enclosed hatch mechanism, but they just stop the motion of the hatch curtain.


lptest

Syntax: lptest [-h pixels]
-h : font height in pixels (eg. '-h 18' uses a height of 18)

1st group
Drop-Down Menu:
"File-Configure" : configure digital I/O port
"File-Help" : open web-browser with the IMACS documentation
"File-Exit" : close GUI

2nd group
Buttons:
"Lamp" : toggle lamp on/off
Popup-Menus:
"Cont" : set continuum lamp level
Note: The continuum lamp is disconnected.


vgtest

Syntax: vgtest [-h pixels] [-p port] [{1,2}]
-h : font height in pixels (eg. '-h 18' uses a height of 18)
-p : TCP/IP port number
1 : LongCamera vacuum gauge (default)
2 : ShortCamera vacuum gauge

1st group
Drop-Down Menus:
"File-Reset" : re-initialize vacuum gauge
"File-Help" : open web-browser with the IMACS documentation
"File-Exit" : close GUI

"Options-SmpTime" : change time between (automatic) updates
"Options-LogFile" : edit name of the logfile

2nd group
Output Windows:
"ubar" : current pressure inside the dewar
This GUI reads the pressure measurements by the vacuum gauge connected to the IMACS dewar . It automatically updates the reading every 5 seconds. The pressure readings are written to the file /tmp/vgtest%d.dat.
When started with the '-p' option the GUI will listen for commands on the port number given. This allows scripts to read the the pressure.
TCP/IP commands:
version
returns version string: "version=1.00"
read
returns a string like "pressure[1]= 2.23" (unit=micro-bar)
init
initializes the vacuum gauge and returns a string like "init= 0"


hhtest

Syntax: hhtest [-h pixels] [-p port]
-h : font height in pixels (eg. '-h 18' uses a height of 18)
-p : port number the GUI is reading commands from.

1st group
Drop-Down Menus:
"File-Help" : open web-browser with the IMACS documentation
"File-Exit" : close GUI

"Options-SmpTime" : change time between (automatic) updates
"Options-LogFile" : edit name of the logfile

2nd group
Output Windows:
"X [mm]" : current position of probe 'X'
"Y [mm]" : current position of probe 'Y'
Buttons:
"Sample": read position of this probe.
This GUI reads the positions of the Heidenhain probes. It assumes that the sensor electronics is connect to the serial port (/dev/ttya for Solaris, /dev/ttyS0 for Linux). It automatically updates the positions every 5 seconds.
When started with the '-p' option the GUI will listen for commands on the port number given. This allows scripts to read the Heidenhein sensor positions(s).
TCP/IP commands:
version
returns version string: "version=1.00"
read
returns a string like "X= 123 Y= 0"
the X/Y positions are in micro-meters [um]


tftest

Syntax: tftest [-h pixels] [-p port]
-h : font height in pixels (eg. '-h 18' uses a height of 18)
-p : port number the GUI is reading commands from.

1st group
Drop-Down Menus:
"File-Configure" : re-send current settings to the CS100 controller
"File-Help" : open web-browser with the IMACS documentation
"File-Exit" : close GUI

"Options-LogFile" : edit name of the logfile

2nd group
Input Windows:
"Spacing (Z)" : set spacing
"Parallelism (X)" : set X-parallelism
"Parallelism (Y)" : set Y-parallelism

3rd group
Popup-Menu:
"Mode" : switch between Operate and Balance
Buttons:
"R.Time" : set the response time (sum of individual values) in milli-seconds.
"Status" : retrieve status information from the CS100 controller (OK/out-of-range, operate/balance)
When started with the '-p' option the GUI will listen for commands on the port number given.
TCP/IP commands:
version
returns version string: "version=1.00"
init
configure the CS-100 controller to default values: "init= 0"
status
returns status string: "mode= %d, status= %d"
mode=0: balance, mode=1: operate
status=0: ok, status=1: out-of-range
move #
move to z-spacing '#'; returns z-spacing: "z= %d"


gitest

Syntax: gitest [-h pixels]
-h : font height in pixels (eg. '-h 18' uses a height of 18)
-l none : ignore LinMot controller (but allow control of the brake)

1st group
Drop-Down Menus:
"File-Configure" : configure Linmot controller and Acromag unit
"File-Help" : open web-browser with the IMACS documentation
"File-Exit" : close GUI

"Options-LogFile" : edit name of the logfile in dialog-box
"Options-readAcro" : read status from Acromag (12-bit I/O)
"Options-writeAcro" : set output (eg. 1on, 2off)
"Options-cmdLinmot" : send command to Linmot controller
"Options-testLinot" : run repeatability test
"Options-MaxCurrent" : set maximal current for Linmot controller

2nd group
Edit-Windows:
"Position" : move linear motor to position [mm]
"V[mm/s]" : speed of linear motor
"AC[A]" : actual current
"FF[A]" : friction control parameter
"P[A/mm]" : proportional control parameter
"I[A*mm]" : integral control parameter
"D[A/(mm/2)]" : differential control parameter
Buttons:
"HOME" : start home-search routine (initializes encoder)
Popup-Menus:
"HoldC" : holding current {on,off}
WARNING: If you turn-off the holding current to move the slide by hand, be carefull when you turn-on the holding current, because the slide will "snap" back to its original position.

3rd group
Popup-Menus:
"Brake" : apply brake {open,eng'd}


omtest

Syntax: omtest [-h pixels] [{1,2}]
-h : font height in pixels (eg. '-h 18' uses a height of 18)
1 : f/4 controller
2 : f/2 controller

1st group
Drop-Down Menus:
"File-Configure" : configure Omega controller
"File-Help" : open web-browser with the IMACS documentation
"File-Exit" : close GUI

"Options-SmpTime" : change time between (automatic) updates
"Options-LogFile" : edit name of the logfile

2nd group
Output-Windows:
"PV" : 'process value' (digital units from -999 to +9999)
"Volt" : converted 'process value' to volts
"mBar" : pressure from selected gauge
Popup-Menus:
"Gauge" : { IonPump , Vacuum } interpret the process value as a pressure reading from the selected gauge

3rd group
Edit-Windows:
"SP" : 'setpoint' (digital units from -999 to +9999)
"SV" : 'setpoint' (volts 0.0 to 10.0)
Popup-Menus:
Method: { On/Off, Manual } control method (see Omega manual c.10)
Mode: { Heat, Cool, H+C, C+H } control mode (see Omega manual c.10)
Relais1: { Open, Closed } manual setting for relais-1
Relais2: { Open, Closed } manual setting for relais-2

4th group
Edit-Windows:
"AlarmLo" : alarm-low setting (digital units from -999 to +9999)
"AlarmHi" : alarm-low setting (digital units from -999 to +9999)
Popup-Menus:
"AlarmType" : see Omega manual chapter 8



Mid Level Control

EngGUI

Syntax: enggui [-h pixels] [-k] [-o]
-h : Font height in pixels (eg. '-h 18' uses a height of 18)
-k : Keep serial line open. This speeds up the communications between enggui and the hardware, but it blocks access to the serial port for other GUIs.
-o : Startup in passive mode (just as a status display). This is the default behavior when mechgui is already running.
The 'Online Components' window allows you to select those parts of IMACS which are currently up and ready to run.

All components that are 'offline' will be simulated, ie. you can command them wherever you like but no hardware will actually move.

1st group
File : [menu] :
Configure : re-read and apply all .ini files
Initialize : opens dialog-box to select components for initialization
Help : open web-browser with the IMACS documentation
Exit : close GUI
Shutdown : shutdown entire IMACS software (EngGUI,MechGUI,CamGUI,QlTool,Xdbserver)
Options : [menu] :
LogFile : edit name of the logfile in a dialog-box
Sound : define sound effects (not yet implemented)
Rotator : IMACS' internal rotator. Not used at the Baade telescope (see rotest)
Emergency STOP [button] :
immediately stop all stepper motors. Warning: Air-cylinders cannot be stopped during motion.

2nd group

Hatch : [popup] : {open,closed} open/close hatch. Note: There are no sensors on the hatch. The GUI shows the last selection.
Lamp:
?: [button] : sample status of calibration lamps
Ne,NeHg,Ar,Kr,Xe: [button] : turn on/off calibration lamps
Cont: [menu]: set level of continous calibration lamp {Off,Lev1,..Lev7}

Center-Field Guider
? : [button] : sample status CF-guider
CF-Flt : [popup] : insert/retract CF-guider filter
CF-Opt : [popup] : insert/retract CF-guider SH-lens
CF-Prb : [popup] : insert/retract CF-guider probe

Principal Guider
? : [button] : read status of PR-guider
PR-Flt : [popup] : insert/retract PR-guider filter
PR-Tht : [edit] : PR-guider theta position
PR-T-C : [popup] : PR-guider theta control

Shack-Hartman Guider
? : [button] : read status of SH-guider
SH-Flt : [popup] : insert/retract SH-guider filter
SH-Opt : [popup] : insert/retract SH-guider SH-lens
SH-Tht : [edit] : SH-guider theta position
SH-T-C : [popup] : SH-guider theta control
SH-Rad : [edit] : SH-guider radial position

Slit-Mask Server
? : [button] : read status of mask server
MskSel : [edit] : mask server tray position. Note: A green center LED indicates a valid mask-insert position
MskLtc : [popup] : latch mask in tray
MskIns : [popup] : insert/retract mask
MiT : [LED] : mask in tray sensor
MiF : [LED] : mask in focus sensor
GISMO
GISMO : [edit] : linear motor position {0..58}. Note: A yellow LED indicates that the LinMot controller is un-initialized
Clamp : [menu] : GISMO-mask clamp {open,engd}
MskClp : [menu] : mask-clamp {open,clamped}

Disperser Server
? : [button] : read status of disperser server
DspSel : [edit] : disperser wheel position. Note: A green center LED indicates a valid disperser-clamp position
DspBrk : [popup] : disperser wheel brake
DspClp : [popup] : disperser clamp
DspInW : [LED] : disperser in wheel sensor
Gratings Tilt
? : [button] : read status of grating tilt (position 'A')
GrA : [edit] : grating tilt value
? : [button] : read status of grating tilt (position 'B')
GrB : [edit] : grating tilt value
? : [button] : read status of grating tilt (position 'C')
GrC : [edit] : grating tilt value

MMTF (Etalon)
? : [button] : read status of the CS100 controller
X : [edit] : set X-parallelism value
Y : [edit] : set Y-parallelism value
Z : [edit] : set Z-spacing value

Filter-Server-1 (LongCamera,f/4 Filter)
? : [button] : read status of filter server-1
Fil1Sel : [edit] : filter tray position. Note: A green center LED indicates a valid filter-insert position
Fil1Ins : [popup] : filter insert/retract mechanism
Filter-Server-2 (ShortCamera,f/2 Filter)
? : [button] : read status of filter server-2
Fil2Sel : [edit] : filter tray position. Note: A green center LED indicates a valid filter-insert position
Fil2Ins : [popup] : filter insert/retract mechanism

L05-motors (LongCamera focus/scale)
? : [button] : read status of L05-motors
L05-M1 : [edit] : L05-lens motor-1 position (-200..+3200 [um])
L05-M2 : [edit] : L05-lens motor-2 position (-200..+3200 [um])
L05-M3 : [edit] : L05-lens motor-3 position (-200..+3200 [um])
L05-A : [edit] : L05-lens tip (-15..+15 [pixels])
L05-B : [edit] : L05-lens tilt (-15..+15 [pixels])
L05-Z : [edit] : L05-lens focus (-1800..+1200 [um])
Note: 'M1', 'M2', 'M3' affect 'A','B','Z' and vice versa.
Note: L05 disabled as of 2008-01-15 (release 1.14)

Flexure stage
? : [button] : read status of flexure stage (piezo)
LFlx-A : [edit] : Mosaic/1 (Long) piezo-A position (0..200 [um])
LFlx-B : [edit] : Mosaic/1 (Long) piezo-B position (0..200 [um])
SFlx-A : [edit] : Mosaic/2 (Short) piezo-A position (0..200 [um])
SFlx-B : [edit] : Mosaic/2 (Short) piezo-B position (0..200 [um])
Detector focus
? : [button] : read status of detector focus drive
LDtFoc : [edit] : f/4 (Long) detector focus (0..125000 [EU], 50 EU/um)
SDtFoc : [edit] : f/2 (Short) detector focus (-20000..20000 [EU], 10 EU/um)

At this level all edit windows refer to encoder values. When you start editing a window its background will turn red until you finish your input by pressing the [Return] key. The edit window will change its color to yellow, indicating an ongoing motion. After the motion has finished the edit window will again have a white background and show the current encoder readout.

Popup menus behave in a similar way. When you select a new value the window will turn yellow while the motion is in progress, then turn white again and indicate the current status. A '?' indicates an unknown position, usually caused by a position sensor not beeing active. (eg. filter-insert mechanism not fully retracted).

To update the status (encoders, position-sensors, etc) please press the button labled '?' on the left of the appropriate line.

Warning: Any encoder readout of '0' is suspicious because it indicates that the respective component may not have been initialized. Unless you are absolutely sure that the reading is real please use the menu entry File->Initialize.

3rd group

Temperature Sensors:
[output] : LCamT1,LCamT2: Long(f/4) camera (*)
[output] : SCamT1,SCamT2: Short(f/2) camera (*)
[output] : CollT1,CollT2: collimator (*)
[output] : StrT01...StrT12: structure (*)
[output] : SadBkT: saddle back electronics
[output] : ERackT: electronics rack
[output] : CoolTi,CoolTo: collant-in and coolant-out
[output] : AveInT: average temperature of (*)
Pressure Sensors:
[output] : ClInP,ClOutP: collant in/out pressure (40/20 psi)
[output] : AirP: pressureized air (80-100 psi)
Voltage Sensors
[output] : GCamV1: principal guider power supply (48 V)
[output] : GCamV2: Shack-Hartman guider power supply (48 V)
[output] : GCamV3: center-field guider power supply (48 V)
[output] : MC-5V: motor controller voltage (5V logic)
[output] : MC-24V: motor controller voltage (24V logic)
[output] : RS-24V: serial converter voltage (24V)
[output] : RS-12V: serial converter voltage (12V)
[output] : MC-PC: motor contoller DOS-PC (5V)
[output] : L5-12V: L05 controller (12 V)
[output] : LCamV: Long(f/4) camera science array (48 V)
[output] : LFlxV: Long(f/4) camera wing chips (48 V)
[output] : SCamV: Short(f/2) camera science array (48 V)
[output] : SFlxV: Short(f/2) camera wing chips (48 V)


TCP/IP Interface

enggui listens to port _____ (BasePort+11). This allows scripts to send commands to it. Here is a simple example of a csh-script that continously switches between two filters on filter-server-1.
Note: All TCP/IP commands to enggui are 'blocking', ie. receiving the return-string indicates that the commanded motion has finished.

#!/bin/csh
#
set e_port    = _____           # port
set host      = `hostname`      # localhost
set command   = ( ./tcpsend $host $e_port )

set fpos      = ( 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 )
set fpos[3]   = +62600          # encoder value for slot-3
set fpos[12]  = -117590         # encoder value for slot-12

## initialize filter
$command if1  # not necessary if you done it already

loop:

## move filter
$command fi 1 out
$command fs 1 $fpos[3]
$command fi 1 in
sleep 2

## move filter
$command fi 1 out
$command fs 1 $fpos[12]
$command fi 1 in
sleep 2

goto loop

exit

Encoder values for the 15 filter positions can be found here $IMACSINI/fs1_epos.ini and $IMACSINI/fs2_epos.ini

To execute a script type at the prompt:
birk@llama> csh name.csh

Command List

version
return version string: "version=1.01"
ht [{closed,open}]
open/close hatch; return: "ht= open"
cl {1,2,3,4,5,6} [{0..7}]
turn on/off calibration lamps; return "cl3= 1"
cgp [{out,slitview,center}]
move CF-guider probe; return: "cgp= out"
cgf [{out,in}]
move CF-guider filter 'in' or 'out'; return: "cgf= out"
cgo [{image,shl}]
insert CF-guider Shack-Hartman lens or imaging lens; return: "cgo= SHL"
pgt [value]
move PR-guider theta to encoder position 'value'; return: "pgt= -26070"
ptc [{off,on}]
turn PR-guider theta control 'on' or 'off'; return: "ptc= off"
pgf [{out,in}]
move PR-guider filter 'in' or 'out'; return: "pgf= in"
sgt [value]
move SH-guider theta to encoder position 'value'; return: "sgt= 12399"
stc [{off,on}]
turn SH-guider theta control 'on' or 'off'; return: "stc= off"
sgr [value]
move SH-guider radius to encoder position 'value'; return: "sgr= 3477"
sgf [{out,in}]
move SH-guider filter 'in' or 'out'; return: "sgf= out"
sgo [{image,shl}]
insert SH-guider Shack-Hartman lens or imaging lens; return: "sgo= SHL"
ms [value]
move mask-select (tray) to encoder position 'value'; return: "ms= 3882"
ml [{open,locked}]
lock/unlock mask; return: "ml= locked"
mi [{out,in}]
move mask 'in' (focus-position) or 'out' (tray); return: "mi= in"
ds [value]
move disperser-wheel to encoder position 'value': return: "ds= 36622"
db [{open,engd}]
engage/open dispserser brake; return: "db= open"
dc [{open,locked}]
(un-) clamp dispserser (grism,grating or mirror); return: "dc= locked"
grt {1,2,3} [value]
move grating to encoder position 'value'; return: "grt1= 123559"
tf [value]
move etalon (MMTF) to Z-position; return: "tf= 1234"
fs {1,2} [value]
move filter-select (tray) to encoder position 'value'; return: "fs1= 42342"
fi {1,2} [{out,in}]
move filter-insert 'in' or 'out'; return: "fi1= in"
cf {1,2,3} [value]
move L05-focus (LongCamera) motor to encoder position 'value'; return: "cf2= 1200"
df [value]
move detector focus to encoder position 'value'; return: "df= 12000"
flx [value]
move piezo-1 (flexure-control) to position 'value'; return: "flx= 12.4"
fly [value]
move piezo-2 (flexure-control) to position 'value'; return: "fly= 130.5"
icg
initialize CF-guider; return: "done"
ipg
initialize PR-guider; return: "done"
isg
initialize SH-guider; return: "done"
ima
initialize mask server; return: "done"
idi
initialize disperser-wheel; return: "done"
if1
initialize filter-server-1 (long=f/4); return: "done"
if2
initialize filter-server-2 (short=f/2); return: "done"
icf
initialize L05-focus (LongCamera) motors; return: "done"
idf
initialize detector focus; return: "done"



High (User) Level Control

MechGUI

Main Window - HardHat Window

'MechGUI' is the main control center for running IMACS hardware (filters, masks, etc). It is necessary to run any mechanical component of IMACS (including the guiders). It is also needed to run 'GraphGUI' (graphical status display).

The Instrument Motion Control software runs on a (Linux or MacOS-X) computer in the control room. IMACS uses a (16-channel) TCP/IP to serial converter to communicate with a (DOS-) PC that holds a number of PCI-cards. All stepper-motors, encoders, air cylinders, limit-switches and fiducials are controlled via this PC. All higher level commanding and safety checking is done by this GUI.
The Motion Conrol Software allows the user to setup the instrument in parallel but will make safety checks to avoid collisions where they may be possible.
There are several other devices connected to the TCP/IP serial converter and therefore are directly controlled by the Linux computer:

Note: As of version-2.0 (March/2008) there are two ETS-16 TCP/IP-to-serial converters.
Syntax: mechgui [-h pixels]
-h : font height in pixels (eg. '-h 18' uses a height of 18)
-c : bring up dialog-box at startup that allow to turn-on/off individual components of IMACS.
-e : engineering mode:
-k : do not keep serial port to the motor-controller PC open (ie. allow other programs to access the port). This slows down operations.

File : [menu] :
Load-Setup: load setup-file (n/a)
Save-Setup: save setup-file (n/a)
Help: start browser with IMACS software manual
Configure: configure electronics (engineering-mode only)
Initialize: initialize (HOME,etc) selected component(s)
Self-Test: self-test selected component (engineering-mode only)
Exit: close this GUI
Shutdown: close all IMACS-GUIs
Modules : [menu] :
CamGUI: startup the data acquisition window
TeleGUI: startup the telescope controls
GraphGUI: startup the graphical IMACS status window
Hardhat: open engineering data window
Options : [menu] :
Logfile: show logfile path
Sound: set sounds (n/a)
Rotator: IMACS (internal) rotator (n/a, engineering only)
Hardhat: open engineering data window
FocusOffset: Add an offset to the current focus control target. This offset will be automatically reset to '0' when the effective filter changes.
Reload: reloads the masks, filters and dispersers after the setuptool has been run and removes the necessity to restart the entire IMACS software suite after a setup change. (v3.5)

Hatch:
[menu] : {open,closed} : open/close hatch. Note: There are no sensors on the hatch. The GUI shows the last selection.

Cal-Lamp
[button]: [Ne] [NeHg] [Ar] [Kr] [Xe]: turn on/off calibration lamps
[menu]: set level of continous calibration lamp {Off,L1,..L7}

CF-Guider
[menu] : CF-guider {in,out}: move guider probe. The Slit-Mask should be in 'CF-Guider' position.
[menu] : Optics {Image,SHL}: select between imaging and Shack-Hartman lens.
[menu] : Filter {in,out}: move filter.

Slit-Mask:
[menu] :
[button] : MaskLoad: moves mask-tray mechanism to the loading position. Disables any further mask motions until this button is pressed again.
[menu] : GISMO : selects sub-mask position {1..5}

Disperser
[menu] :
[edit] : Tilt {22..48}: grating tilt [degrees]. Available only if a grating is in the disperser position.
[edit] : Etalon {0..4095} etalon spacing. Available only if the MMTF is in the disperser postition.

Filter
[menu] :
[output] : Foff: the current focus offset

Focus
[edit] : f/4 {6900..9300}: set detector focus for f/4 camera
[edit] : f/2 {6900..9300}: set detector focus for f/2 camera
[menu] : Control {off,on}: automatic focus control


Initialize Components Window:

Select the component(s) you want to initialize (eg. 'Disperser-Wheel') and then press the OK button.


Hardhat Window

The 'Hardhat' window displays the status of components that should normally not changed by the user. It is used for engineering and in case of abnormal system behavior.
Some controls are disabled unless the password is given.

PR- and SH-Guiders - L05 - Flexure/Piezo Control - Disperser Service Positions - MMTF/CS100 - Sensors

PRG: Principal Guider
[edit] : Theta {-17..+22}: move probe in theta direction
[menu] : Control {On,Off} : guider theta-control
[menu] : Filt {out,int}: insert filter
SHG: Shack-Hartman Guider
[edit] : Radius {-16..+5}: move probe in radial direction
[edit] : Theta {-21..+17}: move probe in theta direction
[menu] : Control {On,Off} : guider theta-control
[menu] : Optics {Image,SHL}: change optics barrel
[menu] : Filt {out,int}: insert filter
L05: Long Camera focus/scale adjustment
[edit] : A {-8..+7}: tip L05 perpendicular to row/column
[edit] : B {-9..+6}: tilt L05 perpendicular to row/column
[edit] : Z {-1600..+1100}: move L05 in Z-direction
Note: L05 disabled as of 2008-01-15, ie. run in simulator mode (release 1.14)

Flexure: Flexure (Piezo) control
[edit] : A4 {0..200}: f/4 piezo channel-A position
[edit] : B4 {0..200}: f/4 piezo channel-B position
[edit] : A2 {0..200}: f/2 piezo channel-A position
[edit] : B2 {0..200}: f/2 piezo channel-B position
[menu] : Control {off,on}: automatic flexure control (open loop)
Disperser Service Position: Move the wheel to a special position to replace a disperser unit.
[button] : 1-A: position-1 (grating-A/MOE/MMTF)
[button] : 2-M: position-2 (grism/prism)
[button] : 3-B: position-3 (grating-B/MOE)
[button] : 4-G: position-4 (mirror/grism)
[button] : 5-C: position-5 (grating-C/MOE)
[button] : 6-G: position-6 (grism/prism)
CS100: MMTF/Etalon parameters
[menu] {local,remote}: release/acquire CS-100 control.
[edit] : X: set X-parallelism
[edit] : Y: set Y-parallelism
[edit] : Z: set Z-spacing
[button] Etalon: : read back Z-spacing from CS100.
[output] : c,f,q : X coarse, X fine, X quadrature balance
[output] : c,f,q : Y coarse, Y fine, Y quadrature balance
[output] : c,f,q : Z coarse, Z fine, Z quadrature balance
Note: The values for c,f,q are read from the mmtf.ini file that may be changed by the instrument specialist using the SetupTool.
After the new 'mmtf.ini' has been written it may be re-loaded by selecting remote in the CS100 menu (this works even if the CS100 is already in remote mode).

Temperature Sensors:
[output] : LCamT1,LCamT2: Long(f/4) camera (*)
[output] : SCamT1,SCamT2: Short(f/2) camera (*)
[output] : CollT1,CollT2: collimator (*)
[output] : StrT01...StrT12: structure (*)
[output] : SadBkT: saddle back electronics
[output] : ERackT: electronics rack
[output] : CoolTi,CoolTo: collant-in and coolant-out
[output] : AveInT: average temperature of (*)
Pressure Sensors:
[output] : ClInP,ClOutP: collant in/out pressure (40/20 psi)
[output] : AirP: pressureized air (80-100 psi)
Voltage Sensors
[output] : GCamV1: principal guider power supply (48 V)
[output] : GCamV2: Shack-Hartman guider power supply (48 V)
[output] : GCamV3: center-field guider power supply (48 V)
[output] : MC-5V: motor controller voltage (5V logic)
[output] : MC-24V: motor controller voltage (24V logic)
[output] : RS-24V: serial converter voltage (24V)
[output] : RS-12V: serial converter voltage (12V)
[output] : MC-PC: motor contoller DOS-PC (5V)
[output] : L5-12V: L05 controller (12 V)
[output] : LCamV: Long(f/4) camera science array (48 V)
[output] : LFlxV: Long(f/4) camera wing chips (48 V)
[output] : SCamV: Short(f/2) camera science array (48 V)
[output] : SFlxV: Short(f/2) camera wing chips (48 V)
Close: [button] : close the HardHat window


TCP/IP Interface

port = _____ (BasePort+6)
version
return version string: "version=3.5"

hatch [{closed,open}] [timeout]
  • check status hatch; return: "open" or "closed"
  • move hatch; if 'timeout' is omitted or '0' do not block; return: "ok" , "open" , "closed" , "moving" or "-E..."
  • lamp [{1,2,3,4,5,6}] [{0..7}] [timeout]
  • get status of calibration lamp; return: "lamp1= 1" or "lamp7= 5" or "100005"
  • set calibration lamp level; lamps 1-5: '0' or '1', lamp-6: '0'..'7'; return: "ok" or "000005"
  • cfguider
  • check status of CF-guider; return: "ok" or "moving" or "not_initialized"
  • initialize CF-guider; return: "ok" or "-E..."
  • cgfilter [{in,out}]
  • get CF-guider filter; return "in" or "out"
  • set CF-guider filter; return: "ok" or "moving" or "-E..."
  • cgoptics [{image,shl}]
  • get CF-guider optics; return "image" or "shl"
  • set CF-guider optics; return: "ok" or "moving" or "-E..."
  • prguider
  • check status of PR-guider; return: "ok" or "moving" or "not_initialized"
  • initialize PR-guider; return: "ok" or "-E..."
  • pgtheta [theta]
  • get PR-guider theta angle [degrees]; return: eg. "12.2" or "moving" or "-E..."
  • set PR-guider theta angle; (-16.0 <= theta <= 22.0) return: "ok" or "moving" or "-E..."
  • pgfilter [{in,out}]
  • get PR-guider filter; return "in" or "out"
  • set PR-guider filter; return: "ok" or "moving" or "-E..."
  • shguider
  • check status of SH-guider; return: "ok" or "moving" or "not_initialized"
  • initialize SH-guider; return: "ok" or "-E..."
  • sgtheta [theta]
  • get SH-guider theta angle [degrees]; return: eg. "5.7" or "moving" or "-E..."
  • set SH-guider theta angle; (-17.0 <= theta <= 21.0) return: "ok" or "moving" or "-E..."
  • sgradius [radius]
  • get SH-guider radial position [mm]; return: eg. "2.6" or "moving" or "-E..."
  • set SH-guider radial position (-15.0 <= radius <= 21.0) return: "ok" or "moving" or "-E..."
  • sgfilter [{in,out}]
  • get SH-guider filter; return "in" or "out"
  • set SH-guider filter; return: "ok" or "moving" or "-E..."
  • sgoptics [{image,shl}]
  • get SH-guider optics; return "image" or "shl"
  • set SH-guider optics; return: "ok" or "moving" or "-E..."
  • mask [name]
  • get slit-mask position name; return "None" or "Mask-2"
  • insert slit-mask 'name' (you may use '#5' for position-5, use '#0' for ' none')
  • disperser [name]
  • get disperser position name
  • move/insert disperser 'name' (you may use '#5' for position-5, '#0' or '#7' for 'open')
  • gratingA [angle]
    gratingB [angle]
    gratingC [angle]
  • get grating tilt angle
  • move grating to tilt-angle 'angle'
  • mmtf [spacing]
    etalon [spacing]
  • get etalon spacing
  • set etalon spacing
  • sfilter [name]
  • get ShortFilter position name
  • insert ShortFilter 'name' (you may use '#5' for position-5)
  • lfilter [name]
  • get LongFilter position name
  • insert LongFilter 'name' (you may use '#5' for position-5)
  • TODO ...


    GraphGUI

    Note: The GraphGUI has been effectively abandoned due to lack of user interest [CCB, 2012-11-20].

    The GraphGUI shows the current status of the IMACS hardware in form of a diagram.

    Below is a snapshot with the following status (f/4 configuration):

    Below is another example (f/2 configuration):

    File : [menu] :
    Load-Setup: load setup-file (n/a)
    Save-Setup: save setup-file (n/a)
    Help: start browser with IMACS software manual
    Initialize: initialize (HOME,etc) selected component(s)
    Exit: close this GUI
    Options : [menu] :
    Logfile: show logfile path
    Sound: set sounds (n/a)
    TODO ...


    2002-12-09, Christoph C. Birk, Carnegie Observatories (last updated: 2016-02-02)