pcdsdevices.twincat_motor.TwinCATAxisEPS

class pcdsdevices.twincat_motor.TwinCATAxisEPS(prefix='', *, name, kind=None, read_attrs=None, configuration_attrs=None, parent=None, **kwargs)

Extended TwinCATAxis with relevant EPS fields.

This is to be used in TwinCATAxisEPS for cases when the motor has EPS considerations. Otherwise, these fields are not active in PLC logic and are distracting or confusing.

Ophyd Device Components

Attribute

Class

Suffix

Docs

Kind

Notes

setpoint

PytmcSignal

fPosition

hinted

Inherited from TwinCATAxis

readback

PytmcSignal

fActPosition

hinted

Inherited from TwinCATAxis

done

PytmcSignal

bDone

normal

Inherited from TwinCATAxis

actuate

PytmcSignal

bMoveCmd

normal

Inherited from TwinCATAxis

stop_signal

PytmcSignal

bHalt

normal

Inherited from TwinCATAxis

reset_signal

PytmcSignal

bReset

normal

Inherited from TwinCATAxis

velocity

PytmcSignal

fVelocity

config

Inherited from TwinCATAxis

acceleration

PytmcSignal

fAcceleration

config

Inherited from TwinCATAxis

deceleration

PytmcSignal

fDeceleration

config

Inherited from TwinCATAxis

jerk

PytmcSignal

fJerk

config

Inherited from TwinCATAxis

enable_mode

PytmcSignal

eEnableMode

config

Inherited from TwinCATAxis

brake_mode

PytmcSignal

eBrakeMode

config

Inherited from TwinCATAxis

motor_is_moving

PytmcSignal

bMoving

normal

Inherited from TwinCATAxis

motor_is_moving_negative

PytmcSignal

bNegativeDirection

normal

Inherited from TwinCATAxis

motor_is_moving_positive

PytmcSignal

bPositiveDirection

normal

Inherited from TwinCATAxis

power_is_enabled

PytmcSignal

bPowerIsEnabled

normal

Inherited from TwinCATAxis

high_limit_switch

PytmcSignal

bLimitFwd

normal

Inherited from TwinCATAxis

low_limit_switch

PytmcSignal

bLimitBwd

normal

Inherited from TwinCATAxis

negative_dir_enabled

PytmcSignal

bNegativeMotionIsEnabled

normal

Inherited from TwinCATAxis

positive_dir_enabled

PytmcSignal

bPositiveMotionIsEnabled

normal

Inherited from TwinCATAxis

command

PytmcSignal

eCommand

normal

Inherited from TwinCATAxis

motor_egu

PytmcSignal

sEGU

normal

Inherited from TwinCATAxis

low_limit_travel

EpicsSignal

NC:MinPos:Val_RBV

config

Inherited from TwinCATAxis

high_limit_travel

EpicsSignal

NC:MaxPos:Val_RBV

config

Inherited from TwinCATAxis

low_limit_enable

EpicsSignal

NC:SoftPosMinOn:Val_RBV

config

Inherited from TwinCATAxis

high_limit_enable

EpicsSignal

NC:SoftPosMaxOn:Val_RBV

config

Inherited from TwinCATAxis

homed

PytmcSignal

bHomed

normal

Inherited from TwinCATAxis

home_mode

PytmcSignal

eHomeMode

config

Inherited from TwinCATAxis

plc

BeckhoffAxisPLC

PLC error handling and aux functions.

normal

Inherited from TwinCATAxis

eps_forward

EPS

stEPSF:

EPS forward enables.

normal

eps_backward

EPS

stEPSB:

EPS backward enables.

normal

eps_power

EPS

stEPSP:

EPS power enables.

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.

check_limit_switches()

Check the limit switches.

Logic structure reused from EpicsMotorInterface for API consistency. Returns a string summary.

clear_error()

Identical to BeckhoffAxis.clear_error. Clears any active motion/plc errors on this axis.

clear_limits()

Set both low and high limits to 0.

Duplicated from EpicsMotorInterface for function and API consistency.

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.

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.

home(wait: bool = True, **kwargs)

Adapted from BeckhoffAxis.home.

Executes the PLC-programmed home routine. For hardware where only one homing method may be active/configured.

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

Functionally adapted from BeckhoffAxis.move.

Sets up tailored end-of-move handler and error capture, as in BeckhoffAxis. Prepares a new MoveStatus for custom error interpretation.

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.

reset(*, success=False)
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) 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.

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

Limit of travel in the positive direction. Adapted from EpicsMotorInterface.

Parameters:

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

Raises:

ValueError – When in motion or position outside of limit.

set_low_limit(value)

Set the low limit. Adapted from EpicsMotorInterface.

Parameters:

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

Raises:

ValueError – When 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

actuate_value = 1
configuration_attrs
connected
connection_timeout
done_value = 1
egu

The engineering units (EGU) for this motor. Updated via the motor_egu PV.

enabled

returns: * bool – True if power is enabled and either negative or positive direction is enabled. * Explanation * ———– * - Returns True if

  • Power is on (power_is_enabled)

  • At least one direction (negative_dir_enabled OR positive_dir_enabled) is enabled

high_limit
hints
kind
limits

Override limits property to always return the latest values from the soft limit PVs (low_limit_travel and high_limit_travel).

This ensures no stale/cached values are reported.

low_limit
moving

Whether or not the motor is moving.

Duplicated logic from EpicsMotorInterface for API consistency.

Returns:

moving (bool)

position

The current position of the motor in its engineering units

Returns:

position (float)

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

tolerated_alarm = 0