5403 lines
177 KiB
XML
5403 lines
177 KiB
XML
<?xml version='1.0' encoding='UTF-8'?>
|
|
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
|
|
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
|
|
<book>
|
|
<bookinfo>
|
|
<title>SICS manual for the SANS I instrument</title>
|
|
<authorgroup>
|
|
<author>
|
|
<personname>
|
|
<honorific>Dr</honorific>
|
|
<firstname>Joachim</firstname>
|
|
<surname>Kohlbrecher</surname>
|
|
</personname>
|
|
<address>
|
|
<affiliation>
|
|
<orgname>Paul Scherrer Institute PSI</orgname>
|
|
<orgdiv>LNS, Laboratory for Neutron Scattering</orgdiv>
|
|
</affiliation>
|
|
<city>Villigen</city>
|
|
<postcode>5232</postcode>
|
|
<country>Switzerland</country>
|
|
</address>
|
|
</author>
|
|
|
|
<author>
|
|
<personname>
|
|
<honorific>Dr</honorific>
|
|
<firstname>Mark</firstname>
|
|
<surname>Könnecke</surname>
|
|
</personname>
|
|
<address>
|
|
<affiliation>
|
|
<orgname>Paul Scherrer Institute PSI</orgname>
|
|
<orgdiv>LDM, Laboratory for Developments and Methods</orgdiv>
|
|
</affiliation>
|
|
<city>Villigen</city>
|
|
<postcode>5232</postcode>
|
|
<country>Switzerland</country>
|
|
</address>
|
|
</author>
|
|
|
|
<author>
|
|
<personname>
|
|
<honorific>Dr</honorific>
|
|
<firstname>Ronny</firstname>
|
|
<surname>Vavrin</surname>
|
|
</personname>
|
|
<address>
|
|
<affiliation>
|
|
<orgname>Paul Scherrer Institute PSI</orgname>
|
|
<orgdiv>LNS, Laboratory for Neutron Scattering</orgdiv>
|
|
</affiliation>
|
|
<city>Villigen</city>
|
|
<postcode>5232</postcode>
|
|
<country>Switzerland</country>
|
|
</address>
|
|
</author>
|
|
</authorgroup>
|
|
|
|
<pubdate>20.April 2007</pubdate>
|
|
|
|
<abstract>
|
|
<title>Abstract</title>
|
|
<para>This manual describes how to set up the small angle neutron scattering (SANS) instrument at
|
|
the SINQ spallation source at PSI and gives a short reminder of important commands.
|
|
This document can be
|
|
<ulink url="http://kur.web.psi.ch/sans1/SANSDoc/SICS4SANS1.pdf">downloaded</ulink> as a pdf file.
|
|
</para>
|
|
</abstract>
|
|
|
|
</bookinfo>
|
|
|
|
<chapter>
|
|
<title>Quick reference Guide</title>
|
|
<section>
|
|
<title>Instrument control programs</title>
|
|
<para>
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>startsics &</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
starts the SICS server.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>killsics &</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
kills the SICS server.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>sics &</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
starts the SICS command line client.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>sansstatus &</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
starts the SANS status display.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>varwatch &</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
starts the variable watcher.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
</para>
|
|
</section>
|
|
<section>
|
|
<title>The <computeroutput>token</computeroutput> command</title>
|
|
<para>
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>token grab</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
reserves control over the instrument to the client issuing this command.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>token release</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
releases the token.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>token force <passwd></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
This command forces an exiting grab on a token to be released (manager privileges required).
|
|
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
</para>
|
|
</section>
|
|
<section>
|
|
<title>Executing a macro</title>
|
|
<para>
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>exe BatchPath [<path>]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
defines directory for script files executed by <computeroutput>exe</computeroutput>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>exe <filename></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
executes script file <computeroutput><filename></computeroutput>
|
|
located in directory defined by <computeroutput>exe BatchPath</computeroutput>. This command
|
|
allows enhanced batch control through
|
|
the <computeroutput>SICSBatchEditor</computeroutput>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>ClientPut <text></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
writes <computeroutput><text></computeroutput>
|
|
to the client in which this command was written.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>BroadCast <text></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
writes <computeroutput><text></computeroutput>
|
|
to all clients.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
in a terminal window: <computeroutput>sanscheck <filename></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
checks the batchfile <computeroutput><filename></computeroutput>
|
|
for errors and calculates the total of Monis to be measured.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
TCL command language interface
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
is implemented in the SICS server.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
</para>
|
|
</section>
|
|
<section>
|
|
<title>Logging executed commands</title>
|
|
<para>
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>commandlog new <filename></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
starts a new <computeroutput>commandlog</computeroutput> writing to file <computeroutput><filename></computeroutput>
|
|
(file stored in <computeroutput>/home/SANS/log</computeroutput>).
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>commandlog</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
displays status of <computeroutput>commandlog</computeroutput>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>commandlog close</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
closes the command log.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>commandlog auto</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
switches the automatic log on.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>commandlog tail <n></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
prints the last <n> lines of the log file.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
</para>
|
|
</section>
|
|
<section>
|
|
<title>Driving a motor</title>
|
|
<para>
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>run <mot1> <val1> [<mot2> <val2> ...]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
starts motion of the motors to the new values without waiting for the requested operation to finish.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>drive <mot1> <val1> [<mot2> <val2> ...]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
drives the motors and waits until movement is finished.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>success</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
waits and blocks the command connection until all pending operations have finished.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><mot> list</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
lists all the motor <mot> parameters.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
</para>
|
|
</section>
|
|
<section>
|
|
<title>Motor handling</title>
|
|
<para>
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><motor> list</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
lists all motor parameters.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><motor> reset</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
resets motor parameters to default values.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><motor> position</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
prints actual position.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><motor> interest</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
prints position changes.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><motor> hardlowerlim</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
prints hardware lower limit.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><motor> hardupperlim</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
prints hardware upper limit
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><motor> softlowerlim [<val>]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
prints/sets software lower limit.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><motor> softupperlim [<val>]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
prints/sets software upper limit.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><motor> softzero [<val>]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
prints/sets software zero.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><motor> fixed [<val>]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
fixes motor for <computeroutput><val></computeroutput> ≥ 0 or releases it for
|
|
<computeroutput><val></computeroutput> < 0.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><motor> interruptmode [<val>]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
defines interrupt issued if motor movement fails.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><motor> precision [<val>]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
denotes the positioning precision.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><motor> accesscode [<val>]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
specify user privileges of <computeroutput><motor></computeroutput>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><motor> speed</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
defunct.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><motor> sign [<val>]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
reverses operation sense.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
|
|
</variablelist>
|
|
</para>
|
|
</section>
|
|
<section>
|
|
<title>Special commands (e.g. <computeroutput>st</computeroutput>,
|
|
<computeroutput>dt</computeroutput> ...)</title>
|
|
<para>
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><cop></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
lists current position.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><cop> back</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
drives component to last position.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><cop> pos <name></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
defines a name for actual position.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><cop> <name></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
drives component to named position.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><cop> drop <name></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
deletes named position.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><cop> drop all</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
deletes all named positions.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><cop> list</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
lists all named position.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><cop> find</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
returns name of actual position.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><cop> <axis> [=] <val> ...</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
drive component to new position.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
</para>
|
|
</section>
|
|
<section>
|
|
<title>Sample environment devices</title>
|
|
<para>
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>EVFactory new <ED> <type> <par> ...</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
creates a new sample environment device called <computeroutput><ED></computeroutput>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>EVFactory del <ED></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
deletes sample environment device <computeroutput><ED></computeroutput>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>emon list</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
lists all registered environment devices.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>emon register <ED></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
registers environment device <computeroutput><ED></computeroutput>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>emon unregister <ED></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
unregisters environment device <computeroutput><ED></computeroutput>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><ED> Tolerance [<val>]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
allowed deviation from preset.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><ED> Access [<val>]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
changes access to device.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><ED> Lowerlimit [<val>]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
lower limit for controller.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><ED> Upperlimit [<val>]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
upper limit for controller.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><ED> ErrHandler [<val>]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
error handler to use for this controller.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><ED> Interrupt [<val>]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
interrupt to issue when an error is detected.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><ED> SafeValue [<val>]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
The value to drive the controller to when an error is detected and safe error handling is set.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><ED> send <par> [<par> ...]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
sends everything after <computeroutput>send</computeroutput> directly to the controller and returns its response.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><ED> list</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
lists all parameters.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><ED> [<val>]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
returns current value or will drive device to new value <computeroutput><val></computeroutput>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><ED> log on/off</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
switches logging on/off.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><ED> log clear</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
clears all recorded time stamps and values.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><ED> log gettime</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
retrieves list of all recorded time stamps.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><ED> log getval</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
retrieves list of all recorded values.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><ED> log getmean</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
calculates mean value and standard deviation of logged values.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><ED> log frequency [<val>]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
specifies the time intervall in seconds between log records.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
</para>
|
|
</section>
|
|
<section>
|
|
<title>Beam shutter</title>
|
|
<para>
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>shutter</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
returns status of instrument shutter.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>shutter open</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
opens beam shutter.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>shutter close</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
closes beam shutter.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
</para>
|
|
</section>
|
|
<section>
|
|
<title>Neutron Velocity Selector</title>
|
|
<para>
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>lambda</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
prints the current wavelength in nm.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>drive lambda <val></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
changes wavelength to value <val> in nm.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>lambda rot <val></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
calculates the rotation speed for the wavelength given by <computeroutput><val></computeroutput>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>lambda wl <val></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
calculates the wavelength for the rotation speed given by <computeroutput><val></computeroutput>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>nvs status</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
prints status summary.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>nvs list</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
displays rotation speed and tilt angle.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>nvs [rot=<val1>] [tilt=<val2>]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
sets a new tilt angle and/or rotation speed.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>nvs rotinteres</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
enables printing of status message about the current state of the selector when it is driven.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>nvs loss</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
start a loss current measurement.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>nvswatch [<par>] ...</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
is the object for monitoring the velocity selector and understands the commands for sample environment devices.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
</para>
|
|
</section>
|
|
<section>
|
|
<title>Positioning an attenuator</title>
|
|
<para>
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>att</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
prints the current positioned attenuator.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>att <val></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
positions attenuator <computeroutput><val></computeroutput>.
|
|
Allowed attenuator numbers are: 0, 1, 2, 3, 4 and 5.
|
|
<simplelist>
|
|
<member>0 : square 50 mm x 50 mm slit, attenuation = 1
|
|
</member>
|
|
<member>1 : circular 41 x diameter 0.4 mm slit, attenuation = 1/485
|
|
</member>
|
|
<member>2 : circular 9 x diameter 2 mm slit, attenuation = 1/88
|
|
</member>
|
|
<member>3 : circular 20 mm diameter slit, attenuation = 1/8
|
|
</member>
|
|
<member>4 : circular 30 mm diameter slit, attenuation = 1/3.5
|
|
</member>
|
|
<member>5 : circular 15 mm diameter slit, attenuation = 1/??
|
|
</member>
|
|
</simplelist>
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
</para>
|
|
</section>
|
|
<section>
|
|
<title>Changing collimation</title>
|
|
<para>
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>coll</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
prints the current collimatin length.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>coll <val></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
positions the collimation <computeroutput><val></computeroutput>.
|
|
Allowed collimation lengths are: 1, 1.4, 2, 3, 4.5, 6, 8, 11, 15 and 18.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
</para>
|
|
</section>
|
|
<section>
|
|
<title>Positioning the detector</title>
|
|
<para>
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>detectorx</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
motor to change sample detector distance (<computeroutput>x</computeroutput>).
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>detectory</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
motor for lateral displacement (<computeroutput>y</computeroutput>).
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>detectorrotation</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
motor for detector rotation (<computeroutput>phi</computeroutput>).
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>dt [x=<val1>] [y=<val2>] [phi=<val3>]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
special SANS command for controlling all three detector axes together.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
</para>
|
|
</section>
|
|
<section>
|
|
<title>Positioning the beam stop</title>
|
|
<para>
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>beamstopx</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
motor for horizontal movement.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>beamstopy</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
motor for vertical movement.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>bs [x=<val1>] [y=<val2>]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
special SANS command for controlling both beam stop axes together.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>bsout</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
moves beam stop out of detecion area.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>bsin</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
moves beam stop back into position.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>bscfree</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
releases the beam stop motors.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>bschange [<val>]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
changes beam stop size, without parameter it returns the beam stop type.
|
|
<simplelist>
|
|
<member>1 for beam stop size of 40 mm x 40 mm
|
|
</member>
|
|
<member>2 for beam stop size of 70 mm x 70 mm
|
|
</member>
|
|
<member>3 for beam stop size of 85 mm x 85 mm
|
|
</member>
|
|
<member>4 for beam stop size of 100 mm x 100 mm
|
|
</member>
|
|
</simplelist>
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>bscslot</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
returns value of the beam stop type.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
</para>
|
|
</section>
|
|
|
|
<section>
|
|
<title>Sample table</title>
|
|
<para>
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>saz</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
motor for vertical translation (<computeroutput>z</computeroutput>).
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>say</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
motor for horizontal translation parallel to neutron beam (<computeroutput>y</computeroutput>).
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>sax</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
motor for horizontal translation perpendicular to neutron beam (<computeroutput>x</computeroutput>).
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>som</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
motor for rotation around vertical axis (<computeroutput>phi</computeroutput>).
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>gtheta</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
motor for rotation around horizontal axis (<computeroutput>theta</computeroutput>).
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>sposi</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
horizontal translation for linear translator (<computeroutput>posi</computeroutput>).
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>st [<axis n>=<val n>] ...</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
is a special SANS command for controlling all seven sample axes together.
|
|
<computeroutput><axis n></computeroutput> can be <computeroutput>x, y, z, omega, phi, theta, posi</computeroutput>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
</para>
|
|
</section>
|
|
<section>
|
|
<title>Bruker electro magnet</title>
|
|
<para>
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>evfactory new magnet bruker
|
|
</computeroutput>
|
|
</term>
|
|
<term>
|
|
<computeroutput>
|
|
lnsa10.psi.ch 4000 9</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
initialisation sequence.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>magnet</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
is a valid sample environment device if initialised as above.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>magnet polarity</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
prints polarity of magnet.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>magnet polarity <val></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
sets polarity, <computeroutput><val></computeroutput> can be
|
|
<computeroutput>plus</computeroutput> or <computeroutput>minus</computeroutput>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>magnet mode</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
prints the mode of the controller.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>magnet mode <val></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
sets mode, <computeroutput><val></computeroutput> can be
|
|
<computeroutput>field</computeroutput> or <computeroutput>current</computeroutput>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>magnet field</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
prints the magnetic field.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>magnet current</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
prints the current.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
</para>
|
|
</section>
|
|
<section>
|
|
<title>Sample holder for electro magnet</title>
|
|
<para>
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>mz</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
motor for vertical movement (<computeroutput>z</computeroutput>).
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>mom</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
motor for rotation around vertical axis (<computeroutput>omega</computeroutput>).
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>msh [z=<val1>] [omega=<val2>]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
is a special SANS command for controlling both axes of the magnet sample holder together.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
</para>
|
|
</section>
|
|
<section>
|
|
<title>Haake C25P temperature controller</title>
|
|
<para>
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>start_sea
|
|
</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
starts the sea server from SICS.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>temperature</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
reads out the current temperature.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>drive temperature <val></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
changes the set temperature of the thermostat to the value <computeroutput><val></computeroutput>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
in a terminal window: <computeroutput>sea
|
|
</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
starts the sea server client from a terminal. Choose Haake as device. The sea server client is the
|
|
best way to control and monitor the thermostat manually. Please refer to the
|
|
<ulink url="http://lns00.psi.ch/sinqwiki/Wiki.jsp?page=Sea">
|
|
SEA Wiki page</ulink> for more information.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
</para>
|
|
</section>
|
|
<section>
|
|
<title>Eurotherm controller</title>
|
|
<para>
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>evfactory new temperature euro
|
|
</computeroutput>
|
|
</term>
|
|
<term>
|
|
<computeroutput>
|
|
lnsa10.psi.ch 4000 <port></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
initialisation sequence. <port> is the serial port number at sans.psi.ch where
|
|
the controller is connected (usually port 13).
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>temperature</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
is a valid sample environment device if initialised as above.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>temperature list</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
overview of the temperature controller parameters. Use 'emon unregister temperature'
|
|
to avoid out of range error messages.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
</para>
|
|
</section>
|
|
<section>
|
|
<title>Analogue and digital input and output</title>
|
|
<para>
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>init_adios.tcl
|
|
</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
initialisation sequence.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>AO <channel> <value></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
sends an analogue signal (-10V -> 10V) to channel 0 or 1.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>AI <channel></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
reads the tension at channels 0 to 7. Channels 0 and 1 are reserved for the CJC and
|
|
the thermocouple readout.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>temp <type></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
returns the temperature as measured by a thermocouple (tc) or a resistor (pt).
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>log <time interval> <channel1>
|
|
<channel2> ...</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
stores the values measured at the specified channels into a file in the
|
|
speficied time interval. Up to 4 channels can be logged simultanuously.
|
|
The temperature can be logged using channel 1.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>log stop</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
stops logging the data.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
</para>
|
|
</section>
|
|
<section>
|
|
<title>Counter handling</title>
|
|
<para>
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>counter SetPreset <val></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
sets the preset to <computeroutput><val></computeroutput>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>counter GetPreset</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
prints the current preset value.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>counter SetExponent <val></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
sets exponent for <computeroutput>Monitor</computeroutput> mode.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>counter GetExponent</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
prints current exponent used in <computeroutput>Monitor</computeroutput> mode.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>counter SetMode <val></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
sets counting mode. Allowed modes are <computeroutput>Timer</computeroutput>
|
|
and <computeroutput>Monitor</computeroutput>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>counter GetMode</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
prints the current mode.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>counter GetCounts</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
prints counts gathered in the last run.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>counter GetMonitor <n></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
prints counts gathered by monitor <computeroutput><n></computeroutput> in the last run.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>counter Count <preset></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
starts counting with preset <computeroutput><preset></computeroutput>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>counter Status</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
prints the counter status.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>counter GetTime</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
retrieves the actual time the counter counted for.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>counter GetThreshold <n></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
retrieves the threshold of monitor <computeroutput><n></computeroutput>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>counter SetThreshold <n> <val></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
sets the threshold for monitor <computeroutput><n></computeroutput> to
|
|
<computeroutput><val></computeroutput> and also sets the active monitor for the threshold
|
|
to <computeroutput><n></computeroutput>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
</para>
|
|
</section>
|
|
<section>
|
|
<title>Histogram Memory</title>
|
|
<para>
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>banana configure HistMode <val></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
sets the mode of operation (<computeroutput>Transparent, Normal, TOF, Stroposcopic</computeroutput>).
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>banana configure OverFlowMode <val></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
determines how bin overflow is handled (<computeroutput>Ignore, Ceil, Count</computeroutput>).
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>banana configure Rank <val></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
defines number of histograms in memory.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>banana configure Length <val></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
gives length of individual histogram.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>banana configure BinWidth <val></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
determines size of single bin in histogram memory in bytes.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>banana timebin</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
prints actual time binning aray.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>banana genbin <start> <step> <n></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
determines size of single bin in histogram memory in bytes.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>banana setbin <inum> <val></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
configuring unequally spaced time binnings.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>banana clearbin</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
deletes the binning informations.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>banana preset [<val>]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
prints/sets preset <computeroutput>Timer</computeroutput> or <computeroutput>Monitor</computeroutput>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>banana exponent [<val>]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
prints/sets exponent for <computeroutput>Monitor</computeroutput> preset.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>banana CountMode [<mode>]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
prints/sets count mode (<computeroutput>Monitor</computeroutput>, <computeroutput>Timer</computeroutput>).
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>banana init</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
transfers configuration from host to the actual histogram memory.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>banana count</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
starts counting.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>banana initval <val></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
initialises histogram memory to value <computeroutput><val></computeroutput>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>banana get <i> <istart> <iend></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
retrieves a part of histogram memory.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>banana sum <d0min> <d0max> <d1min> <d1max></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
returns the sum of counts on an area of the detector.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
</para>
|
|
</section>
|
|
<section>
|
|
<title>Data acquisition</title>
|
|
<para>
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>StoreData</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
writes current instrument status to a NeXus file.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>count [<mode> <preset>]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
start count operation in mode <computeroutput><mode></computeroutput>
|
|
with preset <computeroutput><preset></computeroutput>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>repeat <num> [<mode> <preset>]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
calls <computeroutput><num></computeroutput> times <computeroutput>count</computeroutput>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
</para>
|
|
</section>
|
|
<section>
|
|
<title>XY table</title>
|
|
<para>
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>xydata clear</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
clears all entries in the x-y table.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>xydata list</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
lists the entries in the x-y table on the screen.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>xydata write <filename></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
writes the x-y list to the disk file <computeroutput><filename></computeroutput>.
|
|
This file resides on the machine running the SICS server.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>xydata uuget</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
sends the x-y list in an uuen-coded format. This is the command to give to the
|
|
VarWatch SICS client in order to make it display the x-y list.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>xydata add <xval> <yval></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
creates a new x-y list entry with the values <xval> and <yval>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
</para>
|
|
</section>
|
|
<section>
|
|
<title>Useful commands</title>
|
|
<para>
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>gc <measMonis> <totalCounts></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
GuessCount: executes a measurement of <measMonis> Monis and extrapolates the measurement time and Monis
|
|
for a final value of <totalCounts> counts. A useful tool to estimate the measurement time for a sample. Example:
|
|
<computeroutput>gc 5 1E7</computeroutput> forces the instrument to measures for 5 Monis and estimates the measurement
|
|
time and Monis for 10'000'000 counts.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>qrange [x <detdist>] [wl <lambda>]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
calculates the q range of the current setting. The detector distance x (in mm) and the wavelength wl
|
|
(in nm) can be varied with the optional parameters. Examples: <computeroutput>qrange</computeroutput> prints the q range of the current
|
|
setting, <computeroutput>qrange x 6000 wl 0.8</computeroutput> prints the q range of the current
|
|
setting with forced values for the detector distance (6000mm) and the wavelength (0.8nm).
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>sinq</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
prints the SINQ status in the SICS client which issued the command.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
in a terminal window: <computeroutput>sanscheck <filename></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
checks the batchfile <computeroutput><filename></computeroutput>
|
|
for errors and calculates the total of Monis to be measured.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
</para>
|
|
</section>
|
|
|
|
</chapter>
|
|
|
|
<chapter>
|
|
<title>How to start</title>
|
|
<section>
|
|
<title>Log in on the SANS computer</title>
|
|
<para>
|
|
After starting up an X-Terminal click on the XDMCP button and choose
|
|
the computer <emphasis>lnsa10.psi.ch</emphasis>. Login with your
|
|
<computeroutput><username></computeroutput>
|
|
and <computeroutput><password></computeroutput>
|
|
(case sensitive, this is a Unix machine). Wait for the Common Desktop
|
|
Environment to start up. Open a terminal window (dtterm).
|
|
You will be asked for your last name and if this is your first login a
|
|
subdirectory <computeroutput>/data/lnsg/<lastname></computeroutput>
|
|
will be created.
|
|
</para>
|
|
</section>
|
|
<section>
|
|
<title>Start the SINQ instrument control software SICS</title>
|
|
<para>
|
|
SICS is a client server system. This means there are at least two programs
|
|
necessary to run the experiment. The first is the server program, which
|
|
runs for the SANS instrument on the <emphasis>lnsa10.psi.ch</emphasis>
|
|
workstation. A user rarely needs to bother about this program as it meant to run
|
|
all the time. Secondly a client program is needed, through which the user can interact
|
|
with the instrument control server. Its main purpose is to forward commands
|
|
to the server and to display the answers. For the SANS instrument three
|
|
SICS clients are available:
|
|
|
|
<orderedlist>
|
|
<listitem><para>command line control client (<computeroutput>sics &</computeroutput>)
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>status display (<computeroutput>sansstatus &</computeroutput>)
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>variable watcher (<computeroutput>varwatch</computeroutput>)
|
|
</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
|
|
Any of the SICS clients first have to be connected to a SICS server before
|
|
it becomes active.Therefor you first have to establish a connection through
|
|
the <computeroutput>[Connect]</computeroutput> menu of the client.
|
|
</para>
|
|
|
|
<section>
|
|
<title>Command control line client</title>
|
|
<para>
|
|
The command line control client allows you after connecting to the
|
|
instrument server to read out instrument parameters like
|
|
motor positions, temperatures, magnetic field, etc. In order to move a motor
|
|
or to start a data aquisition you need access privileges. The SICS
|
|
server supports autorisation on different levels to protect the
|
|
instrument against unauthorized hackers or accidental change of
|
|
the instrument adjustment of less knowledgable user. Four different
|
|
levels of access to the instrument are supported.
|
|
|
|
<orderedlist>
|
|
<listitem><para><emphasis>Spy</emphasis>: you may read out any
|
|
instrument value, but may not change anything
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>User</emphasis>: you are privileged
|
|
to perform a certain amount of operations necessary
|
|
to run the instrument
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Manager</emphasis>: you have the
|
|
permission to do almost everything
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis>Internal</emphasis>: is not accessible
|
|
to the outside world and is used to circumvent
|
|
protection for internal uses
|
|
</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
|
|
To change the privileges select <computeroutput>[Set Rights]</computeroutput>
|
|
from the <computeroutput>[User Parameter]</computeroutput> menu.
|
|
With an valid username and the corresponding password you will get
|
|
the privileges to change the instrument set-up. Please do not use this privileges
|
|
on any other terminal than the one in the SANS cabine. For more information click
|
|
on <computeroutput>[Help]</computeroutput> button on the top right corner of the
|
|
command line client. A list of the most needed SICS commands is given in
|
|
<xref linkend="instrcontrcomm"/>. If you start the sics client the first time you
|
|
should fill out this items in the menu
|
|
<computeroutput>[New Experiment]</computeroutput> for documentation
|
|
of your data.
|
|
</para>
|
|
</section>
|
|
<section>
|
|
<title>SANS status display</title>
|
|
<para>
|
|
The SANS status display is an application for displaying the status of a SANS
|
|
measurement at SINQ. The application can be stated by the command
|
|
<computeroutput>sansstatus &</computeroutput>. First a connection to the
|
|
SICS server has to be established. You can choose between two data display areas.
|
|
The first form shows a large colour mapped image of the detector.
|
|
The second form shows a couple of selected instrument parameters.
|
|
Switching between the two displays is achieved through the buttons
|
|
<computeroutput>[Detector]</computeroutput> and <computeroutput>[Parameter]
|
|
</computeroutput>of the tool bar.
|
|
</para>
|
|
<para>
|
|
The displayed data window can be updated either manually or automatic. By
|
|
default manual update is enabled. Manual update happens when hitting the
|
|
red button at the bottom. Automatic update can be enabled by checking the
|
|
CheckBox labelled <computeroutput>[Automatic Update]</computeroutput> in
|
|
the <computeroutput>[Update]</computeroutput> menu. The update intervall
|
|
can be configured with a dialog which shows up when the
|
|
<computeroutput>[Set Update Intervall]</computeroutput> menu selection is
|
|
clicked. Automatic updates impose a high network load. Use with care and
|
|
only when necessary. For this reason, automatic updates are disabled in
|
|
the applet version of this program. An updates take approximatly 5 seconds.
|
|
Consequently update intervalls shorter than that are nonsense. Speeding
|
|
this up an <computeroutput>[Turbo Update]</computeroutput> button has been
|
|
introduced. In this modus the client doesn't communicate with the SICS
|
|
server to recieve the detector information, but it communicates directly
|
|
with the histograming memory. This speeds the update frequency up to a few
|
|
frames per second. <computeroutput>[Turbo Update]</computeroutput> will
|
|
continuously poll the histogram memory for new histogram data. This is only
|
|
limited by CPU, network and histogram memory performance. Thus
|
|
<computeroutput>[Turbo Update]</computeroutput> tends to overload your
|
|
system. It should only be used while adjusting the beamstop, otherwise its
|
|
use is a waste of system resources which will eventually slow down your
|
|
data reduction chores. Do NOT forget to switch this off when you are done.
|
|
The system will automatically switch to <computeroutput>[Auto Update]
|
|
</computeroutput> mode after 20 minutes.
|
|
</para>
|
|
<para>
|
|
The detector display has a lot of options. Below the colour picture there
|
|
is a line which displays the current detector coordinate and the data
|
|
value at the current mouse position. By choosing the <computeroutput>
|
|
[Open Old File]</computeroutput> item in the <computeroutput>[File]
|
|
</computeroutput> menu you can load an old data set, i.e. you
|
|
can use the SANS status display as a viewer for old SANS data files. A
|
|
double clicking on the colour display brings up a dialog which allows to
|
|
configure the colour mapping of the detector display. By
|
|
holding down the mouse button and dragging the mouse a rectangular
|
|
area of the detector display can be selected. When releasing the mouse
|
|
button, the selected region is summed and displayed as a X-Y graph
|
|
in a separate window. In the title of this plot the total
|
|
counts in the selected rectangular area on the detector is printed.
|
|
Dragging the mouse downwards in this new window allows to zoom in into
|
|
details of the histogram. Dragging the mouse upwards zooms out again.
|
|
At the bottom of the window is a dismiss button which removes the
|
|
histogram window. The histogram in the histogram window will NOT be
|
|
automatically updated when new data arrives.
|
|
</para>
|
|
</section>
|
|
<section>
|
|
<title>Variable watcher <computeroutput>varwatch</computeroutput>
|
|
</title>
|
|
<para>
|
|
This little SICS client allows to plot the value of a variable in a
|
|
SICS server against time. This will probably be mostly used for
|
|
watching the temperature stability of a temperature controller.
|
|
But it is not restricted to temperature variables, all numeric SICS
|
|
variables can be monitored that way.
|
|
</para>
|
|
<para>
|
|
The configuration of the variable watcher involves two steps:
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>Select your favourite
|
|
SICS server from the choices in the
|
|
<computeroutput>[Connect]</computeroutput> menu.
|
|
<computeroutput>[Custom]</computeroutput> allows to
|
|
specify a SICS server directly by host name and port number.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Configure the variable to watch using the
|
|
<computeroutput>[Configure]</computeroutput> item in the
|
|
<computeroutput>[Plot]</computeroutput> menu. Three
|
|
parameters are relevant:
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>The watch frequency, which is the
|
|
time in minutes between plot updates.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>The backlog, which is the number
|
|
of values which will be plotted.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
The SICS variable to watch. This text
|
|
must be a valid SICS command which returns
|
|
a reply in the form
|
|
<computeroutput>blabla = <number>
|
|
</computeroutput>.
|
|
</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
</para>
|
|
<para>
|
|
Further user interface elements are two buttons below the plot.
|
|
These allow to start and stop the recording of the variables value.
|
|
The yellow text field besides these buttons displays the current
|
|
operation of the variable watcher which can be one of Inactive or
|
|
Recording. Below is a line showing the current status of the SICS
|
|
server. Please note, that the most recent value is always at the
|
|
right hand side of the plot.
|
|
</para>
|
|
<para>
|
|
The plot can be zoomed into by dragging downwards with the left
|
|
mouse button. Zooming out is achieved by dragging outwards with
|
|
the mouse or with the <computeroutput>[Reset]</computeroutput>
|
|
or <computeroutput>[Rescale Y]</computeroutput> options in the
|
|
<computeroutput>[Plot]</computeroutput> menu. The plot can be
|
|
printed using the <computeroutput>[Print]</computeroutput> option
|
|
in the <computeroutput>[Plot]</computeroutput> menu. Next to
|
|
plotting a variable in a SICS server against time the variable
|
|
watcher can be used to display a <computeroutput>XYTable</computeroutput>
|
|
which is a class maintaining a list of x-y values. If a
|
|
<computeroutput>XYTable</computeroutput> object is available in
|
|
the system under the name <computeroutput><xydata></computeroutput>
|
|
the command <computeroutput><xydata> uuget</computeroutput> has
|
|
to be given to the <computeroutput>varwatch</computeroutput> SICS
|
|
client in order to make it display the x-y list. More information
|
|
about handling a <computeroutput>XYTable</computeroutput> can be
|
|
found in <xref linkend="xytablecommand"/>.
|
|
</para>
|
|
</section>
|
|
</section>
|
|
<section>
|
|
<title>Instrument preparation before the first measurement</title>
|
|
<para>
|
|
Before you can start with your first data aquisition be aware of a few things.
|
|
For running a measurement you need at least to run two programs: the SANS
|
|
status display (<computeroutput>sansstatus &</computeroutput>) and the
|
|
command line client (<computeroutput>sics &</computeroutput>). After
|
|
connecting both clients to the SANS server and authorizing the command line
|
|
client at the server with user privileges you are ready to change the instrument
|
|
set-up. The initial step at the beginning of your measurement are the following:
|
|
<orderedlist numeration="arabic">
|
|
<listitem><para>Check if beam is closed, if not than do it now.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Set the experiment informations via the dialog box
|
|
<computeroutput>[New Experiment]</computeroutput>.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Define the directory, where you intend to store your batch
|
|
files with
|
|
<computeroutput>exe batchpath /data/lnsg/<username>[/<batchdir>]</computeroutput>.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Choose the needed instrument settings like sample detector
|
|
distance, collimation, wavelength, etc.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Adjust the beam stop by performing the following steps:
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Move in an attenuator with an attenuation factor
|
|
larger than 100.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Put a strong forward scatterer into the beam,
|
|
e.g. teflon
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Center the beam stop roughly by the SICS
|
|
command <computeroutput>bs x 0 y 0</computeroutput>.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Open the beam.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Use the command <computeroutput>banana preset 1000
|
|
</computeroutput> and <computeroutput>banana count
|
|
</computeroutput> to start an aquisition without storing
|
|
the result.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Adjust the beam stop with the
|
|
<computeroutput>bs</computeroutput>-command.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>After each beam stop movement you can reset the
|
|
histograming memory of the detector by
|
|
<computeroutput>banana initval 0</computeroutput>.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Remove the attenuator.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Perform a fine adjustment of the beam stop with an
|
|
unattenuated beam if neccessary.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Stop the data aquisition by pressing the
|
|
<computeroutput>[Interrupt]</computeroutput> button in the
|
|
lower left corner of the command line client.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
</para>
|
|
</section>
|
|
</chapter>
|
|
|
|
<chapter id="instrcontrcomm">
|
|
<title>Instrument control commands </title>
|
|
<section>
|
|
<title>Some basic SICS commands and concepts</title>
|
|
<section>
|
|
<title>The <computeroutput>token</computeroutput> command</title>
|
|
<para>In SICS any client can issue commands to the SICS server.
|
|
This is a potential cause for trouble with users issuing conflicting
|
|
commands without knowing. In order to deal with this problem a token
|
|
mechanism has been developed. A connection can grab a token and then
|
|
has full control over the SICS server. Any other connection will not
|
|
be privileged to do anything useful, except for looking at things.
|
|
A token can be released manually with a special command or is automatically
|
|
released when the connection dies. Another command exists which allows
|
|
a SICS manager to force his way into the SICS server. The commands in
|
|
more detail:
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>token grab</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
Reserves control over the instrument to the client issuing this
|
|
command. Any other client cannot control the instrument now.
|
|
However, other clients are still able to inspect variables.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>token release</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
Releases the control token. Now any other client can control
|
|
the instrument again. Or grab the control token.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>token force <password></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
This command forces an existing grab on a token to be released.
|
|
This command requires manager privilege. Furthermore a special
|
|
password must be specified as third parameter in order to do
|
|
this. This command does not grab control though.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
</section>
|
|
<section>
|
|
<title>How to execute Macros</title>
|
|
<para>
|
|
SICS has a built in macro facility. This macro facility is aimed at instrument
|
|
managers and users alike. Instrument managers may provide customised measurement
|
|
procedures in this language, users may write batch files in this language.
|
|
The macro language is
|
|
<ulink url="http://cseng.awl.com/authordetail.qry?AuthorID=69">
|
|
John Ousterhout's </ulink>
|
|
<ulink url="http://www.tcltk.com">
|
|
Tool Command Language (TCL)</ulink>.
|
|
A set of important Tcl commands are described in section <xref linkend="TCLcommands"/>.
|
|
To execute batch files, the following commands are available:
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>exe BatchPath [<pathname>]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
By this command the directory name, in which SICS is searching
|
|
for a batch file, is stored in the SICS variable
|
|
<computeroutput>exe BatchPath</computeroutput>. Calling
|
|
<computeroutput>exe BatchPath</computeroutput> without parameters
|
|
will return the actual contents of the variable.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>exe <filename></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
This command tries to open the file <computeroutput>filename</computeroutput>
|
|
located in the directory defined by
|
|
<computeroutput>exe BatchPath</computeroutput> and executes the
|
|
script in this file.
|
|
This command allows enhanced batch control through the
|
|
<computeroutput>SICSBatchEditor</computeroutput>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
If you want to print information from a macro script to a client (about the progress of
|
|
the batch job for example), special commands are available:
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>ClientPut some text ...</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
This command writes everything after <computeroutput>ClientPut</computeroutput>
|
|
to the client which started the script.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>BroadCast some text ...</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
This command writes everything after <computeroutput>BroadCast</computeroutput>
|
|
to all clients.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
To check a batchfile for errors and to estimate the total Monis to be measured, a special program
|
|
can be executed in a terminal window. Navigate to the folder containing the batchfile and execute
|
|
the following command
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>
|
|
in a terminal window: <computeroutput>sanscheck <filename></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
checks the batchfile <computeroutput><filename></computeroutput>
|
|
for errors and calculates the total of Monis to be measured.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
|
|
</section>
|
|
<section>
|
|
<title>Logging the executed commands</title>
|
|
<para>
|
|
Some users wish to have all communication of the SICS server with all the clients
|
|
having user or manager privileges being collected in a file for further review. This
|
|
is implemented via the <computeroutput>commandlog</computeroutput> command. This log
|
|
allows to retrace each step of an experiment. It is usually switched off and must be
|
|
configured by the instrument manager. <computeroutput>commandlog</computeroutput>
|
|
understands the following syntax:
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><computeroutput>commandlog new <filename></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
starts a new <computeroutput>commandlog</computeroutput> writing to
|
|
<computeroutput><filename></computeroutput>. The log file can be found for the SANS server in
|
|
the directory <computeroutput>/home/SANS/log</computeroutput>.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>commandlog</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
without further parameters displays the status of the <computeroutput>commandlog.
|
|
</computeroutput>
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>commandlog close</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
closes the command log file.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
If the user wishes a transscript of the SICS session of the command line client he
|
|
is just working with, he can use the <computeroutput>[Open Logfile]</computeroutput>
|
|
option in the <computeroutput>[File]</computeroutput> menu. It will allow
|
|
you to specify a file on your local disk area, where all input/output is logged to.
|
|
You will get everything which appears in the client's I/O window. The input is
|
|
prepended with ???. In contrast to the <computeroutput>commandlog</computeroutput>,
|
|
which log communication of all clients connected to the server, the
|
|
<computeroutput>[Open Logfile]</computeroutput> option of the client only allows you
|
|
to log the communication of its own to a local file.
|
|
</para>
|
|
</section>
|
|
<section>
|
|
<title>Some variables for documentation</title>
|
|
<para>SICS supports a couple of variables for documentation of a measurement.
|
|
Currently available are:</para>
|
|
<para>
|
|
<computeroutput>user, adress, phone, fax, email, title, subtitle, environment,
|
|
sample, comment
|
|
</computeroutput>
|
|
</para>
|
|
<para>Each variable can be inquired by just typing its name. It can be set by typing
|
|
the name followed by the new name, e.g.
|
|
<computeroutput>title nanocrystalline Fe</computeroutput>.
|
|
These variables can also be set by the <computeroutput>[Set Experiment]</computeroutput>
|
|
dialog box, which can be started via the <computeroutput>[New Parameter]</computeroutput>
|
|
option of the <computeroutput>[User Parameter]</computeroutput> menu item in the command
|
|
line client. The user is required
|
|
to fill this variables with utmost care, because if you want us to retrieve your data in
|
|
ten years time you will be happy that the information will be there.
|
|
</para>
|
|
</section>
|
|
<section id="drivecommands">
|
|
<title>Drive commands</title>
|
|
<para>Many objects in SICS are drivable. This means they can run to a new value.
|
|
Obvious examples are motors. Less obvious examples include composite adjustments
|
|
such as setting a wavelength or a temperature. This class of ob jects can be operated
|
|
by the <computeroutput>drive</computeroutput>, <computeroutput>run</computeroutput>
|
|
, <computeroutput>success</computeroutput> family of commands. These commands cater
|
|
for blocking and non-blocking modes of operation.
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><computeroutput>run <var> <newval> [<var>
|
|
<newval> ...]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
Can be called with one to n pairs of object new value pairs. This command will
|
|
set the variables in motion and return to the command prompt without waiting
|
|
for the requested operations to finish. This feature allows to do things to
|
|
the instrument while for example a slow device is running into position.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>success</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
Waits and blocks the command connection until all pending operations have
|
|
finished (or an 'interrupt' occured).
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>drive <var> <newval> [<var>
|
|
<newval> ...]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
can be called with one to n pairs of ob ject new value pairs. This command
|
|
will set the variables in motion and wait until the driving has finished.
|
|
A drive can be seen as a sequence of a run command as stated above immediatetly
|
|
followed by a Success command.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
</section>
|
|
<section id="motorhandling">
|
|
<title>SICS motor handling</title>
|
|
<para>
|
|
In SICS each motor is an object with a name. Motors may take commands which basically
|
|
come in the form <computeroutput><motorname> <command></computeroutput>.
|
|
Most of these commands deal with the plethora of parameters which are associated with
|
|
each motor. The syntax for manipulating variables is, again, simple.
|
|
<computeroutput><motorname> <parametername></computeroutput> will print
|
|
the current value of the variable. <computeroutput><motorname> <parametername>
|
|
<newval></computeroutput> will set the parameter to the new value specified. A
|
|
list of all parameters and their meanings is given below. The general principle behind
|
|
this is that the actual (hardware) motor is kept as stupid as possible and all the
|
|
intracacies of motor control are dealt with in software. Besides the parameter commands
|
|
any motor understands these basic commands:
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><computeroutput><motorname> list
|
|
</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
gives a listing of all motor parameters</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><motorname> reset
|
|
</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
resets the motor parameters to default values.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><motorname> position
|
|
</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
prints the current position of the motor.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><motorname> interest
|
|
</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
initiates automatic printing of any position change of the motor. This
|
|
command is mainly interesting for implementors of status display clients.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
Please note that the actual driving of the motor is done via the
|
|
<computeroutput>drive</computeroutput> or <computeroutput>run</computeroutput> command
|
|
described in the last
|
|
<xref linkend="drivecommands"/>
|
|
</para>
|
|
<para>
|
|
The motor parameters:
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><computeroutput>HardLowerLim
|
|
</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
is the hardware lower limit. This is read from the motor controller and is
|
|
identical to the limit switch welded to the instrument. Can usually not be
|
|
changed.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>HardUpperLim
|
|
</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
is the hardware upper limit. This is read from the motor controller and is
|
|
identical to the limit switch welded to the instrument. Can usually not be
|
|
changed.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>SoftLowerLim
|
|
</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
is the software lower limit. This can be defined by the user in order to
|
|
restrict instrument movement in special cases.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>SoftUpperLim
|
|
</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
is the software upper limit. This can be defined by the user in order to
|
|
restrict instrument movement in special cases.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>SoftZero
|
|
</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
defines a software zero point for the motor. All further movements will
|
|
be in respect to this zeropoint.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>Fixed
|
|
</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
can be greater 0 for the motor being fixed and less than zero for the motor
|
|
being movable.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>InterruptMode
|
|
</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
defines the interrupt to issue when the motor fails. Some motors are so
|
|
critical for the operation of the instrument that all operations shall be
|
|
stopped when there is a problem. Others are less critical. This criticallity
|
|
is expressed in terms of interrupts, denoted by integers in the range 0 - 4
|
|
translating into the interrupts: continue, AbortOperation, AbortScan,
|
|
AbortBatch and Halt. This parameter can usually only be set by managers.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>Precision
|
|
</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
denotes the precision to expect from the motor in positioning. Can usually
|
|
only be set by managers.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>AccessCode
|
|
</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
specifies the level of user privilege necessary to operate the motor. Some
|
|
motors are for adjustment only and can be harmful to move once the adjustment
|
|
has been done. Others must be moved for the experiment. Values are 0 - 3 for
|
|
<computeroutput>internal</computeroutput>, <computeroutput>manager</computeroutput>
|
|
, <computeroutput>user</computeroutput>, and <computeroutput>spy</computeroutput>.
|
|
This parameter can only be changed by managers.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>Speed
|
|
</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
defunct.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>Sign
|
|
</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
allows to reverse the operating sense of the motor. For cases where electricians
|
|
and not physicists have defined the operating sense of the motor. Usually a
|
|
parameter not to be changed by ordinary users.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
</section>
|
|
<section id="specialsanscommands">
|
|
<title>Special SANS commands</title>
|
|
<para>
|
|
This section describes some commands special to SANS. One feature of SANS is that
|
|
components are used as a whole rather than refering to single motors. For SANS the
|
|
beamstop, the detector and the sample table is managed like this. Within a component
|
|
each axis can be adressed specifically by using an <computeroutput>axis</computeroutput>
|
|
= <computeroutput>value</computeroutput> pair. Axis defined for each component will
|
|
be listed below. Additionally these components support common commands as well. These
|
|
mainly deal with named positions. A named position is a set of values which can be
|
|
driven to by just specifying its name. For instance: <computeroutput>bs PositionA
|
|
</computeroutput> drives the BeamStop <computeroutput>bs</computeroutput> to the
|
|
position defined as <computeroutput>PositionA</computeroutput>. All component drive
|
|
commands do not block, i.e. you can type further commands. If it is needed to wait
|
|
for a component to arrive, use the <computeroutput>Success</computeroutput> command
|
|
right after your command.
|
|
</para>
|
|
<para>
|
|
Commands supported by all components (in the following, the name of the component
|
|
will be represented by <computeroutput><COP></computeroutput>):
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><computeroutput><COP></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>The name of the component alone will yield a listing of the
|
|
current position of the component. This is also a way how to find out which
|
|
axis the component supports.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><COP> back</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>drives the component back to the position before the last
|
|
command. Please note, that back does not operate on itself, i.e. two times
|
|
<computeroutput><COP> back</computeroutput> will not do a trick.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><COP> pos <name></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>This command promotes the current position of the component
|
|
to a named position <computeroutput><name></computeroutput>. Afterwards
|
|
this position can be reached by typing: <computeroutput><COP> <name>
|
|
</computeroutput>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><COP> drop <name></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>deletes the named position specified as second parameter.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><COP> find</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>returns the name <computeroutput><name></computeroutput>
|
|
of the actual position of the component if the position was named before by
|
|
<computeroutput><COP> pos <name></computeroutput>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><COP> <axis 1> [=] <val 1>
|
|
[<axis 2> [=] <val 2> ...]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>drives the component to the new position specified by 1-n
|
|
sets of <computeroutput><axis n> = <val n></computeroutput>
|
|
pairs. The equal sign is not mandatory and can be left out. The axis refers
|
|
to the internal axis of the component which is seen in a listing as created
|
|
by typing <computeroutput><COP></computeroutput>. A relative movement
|
|
of an axis can be performed if an <computeroutput>++</computeroutput>
|
|
or <computeroutput>--</computeroutput> precedes the value for
|
|
<computeroutput><val n></computeroutput>. A value
|
|
<computeroutput>++10</computeroutput>, for example would mean an increase of
|
|
the actual axis position by 10.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
The components which follow the component syntax described above are <computeroutput>bs</computeroutput>
|
|
(beam stop), <computeroutput>dt</computeroutput> (detector),
|
|
<computeroutput>st</computeroutput> (sample table), and <computeroutput>msh</computeroutput>
|
|
(magnet sample holder). They are described in more detail in later sections.
|
|
</para>
|
|
</section>
|
|
<section>
|
|
<title>Sample Environment Devices</title>
|
|
<section>
|
|
<title>SICS Concepts for Sample Environment Devices</title>
|
|
<para>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 continuously. Therefore there exists
|
|
a facility for dynamically configuring and deconfiguring environment devices into
|
|
the system. This is done via the <computeroutput>EVFactory</computeroutput> command.
|
|
It is expected that instrument scientists will provide command procedures for
|
|
configuring environment devices and setting reasonable default parameters.
|
|
</para>
|
|
<para>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 <computeroutput>emon</computeroutput>. The <computeroutput>emon</computeroutput>
|
|
command understands a few commands of its own.
|
|
</para>
|
|
<para>Within SICS all sample environment 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.
|
|
</para>
|
|
<para>In the next paragraphs the <computeroutput>EVFactory</computeroutput>,
|
|
<computeroutput>emon</computeroutput> and the general commands understood by any sample
|
|
environment device will be discussed. Reading this is mandatory for understanding SICS
|
|
environment device handling. Then there will be another section later on in this
|
|
manual discussing the special devices known to the system.
|
|
</para>
|
|
</section>
|
|
<section>
|
|
<title>Sample Environment Error Handling</title>
|
|
<para>A sample environment device may fail to stay at its preset value during a
|
|
measurement. This condition will usually be detected by the
|
|
<computeroutput>emon</computeroutput>. The question is how to deal with this problem.
|
|
The requirements
|
|
for this kind of error handling are quite differentiated. The SICS model therefore
|
|
implements several strategies for handling sample environment device failure handling.
|
|
The strategy to use is selected via a 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:
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><computeroutput>Lazy</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>Just print a warning and continue.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>Pause</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>Pauses the measurement until the problem has been resolved.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>Interrupt</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>Issues a SICS interrupt to the system.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>Safe</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>Tries to run the environment device to a value considered
|
|
safe by the user.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
</section>
|
|
<section>
|
|
<title>General Sample Environment Commands</title>
|
|
<para>
|
|
<emphasis>
|
|
<computeroutput>EVFactory</computeroutput> command:</emphasis>
|
|
</para>
|
|
<para>
|
|
<computeroutput>EVFactory</computeroutput>
|
|
is responsible for configuring and deconfiguring sample
|
|
environment devices into SICS. The syntax is simple:
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><computeroutput>EVFactory new <name> <type> <par>
|
|
[<par> ...]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>Creates a new sample environment device. It will be known to
|
|
SICS by the name specified as second parameter
|
|
<computeroutput><name></computeroutput>. The
|
|
<computeroutput><type></computeroutput>
|
|
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.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>EVFactory del <name></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>Deletes the environment device
|
|
<computeroutput><name></computeroutput> from the
|
|
system.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
<para>
|
|
<emphasis>
|
|
<computeroutput>emon</computeroutput> command:</emphasis>
|
|
</para>
|
|
<para>
|
|
The environment monitor <computeroutput>emon</computeroutput> takes for the monitoring
|
|
of an environment device during measurements. It also initiates error handling when
|
|
appropriate. The <computeroutput>emon</computeroutput> understands a couple of commands.
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><computeroutput>emon list</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>This command lists all environment devices currently
|
|
registered in the system.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>emon register <name></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>This is a specialist command which registers the
|
|
environment device <computeroutput><name></computeroutput> with the
|
|
environment monitor. Usually this will automatically be taken care of
|
|
by <computeroutput>EVFactory</computeroutput>.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>emon unregister <name></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>This is a specialist command which unregisters the
|
|
environment device <computeroutput><name></computeroutput> with the
|
|
environment monitor. Following this call the device will no longer be
|
|
monitored and out of tolerance errors on that device no longer be
|
|
handled.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
</section>
|
|
</section>
|
|
<section>
|
|
<title>General Commands UnderStood by All Sample Environment Devices</title>
|
|
<para>Please note that each command discussed below MUST be prepended with the
|
|
<computeroutput><name></computeroutput> of the environment device as configured
|
|
in <computeroutput>EVFactory</computeroutput>! 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:
|
|
<simplelist>
|
|
<member>
|
|
<computeroutput>Temperature Tolerance</computeroutput> prints the value of the variable
|
|
<computeroutput>Tolerance</computeroutput> for the environment controller
|
|
<computeroutput>Temperature</computeroutput>.
|
|
</member>
|
|
<member>
|
|
<computeroutput>Temperature Tolerance 2.0</computeroutput> sets the parameter
|
|
<computeroutput>Tolerance</computeroutput> for <computeroutput>Temperature</computeroutput>
|
|
to 2.0.
|
|
</member>
|
|
</simplelist>
|
|
</para>
|
|
<para>
|
|
Parameters known to ANY envrironment controller are:
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><computeroutput>Tolerance</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>Is the deviation from the preset value which can be
|
|
tolerated before an error is issued. </para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>Access</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>Determines who may change parameters for this
|
|
controller. Possible values are:
|
|
<simplelist type="vert" columns="1">
|
|
<member>0 only internal</member>
|
|
<member>1 only Managers</member>
|
|
<member>2 Managers and Users</member>
|
|
<member>3 Everybody, including Spy</member>
|
|
</simplelist>
|
|
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>LowerLimit</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>The lower limit for the controller.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>UpperLimit</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>The upper limit for the controller.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>Errhandler</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>The error handler to use for this controller.
|
|
Possible values:
|
|
<simplelist type="vert" columns="1">
|
|
<member>0 is Lazy</member>
|
|
<member>1 for Pause</member>
|
|
<member>2 for Interrupt</member>
|
|
<member>3 for Safe</member>
|
|
<member>For an explanantion of these values see the section
|
|
about error handling above.</member>
|
|
</simplelist>
|
|
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>Interrupt</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>The interrupt to issue when an error is
|
|
detected and interrupt error handling is set.
|
|
Valid values are:
|
|
<simplelist type="vert" columns="1">
|
|
<member>0 for continue</member>
|
|
<member>1 for abort operation</member>
|
|
<member>2 for for abort scan</member>
|
|
<member>3 for abort batch processing</member>
|
|
<member>4 halt system</member>
|
|
<member>5 exit server</member>
|
|
<member>For an explanantion of these values see the section
|
|
about error handling above.</member>
|
|
</simplelist>
|
|
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>SafeValue</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>The value to drive the controller to when an error
|
|
has been detected and safe error handling is set.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
<para>
|
|
Additionally the following commands are understood:
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><computeroutput><name> send <par>
|
|
[<par> ...]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>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 calibration tables etc.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><name> list</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>lists all the parameters for this controller.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><name></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>When only the name of the device is typed it
|
|
will return its current value.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><name> <val></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>will drive the device to the new value
|
|
<computeroutput><val></computeroutput>. Please note
|
|
that the same can be achieved by using the drive command.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><name> log on</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>Switches logging on. If logging is on, at each cycle
|
|
in the <computeroutput><emon></computeroutput> 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!
|
|
<computeroutput><name> log clear</computeroutput>
|
|
frees it again and <computeroutput>log frequency</computeroutput>
|
|
(both below) allows to set the logging time intervall.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><name> log of</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para> Switches logging off.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><name> log clear</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>Clears all recorded time stamps and values.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><name> log gettime</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>This command retrieves a list of all recorded time
|
|
stamps.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><name> log getval</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>This command retrieves all recorded values.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><name> log getmean</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>Calculates the mean value and the standard deviation
|
|
for all logged values and prints it.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput><name> log frequency [<val>]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>With a parameter <computeroutput><val></computeroutput> 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 for each
|
|
cycle of the SICServer.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
</section>
|
|
</section>
|
|
|
|
<section id="TCLcommands">
|
|
<title>TCL command language interface</title>
|
|
<para>The macro language implemented in the SICS server is
|
|
<ulink url="http://cseng.awl.com/authordetail.qry?AuthorID=69">
|
|
John Ousterhout's </ulink> <ulink url="http://www.tcltk.com">Tool Command Language (TCL)</ulink>.
|
|
Tcl has control constructs, variables of its own, loop constructs,
|
|
associative arrays and procedures. Tcl is well documented by several
|
|
<ulink url="http://www.cica.indiana.edu/cica/faq/tcl/tcl.html">books</ulink>,
|
|
<ulink url="http://www.scriptics.com/man/tcl8.0/contents.htm">online tutorials and manuals</ulink>.
|
|
For getting further
|
|
informations on Tcl have a look on the
|
|
<ulink url="http://www.sco.com/Technology/tcl/Tcl.html">TCL WWW Info
|
|
</ulink> of
|
|
<ulink url="http://www.tcltk.com">Tcl Web server</ulink>. All SICS commands are
|
|
available in the macro language. Some potentially harmful Tcl commands have been deleted from
|
|
the standard Tcl interpreter. These are: <computeroutput>exec</computeroutput>,
|
|
<computeroutput>source</computeroutput>, <computeroutput>puts</computeroutput>,
|
|
<computeroutput>vwait</computeroutput>, <computeroutput>exit</computeroutput>,
|
|
<computeroutput>gets</computeroutput>
|
|
and <computeroutput>socket</computeroutput>. Below only a small subset of the most important Tcl
|
|
commands like assigning variables, evaluating expressions, control and loop constructs are
|
|
described. For complete description of Tcl command have a look on the
|
|
<ulink url="http://www.scriptics.com/man/tcl8.0/contents.htm">manual pages</ulink> or on one of
|
|
the many books about Tcl/Tk.
|
|
</para>
|
|
<section>
|
|
<title>
|
|
<computeroutput>set</computeroutput> - Read and Write variables</title>
|
|
<formalpara>
|
|
<title>Synopsis</title>
|
|
<para>
|
|
<computeroutput>set varName ?value?</computeroutput>
|
|
</para>
|
|
</formalpara>
|
|
<formalpara>
|
|
<title>Description</title>
|
|
<para>Returns the value of variable <computeroutput>varName</computeroutput>. If
|
|
<computeroutput>value</computeroutput> is specified, then set the value of
|
|
<computeroutput>varName</computeroutput> to <computeroutput>value</computeroutput>,
|
|
creating a new variable if one doesn't already exist, and return its value. If
|
|
<computeroutput>varName</computeroutput> contains an open parenthesis and ends with
|
|
a close parenthesis, then it refers to an array element: the characters before the
|
|
first open parenthesis are the name of the array, and the characters between the
|
|
parentheses are the index within the array. Otherwise
|
|
<computeroutput>varName</computeroutput> refers to a scalar variable.</para>
|
|
</formalpara>
|
|
</section>
|
|
<section>
|
|
<title>
|
|
<computeroutput>expr</computeroutput> - Evaluate an expression</title>
|
|
<formalpara>
|
|
<title>Synopsis</title>
|
|
<para>
|
|
<computeroutput>expr arg ?arg arg ...?</computeroutput>
|
|
</para>
|
|
</formalpara>
|
|
<formalpara>
|
|
<title>Description</title>
|
|
<para>Concatenates <computeroutput>arg</computeroutput>'s (adding separator spaces
|
|
between them), evaluates the result as a Tcl expression, and returns the value. The
|
|
operators permitted in Tcl expressions are a subset of the operators permitted in C
|
|
expressions, and they have the same meaning and precedence as the corresponding C
|
|
operators. Expressions almost always yield numeric results (integer or floating-point
|
|
values). For example, the expression
|
|
</para>
|
|
|
|
</formalpara>
|
|
<para>
|
|
<computeroutput>expr 8.2 + 6</computeroutput>
|
|
</para>
|
|
<para>evaluates to 14.2. Tcl expressions differ from C expressions in the way that
|
|
operands are specified. Also, Tcl expressions support non-numeric operands and string
|
|
comparisons. For some examples of simple expressions, suppose the variable
|
|
<computeroutput>a</computeroutput> has the value 3 and the variable
|
|
<computeroutput>b</computeroutput> has the value 6. Then the command on the left side of each of the
|
|
lines below will produce the value on the right side of the line:
|
|
<informaltable frame="none">
|
|
<tgroup cols="2">
|
|
<tbody>
|
|
<row>
|
|
<entry><computeroutput>expr 3.1 + $a</computeroutput>
|
|
</entry>
|
|
<entry>
|
|
<computeroutput>6.1</computeroutput>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<computeroutput>expr 2 + "$a.$b" </computeroutput>
|
|
</entry>
|
|
<entry>
|
|
<computeroutput>5.6</computeroutput>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<computeroutput>expr 4*[llength "6 2"]</computeroutput>
|
|
</entry>
|
|
<entry>
|
|
<computeroutput>8</computeroutput>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<computeroutput>expr {{word one} < "word $a"}</computeroutput>
|
|
</entry>
|
|
<entry>
|
|
<computeroutput>0</computeroutput>
|
|
</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
</para>
|
|
|
|
<formalpara>
|
|
<title>Math functions</title>
|
|
<para>Tcl supports the following mathematical functions in expressions:</para>
|
|
</formalpara>
|
|
<informaltable frame="none">
|
|
<tgroup cols="4">
|
|
<tbody>
|
|
<row>
|
|
<entry>
|
|
<computeroutput>acos</computeroutput>
|
|
</entry>
|
|
<entry>
|
|
<computeroutput>cos</computeroutput>
|
|
</entry>
|
|
<entry>
|
|
<computeroutput>hypot</computeroutput>
|
|
</entry>
|
|
<entry>
|
|
<computeroutput>sinh</computeroutput>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<computeroutput>asin</computeroutput>
|
|
</entry>
|
|
<entry>
|
|
<computeroutput>cosh</computeroutput>
|
|
</entry>
|
|
<entry>
|
|
<computeroutput>log</computeroutput>
|
|
</entry>
|
|
<entry>
|
|
<computeroutput>sqrt</computeroutput>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<computeroutput>atan</computeroutput>
|
|
</entry>
|
|
<entry>
|
|
<computeroutput>exp</computeroutput>
|
|
</entry>
|
|
<entry>
|
|
<computeroutput>log10</computeroutput>
|
|
</entry>
|
|
<entry>
|
|
<computeroutput>tan</computeroutput>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<computeroutput>atan2</computeroutput>
|
|
</entry>
|
|
<entry>
|
|
<computeroutput>floor</computeroutput>
|
|
</entry>
|
|
<entry>
|
|
<computeroutput>pow</computeroutput>
|
|
</entry>
|
|
<entry>
|
|
<computeroutput>tanh</computeroutput>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<computeroutput>ceil</computeroutput>
|
|
</entry>
|
|
<entry>
|
|
<computeroutput>fmod</computeroutput>
|
|
</entry>
|
|
<entry>
|
|
<computeroutput>sin</computeroutput>
|
|
</entry>
|
|
<entry>
|
|
<computeroutput></computeroutput>
|
|
</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
<para>
|
|
Each of these functions invokes the math library function of the same name; see the
|
|
manual entries for the library functions for details on what they do. Tcl also
|
|
implements the following functions for conversion between integers and floating-point
|
|
numbers and the generation of random numbers:
|
|
</para>
|
|
<para>
|
|
<computeroutput>abs(arg), double(arg), int(arg), rand(), round(arg), srand(arg).
|
|
</computeroutput>
|
|
</para>
|
|
</section>
|
|
<section>
|
|
<title>
|
|
<computeroutput>if</computeroutput> - Execute scripts conditionally</title>
|
|
<formalpara>
|
|
<title>Synopsis</title>
|
|
<para>
|
|
<computeroutput>if expr1 ?then? body1 elseif expr2 ?then? body2 elseif ...
|
|
?else? ?bodyN?</computeroutput>
|
|
</para>
|
|
</formalpara>
|
|
<formalpara>
|
|
<title>Description</title>
|
|
<para>The <computeroutput>if</computeroutput> command evaluates
|
|
<computeroutput>expr1</computeroutput>
|
|
as an expression (in the same way that <computeroutput>expr</computeroutput>
|
|
evaluates its argument). The value of the expression must be a boolean (a numeric value,
|
|
where 0 is false and anything is true, or a string value such as "true" or "yes" for true
|
|
and "false" or "no" for false); if it is true then <computeroutput>body1</computeroutput>
|
|
is executed by passing it to the Tcl interpreter. Otherwise <computeroutput>expr2</computeroutput>
|
|
is evaluated as an expression and if it is true then <computeroutput>body2</computeroutput>
|
|
is executed, and so on. If none of the expressions evaluates to true then
|
|
<computeroutput>bodyN</computeroutput> is executed. The <computeroutput>then</computeroutput>
|
|
and <computeroutput>else</computeroutput> arguments are optional "noise words" to make the
|
|
command easier to read. There may be any number of <computeroutput>elseif</computeroutput>
|
|
clauses, including zero. <computeroutput>BodyN</computeroutput> may also be omitted as long
|
|
as <computeroutput>else</computeroutput> is omitted too. The return value from the command
|
|
is the result of the body script that was executed, or an empty string if none of the
|
|
expressions was non-zero and there was no <computeroutput>bodyN</computeroutput>.
|
|
</para>
|
|
</formalpara>
|
|
</section>
|
|
<section>
|
|
<title>
|
|
<computeroutput>for</computeroutput> - "For" loop</title>
|
|
<formalpara>
|
|
<title>Synopsis</title>
|
|
<para>
|
|
<computeroutput>for start test next body</computeroutput>
|
|
</para>
|
|
</formalpara>
|
|
<formalpara>
|
|
<title>Description</title>
|
|
<para>
|
|
<computeroutput>For</computeroutput> is a looping command, similar in structure to
|
|
the C <computeroutput>for</computeroutput> statement. The <computeroutput>start, next,</computeroutput>
|
|
and <computeroutput>body</computeroutput> arguments must be Tcl command strings, and
|
|
<computeroutput>test</computeroutput> is an expression string. If a
|
|
<computeroutput>continue</computeroutput> command is invoked within
|
|
<computeroutput>body</computeroutput> then any
|
|
remaining commands in the current execution of <computeroutput>body</computeroutput> are
|
|
skipped; processing continues by invoking the Tcl interpreter on <computeroutput>next</computeroutput>,
|
|
then evaluating <computeroutput>test</computeroutput>, and so on. If a
|
|
<computeroutput>break</computeroutput> command is invoked within
|
|
<computeroutput>body</computeroutput> or <computeroutput>next</computeroutput>, then the
|
|
<computeroutput>for</computeroutput> command will return immediately. The operation of
|
|
<computeroutput>break</computeroutput> and <computeroutput>continue</computeroutput> are
|
|
similar to the corresponding statements in C. <computeroutput>For</computeroutput>
|
|
returns an empty string.
|
|
</para>
|
|
</formalpara>
|
|
<para>
|
|
<programlisting>
|
|
<computeroutput>
|
|
for {set x 0} {$x<10} {incr x} {
|
|
puts "x is $x"
|
|
}
|
|
</computeroutput>
|
|
</programlisting>
|
|
</para>
|
|
|
|
</section>
|
|
<section>
|
|
<title>
|
|
<computeroutput>while</computeroutput> - Execute script repeatedly
|
|
as long as a condition is met</title>
|
|
<formalpara>
|
|
<title>Synopsis</title>
|
|
<para>
|
|
<computeroutput>while test body</computeroutput>
|
|
</para>
|
|
</formalpara>
|
|
<formalpara>
|
|
<title>Description</title>
|
|
<para>The <computeroutput>while</computeroutput> command evaluates
|
|
<computeroutput>test</computeroutput> as an expression (in the same way that
|
|
<computeroutput>expr</computeroutput>
|
|
evaluates its argument). The value of the expression must be a proper boolean value; if
|
|
it is a true value then <computeroutput>body</computeroutput> is executed by passing it
|
|
to the Tcl interpreter. Once <computeroutput>body</computeroutput> has been executed then
|
|
<computeroutput>test</computeroutput> is evaluated again, and the process repeats until
|
|
eventually <computeroutput>test</computeroutput> evaluates to a false boolean value.
|
|
<computeroutput>Continue</computeroutput> commands may be executed inside
|
|
<computeroutput>body</computeroutput> to terminate the current iteration of the loop, and
|
|
<computeroutput>break</computeroutput> commands may be executed inside <computeroutput>body</computeroutput>
|
|
to cause immediate termination of the <computeroutput>while</computeroutput> command. The
|
|
<computeroutput>while</computeroutput> command always returns an empty string.
|
|
</para>
|
|
</formalpara>
|
|
<para>
|
|
<programlisting>
|
|
<computeroutput>
|
|
set x 0
|
|
while {$x<10} {
|
|
puts "x is $x"
|
|
incr x
|
|
}
|
|
|
|
</computeroutput>
|
|
</programlisting>
|
|
</para>
|
|
</section>
|
|
</section>
|
|
|
|
<section>
|
|
<title>Instrument settings</title>
|
|
<section>
|
|
<title>Beam shutter</title>
|
|
<para>Every instrument area in the SINQ neutron guide hall is controlled by the Local Beam
|
|
Controlsystem (LBC). It uses fixed installed barriers to prevent entry to the area around
|
|
the active beam during experimental work. If the user carries out his work in accordance
|
|
with the operating instructions, he will be protected from direct beam radiation. A danger
|
|
zone which is subject to the LBC interlocking system has two beam shutters
|
|
<orderedlist>
|
|
<listitem><para>the neutron guide main shutter which only can be opended by the radiation safety
|
|
officer</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>and a secondary shutter to close the beam at the instrument separately from the
|
|
others if more then one instrument is build up at the same neutron guide.</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
The secondary shutter for the instrument is the one the user can handle. Normally the
|
|
secondary shutter can only be operated if the experimental area (yellow fence) of the
|
|
instrument is locked. The shutter can then be opened and closed by a button on the key
|
|
box at the entrance door of the instrument area and also by the SICS command
|
|
<computeroutput>shutter</computeroutput> which has the following syntax:
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><computeroutput>shutter</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para> without parameter yields the actual status of the shutter which can be
|
|
<computeroutput>shutter is open, shutter is closed,</computeroutput> or
|
|
<computeroutput>Enclosure is broken</computeroutput>. The last status message is returned
|
|
if the LBC system wouldn't allow to open the beam. If this message is returned the shutter
|
|
is closed.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>shutter close</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>closes the secondary beam shutter.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>shutter open</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>opens the secondary beam shutter.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
</section>
|
|
<section>
|
|
<title>Neutron velocity selector</title>
|
|
<para>
|
|
The neutron velocity selector is a high-speed rotor. Blades inserted in the rotor
|
|
are only transparent for neutrons which manage pass the rotor in a time intervall
|
|
defined by the rotation speed of the selector. Thus neutrons in a certain speed
|
|
range (wavelength range) are selected. The wavelength distribution of neutrons is
|
|
also dependent of the tilt angle between the rotation axis and the neutron beam.
|
|
Extensive time-of-flight measurements have been done to determine the wavelength
|
|
λ and resolution Δλ/λ as a function of selector speed and
|
|
tilting angle. The dependency of the wavelength λ [nm] on the rotation
|
|
speed ν [RPM] can well be described by
|
|
</para>
|
|
<para>
|
|
λ(ν,ξ)= A(ξ)/ν+B(ξ)
|
|
</para>
|
|
<para>
|
|
where A(ξ) ans B(ξ) are parameters depending on the tilting angle ξ. The
|
|
experimentally determined relationships A(ξ) and B(ξ) are
|
|
</para>
|
|
<para>
|
|
B(ξ)= 0.0122+3.61x10<superscript>-4</superscript>ξ+3.14
|
|
x10<superscript>-4</superscript>ξ<superscript>2</superscript>
|
|
+3.05x10<superscript>-5</superscript>ξ<superscript>3</superscript>
|
|
+9.32x10<superscript>-7</superscript>ξ<superscript>4</superscript>
|
|
</para>
|
|
<para>
|
|
The wavelength resolution Δλ/λ of the selector should be independent
|
|
of the rotation speed and only be dependent of the tilting angle ξ. However, this is
|
|
only true for long collimations. For short collimation lengths a slight dependency of
|
|
the resolution on the rotaion speed could be measured. Also the shape of the resolution
|
|
function is than not necessarily triangular. If the wavelength resolution of the selector
|
|
is not so important for the refinement of your data analysis you can use the values given
|
|
in the following table for the dependency of the wavelength resolution Δλ/
|
|
λ on the tilting angle ξ.
|
|
<informaltable frame="none">
|
|
<tgroup cols="4">
|
|
<thead>
|
|
<row>
|
|
<entry>ξ</entry>
|
|
<entry>Δλ/λ</entry>
|
|
<entry>A(ξ)</entry>
|
|
<entry>B(ξ)</entry>
|
|
</row>
|
|
</thead>
|
|
<tbody>
|
|
<row>
|
|
<entry>-15</entry>
|
|
<entry>0.12</entry>
|
|
<entry>19812</entry>
|
|
<entry>0.0218</entry>
|
|
</row>
|
|
<row>
|
|
<entry>-10</entry>
|
|
<entry>0.115</entry>
|
|
<entry>17774</entry>
|
|
<entry>0.0182</entry>
|
|
</row>
|
|
<row>
|
|
<entry>-5</entry>
|
|
<entry>0.095</entry>
|
|
<entry>15493</entry>
|
|
<entry>0.0163</entry>
|
|
</row>
|
|
<row>
|
|
<entry>0</entry>
|
|
<entry>0.1</entry>
|
|
<entry>12716</entry>
|
|
<entry>0.01097</entry>
|
|
</row>
|
|
<row>
|
|
<entry>5</entry>
|
|
<entry>0.155</entry>
|
|
<entry>9342</entry>
|
|
<entry>0.0269</entry>
|
|
</row>
|
|
<row>
|
|
<entry>10</entry>
|
|
<entry>0.3</entry>
|
|
<entry>5293</entry>
|
|
<entry>0.0869</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
A high speed-device like a velocity selector has to account for gyroscopic forces when
|
|
moving the device. In praxis this means that the selector must be stopped before the tilt
|
|
angle can be changed. Furthermore there are forbidden areas of rotation speeds. In these
|
|
areas the velocity selector is in destructive resonance with itself. For controlling the
|
|
neutron velocity selector three command are available: <computeroutput>nvs</computeroutput>
|
|
, <computeroutput>nvswatch</computeroutput>, and <computeroutput>lambda</computeroutput>
|
|
which are described below.
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><computeroutput>lambda</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>The name of the variable alone prints the current wavelength in nm.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>lambda rot <value></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>calculates the rotation speed for the wavelength given by
|
|
<computeroutput><value></computeroutput>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>lambda wl <value></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>calculates the wavelength for the rotation speed given as parameter
|
|
<computeroutput><value></computeroutput>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>drive lambda <newval>, run lambda <newval></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>The <computeroutput>lambda</computeroutput> variable can be driven
|
|
using the normal <computeroutput>drive</computeroutput> and
|
|
<computeroutput>run</computeroutput> commands.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>nvs status</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>Prints a status summary of the velocity selector.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>nvs list</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>Displays rotation speed and tilt angle of the velocity selctor.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>nvs [rot=<newval>] [tilt=<newval>]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>This command sets a new tilt angle and/or rotation speed for
|
|
the velocity selector. Either one or both of the keywords
|
|
<computeroutput>tilt</computeroutput> or <computeroutput>rot</computeroutput>
|
|
may be given, followed by a number.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>nvs rotinterest</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>Enables printing of status messages about the current state of the
|
|
selector when it is driven.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>nvs loss</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>Starts a loss current measurement on the velocity selector and
|
|
prints the result.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
<para>
|
|
The commands described so far cover the actual handling of the velocity selector. During a
|
|
measurement users might want to use further functions such as:
|
|
<itemizedlist>
|
|
<listitem><para>Monitor the rotation speed of the velocity selector.
|
|
</para></listitem>
|
|
<listitem><para>Log the rotation speeds of the velocity selector.
|
|
</para></listitem>
|
|
<listitem><para>Initiate error handling when the velocity selector
|
|
fails to stay within a predefined tolerance of rotation speeds.
|
|
</para></listitem>
|
|
</itemizedlist>
|
|
Now, these are tasks usually connected with sample environment devices. Now, the
|
|
SICS programmers have been lazy. Moreover they wanted to avoid duplicating code
|
|
(and bugs). Consequently, they tricked the velocity selector to be a sample
|
|
environment device as well.
|
|
</para>
|
|
<para>This means besides the actual velocity selector object (in this case
|
|
called <computeroutput>nvs</computeroutput>) there exists another object for
|
|
monitoring the velocity selector. The name of this device is the name of the
|
|
velocity selector object with the string watch appended. For example if the
|
|
velocity selector has the SICS name <computeroutput>nvs</computeroutput>, the
|
|
monitor object will be <computeroutput>nvswatch</computeroutput>. The commands
|
|
understood by the watch object are fully decribed in the section about sample
|
|
environment devices. Please note, that all driving commands for the
|
|
<computeroutput>watch</computeroutput> object have been disabled. Driving
|
|
can only be achieved through the velocity selector object or the
|
|
<computeroutput>lambda</computeroutput> command.
|
|
</para>
|
|
</section>
|
|
<section>
|
|
<title>Positioning an attenuator</title>
|
|
<para>
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><computeroutput>att</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>prints the current positioned attenuator.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>att <val></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>positions attenuator <computeroutput><val></computeroutput>.
|
|
Allowed attenuator numbers are 0, 1, 2, 3, 4 and 5.
|
|
<simplelist>
|
|
<member>0 : square 50 mm x 50 mm slit, attenuation = 1
|
|
</member>
|
|
<member>1 : circular 41 x diameter 0.4 mm slit, attenuation = 1/485
|
|
</member>
|
|
<member>2 : circular 9 x diameter 2 mm slit, attenuation = 1/88
|
|
</member>
|
|
<member>3 : circular 20 mm diameter slit, attenuation = 1/8
|
|
</member>
|
|
<member>4 : circular 30 mm diameter slit, attenuation = 1/3.5
|
|
</member>
|
|
<member>5 : circular 15 mm diameter slit, attenuation = 1/??
|
|
</member>
|
|
</simplelist>
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
</section>
|
|
<section>
|
|
<title>Changing the collimation</title>
|
|
<para>
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><computeroutput>coll</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>prints the current collimation length.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>coll <val></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>sets the collimation <computeroutput><val></computeroutput>.
|
|
Allowed collimation lengths are 1, 1.4, 2, 3, 4.5, 6, 8,
|
|
11, 15 and 18.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
</section>
|
|
<section>
|
|
<title>Positioning the detector</title>
|
|
<para>
|
|
The detector can be moved via three motors named <computeroutput>detectorx</computeroutput>
|
|
, <computeroutput>detectory</computeroutput>, and <computeroutput>detectorrotation</computeroutput>.
|
|
These motors can be driven by the <computeroutput>run</computeroutput> or
|
|
<computeroutput>drive</computeroutput> commands described in <xref linkend="drivecommands"/>.
|
|
The commands how to change motor parameters like <computeroutput>Precision</computeroutput>,
|
|
<computeroutput>SoftZero</computeroutput> etc. are described in <xref linkend="motorhandling"/>.
|
|
The axes of the detector motors are defined as:
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><computeroutput>detectorx</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>An increasing value moves the detector away and a decreasing
|
|
value towards the sample position.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>detectory</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>moves the detector laterally by a maximum of 480 mm in order to increase
|
|
the accessible q-range at any detector position.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>detectorrotation</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>rotates the detector around its vertical axis to reduce
|
|
parallaxes effects.</para>
|
|
<warning><title>Warning</title><para>The BerSANS software package for the primary data
|
|
reduction does not handle the detector rotation.</para></warning>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
Instead of driving the motors individually one can refer to all motors as a whole by the
|
|
<computeroutput>dt</computeroutput> command. The command <computeroutput>dt</computeroutput>
|
|
without other parameters will yield a listing of the current position of the detector:
|
|
<programlisting>
|
|
<computeroutput>
|
|
dt
|
|
Status listing for dt
|
|
dt.x = 18800.048828
|
|
dt.y = 0.004000
|
|
dt.phi = 0.414000
|
|
</computeroutput>
|
|
</programlisting>
|
|
To move the detector you can call <computeroutput>dt</computeroutput> with parameters
|
|
defining the new position of the motors, e.g.
|
|
<programlisting>
|
|
<computeroutput>
|
|
dt x = 800 y = ++100 phi 0
|
|
</computeroutput>
|
|
</programlisting>
|
|
The <computeroutput>=</computeroutput> sign is not mandatory and can be left out. The
|
|
command above drives the motor <computeroutput>detectorx</computeroutput> to the
|
|
position <computeroutput>800</computeroutput>, the motor
|
|
<computeroutput>detectory</computeroutput> to a position 100 mm further into
|
|
<computeroutput>y</computeroutput>-direction, the motor
|
|
<computeroutput>detectorrotation</computeroutput> to position
|
|
<computeroutput>0</computeroutput>. All the three movements are done parallel.
|
|
Relative movements can be performed by preceding an
|
|
<computeroutput>--</computeroutput> or <computeroutput>++</computeroutput> to the
|
|
motor position. The whole set of parameters valid for the
|
|
<computeroutput>dt</computeroutput> command is described in the
|
|
<xref linkend="specialsanscommands"/> about special SANS commands.
|
|
</para>
|
|
</section>
|
|
<section>
|
|
<title>Positioning the beam stop</title>
|
|
<para>The beam stop can be adjusted by two motors named
|
|
<computeroutput>beamstopx</computeroutput> and <computeroutput>beamstopy</computeroutput>.
|
|
They can be driven by the <computeroutput>run</computeroutput> or
|
|
<computeroutput>drive</computeroutput> commands which are described in
|
|
<xref linkend="drivecommands"/>. The commands how to change motor parameters
|
|
like <computeroutput>Precision</computeroutput>, <computeroutput>SoftZero</computeroutput>
|
|
etc. are described in <xref linkend="motorhandling"/>. The axes of the beam stop
|
|
motors are defined as:
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><computeroutput>beamstopx</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>moves the beam stop horizontally.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>beamstopy</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>moves the beam stop vertically.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
Instead of driving the motors individually one can refer to both motors as a
|
|
whole by the <computeroutput>bs</computeroutput> command. The command
|
|
<computeroutput>bs</computeroutput> without other parameters will yield a
|
|
listing of the current position of the beam stop:
|
|
<programlisting>
|
|
<computeroutput>
|
|
bs
|
|
Status listing for bs
|
|
bs.x = 0.300000
|
|
bs.y = 2.500000
|
|
</computeroutput>
|
|
</programlisting>
|
|
To move the beam stop you can call <computeroutput>bs</computeroutput> with
|
|
parameters defining the new position of the motors, e.g.
|
|
<programlisting>
|
|
<computeroutput>
|
|
bs x = 2 y ++10
|
|
</computeroutput>
|
|
</programlisting>
|
|
The <computeroutput>=</computeroutput> sign is not mandatory and can be left
|
|
out. The command above drives the motor <computeroutput>beamstopx</computeroutput>
|
|
to the position <computeroutput>2</computeroutput> and the motor
|
|
<computeroutput>beamstopy</computeroutput> to a position 10 mm further into
|
|
y-direction. Both movements are done parallely. Relative movements can be
|
|
performed by preceding an <computeroutput>--</computeroutput> or
|
|
<computeroutput>++</computeroutput> to the motor position. The whole
|
|
set of parameters valid for the <computeroutput>bs</computeroutput> command
|
|
is described in the <xref linkend="specialsanscommands"/> about special
|
|
SANS commands.
|
|
</para>
|
|
<para>
|
|
Additionally to the commands for the movement of the two beam stop axes a few
|
|
other commands have been established:
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><computeroutput>bsout</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>moves the beam stop out of the detection area, so that
|
|
there is nowhere a shadow of the beam stop on the detector. This
|
|
position is outside the software limits of the motors in the area
|
|
of the beam stop magazines. In this area an uncontrolled movement
|
|
could lead to a collisioni with the magazines. Therefore one can
|
|
not move the beam stop anymore with the
|
|
<computeroutput>bs</computeroutput> command after calling
|
|
<computeroutput>bsout</computeroutput>, because the motors are
|
|
fixed automatically.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>bsin</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>releases the beam stop motors and moves them back to the
|
|
previous position. After calling
|
|
<computeroutput>bsout</computeroutput> you have to call first
|
|
<computeroutput>bsin</computeroutput> to continue with the
|
|
movement of the beam stop with the
|
|
<computeroutput>bs</computeroutput> command.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>bscfree</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>is a manager command, which releases the beam stop motors,
|
|
if they are still in the
|
|
<computeroutput>bsout</computeroutput>-position. This command should
|
|
only be used when something went wrong with the SICS server during
|
|
the time the beam stop was in
|
|
<computeroutput>bsout</computeroutput>-position.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>bschange [<val>]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>allows the user to change the size of the beam stop. Four
|
|
different sizes are available and can be selected by the parameter
|
|
<computeroutput><val></computeroutput>. Valid values for
|
|
<computeroutput><val></computeroutput> are:
|
|
<simplelist>
|
|
<member>1 for beam stop size of 40 mm x 40 mm
|
|
</member>
|
|
<member>2 for beam stop size of 70 mm x 70 mm
|
|
</member>
|
|
<member>3 for beam stop size of 85 mm x 85 mm
|
|
</member>
|
|
<member>4 for beam stop size of 100 mm x 100 mm
|
|
</member>
|
|
</simplelist>
|
|
</para>
|
|
<para>
|
|
The <computeroutput>bschange</computeroutput> command automatically recognizes the
|
|
actually used beam stop size, puts it into the empty magazine and picks up the new beam
|
|
stop. <computeroutput>bschange</computeroutput> automatically closes the instrument
|
|
beam shutter, if it was open, but it doesn't reopen it again afterwards. Calling
|
|
<computeroutput>bschange</computeroutput> without a parameter returns the number
|
|
of the actually used beam stop size.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
</section>
|
|
|
|
<section>
|
|
<title>Calculating the q range</title>
|
|
<para>The q range of the current setting can comfortably be calculated with the following command:
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>qrange [x <detdist>] [wl <lambda>]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
calculates the q range of the current setting. The detector distance x (in mm) and the wavelength wl
|
|
(in nm) can be varied with the optional parameters. Examples: <computeroutput>qrange</computeroutput> prints the q range of the current
|
|
setting, <computeroutput>qrange x 6000 wl 0.8</computeroutput> prints the q range of the current
|
|
setting with forced values for the detector distance (6000mm) and the wavelength (0.8nm).
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
</section>
|
|
|
|
<section>
|
|
<title>Estimating the measurement time</title>
|
|
<para>The measurement time of a sample depends on many factors and needs to be estimated for each
|
|
sample individually. This procedure is simplified with the command GuessCount.
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>gc <measMonis> <totalCounts></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
GuessCount: executes a measurement of <measMonis> Monis and extrapolates the measurement time and Monis
|
|
for a final value of <totalCounts> counts. Example:
|
|
<computeroutput>gc 5 1E7</computeroutput> forces the instrument to measures for 5 Monis and estimates the measurement
|
|
time and Monis for 10'000'000 counts.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
</section>
|
|
|
|
</section>
|
|
|
|
<section>
|
|
<title>Sample environments</title>
|
|
<section>
|
|
<title>Sample table</title>
|
|
<para>
|
|
One standard sample set-up is the sample table with a vertical translator, a xy-table and a
|
|
rotation table. Optionally, another linear translator stage or a double goniometer can be
|
|
mounted on the rotation table. The available motor axes for the sample table are defined
|
|
as follows:
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><computeroutput>saz</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>vertical translation of the sample table
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>say</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>horizontal translation parallel to the neutron beam direction
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>sax</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>horizontal translation perpendicular to the neutron beam
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>som</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>rotation around the vertical axis ω
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>gphi</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>rotation around the horizontal axis Φ
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>gtheta</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>rotation around the horizontal axis Θ,
|
|
Θ ⊥ Φ ⊥ ω
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>sposi</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>horizontal translation. Linear translation stage can be
|
|
mounted on the rotation table and is used for the movement of
|
|
the temperature controlled (Haake temperature controler,
|
|
<xref linkend="haaketemperaturecontroller"/>)
|
|
sample holder.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
The motors can be driven by the <computeroutput>drive</computeroutput> or
|
|
<computeroutput>run</computeroutput> commands described in
|
|
<xref linkend="motorhandling"/>. Instead of driving the motors individually
|
|
one can refer to all motors as a whole by the
|
|
<computeroutput>st</computeroutput> command. The command
|
|
<computeroutput>st</computeroutput> without parameters will yield a listing
|
|
of the current positions of the sample table motors:
|
|
<programlisting>
|
|
<computeroutput>
|
|
st
|
|
Status listing for st
|
|
st.omega = 0.504000
|
|
st.x = 12.965000
|
|
st.y = -18.992001
|
|
st.z = 106.121002
|
|
st.posi = 173.875000
|
|
</computeroutput>
|
|
</programlisting>
|
|
The axes are named <computeroutput>x</computeroutput>,
|
|
<computeroutput>y</computeroutput>, <computeroutput>z</computeroutput>,
|
|
<computeroutput>posi</computeroutput>, <computeroutput>omega</computeroutput>,
|
|
<computeroutput>phi</computeroutput> and <computeroutput>theta</computeroutput>
|
|
which move the motors <computeroutput>sax</computeroutput>,
|
|
<computeroutput>say</computeroutput>, <computeroutput>saz</computeroutput>,
|
|
<computeroutput>spos</computeroutput>, <computeroutput>som</computeroutput>,
|
|
<computeroutput>gphi</computeroutput> and <computeroutput>gtheta</computeroutput>,
|
|
respectively. In the above example the optional linear translator stage was mounted
|
|
on the rotation table so that the position of the motor
|
|
<computeroutput>spos</computeroutput> is listed but not those of the motors
|
|
<computeroutput>gphi</computeroutput> and <computeroutput>gtheta</computeroutput>.
|
|
The whole set of parameters valid for the <computeroutput>st</computeroutput>
|
|
command are described in <xref linkend="specialsanscommands"/> about special SANS
|
|
commands. A frequently used parameter for <computeroutput>st</computeroutput> is
|
|
the <computeroutput>pos</computeroutput> parameter. The command
|
|
<programlisting>
|
|
<computeroutput>
|
|
st pos P1
|
|
</computeroutput>
|
|
</programlisting>
|
|
reads out the actual positions of all the motors of the sample table and defines
|
|
for it the name <computeroutput>P1</computeroutput>. Afterwards this position can
|
|
be reached by typing simply <computeroutput>st P1</computeroutput>. Instead of
|
|
remembering the positions of all the motors one only has to remember the name
|
|
<computeroutput>P1</computeroutput> to bring the sample in position.
|
|
</para>
|
|
</section>
|
|
<section>
|
|
<title>Bruker electromagnet</title>
|
|
<para>
|
|
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 field mode the current for the magnet is controlled via an external hall sensor
|
|
at the magnet. In current mode, the output current of the device is controlled.
|
|
This magnet can be configured into SICS with a command syntax like this:
|
|
<programlisting>
|
|
<computeroutput>
|
|
evfactory new <name> bruker <Mac-PC> <Mac-port> <Mac-channel>
|
|
</computeroutput>
|
|
</programlisting>
|
|
<computeroutput><name></computeroutput> 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 <computeroutput>magnet</computeroutput>. <computeroutput>bruker</computeroutput>
|
|
is the keyword for selecting the bruker driver. <computeroutput><Mac-PC></computeroutput>
|
|
is the name of the Macintosh PC to which the controller has been connected,
|
|
<computeroutput><Mac-Port></computeroutput> is the port number at which the
|
|
Macintosh-PC's serial port server listens. <computeroutput><Mac-channel></computeroutput>
|
|
is the RS-232 channel to which the controller has been connected. For example (at SANS):
|
|
<programlisting>
|
|
<computeroutput>
|
|
evfactory new magnet bruker lnsa10.psi.ch 4000 9
|
|
</computeroutput>
|
|
</programlisting>
|
|
creates a new command magnet for a Bruker magnet Controller connected to serial port
|
|
9 at lnsa10.
|
|
</para>
|
|
<para>
|
|
In addition to the standard environment controller commands this magnet controller
|
|
understands the following special commands:
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><computeroutput>magnet polarity</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>Prints the current polarity setting of the controller. Possible answers
|
|
are <computeroutput>plus</computeroutput>, <computeroutput>minus</computeroutput>
|
|
and <computeroutput>busy</computeroutput>. The latter indicates that the controller
|
|
is in the process of switching polarity after a command had been given to switch it.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>magnet polarity <val></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>sets a new polarity for the controller. Possible values for
|
|
<computeroutput><val></computeroutput> are
|
|
<computeroutput>minus</computeroutput> or <computeroutput>plus</computeroutput>.
|
|
The meaning is self explaining.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>magnet mode</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>Prints the current control mode of the controller. Possible answers are
|
|
<computeroutput>field</computeroutput> for control via hall sensor or
|
|
<computeroutput>current</computeroutput> for current control.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist><variablelist>
|
|
<varlistentry>
|
|
<term><computeroutput>magnet mode <val></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>sets a new control mode for the controller. Possible values for
|
|
<computeroutput><val></computeroutput> are
|
|
<computeroutput>field</computeroutput> or
|
|
<computeroutput>current</computeroutput>. The meaning is explained above.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>magnet field</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
reads the magnets hall sensor independent of the control mode.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>magnet current</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>reads the magnets output current independent of the control mode.</para>
|
|
<warning><title>Warning</title>
|
|
<para>There is a gotcha with this. If you type only
|
|
<computeroutput>magnet</computeroutput> a value will be returned. The meaning of
|
|
this value is dependent on the selected control mode. In
|
|
<computeroutput>current</computeroutput> mode it is a current, in
|
|
<computeroutput>field</computeroutput> 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 <computeroutput>magnet current</computeroutput> or
|
|
<computeroutput>magnet field</computeroutput>.</para></warning>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
</section>
|
|
<section>
|
|
<title>Sample holder for electro magnet</title>
|
|
<para>
|
|
Another standard sample seup is a vacuum chamber, which is directly connected to the
|
|
collimator and detector tubes, so that the SANS can be operated at about
|
|
10<superscript>-2</superscript> mbar in a single vacuum without windows or with thin
|
|
aluminium or sapphire windows to work at ambient pressure or at vacuum conditions
|
|
down to 10<superscript>-6</superscript> mbar. The chamber is large enough to carry
|
|
an electromagnet. For this setup a sample changer with an optional heated sample
|
|
position is available. This sample changer can be moved vertically by 245 mm and can
|
|
also be rotated by ±10 degree. The two available motors are defined as follows:
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><computeroutput>mz</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>moves the electromagnet sample holder in vertical direction.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>mom</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para> rotates the sample around the vertical axis
|
|
ω by ±10 degree.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
The motors can be driven by the <computeroutput>run</computeroutput> or
|
|
<computeroutput>drive</computeroutput> command described in
|
|
<xref linkend="motorhandling"/>. Instead of driving the motors individually one can refer
|
|
to both motors as a whole by the <computeroutput>msh</computeroutput> command. The
|
|
command <computeroutput>msh</computeroutput> without parameters will yield a listing of
|
|
the current position of the electromagnet sample holder:
|
|
<programlisting>
|
|
<computeroutput>
|
|
msh
|
|
Status listing for msh
|
|
msh.z = 0.000000
|
|
msh.omega = 0.000000
|
|
</computeroutput>
|
|
</programlisting>
|
|
The axes of the sample holder <computeroutput>mz</computeroutput> and
|
|
<computeroutput>mom</computeroutput> are named in the
|
|
<computeroutput>msh</computeroutput> command
|
|
<computeroutput>z</computeroutput> and <computeroutput>omega</computeroutput>.
|
|
The whole set of parameters valid for the
|
|
<computeroutput>msh</computeroutput> command are described in
|
|
<xref linkend="specialsanscommands"/> about special SANS commands.
|
|
</para>
|
|
</section>
|
|
<section id="haaketemperaturecontroller">
|
|
<title>Haake C25P temperature controller</title>
|
|
<para>
|
|
This is sort of a bucket full of water equipped with a temperature control system.
|
|
It is connected with a blue ethernet cable to the port nr. 8 of the SANS terminal. The
|
|
SEA software written by Markus Zolliker is the best way to control and monitor the
|
|
thermostat manually; it is started from a terminal window with <computeroutput>sea</computeroutput>.
|
|
Please refer to the
|
|
<ulink url="http://lns00.psi.ch/sinqwiki/Wiki.jsp?page=Sea">
|
|
SEA Wiki page</ulink> for more information.
|
|
</para>
|
|
<para>
|
|
To add an external Pt100 sensor, plug in the sensor and restart the thermostat and the sea client (choose
|
|
'Haake' as device and check the box 'has sample sensor'). If the external sensor should be used as
|
|
reference to control the thermostat, check the box 'control on sample'.
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>start_sea
|
|
</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
starts the sea server from SICS.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>temperature</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
reads out the current temperature.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<computeroutput>drive temperature <val></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
changes the set temperature of the thermostat to the value <computeroutput><val></computeroutput>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
in a terminal window: <computeroutput>sea
|
|
</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
starts the sea server client from a terminal. Choose Haake as device.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
</para>
|
|
</section>
|
|
<section>
|
|
<title>Eurotherm temperature controller</title>
|
|
<para>
|
|
At SANS there is a Eurotherm temperature controller for the sample heater available.
|
|
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.
|
|
<programlisting>
|
|
<computeroutput>
|
|
EVFactory new <name> euro <computer> <port> <channel>
|
|
</computeroutput>
|
|
</programlisting>
|
|
<computeroutput><name></computeroutput> is a placeholder for the name of the
|
|
device within SICS. A good suggestion is temperature.
|
|
<computeroutput>euro</computeroutput> is the keyword for selecting the Eurotherm driver.
|
|
<computeroutput>computer</computeroutput> is the name of the Macintosh PC to which
|
|
the controller has been connected, <computeroutput><port></computeroutput> is the
|
|
port number at which the Macintosh-PC's serial port server listens.
|
|
<computeroutput><channel></computeroutput> is the RS-232 channel to which the
|
|
controller has been connected.
|
|
<warning><title>Warning</title><para>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:
|
|
<programlisting>
|
|
<computeroutput>
|
|
EVFactory new temperature euro lnsa10.psi.ch 4000 13
|
|
</computeroutput>
|
|
</programlisting>
|
|
</para></warning>
|
|
There are two further gotchas with this thing:
|
|
<itemizedlist>
|
|
<listitem><para>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 controller.
|
|
</para></listitem>
|
|
<listitem><para>The weird protocol spoken by the Eurotherm requires very special control
|
|
characters. Therefore the send functionality usually supported by a SICS environment
|
|
controller could not be implemented.
|
|
</para></listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
</section>
|
|
</section>
|
|
|
|
<section>
|
|
<title>Data handling and acquisition</title>
|
|
<section>
|
|
<title>File naming conventions and storing data</title>
|
|
<para>
|
|
Data files are stored by the SICS server on the <emphasis>lnsa10.psi.ch</emphasis>
|
|
workstation in the directory defined by the SICS variable
|
|
<computeroutput>SICSDataPath</computeroutput>. By default this directory is
|
|
<computeroutput>/home/SANS/data/</computeroutput>. The file name of a data file is
|
|
composed of four parts:
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>
|
|
the prefix stored in the variable <computeroutput>SICSDataPrefix</computeroutput>,
|
|
by default <computeroutput>sans</computeroutput>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
the run number stored in the variable <computeroutput>SICSDataNumber</computeroutput>,
|
|
which is incremented before each storing process and has 5 digits (leading 0)
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
the actual year (4 digits)
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
and the post-fix stored in the variable <computeroutput>SICSDataPostfix</computeroutput>,
|
|
by default <computeroutput>.hdf</computeroutput>
|
|
</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
A typical data file name would be
|
|
<computeroutput>/home/SANS/data/sans123452006.hdf</computeroutput>.
|
|
All data files are written in NeXus format.
|
|
</para>
|
|
</section>
|
|
<section>
|
|
<title>Data acquisition</title>
|
|
<formalpara>
|
|
<title>SICS counter handling</title>
|
|
<para>
|
|
The SICS counter concept may include several monitors per counter. At the SANS
|
|
instrument two monitors are installed: one between beam shutter and neutron
|
|
velocity selector, which is used for normalizing the SANS measurement on the
|
|
incident neutron flux, and a second one after the selector just in front of the
|
|
attenuator. For the SANS instrument only one counter is handled which is named
|
|
<computeroutput>counter</computeroutput>. A few words have to be lost about the
|
|
SICS handling of preset values for counters. Two modes of operation have to be
|
|
distinguished: counting until a timer has passed, for example counting for 20
|
|
seconds. This mode is called <computeroutput>Timer</computeroutput> mode. In
|
|
the other mode, counting is continued until a control monitor has reached a
|
|
certain preset value. This mode is called <computeroutput>Monitor</computeroutput>
|
|
mode. At the SANS instrument the first monitor between beam shutter and neutron
|
|
selector is used in this mode. The preset values in
|
|
<computeroutput>Monitor</computeroutput> mode are usually very large. Therefore
|
|
the counter has an exponent data variable. Values given as preset are
|
|
effectively 10 to the power of this exponent. For instance if the preset is 25
|
|
and the exponent is 6, then counting will be continued until the monitor has
|
|
reached 25 million. Note, that this scheme with the exponent is only in operation
|
|
in <computeroutput>Monitor</computeroutput> mode. The commands understood are:
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><computeroutput>counter SetPreset <val></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>sets the counting preset to <computeroutput><val></computeroutput>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>counter GetPreset</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>prints the current preset value.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>counter SetExponent <val></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>sets the exponent for the counting preset in monitor mode to
|
|
<computeroutput><val></computeroutput>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>counter GetExponent</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>prints the current exponent used in monitor mode.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>counter SetMode <val></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>sets the counting mode to <computeroutput><val></computeroutput>.
|
|
Possible values are <computeroutput>Timer</computeroutput> for timer mode
|
|
operation and <computeroutput>Monitor</computeroutput> for waiting for a
|
|
monitor to reach a certain value.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>counter GetMode</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>prints the current mode.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>counter GetCounts</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>prints the counts gathered in the last run.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>counter GetMonitor <n></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>prints the counts gathered in the monitor number
|
|
<computeroutput><n></computeroutput> in the last run.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>counter Count <preset></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>starts counting in the current mode and the preset
|
|
<computeroutput><preset></computeroutput>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>counter status</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>prints a message containing the preset and the current monitor
|
|
or time value. Can be used to monitor the progress of the counting
|
|
operation..
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>counter GetTime</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>retrieves the actual time the counter counted for. This
|
|
excludes time where there was no beam or counting was paused.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
</formalpara>
|
|
<formalpara>
|
|
<title>Histogram memory</title>
|
|
<para>
|
|
The histogram memory is used in order to control the large area sensitive detector. It
|
|
takes care of putting counts detected in the detector into the proper bin in memory.
|
|
Next to a conventional mode of a SANS measurement where all detected neutrons are
|
|
accumulated for a given time or monitor count, also a time of flight mode and a
|
|
stroboscopic mode are available, where there is for each detector pixel a row of
|
|
memory locations mapping the time bins. As usual in SICS the syntax is the name of the
|
|
histogram memory followed by qualifiers and parameters. For the SANS the name of
|
|
the histogram memory is <computeroutput>banana</computeroutput>.
|
|
</para>
|
|
</formalpara>
|
|
<para>
|
|
The histogram memory has a plethora of configuration options coming with it which
|
|
define memory layout, modes of operation, handling of bin overflow and the like.
|
|
Additionally there are histogram memory model specific parameters which are needed
|
|
internally in order to communicate with the histogram memory. In most cases the
|
|
histogram memory will already have been configured at SICS server startup time.
|
|
However, there are occasion where these configuration options need to be enquired
|
|
or modified at run time. The command to enquire the current value of a configuration
|
|
option is: <computeroutput>banana configure <option></computeroutput>, the
|
|
command to set it is:
|
|
<computeroutput>banana configure <option> <newvalue></computeroutput>.
|
|
A list of common configuration options and their meaning is given below:
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><computeroutput>HistMode</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>describes the modes of operation of the histogram memory.
|
|
Possible values are:
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><computeroutput>Transparent</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>counter data will be written as is to memory. For
|
|
debugging purposes only.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>Normal</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>neutrons detected at a given detector will be added
|
|
to the apropriate memory bin.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>TOF</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>time of flight mode, neutrons found in a given detector
|
|
will be put added to a memory location determined by the detector
|
|
and the time stamp.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>Stroboscopic</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>This mode serves to analyse changes in a sample due to an
|
|
varying external force, such as a magnetic field, mechanical stress
|
|
or the like. Neutrons will be stored in memory according to detector
|
|
position and phase of the external force.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>OverFlowMode</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>This parameter determines how bin overflow is handled. This happens when
|
|
more neutrons get detected for a particular memory location then are allowed
|
|
for the number type of the histogram memory bin. Possible values are:
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><computeroutput>Ignore</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>overflow will be ignored, the memory location will wrap
|
|
around and start at 0 again.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>Ceil</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>the memory location will be kept at the highest posssible
|
|
value for its number type.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>Count</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>as <computeroutput>Ceil</computeroutput>, but a list of
|
|
overflowed bins will be maintained.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>Rank</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>defines the number of histograms in memory.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>Length</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>gives the length of an individual histogram.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>BinWidth</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>determines the size of a single bin in histogram memory in bytes.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
<para>
|
|
For time of flight mode the time binnings can be retrieved and modified with the following
|
|
commands. Note that these commands do not follow the configure syntax given above. Please
|
|
note, that the usage of the commands for modifying time bins is restricted to instrument
|
|
managers.
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><computeroutput>banana timebin</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>prints the currently active time binning array.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>banana genbin <start> <step> <n></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>generates a new equally spaced time binning array.
|
|
Number <computeroutput><n></computeroutput> time bins will be generated
|
|
starting from <computeroutput><start></computeroutput> with a stepwidth of
|
|
<computeroutput><step></computeroutput>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>banana setbin <inum> <value></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>Sometimes unequally spaced time binnings are needed. These can be configured
|
|
with this command. The time bin <computeroutput><iNum></computeroutput> is
|
|
set to the value <computeroutput><value></computeroutput>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>banana clearbin</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para> Deletes the currently active time binning information.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>banana preset [<val>]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para> with a new value <computeroutput><val></computeroutput> sets the preset
|
|
time or monitor for counting. Without <computeroutput><val></computeroutput>
|
|
prints the current value.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>banana exponent [<val>]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para> with a new value <computeroutput><val></computeroutput> sets the exponent
|
|
to use for the preset time in Monitor mode. Without <computeroutput><val></computeroutput>
|
|
prints the current value.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>banana CountMode [<mode>]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>with a new value <computeroutput><mode></computeroutput> sets the
|
|
count mode. Possible values are <computeroutput>Timer</computeroutput> for a fixed
|
|
counting time and <computeroutput>Monitor</computeroutput> for a fixed monitor count
|
|
which has to be reached before counting finishes. Without a value for
|
|
<computeroutput><mode></computeroutput> the command prints the currently
|
|
active value.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>banana init</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>after giving the configuration commands this needs to be called in order to
|
|
transfer the configuration from the host computer to the actual histogram memory.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>banana count</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>starts counting using the currently active values for
|
|
<computeroutput>CountMode</computeroutput> and <computeroutput>preset</computeroutput>.
|
|
This command does not block, i.e. in order to inhibit further commands from the console,
|
|
you have to give <computeroutput>Success</computeroutput> afterwards.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>banana Initval <val></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>initialises the whole histogram memory to the value
|
|
<computeroutput><val></computeroutput>. Usually 0 in order to clear the histogram
|
|
memory.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>banana get <i> <iStart> <iEnd></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>retrieves the histogram number
|
|
<computeroutput><i></computeroutput>. A value of -1 for
|
|
<computeroutput><i></computeroutput> denotes retrieval of the whole histogram memory.
|
|
<computeroutput><iStart></computeroutput> and <computeroutput><iEnd></computeroutput>
|
|
are optional and allow to retrieve a subset of a histogram between
|
|
<computeroutput><iStart></computeroutput> and <computeroutput><iEnd></computeroutput>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>banana sum <d0min> <d0max> <d1min> <d1max> ...<dnmin> <dnmax></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>calculates the sum of an area on the detector. For each dimension a minimum and
|
|
maximum boundary for summing must be given.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
<formalpara>
|
|
<title>Storing Data and starting a SANS measurement</title>
|
|
<para>
|
|
Instead of initializing and starting a measurement by the <computeroutput>banana</computeroutput>
|
|
command a few other commands have been introduced to take care for those things:
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><computeroutput>StoreData</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>This command does what it says. It writes the current state of the instrument
|
|
including counts to a NeXus data file.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>count [<mode> <preset>]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>starts a count operation in mode <computeroutput><mode></computeroutput>
|
|
with a preset <computeroutput><preset></computeroutput>.
|
|
<computeroutput><mode></computeroutput> can have the values
|
|
<computeroutput>Timer</computeroutput> or <computeroutput>Monitor</computeroutput>.
|
|
The parameters are optional. If they are not given, the count operation will be started
|
|
with the current setting in the histogram memory object
|
|
<computeroutput>banana</computeroutput>. Before the count operation is started, the
|
|
<computeroutput>count</computeroutput> command waits until all other commands executed
|
|
earlier are finished. During the count operation no other commands can be executed.
|
|
After the count, <computeroutput>StoreData</computeroutput> will be automatically called.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput>repeat <num> [<mode> <preset>]</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>calls <computeroutput>num</computeroutput> times <computeroutput>count</computeroutput>.
|
|
<computeroutput>num</computeroutput> is a required parameter. The other two are optional and
|
|
are handled as described above for <computeroutput>count</computeroutput>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
</formalpara>
|
|
</section>
|
|
<section id="xytablecommand">
|
|
<title>XY table</title>
|
|
<para>XYTable is a class which maintains a list of X-Y values. These can be plotted in the
|
|
VarWatch SICS client by configuring it with a special command. Before you may use an XYTable
|
|
object it had to be installed into the system by the SICS administrator. This can be done by
|
|
the command <computeroutput>MakeXYTable <xydata></computeroutput> in the SANS initialization
|
|
file. For this documentation it is assumed that this has happened already and a XYTable object is
|
|
available in the system under the name <computeroutput><xydata></computeroutput>.
|
|
</para>
|
|
<para>
|
|
Interaction with the XYTable object happens through the following commands:
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><computeroutput><xydata> clear</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>clears all entries in the x-y table.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput><xydata> list</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>lists the entries in the x-y table on the screen.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput><xydata> write <filename></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>writes the x-y list to the disk file filename. This file resides on
|
|
the machine running the SICS server.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput><xydata> uuget</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>sends the x-y list in an uuencoded format. This is the command to
|
|
give to the VarWatch SICS client in order to make it display the x-y list.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><computeroutput><xydata> add <xval> <yval></computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>creates a new x-y list entry with the values
|
|
<computeroutput><xval></computeroutput> and
|
|
<computeroutput><yval></computeroutput>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
</section>
|
|
<section>
|
|
<title>Status of the actual acquisition process</title>
|
|
<para>A
|
|
<ulink url="http://lns00.psi.ch/sicszone/sansstatus?instrument=sans">webpage</ulink>
|
|
with the actual instrument status is available (only inside the PSI network).
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><computeroutput>sinq</computeroutput>
|
|
</term>
|
|
<listitem>
|
|
<para>prints the SINQ status in the SICS client which issued the command.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
</section>
|
|
</section>
|
|
</chapter>
|
|
|
|
<chapter>
|
|
<title>Other programs</title>
|
|
<section>
|
|
<title>Grasp</title>
|
|
<para>Grasp stands for 'Graphical Reduction and Analysis SANS Program for Matlab' which was developed
|
|
by Charles Dewhurst at the Institut Laue-Langevin (ILL) in Grenoble, France. Please refer to the
|
|
<ulink url="http://www.ill.fr/lss/grasp/grasp_main.html">Grasp webpage</ulink>.
|
|
</para>
|
|
</section>
|
|
<section>
|
|
<title>BerSANS software package</title>
|
|
<para>The BerSANS data reduction software has been developed by Uwe Keiderling at the Hahn-Meitner-Institut
|
|
(HMI) in Berlin, Germany.
|
|
The Manual of the BerSANS Software Package can be
|
|
<ulink url="http://kur.web.psi.ch/sans1/BerSANS/SANS-Manual.pdf">downloaded</ulink>
|
|
as pdf file.
|
|
</para>
|
|
</section>
|
|
<section>
|
|
<title>SASfit program</title>
|
|
<para>SASfit for analyzing and plotting small angle scattering data has been written by Joachim
|
|
Kohlbrecher at the Paul Scherrer Institute (PSI) in Villigen, Switzerland. Please refer to the
|
|
<ulink url="http://kur.web.psi.ch/sans1/SANSSoft/sasfit.html">SASfit webpage</ulink>.
|
|
</para>
|
|
</section>
|
|
</chapter>
|
|
|
|
</book>
|