Devices list
Devices in the Beamline
The devices in the beamline have different components. To see the different component of a device use device.component_names. For instance, to see the component of the plane grating monochromator, called pgm, use pgm.component_names
In general one can manipulate each component by referring to it as device.component. For example the energy of the monochromator is pgm.en.
Accelerator
label: accelerator
| Motor | Description | Units |
|---|---|---|
acc.current |
The ring current | mA |
next_injection.time_next_injection |
Next injection time | sec |
Beamshutter
label: beamshutter
| Motor | Description | Units |
|---|---|---|
bs.status |
close:0, open:1 | na |
Water Apertures
label: apertures
| Motor | Description | Units |
|---|---|---|
wau1.top |
Top aperture | mm |
wau1.bottom |
Bottom aperture | mm |
wau1.left |
Left aperture | mm |
wau1.right |
Right aperture | mm |
M1
label: mirrors
| Motor | Description | Units |
|---|---|---|
m1.tx |
Translation in X | µm |
m1.ty |
Translation in Y | µm |
m1.tz |
Translation in Z | µm |
m1.rx |
Rotation about X axis | rad |
m1.ry |
Rotation about Y axis | rad |
m1.rz |
Rotation about Z axis | rad |
Plane Grating Monochromator
label: pgm
| Motor | Description | Units |
|---|---|---|
pgm.en |
Energy | eV |
pgm.cff |
Constant fix focus factor | a.u. |
pgm.diff_order |
Diffraction Order | a.u. |
pgm.slit |
Exit Slit width | µm |
pgm.grating |
The grating that is being used | l/mm |
pgm.alpha |
The incident entrance angle on the grating | deg |
pgm.beta |
The incident exit angle on the grating | deg |
pgm.theta |
The incident angle on the mirror | deg |
High Order Suppressor
label: hios
The motor controlling the second couple of crystals is implemented using a psudo motor, to be able to change the offset. This is done because we found out that when both motors are set at 0, to have them really at a specular position there is a n offset on the second motor.
| Motor | Description | Units |
|---|---|---|
hios.htr |
Horizontal motor 3 | mm |
hios.hm1 |
Horizontal motor 1 | deg |
hios.hm2pseudo.hm2 |
Horizontal motor 2, with offset | deg |
hios.hm2pseudo.rhm2 |
Horizontal motor 2, absolute | deg |
The following shortcuts are available for the psudomotors. However, when the data is saved, the motors will have the names as above.
| Shortcut | Real Name |
|---|---|
hios.hm2pseudo.hm2 |
hios.hm2 |
hios.hm2pseudo.rhm2 |
hios.hm2_absolute |
Change Offset of hios.hm2
The offset value is stored in a file contained in /home/opticsmaster/bluesky/beamlinetools/beamlinetools/hios/offset.txt. At the moment this guide was written offset=0.88°. It can be read anytime from bluesky issuing the following command
hios.read_offset()
and it can be changed using this command:
hios.save_new_offset(new_value)
Note that the change effect the next time the hm2 motor is moved, and it is persistent across different bluesky sessions (If you close and reopen bluesky the new offset value is used).
Filter Slit Unit
label: fsu
| Motor | Description | Units |
|---|---|---|
fsu.slt1 |
Slit 1 position | mm |
fsu.flt1 |
Filter 1 position | mm |
fsu.slt2 |
Slit 2 position | mm |
fsu.flt2 |
Filter 2 position | mm |
Set Slit
Two functions are available to set either slit1 or slit2.
Slit1()
Slit2()
both functions will save the the current Slit in use in the RunEngine metadata.
# to check the current Slit1
RE.md['current_Slit1']
RE.md['current_Slit2']
In case the Slit were moved using blue panels or without using the proper functions, the metadata can be manually changed to match the slit in use
# for instance, to set Slit1 to use the Slit number 2
RE.md['current_Slit1']=2
# for instance, to set Slit2 to use the Slit number 3
RE.md['current_Slit2']=3
Set Filter
Two functions are available to set either slit1 or slit2.
Filter1()
Filter2()
both functions will save the the current Slit in use in the RunEngine metadata.
# to check the current Filter1
RE.md['current_Filter1']
# to check the current Filter2
RE.md['current_Filter2']
In case the filter were moved using blue panels or without using the proper functions, the metadata can be manually changed to match the filter in use
# for instance, to set Filter2 to use the Filter number 2
RE.md['current_Filter1']=2
# for instance, to set Filter2 to use the Filter number 3
RE.md['current_Filter2']=3
Reflectometer
label: reflectometer
| Motor | Description | Units |
|---|---|---|
r.tx |
Translation in X | mm |
r.ty |
Translation in Y | mm |
r.tz |
Translation in Z | mm |
r.rx |
Rotation about X axis | deg |
r.ry |
Rotation about Y axis | deg |
r.rz |
Rotation about Z axis | deg |
r.phi |
Phi angle | deg |
r.tha |
Theta angle | deg |
r.twt |
Tweeter | deg |
r.det1 |
Detector 1 | mm |
r.det2 |
Detector 2 | mm |
Set an axis to zero/custom value
Each axis of the reflectometer, can be set to zero, or to a custom value. For instance, to set to zero r.tha use the following syntax:
r.tha.set_to_zero()
To set it to a custom value use
r.tha.set_current_position(value)
Set Detector
Two functions are available to set either slit1 or slit2.
Detector()
# or if you already know what detector to use, for instane for detector number 5
Detector(target_device_index=5)
both functions will save the the current Detector in use in the RunEngine metadata.
# to check the current Detector
RE.md['current_Detector']
In case the Detecotr were moved using blue panels or without using the proper functions, the metadata can be manually changed to match the detector in use
# for instance, to set detector to use the detector number 2
RE.md['current_Detector']=2
Set all the axis to zero
This command will set all the axis of the reflectometer to zero, excluded r.det1 and r.det2
r.set_to_zero()
Set all the goniometer axis to zero
This command will set all the axis of the reflectometer to zero, excluded r.det1 and r.det2
r.set_gon_to_zero()
Initialize axis
If the IOC of the reflectometer gets turned off, or the IOC acting as a man in the middle get turned off, it is necessary to initialise the axis (this is due to the fact that there is no readback value for some axis). To do this, using the Labview program set
* r.tx=0
* r.ty=0
* r.tz=0
* r.rx=0
* r.ry=0
* r.rz=0
and the issue in bluesky the following command:
r.initialise_axes()
Keithleys
label: keithley
Existing devices:
* Model 6517B: kth1, kth2
* Model 6514: kth3, kth4
| Device | Description | Units | Values |
|---|---|---|---|
kth1.readback |
current | Amp | |
kth1.rnge |
range | n.a. | |
kth1.nplc |
number of power line cycles | n.a. | 0.01 (fast) to 10 (accurate) |
kth1.int_time |
integration time | n.a. | |
kth1.avg_num |
number of averages | n.a. | 1-100 readings |
kth1.avg_type |
average type | n.a. | 0:moving average, 1:repeating average |
kth1.vsrc_ena |
voltage enabled (only 6517B) | n.a. | 0:no, 1:yes |
kth1.vsrc |
voltage (only 6517B) | n.a. | 40 V to 400 V |
Valves
label: valves Each valve has readback, see table below.
| Motor | Description | Values |
|---|---|---|
v3 |
valve 3 | 0: close, 1: open |
v4 |
valve 4 | 0: close, 1: open |
v5 |
valve 5 | 0: close, 1: open |
v6 |
valve 6 | 0: close, 1: open |
v7 |
valve 6 | 0: close, 1: open |
v8 |
valve 8 | 0: close, 1: open |
v9 |
valve 9 | 0: close, 1: open |
v10 |
valve 10 | 0: close, 1: open |
v11 |
valve 11 | 0: close, 1: open |
v13 |
valve 13 | 0: close, 1: open |