Skip to content

Releases: pcdshub/pcdsdevices

v8.6.0 (2024-09-16)

16 Sep 23:10
d6e9843
Compare
Choose a tag to compare

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)

26 Aug 21:45
b33b7c4
Compare
Choose a tag to compare

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 the NewportMstaEnum
    class.
  • IMS: Add a "raw" MSTA value, as well as the interpreted values as a
    dictionary. Adds a "homed" property based on this. Uses the IMSMstaEnum
    class.
  • btps.BtpsState: add LS3, LS4, and LS6
  • btps.DestinationConfig: add LS3, LS4, and LS6
  • btms_config.SourcePosition: add LS3, LS4, and LS6
  • btms_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 for MR4K4 and MR5K4.
  • 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 support MR1K4.
  • 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 and velocity_base signals for Newport
    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, and XPPLODCM
  • `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 in TprTrigger.ns_delay_scan
  • btms_config.DestinationPosition: fix description of RIX IP3
  • btms_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 and Newport 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)

17 Apr 00:01
49fc5b1
Compare
Choose a tag to compare

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 and ioc_card_num to the EnvironmentalMonitor 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 the pcdsdevices.utils submodule.

Device Updates

  • TprTrigger: Update numerous PVs to "config", add TCMPL PV as the operation signal.

  • Adds the following temperature monitoring signals to SmarAct and SmarActOpenLoop:

    • 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 and XOffsetMirrorNoBend gets variable_cool for controlling 24V solenoid valve.

New Devices

  • Adds li2k4 as TMOLaserInCouplingTwoDimension, 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 the pcdsdevices.epics_motor submodule.
  • Adds SmarPod and related devices in new pcdsdevices.smarpod submodule.
  • Adds a CCMEnergyWithACRStatus class to the pcdsdevices.ccm submodule, a new variant of CCMEnergy that waits for ACR status before marking moves as complete.

Bugfixes

  • Previously, calculate_on_get/put functions used in MultiDerivedSignal s in pcdsdevices.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 the pcdsdevices.tpr submodule.
  • Modify sp1k4 Attenuator RTD class (TMOSpectrometer) to match prefix for sp1k4 group device.

Contributors

v8.3.0 (2024-02-21)

22 Feb 18:03
ba60ee0
Compare
Choose a tag to compare

Features

  • Enabled the use of custom EPS screens for Beckhoff axes via the BeckhoffAxisEPSCustom class in pcdsdevices.epics_motor and the accompanying ui template file.

Device Updates

  • Added flow_meter to ArrivalTimeMonitor in pcdsdevices.atm
  • Added flow_meter to AttenuatorSXR_Ladder in pcdsdevices.attenuator
  • Added flow_meter to AttenuatorSXR_LadderTwoBladeLBD in pcdsdevices.attenuator
  • Added WaveFrontSensorTargetCool and WaveFrontSensorTargetFDQ to pcdsdevices.device_types
  • Added flow sensor components to FFMirror in pcdsdevices.mirror
  • Added piezo pitch motors to the ExitSlits in pcdsdevices.slits

New Devices

  • Added PhotonCollimator to readout flow_switch in new module pcdsdevices.pc
  • Added WaveFrontSensorTargetFDQ to read out the flow_meter in pcdsdevices.wfs
  • Added MFXATM to pcdsdevices.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)

19 Dec 19:14
dc66631
Compare
Choose a tag to compare

API Breaks

  • Moved K2700 and IM3L0_K2700 to keithley 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 to SxrTestAbsorber, XPIM, IM2K0, PowerSlits
  • Restructured Qadc134 with new Qadc134Common and QadcLcls1Timing 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, and SXRGasAtt, 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 and TprMotor device classes in tpr submodule,
    analogous to Trigger and EvrMotor from evr 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)

17 Oct 00:13
15141e4
Compare
Choose a tag to compare

Device Updates

  • Adds a K2700 component to IM3L0.
  • Reorders the IM3L0 components to make the K2700 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 embedded IM3L0_K2700 screen.

New Devices

  • Adds the new (Keithley) K2700 class and one-off IM3L0_K2700 instance for the IM3L0 Keithley that uses a pydm screen instead of the default detailed screen.
  • Adds XOffsetMirrorNoBend: an XOffsetMirror 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)

27 Sep 22:55
d2e1c8e
Compare
Choose a tag to compare

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 other PPM devices.
  • Adds a IM3L0.detailed.ui template to add embedded Keithley readout screen to detailed screen for IM3L0.
    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, and LxtTtcExample from +/-10us to +/-100us.
  • Adds missing pump_state (:STATE_RBV) signal to PTMPLC.
  • Adds chin guard RTDs to FFMirrorZ in mirror.py.
  • LODCM: Adds the E1C 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: adds cool_flow1, cool_flow2, and cool_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 is pcdsdevices.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 the MR2L3 channel-cut monochromator (CCM) pitch position setpoints for its two coatings.

New Devices

  • FDQ flow meter implemented in analog_signals.py.
  • PPMCOOL added to pim.py.
  • KBOMirrorChin added to mirror.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 in mirror.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 as SmarAct 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)

11 Jul 23:09
8fd22bd
Compare
Choose a tag to compare

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)

07 Jul 18:39
30ec448
Compare
Choose a tag to compare

Device Updates

  • .screen() and .post_elog_status() methods were added to the
    BaseInterface whitelist for tab completion.

Contributors

v7.4.1 (2023-06-30)

30 Jun 20:53
95b005e
Compare
Choose a tag to compare

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

Contributors