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
Command Lines
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.
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

