pcdsdevices.sqr1.SQR1Axis
- class pcdsdevices.sqr1.SQR1Axis(prefix: str, axis: Axis, sync_setpoints: Callable | None = None, **kwargs)
Single axis of the square-one tri-sphere motion system.
A PVPositionerIsClose subclass that includes attributes for setting the setpoint, reading back the current position, actuating the motion, and stopping the motion.
- Parameters:
prefix (str) – The EPICS PV prefix for this axis.
axis (str) – The axis identifier (‘X’, ‘Y’, ‘Z’, ‘rX’, ‘rY’, ‘rZ’).
sync_setpoints (callable or None, optional) – A callback function to synchronize setpoints before moving the axis.
**kwargs (dict) – Additional keyword arguments to pass to the base class constructor
- setpoint
An EPICS signal for setting the desired position of the axis.
- Type:
ophyd.signal.EpicsSignal
- readback
An EPICS signal for reading back the current position of the axis.
- Type:
ophyd.signal.EpicsSignal
- actuate
An EPICS signal for initiating the motion of the axis.
- Type:
ophyd.signal.EpicsSignal
- actuate_value
The value to be set on the ‘actuate’ signal to initiate motion.
- Type:
any, optional
- stop_signal
An EPICS signal for stopping the motion of the axis.
- Type:
ophyd.signal.EpicsSignal
- stop_value
The value to be set on the ‘stop_signal’ to stop motion.
- Type:
any, optional
- Example
>>> axis_x = SQR1Axis(prefix="SQR1:AXIS_X", axis="X") >>> axis_x.move(5.0) # Move the X-axis to position 5.0
Attribute
Class
Suffix
Docs
Kind
Notes
done
InternalSignal
normal
Inherited from
PVPositionerIsClose
setpoint (FCpt)
EpicsSignal
{prefix}:TARGET:{_axis}
normal
readback (FCpt)
EpicsSignal
{prefix}:TARGET:{_axis}:RBV
hinted
actuate
EpicsSignal
:MOV
normal
stop_signal
EpicsSignal
:KILL
normal
Methods
- configure(d: Dict[str, Any]) Tuple[Dict[str, Any], Dict[str, Any]]
Configure the device for something during a run
This default implementation allows the user to change any of the
configuration_attrs
. Subclasses might override this to perform additional input validation, cleanup, etc.- Parameters:
d (dict) – The configuration dictionary. To specify the order that the changes should be made, use an OrderedDict.
- Returns:
(old, new) tuple of dictionaries
Where old and new are pre- and post-configure configuration states.
- describe() OrderedDictType[str, Dict[str, Any]]
Provide schema and meta-data for
read()
.This keys in the
OrderedDict
this method returns must match the keys in theOrderedDict
return byread()
.This provides schema related information, (ex shape, dtype), the source (ex PV name), and if available, units, limits, precision etc.
- Returns:
data_keys (OrderedDict) – The keys must be strings and the values must be dict-like with the
event_model.event_descriptor.data_key
schema.
- done_comparator(readback: float, setpoint: float) bool
Check if the readback is close to the setpoint value.
Uses numpy.isclose to make the comparison. Tolerance values atol and rtol for numpy.isclose are taken from the attributes self.atol and self.rtol, which can be defined as class attributes or passed in as init parameters.
If atol or rtol are omitted, the default values from numpy are used instead.
- get(**kwargs)
Get the value of all components in the device
Keyword arguments are passed onto each signal.get(). Components beginning with an underscore will not be included.
- move(position: float, wait: bool = True, timeout: float = None, moved_cb: Callable | None = None, sync_enable: bool = True)
Move the axis to the specified position.
- Parameters:
position (float) – The desired position to move the axis to.
wait (bool, optional) – If
True
(default), wait for motion to complete before returning. IfFalse
, return immediately after initiating the motion.timeout (float, optional) – The maximum time (in seconds) to wait for the motion to complete.
moved_cb (callable or None, optional) – A callback function to execute when the motion has completed.
sync_enable (bool, optional) – If
True
(default) synchronize setpoints before moving the axis.
- Returns:
MoveStatus – Track the state of a movement from some initial to final position.
Example
>>> axis_x = SQR1Axis(prefix="SQR1:AXIS_X", axis="X") >>> axis_x.move(5.0) # Move the X-axis to position 5.0
- read() OrderedDictType[str, Dict[str, Any]]
Read data from the device.
This method is expected to be as instantaneous as possible, with any substantial acquisition time taken care of in
trigger()
.The
OrderedDict
returned by this method must have identical keys (in the same order) as theOrderedDict
returned bydescribe()
.By convention, the first key in the return is the ‘primary’ key and maybe used by heuristics in
bluesky
.The values in the ordered dictionary must be dict (-likes) with the keys
{'value', 'timestamp'}
. The'value'
may have any type, the timestamp must be a float UNIX epoch timestamp in UTC.- Returns:
data (OrderedDict) – The keys must be strings and the values must be dict-like with the keys
{'value', 'timestamp'}
- read_configuration() OrderedDictType[str, Dict[str, Any]]
Dictionary mapping names to value dicts with keys: value, timestamp
To control which fields are included, change the Component kinds on the device, or modify the
configuration_attrs
list.
- set(new_position: Any, *, timeout: float | None = None, moved_cb: Callable | None = None, wait: bool = False) MoveStatus
Set SQR1 single axis new position.
- Parameters:
new_position (Any) – The target position to move to.
timeout (float, optional) – The maximum time to wait for the move to complete.If None, no timeout is applied.
moved_cb (Callable, optional) – A callback function that is called when the move is complete.
wait (bool, optional) – always will be false. kept for consistent method signature across future implementations.
- Returns:
StatusBase – Status object to indicate when the motion is done.
Notes
This method calls the
move
method with the provided parameters, while keepingwait=False
andsync_enable=False
to allow multi-axis scans without one axis blocking other axes.
- stop(*, success=False)
Stop the Device and all (instantiated) subdevices
- summary()
- trigger() StatusBase
Trigger the device and return status object.
This method is responsible for implementing ‘trigger’ or ‘acquire’ functionality of this device.
If there is an appreciable time between triggering the device and it being able to be read (via the
read()
method) then this method is also responsible for arranging that theStatusBase
object returned by this method is notified when the device is ready to be read.If there is no delay between triggering and being readable, then this method must return a
StatusBase
object which is already completed.- Returns:
status (StatusBase) –
StatusBase
object which will be marked as complete when the device is ready to be read.
Attributes
- actuate_value = 1
- configuration_attrs
- connected
- done_value = 1
- egu
The engineering units (EGU) for a position
- high_limit
- hints
- kind
- limits
- low_limit
- moving
Whether or not the motor is moving
If a
done
PV is specified, it will be read directly to get the motion status. If not, it determined from the internal state of PVPositioner.- Returns:
bool
- position
The current position of the motor in its engineering units
- Returns:
position (any)
- put_complete
- settle_time
Amount of time to wait after moves to report status completion
- stop_value = 1
- subscriptions: ClassVar[FrozenSet[str]] = frozenset({'_req_done', 'acq_done', 'done_moving', 'readback', 'start_moving'})
- timeout
Amount of time to wait before to considering a motion as failed