Changing all signals to AcsSignals

This commit is contained in:
x01da
2026-08-18 07:49:47 +02:00
parent 5eab54edca
commit 5ae32d58d3
3 changed files with 293 additions and 162 deletions
+10 -4
View File
@@ -3,16 +3,22 @@
from ophyd import Component as Cpt
from ophyd import EpicsSignalRO, EpicsSignalWithRBV
from debye_bec.devices.mo1_bragg.acs import AcsSignal, AcsSignalRO
from debye_bec.devices.mo1_bragg.mo1_bragg_devices import Mo1BraggPositioner
class Mo1BraggAngle(Mo1BraggPositioner):
"""Positioner implementation with readback angle of the MO1 Bragg positioner."""
readback = Cpt(EpicsSignalRO, suffix="feedback_pos_angle_RBV", kind="normal", auto_monitor=True)
setpoint = Cpt(EpicsSignalWithRBV, suffix="set_abs_pos_angle", kind="normal", auto_monitor=True)
low_lim = Cpt(EpicsSignalRO, suffix="lo_lim_pos_angle_RBV", kind="config", auto_monitor=True)
high_lim = Cpt(EpicsSignalRO, suffix="hi_lim_pos_angle_RBV", kind="config", auto_monitor=True)
# readback = Cpt(EpicsSignalRO, suffix="feedback_pos_angle_RBV", kind="normal", auto_monitor=True)
# setpoint = Cpt(EpicsSignalWithRBV, suffix="set_abs_pos_angle", kind="normal", auto_monitor=True)
# low_lim = Cpt(EpicsSignalRO, suffix="lo_lim_pos_angle_RBV", kind="config", auto_monitor=True)
# high_lim = Cpt(EpicsSignalRO, suffix="hi_lim_pos_angle_RBV", kind="config", auto_monitor=True)
readback = Cpt(AcsSignalRO, tag=51503, prec=6, kind="omitted")
setpoint = Cpt(AcsSignal, tag=51501, prec=6, kind="omitted")
low_lim = Cpt(AcsSignalRO, tag=51505, prec=1, kind="omitted")
high_lim = Cpt(AcsSignalRO, tag=51504, prec=1, kind="omitted")
@property
def egu(self) -> str:
+269 -158
View File
@@ -24,7 +24,17 @@ from ophyd_devices.utils.socket import SocketIO
# from debye_bec.devices.mo1_bragg.acs_controller import ACSSignal
from debye_bec.devices.mo1_bragg.acs import ACSController, AcsSignal, AcsSignalRO
from debye_bec.devices.mo1_bragg.mo1_bragg_enums import MoveType, Xtal
from debye_bec.devices.mo1_bragg.mo1_bragg_enums import (
MoveType,
ScanControlLoadMessage,
ScanControlMode,
ScanControlScanStatus,
TriggerControlMode,
TriggerControlSource,
TriggerEnable,
TriggerSelectReference,
Xtal,
)
# Initialise logger
logger = bec_logger.logger
@@ -60,87 +70,112 @@ class MoveTypeSignal(Signal):
class Mo1BraggStatus(Device):
"""Mo1 Bragg PVs for status monitoring"""
error_status = Cpt(EpicsSignalRO, suffix="error_status_RBV", kind="config", auto_monitor=True)
brake_enabled = Cpt(EpicsSignalRO, suffix="brake_enabled_RBV", kind="config", auto_monitor=True)
mot_commutated = Cpt(
EpicsSignalRO, suffix="mot_commutated_RBV", kind="config", auto_monitor=True
)
axis_enabled = Cpt(EpicsSignalRO, suffix="axis_enabled_RBV", kind="config", auto_monitor=True)
enc_initialized = Cpt(
EpicsSignalRO, suffix="enc_initialized_RBV", kind="config", auto_monitor=True
)
# kind="omitted": the heartbeat ticks continuously, and any auto-monitored
# config-kind signal update makes the device server re-read the full device
# configuration (incl. the ACS socket signals) on every tick
heartbeat = Cpt(EpicsSignalRO, suffix="heartbeat_RBV", kind="omitted", auto_monitor=True)
# error_status = Cpt(EpicsSignalRO, suffix="error_status_RBV", kind="config", auto_monitor=True)
# brake_enabled = Cpt(EpicsSignalRO, suffix="brake_enabled_RBV", kind="config", auto_monitor=True)
# mot_commutated = Cpt(
# EpicsSignalRO, suffix="mot_commutated_RBV", kind="config", auto_monitor=True
# )
# axis_enabled = Cpt(EpicsSignalRO, suffix="axis_enabled_RBV", kind="config", auto_monitor=True)
# enc_initialized = Cpt(
# EpicsSignalRO, suffix="enc_initialized_RBV", kind="config", auto_monitor=True
# )
# # kind="omitted": the heartbeat ticks continuously, and any auto-monitored
# # config-kind signal update makes the device server re-read the full device
# # configuration (incl. the ACS socket signals) on every tick
# heartbeat = Cpt(EpicsSignalRO, suffix="heartbeat_RBV", kind="omitted", auto_monitor=True)
error_status = Cpt(AcsSignalRO, tag=10000, prec=0, kind="config")
brake_enabled = Cpt(AcsSignalRO, tag=10001, prec=0, kind="omitted")
mot_commutated = Cpt(AcsSignalRO, tag=10002, prec=0, kind="omitted")
axis_enabled = Cpt(AcsSignalRO, tag=10003, prec=0, kind="omitted")
enc_initialized = Cpt(AcsSignalRO, tag=10004, prec=0, kind="omitted")
heartbeat = Cpt(AcsSignalRO, tag=10005, prec=0, kind="omitted")
class Mo1BraggEncoder(Device):
"""Mo1 Bragg PVs to communicate with the encoder"""
enc_reinit = Cpt(EpicsSignal, suffix="enc_reinit", kind="config")
enc_reinit_done = Cpt(EpicsSignalRO, suffix="enc_reinit_done_RBV", kind="config")
# enc_reinit = Cpt(EpicsSignal, suffix="enc_reinit", kind="config")
# enc_reinit_done = Cpt(EpicsSignalRO, suffix="enc_reinit_done_RBV", kind="config")
enc_reinit = Cpt(AcsSignal, tag=11000, prec=0, kind="omitted")
enc_reinit_done = Cpt(AcsSignalRO, tag=11001, prec=0, kind="config")
class Mo1BraggCrystal(Device):
"""Mo1 Bragg PVs to set the crystal parameters"""
bragg_off_si111 = Cpt(EpicsSignalWithRBV, suffix="bragg_off_si111", kind="config")
bragg_off_si311 = Cpt(EpicsSignalWithRBV, suffix="bragg_off_si311", kind="config")
phi_off_si111 = Cpt(EpicsSignalWithRBV, suffix="phi_off_si111", kind="config")
phi_off_si311 = Cpt(EpicsSignalWithRBV, suffix="phi_off_si311", kind="config")
azm_off_si111 = Cpt(EpicsSignalWithRBV, suffix="azm_off_si111", kind="config")
azm_off_si311 = Cpt(EpicsSignalWithRBV, suffix="azm_off_si311", kind="config")
miscut_si111 = Cpt(EpicsSignalWithRBV, suffix="miscut_si111", kind="config")
miscut_si311 = Cpt(EpicsSignalWithRBV, suffix="miscut_si311", kind="config")
xtal_enum = Cpt(EpicsSignalWithRBV, suffix="xtal_ENUM", kind="config")
d_spacing_si111 = Cpt(EpicsSignalWithRBV, suffix="d_spacing_si111", kind="config")
d_spacing_si311 = Cpt(EpicsSignalWithRBV, suffix="d_spacing_si311", kind="config")
set_offset = Cpt(EpicsSignal, suffix="set_offset", kind="config", put_complete=True)
current_d_spacing = Cpt(
EpicsSignalRO, suffix="current_d_spacing_RBV", kind="normal", auto_monitor=True
)
current_bragg_off = Cpt(
EpicsSignalRO, suffix="current_bragg_off_RBV", kind="normal", auto_monitor=True
)
current_phi_off = Cpt(
EpicsSignalRO, suffix="current_phi_off_RBV", kind="normal", auto_monitor=True
)
current_azm_off = Cpt(
EpicsSignalRO, suffix="current_azm_off_RBV", kind="normal", auto_monitor=True
)
current_miscut = Cpt(
EpicsSignalRO, suffix="current_miscut_RBV", kind="normal", auto_monitor=True
)
current_xtal = Cpt(
EpicsSignalRO, suffix="current_xtal_ENUM_RBV", kind="normal", auto_monitor=True
)
current_xtal_string = Cpt(
EpicsSignalRO, suffix="current_xtal_ENUM_RBV", kind="normal", auto_monitor=True, string=True
)
# current_xtal_string = Cpt(
# AcsSignalRO, tag=10501, prec=0, enum=Xtal, kind="normal", auto_monitor=True
# bragg_off_si111 = Cpt(EpicsSignalWithRBV, suffix="bragg_off_si111", kind="config")
# bragg_off_si311 = Cpt(EpicsSignalWithRBV, suffix="bragg_off_si311", kind="config")
# phi_off_si111 = Cpt(EpicsSignalWithRBV, suffix="phi_off_si111", kind="config")
# phi_off_si311 = Cpt(EpicsSignalWithRBV, suffix="phi_off_si311", kind="config")
# azm_off_si111 = Cpt(EpicsSignalWithRBV, suffix="azm_off_si111", kind="config")
# azm_off_si311 = Cpt(EpicsSignalWithRBV, suffix="azm_off_si311", kind="config")
# miscut_si111 = Cpt(EpicsSignalWithRBV, suffix="miscut_si111", kind="config")
# miscut_si311 = Cpt(EpicsSignalWithRBV, suffix="miscut_si311", kind="config")
# xtal_enum = Cpt(EpicsSignalWithRBV, suffix="xtal_ENUM", kind="config")
# d_spacing_si111 = Cpt(EpicsSignalWithRBV, suffix="d_spacing_si111", kind="config")
# d_spacing_si311 = Cpt(EpicsSignalWithRBV, suffix="d_spacing_si311", kind="config")
# set_offset = Cpt(EpicsSignal, suffix="set_offset", kind="config", put_complete=True)
# current_d_spacing = Cpt(
# EpicsSignalRO, suffix="current_d_spacing_RBV", kind="normal", auto_monitor=True
# )
# current_bragg_off = Cpt(
# EpicsSignalRO, suffix="current_bragg_off_RBV", kind="normal", auto_monitor=True
# )
# current_phi_off = Cpt(
# EpicsSignalRO, suffix="current_phi_off_RBV", kind="normal", auto_monitor=True
# )
# current_azm_off = Cpt(
# EpicsSignalRO, suffix="current_azm_off_RBV", kind="normal", auto_monitor=True
# )
# current_miscut = Cpt(
# EpicsSignalRO, suffix="current_miscut_RBV", kind="normal", auto_monitor=True
# )
# current_xtal = Cpt(
# EpicsSignalRO, suffix="current_xtal_ENUM_RBV", kind="normal", auto_monitor=True
# )
# current_xtal_string = Cpt(
# EpicsSignalRO, suffix="current_xtal_ENUM_RBV", kind="normal", auto_monitor=True, string=True
# )
bragg_off_si111 = Cpt(AcsSignal, tag=50500, prec=12, kind="config")
bragg_off_si311 = Cpt(AcsSignal, tag=50501, prec=12, kind="config")
phi_off_si111 = Cpt(AcsSignal, tag=50507, prec=12, kind="config")
phi_off_si311 = Cpt(AcsSignal, tag=50508, prec=12, kind="config")
azm_off_si111 = Cpt(AcsSignal, tag=50510, prec=12, kind="config")
azm_off_si311 = Cpt(AcsSignal, tag=50511, prec=12, kind="config")
miscut_si111 = Cpt(AcsSignal, tag=50513, prec=12, kind="config")
miscut_si311 = Cpt(AcsSignal, tag=50514, prec=12, kind="config")
d_spacing_si111 = Cpt(AcsSignal, tag=50000, prec=12, kind="config")
d_spacing_si311 = Cpt(AcsSignal, tag=50001, prec=12, kind="config")
current_d_spacing = Cpt(AcsSignalRO, tag=50503, prec=12, kind="config")
current_bragg_off = Cpt(AcsSignalRO, tag=50504, prec=12, kind="config")
current_phi_off = Cpt(AcsSignalRO, tag=50509, prec=12, kind="config")
current_azm_off = Cpt(AcsSignalRO, tag=50512, prec=12, kind="config")
current_miscut = Cpt(AcsSignalRO, tag=50515, prec=12, kind="config")
current_xtal = Cpt(AcsSignalRO, tag=10501, prec=0, kind="config")
current_xtal_string = Cpt(AcsSignalRO, tag=10501, prec=0, enum=Xtal, kind="normal")
class Mo1BraggScanSettings(Device):
"""Mo1 Bragg PVs to set the scan setttings"""
# TRIG settings
trig_select_ref_enum = Cpt(EpicsSignalWithRBV, suffix="trig_select_ref_ENUM", kind="config")
# trig_select_ref_enum = Cpt(EpicsSignalWithRBV, suffix="trig_select_ref_ENUM", kind="config")
trig_ena_hi_enum = Cpt(EpicsSignalWithRBV, suffix="trig_ena_hi_ENUM", kind="config")
trig_time_hi = Cpt(EpicsSignalWithRBV, suffix="trig_time_hi", kind="config")
trig_every_n_hi = Cpt(EpicsSignalWithRBV, suffix="trig_every_n_hi", kind="config")
# trig_ena_hi_enum = Cpt(EpicsSignalWithRBV, suffix="trig_ena_hi_ENUM", kind="config")
# trig_time_hi = Cpt(EpicsSignalWithRBV, suffix="trig_time_hi", kind="config")
# trig_every_n_hi = Cpt(EpicsSignalWithRBV, suffix="trig_every_n_hi", kind="config")
trig_ena_lo_enum = Cpt(EpicsSignalWithRBV, suffix="trig_ena_lo_ENUM", kind="config")
trig_time_lo = Cpt(EpicsSignalWithRBV, suffix="trig_time_lo", kind="config")
trig_every_n_lo = Cpt(EpicsSignalWithRBV, suffix="trig_every_n_lo", kind="config")
# trig_ena_lo_enum = Cpt(EpicsSignalWithRBV, suffix="trig_ena_lo_ENUM", kind="config")
# trig_time_lo = Cpt(EpicsSignalWithRBV, suffix="trig_time_lo", kind="config")
# trig_every_n_lo = Cpt(EpicsSignalWithRBV, suffix="trig_every_n_lo", kind="config")
# XAS simple scan settings
s_scan_angle_hi = Cpt(EpicsSignalWithRBV, suffix="s_scan_angle_hi", kind="config")
s_scan_angle_lo = Cpt(EpicsSignalWithRBV, suffix="s_scan_angle_lo", kind="config")
# # XAS simple scan settings
# s_scan_angle_hi = Cpt(EpicsSignalWithRBV, suffix="s_scan_angle_hi", kind="config")
# s_scan_angle_lo = Cpt(EpicsSignalWithRBV, suffix="s_scan_angle_lo", kind="config")
# s_scan_energy_lo = Cpt(
# EpicsSignalWithRBV, suffix="s_scan_energy_lo", kind="config", auto_monitor=True
# )
@@ -151,110 +186,179 @@ class Mo1BraggScanSettings(Device):
# EpicsSignalWithRBV, suffix="s_scan_scantime", kind="config", auto_monitor=True
# )
# XAS advanced scan settings
# a_scan_pos = Cpt(EpicsSignalWithRBV, suffix="a_scan_pos", kind="config", auto_monitor=False)
# a_scan_vel = Cpt(EpicsSignalWithRBV, suffix="a_scan_vel", kind="config", auto_monitor=False)
# a_scan_time = Cpt(EpicsSignalWithRBV, suffix="a_scan_time", kind="config", auto_monitor=False)
# kind="omitted": these live on the ACS controller and are written by the scan at
# stage time, which also records them in scan_info — so nothing is lost by keeping
# them out of read_configuration(), and no passive device-server read path ever
# touches the socket. cache_ttl still guards explicit reads; put() drops the cache.
s_scan_energy_lo = Cpt(
AcsSignal, tag=53003, prec=6, kind="omitted", auto_monitor=False, cache_ttl=30.0
)
s_scan_energy_hi = Cpt(
AcsSignal, tag=53004, prec=6, kind="omitted", auto_monitor=False, cache_ttl=30.0
)
s_scan_scantime = Cpt(
AcsSignal, tag=53002, prec=3, kind="omitted", auto_monitor=False, cache_ttl=30.0
trig_select_ref_enum = Cpt(
AcsSignal, tag=12504, prec=0, enum=TriggerSelectReference, kind="config"
)
# XAS advanced scan settings
a_scan_pos = Cpt(EpicsSignalWithRBV, suffix="a_scan_pos", kind="config", auto_monitor=False)
a_scan_vel = Cpt(EpicsSignalWithRBV, suffix="a_scan_vel", kind="config", auto_monitor=False)
a_scan_time = Cpt(EpicsSignalWithRBV, suffix="a_scan_time", kind="config", auto_monitor=False)
trig_ena_hi_enum = Cpt(AcsSignal, tag=12501, prec=0, enum=TriggerEnable, kind="config")
trig_time_hi = Cpt(AcsSignal, tag=52501, prec=3, kind="config")
trig_every_n_hi = Cpt(AcsSignal, tag=12503, prec=0, kind="config")
# a_scan_pos = Cpt(AcsSignal, tag=53500, prec=6, num_el=41, kind="omitted")
# a_scan_vel = Cpt(AcsSignal, tag=53501, prec=6, num_el=41, kind="omitted")
# a_scan_time = Cpt(AcsSignal, tag=53502, prec=6, num_el=41, kind="omitted")
trig_ena_lo_enum = Cpt(AcsSignal, tag=12500, prec=0, enum=TriggerEnable, kind="config")
trig_time_lo = Cpt(AcsSignal, tag=52500, prec=3, kind="config")
trig_every_n_lo = Cpt(AcsSignal, tag=12502, prec=0, kind="config")
s_scan_angle_hi = Cpt(AcsSignal, tag=53001, prec=6, kind="omitted")
s_scan_angle_lo = Cpt(AcsSignal, tag=53000, prec=6, kind="omitted")
s_scan_energy_lo = Cpt(AcsSignal, tag=53003, prec=6, kind="config")
s_scan_energy_hi = Cpt(AcsSignal, tag=53004, prec=6, kind="config")
s_scan_scantime = Cpt(AcsSignal, tag=53002, prec=3, kind="config")
a_scan_pos = Cpt(AcsSignal, tag=53500, prec=6, num_el=41, kind="config")
a_scan_vel = Cpt(AcsSignal, tag=53501, prec=6, num_el=41, kind="config")
a_scan_time = Cpt(AcsSignal, tag=53502, prec=6, num_el=41, kind="config")
class Mo1TriggerSettings(Device):
"""Mo1 Trigger settings"""
settle_time = Cpt(EpicsSignalWithRBV, suffix="settle_time", kind="config")
max_dev = Cpt(EpicsSignalWithRBV, suffix="max_dev", kind="config")
# settle_time = Cpt(EpicsSignalWithRBV, suffix="settle_time", kind="config")
# max_dev = Cpt(EpicsSignalWithRBV, suffix="max_dev", kind="config")
xrd_trig_src_enum = Cpt(EpicsSignalWithRBV, suffix="xrd_trig_src_ENUM", kind="config")
xrd_trig_mode_enum = Cpt(EpicsSignalWithRBV, suffix="xrd_trig_mode_ENUM", kind="config")
xrd_trig_len = Cpt(EpicsSignalWithRBV, suffix="xrd_trig_len", kind="config")
xrd_trig_period = Cpt(EpicsSignalWithRBV, suffix="xrd_trig_period", kind="config")
xrd_n_of_trig = Cpt(EpicsSignalWithRBV, suffix="xrd_n_of_trig", kind="config")
xrd_trig_req = Cpt(EpicsSignal, suffix="xrd_trig_req", kind="config")
# xrd_trig_src_enum = Cpt(EpicsSignalWithRBV, suffix="xrd_trig_src_ENUM", kind="config")
# xrd_trig_mode_enum = Cpt(EpicsSignalWithRBV, suffix="xrd_trig_mode_ENUM", kind="config")
# xrd_trig_len = Cpt(EpicsSignalWithRBV, suffix="xrd_trig_len", kind="config")
# xrd_trig_period = Cpt(EpicsSignalWithRBV, suffix="xrd_trig_period", kind="config")
# xrd_n_of_trig = Cpt(EpicsSignalWithRBV, suffix="xrd_n_of_trig", kind="config")
# xrd_trig_req = Cpt(EpicsSignal, suffix="xrd_trig_req", kind="config")
falcon_trig_src_enum = Cpt(EpicsSignalWithRBV, suffix="falcon_trig_src_ENUM", kind="config")
falcon_trig_mode_enum = Cpt(EpicsSignalWithRBV, suffix="falcon_trig_mode_ENUM", kind="config")
falcon_trig_len = Cpt(EpicsSignalWithRBV, suffix="falcon_trig_len", kind="config")
falcon_trig_period = Cpt(EpicsSignalWithRBV, suffix="falcon_trig_period", kind="config")
falcon_n_of_trig = Cpt(EpicsSignalWithRBV, suffix="falcon_n_of_trig", kind="config")
falcon_trig_req = Cpt(EpicsSignal, suffix="falcon_trig_req", kind="config")
# falcon_trig_src_enum = Cpt(EpicsSignalWithRBV, suffix="falcon_trig_src_ENUM", kind="config")
# falcon_trig_mode_enum = Cpt(EpicsSignalWithRBV, suffix="falcon_trig_mode_ENUM", kind="config")
# falcon_trig_len = Cpt(EpicsSignalWithRBV, suffix="falcon_trig_len", kind="config")
# falcon_trig_period = Cpt(EpicsSignalWithRBV, suffix="falcon_trig_period", kind="config")
# falcon_n_of_trig = Cpt(EpicsSignalWithRBV, suffix="falcon_n_of_trig", kind="config")
# falcon_trig_req = Cpt(EpicsSignal, suffix="falcon_trig_req", kind="config")
univ1_trig_src_enum = Cpt(EpicsSignalWithRBV, suffix="univ1_trig_src_ENUM", kind="config")
univ1_trig_mode_enum = Cpt(EpicsSignalWithRBV, suffix="univ1_trig_mode_ENUM", kind="config")
univ1_trig_len = Cpt(EpicsSignalWithRBV, suffix="univ1_trig_len", kind="config")
univ1_trig_period = Cpt(EpicsSignalWithRBV, suffix="univ1_trig_period", kind="config")
univ1_n_of_trig = Cpt(EpicsSignalWithRBV, suffix="univ1_n_of_trig", kind="config")
univ1_trig_req = Cpt(EpicsSignal, suffix="univ1_trig_req", kind="config")
# univ1_trig_src_enum = Cpt(EpicsSignalWithRBV, suffix="univ1_trig_src_ENUM", kind="config")
# univ1_trig_mode_enum = Cpt(EpicsSignalWithRBV, suffix="univ1_trig_mode_ENUM", kind="config")
# univ1_trig_len = Cpt(EpicsSignalWithRBV, suffix="univ1_trig_len", kind="config")
# univ1_trig_period = Cpt(EpicsSignalWithRBV, suffix="univ1_trig_period", kind="config")
# univ1_n_of_trig = Cpt(EpicsSignalWithRBV, suffix="univ1_n_of_trig", kind="config")
# univ1_trig_req = Cpt(EpicsSignal, suffix="univ1_trig_req", kind="config")
univ2_trig_src_enum = Cpt(EpicsSignalWithRBV, suffix="univ2_trig_src_ENUM", kind="config")
univ2_trig_mode_enum = Cpt(EpicsSignalWithRBV, suffix="univ2_trig_mode_ENUM", kind="config")
univ2_trig_len = Cpt(EpicsSignalWithRBV, suffix="univ2_trig_len", kind="config")
univ2_trig_period = Cpt(EpicsSignalWithRBV, suffix="univ2_trig_period", kind="config")
univ2_n_of_trig = Cpt(EpicsSignalWithRBV, suffix="univ2_n_of_trig", kind="config")
univ2_trig_req = Cpt(EpicsSignal, suffix="univ2_trig_req", kind="config")
# univ2_trig_src_enum = Cpt(EpicsSignalWithRBV, suffix="univ2_trig_src_ENUM", kind="config")
# univ2_trig_mode_enum = Cpt(EpicsSignalWithRBV, suffix="univ2_trig_mode_ENUM", kind="config")
# univ2_trig_len = Cpt(EpicsSignalWithRBV, suffix="univ2_trig_len", kind="config")
# univ2_trig_period = Cpt(EpicsSignalWithRBV, suffix="univ2_trig_period", kind="config")
# univ2_n_of_trig = Cpt(EpicsSignalWithRBV, suffix="univ2_n_of_trig", kind="config")
# univ2_trig_req = Cpt(EpicsSignal, suffix="univ2_trig_req", kind="config")
settle_time = Cpt(AcsSignal, tag=55000, prec=3, kind="config")
max_dev = Cpt(AcsSignal, tag=55001, prec=6, kind="config")
xrd_trig_src_enum = Cpt(AcsSignal, tag=14501, prec=0, enum=TriggerControlSource, kind="config")
xrd_trig_mode_enum = Cpt(AcsSignal, tag=14502, prec=0, enum=TriggerControlMode, kind="config")
xrd_trig_len = Cpt(AcsSignal, tag=54500, prec=3, kind="config")
xrd_trig_period = Cpt(AcsSignal, tag=54504, prec=3, kind="config")
xrd_n_of_trig = Cpt(AcsSignal, tag=14512, prec=0, kind="config")
xrd_trig_req = Cpt(AcsSignal, tag=14500, prec=0, kind="config")
falcon_trig_src_enum = Cpt(
AcsSignal, tag=14504, prec=0, enum=TriggerControlSource, kind="config"
)
falcon_trig_mode_enum = Cpt(
AcsSignal, tag=14505, prec=0, enum=TriggerControlMode, kind="config"
)
falcon_trig_len = Cpt(AcsSignal, tag=54501, prec=3, kind="config")
falcon_trig_period = Cpt(AcsSignal, tag=54505, prec=3, kind="config")
falcon_n_of_trig = Cpt(AcsSignal, tag=14513, prec=0, kind="config")
falcon_trig_req = Cpt(AcsSignal, tag=14503, prec=0, kind="config")
univ1_trig_src_enum = Cpt(
AcsSignal, tag=14507, prec=0, enum=TriggerControlSource, kind="config"
)
univ1_trig_mode_enum = Cpt(AcsSignal, tag=14508, prec=0, enum=TriggerControlMode, kind="config")
univ1_trig_len = Cpt(AcsSignal, tag=54502, prec=3, kind="config")
univ1_trig_period = Cpt(AcsSignal, tag=54506, prec=3, kind="config")
univ1_n_of_trig = Cpt(AcsSignal, tag=14514, prec=0, kind="config")
univ1_trig_req = Cpt(AcsSignal, tag=14506, prec=0, kind="config")
univ2_trig_src_enum = Cpt(
AcsSignal, tag=14510, prec=0, enum=TriggerControlSource, kind="config"
)
univ2_trig_mode_enum = Cpt(AcsSignal, tag=14511, prec=0, enum=TriggerControlMode, kind="config")
univ2_trig_len = Cpt(AcsSignal, tag=54503, prec=3, kind="config")
univ2_trig_period = Cpt(AcsSignal, tag=54507, prec=3, kind="config")
univ2_n_of_trig = Cpt(AcsSignal, tag=14515, prec=0, kind="config")
univ2_trig_req = Cpt(AcsSignal, tag=14509, prec=0, kind="config")
class Mo1BraggCalculator(Device):
"""Mo1 Bragg PVs to convert angle to energy or vice-versa."""
calc_reset = Cpt(EpicsSignalWithRBV, suffix="calc_reset", kind="config", put_complete=True)
calc_done = Cpt(EpicsSignalRO, suffix="calc_done_RBV", kind="config")
calc_energy = Cpt(EpicsSignalWithRBV, suffix="calc_energy", kind="config")
calc_angle = Cpt(EpicsSignalWithRBV, suffix="calc_angle", kind="config")
# calc_reset = Cpt(EpicsSignalWithRBV, suffix="calc_reset", kind="config", put_complete=True)
# calc_done = Cpt(EpicsSignalRO, suffix="calc_done_RBV", kind="config")
# calc_energy = Cpt(EpicsSignalWithRBV, suffix="calc_energy", kind="config")
# calc_angle = Cpt(EpicsSignalWithRBV, suffix="calc_angle", kind="config")
calc_reset = Cpt(AcsSignal, tag=14000, prec=0, kind="omitted")
calc_done = Cpt(AcsSignalRO, tag=14001, prec=0, kind="omitted")
calc_energy = Cpt(AcsSignal, tag=54000, prec=0, kind="omitted")
calc_angle = Cpt(AcsSignal, tag=54001, prec=0, kind="omitted")
class Mo1BraggScanControl(Device):
"""Mo1 Bragg PVs to control the scan after setting the parameters."""
scan_mode_enum = Cpt(EpicsSignalWithRBV, suffix="scan_mode_ENUM", kind="config")
scan_duration = Cpt(
EpicsSignalWithRBV, suffix="scan_duration", kind="config", auto_monitor=True
)
scan_load = Cpt(EpicsSignal, suffix="scan_load", kind="config", put_complete=True)
# The live scan-status PVs below are kind="omitted": they change during every scan
# (some, like the progress/time counters, every second), and each update of an
# auto-monitored config-kind signal makes the device server re-read and republish
# the full device configuration. They are still fully usable via get()/subscribe()
# (CompareStatus/TransitionStatus waits, progress forwarding), which ignore kind.
scan_msg = Cpt(EpicsSignalRO, suffix="scan_msg_ENUM_RBV", kind="omitted", auto_monitor=True)
scan_start_infinite = Cpt(
EpicsSignal, suffix="scan_start_infinite", kind="config", put_complete=True
)
scan_start_timer = Cpt(EpicsSignal, suffix="scan_start_timer", kind="config", put_complete=True)
scan_stop = Cpt(EpicsSignal, suffix="scan_stop", kind="config", put_complete=True)
scan_status = Cpt(
EpicsSignalRO, suffix="scan_status_ENUM_RBV", kind="omitted", auto_monitor=True
)
scan_time_left = Cpt(
EpicsSignalRO, suffix="scan_time_left_RBV", kind="omitted", auto_monitor=True
)
scan_done = Cpt(EpicsSignalRO, suffix="scan_done_RBV", kind="omitted", auto_monitor=True)
scan_val_reset = Cpt(EpicsSignal, suffix="scan_val_reset", kind="config", put_complete=True)
scan_progress = Cpt(
EpicsSignalRO, suffix="scan_progress_RBV", kind="omitted", auto_monitor=True
)
scan_spectra_done = Cpt(
EpicsSignalRO, suffix="scan_n_osc_RBV", kind="omitted", auto_monitor=True
)
scan_spectra_left = Cpt(
EpicsSignalRO, suffix="scan_n_osc_left_RBV", kind="omitted", auto_monitor=True
)
# scan_mode_enum = Cpt(EpicsSignalWithRBV, suffix="scan_mode_ENUM", kind="config")
# scan_duration = Cpt(
# EpicsSignalWithRBV, suffix="scan_duration", kind="config", auto_monitor=True
# )
# scan_load = Cpt(EpicsSignal, suffix="scan_load", kind="config", put_complete=True)
# # The live scan-status PVs below are kind="omitted": they change during every scan
# # (some, like the progress/time counters, every second), and each update of an
# # auto-monitored config-kind signal makes the device server re-read and republish
# # the full device configuration. They are still fully usable via get()/subscribe()
# # (CompareStatus/TransitionStatus waits, progress forwarding), which ignore kind.
# scan_msg = Cpt(EpicsSignalRO, suffix="scan_msg_ENUM_RBV", kind="omitted", auto_monitor=True)
# scan_start_infinite = Cpt(
# EpicsSignal, suffix="scan_start_infinite", kind="config", put_complete=True
# )
# scan_start_timer = Cpt(EpicsSignal, suffix="scan_start_timer", kind="config", put_complete=True)
# scan_stop = Cpt(EpicsSignal, suffix="scan_stop", kind="config", put_complete=True)
# scan_status = Cpt(
# EpicsSignalRO, suffix="scan_status_ENUM_RBV", kind="omitted", auto_monitor=True
# )
# scan_time_left = Cpt(
# EpicsSignalRO, suffix="scan_time_left_RBV", kind="omitted", auto_monitor=True
# )
# scan_done = Cpt(EpicsSignalRO, suffix="scan_done_RBV", kind="omitted", auto_monitor=True)
# scan_val_reset = Cpt(EpicsSignal, suffix="scan_val_reset", kind="config", put_complete=True)
# scan_progress = Cpt(
# EpicsSignalRO, suffix="scan_progress_RBV", kind="omitted", auto_monitor=True
# )
# scan_spectra_done = Cpt(
# EpicsSignalRO, suffix="scan_n_osc_RBV", kind="omitted", auto_monitor=True
# )
# scan_spectra_left = Cpt(
# EpicsSignalRO, suffix="scan_n_osc_left_RBV", kind="omitted", auto_monitor=True
# )
scan_mode_enum = Cpt(AcsSignal, tag=12000, prec=0, enum=ScanControlMode, kind="config")
scan_duration = Cpt(AcsSignal, tag=52000, prec=1, kind="config")
scan_load = Cpt(AcsSignal, tag=12001, prec=0, kind="omitted")
scan_msg = Cpt(AcsSignalRO, tag=12007, prec=0, enum=ScanControlLoadMessage, kind="config")
scan_start_infinite = Cpt(AcsSignal, tag=12003, prec=0, kind="omitted")
scan_start_timer = Cpt(AcsSignal, tag=12006, prec=0, kind="omitted")
scan_stop = Cpt(AcsSignal, tag=12004, prec=0, kind="omitted")
scan_status = Cpt(AcsSignalRO, tag=12002, prec=0, enum=ScanControlScanStatus, kind="config")
scan_time_left = Cpt(AcsSignalRO, tag=52001, prec=1, kind="omitted")
scan_done = Cpt(AcsSignalRO, tag=12005, prec=0, kind="omitted")
scan_val_reset = Cpt(AcsSignal, tag=52000, prec=0, kind="omitted")
scan_progress = Cpt(AcsSignalRO, tag=12011, prec=1, max_poll=0.5, kind="omitted")
scan_spectra_done = Cpt(AcsSignalRO, tag=12009, prec=0, kind="omitted")
scan_spectra_left = Cpt(AcsSignalRO, tag=12010, prec=0, kind="omitted")
class Mo1BraggPositioner(Device, PositionerBase):
@@ -279,29 +383,36 @@ class Mo1BraggPositioner(Device, PositionerBase):
############# Energy PVs #############
readback = Cpt(
EpicsSignalRO, suffix="feedback_pos_energy_RBV", kind="hinted", auto_monitor=True
)
setpoint = Cpt(
EpicsSignalWithRBV, suffix="set_abs_pos_energy", kind="normal", auto_monitor=True
)
motor_is_moving = Cpt(
EpicsSignalRO, suffix="move_abs_done_RBV", kind="normal", auto_monitor=True
)
low_lim = Cpt(EpicsSignalRO, suffix="lo_lim_pos_energy_RBV", kind="config", auto_monitor=True)
high_lim = Cpt(EpicsSignalRO, suffix="hi_lim_pos_energy_RBV", kind="config", auto_monitor=True)
velocity = Cpt(EpicsSignalWithRBV, suffix="move_velocity", kind="config", auto_monitor=True)
# readback = Cpt(
# EpicsSignalRO, suffix="feedback_pos_energy_RBV", kind="hinted", auto_monitor=True
# )
# setpoint = Cpt(
# EpicsSignalWithRBV, suffix="set_abs_pos_energy", kind="normal", auto_monitor=True
# )
# motor_is_moving = Cpt(
# EpicsSignalRO, suffix="move_abs_done_RBV", kind="normal", auto_monitor=True
# )
# low_lim = Cpt(EpicsSignalRO, suffix="lo_lim_pos_energy_RBV", kind="config", auto_monitor=True)
# high_lim = Cpt(EpicsSignalRO, suffix="hi_lim_pos_energy_RBV", kind="config", auto_monitor=True)
# velocity = Cpt(EpicsSignalWithRBV, suffix="move_velocity", kind="config", auto_monitor=True)
angle = Cpt(EpicsSignalRO, suffix="feedback_pos_angle_RBV", kind="normal", auto_monitor=True)
# angle = Cpt(EpicsSignalRO, suffix="feedback_pos_angle_RBV", kind="normal", auto_monitor=True)
# test = Cpt(AcsSignal, tag=53000, prec=6, kind="normal") # s_scan_angle_low
# test2 = Cpt(AcsSignalRO, tag=12007, prec=6, kind="normal") # scan_msg
# test3 = Cpt(AcsSignal, tag=53500, prec=6, num_el=41, kind="normal") # a_scan_pos
readback = Cpt(AcsSignalRO, tag=51508, prec=3, kind="hinted")
setpoint = Cpt(AcsSignal, tag=51507, prec=3, kind="normal")
motor_is_moving = Cpt(AcsSignalRO, tag=11504, prec=0, max_poll=0.5, kind="normal")
low_lim = Cpt(AcsSignalRO, tag=51510, prec=3, kind="config")
high_lim = Cpt(AcsSignalRO, tag=51509, prec=3, kind="config")
velocity = Cpt(AcsSignal, tag=51502, prec=3, kind="config")
angle = Cpt(AcsSignalRO, tag=51503, prec=6, kind="normal")
########## Move Command PVs ##########
move_abs = Cpt(EpicsSignal, suffix="move_abs", kind="config", put_complete=True)
move_stop = Cpt(EpicsSignal, suffix="move_stop", kind="config", put_complete=True)
# move_abs = Cpt(EpicsSignal, suffix="move_abs", kind="config", put_complete=True)
# move_stop = Cpt(EpicsSignal, suffix="move_stop", kind="config", put_complete=True)
move_abs = Cpt(AcsSignal, tag=11503, prec=0, kind="omitted")
move_stop = Cpt(AcsSignal, tag=11509, prec=0, kind="omitted")
SUB_READBACK = "readback"
_default_sub = SUB_READBACK
@@ -10,6 +10,20 @@ class Xtal(int, enum.Enum):
Si311 = 1
class TriggerSelectReference(int, enum.Enum):
"""Enum class for the trigger reference selectrion"""
ANGLE = 0
ENERGY = 1
class TriggerEnable(int, enum.Enum):
"""Enum class to enable/disable trigger control"""
DISABLED = 0
ENABLED = 1
class TriggerControlSource(int, enum.Enum):
"""Enum class for the trigger control source of the trigger generator"""