pcdsdevices.epics_motor.SmarAct

class pcdsdevices.epics_motor.SmarAct(*args, **kwargs)

Class for encoded SmarAct motors controlled via the MCS2 controller.

Ophyd Device Components

Attribute

Class

Suffix

Docs

Kind

Notes

user_readback (UpdateComponent)

EpicsSignalROEditMD

.RBV

Component attribute
Component(EpicsSignalRO, '.RBV', auto_monitor=True, kind='hinted')

hinted

Inherited from EpicsMotorInterface

user_setpoint (UpdateComponent)

EpicsSignalEditMD

.VAL

Component attribute
Component(EpicsSignal, '.VAL', limits=True, auto_monitor=True, kind='normal')

normal

Inherited from EpicsMotorInterface

user_offset

EpicsSignal

.OFF

config

Inherited from EpicsMotorInterface

user_offset_dir

EpicsSignal

.DIR

config

Inherited from EpicsMotorInterface

offset_freeze_switch

EpicsSignal

.FOFF

omitted

Inherited from EpicsMotorInterface

set_use_switch

EpicsSignal

.SET

omitted

Inherited from EpicsMotorInterface

velocity

EpicsSignal

.VELO

config

Inherited from EpicsMotorInterface

acceleration

EpicsSignal

.ACCL

config

Inherited from EpicsMotorInterface

motor_egu

EpicsSignal

.EGU

config

Inherited from EpicsMotorInterface

motor_is_moving

EpicsSignalRO

.MOVN

normal

Inherited from EpicsMotorInterface

motor_done_move

EpicsSignalRO

.DMOV

omitted

Inherited from EpicsMotorInterface

high_limit_switch

EpicsSignalRO

.HLS

normal

Inherited from EpicsMotorInterface

low_limit_switch

EpicsSignalRO

.LLS

normal

Inherited from EpicsMotorInterface

high_limit_travel (UpdateComponent)

EpicsSignal

.HLM

Component attribute
Component(EpicsSignal, '.HLM', auto_monitor=True, kind='omitted')

config

Inherited from EpicsMotorInterface

low_limit_travel (UpdateComponent)

EpicsSignal

.LLM

Component attribute
Component(EpicsSignal, '.LLM', auto_monitor=True, kind='omitted')

config

Inherited from EpicsMotorInterface

direction_of_travel

EpicsSignal

.TDIR

normal

Inherited from EpicsMotorInterface

motor_stop

EpicsSignal

.STOP

normal

Inherited from EpicsMotorInterface

home_forward

EpicsSignal

.HOMF

normal

Inherited from EpicsMotorInterface

home_reverse

EpicsSignal

.HOMR

normal

Inherited from EpicsMotorInterface

disabled

EpicsSignal

.DISP

omitted

Inherited from EpicsMotorInterface

description

EpicsSignal

.DESC

normal

Inherited from EpicsMotorInterface

dial_position

EpicsSignalRO

.DRBV

normal

Inherited from EpicsMotorInterface

velocity_base

EpicsSignal

.VBAS

omitted

Inherited from EpicsMotorInterface

velocity_max

EpicsSignal

.VMAX

config

Inherited from EpicsMotorInterface

msta_raw

EpicsSignalRO

.MSTA

omitted

Inherited from EpicsMotorInterface

pos_type

EpicsSignal

:PTYPE_RBV

config

needs_calib

EpicsSignalRO

:NEED_CALIB

config

do_calib

EpicsSignal

:DO_CALIB.PROC

config

log_scale_offset

EpicsSignal

:LSCO

Logical Scale Offset

omitted

def_range_min

EpicsSignal

:DRMIN

Default Range Minimum

omitted

def_range_max

EpicsSignal

:DRMAX

Default Range Maximum

omitted

log_scale_inv

EpicsSignal

:LSCI_RBV

Default Range Minimum

omitted

dist_code_inv

EpicsSignal

:DCIN_RBV

Distance Code Inversion

omitted

channel_temp

EpicsSignalRO

:CHANTEMP

Temperature at the channel’s amplifier

normal

module_temp

EpicsSignalRO

:MODTEMP

Temperature of the MCS2 Module in the rack

normal

open_loop

SmarActOpenLoop

omitted

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.

check_limit_switches()

Check the limits switches.

Returns:

limit_switch_indicator (str) – Indicate which limit switch is activated.

clear_limits()

Set both low and high limits to 0.

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 the OrderedDict return by read().

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.

disable()

Disables the motor.

When disabled, all EPICS puts to the base record will be dropped.

enable()

Enables the motor.

When disabled, all EPICS puts to the base record will be dropped.

end_monitor_thread()

Stop a camonitor() or wm_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.

get_high_limit()

Get high limit.

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:
  • high (float) – Limit of travel in the positive direction.

  • low (float) – Limit of travel in the negative direction.

get_low_limit()

Get the low limit.

home(direction, wait=True, **kwargs)

Perform the default homing function in the desired direction

Parameters:

direction (HomeEnum) – Direction in which to perform the home search.

move(position: float, wait: bool = True, **kwargs) MoveStatus

Move to a specified position, optionally waiting for motion to complete.

Parameters:
  • position – Position to move to

  • moved_cb (callable) – Call this callback when movement has finished. This callback must accept one keyword argument: ‘obj’ which will be set to this positioner instance.

  • timeout (float, optional) – Maximum time to wait for the motion. If None, the default timeout for this positioner is used.

Returns:

status (MoveStatus)

Raises:
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 to False.

  • 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 to False.

  • 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 the OrderedDict returned by describe().

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 = None, moved_cb: Callable | None = None, wait: bool = False) StatusBase

Set a value and return a Status object

Parameters:
  • new_position (object) – The input here is whatever the device requires (this should be over-ridden by the implementation. For example a motor would take a float, a shutter the strings {‘Open’, ‘Close’}, and a goineometer (h, k, l) tuples

  • timeout (float, optional) – Maximum time to wait for the motion. If None, the default timeout for this positioner is used.

  • moved_cb (callable, optional) –

    Deprecated

    Call this callback when movement has finished. This callback must accept one keyword argument: ‘obj’ which will be set to this positioner instance.

  • wait (bool, optional) –

    Deprecated

    If the method should block until the Status object reports it is done.

    Defaults to False

Returns:

status (StatusBase) – Status object to indicate when the motion / set is done.

set_current_position(pos)

Configure the motor user position to the given value

Override ophyd’s method temporarily for error handling.

Parameters:

pos (number) – Position to set.

set_high_limit(value)

Limit of travel in the positive direction.

Parameters:

value (float) – High limit value to be set.

Raises:

ValueError – When motor in motion or position outside of limit.

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:
  • high (float) – Limit of travel in the positive direction.

  • low (float) – Limit of travel in the negative direction.

set_low_limit(value)

Set the low limit.

Parameters:

value (float) – Limit of travel in the negative direction.

Raises:

ValueError – When motor in motion or position outside of limit.

set_position(position)

Alias for set_current_position.

Will fail if the motor does not have set_current_position.

status() str

Returns a str with the current pv values for the device.

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 the StatusBase 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

configuration_attrs
connected
egu

Engineering units str if available, otherwise ‘’

Use the monitored/cached value rather than checking EPICS.

high_limit
hints
homed

Get the home status of the motor as reported by the MSTA field.

kind
limits

Override the limits attribute

low_limit
moving

Whether or not the motor is moving

Returns:

moving (bool)

msta

Returns the msta fields as a dictionary.

position

The current position of the motor in its engineering units

Returns:

position (float)

precision

The precision of the readback PV, as reported by EPICS

settle_time

Amount of time to wait after moves to report status completion

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

tolerated_alarm = 0