Releases: pcdshub/pcdsdevices
v8.6.0 (2024-09-16)
API Breaks
- Removed
qpc_name
(:VPCNAME
PV).
This will be brought back in the next release.
Device Features
- Lcls2LaserTiming: Reduce timeout on moves from 2 seconds to 0.2 seconds
- Added HI_DI PV to PIPPLC class to show high voltage input for pump diagnostics
Bugfixes
- pos_ao PV in VCN class no longer reads 'connection timed out' in typhos screens
Maintenance
- Adjusted docs template headers to make them more intuitive
- Switch build recipes to rely on lightpath >= 1.0.5 (and lightpath-base in conda)
to avoid unnecessary ui dependencies.
Contributors
v8.5.0 (2024-08-22)
Features
MstaEnum
: Enum describing the motor record MSTA bits.NewportMstaEnum
: Enum describing the special Newport motor record MSTA bits.IMSMstaEnum
: Enum describing the special IMS motor record MSTA bits.
Device Updates
- Includes new PV RBVs for Picoscale at motor level:
pico_present
,pico_exists
,pico_sig_qual
,pico_enable
. - Includes new PV RBVs for Picoscale at controller level:
pico_stable
,pico_name
,pico_wmin
(working distance min),pico_wmax
(working distance max). - Add state mover to LI2K4.
- Added
RST_SW
pv to Ebara EVA pumps. This PV is used to reset alarm errors. - Added
PI_M824
motor class for MEC hexapod motors. TprTrigger
: change delay_setpoint and width_setpoint to kind=config.TprTrigger
: Make LCLS2 timing the default timing_mode.XOffsetMirrorNoBend
in mirror.py gets 3 new cooling readout components.Mono
in spectrometer.py gets 4 new RTD components and re-named RTDs 1-8. Also, Made cooling component names consistent with mirror cooling component names.- ST1K4 can move freely without automode.
EpicsMotorInterface
: Add a "raw" MSTA value, as well as the interpreted
values as a dictionary. Adds a "homed" property based on this. Uses a "generic"
MstaEnum class.Newport
: Add a "raw" MSTA value, as well as the interpreted values as a
dictionary. Adds a "homed" property based on this. Uses theNewportMstaEnum
class.IMS
: Add a "raw" MSTA value, as well as the interpreted values as a
dictionary. Adds a "homed" property based on this. Uses theIMSMstaEnum
class.btps.BtpsState
: add LS3, LS4, and LS6btps.DestinationConfig
: add LS3, LS4, and LS6btms_config.SourcePosition
: add LS3, LS4, and LS6btms_config.valid_sources
: add LS3, LS4, and LS6- UI file updates to support above device updates
sqr1
: overwrite SQR1Axis set method to avoid waiting and setpoints synchronization.FFMirrorZ
updated to read out flow sensors forMR4K4
andMR5K4
.lasers.btms_config.SourcePosition
: Add a new method to get the happi device
name, turn the PV name into a dictionary rather than generating from bay
number.IMS
: Move VBAS and VMAX signals into EpicsMotorInterface parent class.EpicsMotorInterface
: Update tab_whitelist for.VBAS
and.VMAX
signals.
New Devices
- added
SmarActPicoscale
subclass of SmarAct. - adds
MirrorStripe2D4P
for coating states with 2 dimensional position state movers with PMPS. - adds
XOffsetMirror2D4PState
for OffsetMirrors with 2D 4Position coating states. - adding new device PA1K4-PF
- Adds
OnePvMotor
: a pv_positioner that simply writes to and reads from a single PV.
This could be useful if you encounter a reason to use the motor interface on
non-motor PVs. XOffsetMirrorStateCoolNoBend
is added to supportMR1K4
.VonHamos6Crystal
: New MFX 6-crystals spectrometer running on plc-mfx-motion. Contains 6 crystals motions + 3 translations and 1 rotation for the base.VonHamosCrystal_2
: interface to the motor stack of a single crystal in the spectrometer.
Bugfixes
- Overwrite
velocity_max
andvelocity_base
signals forNewport
class to fix a bug that prevented these motors from moving. - `BtpsState``: Fix mis-match of LS3 and LS4 PVs.
- Prevent some devices from creating threads at high frequency when
trying to get the lightpath state. These devices classes include
XOffsetMirrorXYState
,AttenuatorSXR_Ladder
,
AttenuatorSXR_LadderTwoBladeLBD
,AT2L0
,XCSLODCM
, andXPPLODCM
- `SmarActEncodedTipTilt``: Fix typo in tilt axis instantiation.
- Replace the broken motor "disabled" (.DISP) typhos widget with a bitmask toggle button.
- Properly fill the
sys
keyword argument inTprTrigger.ns_delay_scan
btms_config.DestinationPosition
: fix description of RIX IP3btms_config.valid_destinations
: fix description of RIX IP3- Implement a workaround for an issue where
Lcls2LaserTiming
could not be scanned
with small scan steps. - Remove two targets from the tmo spectrometer's foil attenuator.
These were removed from the PLC/IOC.
This fixes an issue where the state device was not moveable. - Fix an issue with classes like
IMS
andNewport
where calling
set_current_position
on a position outside of the user limits
would fail, rather than change the limits to support the new
offsets.
Maintenance
- Allow motion uis to expand vertically once this functionality gets added to typhos.
- Use sympy instead of pint for unit conversions for simpler
maintainability. - Various CI tweaks due to numpy 2.0's chaos.
- Modifies entrypoint tests to be forward-compatible with py3.12 entrypoint API.
- Unpins numpy in CI, build incompatibility has been fixed upstream.
Contributors
v8.4.0 (2024-04-16)
Compatibility Notes
- If your SmarAct release is < R1.0.20, then the EPICS signals will timeout on the new PVs. Please make sure to update your children IOCs.
Features
- Adds
ioc_chan_num
andioc_card_num
to theEnvironmentalMonitor
happi container. - Adds the "embedded" file for
BeckhoffAxisEPSCustom
that allows for typhos screens to open using the compact controls. - Adds a convenience
re_arg
decorator to redefine and deprecate a function's args in a backwards-compatible way in thepcdsdevices.utils
submodule.
Device Updates
-
TprTrigger
: Update numerous PVs to "config", add TCMPL PV as theoperation
signal. -
Adds the following temperature monitoring signals to
SmarAct
andSmarActOpenLoop
:channel_temp
module_temp
-
Adds the following hidden config PVs to the (encoded)
SmarAct
device class:log_scale_offset
log_scale_inv
def_range_min
def_range_max
dist_code_inv
-
Adds the following missing epics signals to
MPODApalisModule
:supply_status
module_status
fine_adjustment_status
input_status
live_insertion_status
safety_loop_status
kill
-
Adds an
energy_with_acr_status
instance to CCM -
Updates
BeamEnergyRequest
argument from "bunch" to "pv_index" to better reflect the broader use cases. A backward compatible warning is now returned if the old bunch kwarg is used. -
Updates "atol" in
BeamEnergyRequestNoWait
to 0.5 (was 5). This is needed for self-seeding. -
XOffsetMirrorStateCool
andXOffsetMirrorNoBend
getsvariable_cool
for controlling 24V solenoid valve.
New Devices
- Adds
li2k4
asTMOLaserInCouplingTwoDimension
, with the x and y motors supported (no states yet). - Adds
Lcls2LaserTiming
: New class supporting control of laser timing for the OPCPA laser locker system. - Adds
SmarActEncodedTipTilt
to thepcdsdevices.epics_motor
submodule. - Adds
SmarPod
and related devices in newpcdsdevices.smarpod
submodule. - Adds a
CCMEnergyWithACRStatus
class to thepcdsdevices.ccm
submodule, a new variant ofCCMEnergy
that waits for ACR status before marking moves as complete.
Bugfixes
- Previously, calculate_on_get/put functions used in
MultiDerivedSignal
s inpcdsdevices.tpr
classes were not accessing their attrs correctly and would throw KeyErrors when called. Specifically, the name of the attr was being used as the key for items dictionary instead of the actual signal object - Also added unit tests for these
MultiDerivedSignal
s in thepcdsdevices.tpr
submodule. - Modify
sp1k4
Attenuator RTD class (TMOSpectrometer
) to match prefix forsp1k4
group device.
Contributors
v8.3.0 (2024-02-21)
Features
- Enabled the use of custom EPS screens for Beckhoff axes via the
BeckhoffAxisEPSCustom
class inpcdsdevices.epics_motor
and the accompanying ui template file.
Device Updates
- Added
flow_meter
toArrivalTimeMonitor
inpcdsdevices.atm
- Added
flow_meter
toAttenuatorSXR_Ladder
inpcdsdevices.attenuator
- Added
flow_meter
toAttenuatorSXR_LadderTwoBladeLBD
inpcdsdevices.attenuator
- Added
WaveFrontSensorTargetCool
andWaveFrontSensorTargetFDQ
topcdsdevices.device_types
- Added flow sensor components to
FFMirror
inpcdsdevices.mirror
- Added piezo pitch motors to the
ExitSlits
inpcdsdevices.slits
New Devices
- Added
PhotonCollimator
to readoutflow_switch
in new modulepcdsdevices.pc
- Added
WaveFrontSensorTargetFDQ
to read out theflow_meter
inpcdsdevices.wfs
- Added
MFXATM
topcdsdevices.atm
for the unique atm unit in the MFX hutch.
Bugfixes
- Fixed an issue where
AT2L0.clear_errors
would not run properly.
Maintenance
- Added missing regression tests for
AT2L0
. - Updated versions of pre-commit checks to latest and fix new flake8 errors.
Contributors
v8.2.0 (2023-12-19)
API Breaks
- Moved
K2700
andIM3L0_K2700
tokeithley
submodule. This is not expected to impact any known user code.
Features
- Adds attenuator RTD temperatures to sp1k4 (
TMOSpectrometer
), for display in GUI. - pcdsdevices now has a
digital_signals
module for simple digital io. - Added
PVPositionerNoInterrupt
, a pv positioner base class whose moves
cannot be interrupted (and will loudly complain about any such attempts).
Device Updates
- added
J120K
toSxrTestAbsorber
,XPIM
,IM2K0
,PowerSlits
- Restructured
Qadc134
with newQadc134Common
andQadcLcls1Timing
parent
classes.
New Devices
PPMCoolSwitch
ppms with cooling switch not a meter.WaveFrontSensorTargetCool
WaveFrontSensors with a cooling switch.J120K
a device class for a cooling switch.- Added
K6514
,GMD
(previously unimplemented),GMDPreAmp
, andSXRGasAtt
, taken from
/cds/group/pcds/pyps/apps/hutch-python/tmo/tmo/tmo_beamline_control.py
with some modifications Qadc134Lcls2
: A class for LCLS-II timing versions of the FMC134- New
TprTrigger
andTprMotor
device classes intpr
submodule,
analogous toTrigger
andEvrMotor
fromevr
submodule
Bugfixes
- LCLSI attenuator classes (generated from the
Attenuator
factory function)
will now raise a much clearer error for when they cannot interrupt a
previous move, without trying (and failing) to interrupt the previous move. - Fix an issue where
BeckhoffAxis
typhos screens would overreport
known false alarm errors.
Contributors
v8.1.0 (2023-10-16)
Device Updates
- Adds a
K2700
component toIM3L0
. - Reorders the
IM3L0
components to make theK2700
and power meter adjacent in the UI. The Keithley 2700 here is also measuring the power meter, but with a higher resolution. - Removes the
IM3L0
detailed screen in favor of an embeddedIM3L0_K2700
screen.
New Devices
- Adds the new (Keithley)
K2700
class and one-offIM3L0_K2700
instance for theIM3L0
Keithley that uses a pydm screen instead of the default detailed screen. - Adds
XOffsetMirrorNoBend
: anXOffsetMirror
that has no bender motors, like MR1L1.
Bugfixes
- The TMO Spectrometer (SP1K4) now correctly has 6 attenuator states
instead of 7, which was causing a myriad of issues due to other
internal bugs.
Maintenance
- Fixes documentation building due to missing IPython dependency in
docs-extras.
Contributors
v8.0.0 (2023-09-27)
API Breaks
-
Removes rarely-used TwinCAT state config PVs from
TwinCATStateConfigOne
that are also being removed from the IOCs.
These are still available on the PLC itself.delta
accl
dccl
locked
valid
-
Removes lens motors from
TMOSpectrometer
(SP1K4
).
Features
- EPICS motors now support setattr on their
limits
attribute.
That is, you can do e.g.motor.limits = (0, 100)
to set
the low limit to 0 and the high limit to 100. - Adds a blank subclass of
PPM
,IM3L0
, to allow for screens specific to this device that don't interfere with otherPPM
devices. - Adds a
IM3L0.detailed.ui
template to add embedded Keithley readout screen to detailed screen forIM3L0
.
IM3L0
has a Keithley multimeter added to it for higher-resolution readouts of its power meter. - ND (N-dimensional) TwinCAT states are now supported.
- Updates supported positioner typhos templates to use the new row widget,
TyphosPositionerRowWidget
.
Device Updates
- Updates limits for
LaserTiming
,LaserTimingCompensation
, andLxtTtcExample
from +/-10us to +/-100us. - Adds missing
pump_state
(:STATE_RBV
) signal toPTMPLC
. - Adds chin guard RTDs to
FFMirrorZ
inmirror.py
. LODCM
: Adds theE1C
pseudo-interface for moving only the first tower energy.SmarAct
: Adds signals for performing axis calibration and checking calibration status.- Adds laser destination 1 (LD1), where a diagnostics box is installed, to
the Laser Beam Transport System (BTPS) state configuration. Updates
overview and configuration screens to display LD1. TwinCATInOutPositioner
by default now uses 2 states as its name implies
(excluding the "unknown" transition sate), with one representing the "out"
state and one representing the "in" state.XOffsetMirrorSwitch
: addscool_flow1
,cool_flow2
, andcool_press
.XOffsetMirrorSwitch
gets component reordering.- Adds TIXEL Manipulator motors to
LAMPMagneticBottle
. - Adds twincat states and the ST3K4 automation switch to the SXR test absorber.
This device ispcdsdevices.sxr_test_absorber.SxrTestAbsorber
and is named ST1K4. - Includes the Fresnel Zone Plate (FZP) 3D states on the
TMOSpectrometer
device. TMOSpectrometer
(SP1K4
): adds two new motors for solid attenuator and one for thorlabs lens x.- Add the following signals to
BeckhoffAxis
:enc_count
: the raw encoder count.pos_diff
: the distance between the readback and trajectory setpoint.hardware_enable
: an indicator for hardware enable signals, such as STO buttons.
- Added new PVS to
OpticsPitchNotepad
for storing theMR2L3
channel-cut monochromator (CCM) pitch position setpoints for its two coatings.
New Devices
FDQ
flow meter implemented inanalog_signals.py
.PPMCOOL
added topim.py
.KBOMirrorChin
added tomirror.py
SQR1Axis
: A class representing a single axis of the tri-sphere motion system. It inherits
from PVPositionerIsClose and includes attributes for setpoint, readback, actuation, and
stopping the motion.SQR1
: A class representing the entire tri-sphere motion system. It is a Device that
aggregates multiple SQR1Axis instances for each axis. It also includes methods for
multi-axis movement and stopping the motion.- Includes example devices and components that correspond to
lcls-plc-example-motion <https://github.com/pcdshub/lcls-plc-example-motion>
_. - Adds
BeckhoffAxisEPS
, which has the new-style EPS PVs on its directional and power enables.
These correspond to structured EPS logic on the PLC that can be inspected from higher level applications.
Bugfixes
KBOMirrorHE
inmirror.py
only has 1 flow sensor per mirror, so remove one.- Fixes an issue where the generic
Motor
factory function would not recognize devices with
MCS2
in the PV name. These are now recognized asSmarAct
devices.
Maintenance
- Updates
BtpsState
comments and logic to help guide future port additions. - TwinCAT state devices now properly report that their
state_velo
should be visualized with 3 decimal places instead of with 0.
This caused no issues in hutch-python and was patched as a bug in
typhos, and is done for completeness here.
Contributors
v7.4.3 (2023-07-11)
Bugfixes
- Fix typo in zoom motor prefix for PIM devices.
Maintenance
- Fix conda recipe test-requires.
- Remove sqlalchemy and xraydb pins from requirements.txt.
These were pinned because the most recent versions of these packages
were previously incompatible with each other. This has since been resolved.
Contributors
v7.4.2 (2023-07-07)
Device Updates
.screen()
and.post_elog_status()
methods were added to the
BaseInterface whitelist for tab completion.
Contributors
v7.4.1 (2023-06-30)
Device Updates
- QminiSpectrometer: Added some new PVs and modified others related to recent
IOC changes. Embedded UI was updated to reflect this.
Maintenance
- unpin pyqt, with the hope of supporting py3.11