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
Ophyd Device Components 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
- camonitor()
Shows a live-updating motor position in the terminal.
This will be the value that is returned by the
position
attribute.This method ends cleanly at a ctrl+c or after a call to
end_monitor_thread()
, which may be useful when this is called in a background thread.
- 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.
- end_monitor_thread()
Stop a
camonitor()
orwm_update()
that is running in another thread.
- 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
- mv(position, timeout=None, wait=False, log=True)
Absolute move to a position.
- Parameters:
position – Desired end position.
timeout (float, optional) – If provided, the mover will throw an error if motion takes longer than timeout to complete. If omitted, the mover’s default timeout will be use.
wait (bool, optional) – If
True
, wait for motion completion before returning. Defaults toFalse
.log (bool, optional) – If
True
, logs the move at INFO level.
- mv_ginput(timeout=None)
Moves to a location the user clicks on.
If there are existing plots, this will be the position on the most recently active plot. If there are no existing plots, an empty plot will be created with the motor’s limits as the range.
- mvr(delta, timeout=None, wait=False, log=True)
Relative move from this position.
- Parameters:
delta (float) – Desired change in position.
timeout (float, optional) – If provided, the mover will throw an error if motion takes longer than timeout to complete. If omitted, the mover’s default timeout will be use.
wait (bool, optional) – If
True
, wait for motion completion before returning. Defaults toFalse
.log (bool, optional) – If
True
, logs the move at INFO level.
- post_elog_status()
Post device status to the primary elog, if possible.
- 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.
- screen()
Open a screen for controlling the device.
Default behavior is the typhos screen, but this method can be overridden for more specialized screens.
- set(new_position: Any, *, timeout: float = None, moved_cb: Callable = 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.
- classmethod set_defaults(*, connection_timeout=10.0)
Set class-wide defaults for device communications
This may be called only before any instances of Device are made.
This setting applies to the class it is called on and all its subclasses. For example,
>>> Device.set_defaults(...)
will apply to any Device subclass.
- Parameters:
connection_timeout (float, optional) – Time (seconds) allocated for establishing a connection with the IOC.
- Raises:
RuntimeError – If called after
EpicsSignalBase
has been instantiated for the first time.
- set_position(position)
Alias for set_current_position.
Will fail if the motor does not have set_current_position.
- 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.
- tweak(scale=0.1)
Control this motor using the arrow keys.
Use left arrow to step negative and right arrow to step positive. Use up arrow to increase step size and down arrow to decrease step size. Press q or ctrl+c to quit.
- Parameters:
scale (float) – starting step size, default = 0.1
- umv(position, timeout=None, log=True, newline=True)
Move to a position, wait, and update with a progress bar.
- Parameters:
position (float) – Desired end position.
timeout (float, optional) – If provided, the mover will throw an error if motion takes longer than timeout to complete. If omitted, the mover’s default timeout will be use.
log (bool, optional) – If True, logs the move at INFO level.
newline (bool, optional) – If True, inserts a newline after the updates.
- umvr(delta, timeout=None, log=True, newline=True)
Relative move from this position, wait, and update with a progress bar.
- Parameters:
delta (float) – Desired change in position.
timeout (float, optional) – If provided, the mover will throw an error if motion takes longer than timeout to complete. If omitted, the mover’s default timeout will be use.
log (bool, optional) – If True, logs the move at INFO level.
newline (bool, optional) – If True, inserts a newline after the updates.
- wait(timeout=None)
- wm()
Get the mover’s current positon (where motor).
- wm_update()
Shows a live-updating motor position in the terminal.
This will be the value that is returned by the
position
attribute.This method ends cleanly at a ctrl+c or after a call to
end_monitor_thread()
, which may be useful when this is called in a background thread.
Attributes
- actuate_value = 1
- configuration_attrs
- connected
- connection_timeout
- 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