Source code for dodal.devices.detector.detector_motion

from enum import IntEnum

from ophyd import Component as Cpt
from ophyd import Device, EpicsMotor, EpicsSignal, EpicsSignalRO


[docs] class ShutterState(IntEnum): CLOSED = 0 OPEN = 1
[docs] class DetectorMotion(Device): """Physical motion and interlocks for detector travel""" upstream_x = Cpt(EpicsMotor, "-MO-DET-01:UPSTREAMX") downstream_x = Cpt(EpicsMotor, "-MO-DET-01:DOWNSTREAMX") x = Cpt(EpicsMotor, "-MO-DET-01:X") y = Cpt(EpicsMotor, "-MO-DET-01:Y") z = Cpt(EpicsMotor, "-MO-DET-01:Z") yaw = Cpt(EpicsMotor, "-MO-DET-01:YAW") shutter = Cpt(EpicsSignal, "-MO-DET-01:SET_SHUTTER_STATE") # 0=closed, 1=open # monitors shutter_closed_lim = Cpt( EpicsSignalRO, "-MO-DET-01:CLOSE_LIMIT" ) # on limit = 1, off = 0 shutter_open_lim = Cpt( EpicsSignalRO, "-MO-DET-01:OPEN_LIMIT" ) # on limit = 1, off = 0 z_disabled = Cpt( EpicsSignalRO, "-MO-DET-01:Z:DISABLED" ) # robot interlock, 0=ok to move, 1=blocked crate_power = Cpt( EpicsSignalRO, "-MO-PMAC-02:CRATE2_HEALTHY" ) # returns 0 if no power in_robot_load_safe_position = Cpt( EpicsSignalRO, "-MO-PMAC-02:GPIO_INP_BITS.B2" ) # returns 1 if safe