refactor: renamed EpicsMotorMR to EpicsMotor

This commit is contained in:
wakonig_k 2025-03-26 08:19:56 +01:00
parent 57b2ced839
commit 82c28313e6
3 changed files with 26 additions and 37 deletions

View File

@ -16,9 +16,8 @@ from .sim.sim_signals import ReadOnlySignal
from .sim.sim_waveform import SimWaveform from .sim.sim_waveform import SimWaveform
SynSignalRO = ReadOnlySignal SynSignalRO = ReadOnlySignal
from .devices.psi_motor import EpicsMotor, EpicsMotorEC
from .devices.softpositioner import SoftPositioner from .devices.softpositioner import SoftPositioner
from .utils.bec_device_base import BECDeviceBase from .utils.bec_device_base import BECDeviceBase
from .utils.dynamic_pseudo import ComputedSignal from .utils.dynamic_pseudo import ComputedSignal
from .utils.static_device_test import launch from .utils.static_device_test import launch
from .devices.psi_motor import EpicsMotorMR, EpicsMotorEC

View File

@ -1,8 +1,7 @@
from ophyd import EpicsMotor, EpicsSignal, EpicsSignalRO
from ophyd.quadem import QuadEM from ophyd.quadem import QuadEM
from ophyd.sim import SynAxis, SynPeriodicSignal, SynSignal from ophyd.sim import SynAxis, SynPeriodicSignal, SynSignal
from .epics_motor_ex import EpicsMotorEx from .epics_motor_ex import EpicsMotorEx
from .psi_motor import EpicsMotor, EpicsMotorEC
from .sls_devices import SLSInfo, SLSOperatorMessages from .sls_devices import SLSInfo, SLSOperatorMessages
from .SpmBase import SpmBase from .SpmBase import SpmBase
from .psi_motor import EpicsMotorMR, EpicsMotorEC

View File

@ -5,9 +5,10 @@ exposes additional parameters of the EPICS MotorRecord and provides a more
detailed interface for motors using the new ECMC-based motion systems at PSI. detailed interface for motors using the new ECMC-based motion systems at PSI.
""" """
from ophyd import Component, EpicsMotor, EpicsSignal, EpicsSignalRO, Kind from ophyd import Component as Cpt
from ophyd.status import DeviceStatus, MoveStatus from ophyd import EpicsMotor as OphydEpicsMotor
from ophyd.utils.errors import UnknownStatusFailure from ophyd import EpicsSignal, EpicsSignalRO, Kind
from ophyd.status import MoveStatus
from ophyd.utils.epics_pvs import AlarmSeverity from ophyd.utils.epics_pvs import AlarmSeverity
@ -21,7 +22,7 @@ class SpmgStates:
GO = 3 GO = 3
class EpicsMotorMR(EpicsMotor): class EpicsMotor(OphydEpicsMotor):
"""Extended EPICS Motor class """Extended EPICS Motor class
Special motor class that exposes additional motor record functionality. Special motor class that exposes additional motor record functionality.
@ -30,14 +31,12 @@ class EpicsMotorMR(EpicsMotor):
""" """
tolerated_alarm = AlarmSeverity.INVALID tolerated_alarm = AlarmSeverity.INVALID
motor_done_move = Component(EpicsSignalRO, ".DMOV", auto_monitor=True, kind=Kind.normal) motor_done_move = Cpt(EpicsSignalRO, ".DMOV", auto_monitor=True, kind=Kind.normal)
motor_deadband = Component(EpicsSignalRO, ".RDBD", auto_monitor=True, kind=Kind.config) motor_deadband = Cpt(EpicsSignalRO, ".RDBD", auto_monitor=True, kind=Kind.config)
motor_mode = Component( motor_mode = Cpt(EpicsSignal, ".SPMG", auto_monitor=True, put_complete=True, kind=Kind.omitted)
EpicsSignal, ".SPMG", auto_monitor=True, put_complete=True, kind=Kind.omitted motor_status = Cpt(EpicsSignal, ".STAT", auto_monitor=True, kind=Kind.omitted)
) motor_enable = Cpt(EpicsSignal, ".CNEN", auto_monitor=True, kind=Kind.omitted)
motor_status = Component(EpicsSignal, ".STAT", auto_monitor=True, kind=Kind.omitted)
motor_enable = Component(EpicsSignal, ".CNEN", auto_monitor=True, kind=Kind.omitted)
def move(self, position, wait=True, **kwargs) -> MoveStatus: def move(self, position, wait=True, **kwargs) -> MoveStatus:
"""Extended move function with a few sanity checks """Extended move function with a few sanity checks
@ -60,18 +59,10 @@ class EpicsMotorMR(EpicsMotor):
if self.low_limit_switch.get(use_monitor=False) and position < self.position: if self.low_limit_switch.get(use_monitor=False) and position < self.position:
self.log.warning("Attempting to move below active LLS") self.log.warning("Attempting to move below active LLS")
# EpicsMotor might raise if MR is in alarm return super().move(position, wait, **kwargs)
try:
status = super().move(position, wait, **kwargs)
return status
except UnknownStatusFailure:
status = DeviceStatus(self)
status.set_finished()
# return status
raise
class EpicsMotorEC(EpicsMotorMR): class EpicsMotorEC(EpicsMotor):
"""Detailed ECMC EPICS motor class """Detailed ECMC EPICS motor class
Special motor class to provide additional functionality for ECMC based motors. Special motor class to provide additional functionality for ECMC based motors.
@ -80,8 +71,8 @@ class EpicsMotorEC(EpicsMotorMR):
""" """
USER_ACCESS = ["reset"] USER_ACCESS = ["reset"]
motor_enable_readback = Component(EpicsSignalRO, "-EnaAct", auto_monitor=True, kind=Kind.normal) motor_enable_readback = Cpt(EpicsSignalRO, "-EnaAct", auto_monitor=True, kind=Kind.normal)
motor_enable = Component( motor_enable = Cpt(
EpicsSignal, EpicsSignal,
"-EnaCmd-RB", "-EnaCmd-RB",
write_pv="-EnaCmd", write_pv="-EnaCmd",
@ -89,18 +80,18 @@ class EpicsMotorEC(EpicsMotorMR):
auto_monitor=True, auto_monitor=True,
kind=Kind.normal, kind=Kind.normal,
) )
homed = Component(EpicsSignalRO, "-Homed", auto_monitor=True, kind=Kind.normal) homed = Cpt(EpicsSignalRO, "-Homed", auto_monitor=True, kind=Kind.normal)
velocity_readback = Component(EpicsSignalRO, "-VelAct", auto_monitor=True, kind=Kind.normal) velocity_readback = Cpt(EpicsSignalRO, "-VelAct", auto_monitor=True, kind=Kind.normal)
position_readback = Component(EpicsSignalRO, "-PosAct", auto_monitor=True, kind=Kind.normal) position_readback = Cpt(EpicsSignalRO, "-PosAct", auto_monitor=True, kind=Kind.normal)
position_error = Component(EpicsSignalRO, "-PosErr", auto_monitor=True, kind=Kind.normal) position_error = Cpt(EpicsSignalRO, "-PosErr", auto_monitor=True, kind=Kind.normal)
# Virtual motor and temperature limits are interlocks # Virtual motor and temperature limits are interlocks
high_interlock = Component(EpicsSignalRO, "-SumIlockFwd", auto_monitor=True, kind=Kind.normal) high_interlock = Cpt(EpicsSignalRO, "-SumIlockFwd", auto_monitor=True, kind=Kind.normal)
low_interlock = Component(EpicsSignalRO, "-SumIlockBwd", auto_monitor=True, kind=Kind.normal) low_interlock = Cpt(EpicsSignalRO, "-SumIlockBwd", auto_monitor=True, kind=Kind.normal)
# ecmc_status = Component(EpicsSignalRO, "-Status", auto_monitor=True, kind=Kind.normal) # ecmc_status = Cpt(EpicsSignalRO, "-Status", auto_monitor=True, kind=Kind.normal)
error = Component(EpicsSignalRO, "-ErrId", auto_monitor=True, kind=Kind.normal) error = Cpt(EpicsSignalRO, "-ErrId", auto_monitor=True, kind=Kind.normal)
error_msg = Component(EpicsSignalRO, "-MsgTxt", auto_monitor=True, kind=Kind.normal) error_msg = Cpt(EpicsSignalRO, "-MsgTxt", auto_monitor=True, kind=Kind.normal)
error_reset = Component(EpicsSignal, "-ErrRst", put_complete=True, kind=Kind.omitted) error_reset = Cpt(EpicsSignal, "-ErrRst", put_complete=True, kind=Kind.omitted)
def move(self, position, wait=True, **kwargs) -> MoveStatus: def move(self, position, wait=True, **kwargs) -> MoveStatus:
"""Extended move function with a few sanity checks """Extended move function with a few sanity checks