Ready-to-Use Devices¶
These devices are have ready-made classes in Python. To configure them, the user need only provide a PV prefix and a name.
EpicsMotor¶
Create an EpicsMotor
to communicate with a single EPICS motor record:
from ophyd import EpicsMotor
# the two-theta motor
tth = EpicsMotor('XF:28IDC-ES:1{Dif:1-Ax:2ThI}Mtr', name='tth')
- class ophyd.epics_motor.EpicsMotor(prefix='', *, name, kind=None, read_attrs=None, configuration_attrs=None, parent=None, **kwargs)¶
An EPICS motor record, wrapped in a
Positioner
Keyword arguments are passed through to the base class, Positioner
- Parameters
- prefixstr
The record to use
- read_attrssequence of attribute names
The signals to be read during data acquisition (i.e., in read() and describe() calls)
- namestr, optional
The name of the device
- parentinstance or None
The instance of the parent device, if applicable
- settle_timefloat, optional
The amount of time to wait after moves to report status completion
- timeoutfloat, optional
The default timeout to use for motion requests, in seconds.
- check_value(pos)¶
Check that the position is within the soft limits
- property egu¶
The engineering units (EGU) for a position
- get_lim(flag)¶
Returns the travel limit of motor
flag > 0: returns high limit
flag < 0: returns low limit
flag == 0: returns None
Included here for compatibility with similar with SPEC command.
- Parameters
- highfloat
Limit of travel in the positive direction.
- lowfloat
Limit of travel in the negative direction.
- home(direction, wait=True, **kwargs)¶
Perform the default homing function in the desired direction
- Parameters
- directionHomeEnum
Direction in which to perform the home search.
- move(position, wait=True, **kwargs)¶
Move to a specified position, optionally waiting for motion to complete.
- Parameters
- position
Position to move to
- moved_cbcallable
Call this callback when movement has finished. This callback must accept one keyword argument: ‘obj’ which will be set to this positioner instance.
- timeoutfloat, optional
Maximum time to wait for the motion. If None, the default timeout for this positioner is used.
- Returns
- statusMoveStatus
- Raises
- TimeoutError
When motion takes longer than timeout
- ValueError
On invalid positions
- RuntimeError
If motion fails other than timing out
- property moving¶
Whether or not the motor is moving
- Returns
- movingbool
- property position¶
The current position of the motor in its engineering units
- Returns
- positionfloat
- property precision¶
The precision of the readback PV, as reported by EPICS
- property report¶
A report on the object.
- set_current_position(pos)¶
Configure the motor user position to the given value
- Parameters
- pos
Position to set.
- set_lim(low, high)¶
Sets the low and high travel limits of motor
No action taken if motor is moving.
Low limit is set to lesser of (low, high)
High limit is set to greater of (low, high)
Included here for compatibility with similar with SPEC command.
- Parameters
- highfloat
Limit of travel in the positive direction.
- lowfloat
Limit of travel in the negative direction.
- stop(*, success=False)¶
Stop the Device and all (instantiated) subdevices
EpicsScaler¶
Create an EpicsScaler
to control an EPICS scaler record:
from ophyd import EpicsScaler
scaler = EpicsScaler('XF:28IDC-ES:1{Sclr:1}', name='tth')
- class ophyd.scaler.EpicsScaler(*args, **kwargs)¶
SynApps Scaler Record interface
EpicsMCA and EpicsDXP¶
MCA records and
DXP-based devices are also supported, through the EpicsMCA
and EpicsDXP
devices.
- class ophyd.mca.EpicsMCARecord(*args, **kwargs)¶
SynApps MCA Record interface
- stop(*, success=False)¶
Stop the Device and all (instantiated) subdevices
- class ophyd.mca.EpicsDXP(prefix='', *, name, kind=None, read_attrs=None, configuration_attrs=None, parent=None, **kwargs)¶
All high-level DXP parameters for each channel
MotorBundle¶
Creating ‘bundles’ of motors is very common so we also have a helper
class that tweaks the default behavior of read_attrs
,
configuration_attrs
, and hints
- class ophyd.epics_motor.MotorBundle(prefix='', *, name, kind=None, read_attrs=None, configuration_attrs=None, parent=None, **kwargs)¶
Sub-class this to device a bundle of motors
This provides better default behavior for :ref:
hints
.
This must be sub-classed (like Device
) to be useful.
from ophyd import MotorBundle, EpicsMotor
from ophyd import Component as Cpt
class StageXY(MotorBundle):
x = Cpt(EpicsMotor, ':X')
y = Cpt(EpicsMotor, ':Y')
stage = StageXY('STAGE_PV', name='stage')