wip working falconslim

This commit is contained in:
gac-x10da
2025-09-11 17:11:47 +02:00
committed by appel_c
parent a7d3bd3ea0
commit f70445f783
3 changed files with 26 additions and 17 deletions
@@ -1,11 +1,11 @@
falcon:
description: Falcon Sitoro detector
deviceClass: superxas_bec.devices.falcon.FalconSuperXAS
deviceClass: superxas_bec.devices.falcon_slim.FalconSuperXASSlim
deviceConfig:
prefix: 'X10DA-SITORO:'
enabled: true
onFailure: raise
readoutPriority: async
readoutPriority: monitored
softwareTrigger: false
manip_new_trx:
description: Old Sample Manipulator X-Translation
@@ -52,3 +52,12 @@ trigger:
onFailure: raise
readoutPriority: baseline
softwareTrigger: true
kb_slit_y:
readoutPriority: baseline
description: KB slit axis Y
deviceClass: ophyd.EpicsMotor
deviceConfig:
prefix: X10DA-ES1-SV1:OPENY
onFailure: retry
enabled: true
softwareTrigger: false
+14 -14
View File
@@ -3,7 +3,7 @@ import enum
import numpy as np
from bec_lib.logger import bec_logger
from ophyd import Component as Cpt
from ophyd import Device, EpicsSignal, EpicsSignalRO, EpicsSignalWithRBV, Kind, Signal
from ophyd import Device, EpicsSignal, EpicsSignalRO, Kind, Signal
from ophyd_devices import CompareStatus, DeviceStatus, PreviewSignal, StatusBase
from ophyd_devices.interfaces.base_classes.psi_device_base import PSIDeviceBase
@@ -20,15 +20,15 @@ class FalconAcquiringStatus(int, enum.Enum):
class FalconControlSlim(Device):
"""Slim Falcon Control class for SuperXAS. prefix: 'X10DA-SITORO:'"""
start = Cpt(EpicsSignal, "EraseStart", doc="XMAP start signal")
stop = Cpt(EpicsSignal, "StopAll", doc="XMAP stop signal")
acquiring = Cpt(EpicsSignalRO, "Acquiring", auto_monitor=True, doc="XMAP acquiring signal")
icr = Cpt(EpicsSignalRO, "dxp1:InputCountRate", doc="XMAP input count rate")
ocr = Cpt(EpicsSignalRO, "dxp1:OutputCountRate", doc="XMAP output count rate")
ert = Cpt(EpicsSignalRO, "mca1.ERTM", doc="XMAP elapsed real time")
roi = Cpt(EpicsSignalRO, "mca1.R0", kind=Kind.hinted, doc="XMAP ROI signal")
label = Cpt(EpicsSignalRO, "mca1.R0NM", kind=Kind.config, doc="XMAP ROI signal")
spectrum_val = Cpt(EpicsSignalRO, "mca1.VAL", kind=Kind.omitted)
erase_start:EpicsSignal = Cpt(EpicsSignal, "EraseStart", kind=Kind.omitted, doc="XMAP start signal")
stop_all:EpicsSignal = Cpt(EpicsSignal, "StopAll", kind=Kind.omitted,doc="XMAP stop signal")
acquiring:EpicsSignalRO = Cpt(EpicsSignalRO, "Acquiring", kind=Kind.omitted, auto_monitor=True, doc="XMAP acquiring signal")
icr:EpicsSignalRO = Cpt(EpicsSignalRO, "dxp1:InputCountRate", doc="XMAP input count rate")
ocr:EpicsSignalRO = Cpt(EpicsSignalRO, "dxp1:OutputCountRate", doc="XMAP output count rate")
ert:EpicsSignalRO = Cpt(EpicsSignalRO, "mca1.ERTM", doc="XMAP elapsed real time")
roi:EpicsSignalRO = Cpt(EpicsSignalRO, "mca1.R0", kind=Kind.hinted, doc="XMAP ROI signal")
label:EpicsSignalRO = Cpt(EpicsSignalRO, "mca1.R0NM", kind=Kind.config, doc="XMAP ROI signal")
spectrum_val:EpicsSignalRO = Cpt(EpicsSignalRO, "mca1.VAL", kind=Kind.omitted)
# Preview Signal for Falcon detector
spectrum = Cpt(
@@ -36,11 +36,11 @@ class FalconControlSlim(Device):
)
# Configuration attributes
collect_mode = Cpt(EpicsSignal, "CollectMode", doc="Collect mode signal")
preset_real_time = Cpt(EpicsSignalWithRBV, "PresetRealTime", doc="Preset real time signal")
collect_mode:EpicsSignal = Cpt(EpicsSignal, "CollectMode", doc="Collect mode signal")
preset_real:EpicsSignal = Cpt(EpicsSignal, "PresetReal", doc="Preset real time signal")
# Computed signal for dead time corrected counts
dead_cor_roi0_count = Cpt(Signal, "dead_cor_roi0_count", doc="Dead time corrected ROI 0 count")
dead_cor_roi0_count = Cpt(Signal, name="dead_cor_roi0_count", doc="Dead time corrected ROI 0 count")
def compute_dead_time_corrected_signal(icr: float, ocr: float, roi: float, ert: float):
@@ -106,7 +106,7 @@ class FalconSuperXASSlim(PSIDeviceBase, FalconControlSlim):
status.wait(timeout=self._pv_timeout)
self.collect_mode.set(0).wait(timeout=self._pv_timeout)
self.preset_real_time.set(0).wait(timeout=self._pv_timeout)
self.preset_real.set(0).wait(timeout=self._pv_timeout)
def on_unstage(self) -> DeviceStatus | StatusBase | None:
"""Called while unstaging the device."""
+1 -1
View File
@@ -146,7 +146,7 @@ class Trigger(PSIDeviceBase, TriggerControl):
falcon.stop_all.put(1)
status.wait(timeout=self._pv_timeout)
time.sleep(0.4) # Simulate some processing time
falcon.update_data()
falcon.obj.update_data()
return status_smpl
def on_complete(self) -> DeviceStatus | StatusBase | None: