Important BLISS commands available at ID2:



SAXS/WAXS (EH2):

Shutter commands

sc() to close the safety beam shutter
so() to open the safety beam shutter
fson() to activate fast beam shutter for scanning and counting
fsoff() to disable fast beam shutter for scanning and counting
fsstate() to show triggering of fast shutter
bvcl() to close the big valve
bvop() to open the big valve

Movement commands

wut() to see motor user values
umv(<motor>, <position>) to move a motor to the desired absolute position
umvr(<motor>, <step>) to move a motor to a relative position
samplescan(<motor>, <from>, <to>, <steps>, <exptime>); samplescan6(<motor>, <from>, <to>, <steps>, <exptime>) to align sample (closes big valve)
Note: to continue taking images answer 'yes' or use bvop()

samplescan6 uses pin6 (if  available)

Use of detectors

newproposal(<proposal_number>) to start new experiment
newcollection(<prefix>) to set prefix of filename
newdataset() to set new subdirectory and start counting images from 1
endproposal() to finish experiment (data will be written to archive)
detexpinfo() to set header information for following exposure
detactive(<list of detectors>) to set detectors active
flint() to open the image/scan display (if it was lost)
pymca() to open the PyMca display (if it was lost)
detexpose(<exptime>, <save(0/1)>, <"title">, [<HWTrigger=...>, <N_darks=...>]) to take a single image;
to wait for trigger before exposure, HWTrigger can be
: "DI1", "DI2" or "enter"
dettrans(<motor>, <start>, <stop>, <intervals>, <exptime>, <sleep_time>, <save(0/1)>, <"title">,  [<N_darks=...>]) to scan on a sample motor and take images at each scan step
use dettrans_rel for relative scans
detframes(<nframes>, <clock>, <exptime>, <save(0/1)>, <"title">, [N_darks=...])> to take multiple frames with lower time resolution (>1s)
detmulti(<nframes>, <deadtime0>, <deadtime>, <exptime>, <save(0/1)>, <"title">,[<HWTrigger=...>, <N_darks=...>]) to take multiple images (saving after the last frame)
deadtime0 before first exposure
deadtime between exposures depending on binnig for ccd cameras:

 
  Waxs FReLoN
1 x 1 binning: 0.38 0.56
2 x 2 binning: 0.14 0.32
4 x 4 binning: 0.045 0.18
8 x 8 binning: 0.022 0.12
detkin(<deadtime0>, <array_of_nframes_times>, <exptime>, <save(0/1>, <"title">, [<HWTrigger=...>, <N_darks=...>]) to take multiple images in multiple time groups  with changing deadtimes, but same exptime:
deadtime0 before first exposure;

array_of_nframes_times: [(N1, dead1),(N2,dead2),...,(Nn, deadn)]
detmvdc(<nframes>, <deadtime0>, <deadtime>, <factor>, <exptime>, <save(0/1)>, <"title">, [<HWTrigger=...>,<N_darks>=...]) to take multiple images with increasing deadtime, but same exptime:
deadtime0 before first exposure;

deadtime increasing by factor**image_nr
(verify timing with detmcal(<nframes>, <deadtime0>, <deadtime>, <factor>, <exptime>)
 
ldo() to list all detector position files
ddo(<det-file>) to restore detector position file


Control of sample environments:

Mettler heating stage:

mettler.reset() to reset  
mettler.on() to start temperature control
mettler.off() to stop temperature control
mettler.temperature to read temperature (only if temperature control started)
mettler.setpoint = <temperature> to set temperature
mettler.setramp(<start_T>, <target_T>, <ramprate>, <autostart (True/False)>) to program (and start) heating ramp
mettler.startRamp() to start heating ramp

Linkam heating stage:

linkam.on() to start temperature control
linkam.off() to stop temperature control
linkam.temperature to get temperature
linkam.setpoint = <temperature> to set target temperature
linkam.ramprate = <rate> to set heating/cooling rate
linkam.set_hold_on to hold current temperature

Huber baths:

hubbath1.on() to start temperature control (exists also: hubbath2)
hubbath1.off() to stop temperature control
hubbath1.temperature to get temperature
hubbath1.setpoint = <temperature> to set target temperature

TEC temperature controller:

tec1.on() to start temperature control (exists also: tec2)
tec1.off() to stop temperature control
tec1.temperature to get temperature
tec1.setpoint = <temperature> to set target temperature
tec1.temperature1Offset = <value> to set temperature offset
tec1.startProfile([<holdTempAtEnd (True/False)>] ) to  start heating ramp
tec1.startProfile() to stop heating ramp
tec1.setupProfile(profile) to program heating ramp with profile: Sequence of [(ramp_time1, soak_time1, Target T1), (ramp_time2, soak_time2, Target T2), ..., ramp_time8, soak_time8, Target T8].
If less than 8 segments are defined, they are filled with last constant temperature.
tec1.profile to get programmed heating ramp
     

LFI temperature controller (Peltier controlled stages):

lfi1.on() to start temperature control
lfi1.off() to stop temperature control
lfi1.temperature to get temperature
lfi1.setpoint = <temperature> to set target temperature
lfi1.startRamp(<target_T>, <ramprate>) to ramp to target temperature at ramprate
lfi1.startProfile(<profile>) to start heating ramp with profile: Sequence of tuple of (time, temperature). Exemple: [(time1,T1),(time2,T2),....,(timen,Tn)]. T0 should not be included.
lfi1.wait_ramp() to wait for the end of the ramp
     

Sample Changer:

to be done...