|
EUROPEAN
SOUTHERN OBSERVATORY
Organisation Européenne pour des Recherches Astronomiques dans l'Hémisphère
Austral
Europäische Organisation für astronomische Forschung in der südlichen
Hemisphäre
VLT PROGRAMME
VERY
LARGE TELESCOPE
VLT
Software
---
Base ICS
control panel
User
Manual
Doc. No.: VLT-MAN-ESO-17240-2606
Issue: 4
Date: 09/12/2005
Name Date Signature
Prepared: A.Longinotti 09/12/2005
Name Date Signature
Approved: K.Wirenstrand
Name Date Signature
Released: M.Cullum
VLT PROGRAMME * TELEPHONE:
(089) 3 20 06-0 * FAX: (089) 3 20 06 514
CHANGE RECORD
ISSUE |
DATE |
SECTION/PAGE AFFECTED |
REASON/INITIATION DOCUMENTS/REMARKS |
1.0 |
All |
First issue |
|
2 |
|
All |
MAR2002, SPR VLTSW20010501, VLTSW20010502, VLTSW20010666, VLTSW20010690 |
3 |
|
2.1 Table 1, 6.1.15 5 Table 3 5 Table 3, App. A 2.1 Table 2 3.1 Figure 1 3.1.1 Figure 2 3.1.2 Figure 3 3.1.3 Figure 4 3.1.4 Figure 5 4.5.2 6.1.5 5.1 Appendix B |
APR2004 VLTSW20030226: new class icbpanSensor INS.SENSOR.UIFCOL/UIFROW/UIFWID VLTSW20030303: multiple panels (INS.UIF.NAME) VLTSW20030305: icbpanICSCmd icbpanICSDevControl obsolete new panel layout new menu options new state widget new devices area layout new action buttons new widget icbpanEntry sensors values turning red (abnormal conditions) Porting old panels to new layout |
4 |
|
2.1 Table 1, 5 Table 3 |
JAN2006 Assemblies supported (VLTSW20040336) Grating without order (VLTSW20050206) |
TABLE OF CONTENTS............................................................................................................................................................................. 3
1 INTRODUCTION................................................................................................................................................................................ 5
1.1 Purpose...................................................................................................................................................................................... 5
1.2 Scope........................................................................................................................................................................................... 5
1.3 Applicable Documents.................................................................................................................................................... 5
1.4 Reference Documents...................................................................................................................................................... 5
1.5 Abbreviations and Acronyms................................................................................................................................... 6
1.6 Glossary.................................................................................................................................................................................. 6
1.7 Stylistic Conventions..................................................................................................................................................... 6
1.8 Naming Conventions........................................................................................................................................................ 6
1.9 Problem Reporting/Change Request....................................................................................................................... 6
2 OVERVIEW......................................................................................................................................................................................... 7
2.1 ICS control panel architecture.............................................................................................................................. 7
2.1.1 Software Modules.............................................................................................................................................................. 8
3 OPERATOR’S GUIDE....................................................................................................................................................................... 9
3.1 Panel Start-up..................................................................................................................................................................... 9
3.1.1 Menu bar.......................................................................................................................................................................... 10
3.1.2 Global State..................................................................................................................................................................... 10
3.1.3 Single Devices................................................................................................................................................................. 10
3.1.4 Command Feedback, Short Help and Action Buttons............................................................................................. 11
4 Figure 5: Command feedback, short help and action
buttons area TUTORIAL: IMPLEMENTING ICS CONTROL PANEL FROM SCRATCH................................................................................................................................................ 12
4.1 Create the ICS control panel module................................................................................................................ 12
4.2 Design the ICS control panel layout.................................................................................................................. 12
4.3 Configure the ICS control panel layout.......................................................................................................... 13
4.4 Starting the ICS control panel.............................................................................................................................. 13
4.5 Creating a special device............................................................................................................................................ 13
4.5.1 Overriding default behavior......................................................................................................................................... 13
4.5.2 Building an uifClass from scratch............................................................................................................................... 13
5 CONFIGURATION GUIDE............................................................................................................................................................. 15
5.1 Abnormal conditions reported by sensors.................................................................................................... 16
6 REFERENCE...................................................................................................................................................................................... 18
6.1 icbpan...................................................................................................................................................................................... 18
6.1.1 icbpanLib.tcl.................................................................................................................................................................... 18
6.1.2 icbpanGUIcfg.tcl............................................................................................................................................................. 20
6.1.3 icbpanUIF.tcl................................................................................................................................................................... 22
6.1.4 icbpanICSControl.tcl..................................................................................................................................................... 23
6.1.5 icbpanEntry.tcl................................................................................................................................................................ 24
6.1.6 icbpanLamp.tcl................................................................................................................................................................ 26
6.1.7 icbpanShutter.tcl............................................................................................................................................................ 28
6.1.8 icbpanNamedPos.tcl...................................................................................................................................................... 30
6.1.9 icbpanContPos.tcl.......................................................................................................................................................... 32
6.1.10 icbpanSlit2.tcl................................................................................................................................................................. 34
6.1.11 icbpanGrat.tcl................................................................................................................................................................. 36
6.1.12 icbpanGratNoOrd.tcl..................................................................................................................................................... 38
6.1.13 icbpanDpol.tcl................................................................................................................................................................. 40
6.1.14 icbpanAdc.tcl................................................................................................................................................................... 42
6.1.15 icbpanDrot.tcl................................................................................................................................................................. 44
6.1.16 icbpanSensor.tcl............................................................................................................................................................. 46
6.1.17 icbpanPmt.tcl................................................................................................................................................................... 48
6.2 xxipan...................................................................................................................................................................................... 50
6.2.1 xxipanControl.pan......................................................................................................................................................... 50
Appendix A. Multiple panels for the same ICS.............................................................................................................. 53
Appendix B. Porting older existing ICS panels to APR2004 layout................................................................ 54
The software described in this manual is intended to be used in the ESO VLT project by ESO and authorized external contractors only.
While every precaution has been taken in the development of the software and in the preparation of this documentation, ESO assumes no responsibility for errors or omissions, or for damage resulting from the use of the software or of the information contained herein.
All instruments need an ICS stand-alone Graphical User Interface (GUI) to be able to operate its functions, e.g. for engineering and maintenance purposes.
As from the OCT2001 release of the VLT Software, the Base ICS package provides instrumentation applications with common code dedicated to the development of ICS GUIs. The purpose is to make the ICS GUIs development faster, reducing the amount of application specific code and therefore the maintenance efforts associated to it, and at the same time to make the look & feel more homogeneous.
The common code is implemented in the module icbpan. An example of application using it is provided by the Template Instrument (see [RD 13]) and in particular the module xxipan.
This document covers only the part of Base ICS dedicated to the development of ICS GUIs.
The part dedicated to the ICS control applications is described in .
The following documents, of the exact issue shown, form a part of this document to the extent specified herein. In the event of conflict between the documents referenced herein and the contents of this document, the contents of this document shall be considered as a superseding requirement.
Reference |
Document Number |
Issue |
Date |
Title |
VLT-PRO-ESO-10000-0228 |
1.0 |
|
VLT Software Programming Standards |
|
VLT-MAN-ESO-17210-0667 |
1.0 |
|
Guidelines for VLT applications. |
|
VLT-SPE-ESO-17212-0001 |
2.0 |
|
INS Software Specification |
|
VLT-SPE-ESO-17240-0385 |
2.1 |
|
INS Common Software Specification |
The following documents are referenced in this document.
Reference |
Document Number |
Issue |
Date |
Title |
VLT-MAN-ESO-17200-0888 |
1.0 |
|
VLT Common Software Overview |
|
VLT-MAN-ESO-17200-0642 |
2 |
|
VLT Common Software Installation Manual |
|
VLT-MAN-ESO-17210-0669 |
1.4 |
|
Motor Engineering Interface User Manual |
|
VLT-MAN-ESO-17210-0619 |
2.2 |
|
Central Control Software User Manual |
|
VLT-MAN-ESO-17210-0707 |
1.6 |
|
On Line Database Loader User Manual |
|
VLT-MAN-ESO-17210-0690 |
4.3 |
|
Panel Editor User Manual |
|
VLT-MAN-ESO-17240-0853 |
1.4 |
|
INS Common sw – oslx User Manual |
|
VLT-MAN-ESO-17240-0934 |
3 |
|
Base ICS User Manual |
|
VLT-MAN-ESO-17240-1913 |
2 |
|
Installation Tool for VLT Sw packages |
|
VLT-MAN-ESO-17240-2153 |
2 |
|
INS Startup Tool User Manual |
|
VLT-MAN-ESO-17220-0737 |
3 |
|
HOS – Sequencer User Manual |
|
VLT-MAN-ESO-17240-2240 |
2 |
|
INS Common Software for Templates |
|
VLT-MAN-ESO-17240-1973 |
3 |
|
Template Instrument Software User Manual |
1.5 Abbreviations and Acronyms
This document employs several abbreviations and acronyms to refer concisely to an item, after it has been introduced. The following list is aimed to help the reader in recalling the extended meaning of each short expression:
CCS |
Central Control Software |
CPU |
Central Processing Unit |
ESO |
European Southern Observatory |
FITS |
Flexible Image Transport Format |
GUI |
Graphical User Interface |
HW |
Hardware |
ICS |
Instrument Control Software |
INS |
Instrumentation Software Package |
I/O |
Input/output |
IWS |
Instrument Workstation |
LAN |
Local Area Network |
LCU |
Local Control Unit |
MS |
Maintenance Software |
N/A |
Not Applicable |
RAM |
Random Access Memory |
SW |
Software |
TBC |
To Be Clarified |
TBD |
To Be Defined |
UIF |
(Portable) User Interface (Toolkit) |
VLT |
Very Large Telescope |
WS |
Workstation |
No special definition is introduced in this manual
The following styles are used:
bold
in the text, for commands, filenames, pre/suffixes as they have to be typed.
Italic
in the text, for parts that have to be substituted with the real content before typing.
Teletype
for examples.
<name>
in the examples, for parts that have to be substituted with the real content before typing.
Bold and italic are also used to highlight words.
This implementation follows the naming conventions as outlined in [AD 01].
1.9 Problem Reporting/Change Request
The form described in [RD 02] shall be used.
This chapter gives a short overview of the ICS control panel philosophy and underlying architecture.
The rest of the manual is organized as follows:
· Chapter 3 is the operator’s guide, which describes how to operate an ICS GUI based on icbpan.
· Chapter 4 is the programmer’s guide, which describes in detail how to create from scratch an ICS GUI for a new instrument.
· Chapter 5 is the configuration guide, which describes in detail how to properly configure the appearance of a specific instrument GUI.
· Chapter 6 contains the manual pages extracted from the source code.
2.1 ICS control panel architecture
ICS is responsible for controlling the different devices of an instrument, such as motors, lamps and sensors. Most of these devices are driven by standard ESO hardware and software (see [RD 08]) and share therefore the same functionality.
The Base ICS package (also called ICB, see [RD 08]) aims to implement all common aspects of the various instruments ICS in one central place, such that different instrumentation applications, using it, become more homogeneous and therefore easier to operate and maintain. The same principle applied to the control code has been extended to the ICS stand-alone control panel: base ICS provides, within the module icbpan, means to speed up the ICS GUI development and reduce the amount of code to be maintained.
The basic components of icbpan are a set of “uifClasses-widgets” (hereafter called simply uifClasses), created with the VLT Panel Editor and therefore compatible with its usage (see [RD 06]).
The concept of uifClasses alone, though very useful, poses some problems when building the ICS control panel: sets of global variables are indeed needed to localize single widgets inside a class, which is difficult to maintain and still more difficult to extend. To overcome this drawback, for every uifClass an itcl wrapper class was created; it inherits the corresponding uifClass and adds new methods dealing with single (internal) widgets. In this way, not only the need of global variables disappears but also every single uifClass can be treated as a self-consistent unit which can be extended for special needs by using well-known object-oriented features (inheritance, overriding etc.). Moreover, variable name collision is automatically solved.
Based on this philosophy, for every ICB software devices (see [RD 08]), a corresponding uifClass and itcl wrapper class is available in the icbpan module.
Table 1 lists all uifClasses with the corresponding wrapper and device identification.
Description |
ICB
class |
uifClass |
itcl
wrapper class |
Lamp |
icbLAMP |
icbpanLamp_uifClass |
icbpanLamp |
Shutter |
icbSHUTTER |
icbpanShutter_uifClass |
icbpanShutter |
Filter wheel |
icbMOT_FILTER |
icbpanNamedPos_uifClass |
icbpanNamedPos |
Mirror wheel |
icbMOT_MIRROR |
icbpanNamedPos_uifClass |
icbpanNamedPos |
Slit wheel |
icbMOT_SLITS |
icbpanNamedPos_uifClass |
icbpanNamedPos |
Generic wheel |
icbMOT_OPTI |
icbpanNamedPos_uifClass |
icbpanNamedPos |
Generic slide |
icbMOT_POS |
icbpanContPos_uifClass |
icbpanContPos |
Slit length |
icbMOT_SLIT2_LEN |
icbpanSlit2_uifClass |
icbpanSlit2 |
Slit Width |
icbMOT_SLIT2_WID |
icbpanSlit2_uifClass |
icbpanSlit2 |
Tilt |
icbMOT_TILT |
icbpanContPos_uifClass |
icbpanContPos |
Grating |
icbMOT_GRATING2 |
icbpanGrat_uifClass icbpanGratNoOrd_uifClass |
icbpanGrat icbpanGratNoOrd[1] |
Depolarizer |
icbMOT_DPOR |
icbpanDpol_uifClass |
icbpanDpol |
ADC |
icbMOT_ADC |
icbpanAdc_uifClass |
icbpanAdc |
Derotator |
icbMOT_DROT |
icbpanDrot_uifClass |
icbpanDrot |
Cryostat sensor |
icbSEN_ADAM |
icbpanSensor_uifClass |
icbpanSensor [2] |
Pressure sensor |
icbSEN_BAROMETER |
icbpanSensor_uifClass |
|
Cryogen. Temp. sensor |
icbSEN_CN77000 |
icbpanSensor_uifClass |
|
Cabinet cool. Sensor |
icbSEN_COOLING |
icbpanSensor_uifClass |
|
Digital sensor |
icbSEN_DIGITAL |
icbpanSensor_uifClass |
icbpanSensor 2 |
Temp. sensor |
icbSEN_ESTERS |
icbpanSensor_uifClass |
icbpanSensor 2 |
Humidity sensor |
icbSEN_HUMIDITY |
icbpanSensor_uifClass |
icbpanSensor 2 |
Exposure meter |
icbSEN_EXPM |
icbpanPmt_uifClass |
icbpanPmt |
Assembly |
N/A |
icbpanAssembly_uifClass |
icbpanAssembly |
Table 1: implemented uifClasses.
The specific instrument configuration file (see [RD 08]) provides the input necessary to establish the number and type of instrument devices and, with a set of dedicated keywords, also to define the appearance of the ICS control panel (see section 5).
Finally, the communication with the ICS front-end control process is hidden in specific itcl classes built using the philosophy explained before.
Table 2 contains a list of such classes.
Description |
uifClass |
itcl
wrapper class |
Display the global ICS state |
icbpanICSState_uifClass |
icbpanICSState[3] |
Table 2: classes dealing with the ICS communication
All uifClasses and relative wrappers are contained in one sw module: icbpan. The ICS GUI application provided by the Template Instrument in the module xxipan could be used as a starting point to build a new instrument ICS GUI.
This chapter is intended to provide all information needed to operate an instrument ICS from a GUI based on icbpan.
The example provided by the Template Instrument (see [RD 13]) is used to better illustrate the concept.
The ICS GUI should be started using the common startup tool stoo (see [RD 10]):
%xxinsStart –panel ICS
During the startup the panel reads the instrument configuration and, in case of no errors, the ICS GUI pops-up (it can take a while, depending on host type and instrument complexity).
Figure 1 shows the example provided by the Template Instrument
(configuration file $INS_ROOT/SYS-TEM/COMMON/CONFIGFILES/xxmcfgINS.cfg).
Figure 1: ICS GUI
The following sections describe in detail the various parts of the panel.
The menu bar in general contains commands less frequently used. Figure 2 shows the expanded menu bar.
See manual page of the Template Instrument panel xxipanControl, section 6.2.1, for more information on the individual menu options.
Figure 2: ICS GUI menu section
3.1.2 Global State
This area of the control panel shows the ICS global state (see Figure 3).
See manual page of the Template Instrument panel xxipanControl, section 6.2.1, for more information on its contents.
Figure 3: ICS GUI global state area
For every device defined and configured in the instrument configuration file, a corresponding uifClass is placed in a notebook itk widget. The use of notebook itk widget allows packing various sets of logically linked devices (as could be motorized functions, lamp/shutters and sensors) optimizing the overall dimension of the panel. The operator could easily, simultaneously, check the current state of various devices by simply selecting the required notebook’s tab.
Figure 4 shows the example provided by the Template Instrument.
The overall configuration of various devices is done at the panel start-up by extracting all the relevant information from the specific instrument configuration file (e.g. filter names, modes etc.). Every uifClass is moreover connected to the corresponding device branch in the OLDB. Typically the following output is shown:
· device name;
· device state (OFF/STANDBY/ONLINE);
· operational mode (simulation and handset);
· current position (named);
· current position (encoder unit).
Sensor devices are treated in a slightly different way. They neither accept the SETUP command nor have a position defined. The only commands affecting the behavior of sensors are those used to change the state or the simulation level. For every sensor devices a list of sensor values is reported. Values are read directly from the OLDB. The label for each single sensor is again extracted from the instrument configuration file.
Figure 4: ICS GUI single devices area
3.1.4 Command Feedback, Short Help and Action Buttons
At the bottom of the main panel a Command Feedback Widget gives a log of all sent commands.
A short help widget provides additional information related to the widget in the mouse focus.
Finally, action buttons are provided (see Figure 5):
q SETUP: Send SETUP to all selected
devices
q STOP: Send STOP to all selected devices
4 Figure 5: Command feedback, short help and action buttons area TUTORIAL: IMPLEMENTING ICS CONTROL PANEL FROM SCRATCH
This chapter is intended to software developers, who are starting from scratch with the implementation of the ICS control panel for a new instrument. It will describe how to adapt the template instrument code and extend its functionality to fit the specific instrument requirements.
Please follow step by step the instructions described in this chapter, executing them in the same order as presented.
In the examples provided in this chapter, it is assumed that the new instrument prefix is nn (keyword INS.CON.PREFIX in the configuration file) and its ID is NNNN (keyword INS.CON.ID). These strings should be adapted to the specific instrument case.
It is assumed that:
1. you have already defined a basic ICS configuration
2. the environment in which ICS processes should run is active
3. ICS processes are running and database is accessible
Please refer to [RD 08] if one of these points is not fulfilled.
It is also assumed that the icbpan software module, as part of VLT common sw (from OCT2001 release), is already installed, and that the user is familiar with the VLT sw panel editor, its functionality and its operations (see [RD 06]).
4.1 Create the ICS control panel module
Skip this section if you have created the new instrument code with the utility xxinsCreateNewInstrument (see [RD 13]).
The simplest and fastest approach to build a new ICS control panel from scratch is to start from the code provided with the template instrument in the module xxipan.
The following steps must be done:
1.
retrieve
xxipan module
Ø cmmCopy xxipan
2.
rename the
module directory
Ø
mv xxipan nnipan
3.
rename all
module files
Ø find nnipan –type f –print | xargs tooMvReplace xx nn
4.
modify the
contents of all module files
Ø chmod –R +w nnipan
Ø find nnipan –type f –print | xargs tooReplace xx nn
Ø find nnipan –type f –print | xargs tooReplace XXXX NNNN
4.2 Design the ICS control panel layout
Edit the panel source file (nnipanControl.pan) with the VLT panel editor. After all steps described in section 4.1, this panel contains the following frames:
1. nnipanICSState
2. nnipanNotebook1
3. nnipanNotebook2
The first frame, as well as the buttons in the action buttons area and the menu options, should be left unchanged.
The nnipanNotebooki frames instead are the only ones, whose size and number depend on the instrument characteristics.
Decide in how many notebooks you want to distribute the instrument devices and make sure that the panel contains as many nnipanNotebooki frames as you want (remember to rename the widgets name to nnipanNotebooki i=1,..,N). Make also sure that their position and size correspond to the expected one (they can be refined in a second iteration) and that the “Automatic Re-size” option is selected.
Save
the panel and build the module:
% make clean all man install
4.3 Configure the ICS control panel layout
To configure the ICS GUI layout, edit the instrument configuration file nnmcfgINS.cfg (see [RD 08] and chapter 5 of this manual for the details).
Make sure that the total number of notebooks defined by the keyword INS.UIF.NBOOKS (default 1) in the instrument configuration file corresponds to the number of frame widgets nnipanNotebooki created during step 4.2.
When
building an ICS GUI from scratch, it is recommended to skip the uifClasses for
special devices. This is accomplished by setting the <prefix>.UIFCLASS
keyword to “” (see chapter 5). To create a special device class and add it to the
GUI see section 4.5
4.4 Starting the ICS control panel
At this point the panel is ready to be started. Type:
% nnipanControl &
The ICS control panel should pop-up; see section 3 for a complete description on how to operate with it. Depending on the instrument complexity (i.e. on the number of the defined devices) the various frames could overlap or could not show the whole content (or more simply you don’t like the current positioning). In this case a manual resizing is necessary. See section 4.2
Every ICB standard device (see [RD 08]) has a corresponding wrapper class (see 2.1), which implements all the basic (standard) features for this device.
4.5.1 Overriding default behavior
It could happen that a specific instrument owns a device with a slightly different behavior respect to the standard. By using the inheritance mechanism it is possible to adapt and/or override the default.
An example is provided in icbpan/test for the GRAT device. The ICB standard grating device accepts, among others, also a keyword specifying the current grating order. The corresponding uifClass (icbpanGrat.tcl) has therefore an “order” entry widget to insert the required number. In our test case such an order is not needed[4]. A new class (icbpanTestGrat) is therefore implemented which simply:
1. inherits the icbpanGrat class;
2. overrides the icbpanGrat:: updateWdg method (by forcing a default and disabling the “order” entry widget).
When the class is packed in the notebook, the field of the entry widget is disabled and the user cannot send anymore any order number, as shown in Figure 6.
Figure 6: Example of wrapper class inheritance
The inheritance mechanism allows also adding functionality to the standard uifClasses. Of course, what you cannot do, is to block or selectively inherit some properties; to this purpose a new class should be created from scratch as described hereafter.
4.5.2 Building an uifClass from scratch
For really specific instrument devices, which are not (and could not be) supported by the standard ICB, new uifClasses and corresponding itcl wrapper classes should be created. Once created, by means of the configuration keywords, they can be placed everywhere on the control panel (see chapter 5). The procedure to build such a “special uifClass” is quite simple (an example of such special device is provided in icbpan/test). The following steps are required:
1. Create with the panel editor a class with the widgets that suit your needs.
For entry widgets, it is recommended to use
the mega-widget icbpanEntry instead
of the standard widget UifEntry,
provided by the panel editor. The widget icbpanEntry
provides additional functionality, such as validity check against range and
data type.
For the device YYYY the class shown in Figure 7 has been created (see icbpanTestSpecial_uifClass.tcl).
2. Create a wrapper class which inherits the just created “*_uifClass.tcl” (see icbapnTestSpecial.tcl);
3. Add/implement in the wrapper class at least the following public methods:
· isSelected – which returns 0/1 depending on the current status of the checkbutton;
· setSelected <val> - which sets the checkbutton to 1/0;
· getKeyw – which prepares and returns a string of keyword(s) to be sent to the front-end ICS process with the SETUP cmd;
· setKeyw <val> - which analyses the passed string (i.e. val) and extract from it values to be inserted in the corresponding class widgets (it is used when loading a setup files).
4. Add in the wrapper class at least the following public variables:
· public variable devType “”
· public variable cfgObj “”
5. If the class contains widgets of type icbpanEntry, add the following public method:
· entryWdg – which returns the list of icbpanEntry widgets. See also NOTE 2 below.
Once a special uifClass is created you can pack it everywhere on the control panel by means of the configuration keywords (as described in section 5).
Figure 7: Example of special class construction
5 CONFIGURATION GUIDE
A set of keywords (defined in the dictionary ESO-VLT-DIC.ICB_CFG) is dedicated to the configuration of the ICS control GUI layout. They are described in the Table 3.
Keyword
|
Description
|
INS.UIF.NBOOKS
|
Specify how many
notebooks should be present. |
INS.UIFi.TABS
|
Specify how many
tabs should be present in notebook i |
INS.UIFj.LABELi
|
Specify label to
be assigned to the tab “i” in the notebook “j” |
INS.UIF. NAME
|
Name of the panel executable, i.e. without the extension .pan. If missing, <INS.CON.PREFIX>ipanControl is assumed. This keyword should normally be used only when more than one panel is used for the same ICS. |
INS.FILTi.UIFCLASS |
uifClass to be
used for this device. Same as INS.FILTi for all other type of devices.[5] |
INS.FILTi.UIFNB |
Index of notebook
where widget for this device should appear |
INS.FILTi.UIFTB |
Index of tab
where widget for this device should appear. |
INS.FILTi.UIFSPECIAL |
If T, the coding
of the states for the associated output field are those of an icb special
device[7]. Needed when a default icbpan uifClass is
used for an icb special device. |
INS.SENSORi.UIFCOL |
Specify the number of columns over which the widgets associated to a sensor device must be distributed. If missing, and also UIFROW (see below) is missing, the default is 1, i.e. all widgets are aligned vertically. |
INS.SENSORi.UIFROW |
Specify the number of rows over which the widgets associated to a sensor device must be distributed. |
INS.SENSORi.UIFWID |
Specify the size, in characters, of the status widget associated to a sensor device. If missing, 5 is assumed. |
Table 3: configuration keywords for ICS control panel
The following example produces the layout shown in Figure 1 (see file xxmcfgINS.cfg).
# create two notebooks
INS.UIF.NBOOKS 2
#add in the first notebook two tabs
INS.UIF1.TABS 2
# add in the second notebook seven tabs
INS.UIF2.TABS 7
# configure the first notebook’s tabs with the following labels
INS.UIF1.LABEL1 "Motors"
INS.UIF1.LABEL2 "Lamps/shutters"
# configure the second notebook’s tabs with the following labels
INS.UIF2.LABEL1 "FCS"
INS.UIF2.LABEL2 "BARO"
INS.UIF2.LABEL3 "FCTC"
INS.UIF2.LABEL4 "CCC1"
INS.UIF2.LABEL5 "DIS1"
INS.UIF2.LABEL6 "ENCH"
INS.UIF2.LABEL7 "TEMP"
# place INS.LAMP1 device on the first notebook, second tab
INS.LAMP1.UIFNB 1
INS.LAMP1.UIFTB 2
# place INS.SHUT1 device on the first notebook, second tab
INS.SHUT1.UIFNB 1
INS.SHUT1.UIFTB 2
# do not include INS.MIRR2 device (special device)
INS.MIRR2.UIFCLASS ""
# place all sensors device on the second notebook; every device is placed in its own tabs
INS.SENSOR1.UIFNB 2
INS.SENSOR1.UIFTB 1
INS.SENSOR2.UIFNB 2
INS.SENSOR2.UIFTB 2
# INS.SENSOR2 is implemented on LCU as an icb special device. State coding must be set accordingly
INS.SENSOR2.UIFSPECIAL T
INS.SENSOR3.UIFNB 2
INS.SENSOR3.UIFTB 3
INS.SENSOR4.UIFNB 2
INS.SENSOR4.UIFTB 4
INS.SENSOR5.UIFNB 2
INS.SENSOR5.UIFTB 5
INS.SENSOR6.UIFNB 2
INS.SENSOR6.UIFTB 6
INS.SENSOR7.UIFNB 2
INS.SENSOR7.UIFTB 7
#
assemblies
INS.ASSEMBLY3.UIFTB 4
Note 1: Every sensor device usually controls
many sensors. It is a good idea therefore to place every single sensor device
in a separate tab.
Note 2: If for any reason you don’t want
that a class will be drawn, simply define the {device name}.UIFCLASS with an
empty string.
See
also other examples under icbpan/test/INS_ROOT/SYSTEM/COMMON/CONFIGFILES/icbpanTest*.cfg
5.1 Abnormal conditions reported by sensors
Normally the values read by sensors are displayed with black color. The color changes to red, thus signaling an abnormal condition, if all the following conditions are met:
alarm<i>
where <i> is the index corresponding to that sensor within the device, starting from 0 for the first sensor.
An
example is available in icbpan/test/dbl/
icbpanTestIcs1.db
Example: we want that the value of the third sensor of device TEMP turns red if it is outside the range [5.2,40.4]. To achieve this, we add the alarm2 attribute to the TEMP OLDB point and associate to it a CE formula
//************************************************************************
// Device TEMP
//
POINT icbSEN_ESTERS :Appl_data:XXXX:ICS:DEVICES:TEMP
BEGIN
ALIAS TEMP
…..
#ifndef MAKE_VXWORKS
ATTRIBUTE logical alarm2
BEGIN
// Do no raise alarms if value is illegal or monitoring not active (state not standby or online)
Definition IF([.state] < 2, 0, IF([.last(2)] = 9999, 0, IF([.last(2)] < 5.2, 1, IF([.last(2)]>40.4,1,0))))
END
#endif
END
NAME
icbpanCmd, icbpanCmdQueryCommands,
icbpanCmdQueryParameters,
icbpanExecCmd, icbpanWaitPid, icbpanDbRead,
icbpanSelectAll,
icbpanDeselectAll, icbpanEditCfgFile,
icbpanSetLCUCfg,
icbpanSaveAsSetup, icbpanSaveSetup,
icbpanLoadSetup,
icbpanLcuBoot, icbpanGetDevice,
icbpanGetDevicePrefix,
icbpanGetDeviceName, icbpanGetDeviceLcuId,
icbpanGetDeviceLcuName,
icbpanCfgCat, icbpanInsCat, icbpanIcsPrefix,
icbpanIcsId,
icbpanLcus - tcl procedures used within ICB
control panel.
SYNOPSIS
icbpanCmd
<envName><procName> <cmd> [parms] [timeout] [disp]
icbpanCmdQueryCommands <Process>
icbpanCmdQueryParameters <Process>
<Command>
icbpanExecCmd <args> [bg] [wait] [xterm]
icbpanWaitPid <pid>
icbpanDbRead <attr>
icbpanSelectAll <listAllDevices>
icbpanDeselectAll <listAllDevices>
icbpanEditCfgFile <file>
icbpanSetLCUCfg <INS>
icbpanSaveAsSetup <listAllDevices> <dic>
icbpanSaveSetup <allDevices> <file>
<dic>
icbpanLoadSetup <allDevices> <file>
<dic>
icbpanLcuBoot <lcuenv>
icbpanGetDevice <listAllDevices>
<devName>
icbpanGetDevicePrefix <cfg object> <devType>
icbpanGetDeviceName <cfg object> <dev Type>
icbpanGetDeviceLcuId <cfg object> <dev Type>
icbpanGetDeviceLcuName <cfg object> <dev Type>
icbpanCfgCat <cfg object>
icbpanInsCat <cfg object>
icbpanIcsPrefix <cfg object>
icbpanIcsId <cfg object>
icbpanLcus <cfg object>
DESCRIPTION
icbpanCmd
sends a command to ICS front-end process and waits for last reply
icbpanCmdQueryCommands
query cmdManager for cmds accepted by Process
icbpanCmdQueryParameters
query cmdManager for parameters accepted by Command of Process
icbpanExecCmd
execute args; wait=0 return immediately; wait=1 waits completion
of invoked process; xterm=1 start application in a new xterm;
bg = "" doesn't start in background
icbpanWaitPid
wait until process terminate
icbpanDbRead
is the specific implementation of seq_dbReadSymbolic
icbpanSelectAll, icbpanDeselectAll
set/unset checkbutton for all devices in "listAllDevices"
icbpanEditCfgFile
invoke emacs on the cfg file
icbpanSetLCUCfg
invoke icbConfigSet on instrument INS
icbpanSaveAsSetup, icbpanSaveSetup
saves parameters of the selected devices to a file
icbpanLoadSetup
loads the content of a setup file and sets panel widgets
accordingly
icbpanLcuBoot
reboot LCU lcuenv
icbpanGetDevice
return the object corresponding to the device <devName>.
icbpanGetDevicePrefix
return the prefix associated to the device type <devType>.
icbpanGetDeviceName
return the name associated to the device <devType>
icbpanGetDeviceLcuId
return the LCU index associated to the device <devType>
icbpanGetDeviceLcuName
return the LCU name associated to the device <devType>
icbpanCfgCat
return the configuration category associated to <cfg object>
icbpanInsCat
return the instrument category associated to <cfg object>
icbpanIcsPrefix
return the ICS prefix associated to <cfg object>
icbpanIcsId
return the ICS id used by stoo and associated to <cfg object>
icbpanLcus
return the ICS LCUs associated to <cfg object>
FILES
$INS_ROOT/SYSTEM/COMMON/CONFIGFILES/*CONFIG.cfg
ENVIRONMENT
INS_ROOT Instrument root
area
INTROOT Integration area
VLTROOT VLT area
### generated by docDeroff ###
NAME
icbpanGUIcfg - itcl class used to construct
ICB control panel.
SYNOPSIS
icbpanGUIcfg xxinsGUI xxinsCfg
DESCRIPTION
This itcl class is an utility class which
contains a set
of methods to pack notebooks and control
classes on the
ICB control panel.
PUBLIC METHODS
icbpanGUIcfg xxinsGUI xxinsCfg
constructor. An object of type ctooCONFIG must be passed to
properly read all the requested information.
lcuBootMenu <menuPath>
add on the specified panel menu (individuated by the passed menuPath
string) commands to reboot LCU(s)
(the number of added cmds correspond to the number of defined LCUs).
wdgICScontrol <frameICS1>
pack class icbpanICSControl on frame frameICS1.
wdgICScmd <frameICS2>
pack class icbpanICSCmd on frame frameICS2.
funcICScontrol <frameFunc>
<devicesList>
pack class icbpanICSDevControl on frame frameFunc. DevicesList
contains the number of configured devices. This method must be
called after notebooks are created.
createNotebooks <framesList>
pack notebooks on frames extracted from framesList.
The number of tabs in each notebook and the relative labels
are extracted from INSi.UIFi.TABS and INSi.UIFi.LABELj.
After notebooks construction the method reads the configuration
file and places all configured devices in the specific
notebook. The look and feel is controlled by a set of dedicated
configuration keywords.
At the end it returns the number of drawn devices as a list.
The just created list could be used then as a parameter for
the "funcICScontrol" method.
getNotebooks <cv>
return a list consisting of { <framesList> <framesGeometry>
} where
<framesList> is the list of notebook frames to be passed to
createNotebooks
<framesGeometry> is a list of items { <xCoord>
<yCoord> <width> <height> }
<cv> is the panel variable associated to the canvas where
notebook frames are.
setNotebookDim [<nbIdx 1>] [<width
300>] [<height 300>]
set new dimension for the notebook identified by a number.
setNotebookDimAll <framesGeometry>
set new dimension for all notebooks in <framesGeometry>
Every element of <framesGeometry> consists of <xCoord>
<yCoord> <width> <height>
setPanelDim [<framesGeometry/width >]
[<height>]
set new dimension for the panel.
If two parameters are passed, they are interpreted as <width>
<height>
If only one parameter is passed, it is interpreted as
<framesGeometry>
as from getNotebooks
initClass <cv> <dimList>
initialize uifClasses and frames in the panel
At the end it returns the number of drawn devices as a list.
<cv> is the panel variable associated to the canvas where
notebook frames are.
<dimList> is the list of notebooks dimension
Every element of <dimList> consists of <width>
<height>
PRIVATE METHOD
putUifClasses
For every device defined in the cfg file, pack the relative
class. The position (notebook+tab) is extracted from
$devType.UIFNB and $devType.UIFTB (devType==INSi.CON.DEVICE); the
class to be placed is read either from devType.UIFCLASS or
extracted with the method getUifClass of icbpanUIF class.
FILES
$INS_ROOT/SYSTEM/COMMON/CONFIGFILES/*CONFIG.cfg
ENVIRONMENT
INS_ROOT Instrument root
area
INTROOT Integration area
VLTROOT VLT area
SEE ALSO
ctooCONFIG(8)
### generated by docDeroff ###
NAME
icbpanUIF - itcl class used for managing
icbpan devices classes
SYNOPSIS
icbpanUIF handleUif -cfgObj $cfgObj
where cfgObj is a ctooCONFIG object;
DESCRIPTION
This class is used internally by the icbpan
control panel to
associate an uifClass to the corresponding
devices. It constructs
an internal keyed list containing pairs
device/uifClass
(the key is actually the device name).
PUBLIC METHODS
icbpanUIF
xxx
constructor. Calls two private methods. "defaultUifclasses"
method simply fill a keyed list (defuif) with default
associations; "initUifclasses" instead, by comparing
current instrument settings with the default keyed list,
extract and construct instrument specific keyed list (keylist).
From this list, during panel construction, the uifClass to be drawn
is extracted.
getUifClass devType
according to the passed "devType" the corresponding uifClass
is returned.
addUifClass devType className
add in the keyed list a new pair device/uifClass.
delUifClass devType
delete an entry in the keyed list having devType as a key.
PUBLIC VARIABLES
cfgObj
ctooCONFIG object (configuration file interface)
FILES
$INS_ROOT/SYSTEM/COMMON/CONFIGFILES/*CONFIG.cfg
ENVIRONMENT
INS_ROOT Instrument root
area
INTROOT Integration area
VLTROOT VLT area
CAUTIONS
This class is used internally and should not
be modified.
### generated by docDeroff ###
NAME
icbpanState, icbpanStartup,
icbpanShutdown - Tcl GUI procedures operating
on the whole ICS
SYNOPSIS
icbpanState <command>
icbpanStartup
icbpanShutdown
DESCRIPTION
Tcl procedures, used within ICS panels to
handle ICS global operations.
icbpanState executes the state transition
<command> for ICS
<command> can be OFF STANDBY
or ONLINE
icbpanStartup executes a start-up of the ICS
WS processes
icbpanShutdown executes a shut-down of the ICS
WS processes
### generated by docDeroff ###
NAME
icbpanEntry - UifEntry derived class
SYNOPSIS
icbpanEntry <widget-name>
DESCRIPTION
icbpanEntry is a mega-widget which can be imported and configured
with the panel editor.
It inherits the standard UifEntry class and adds specific features
required by icbpan:
- validate entry value: highlight
background when a wrong value is
entered or undo
"bad" typing
- handle key events: see
SPECIFIC BINDINGS
- return entry value
PUBLIC METHODS
public method getSelected { updateBackground }
- return entry value after checking for validity.
Return empty string if entry value is not valid.
If updateBackground=1, update background according to validity
default=0 (do not update background)
public method configHelp { txt }
- configure short help text
public method setValue { val }
- set entry value
WIDGET OPTIONS
valType <string> Value type (integer, float, any),
default=float
command <string> Command callback: evaluated when a
non-empty value
was entered; optional, default={}. Adds
entry value.
justify <string> Where entered characters start,
default=left
undo <logical> Automatically undo "bad" typing
(0=no, 1=yes),
default=no
colBadVal <string> Background color when a "bad"
char was entered,
default=red
id <string> Entry id. Used to distinguish among
different entry
types (e.g. user
units versus encoder units)
SPECIFIC BINDINGS
<KeyRelease>
Checks the value
<KeyPress-Escape>
Clears the entry
<ButtonRelease-3>
Clears the entry
<Key-Up>
Displays last entered value (or the value returned by
method getSelected)
<Return>
Returns the value
EXAMPLES
$cv.icbpanMOTEnc config \
-valType integer \
-command [code $this
encoderEnterCb] \
-justify right \
-undo 0 \
-colBadVal red
SEE ALSO
UifEntry
### generated by docDeroff ###
NAME
icbpanLamp - wrapper class for
icbpanLamp_uifClass
SYNOPSIS
icbpanLamp .w \
-background Grey90 \
-relief flat \
-cfgObj $cfgObj \
-cwp
"<alias>${devName}" \
-devType $devType]
where cfgObj is a ctooCONFIG object;
devType is extracted from
INS.CON.DEVICE${i}
devName is extracted from
${devType}.DEVNAME
DESCRIPTION
Itcl wrapper class to handle ICB LAMP device.
The corresponding
ibcpanLamp_uifClass contains a set of output
widget (linked to OLDB)
which in turn display the device name, keyword
used to identify the
device, the current simulation level
(N=normal,S=simulate), the current
device state, handset mode (H, if active) and
the current position
(named and in encoder unit). The class
contains also an option
button to select among various setup parameters
and an entry widget
for setting position values. Finally a
checkbutton is used to
indicate if the corresponding device is
selected for some actions.
PUBLIC METHODS
icbpanLamp
xxx
constructor. Calls "initFunction" which initialize the option
button with appropriate parameters.
isSelected
get the current status of the checkbutton (0/1).
setSelected 0/1
set the checkbutton state to 0 or 1 (unselected or selected).
getKeyw
returns the associated setup keyw. + value. This method reads
from the option button and entry widget the current user
settings and prepare a string to be sent to ICS control process.
This method is normally called when the SETUP cmd is invoked.
setKeyw val
extract from "val" the keyword parameter + value and fill the
corresponding option button + entry. This method is called usually
during a reading of a previously saved setup file.
PUBLIC VARIABLES
cfgObj
ctooCONFIG object (configuration file interface)
devType
device type extracted from INS.CON.DEVICE${i}
FILES
$INS_ROOT/SYSTEM/COMMON/CONFIGFILES/*CONFIG.cfg
ENVIRONMENT
INS_ROOT Instrument root
area
INTROOT Integration area
VLTROOT VLT area
SEE ALSO
ctooCONFIG(8)
### generated by docDeroff ###
NAME
icbpanShutter - wrapper class for
icbpanShutter_uifClass
SYNOPSIS
icbpanShutter .w \
-background Grey90 \
-relief flat \
-cfgObj $cfgObj \
-cwp
"<alias>${devName}" \
-devType $devType]
where cfgObj is a ctooCONFIG object;
devType is extracted from
INS.CON.DEVICE${i}
devName is extracted from ${devType}.DEVNAME
DESCRIPTION
Itcl wrapper class to handle ICB SHUT device.
The corresponding
ibcpanShutter_uifClass contains a set of
output widget (linked to OLDB)
which in turn display the device name, keyword
used to identify the
device, the current simulation level
(N=normal,S=simulate), the current
device state, handset mode (H, if active) and
the current position
(named and in encoder unit). The class
contains also an option
button to select among various setup
parameters and an entry widget
for setting position values. Finally a
checkbutton is used to
indicate if the corresponding device is
selected for some actions.
PUBLIC METHODS
icbpanShutter
xxx
constructor. Calls "initFunction" which initialize the option
button with appropriate parameters.
isSelected
get the current status of the checkbutton (0/1).
setSelected 0/1
set the checkbutton state to 0 or 1 (unselected or selected).
getKeyw
returns the associated setup keyw. + value. This method reads
from the option button and entry widget the current user
settings and prepare a string to be sent to ICS control process.
This method is normally called when the SETUP cmd is invoked.
setKeyw val
extract from "val" the keyword parameter + value and fill the
corresponding option button + entry. This method is called usually
during a reading of a previously saved setup file.
PUBLIC VARIABLES
cfgObj
ctooCONFIG object (configuration file interface)
devType
device type extracted from INS.CON.DEVICE${i}
FILES
$INS_ROOT/SYSTEM/COMMON/CONFIGFILES/*CONFIG.cfg
ENVIRONMENT
INS_ROOT Instrument root
area
INTROOT Integration area
VLTROOT VLT area
SEE ALSO
ctooCONFIG(8)
### generated by docDeroff ###
NAME
icbpanNamedPos - wrapper class for
icbpanNamedPos_uifClass
SYNOPSIS
icbpanNamedPos .w \
-background Grey90 \
-relief flat \
-cfgObj $cfgObj \
-cwp
"<alias>${devName}" \
-devType $devType]
where cfgObj is a ctooCONFIG object;
devType is extracted from
INS.CON.DEVICE${i}
devName is extracted from
${devType}.DEVNAME
DESCRIPTION
Itcl wrapper class to handle ICB motorized
devices with discrete (named)
positions, such as FILT, MIRR, OPTI etc. The
corresponding
ibcpanNamedPos_uifClass contains a set of
output widget (linked to OLDB)
which in turn display the device name, keyword
used to identify the
device, the current simulation level
(N=normal,S=simulate), the current
device state, handset mode (H, if active) and
the current position
(named and in encoder unit). The class
contains also an option
button to select among various setup
parameters and an entry widget
for setting position values. Finally a
checkbutton is used to
indicate if the corresponding device is
selected for some actions.
PUBLIC METHODS
icbpanNamedPos
xxx
constructor. Calls "initFunction" which initialize the option
button with appropriate parameters.
isSelected
get the current status of the checkbutton (0/1).
setSelected 0/1
set the checkbutton state to 0 or 1 (unselected or selected).
getKeyw
returns the associated setup keyw. + value. This method reads
from the option button and entry widget the current user
settings and prepare a string to be sent to ICS control process.
This method is normally called when the SETUP cmd is invoked.
setKeyw val
extract from "val" the keyword parameter + value and fill the
corresponding option button + entry. This method is called usually
during a reading of a previously saved setup file.
PROTECTED METHODS
updateWdg item
this method is called to modify on-the-fly the appearance of
the widgets. E.g. if a particular param. selection requires also some
input values, the corresponding entry widget is enabled,
otherwise it is disabled. User can override this method to
implement some specific behavior.
PUBLIC VARIABLES
cfgObj
ctooCONFIG object (configuration file interface)
devType
device type extracted from INS.CON.DEVICE${i}
FILES
$INS_ROOT/SYSTEM/COMMON/CONFIGFILES/*CONFIG.cfg
ENVIRONMENT
INS_ROOT Instrument root area
INTROOT Integration area
VLTROOT VLT area
SEE ALSO
ctooCONFIG(8)
### generated by docDeroff ###
NAME
icbpanContPos - wrapper class for
icbpanContPos_uifClass
SYNOPSIS
icbpanContPos .w \
-background Grey90 \
-relief flat \
-cfgObj $cfgObj \
-cwp
"<alias>${devName}" \
-devType $devType]
where cfgObj is a ctooCONFIG object;
devType is extracted from
INS.CON.DEVICE${i}
devName is extracted from
${devType}.DEVNAME
DESCRIPTION
Itcl wrapper class to handle ICB POS device.
The corresponding
ibcpanContPos_uifClass contains a set of
output widget (linked to OLDB)
which in turn display the device name, keyword
used to identify the
device, the current simulation level
(N=normal,S=simulate), the current
device state, handset mode (H, if active) and
the current position
(named and in encoder unit). The class
contains also an option
button to select among various setup
parameters and an entry widget
for setting position values. Finally a
checkbutton is used to
indicate if the corresponding device is
selected for some actions.
PUBLIC METHODS
icbpanContPos
xxx
constructor. Calls "initFunction" which initialize the option
button with appropriate parameters.
isSelected
get the current status of the checkbutton (0/1).
setSelected 0/1
set the checkbutton state to 0 or 1 (unselected or selected).
getKeyw
returns the associated setup keyw. + value. This method reads
from the option button and entry widget the current user
settings and prepare a string to be sent to ICS control process.
This method is normally called when the SETUP cmd is invoked.
setKeyw val
extract from "val" the keyword parameter + value and fill the
corresponding option button + entry. This method is called usually
during a reading of a previously saved setup file.
PROTECTED METHODS
updateWdg item
this method is called to modify on-the-fly the appearance of
the widgets. E.g. if a particular param. selection requires also some
input values, the corresponding entry widget is enabled,
otherwise it is disabled. User can override this method to
implement some specific behavior.
PUBLIC VARIABLES
cfgObj
ctooCONFIG object (configuration file interface)
devType
device type extracted from INS.CON.DEVICE${i}
FILES
$INS_ROOT/SYSTEM/COMMON/CONFIGFILES/*CONFIG.cfg
ENVIRONMENT
INS_ROOT Instrument root
area
INTROOT Integration area
VLTROOT VLT area
SEE ALSO
ctooCONFIG(8)
### generated by docDeroff ###
NAME
icbpanSlit2, icbpanSlit2Len, icbpanSlit2Wid -
wrapper class for icbpanSlit2_uifClass
SYNOPSIS
icbpanSlit2 .w \
-background Grey90 \
-relief flat \
-cfgObj $cfgObj \
-cwp
"<alias>${devName}" \
-devType $devType]
where cfgObj is a ctooCONFIG object;
devType is extracted from
INS.CON.DEVICE${i}
devName is extracted from
${devType}.DEVNAME
DESCRIPTION
Itcl wrapper class to handle ICB SLIT2 device.
The corresponding
ibcpanSlit2_uifClass contains a set of output
widget (linked to OLDB)
which in turn display the device name, keyword
used to identify the
device, the current simulation level
(N=normal,S=simulate), the current
device state, handset mode (H, if active) and
the current position
(named and in encoder unit -left/right). The
class contains also an option
button to select among various setup
parameters and an entry widget
for setting position values. Finally a
checkbutton is used to
indicate if the corresponding device is
selected for some actions.
PUBLIC METHODS
icbpanSlit2
xxx
constructor. Calls "initFunction" which initialize the option
button with appropriate parameters.
isSelected
get the current status of the checkbutton (0/1).
setSelected 0/1
set the checkbutton state to 0 or 1 (unselected or selected).
getKeyw
returns the associated setup keyw. + value. This method reads
from the option button and entry widget the current user
settings and prepare a string to be sent to ICS control process.
This method is normally called when the SETUP cmd is invoked.
setKeyw val
extract from "val" the keyword parameter + value and fill the
corresponding option button + entry. This method is called usually
during a reading of a previously saved setup file.
PROTECTED METHODS
updateWdg item
this method is called to modify on-the-fly the appearance of
the widgets. E.g. if a particular param. selection requires also some
input values, the corresponding entry widget is enabled,
otherwise it is disabled. User can override this method to
implement some specific behavior.
PUBLIC VARIABLES
cfgObj
ctooCONFIG object (configuration file interface)
devType
device type extracted from INS.CON.DEVICE${i}
FILES
$INS_ROOT/SYSTEM/COMMON/CONFIGFILES/*CONFIG.cfg
ENVIRONMENT
INS_ROOT Instrument root
area
INTROOT Integration area
VLTROOT VLT area
SEE ALSO
ctooCONFIG(8)
### generated by docDeroff ###
NAME
icbpanGrat - wrapper class for
icbpanGrat_uifClass
SYNOPSIS
icbpanGrat .w \
-background Grey90 \
-relief flat \
-cfgObj $cfgObj \
-cwp
"<alias>${devName}" \
-devType $devType]
where cfgObj is a ctooCONFIG object;
devType is extracted from
INS.CON.DEVICE${i}
devName is extracted from
${devType}.DEVNAME
DESCRIPTION
Itcl wrapper class to handle ICB GRAT device.
The corresponding
ibcpanGrat_uifClass contains a set of output
widget (linked to OLDB)
which in turn display the device name, keyword
used to identify the
device, the current simulation level (N=normal,S=simulate),
the current
device state, handset mode (H, if active) and
the current position
(named and in encoder unit). The class
contains also an option
button to select among various setup
parameters and two entry widget
for setting position values (wlen/encoder +
order). Finally a
checkbutton is used to indicate if the
corresponding device is
selected for some actions.
PUBLIC METHODS
icbpanGrat
xxx
constructor. Calls "initFunction" which initialize the option
button with appropriate parameters.
isSelected
get the current status of the checkbutton (0/1).
setSelected 0/1
set the checkbutton state to 0 or 1 (unselected or selected).
getKeyw
returns the associated setup keyw. + value. This method reads
from the option button and entry widget the current user
settings and prepare a string to be sent to ICS control process.
This method is normally called when the SETUP cmd is invoked.
setKeyw val
extract from "val" the keyword parameter + value and fill the
corresponding option button + entry. This method is called usually
during a reading of a previously saved setup file.
PROTECTED METHODS
updateWdg item
this method is called to modify on-the-fly the appearance of
the widgets. E.g. if a particular param. selection requires also some
input values, the corresponding entry widget is enabled,
otherwise it is disabled. User can override this method to
implement some specific behavior.
PUBLIC VARIABLES
cfgObj
ctooCONFIG object (configuration file interface)
devType
device type extracted from INS.CON.DEVICE${i}
FILES
$INS_ROOT/SYSTEM/COMMON/CONFIGFILES/*CONFIG.cfg
ENVIRONMENT
INS_ROOT Instrument root
area
INTROOT Integration area
VLTROOT VLT area
SEE ALSO
ctooCONFIG(8)
### generated by docDeroff ###
NAME
icbpanGratNoOrd - wrapper class for
icbpanGratNoOrd_uifClass
SYNOPSIS
icbpanGratNoOrd .w \
-background Grey90 \
-relief flat \
-cfgObj $cfgObj \
-cwp
"<alias>${devName}" \
-devType $devType]
where cfgObj is a ctooCONFIG object;
devType is extracted from
INS.CON.DEVICE${i}
devName is extracted from
${devType}.DEVNAME
DESCRIPTION
Itcl wrapper class to handle ICB GRAT device.
The corresponding
ibcpanGratNoOrd_uifClass contains a set of
output widget (linked to OLDB)
which in turn display the device name, keyword
used to identify the
device, the current simulation level
(N=normal,S=simulate), the current
device state, handset mode (H, if active) and
the current position
(named and in encoder unit). The class
contains also an option
button to select among various setup
parameters and two entry widget
for setting position values (wlen/encoder,
without order). Finally a
checkbutton is used to indicate if the
corresponding device is
selected for some actions.
PUBLIC METHODS
icbpanGratNoOrd xxx
constructor. Calls "initFunction" which initialize the option
button with appropriate parameters.
isSelected
get the current status of the checkbutton (0/1).
setSelected 0/1
set the checkbutton state to 0 or 1 (unselected or selected).
getKeyw
returns the associated setup keyw. + value. This method reads
from the option button and entry widget the current user
settings and prepare a string to be sent to ICS control process.
This method is normally called when the SETUP cmd is invoked.
setKeyw val
extract from "val" the keyword parameter + value and fill the
corresponding option button + entry. This method is called usually
during a reading of a previously saved setup file.
PROTECTED METHODS
updateWdg item
this method is called to modify on-the-fly the appearance of
the widgets. E.g. if a particular param. selection requires also some
input values, the corresponding entry widget is enabled,
otherwise it is disabled. User can override this method to
implement some specific behavior.
PUBLIC VARIABLES
cfgObj
ctooCONFIG object (configuration file interface)
devType
device type extracted from INS.CON.DEVICE${i}
FILES
$INS_ROOT/SYSTEM/COMMON/CONFIGFILES/*CONFIG.cfg
ENVIRONMENT
INS_ROOT Instrument root
area
INTROOT Integration area
VLTROOT VLT area
SEE ALSO
ctooCONFIG(8)
### generated by docDeroff ###
NAME
icbpanDpol - wrapper class for
icbpanDpol_uifClass
SYNOPSIS
icbpanDpol .w \
-background Grey90 \
-relief flat \
-cfgObj $cfgObj \
-cwp
"<alias>${devName}" \
-devType $devType]
where cfgObj is a ctooCONFIG object;
devType is extracted from
INS.CON.DEVICE${i}
devName is extracted from
${devType}.DEVNAME
DESCRIPTION
Itcl wrapper class to handle ICB DPOR device.
The corresponding
ibcpanDpol_uifClass contains a set of output
widget (linked to OLDB)
which in turn display the device name, keyword
used to identify the
device, the current simulation level
(N=normal,S=simulate), the current
device state, handset mode (H, if active) and
the current position
(named and in encoder unit). The class
contains also an option
button to select among various setup
parameters and an entry widget
for setting position values. Finally a
checkbutton is used to
indicate if the corresponding device is
selected for some actions.
PUBLIC METHODS
icbpanDpol
xxx
constructor. Calls "initFunction" which initialize the option
button with appropriate parameters.
isSelected
get the current status of the checkbutton (0/1).
setSelected 0/1
set the checkbutton state to 0 or 1 (unselected or selected).
getKeyw
returns the associated setup keyw. + value. This method reads
from the option button and entry widget the current user
settings and prepare a string to be sent to ICS control process.
This method is normally called
when the SETUP cmd is invoked.
setKeyw val
extract from "val" the keyword parameter + value and fill the
corresponding option button + entry. This method is called usually
during a reading of a previously saved setup file.
PROTECTED METHODS
updateWdg item
this method is called to modify on-the-fly the appearance of
the widgets. E.g. if a particular param. selection requires also some
input values, the corresponding entry widget is enabled,
otherwise it is disabled. User can override this method to
implement some specific behavior.
PUBLIC VARIABLES
cfgObj
ctooCONFIG object (configuration file interface)
devType
device type extracted from INS.CON.DEVICE${i}
FILES
$INS_ROOT/SYSTEM/COMMON/CONFIGFILES/*CONFIG.cfg
ENVIRONMENT
INS_ROOT Instrument root
area
INTROOT Integration area
VLTROOT VLT area
SEE ALSO
ctooCONFIG(8)
### generated by docDeroff ###
NAME
icbpanAdc - wrapper class for
icbpanAdc_uifClass
SYNOPSIS
icbpanAdc .w \
-background Grey90 \
-relief flat \
-cfgObj $cfgObj \
-cwp "<alias>${devName}"
\
-devType $devType]
where cfgObj is a ctooCONFIG object;
devType is extracted from
INS.CON.DEVICE${i}
devName is extracted from
${devType}.DEVNAME
DESCRIPTION
Itcl wrapper class to handle ICB ADC device.
The corresponding
ibcpanAdc_uifClass contains a set of output
widget (linked to OLDB)
which in turn display the device name, keyword
used to identify the
device, the current simulation level
(N=normal,S=simulate), the current
device state, handset mode (H, if active) and
the current position
(named and in encoder unit). The class
contains also an option
button to select among various setup
parameters and an entry widget
for setting position values. Finally a
checkbutton is used to
indicate if the corresponding device is
selected for some actions.
PUBLIC METHODS
icbpanAdc
xxx
constructor. Calls "initFunction" which initialize the option
button with appropriate parameters.
isSelected
get the current status of the checkbutton (0/1).
setSelected 0/1
set the checkbutton state to 0 or 1 (unselected or selected).
getKeyw
returns the associated setup keyw. + value. This method reads
from the option button and entry widget the current user
settings and prepare a string to be sent to ICS control process.
This method is normally called when the SETUP cmd is invoked.
setKeyw val
extract from "val" the keyword parameter + value and fill the
corresponding option button + entry. This method is called usually
during a reading of a previously saved setup file.
PROTECTED METHODS
updateWdg item
this method is called to modify on-the-fly the appearance of
the widgets. E.g. if a particular param. selection requires also some
input values, the corresponding entry widget is enabled,
otherwise it is disabled. User can override this method to
implement some specific behavior.
PUBLIC VARIABLES
cfgObj
ctooCONFIG object (configuration file interface)
devType
device type extracted from INS.CON.DEVICE${i}
FILES
$INS_ROOT/SYSTEM/COMMON/CONFIGFILES/*CONFIG.cfg
ENVIRONMENT
INS_ROOT Instrument root
area
INTROOT Integration area
VLTROOT VLT area
SEE ALSO
ctooCONFIG(8)
### generated by docDeroff ###
NAME
icbpanDrot - wrapper class for
icbpanDrot_uifClass
SYNOPSIS
icbpanDrot .w \
-background Grey90 \
-relief flat \
-cfgObj $cfgObj \
-cwp
"<alias>${devName}" \
-devType $devType]
where cfgObj is a ctooCONFIG object;
devType is extracted from
INS.CON.DEVICE${i}
devName is extracted from
${devType}.DEVNAME
DESCRIPTION
Itcl wrapper class to handle ICB DROT device.
The corresponding
ibcpanDrot_uifClass contains a set of output
widget (linked to OLDB)
which in turn display the device name, keyword
used to identify the
device, the current simulation level
(N=normal,S=simulate), the current
device state, handset mode (H, if active) and
the current position
(named and in encoder unit). The class
contains also an option
button to select among various setup
parameters and an entry widget
for setting position values. Finally a
checkbutton is used to
indicate if the corresponding device is
selected for some actions.
PUBLIC METHODS
icbpanDrot
xxx
constructor. Calls "initFunction" which initialize the option
button with appropriate parameters.
isSelected
get the current status of the checkbutton (0/1).
setSelected 0/1
set the checkbutton state to 0 or 1 (unselected or selected).
getKeyw
returns the associated setup keyw. + value. This method reads
from the option button and entry widget the current user
settings and prepare a string to be sent to ICS control process.
This method is normally called when the SETUP cmd is invoked.
setKeyw val
extract from "val" the keyword parameter + value and fill the
corresponding option button + entry. This method is called usually
during a reading of a previously saved setup file.
PROTECTED METHODS
updateWdg item
this method is called to modify on-the-fly the appearance of
the widgets. E.g. if a particular param. selection requires also some
input values, the corresponding entry widget is enabled,
otherwise it is disabled. User can override this method to
implement some specific behavior.
PUBLIC VARIABLES
cfgObj
ctooCONFIG object (configuration file interface)
devType
device type extracted from INS.CON.DEVICE${i}
FILES
$INS_ROOT/SYSTEM/COMMON/CONFIGFILES/*CONFIG.cfg
ENVIRONMENT
INS_ROOT Instrument root
area
INTROOT Integration area
VLTROOT VLT area
SEE ALSO
ctooCONFIG(8)
### generated by docDeroff ###
NAME
icbpanSensor - wrapper class for
icbpanSensor_uifClass
SYNOPSIS
icbpanSensor .w \
-background Grey90 \
-relief flat \
-cfgObj $cfgObj \
-cwp
"<alias>${devName}" \
-devType $devType]
where cfgObj is a ctooCONFIG object;
devType is extracted from
INS.CON.DEVICE${i}
devName is extracted from ${devType}.DEVNAME
DESCRIPTION
Itcl wrapper class to handle sensor devices.
The corresponding
ibcpanSensor_uifClass contains a set of output
widget (linked to OLDB)
which in turn display the device name, the
current simulation level
(N=normal,S=simulate) and the current device state. A checkbutton
is used to indicate if the corresponding
device is selected.
PUBLIC METHODS
icbpanSensor
xxx
constructor. Read from ICS configuration file the number of
sensors, the corresponding names and descriptions. Dynamically
construct a set of output widgets linked to OLDB; every widget displays
the current value reported by the corresponding sensor. The
description is used as a short help text.
Calls "initFunction" which initialize every output widget with
data read from OLDB. It also attach an OLDB event to display every
change in the sensor's reported value. This is done by means of
the public method "dbUpdate".
isSelected
get the current status of the checkbutton (0/1).
setSelected 0/1
set the checkbutton state to 0 or 1 (unselected or selected).
dbUpdate
update output widgets associated to OLDB vector "last"
evtDbRestart
detach and attach event on OLDB vector "last"
PUBLIC VARIABLES
cfgObj
ctooCONFIG object (configuration file interface)
devType
device type extracted from INS.CON.DEVICE${i}
isSensor
used (internally) during the construction
of the control panel to distinguish between a "normal" device
and a "sensor" device (see icbpanGUIcfg).
FILES
$INS_ROOT/SYSTEM/COMMON/CONFIGFILES/*CONFIG.cfg
ENVIRONMENT
INS_ROOT Instrument root
area
INTROOT Integration area
VLTROOT VLT area
SEE ALSO
ctooCONFIG(8), icbpanGUIcfg(8)
### generated by docDeroff ###
NAME
icbpanPmt - wrapper class for
icbpanPmt_uifClass
SYNOPSIS
icbpanPmt .w \
-background Grey90 \
-relief flat \
-cfgObj $cfgObj \
-cwp
"<alias>${devName}" \
-devType $devType]
where cfgObj is a ctooCONFIG object;
devType is extracted from
INS.CON.DEVICE${i}
devName is extracted from
${devType}.DEVNAME
DESCRIPTION
Itcl wrapper class to handle ICB PMT
(photomultiplier) device. The corresponding
ibcpanPmt_uifClass contains a set of output
widget (linked to OLDB)
which in turn display the device name, keyword
used to identify the
device, the current simulation level
(N=normal,S=simulate), the current
device state, handset mode (H, if active), the
current and the cumulated counts.
Finally a checkbutton is used to indicate if
the corresponding device is
selected for some actions.
PUBLIC
METHODS
icbpanPmt
xxx
constructor. Calls "initFunction"
which initialize the option
button with appropriate parameters.
isSelected
get the current status of the checkbutton
(0/1).
setSelected 0/1
set the checkbutton state to 0 or 1
(unselected or selected).
getKeyw
returns the associated setup keyw. + value.
Dummy
setKeyw val
This method is called usually during a
reading of a previously
saved setup file. Dummy
PUBLIC
VARIABLES
cfgObj
ctooCONFIG object (configuration file
interface)
devType
device type extracted from
INS.CON.DEVICE${i}
FILES
$INS_ROOT/SYSTEM/COMMON/CONFIGFILES/*CONFIG.cfg
ENVIRONMENT
INS_ROOT Instrument root area
INTROOT Integration area
VLTROOT VLT area
SEE ALSO
ctooCONFIG(8)
###
generated by docDeroff ###
NAME
xxipanControl
- XXXX ICS stand-alone GUI
MENU BAR
"File"
menu
"Save"
Save the current panel settings in
setup file <panel name>.ins.
Only settings for selected functions
are saved.
"Save as" Save the current panel
settings in a setup file.
Only settings for selected functions
are saved.
"Load"
Load the contents of a setup file into
the panel
"Restart panel"
Quit this panel and restart it (e.g. if
Instrument configuration changed).
"Quit"
Quit this panel
"ICS"
menu
"Startup"
Startup all ICS WS processes
"Shutdown"
Terminate all ICS WS processes
"OFF"
Send OFF command to all devices
"STANDBY"
Send STANDBY to all devices
"ONLINE"
Send ONLINE to all devices
"Devices"
menu
"Select all devices"
Activate check button for all devices
shown (see 3.1.2)
"Deselect all devices"
Deactivate check button for all devices
shown (see 3.1.2)
"OFF"
Send OFF command to the selected
devices
"STANDBY"
Send STANDBY to the selected devices
"ONLINE"
Send ONLINE to the selected devices
"Simulate HW"
Send SIMULAT to the selected devices
"Use HW"
Send STOPSIM to the selected devices
"LCU"
menu
"Set LCU cfg"
Run icbConfigSet
"Refresh scan"
Execute scanDevOff + scanDevOn for all
LCUs
"Reboot LCUi"
Reboot one LCU
"Maintenance"
menu
"Edit cfg file"
Edit the Instrument Configuration file
"Tools"
menu
"logMonitor"
Start the CCS utility logMonitor
"Motors"
"motei"
Start the motor engineering
interface
"Lamps"
"acroxInducer"
Start the acromag digital I/O board
engineering interface
"Sensors"
"acroxInducer"
Start the acromag digital I/O board
engineering interface
"Std.
Options" menu
"Refresh Database values"
Refresh all OLDB values in the panel.
"Re-Start Database events"
Configure again all events attached to
OLDB values.
Useful e.g. after one LCU has rebooted.
"Help"
menu
Extended Help. Not implemented.
APPLICATION
AREA
"Global
State"
It contains the following output widgets
(from left to right):
global ICS state
global ICS sub-state (idle/busy)
operational mode (simulation level)
LCU state
"Single
devices"
Each device uifClass has the following
widgets
Check button to select the device for
the next operation (e.g. SETUP)
Device name
Short-FITS device prefix
Simulation flag
State
Handset flag (not for sensors)
Status value(s)
Encoder position (only for motors)
Setup option button
Setup input field(s) for numerical
values
COMMAND
FEEDBACK
It shows the last commands and replies
to/from xxiControl as
well as the main ongoing actions (e.g. LCU
rebooting).
SHORT
HELP
It shows information about the widget
having the mouse focus.
ACTION
BUTTONS
"SETUP"
Send a SETUP command to xxiControl for
all selected devices
"STOP"
Emergency stop. All devices are stopped.
###
generated by docDeroff ###
Appendix A. Multiple panels for the same ICS
Normally one stand-alone panel should be enough to test and integrate ICS. In some cases however it may be necessary, e.g. because the amount of ICS devices is too large, or simply more convenient, e.g. because of several development sites or very different/special functionality of some devices, to have more than one ICS panel.
In such case the following rules must be followed:
Except for the main ICS panel (provided that it follows the default naming scheme), the configuration file associated to an ICS panel must also register its name through the keyword INS.UIF.NAME (see Table 3 at page 15)
See the example in icbpan/test/INS_ROOT/SYSTEM/COMMON/CONFIGFILES/ icbpanTestINS1_UIF*.cfg
See the example in icbpan/test/INS_ROOT/SYSTEM/COMMON/CONFIGFILES/ icbpanTestCONFIG.cfg
Ø tooReplace <main panel conf. set name> <new panel conf. set name> <new panel name>
Example:
Ø tooReplace XXXX XXXX_UIF2 xxipanControl2.pan
See the examples in icbpan/test/ icbpan1ipanControl2.pan and icbpan/test/
icbpan1ipanControl3.pan
Appendix B. Porting older existing ICS panels to APR2004 layout
With the implementation of SPR VLTSW20030305 (icbpan 1.38 and higher) the standard layout of the ICS panel has changed, as well as the layout of the standard icbpan widgets.
Although existing panels should still continue to work, it is recommended to update them. This appendix aims to provide the necessary information for the upgrading.
i. Delete the UifOutput widget devPrefix
ii. Delete the UifOutputString widgets devSim and devHand
iii.
Move the UifOutputString widget devState to the right of UifOutput
widget device
Modify its configuration as follows:
o Font: Bold
o List of elements:
§ 1 OFF Red
§ 2 LOADED Red
§ 3 STANDBY Blue
§ 4 ONLINE OliveDrab
iv.
Create a new UifOutputString widget devSimHset and place it o the right of devState
Configure it as follows:
o Length 4
o Widget Name: devSimHset
o Variable: devSimHset (DB not set)
o List of elements:
§ 0 “” Black
§ 1 HSET Red
§ 2 SIM Red
o
Short help: operational mode (blank = no
simulation, no handset)
v.
If the class contains UifEntry widgets, replace
them with icbpanEntry mega-widgets.
Configure the new widgets as the old ones, in particular keep the old name
(e.g. devSetupEnc) and width (e.g. 8).
upvar
#0 [$cv.devSetupData1 cget -variable] data
set
data $value
with:
$cv.devSetupData1 setValue $value
___oOo___
[1] icbpan automatically determines from the grating configuration which class between icbpanGrat and icbpanGratNoOrd should be used: if the configuration keywords INS.GRATi.ORDERMAXi are not defined or have zero value, then icbpanGratNoOrd is used, otherwise icbpanGrat.
[2] The classes icbpanSensorVer, icbpanSensorHor and icbpaneSensorSqr should be considered obsolete; they are kept only for backward compatibility reasons. Use instead the keywords INS.SENSORi.UIFCOL or INS.SENSORi..UIFROW (see Table 3) to determine the geometrical distribution of the sensor widgets in the panel.
[3] This class replaces icbpanICSControl, which should be considered obsolete and is kept only for backward compatibility reasons. The related commands have been moved to new menu options (VLTSW20030305 item 3)
[4] After implementation of the class icbpanGratNoOrd (see also SPR VLTSW20050206), this example is still valid as general example of class overloading. It should instead be considered obsolete for the specific case of gratings without order selection (see also Table 1at page 8).
[5] This keyword applies also to assemblies (INS.ASSEMBLYi).
[6] For backward compatibility reasons, the default for assemblies is 0, i.e. no class will be used.
[7] For historical reasons, the coding of states for icb standard devices (e.g. lamp in the Template Instrument) and special devices (e.g. yyyy in the Template Instrument) are different. If an instrument has a special device (e.g. a sensor) with the same functionality as one of the icb standard devices, but different hardware, one of the standard uifClass widgets provided by icbpan could be used. In this case, in order to get the right display of the state, the keyword UIFSPECIAL must be T.