pcdsdevices.epics_motor.MMC100

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

PCDS implementation of the Motor Record for MMC100 controlled motors.

This is a subclass of PCDSMotorBase that: - Overwrites missing freeze offset signal for Newports - Changes the homing PVs to those used for moving to limits on MMC100s

Parameters:
  • prefix (str) – The EPICS PV prefix for this motor.

  • name (str) – An identifying name for this motor.

  • settle_time (float, optional) – The amount of extra time to wait before interpreting a move as done.

  • timeout (float, optional) – The amount of time to wait before automatically marking a long in-progress move as failed.

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 PCDSMotorBase

user_setpoint (UpdateComponent)

EpicsSignalEditMD

.VAL

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

normal

Inherited from PCDSMotorBase

user_offset

EpicsSignal

.OFF

config

Inherited from PCDSMotorBase

user_offset_dir

EpicsSignal

.DIR

config

Inherited from PCDSMotorBase

offset_freeze_switch

Signal

omitted

Inherited from PCDSMotorBase

set_use_switch

EpicsSignal

.SET

omitted

Inherited from PCDSMotorBase

velocity

EpicsSignal

.VELO

config

Inherited from PCDSMotorBase

acceleration

EpicsSignal

.ACCL

config

Inherited from PCDSMotorBase

motor_egu

EpicsSignal

.EGU

config

Inherited from PCDSMotorBase

motor_is_moving

EpicsSignalRO

.MOVN

normal

Inherited from PCDSMotorBase

motor_done_move

EpicsSignalRO

.DMOV

omitted

Inherited from PCDSMotorBase

high_limit_switch

EpicsSignalRO

.HLS

normal

Inherited from PCDSMotorBase

low_limit_switch

EpicsSignalRO

.LLS

normal

Inherited from PCDSMotorBase

high_limit_travel (UpdateComponent)

EpicsSignal

.HLM

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

config

Inherited from PCDSMotorBase

low_limit_travel (UpdateComponent)

EpicsSignal

.LLM

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

config

Inherited from PCDSMotorBase

direction_of_travel

Signal

omitted

Inherited from PCDSMotorBase

motor_stop

EpicsSignal

.STOP

normal

Inherited from PCDSMotorBase

home_forward

EpicsSignal

.MLP

omitted

Inherited from PCDSMotorBase

home_reverse

EpicsSignal

.MLN

omitted

Inherited from PCDSMotorBase

disabled

EpicsSignal

.DISP

omitted

Inherited from PCDSMotorBase

description

EpicsSignal

.DESC

normal

Inherited from PCDSMotorBase

dial_position

EpicsSignalRO

.DRBV

normal

Inherited from PCDSMotorBase

velocity_base

Signal

omitted

Inherited from PCDSMotorBase

velocity_max

EpicsSignal

.VMAX

config

Inherited from PCDSMotorBase

msta_raw

EpicsSignalRO

.MSTA

omitted

Inherited from PCDSMotorBase

motor_spg

EpicsSignal

.SPG

omitted

Inherited from PCDSMotorBase

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()

Opens Epics motor expert screen e.g. for reseting motor after stalling.

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)

Change the offset such that pos is the current position.

This is a re-implementation of the ophyd set_current_position, which does not work on some legacy PCDS motors because they do not use the standard motor record. This non-standard record does not respond correctly to wait=True on the VAL field while SET/USE is set 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.

spg_go()

Resumes paused movement.

spg_pause()

Pauses a move.

Move will resume if go() is called.

spg_stop()

Stops the motor.

After which the motor must be set back to ‘go’ via spg_go() in order to move again.

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