fix: replaced outdated enable_set by read_only

This commit is contained in:
wakonig_k 2024-02-17 18:19:34 +01:00 committed by appel_c
parent 8fe8aa0ec7
commit f91d0c482d
5 changed files with 34 additions and 72 deletions

View File

@ -126,9 +126,9 @@ class RtFlomniController(RtController):
) )
if not np.isclose(fsamx.obj.readback.get(), fsamx_in, atol=0.01): if not np.isclose(fsamx.obj.readback.get(), fsamx_in, atol=0.01):
fsamx.enabled_set = True fsamx.read_only = False
fsamx.obj.move(fsamx_in, wait=True) fsamx.obj.move(fsamx_in, wait=True)
fsamx.enabled_set = False fsamx.read_only = True
time.sleep(1) time.sleep(1)
self.socket_put("l1") self.socket_put("l1")
@ -169,13 +169,13 @@ class RtFlomniController(RtController):
wait_on_exit = True wait_on_exit = True
self.socket_put("v0") self.socket_put("v0")
fsamx = self.get_device_manager().devices.fsamx fsamx = self.get_device_manager().devices.fsamx
fsamx.enabled_set = True fsamx.read_only = False
fsamx.obj.controller.socket_put_confirmed("axspeed[4]=0.1*stppermm[4]") fsamx.obj.controller.socket_put_confirmed("axspeed[4]=0.1*stppermm[4]")
fsamx.obj.pid_x_correction -= (self.get_pid_x() - expected_voltage) * 0.007 fsamx.obj.pid_x_correction -= (self.get_pid_x() - expected_voltage) * 0.007
logger.info(f"Correcting fsamx by {fsamx.obj.pid_x_correction}") logger.info(f"Correcting fsamx by {fsamx.obj.pid_x_correction}")
fsamx_in = fsamx.user_parameter.get("in") fsamx_in = fsamx.user_parameter.get("in")
fsamx.obj.move(fsamx_in + cenx / 1000 + fsamx.obj.pid_x_correction, wait=True) fsamx.obj.move(fsamx_in + cenx / 1000 + fsamx.obj.pid_x_correction, wait=True)
fsamx.enabled_set = False fsamx.read_only = True
time.sleep(0.1) time.sleep(0.1)
self.laser_tracker_on() self.laser_tracker_on()
time.sleep(0.01) time.sleep(0.01)

View File

@ -3,7 +3,7 @@ import threading
import time import time
import numpy as np import numpy as np
from bec_lib import messages, MessageEndpoints, bec_logger from bec_lib import MessageEndpoints, bec_logger, messages
from ophyd import Component as Cpt from ophyd import Component as Cpt
from ophyd import Device, PositionerBase, Signal from ophyd import Device, PositionerBase, Signal
from ophyd.status import wait as status_wait from ophyd.status import wait as status_wait
@ -435,8 +435,7 @@ class RtLamniController(Controller):
self.get_device_manager().producer.send( self.get_device_manager().producer.send(
MessageEndpoints.device_read("rt_lamni"), MessageEndpoints.device_read("rt_lamni"),
messages.DeviceMessage( messages.DeviceMessage(
signals=signals, signals=signals, metadata={"pointID": pointID, **self.readout_metadata}
metadata={"pointID": pointID, **self.readout_metadata},
).dumps(), ).dumps(),
) )
@ -532,7 +531,7 @@ class RtLamniController(Controller):
f"Device {device_name} is not configured and cannot be enabled/disabled." f"Device {device_name} is not configured and cannot be enabled/disabled."
) )
return return
self.get_device_manager().devices[device_name].enabled_set = enabled self.get_device_manager().devices[device_name].read_only = not enabled
class RtLamniSignalBase(SocketSignal): class RtLamniSignalBase(SocketSignal):
@ -623,11 +622,7 @@ class RtLamniMotorIsMoving(RtLamniSignalRO):
def get(self): def get(self):
val = super().get() val = super().get()
if val is not None: if val is not None:
self._run_subs( self._run_subs(sub_type=self.SUB_VALUE, value=val, timestamp=time.time())
sub_type=self.SUB_VALUE,
value=val,
timestamp=time.time(),
)
return val return val
@ -642,11 +637,7 @@ class RtLamniFeedbackRunning(RtLamniSignalRO):
class RtLamniMotor(Device, PositionerBase): class RtLamniMotor(Device, PositionerBase):
USER_ACCESS = ["controller"] USER_ACCESS = ["controller"]
readback = Cpt( readback = Cpt(RtLamniReadbackSignal, signal_name="readback", kind="hinted")
RtLamniReadbackSignal,
signal_name="readback",
kind="hinted",
)
user_setpoint = Cpt(RtLamniSetpointSignal, signal_name="setpoint") user_setpoint = Cpt(RtLamniSetpointSignal, signal_name="setpoint")
motor_is_moving = Cpt(RtLamniMotorIsMoving, signal_name="motor_is_moving", kind="normal") motor_is_moving = Cpt(RtLamniMotorIsMoving, signal_name="motor_is_moving", kind="normal")
@ -769,11 +760,7 @@ class RtLamniMotor(Device, PositionerBase):
while self.motor_is_moving.get(): while self.motor_is_moving.get():
print("motor is moving") print("motor is moving")
val = self.readback.read() val = self.readback.read()
self._run_subs( self._run_subs(sub_type=self.SUB_READBACK, value=val, timestamp=time.time())
sub_type=self.SUB_READBACK,
value=val,
timestamp=time.time(),
)
time.sleep(0.01) time.sleep(0.01)
print("Move finished") print("Move finished")
self._done_moving() self._done_moving()

View File

@ -405,8 +405,7 @@ class RtController(Controller):
self.get_device_manager().producer.send( self.get_device_manager().producer.send(
MessageEndpoints.device_read("rt_lamni"), MessageEndpoints.device_read("rt_lamni"),
messages.DeviceMessage( messages.DeviceMessage(
signals=signals, signals=signals, metadata={"pointID": pointID, **self.readout_metadata}
metadata={"pointID": pointID, **self.readout_metadata},
).dumps(), ).dumps(),
) )
@ -502,7 +501,7 @@ class RtController(Controller):
f"Device {device_name} is not configured and cannot be enabled/disabled." f"Device {device_name} is not configured and cannot be enabled/disabled."
) )
return return
self.get_device_manager().devices[device_name].enabled_set = enabled self.get_device_manager().devices[device_name].read_only = not enabled
class RtSignalBase(SocketSignal): class RtSignalBase(SocketSignal):
@ -593,11 +592,7 @@ class RtMotorIsMoving(RtSignalRO):
def get(self): def get(self):
val = super().get() val = super().get()
if val is not None: if val is not None:
self._run_subs( self._run_subs(sub_type=self.SUB_VALUE, value=val, timestamp=time.time())
sub_type=self.SUB_VALUE,
value=val,
timestamp=time.time(),
)
return val return val
@ -612,11 +607,7 @@ class RtFeedbackRunning(RtSignalRO):
class RtMotor(Device, PositionerBase): class RtMotor(Device, PositionerBase):
USER_ACCESS = ["controller"] USER_ACCESS = ["controller"]
readback = Cpt( readback = Cpt(RtReadbackSignal, signal_name="readback", kind="hinted")
RtReadbackSignal,
signal_name="readback",
kind="hinted",
)
user_setpoint = Cpt(RtSetpointSignal, signal_name="setpoint") user_setpoint = Cpt(RtSetpointSignal, signal_name="setpoint")
motor_is_moving = Cpt(RtMotorIsMoving, signal_name="motor_is_moving", kind="normal") motor_is_moving = Cpt(RtMotorIsMoving, signal_name="motor_is_moving", kind="normal")
@ -739,11 +730,7 @@ class RtMotor(Device, PositionerBase):
while self.motor_is_moving.get(): while self.motor_is_moving.get():
print("motor is moving") print("motor is moving")
val = self.readback.read() val = self.readback.read()
self._run_subs( self._run_subs(sub_type=self.SUB_READBACK, value=val, timestamp=time.time())
sub_type=self.SUB_READBACK,
value=val,
timestamp=time.time(),
)
time.sleep(0.01) time.sleep(0.01)
print("Move finished") print("Move finished")
self._done_moving() self._done_moving()

View File

@ -2,12 +2,10 @@ import time
from bec_lib import bec_logger from bec_lib import bec_logger
from bec_lib.devicemanager import DeviceContainer from bec_lib.devicemanager import DeviceContainer
from ophyd import Kind, Signal
from ophyd import Signal, Kind
from ophyd_devices.utils.socket import data_shape, data_type from ophyd_devices.utils.socket import data_shape, data_type
logger = bec_logger.logger logger = bec_logger.logger
DEFAULT_EPICSSIGNAL_VALUE = object() DEFAULT_EPICSSIGNAL_VALUE = object()
@ -18,7 +16,7 @@ class DeviceMock:
self.name = name self.name = name
self.read_buffer = value self.read_buffer = value
self._config = {"deviceConfig": {"limits": [-50, 50]}, "userParameter": None} self._config = {"deviceConfig": {"limits": [-50, 50]}, "userParameter": None}
self._enabled_set = True self._read_only = False
self._enabled = True self._enabled = True
def read(self): def read(self):
@ -28,12 +26,12 @@ class DeviceMock:
return self.read_buffer return self.read_buffer
@property @property
def enabled_set(self) -> bool: def read_only(self) -> bool:
return self._enabled_set return self._read_only
@enabled_set.setter @read_only.setter
def enabled_set(self, val: bool): def read_only(self, val: bool):
self._enabled_set = val self._read_only = val
@property @property
def enabled(self) -> bool: def enabled(self) -> bool:
@ -191,14 +189,7 @@ class ConfigSignal(Signal):
self._readback = getattr(self.parent, self.storage_name)[self.name] self._readback = getattr(self.parent, self.storage_name)[self.name]
return self._readback return self._readback
def put( def put(self, value, connection_timeout=1, callback=None, timeout=1, **kwargs):
self,
value,
connection_timeout=1,
callback=None,
timeout=1,
**kwargs,
):
"""Using channel access, set the write PV to `value`. """Using channel access, set the write PV to `value`.
Keyword arguments are passed on to callbacks Keyword arguments are passed on to callbacks
@ -224,10 +215,7 @@ class ConfigSignal(Signal):
getattr(self.parent, self.storage_name)[self.name] = value getattr(self.parent, self.storage_name)[self.name] = value
super().put(value, timestamp=timestamp, force=True) super().put(value, timestamp=timestamp, force=True)
self._run_subs( self._run_subs(
sub_type=self.SUB_VALUE, sub_type=self.SUB_VALUE, old_value=old_value, value=value, timestamp=timestamp
old_value=old_value,
value=value,
timestamp=timestamp,
) )
def describe(self): def describe(self):

View File

@ -1,8 +1,8 @@
from unittest import mock
from bec_lib.devicemanager import DeviceContainer from bec_lib.devicemanager import DeviceContainer
from bec_lib.tests.utils import ProducerMock from bec_lib.tests.utils import ProducerMock
from unittest import mock
class SocketMock: class SocketMock:
"""Socket Mock. Used for testing""" """Socket Mock. Used for testing"""
@ -251,7 +251,7 @@ class DeviceMock:
self.name = name self.name = name
self.read_buffer = value self.read_buffer = value
self._config = {"deviceConfig": {"limits": [-50, 50]}, "userParameter": None} self._config = {"deviceConfig": {"limits": [-50, 50]}, "userParameter": None}
self._enabled_set = True self._read_only = False
self._enabled = True self._enabled = True
def read(self): def read(self):
@ -263,14 +263,14 @@ class DeviceMock:
return self.read_buffer return self.read_buffer
@property @property
def enabled_set(self) -> bool: def read_only(self) -> bool:
"""enabled_set property""" """read only property"""
return self._enabled_set return self._read_only
@enabled_set.setter @read_only.setter
def enabled_set(self, val: bool): def read_only(self, val: bool):
"""enabled_set setter""" """read only setter"""
self._enabled_set = val self._read_only = val
@property @property
def enabled(self) -> bool: def enabled(self) -> bool: