2 Commits

Author SHA1 Message Date
Unknown MX Person
a547225af2 BEC AutoUpdate class is not executed, but fixed A3200 status monitoring 2025-06-16 13:44:46 +02:00
Unknown MX Person
44e960062a Added collimator and 2D auto updates 2025-06-16 11:52:02 +02:00
3 changed files with 67 additions and 28 deletions

View File

@@ -28,30 +28,49 @@ class PlotUpdate(AutoUpdates):
Args:
msg (ScanStatusMessage): The scan status message.
"""
if msg.scan_name == "line_scan" and msg.scan_report_devices:
return self.simple_line_scan(msg)
if msg.scan_name == "grid_scan" and msg.scan_report_devices:
return self.simple_grid_scan(msg)
dev_x = msg.scan_report_devices[0]
if "kwargs" in msg.request_inputs:
dev_y = msg.request_inputs["kwargs"].get("plot", None)
if dev_y is not None:
# Set the dock to the waveform widget
wf = self.set_dock_to_widget("Waveform")
# Clear the waveform widget and plot the data
wf.clear_all()
wf.plot(
x_name=dev_x,
y_name=dev_y,
label=f"Scan {msg.info.scan_number} - {dev_y}",
title=f"Scan {msg.info.scan_number}",
x_label=dev_x,
y_label=dev_y,
)
elif msg.scan_report_devices:
return self.best_effort(msg)
# if "kwargs" in msg.request_inputs:
# dev_plt = msg.request_inputs["kwargs"].get("plot", None)
# if dev_plt is not None:
# # Handle depending on scan dimension
# if len(msg.scan_report_devices) == 1:
# dev_x = msg.scan_report_devices[0]
# # Set the dock to the waveform widget
# wf = self.set_dock_to_widget("Waveform")
# # Clear the waveform widget and plot the data
# wf.clear_all()
# wf.plot(
# x_name=dev_x,
# y_name=dev_plt,
# label=f"Scan {msg.info.scan_number} - {dev_plt}",
# title=f"Scan {msg.info.scan_number}",
# x_label=dev_x,
# y_label=dev_plt,
# )
# if len(msg.scan_report_devices) == 2:
# dev_x = msg.scan_report_devices[0]
# dev_y = msg.scan_report_devices[1]
# # Set the dock to the waveform widget
# wf = self.set_dock_to_widget("Waveform")
# # Clear the waveform widget and plot the data
# wf.clear_all()
# wf.plot(
# x_name=dev_x,
# y_name=dev_y,
# z_name=dev_plt,
# label=f"Scan {msg.info.scan_number} - {dev_plt}",
# title=f"Scan {msg.info.scan_number} - {dev_plt}",
# x_label=dev_x,
# y_label=dev_y,
# z_label=dev_plt,
# )
# elif msg.scan_name == "line_scan" and msg.scan_report_devices:
# return self.simple_line_scan(msg)
# elif msg.scan_name == "grid_scan" and msg.scan_report_devices:
# return self.simple_grid_scan(msg)
# elif msg.scan_report_devices:
# return self.best_effort(msg)
return None
def on_scan_closed(self, msg: ScanStatusMessage) -> None:

View File

@@ -691,6 +691,26 @@ abr:
readoutPriority: monitored
readOnly: false
softwareTrigger: false
coll_x:
description: Collimator X
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X06DA-ES-COL:TRX1'}
onFailure: buffer
enabled: true
readoutPriority: monitored
readOnly: false
softwareTrigger: false
coll_y:
description: Collimator Y
deviceClass: ophyd.EpicsMotor
deviceConfig: {prefix: 'X06DA-ES-COL:TRY1'}
onFailure: buffer
enabled: true
readoutPriority: monitored
readOnly: false
softwareTrigger: false
shx:
description: SmarGon X axis
deviceClass: pxiii_bec.devices.SmarGonAxisB

View File

@@ -97,10 +97,10 @@ class AerotechAbrStage(PSIDeviceBase, Device):
# )
# Status flags for all axes
omega_done = Component(EpicsSignalRO, "-DF1:OMEGA-DONE", kind=Kind.normal)
gmx_done = Component(EpicsSignalRO, "-DF1:GMX-DONE", kind=Kind.normal)
gmy_done = Component(EpicsSignalRO, "-DF1:GMY-DONE", kind=Kind.normal)
gmz_done = Component(EpicsSignalRO, "-DF1:GMZ-DONE", kind=Kind.normal)
omega_done = Component(EpicsSignalRO, "-DF1:OMEGA-DONE", auto_monitor=True, kind=Kind.normal)
gmx_done = Component(EpicsSignalRO, "-DF1:GMX-DONE", auto_monitor=True, kind=Kind.normal)
gmy_done = Component(EpicsSignalRO, "-DF1:GMY-DONE", auto_monitor=True, kind=Kind.normal)
gmz_done = Component(EpicsSignalRO, "-DF1:GMZ-DONE", auto_monitor=True, kind=Kind.normal)
# For some reason the task interface is called PSO...
scan_command = Component(EpicsSignal, "-PSO:CMD", put_complete=True, kind=Kind.omitted)
@@ -128,7 +128,7 @@ class AerotechAbrStage(PSIDeviceBase, Device):
task2 = Component(EpicsSignalRO, "-AERO:TSK2-DONE", auto_monitor=True)
task3 = Component(EpicsSignalRO, "-AERO:TSK3-DONE", auto_monitor=True)
task4 = Component(EpicsSignalRO, "-AERO:TSK4-DONE", auto_monitor=True)
scan_done = Component(EpicsSignal, "-GRD:SCAN-DONE", kind=Kind.config)
scan_done = Component(EpicsSignal, "-GRD:SCAN-DONE", auto_monitor=True, kind=Kind.config)
def __init__(
self,