print

Instrument Control Service

Contact

Paolo Mutti
Head of Service
mutti@ill.fr
Tel. +33 4 76 20 72 23

Information for users

The ILL has setup a system to remote control experiments and allow users not able to travel to actively participate in data acquisition.

The system is based on virtual machines running on any web browser (therefore no need to install anything) on which you can run an instance of the graphical interface of the NOMAD instrument control system.

All interfaces read information from the server running on the instrument computer and they are able to interact in real-time: modifying the workflow, adding tasks and looking at the data as if you were right next to the instrument.

Of course, access to this tool is restricted in accordance with the ILL data policy, and you can interact with the instrument only when the experiment you’re involved in is actually running.

Information on how to initialise the remote control to experiments

General commands

Parser

You could change parser type without restarting nomad by using this command:

parser <type>

For getting the list of parsers, you could just type parser<enter>.

After each Nomad reboot, the local default parser is setting.

Examples:

> parser
    Actual parser : tas
    Available parsers : generic, tas, d20d4

> parser generic
    New parser : generic

Xbu or Do

Runs a xbufile without testing the syntax. The xbufile system enables a series of commands to be executed in sequence without the operator being present.

xbu filename

do filename

The directory of xbu files in located at $HOME/nomadXBUs directory. But using "../" option it possible to use an another directory.

The "xbu" extension is optional.

Examples:

> do test

> xbu toto.xbu

> do ../directory/alltest

Wait

This command is just a time wait command.

waittimetype

Examples:

> wait 10 s

> wait 1 h

Comment

Set a comment in the output and in the the log file. The character using for the comment is "!"

Examples:

! this is a comment

Stop

Stop actual running commands.

stop

Pause

Pause actual running commands.

paus(e)

Continue

Continue actual pausing commands.

cont(inue)

For loop

The for loop is only accessible in a xbu file. 

for$variable startvaluetoendvaluestepstepvalue <; $variable startvalue toendvaluestepstepvalue ....>

.....

endfor

for$variable startvaluetoendvaluenpnumberofpoints <; $variable startvaluetoendvaluenpnumberofpoints....>

.....

endfor

for$variable listofvalues <; $variable listofvalues....>

.....

endfor

All mathematical operations are possible when using variables in the command.

For loop could contains another for loop, but be careful with the name of variables of course.

Examples:

for $i 0 to 12 step 1.8
    dr a1 $i-40
    pr a1
endfor

for $i 1 to 10 np 10
co ti $i
endfor

for $a -20 -25 -26 -27 -28;$t 1 2 3 4 5
dr a1 $a
co ti $t
endfor

for $i 10 30 50 55

dr a1 $i

for $j 1 to 10 np 10
co ti $j
endfor

endfor

Break

The break command is only used in a forloop. It's allow to break (exit) a for loop for a specific condition. For property name of controller see command show.

break condition

The condition is test as do in a C or C++ condition operation.

There are some examples:

for $i 0 to 1000 step 1

co ti 60

break OrangeCryostat.sample_temperature_kelvin <= 1.5

endfor

for $i 0 to 1000 step 1

co ti 60

break $i  == 10

endfor

for $i 0 to 1000 step 1

dr a1 $i

break a1.commandStatus == error

endfor

the are dome constantes defined for the commandstatus property (report of the result of a command):

- idle: command success

- warning

- error

- unknown

- running

If

The if command is only used in a xbu file. It's allow to execute a par of commands only if the result of a specific condition is true.

The condition is like break command. For property name of controller see command show.

ifcondition

....

endif

for $i 1 to 50 step 1

   hklfile test $i

   if hklfile.commandStatus == idle

      bpb

   endif

endfor

Show

Show the list of properties. It is help you to find property name of a controller for using if and break commands

showcontroller_name

Example:

Command> show a1
isCommand 1
nickname
progression 0
commandStatus 4
unit deg
actual_position (Position) -0.715
wanted_position 20
offset_position -0.715
actual_position_1000 -715
use_relative_position 0
relative_position 0
max_position (Max) 67.065
min_position (Min) 19.285
reference_position 63.1
backlash 0
timeout 20
maxretry 4
manual_direction 1
manual_speed 69
fixed 0
encoder_set_value 0
nb_decimal_places 3
datafile_index 0
status 0

Generic parser

The generic parser is a simple parser:

- Getting or settings a properties value of a controller

- Starting controllers

This parser execute actions sequentially.

Print

The print commands print the property value of a controller. The property name could be the real property name or the alias name.

pri(nt)controllername.propertyname<controllername.propertyname....>

Example:

> print a1.position
    position = -140.34
> print a1.actual_position
    actual_position = -140.34
> print a1.min_position
    min_position = -4.34
 

Set

The set commands set the property value of a controller. The property name could be the real property name or the alias name.

setcontrollername.propertynamevalue<controllername.propertyname value....>

Example:

> set a1.position 10
> set a1.wanted_position 20

> set a1.wanted_position 20 a2.position 30

Start

This command call the start command on specified controllers.

sta(rt)controllername <controllername ...>

Example:

> start a1
A1              --> 20 deg
A1                  20.01 deg
> start a1 a2
A1              --> 30 deg
A2              --> 30 deg
A1                  30.01 deg
A2                  30 deg

 

Commands list

It possible to put many commands in the same line. The command are separated using ";" character. All commands are executing in a sequential way.

Example:

> set a1.position 10 ; start a1
A1              --> 10 deg
A1                  10.01 deg

Diffraction parser

This part is the help of nomad diffraction command line parser

Par

The par commands sets parameters of the instrument.

par <parameters name> values....

* mco

Title of the experiment

Example:

> par mco
    Title = Nassif-11-04
> par mco test
    Title = test
* mut

Names of user and local contact

Example:

> par mut
    User name     = Nassif
    Local contact = test
> par mut Toto Nassif
               User name = Toto
               Local contact = Nassif
> par mut "John Doo" "local guy"
               User name = John Doo
               Local contact = local guy

* wav

Incident Wavelength of the instrument

> par wav
    Wavelength = 0.825

> par wav 0.912

Read

The read commands print the actual values of a component (axis, temperature, magnetic field, etc...).

readcomponent<component....>

Example:

> read omega
    Omega = 0

> read temp
    Tsample = 101.33    Tregulation = 100.12    Twanted = 100
It's also to call a shortcut command:

r<component>

Example:

> rom
    Omega = 0

> rte

    Tsample = 101.33    Tregulation = 100.12    Twanted = 100

> rall
    2theta = 0.79
    Chi = 0
    Omega = 0
    Omega-Ge = 0
    Omega-PG = 0
    Phi = 0
    Tilt-PG = 0
    Tilt1-Ge = 0
    Tilt2-Ge = 0
    Tra-Mono = 0
    Translat = 0
For Coldvalve

> rvf
    Pactual = 0.8    Pwanted = 5

 

Pos

The pos commands do the action on a component (axis, temperature, magnetic field, etc...) with a specified target.

poscomponenttarget<component target....>

Example:

> pos omega 20
Omega           --> 20 deg
Omega               20 deg

> pos omega 10 2theta 110
Omega           --> 10 deg
2theta          --> 110 deg
Omega               10 deg
2theta              110 deg
 

It's also to call a shortcut command:

p<component>target

Example:

Command> pom 20
Omega           --> 20 deg
Omega               20 deg

Temperature:

pos temp or pte target <timeout time> <stabilisation time>

pos temp or pte ramp speed(K or C/min) target <timeout time> <stabilisation time>

Example:

> pte 100 1h 10m
OrangeCryostat  --> 100 K (timed out = 1 h)
OrangeCryostat  --> waiting stabilisation time 10 m
OrangeCryostat      100 K

> pte ramp 0.5 120 30m 5m
OrangeCryostat  --> 120 K setpoint ramp 0.5 K/min (timed out = 30 m)
OrangeCryostat  --> waiting stabilisation time 300 s
OrangeCryostat      120 K
 

Cold Valve:

pvf target <timeout time> <stabilisation time>

 

Move

The move commands do the action on a component (axis only) with a specified target step.

movecomponenttarget-step<component target-step....>

Example:

> move omega 1
Omega           --> 21 deg
Omega               21 deg

> move omega 1 2theta 0.5
2theta          --> 110.5 deg
Omega           --> 22 deg
2theta              110.5 deg
Omega               22 deg

It's also to call a shortcut command:

m<component>target-step

Example:

Command> mom 1
Omega           --> 23 deg
Omega               23 deg

 

Fix

Fixes a simple dynamic variable (i.e. a variable that is directly connected with the position of a spectrometer motor , or the value of a current).

The variable is fixed at its current value so that subsequent attempts to change the value will fail unless a CLEAR command is issued first.

FIX is a command of type A syntax. The FIX command issued with no variable name gives a list of motors and supplies which are fixed.

fix axis <axis...>

Example:

Command> fix omega
    Omega    Fixed

 

Clear

The CLEAR command un-fixes a previously fixed motor or power supplies. Issued alone it un-fixes all previously fixed motors and power supplies. CLEAR is a command with type A syntax. In all cases the motors or supplies which have been cleared are listed by the Program.

clear axis <axis...>

Example:

> clear omega
    Omega    Cleared

 

Set

The set commands change the component actual value by settings the offset value (only for axis).

set componentvalue <component value...>

Example:

> set omega 1
Omega           --> New Offset -22 ( Old  0)
> set omega 1 2theta 50
2theta          --> New Offset -59.71 ( Old  0.79)
Omega           --> New Offset -22 ( Old  -22)
 

Acq

The acquisition command.

acq  <preset_value> <preset_type> <save_type> <number_repetitions>

- preset_type: 0 = monitor, 1 = time

- save_type: 0 = no save, 1 = save

If there is no parameters, the acquisition take its actual configuration.

 

Nacq

The acquisition command. It is the same as" acq" but force saving data.

acq  <preset_value> <preset_type> <number_repetitions>

- preset_type: 0 = monitor, 1 = time

If there is no parameters, the acquisition take its actual configuration.

 

Scan

The SCAN command performs simple angle scans.

scan component<type> value1 value2 step <preset_value> <preset_type> <save_type>

or

scomponent<type> value1 value2 step <preset_value> <preset_type> <save_type>

If value1 < value2 the routines will default to a stepped scan from value1 to value2.
 e.g.        SCAN OME 5 15 .17        (or SOM 5 15 .17)

If value1 > value2 the routines will default to a centred stepped scan about value1 of width value2.        ie scans from value1 - (value2/2) to value1 + (value2/2)
 e.g.        SCAN OME 10 2 .2        ( scan from 9 to 11 in Omega )
 also       SCAN PHI = 1 .1            ( scans .5 deg. either side of current angle.)


If the default needs to be overidden, e.q. scans in a negative direction or the scan range is greater than the machine angle, the scan can be forced to either of the two  types by giving ''From' (forces from-to scan) and 'Centre' (forces centred scan) before the two angles.
 e.g.        SCAN OME From 15 5 .17        or        SOM F 15 5 .17
               which would normally default to centred scan from 10 to 20
 and        SCAN 2TH Centre 0 1 .05        or        SGA C 0 1 .05
               which would normally default to a simple scan from 0 to 1
 

Example:

> scan 2theta 100 120 1 1000 0 1
Scan            --> 2theta Position 100 -> 120 delta 1 steps 2

     Numor     710883
Step     2theta       Time   Monitor1   Detector    Tsample      Field
    1    100.000      1.028       1000  134209536     52.667      1.000
    2    101.000      1.001       1000  134209536     53.000      1.000
    3    102.000      1.030       1000  134209536     53.000      1.000
    4    103.000      1.030       1000  134209536     53.333      1.000
    5    104.000      1.035       1000  134209536     53.667      1.000
    6    105.000      1.028       1000  134209536     53.667      1.000
    7    106.000      1.031       1000  134209536     54.000      1.000
    8    107.000      1.021       1000  134209536     54.000      1.000

...

CALCULATE

CAL0 H K L (Psi)        Calculates the setting angles for HKL. If psi is not given it will default to zero Angles are calculated, using the current orientation matrix and wavelength, according to the angle calculation criteria contained in parameter group MPA

CAL1 H K L              Calculates the 'D'-spacing and Theta angle according to the wavelength and the lattice constants.

 

HKL

HKL calculates angles in the same way as "CALculate".

If the angles are within software limits, it will position the diffractometer.

HKL0 H K L (Psi)        Calculates setting angle for HKL from the orientation-matrix and the wavelength according to the angle       calculation criteria in parameter group MPA, -- and positions --. If Psi is undefined, it will default to zero

HKL1 H K L        Calculates the 'D'-spacing and theta angle for HKL from the wavelength and lattice constants. It then positions 2Theta to twice Theta (!) and Omega to Theta. Chi and Phi are not touched.

Centering

The CENtre command starts a centering sequence.

This consists of step scans across Om, 2T, Ch. until either convergence
is found, or until a max number of cycles is exceeded.

 

CEN0 H K L (psi)  : Center from angles calculated from the UB matrix.

CEN2 (HKL) 2Th Om Ch Ph  : Center from given angles. The reflection will be called HKL if HKL is given, otherwise 0 0 0.

CEN4 (HKL)  : Center from current angles. The reflection will be called HKL if HKL is given, otherwise 0 0 0.

 

There are described below all D3 specifics commands.

 

  • FILTER
  • BPB
  • POLARIZATION