Initial revision

This commit is contained in:
cvs
2000-02-07 10:38:55 +00:00
commit fdc6b051c9
846 changed files with 230218 additions and 0 deletions

605
doc/user/samenv.htm Normal file
View File

@ -0,0 +1,605 @@
<html>
<head>
<title> Sample Environment Devices </title>
</head>
<body>
<h1> Sample Environment Devices</h1>
<!latex-off>
<p>
From here you can jump to:
<ul>
<li>A discussion of SICS environment control <a href="#concept">
concepts</a>.
<li>A section about environment control <a href="#error">error</a> handling.
<li>Commands for <a href="#general">monitoring and installing</a>
environment control devices.
<li>Commands understood by <a href="#all">ALL</a> environment control
devices.
<li>Oxford Instruments <a href="#itc4">ITC-4</a> or ITC-503 temperature
controllers.
<li><a href="#dilu">Dilution</a> Cryostat.
<li>Haake <a href="#haake">waterbath </a> thermostat.
<li><a href="#ltc11">The CryoFurnace</a> with its Neocera LTC-11 temperature
controller.
<li><a href="#euro">Eurotherm Temperature Controller</a>.
<li><a href="#bruker">Bruker</a> Magnet Controller.
<li>The <a href="#el755">PSI-EL755</a> Magnet Controller.
</ul>
</p>
<!latex-on>
<p>
<h2><a name="concept">SICS Concepts</a> for Sample Environment Devices</h2>
<p>
SICS can support any type of sample environment control device if there is a
driver for it. This includes temperature controllers, magnetic field controllers
etc. The SICS server is meant to be left running continously. Therefore there
exists a facility for dynamically configuring and deconfiguring environment
devices into the system. This is done via the <b>EVFactory</b> command.
It is expected that instrument scientists will provide command procedures or
specialised R&#252;nbuffers for configuring environment devices and setting
reasonable default parameters. </p>
<p>
In the SICS model
a sample environment device has in principle two modes of operation. The first
is the drive modus. The device is monitored in this modus when a new value for it
has been requested. The second modus is the monitor modus. This modus is entered
when the device has reached its target value. After that, the device must be
continously monitored throughout any measurement. This is done through the
environment monitor or <b>emon</b>. The emon understands a few commands of its
own.
</p>
<p>
Within SICS all sample environement devices share some common behaviour
concerning parameters and abilities. Thus any given environment device
accepts all of a set of general commands plus some additional commands
special to the device.
</p>
<p>
In the next section the EVFactory, emon and the general commands understood
by any sample environment device will be discussed. This reading is mandatory
for understanding SICS environment device handling. Then there will be another
section discussing the special devices known to the system.
</p>
<p>
<h2>SampleEnvironment Error Handling</h2>
A <a name="error"> sample</a> environment device may fail to stay at its preset value during a
measurement. This condition will usually be detected by the emon. The question
is how to deal with this problem. The requirements for this kind of error
handling are quite differntiated. The SICS model therefore implements several
strategies for handling sample environment device failure handling.
The strategy to use is selected via variable which can be set by the user for
any sample environment device separatetly. Additional error handling strategies
can be added with a modest amount of programming. The error handling strategies currently
implemented are:
<DL>
<DT>Lazy
<DD>Just print a warning and continue.
<DT>Pause
<DD>Pauses the measurement until the problem has been resolved.
<DT>Interrupt
<DD>Issues a SICS interrupt to the system.
<DT>Safe
<DD> Tries to run the environment device to a value considered safe by the
user.
</DL>
</p>
<h2><a name="general">General</a> Sample Environment Commands</h2>
<h3>EVFactory</h3>
<p>
EVFactory is responsible for configuring and deconfiguring sample environment
devices into SICS. The syntax is simple:
<DL>
<DT>EVFactory new name type par par ...
<DD>Creates a new sample environment device. It will be known to SICS by the
name specified as second parameter. The type parameter decides which driver to
use for this device. The type will be followed by additional parameters
which will be evaluated by the driver requested.
<DT>EVFactory del name
<DD>Deletes the environment device name from the system.
</DL>
</p>
<h3>emon</h3>
<p>
The environment monitor emon takes for the monitoring of an environment device
during measurements. It also initiates error handling when appropriate. The emon
understands a couple of commands.
<DL>
<DT>emon list
<DD>This command lists all environment devices currently registered in the
system.
<DT>emon register name
<DD> This is a specialist command which registers the environment device name
with the environment monitor. Usually this will automatically be taken care
of by EVFactory.
<DT>emon unregister name
<DD> This is a specialist command which unregisters the environment device name
with the environment monitor. Usually this will automatically be taken care
of by EVFactory Following this call the device will no longer be monitored and
out of tolerance errors on that device no longer be handled.
</DL>
</p>
<h3><a name="all">General</a>
Commands UnderStood by All Sample Environment Devices</h3>
<p>
Please note that each command discussed below MUST be prepended with the name
of the environment device as configured in EVFavtory!
</p>
<p>
The general commands understood by any environment controller can be subdivided
further into parameter commands and real commands. The parameter commands just
print the name of the parameter if given without an extra parameter or
set if a parameter is specified. For example:
<BLOCKQUOTE>
Temperature Tolerance
</BLOCKQUOTE>
prints the value of the variable Tolerance for the environment controller
Temperature.
<BLOCKQUOTE>
Temperature Tolerance 2.0
</BLOCKQUOTE>
sets the parameter Tolerance for Temperature to 2.0. Parameters known to ANY
envrironment controller are:
<DL>
<DT>Tolerance
<DD>Is the deviation from the preset value which can be tolerated before an
error is issued.
<DT> Access
<DD>Determines who may change parameters for this controller.
Possible values are:
<UL>
<LI>0 only internal
<LI> 1 only Managers
<LI> 2 Managers and Users.
<LI> 3 Everybody, including Spy.
</UL>
<DT>LowerLimit
<DD> The lower limit for the controller.
<DT>UpperLimit
<DD> The upper limit for the controller.
<DT>ErrHandler.
<DD> The error handler to use for this controller. Possible values:
<UL>
<LI>0 is Lazy.
<LI>1 for Pause.
<LI> 2 for Interrupt
<LI> 3 for Safe.
</UL> For an explanantion of these values see the section about <a
href="#error">error</a> handling
above.
<DT> Interrupt
<DD> The interrupt to issue when an error is detected and Interrupt error
handling is set. Valid values are:
<UL>
<LI> 0 for Continue.
<LI> 1 for abort operation.
<LI> 2 for abort scan.
<LI> 3 for abort batch processing.
<LI> 4 halt system.
<LI> 5 exit server.
</UL>
<DT>SafeValue
<DD> The value to drive the controller to when an error has been detected and
Safe error handling is set.
</DL>
</p>
<P>
Additionally the following commands are understood:
<DL>
<DT>send par par ...
<DD>Sends everything after send directly to the controller and return its
response. This is a general purpose command which allows to manipulate controllers
and controller parameters directly. The protocoll for these commands is
documented in the documentation for each controller. Ordinary users should
not tamper with this. This facility is meant for setting up the device with
calibrartion tables etc.
<DT> list
<DD> lists all the parameters for this controller.
<DT> no command, only name.
<DD> When only the name of the device is typed it will return its
current value.
<DT> name val
<DD> will drive the device to the new value val. Please note that the same
can be achieved by using the drive command.
<DT> name log on
<DD> Switches logging on. If logging is on, at each cycle in the emon the
current value of the environment variable will be recorded together with a
time stamp. Be careful about this, for each log point a bit of memory is
allocated. At some time the memory is exhausted! Log clear frees it again
and log frequency (both below) allows to set the logging time intervall.
<DT> name log off
<DD>Switches logging off.
<DT>name log clear
<DD> Clears all recorded time stamps and values.
<DT>name log gettime
<DD>This command retrieves a list of all recorded time stamps.
<DT>name log getval
<DD> This command retrieves all recorded values.
<DT>name log getmean
<DD>Calculates the mean value and the standard deviation for all logged
values and prints it.
<DT>name log frequency val
<DD> With a parameter sets, without a parameter requests the logging intervall
for the log created. This parameter specifies the time intervall in seconds
between log records. The default is 5 minutes. A value of 0 means a record any
cycle of the SICServer.
<DT>name log file filename
<DD> Starts logging of value data to the file filename. All normal logging to
memory will be
disabled. Logging will happen any 5 minutes initially. The logging frequency
can be changed with the name log frequency command. Each entry in the file is
of the form date time value. The name of the file must be specified relative
to the SICS server.
<DT>name log close
<DD> Stops logging data to the file.
</DL>
</P>
<h2>Special Environment Control Devices</h2>
<p>
This section lists the parameters needed for configuring a special environment
device into the system and special parameters and commands only understood by
that special device. All of the general commands listed above work as well!
</p>
<h3><a name="itc4">ITC-4</a> and ITC-503 Temperature Controllers</h3>
<p>
These temperature controller are fairly popular at SINQ. It is manufactured by
Oxford Instruments. At the back side of this controller there is a RS-232
socket which must be connected to a Macintosh computer running the SINQ
terminal server program via a serial cable. Please make sure with a different
Macintosh or a PC that the serial line is OK and the ITC-4 responding before
plugging it in.
</p>
<h4>ITC-4 Initialisation</h4>
<p>
An ITC-4 can be configured into the system by:
<BLOCKQUOTE>
EVFactory new Temp ITC4 computer port channel
</BLOCKQUOTE>
This creates an ITC-4 controller object named Temp within the system. The
ITC-4 is expected to be connected to the serial port channel at the
Macintosh computer computer running the SINQ terminal server program
listening at port port. For example:
<BLOCKQUOTE>
EVFactory new Temp ITC4 lnsp22.psi.ch 4000 6
</BLOCKQUOTE>
connects Temp to the Macintosh named lnsp22, serial port 5 (6 above is no typo!),
listening at port 4000.
</P>
<h4>ITC-4 Additional Parameters</h4>
<p>
The ITC-4 has a few more parameter commands:
<DL>
<DT>timeout
<DD>Is the timeout for the Macintosh terminal server program waiting for
responses from the ITC-4. Increase this parameter if error messages
containg ?TMO creeping up.
<DT> sensor
<DD> Sets the sensor number to be used for reading temperature.
<DT> control
<DD> Sets the control sensor for the ITC-4. This sensor will be used
internally for regulating the ITC-4.
<DT>divisor
<DD>The ITC4 does not understand floating point numbers, the ITC-503 does.
In order to make ITC4's read and write temperatures correctly floating point
values must be multiplied or divided with a magnitude of 10. This parameter
determines the appropriate value for the sensor. Is usually 10 for a sensor
with one value behind the comma or 100 for a sensor with two values after
the comma.
<DT>multiplicator
<DD>The same meaning as the divisor above, but for the control sensor.
</DL>
<h4>Installing an ITC4 step by step</h4>
<p>
<ol>
<li>Connect the ITC temperature controller to port 6 on the Macintosh
serial port extension box. Port 6 is specially configured for dealing with
the ideosyncracies of that device. No null modem is needed.
<li>Install the ITC4 into SICS with the command: <br>
evfactory new name Macintoshname 4000 7<br>
Thereby replace name with the name you want to address the ITC4 in SICS. A
good choice for a name is temperature, as such a value will be written to data files.
Please note, that SICS won't let you use that name if it already exists. For
instance if you already had a controller in there. Then the command:<br>
evfactory del name <br>
will help. Macintoshname is the name of the instrument Macintosh PC.
<li>Configure the upper and lowerlimits for your controller appropriatetly.
<li>Figure out which sensor you are going to use for reading temperatures.
Configure the sensor and the divisor parameter accordingly.
<li>Figure out, which sensor will be used for controlling the ITC4. Set the
parameters control and multiplicator accordingly. Can be the same as the
sensor.
<li>Think up an agreeable temperature tolerance for your measurement. This
tolerance value will be used 1) to figure out when the ITC4 has reached its
target position. 2) when the ITC4 will throw an error if the ITC4 fails to
keep within that tolerance. Set the tolerance parameter according to the
results of your thinking.
<li>Select one of the numerous error handling strategies the control
software is able to perform. Configure the device accordingly.
<li> Test your setting by trying to read the current temperature.
<li> If this goes well try to drive to a temperature not to far from the
current one.
</ol>
</p>
<h4>ITC-4 Trouble Shooting</h4>
<p>
If the ITC-4 <b>does not respond at all</b>, make sure the serial connection to
the Macintosh is working. Use standard RS-232 debugging procedures for doing
this. The not responding may also come up as a failure to connect to the ITC-4
during startup.
</p>
<p> If error messages containing the string <b>?TMO</b> keep creeping up followed
by all signs of command not understood, then increase the timeout. The standard
timeout of 10 microseconds is to short at times.
</p>
<p>
You keep on reading <b>wrong values</b> from the ITC4. Mostly off by a
factor 10. Then set the divisor correctly. Or you may need to choose a
decent sensor for that readout.
</p>
<p>
Error messages when <b>trying to drive the ITC4</b>. These are usually the
result of a badly set multiplicator parameter for the control sensor.
</p>
<p>
The ITC4 <b>never stops driving</b>. There are at least four possible
causes for this problem:
<ol>
<li>The multiplicator for the control sensor was wrong and the ITC4 has now
a set value which is different from your wishes. You should have got error
messages then as you tried to start the ITC4.
<li>The software is reading back wrong temperature because the sensor and
divisor parameters are badly configured. Try to read the temperature and if
it does have nothing to do with reality, set parameters accordingly.
<li>The tolerance parameter is configured so low, that the ITC4 never
manages to stay in that range. Can also be caused by inappropriate PID
parameters in the ITC4.
<li>
You are reading on one sensor (may be 3) and controlling on another one (may
be 2). Then it may happen that the ITC 4 happily thinks that he has reached
the temperature because its control sensor shows the value you entered as
set value. But read sensor 3 still thinks he is far off. The solution is to
drive to a set value which is low enough to make the read sensor think it is
within the tolerance. That is the temperature value you wanted after all.
</ol>
</p>
<h3><a name="haake">Haake</a> Waterbath Thermostat</h3>
<p>
This is sort of a buck full of water equipped with a temperature
control system. The RS-232 interface of this device can only be operated at
4800 baud max. This is why it has to be connected to the serial printer port
of the Macintosh serial port server computer. This makes the channel number to
use for initialisation a 1 always. The driver for this device has been
realised in the Tcl extension language of the SICS server. A prerequisite
for the usage of this device is that the file hakle.tcl is sourced in the
SICS initialisation file and the command inihaakearray has been published.
Installing the
Haake into SICS requires two steps: first create an array with
initialisation parameters, second install the device with evfactory. A
command procedure is supplied for the first step. Thus the initialisation
sequence becomes:
<BLOCKQUOTE>
inihaakearray name-o-array macintosh-computer name port channel<br>
evfactory new temperature tcl name-of-array
</BLOCKQUOTE>An example for the SANS:
<BLOCKQUOTE>
inihaakearray eimer lnsp25.psi.ch 4000 1 <br>
evfactory new temperature tcl eimer
</BLOCKQUOTE>
Following this, the thermostat can be controlled with the other environment
control commands.
</p>
<p>
The Haake Thermostat understands a single special subcommand: <b>sensor</b>.
The thermostat may be equipped with an external sensor for controlling and
reading. The subcommand sensor allows to switch between the two. The exact
syntax is:
<BLOCKQUOTE>
temperature sensor val
</BLOCKQUOTE>
val can be either intern or extern.
</p>
<h3><a name="dilu">Dilution</a> Cryostat</h3>
<p>
This is a large ancient device for reaching very low temperatures. This
cryostat can be configured into SICS with the command:
<pre>
EVFactory new Temp dillu computer port channel table.file
</pre>
Temp is the name of the dilution controller command in SICS, dillu is the
keyword which selects the dilution driver, computer, port and channel are
the parameters of the Macintosh-PC running the serial port server program.
table.file is the fully qualified name of a file containing a translation
table for this cryostat. The readout from the dilution controller is a
resistance. This table allows to interpolate the temperature from the
resistance measurements and back. Example:
<pre>
evfactory new temperature dillu lnsp19.psi.ch 4000 1 dilu.tem
</pre>
installs a new dilution controller into SICS. This controller is connected
to port 1 at the Macintos-PC with the newtwork adress lnsp19.psi.ch. On this
macintosh-PC runs a serial port server program listening at TCP/IP port
4000. The name of the translation table file is dilu.tem.
</p>
<p>
The dilution controller has no special commands, but two caveats: As of
current (October 1998) setting temperatures does not work due to problems
with the electronics. Second the dilution controller MUST be connected to
port 1 as only this port supports the 4800 maximum baud rate this device
digests.
</p>
<h3><a name="bruker">Bruker</a> Magnet Controller B-EC-1</h3>
<p>
This is the Controller for the large magnet at SANS. The controller is a
box the size of a chest of drawers. This controller can be operated in one
out of two modes: in <b>field</b> mode the current for the magnet is controlled via
an external hall sensor at the magnet. In <b>current</b> mode, the output current
of the device is controlled. This magnet can be configured into SICS with a
command syntax like this:
<BLOCKQUOTE>
evfactory new name bruker Mac-PC Mac-port Mac-channel
</BLOCKQUOTE>
</p>
<p>
name is a placeholder for the name of the device within SICS. A good
suggestion (which will be used throughout the rest of the text) is magnet.
bruker is the keyword for selecting the bruker driver. Mac-PC is the name of
the Macintosh PC to which the controller has been connected, Mac-Port is the
port number at which the Macintosh-PC's serial port server listens.
Mac-channel is the RS-232 channel to which the controller has been
connected. For example (at SANS):
<pre>
evfactory new magnet bruker lnsp25.psi.ch 4000 9
</pre>
</p>
<p>
creates a new command magnet for a Bruker magnet Controller connected to
serial port 9 at lnsp25.
</p>
In addition to the standard environment controller commands this magnet
controller understands the following special commands:
<DL>
<DT>magnet polarity
<DD> Prints the current polarity setting of the controller. Possible
answers are plus, minus and busy. The latter indicates that the controller
is in the process of switching polarity after a command had been given to
switch it.
<DT>magnet polarity val
<DD>sets a new polarity for the controller. Possible values for val are
<b>minus</b> or <b>plus</b>. The meaning is self explaining.
<DT>magnet mode
<DD> Prints the current control mode of the controller. Possible
answers are <b>field</b> for control via hall sensor or <b>current</b> for
current control.
<DT>magnet mode val
<DD>sets a new control mode for the controller. Possible values for val are
<b>field</b> or <b>current</b>. The meaning is explained above.
<DT>magnet field
<DD>reads the magnets hall sensor independent of the control mode.
<DT>magnet current
<DD>reads the magnets output current independent of the control mode.
</DL>
<p>
<big>Warning:</big> There is a gotcha with this. If you type only magnet a
value will be returned. The meaning of this value is dependent on the
selected control mode. In current mode it is a current, in field mode it is
a magnetic field. This is so in order to support SICS control logic.
You can read values at all times explicitly using magnet current or
magnet field.
</p>
<h3><a name="ltc11">The CryoFurnace.</a></h3>
<p>
The CryoFurnace at PSI is equipped with a Neocera LTC-11 temperature
controller. This controller can control either an heater or an analag output
channel. Futhermore a choice of sensors can be selected for controlling the
device. The LTC-11 behaves like a normal SICS environment control device
plus a few additional commands. An LTC-11 can be configured into SICS with
the following command:
<BLOCKQUOTE>
evfactory new name ltc11 Mac-PC Mac-port Mac-channel
</BLOCKQUOTE>
</p>
<p>
name is a placeholder for the name of the device within SICS. A good
suggestion is temperature.
ltc11 is the keyword for selecting the LTC-11 driver. Mac-PC is the name of
the Macintosh PC to which the controller has been connected, Mac-Port is the
port number at which the Macintosh-PC's serial port server listens.
Mac-channel is the RS-232 channel to which the controller has been
connected. For example (at DMC):
<pre>
evfactory new temperature ltc11 lnsp18.psi.ch 4000 6
</pre>
</p>
<p>
creates a new command magnet for a LTC-11 temperature Controller connected to
serial port 6 at lnsp18.
</p>
<p>
The additional commands understood by the LTC-11 controller are:
<dl>
<dt>temperature sensor
<dd> allows to query the current sensor used for temperature readout.
<dt>temperature sensor val
<dd> allows to select the sensor val for temperature readout.
<dt>temperature controlanalog
<dd> allows to query the sensor used for controlling the analog channel.
<dt>temperature controlanalog val
<dd> allows to select the sensor val for controlling the analog channel.
<dt>temperature controlheat
<dd> allows to query the sensor used for controlling the heater channel.
<dt>temperature controlheat val
<dd> allows to select the sensor val for controlling the heater channel.
<dt>temperature mode
<DD>Allows to query if the LTC-11 controls the analog or heater channel.
</dl>
</p>
<p>
Further notes: As the CryoFurnace is very slow and the display at the
controller becomes unusable when the temperature is read out to often, the
LTC-11 driver buffers the last temperature read for 5 seconds. Setting the
mode of the LTC-11 is possible by computer, but not yet fully understood and
therefore unusable.
</p>
<h3><a name="euro">The Eurotherm Temperature Controller</a></h3>
<p>
At SANS there is a Eurotherm temperature controller for the sample heater.
This and probably other Eurotherm controllers can be configured into SICS
with the following command. The eurotherm needs to be connected with a
nullmodem adapter.
<BLOCKQUOTE>
evfactory new name euro Mac-PC Mac-port Mac-channel
</BLOCKQUOTE>
</p>
<p>
name is a placeholder for the name of the device within SICS. A good
suggestion is temperature.
euro is the keyword for selecting the Eurotherm driver. Mac-PC is the name of
the Macintosh PC to which the controller has been connected, Mac-Port is the
port number at which the Macintosh-PC's serial port server listens.
Mac-channel is the RS-232 channel to which the controller has been
connected. <b>WARNING:</b> The eurotherm needs a RS-232 port with an unusual
configuration: 7bits, even parity, 1 stop bit. Currently only the SANS
Macintosh port 13 (the last in the upper serial port connection box) is
configured like this! Thus, an example for SANS and the name temperature
looks like:
<pre>
evfactory new temperature euro lnsp25.psi.ch 4000 13
</pre>
</p>
<p>
There are two further gotchas with this thing:
<ul>
<li>The eurotherm needs to operate in the EI-bisynch protocoll mode. This has
to be configured manually. For details see the manual coming with the machine.
<li>The weird protocoll spoken by the Eurotherm requires very special control
characters. Therefore the send functionality usually supported by a SICS
environment controller could not be implemented.
</ul>
</p>
<h3><a name="el755">The PSI-EL755 Magnet Controller</a></h3>
<p>
This is magnet controller developed by the electronics group at
PSI. It consists of a controller which interfaces to a couple of power
supplies. The magnets are then connected to the power supplies. The
magnetic field is not controlled directly but just the power output of
the power supply. Also the actual output of the power supply is NOT
read back but just the set value after ramping. This is a serious
limitation because the computer cannot recognize a faulty power supply
or magnet. The EL755 is connected to SICS with the command:
<BLOCKQUOTE>
evfactory new name el755 Mac-PC Mac-port Mac-channel index
</BLOCKQUOTE>
with Mac-PC, Mac-port and Mac-channel being the usual data items for
describing the location of the EL755-controller at the Macintosh
serial port server. index is special and is the number of the power
supply to which the magnet is connected. An example:
<pre>
evfactory new maggi el755 lnsa09.psi.ch 4000 5 3
</pre>
connects to power supply 3 at the EL755-controller connected to lnsa09
at channel 5. The magnet is then available in the system as maggi. No
special commands are supported for the EL755.
</p>
</body>
</html>