cache wip updates #4

Merged
appel_c merged 1 commits from gac-x10sa_20250425T094950 into main 2025-06-30 10:52:41 +02:00
8 changed files with 3871 additions and 61 deletions

View File

@@ -17,7 +17,9 @@ logger = bec_logger.logger
if TYPE_CHECKING:
from qtpy.QtWidgets import QPushButton, QLabel, QSpinBox
from bec_widgets.widgets.plots.waveform.waveform import Waveform
from bec_widgets.widgets.control.device_input.device_combobox.device_combobox import DeviceComboBox
from bec_widgets.widgets.control.device_input.device_combobox.device_combobox import (
DeviceComboBox,
)
from bec_widgets.widgets.editors.text_box.text_box import TextBox
@@ -50,132 +52,141 @@ class ScanHistory(BECWidget, QWidget):
self.setLayout(layout)
self.components: ScanHistoryUIComponents = {
"waveform" : self.ui.waveform,
"metadata_text_box" : self.ui.metadata_text_box,
"monitor_label" : self.ui.monitor_label,
"monitor_combobox" : self.ui.monitor_combobox,
"history_label" : self.ui.history_label,
"history_spin_box" : self.ui.history_spin_box,
"history_add" : self.ui.history_add,
"history_clear" : self.ui.history_clear,
"waveform": self.ui.waveform,
"metadata_text_box": self.ui.metadata_text_box,
"monitor_label": self.ui.monitor_label,
"monitor_combobox": self.ui.monitor_combobox,
"history_label": self.ui.history_label,
"history_spin_box": self.ui.history_spin_box,
"history_add": self.ui.history_add,
"history_clear": self.ui.history_clear,
}
icon_options = {"size": (16, 16), "convert_to_pixmap": False}
self.components['monitor_combobox'].apply_filter = False
self.components['monitor_combobox'].devices = ['bpm4i', 'bpm3i']
self.components["monitor_combobox"].apply_filter = False
self.components["monitor_combobox"].devices = ["lu_bpmsum", "ss_bpmsum"]
self.components['history_spin_box'].setMinimum(-10000)
self.components['history_spin_box'].setMaximum(-1)
self.components['history_spin_box'].valueChanged.connect(self._scan_history_selected)
self.components["history_spin_box"].setMinimum(-10000)
self.components["history_spin_box"].setMaximum(-1)
self.components["history_spin_box"].valueChanged.connect(self._scan_history_selected)
self._scan_history_selected(-1)
self.components['history_spin_box'].setValue(-1)
self.components['history_add'].setText("Load")
self.components['history_add'].setStyleSheet(
"background-color: #129490; color: white; font-weight: bold; font-size: 12px;"
)
self.components['history_clear'].setText("Clear")
self.components['history_clear'].setStyleSheet(
"background-color: #065143; color: white; font-weight: bold; font-size: 12px;"
)
self.components["history_spin_box"].setValue(-1)
self.components["history_add"].setText("Load")
self.components["history_add"].setStyleSheet(
"background-color: #129490; color: white; font-weight: bold; font-size: 12px;"
)
self.components['history_add'].clicked.connect(self._refresh_plot)
self.components['history_clear'].clicked.connect(self.clear_plot)
self.components["history_clear"].setText("Clear")
self.components["history_clear"].setStyleSheet(
"background-color: #065143; color: white; font-weight: bold; font-size: 12px;"
)
self.components["history_add"].clicked.connect(self._refresh_plot)
self.components["history_clear"].clicked.connect(self.clear_plot)
self.setWindowTitle("Scan History")
self._scan_history_selected(-1)
@SafeSlot()
def add_scan_from_history(self) -> None:
"""Load selected scan from history."""
self.components['history_add'].click()
self.components["history_add"].click()
@SafeSlot()
def clear_plot(self) -> None:
"""Delete all curves on the plot."""
self.components['waveform'].clear_all()
self.components["waveform"].clear_all()
@SafeSlot()
def _refresh_plot(self) -> None:
"""Refresh plot."""
spin_box_value = self.components['history_spin_box'].value()
spin_box_value = self.components["history_spin_box"].value()
self._check_scan_in_history(spin_box_value)
# Get the data from the client
# Get the data from the client
data = self.client.history[spin_box_value]
# Check that the plot does not already have a curve with the same data
scan_number = int(data.metadata.bec['scan_number'])
monitor_name = self.components['monitor_combobox'].currentText()
scan_number = int(data.metadata.bec["scan_number"])
monitor_name = self.components["monitor_combobox"].currentText()
# Get signal hints
signal_name = getattr(self.client.device_manager.devices, monitor_name)._hints
signal_name = signal_name[0] if len(signal_name)>0 else signal_name
signal_name = signal_name[0] if len(signal_name) > 0 else signal_name
curve_label = f"Scan-{scan_number}-{monitor_name}-{signal_name}"
if len([curve for curve in self.components['waveform'].curves if curve.config.label == curve_label]):
if len(
[
curve
for curve in self.components["waveform"].curves
if curve.config.label == curve_label
]
):
return
if not hasattr(data.devices, monitor_name):
raise ValueError(f"Device {monitor_name} not found in data.")
# Get scan motors and check that the plot x_axis motor is the same as the scan motor, if not, clear the plot
scan_motors = [motor.decode() for motor in data.metadata.bec['scan_motors']]
x_motor_name = self.components['waveform'].x_mode
scan_motors = [motor.decode() for motor in data.metadata.bec["scan_motors"]]
x_motor_name = self.components["waveform"].x_mode
if x_motor_name not in scan_motors:
self.clear_plot()
self.components['waveform'].x_mode = x_motor_name = scan_motors[0]
self.components["waveform"].x_mode = x_motor_name = scan_motors[0]
# fetching the data
monitor_data = getattr(data.devices, monitor_name).read()[signal_name]['value']
motor_data = getattr(data.devices, x_motor_name).read()[x_motor_name]['value']
monitor_data = getattr(data.devices, monitor_name).read()[signal_name]["value"]
motor_data = getattr(data.devices, x_motor_name).read()[x_motor_name]["value"]
# Plot custom curve, with custom label
self.components['waveform'].plot(x=motor_data, y=monitor_data, label=curve_label)
x_label = f"{x_motor_name} / [{getattr(self.client.device_manager.devices, x_motor_name).egu()}]"
self.components['waveform'].x_label = x_label
self.components["waveform"].plot(x=motor_data, y=monitor_data, label=curve_label)
x_label = (
f"{x_motor_name} / [{getattr(self.client.device_manager.devices, x_motor_name).egu()}]"
)
self.components["waveform"].x_label = x_label
def _check_scan_in_history(self, history_value:int) -> None:
def _check_scan_in_history(self, history_value: int) -> None:
"""
Check if scan is in history.
Args:
history_value (int): Value from history -1...-10000
"""
if len(self.client.history) < abs(history_value):
self.components['metadata_text_box'].set_plain_text(f"Scan history does not have the request scan {history_value} of history with length: {len(self.client.history)}")
self.components["metadata_text_box"].set_plain_text(
f"Scan history does not have the request scan {history_value} of history with length: {len(self.client.history)}"
)
return
def select_scan_from_history(self, value:int) -> None:
"""
def select_scan_from_history(self, value: int) -> None:
"""
Set scan from CLI.
Args:
value (int) : value from history -1 ...-10000
"""
if value >=0:
if value >= 0:
raise ValueError(f"Value must be smaller or equal -1, provided {value}")
self.components['history_spin_box'].setValue(value)
self.components["history_spin_box"].setValue(value)
@SafeSlot(int)
def _scan_history_selected(self, spin_box_value:int) -> None:
def _scan_history_selected(self, spin_box_value: int) -> None:
self._check_scan_in_history(spin_box_value)
data = self.client.history[spin_box_value]
data.metadata.bec['scan_motors'][0].decode()
data.metadata.bec["scan_motors"][0].decode()
text = str(data)
scan_motor_text = "\n" + "Scan Motors: "
for motor in data.metadata.bec['scan_motors']:
for motor in data.metadata.bec["scan_motors"]:
scan_motor_text += f" {motor.decode()}"
self.components['metadata_text_box'].set_plain_text(text + scan_motor_text)
self.components["metadata_text_box"].set_plain_text(text + scan_motor_text)
@SafeSlot(str)
def _set_x_axis(self, device_x:str) -> None:
self.components['waveform'].x_mode = device_x
def _set_x_axis(self, device_x: str) -> None:
self.components["waveform"].x_mode = device_x
@SafeSlot(str)
def _plot_new_device(self, device:str) -> None:
# if len(curve for curve in self.components["waveform"].curves if curve.config.label == f"{device}-{device}":
def _plot_new_device(self, device: str) -> None:
# if len(curve for curve in self.components["waveform"].curves if curve.config.label == f"{device}-{device}":
self.components["waveform"].plot(device)

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,792 @@
sls_current:
description: SLS current
deviceClass: ophyd.EpicsSignalRO
deviceConfig: {read_pv: 'ARS07-DPCT-0100:CURR', auto_monitor: true}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- SLS
readOnly: true
softwareTrigger: false
ps1_press:
description: Photon shutter 1 pressure
deviceClass: ophyd.EpicsSignalRO
deviceConfig: {read_pv: 'X10SA-FE-PSH1-VMCC-1010:PRESSURE', auto_monitor: true}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- press
readOnly: true
softwareTrigger: false
abs_press:
description: Absorber pressure
deviceClass: ophyd.EpicsSignalRO
deviceConfig: {read_pv: 'X10SA-FE-VMCC-0000:PRESSURE', auto_monitor: true}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- press
readOnly: true
softwareTrigger: false
lu_bpmsum:
description: LU BPM Summed
deviceClass: ophyd.EpicsSignalRO
deviceConfig: {read_pv: 'X10SA-OP-LUBPM:SumAll:MeanValue_RBV', auto_monitor: true}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- bpm
readOnly: true
softwareTrigger: false
ss_bpmsum:
description: SS BPM Summed
deviceClass: ophyd.EpicsSignalRO
deviceConfig: {read_pv: 'X10SA-ES-SSBPM1:SumAll:MeanValue_RBV', auto_monitor: true}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- bpm
readOnly: true
softwareTrigger: false
ps3_press:
description: Pumpstand 3 pressure
deviceClass: ophyd.EpicsSignalRO
deviceConfig: {read_pv: 'X10SA-FE-PUM3-VMCC-2010:PRESSURE', auto_monitor: true}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- press
readOnly: true
softwareTrigger: false
bsf_press:
description: BSF pressure
deviceClass: ophyd.EpicsSignalRO
deviceConfig: {read_pv: 'X10SA-OP-BSF-VMFR-0010:PRESSURE', auto_monitor: true}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- press
readOnly: true
softwareTrigger: false
bb1_press:
description: BB1 pressure
deviceClass: ophyd.EpicsSignalRO
deviceConfig: {read_pv: 'X10SA-OP-BBU-VMFR-1010:PRESSURE', auto_monitor: true}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- press
readOnly: true
softwareTrigger: false
dcm_press:
description: DCM pressure
deviceClass: ophyd.EpicsSignalRO
deviceConfig: {read_pv: 'X10SA-OP-DCM-VMFR-3010:PRESSURE', auto_monitor: true}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- press
readOnly: true
softwareTrigger: false
bb2_press:
description: BB2 pressure
deviceClass: ophyd.EpicsSignalRO
deviceConfig: {read_pv: 'X10SA-OP-BBD-VMFR-4010:PRESSURE', auto_monitor: true}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- press
readOnly: true
softwareTrigger: false
lu_press:
description: LU pressure
deviceClass: ophyd.EpicsSignalRO
deviceConfig: {read_pv: 'X10SA-OP-LU-VMFR-5010:PRESSURE', auto_monitor: true}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- press
readOnly: true
softwareTrigger: false
ps2_press:
description: Photon shutter 2 pressure
deviceClass: ophyd.EpicsSignalRO
deviceConfig: {read_pv: 'X10SA-OP-PSH1-VMFR-7010:PRESSURE', auto_monitor: true}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- press
readOnly: true
softwareTrigger: false
ss_press:
description: SS pressure
deviceClass: ophyd.EpicsSignalRO
deviceConfig: {read_pv: 'X10SA-ES-SS1-VMFR-0010:PRESSURE', auto_monitor: true}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- press
readOnly: true
softwareTrigger: false
kb_press:
description: KBV pressure
deviceClass: ophyd.EpicsSignalRO
deviceConfig: {read_pv: 'X10SA-ES-KBV-VMFR-0010:PRESSURE', auto_monitor: true}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- press
readOnly: true
softwareTrigger: false
bcu_press:
description: BCU pressure
deviceClass: ophyd.EpicsSignalRO
deviceConfig: {read_pv: 'X10SA-ES-BCU-VMFR-0010:PRESSURE', auto_monitor: true}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- press
readOnly: true
softwareTrigger: false
fe_sxr:
description: 'FE Slit X Ring'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-FE-SLDI:TRXR'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- fe
readOnly: false
softwareTrigger: false
fe_syt:
description: 'FE Slit Y top'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-FE-SLDI:TRYT'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- fe
readOnly: false
softwareTrigger: false
fe_sxw:
description: 'FE Slit X Wall'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-FE-SLDI:TRXW'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- fe
readOnly: false
softwareTrigger: false
fe_syb:
description: 'FE SlitY Bottom'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-FE-SLDI:TRYB'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- fe
readOnly: false
softwareTrigger: false
fe_sxcen:
description: 'FE Slit X Centre'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-FE-SLDI:CENTERX'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- fe
readOnly: false
softwareTrigger: false
fe_sxsize:
description: 'FE Slit X Size'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-FE-SLDI:SIZEX'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- fe
readOnly: false
softwareTrigger: false
fe_sycen:
description: 'FE Slit Y Centre'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-FE-SLDI:CENTERY'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- fe
readOnly: false
softwareTrigger: false
fe_sysize:
description: 'FE Slit Y Size'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-FE-SLDI:SIZEY'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- fe
readOnly: false
softwareTrigger: false
s1_xw:
description: 'BSF slit outboard'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-OP-SLH:TRXW'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- bsf
readOnly: false
softwareTrigger: false
s1_xr:
description: 'BSF slit inboard'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-OP-SLH:TRXR'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- bsf
readOnly: false
softwareTrigger: false
s1_yt:
description: 'BSF slit top'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-OP-SLV:TRYT'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- bsf
readOnly: false
softwareTrigger: false
s1_yb:
description: 'BSF slit bottom'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-OP-SLV:TRYB'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- bsf
readOnly: false
softwareTrigger: false
s1_xcen:
description: 'BSF X centre'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-OP-SLH:CENTER'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- bsf
readOnly: false
softwareTrigger: false
s1_xsize:
description: 'BSF X size'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-OP-SLH:SIZE'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- bsf
readOnly: false
softwareTrigger: false
s1_ycen:
description: 'BSF Y centre'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-OP-SLV:CENTER'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- bsf
readOnly: false
softwareTrigger: false
opf1_y:
description: 'BSF Filter 1 Y'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-OP-FI1:TRY'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- bsf
readOnly: false
softwareTrigger: false
opf2_y:
description: 'BSF Filter 2 Y'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-OP-FI2:TRY'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- bsf
readOnly: false
softwareTrigger: false
dcm_bragg:
description: 'DCM Bragg angle'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-OP-DCM:ROTY'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- dcm
readOnly: false
softwareTrigger: false
dcm_x:
description: 'DCM lateral'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-OP-DCM:TRX'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- dcm
readOnly: false
softwareTrigger: false
dcm_perp:
description: 'DCM Perp'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-OP-DCM:TRX-C2'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- dcm
readOnly: false
softwareTrigger: false
dcm_pitch:
description: 'DCM 2nd crystal pitch'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-OP-DCM:ROTY-C2'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- dcm
readOnly: false
softwareTrigger: false
ssbpm_x:
description: 'SS BPM X'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-SSBPM1:TRX1'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- ss
readOnly: false
softwareTrigger: false
ssbpm_y:
description: 'SS BPM Y'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-SSBPM1:TRY1'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- ss
readOnly: false
softwareTrigger: false
s2_xw:
description: 'SS slit wall'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-SSSH1:TRXW'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- ss
readOnly: false
softwareTrigger: false
s2_xr:
description: 'SS slit ring'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-SSSH1:TRXR'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- ss
readOnly: false
softwareTrigger: false
s2_xcen:
description: 'SS slit X centre'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-SSSH1:CENTER'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- ss
readOnly: false
softwareTrigger: false
s2_xsize:
description: 'SS slit X size'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-SSSH1:CENTER'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- ss
readOnly: false
softwareTrigger: false
s2_yt:
description: 'SS slit top'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-SSSV1:TRYT'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- ss
readOnly: false
softwareTrigger: false
s2_yb:
description: 'SS slit bottom'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-SSSV1:TRYB'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- ss
readOnly: false
softwareTrigger: false
s2_ycen:
description: 'SS slit Y centre'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-SSSV1:CENTER'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- ss
readOnly: false
softwareTrigger: false
s2_ysize:
description: 'SS slit Y size'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-SSSV1:SIZE'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- ss
readOnly: false
softwareTrigger: false
xeye_x:
description: 'SS X-ray eye X'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-SSXI1:TRX1'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- ss
readOnly: false
softwareTrigger: false
xeye_y:
description: 'SS X-ray eye Y'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-SSXI1:TRY1'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- ss
readOnly: false
softwareTrigger: false
vfm_xu:
description: 'VFM Upstream X'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-VFM:TRXU'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- vfm
readOnly: false
softwareTrigger: false
vfm_xd:
description: 'VFM Downstream X'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-VFM:TRXD'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- vfm
readOnly: false
softwareTrigger: false
vfm_yur:
description: 'VFM Upstream Ring Y'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-VFM:TRYUR'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- vfm
readOnly: false
softwareTrigger: false
vfm_yw:
description: 'VFM Wall Y'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-VFM:TRYW'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- vfm
readOnly: false
softwareTrigger: false
vfm_ydr:
description: 'VFM Downstream Ring Y'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-VFM:TRYDR'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- vfm
readOnly: false
softwareTrigger: false
vfm_bu:
description: 'VFM Upstream Bender'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-VFM:BNDU'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- vfm
readOnly: false
softwareTrigger: false
vfm_bd:
description: 'VFM Downstream Bender'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-VFM:BNDD'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- vfm
readOnly: false
softwareTrigger: false
vfm_yaw:
description: 'VFM Virtual Yaw'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-VFM:YAW'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- vfm
readOnly: false
softwareTrigger: false
vfm_roll:
description: 'VFM Virtual Roll'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-VFM:ROLL'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- vfm
readOnly: false
softwareTrigger: false
vfm_pitch:
description: 'VFM Virtual Pitch'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-VFM:PITCH'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- vfm
readOnly: false
softwareTrigger: false
vfm_lat:
description: 'VFM Virtual X'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-VFM:TRX'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- vfm
readOnly: false
softwareTrigger: false
vfm_vert:
description: 'VFM Virtual Y '
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-VFM:TRY'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- vfm
readOnly: false
softwareTrigger: false
hfm_xu:
description: 'HFM Upstream X'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-HFM:TRXU'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- hfm
readOnly: false
softwareTrigger: false
hfm_xd:
description: 'HFM Downstream X'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-HFM:TRXD'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- hfm
readOnly: false
softwareTrigger: false
hfm_yuw:
description: 'HFM Upstream Wall Y'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-HFM:TRYUW'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- hfm
readOnly: false
softwareTrigger: false
hfm_yr:
description: 'HFM Ring Y'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-HFM:TRYR'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- hfm
readOnly: false
softwareTrigger: false
hfm_ydw:
description: 'HFM Downstream Wall Y'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-HFM:TRYDW'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- hfm
readOnly: false
softwareTrigger: false
hfm_bu:
description: 'HFM Upstream Bender'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-HFM:BNDU'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- hfm
readOnly: false
softwareTrigger: false
hfm_bd:
description: 'HFM Downstream Bender'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-HFM:BNDD'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- hfm
readOnly: false
softwareTrigger: false
hfm_yaw:
description: 'HFM Virtual Yaw'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-HFM:YAW'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- hfm
readOnly: false
softwareTrigger: false
hfm_roll:
description: 'HFM Virtual Roll'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-HFM:ROLL'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- hfm
readOnly: false
softwareTrigger: false
hfm_pitch:
description: 'HFM Virtual Pitch'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-HFM:PITCH'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- hfm
readOnly: false
softwareTrigger: false
hfm_lat:
description: 'HFM Virtual X'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-HFM:TRX'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- hfm
readOnly: false
softwareTrigger: false
hfm_vert:
description: 'HFM Virtual Y '
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-HFM:TRY'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- hfm
readOnly: false
softwareTrigger: false

View File

@@ -0,0 +1,543 @@
sls_current:
description: SLS current
deviceClass: ophyd.EpicsSignalRO
deviceConfig: {read_pv: 'ARS07-DPCT-0100:CURR', auto_monitor: true}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- SLS
readOnly: true
softwareTrigger: false
gap:
description: 'U19 gap'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-UIND:GAP'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- SLS
readOnly: false
softwareTrigger: false
ps1_press:
description: Pumpstand1 pressure
deviceClass: ophyd.EpicsSignalRO
deviceConfig: {read_pv: 'X10SA-FE-PUM1-VPIG-1020:PRESSURE', auto_monitor: true}
onFailure: buffer
enabled: true
readoutPriority: monitored
deviceTags:
- fe
readOnly: true
softwareTrigger: false
#xbpm1_temp:
# description: XBPM1 temp
# deviceClass: ophyd.EpicsSignalRO
# deviceConfig: {read_pv: 'X10SA-FE-XBPM1-ETTC-0010:TEMP', auto_monitor: true}
# onFailure: buffer
# enabled: true
# readoutPriority: monitored
# deviceTags:
# - fe
# readOnly: true
# softwareTrigger: false
s1_xw:
description: 'BSF slit outboard'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-OP-SLH:TRXW'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- bsf
readOnly: false
softwareTrigger: false
s1_xr:
description: 'BSF slit inboard'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-OP-SLH:TRXR'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- bsf
readOnly: false
softwareTrigger: false
s1_yt:
description: 'BSF slit top'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-OP-SLV:TRYT'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- bsf
readOnly: false
softwareTrigger: false
s1_yb:
description: 'BSF slit bottom'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-OP-SLV:TRYB'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- bsf
readOnly: false
softwareTrigger: false
s1_xcen:
description: 'BSF X centre'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-OP-SLH:CENTER'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- bsf
readOnly: false
softwareTrigger: false
s1_xsize:
description: 'BSF X size'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-OP-SLH:SIZE'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- bsf
readOnly: false
softwareTrigger: false
s1_ycen:
description: 'BSF Y centre'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-OP-SLV:CENTER'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- bsf
readOnly: false
softwareTrigger: false
opf1_y:
description: 'BSF Filter 1 Y'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-OP-FI1:TRY'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- bsf
readOnly: false
softwareTrigger: false
opf2_y:
description: 'BSF Filter 2 Y'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-OP-FI2:TRY'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- bsf
readOnly: false
softwareTrigger: false
ssbpm_x:
description: 'SS BPM X'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-SSBPM1:TRX1'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- ss
readOnly: false
softwareTrigger: false
ssbpm_y:
description: 'SS BPM Y'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-SSBPM1:TRY1'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- ss
readOnly: false
softwareTrigger: false
s2_xw:
description: 'SS slit wall'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-SSSH1:TRXW'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- ss
readOnly: false
softwareTrigger: false
s2_xr:
description: 'SS slit ring'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-SSSH1:TRXR'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- ss
readOnly: false
softwareTrigger: false
s2_xcen:
description: 'SS slit X centre'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-SSSH1:CENTER'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- ss
readOnly: false
softwareTrigger: false
s2_xsize:
description: 'SS slit X size'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-SSSH1:CENTER'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- ss
readOnly: false
softwareTrigger: false
s2_yt:
description: 'SS slit top'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-SSSV1:TRYT'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- ss
readOnly: false
softwareTrigger: false
s2_yb:
description: 'SS slit bottom'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-SSSV1:TRYB'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- ss
readOnly: false
softwareTrigger: false
s2_ycen:
description: 'SS slit Y centre'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-SSSV1:CENTER'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- ss
readOnly: false
softwareTrigger: false
s2_ysize:
description: 'SS slit Y size'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-SSSV1:SIZE'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- ss
readOnly: false
softwareTrigger: false
xeye_x:
description: 'SS X-ray eye X'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-SSXI1:TRX1'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- ss
readOnly: false
softwareTrigger: false
xeye_y:
description: 'SS X-ray eye Y'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-SSXI1:TRY1'}
onFailure: buffer
enabled: True
readoutPriority: monitored
deviceTags:
- ss
readOnly: false
softwareTrigger: false
vfm_xu:
description: 'VFM Upstream X'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-VFM:TRXU'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- vfm
readOnly: false
softwareTrigger: false
vfm_xd:
description: 'VFM Downstream X'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-VFM:TRXD'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- vfm
readOnly: false
softwareTrigger: false
vfm_yur:
description: 'VFM Upstream Ring Y'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-VFM:TRYUR'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- vfm
readOnly: false
softwareTrigger: false
vfm_yw:
description: 'VFM Wall Y'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-VFM:TRYW'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- vfm
readOnly: false
softwareTrigger: false
vfm_ydr:
description: 'VFM Downstream Ring Y'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-VFM:TRYDR'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- vfm
readOnly: false
softwareTrigger: false
vfm_bu:
description: 'VFM Upstream Bender'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-VFM:BNDU'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- vfm
readOnly: false
softwareTrigger: false
vfm_bd:
description: 'VFM Downstream Bender'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-VFM:BNDD'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- vfm
readOnly: false
softwareTrigger: false
vfm_yaw:
description: 'VFM Virtual Yaw'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-VFM:YAW'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- vfm
readOnly: false
softwareTrigger: false
vfm_roll:
description: 'VFM Virtual Roll'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-VFM:ROLL'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- vfm
readOnly: false
softwareTrigger: false
vfm_pitch:
description: 'VFM Virtual Pitch'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-VFM:PITCH'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- vfm
readOnly: false
softwareTrigger: false
vfm_lat:
description: 'VFM Virtual X'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-VFM:TRX'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- vfm
readOnly: false
softwareTrigger: false
vfm_vert:
description: 'VFM Virtual Y '
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-VFM:TRY'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- vfm
readOnly: false
softwareTrigger: false
hfm_xu:
description: 'HFM Upstream X'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-HFM:TRXU'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- hfm
readOnly: false
softwareTrigger: false
hfm_xd:
description: 'HFM Downstream X'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-HFM:TRXD'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- hfm
readOnly: false
softwareTrigger: false
hfm_yuw:
description: 'HFM Upstream Wall Y'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-HFM:TRYUW'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- hfm
readOnly: false
softwareTrigger: false
hfm_yr:
description: 'HFM Ring Y'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-HFM:TRYR'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- hfm
readOnly: false
softwareTrigger: false
hfm_ydw:
description: 'HFM Downstream Wall Y'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-HFM:TRYDW'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- hfm
readOnly: false
softwareTrigger: false
hfm_bu:
description: 'HFM Upstream Bender'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-HFM:BNDU'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- hfm
readOnly: false
softwareTrigger: false
hfm_bd:
description: 'HFM Downstream Bender'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-HFM:BNDD'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- hfm
readOnly: false
softwareTrigger: false
hfm_yaw:
description: 'HFM Virtual Yaw'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-HFM:YAW'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- hfm
readOnly: false
softwareTrigger: false
hfm_roll:
description: 'HFM Virtual Roll'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-HFM:ROLL'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- hfm
readOnly: false
softwareTrigger: false
hfm_pitch:
description: 'HFM Virtual Pitch'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-HFM:PITCH'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- hfm
readOnly: false
softwareTrigger: false
hfm_lat:
description: 'HFM Virtual X'
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-HFM:TRX'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- hfm
readOnly: false
softwareTrigger: false
hfm_vert:
description: 'HFM Virtual Y '
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X10SA-ES-HFM:TRY'}
onFailure: buffer
enabled: False
readoutPriority: monitored
deviceTags:
- hfm
readOnly: false
softwareTrigger: false

View File

@@ -0,0 +1,150 @@
Checking sls_current...
OK
Checking ps1_press...
OK
Checking abs_press...
OK
Checking lu_bpmsum...
OK
Checking ss_bpmsum...
OK
Checking ps3_press...
OK
Checking bsf_press...
OK
Checking bb1_press...
OK
Checking dcm_press...
OK
Checking bb2_press...
OK
Checking lu_press...
OK
Checking ps2_press...
OK
Checking ss_press...
OK
Checking kb_press...
OK
Checking bcu_press...
OK
Checking fe_sxr...
OK
Checking fe_syt...
OK
Checking fe_sxw...
OK
Checking fe_syb...
OK
Checking fe_sxcen...
OK
Checking fe_sxsize...
OK
Checking fe_sycen...
OK
Checking fe_sysize...
OK
Checking s1_xw...
OK
Checking s1_xr...
OK
Checking s1_yt...
OK
Checking s1_yb...
OK
Checking s1_xcen...
OK
Checking s1_xsize...
OK
Checking s1_ycen...
OK
Checking opf1_y...
OK
Checking opf2_y...
OK
Checking dcm_bragg...
OK
Checking dcm_x...
OK
Checking dcm_perp...
OK
Checking dcm_pitch...
OK
Checking ssbpm_x...
OK
Checking ssbpm_y...
OK
Checking s2_xw...
OK
Checking s2_xr...
OK
Checking s2_xcen...
OK
Checking s2_xsize...
OK
Checking s2_yt...
OK
Checking s2_yb...
OK
Checking s2_ycen...
OK
Checking s2_ysize...
OK
Checking xeye_x...
OK
Checking xeye_y...
OK
Checking vfm_xu...
OK
Checking vfm_xd...
OK
Checking vfm_yur...
OK
Checking vfm_yw...
OK
Checking vfm_ydr...
OK
Checking vfm_bu...
OK
Checking vfm_bd...
OK
Checking vfm_yaw...
OK
Checking vfm_roll...
OK
Checking vfm_pitch...
OK
Checking vfm_lat...
OK
Checking vfm_vert...
OK
Checking hfm_xu...
OK
Checking hfm_xd...
OK
Checking hfm_yuw...
OK
Checking hfm_yr...
OK
Checking hfm_ydw...
OK
Checking hfm_bu...
OK
Checking hfm_bd...
OK
Checking hfm_yaw...
OK
Checking hfm_roll...
OK
Checking hfm_pitch...
OK
Checking hfm_lat...
OK
Checking hfm_vert...
OK
========================================
Summary:
All devices passed the test.

View File

@@ -0,0 +1,118 @@
Checking sls_current...
OK
Checking ps1_press...
OK
Checking fes_press...
OK
Checking fe_sxr...
OK
Checking fe_syt...
OK
Checking fe_sxw...
OK
Checking fe_syb...
OK
Checking fe_sxcen...
OK
Checking fe_sxsize...
OK
Checking fe_sycen...
OK
Checking fe_sysize...
OK
Checking s1_xw...
OK
Checking s1_xr...
OK
Checking s1_yt...
OK
Checking s1_yb...
OK
Checking s1_xcen...
OK
Checking s1_xsize...
OK
Checking s1_ycen...
OK
Checking opf1_y...
OK
Checking opf2_y...
OK
Checking ssbpm_x...
OK
Checking ssbpm_y...
OK
Checking s2_xw...
OK
Checking s2_xr...
OK
Checking s2_xcen...
OK
Checking s2_xsize...
OK
Checking s2_yt...
OK
Checking s2_yb...
OK
Checking s2_ycen...
OK
Checking s2_ysize...
OK
Checking xeye_x...
OK
Checking xeye_y...
OK
Checking vfm_xu...
OK
Checking vfm_xd...
OK
Checking vfm_yur...
OK
Checking vfm_yw...
OK
Checking vfm_ydr...
OK
Checking vfm_bu...
OK
Checking vfm_bd...
OK
Checking vfm_yaw...
OK
Checking vfm_roll...
OK
Checking vfm_pitch...
OK
Checking vfm_lat...
OK
Checking vfm_vert...
OK
Checking hfm_xu...
OK
Checking hfm_xd...
OK
Checking hfm_yuw...
OK
Checking hfm_yr...
OK
Checking hfm_ydw...
OK
Checking hfm_bu...
OK
Checking hfm_bd...
OK
Checking hfm_yaw...
OK
Checking hfm_roll...
OK
Checking hfm_pitch...
OK
Checking hfm_lat...
OK
Checking hfm_vert...
OK
========================================
Summary:
All devices passed the test.

View File

@@ -0,0 +1,13 @@
base_config:
- !include ./device_config.yaml
id_gap:
readoutPriority: baseline
description: undulator gap
deviceClass: pxii_bec.devices.undulator.UndulatorGap
deviceConfig:
prefix: 'X10SA-UIND:'
onFailure: buffer
enabled: true
readOnly: false
softwareTrigger: false

View File

@@ -0,0 +1,58 @@
from ophyd.device import Component as Cpt
from ophyd.status import MoveStatus
from ophyd import EpicsSignal, EpicsSignalRO, PVPositioner
class UndulatorGap(PVPositioner):
"""
SLS Undulator gap control
"""
setpoint = Cpt(EpicsSignal, suffix="GAP-SP")
readback = Cpt(EpicsSignal, suffix="GAP-RBV", kind="hinted", auto_monitor=True)
stop_signal = Cpt(EpicsSignal, suffix="STOP")
done = Cpt(EpicsSignal, suffix="DONE", auto_monitor=True)
select_control = Cpt(EpicsSignalRO, suffix="SCTRL", auto_monitor=True)
def __init__(
self,
prefix="",
*,
limits=None,
name=None,
read_attrs=None,
configuration_attrs=None,
parent=None,
egu="",
**kwargs,
):
super().__init__(
prefix=prefix,
limits=limits,
name=name,
read_attrs=read_attrs,
configuration_attrs=configuration_attrs,
parent=parent,
egu=egu,
**kwargs,
)
# Make the default alias for the user_readback the name of the
# motor itself.
self.readback.name = self.name
def move(self, position, wait=True, timeout=None, moved_cb=None):
# If it is operator controlled, undulator will not move.
if self.select_control.get() == 0:
raise Exception("Undulator is operator controlled!")
# If it is already there, undulator will not move. The done flag
# will not change, the moving change callback will not be called.
# The status will not change.
if abs(position - self._position) < 0.0008:
status = MoveStatus(self, position, done=True, success=True)
return status
return super().move(position, wait=wait, timeout=timeout, moved_cb=moved_cb)