Skip to content

Commit

Permalink
Merge pull request #1199 from nrwslac/cooling-updates-fdq
Browse files Browse the repository at this point in the history
Add flow sensor to devices
  • Loading branch information
nrwslac authored Feb 21, 2024
2 parents 61bce9c + 3980aee commit 996d452
Show file tree
Hide file tree
Showing 7 changed files with 92 additions and 1 deletion.
36 changes: 36 additions & 0 deletions docs/source/upcoming_release_notes/1199-cool-updates.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
1199 cool-updates
#################

API Breaks
----------
- N/A

Features
--------
- N/A

Device Updates
--------------
- in `atm.py` add `flow_meter` to `ArrivalTimeMonitor`
- in `attenuator.py` add `flow_meter` to `AttenuatorSXR_Ladder`
- in `attenuator.py` add `flow_meter` to `AttenuatorSXR_LadderTwoBladeLBD`
- in `device_types.py` add `WaveFrontSensorTargetCool` , `WaveFrontSensorTargetFDQ`
- in `mirror.py` add flow sensor variable to `FFMirror`

New Devices
-----------
- add class `PhotonCollimator` to readout `flow_switch` in new module `pc.py`
- add class `WaveFrontSensorTargetFDQ` to read out `flow_meter`
- add class `MFXATM` in `atm.py`

Bugfixes
--------
- N/A

Maintenance
-----------
- N/A

Contributors
------------
- nrwslac
11 changes: 11 additions & 0 deletions pcdsdevices/atm.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from ophyd import Component as Cpt

from .analog_signals import FDQ
from .device import GroupDevice
from .device import UpdateComponent as UpCpt
from .epics_motor import BeckhoffAxis, BeckhoffAxisNoOffset
Expand Down Expand Up @@ -41,6 +42,8 @@ class ArrivalTimeMonitor(BaseInterface, GroupDevice, LightpathInOutCptMixin):

thermocouple1 = Cpt(TwinCATTempSensor, ':STC:01', kind='normal',
doc='First thermocouple.')
flow_meter = Cpt(FDQ, '', kind='normal',
doc='Device that measures PCW Flow Rate.')


class TM1K4Target(ATMTarget):
Expand Down Expand Up @@ -79,6 +82,7 @@ class TM2K4(ArrivalTimeMonitor):

target = Cpt(TM2K4Target, ':MMS:STATE', kind='hinted',
doc='Control of the diagnostic stack via saved positions.')
flow_meter = None


class TM2K2Target(ATMTarget):
Expand All @@ -97,3 +101,10 @@ class TM2K2(ArrivalTimeMonitor):
"""
target = Cpt(TM2K2Target, ':MMS:STATE', kind='hinted',
doc='Control of the diagnostic stack via saved positions.')


class MFXATM(ArrivalTimeMonitor):
"""
An ATM in MFX that has no cooling.
"""
flow_meter = None
8 changes: 8 additions & 0 deletions pcdsdevices/attenuator.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
from ophyd.signal import EpicsSignal, EpicsSignalRO, Signal, SignalRO

from . import utils
from .analog_signals import FDQ
from .device import GroupDevice
from .device import UnrelatedComponent as UCpt
from .device import UpdateComponent as UpCpt
Expand Down Expand Up @@ -1017,6 +1018,9 @@ class AttenuatorSXR_Ladder(FltMvInterface, PVPositionerPC,
blade_03 = Cpt(SXRLadderAttenuatorBlade, ':MMS:03')
blade_04 = Cpt(SXRLadderAttenuatorBlade, ':MMS:04')

flow_meter = Cpt(FDQ, '', kind='normal',
doc='Device that measures PCW Flow Rate.')

def __init__(self, *args, limits=None, **kwargs):
UCpt.collect_prefixes(self, kwargs)
limits = limits or (0.0, 1.0)
Expand Down Expand Up @@ -1181,6 +1185,9 @@ class AttenuatorSXR_LadderTwoBladeLBD(FltMvInterface, PVPositionerPC,
# LBD Stage
blade_03 = Cpt(FEESolidAttenuatorBlade, ':MMS:03')

flow_meter = Cpt(FDQ, '', kind='normal',
doc='Device that measures PCW Flow Rate.')

def __init__(self, *args, limits=None, **kwargs):
UCpt.collect_prefixes(self, kwargs)
limits = limits or (0.0, 1.0)
Expand Down Expand Up @@ -1325,6 +1332,7 @@ class AT1K4(AttenuatorSXR_Ladder):
calculator_prefix : str
The prefix for the calculator PVs.
"""
flow_meter = None


class AT1K2(AttenuatorSXR_LadderTwoBladeLBD):
Expand Down
3 changes: 2 additions & 1 deletion pcdsdevices/device_types.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,4 +45,5 @@
from .spectrometer import Gen1VonHamos4Crystal, Kmono, VonHamos4Crystal
from .timetool import Timetool, TimetoolWithNav
from .valve import GateValve, Stopper
from .wfs import WaveFrontSensorTarget
from .wfs import (WaveFrontSensorTarget, WaveFrontSensorTargetCool,
WaveFrontSensorTargetFDQ)
8 changes: 8 additions & 0 deletions pcdsdevices/mirror.py
Original file line number Diff line number Diff line change
Expand Up @@ -1132,6 +1132,10 @@ class FFMirror(BaseInterface, GroupDevice, LightpathMixin):
y_enc_rms = Cpt(PytmcSignal, ':ENC:Y:RMS', io='i', kind='normal')
pitch_enc_rms = Cpt(PytmcSignal, ':ENC:PITCH:RMS', io='i', kind='normal')

cool_flow1 = Cpt(EpicsSignalRO, ':FWM:1_RBV', kind='normal', doc="Axilon Panel Flow Meter Loop 1")
cool_flow2 = Cpt(EpicsSignalRO, ':FWM:2_RBV', kind='normal', doc="Axilon Panel Flow Meter Loop 2")
cool_press = Cpt(EpicsSignalRO, ':PRSM:1_RBV', kind='normal', doc="Axilon Panel Pressure Meter")

# Lightpath config: implement inserted, removed, transmission, subscribe
lightpath_cpts = ['x.user_readback', 'y.user_readback']

Expand Down Expand Up @@ -1245,6 +1249,10 @@ class FFMirrorZ(FFMirror):
kind='normal')
chin_tail_rtd = Cpt(PytmcSignal, ':RTD:TAIL:TEMP', io='i',
kind='normal')
# Kill these until MR4 and MR5 K4 implement them.
cool_flow1 = None
cool_flow2 = None
cool_press = None


class TwinCATMirrorStripe(TwinCATStatePMPS):
Expand Down
15 changes: 15 additions & 0 deletions pcdsdevices/pc.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
"""
Module for all device related to Photon Collimators.
"""
from ophyd import Component as Cpt
from ophyd import Device

from .digital_signals import J120K


class PhotonCollimator(Device):
"""
Photon Collimator Stub for Cooling Readback
"""
flow_switch = Cpt(J120K, '', kind='normal',
doc='Device that indicates nominal PCW Flow Rate.')
12 changes: 12 additions & 0 deletions pcdsdevices/wfs.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from ophyd import Component as Cpt

from .analog_signals import FDQ
from .device import GroupDevice
from .device import UpdateComponent as UpCpt
from .digital_signals import J120K
Expand Down Expand Up @@ -27,6 +28,7 @@ class WaveFrontSensorTarget(BaseInterface, GroupDevice,
Each target is a waveplate that results in a characteristic pattern
on a downstream imager (PPM or XTES Imager) that can be used to determine
information about the wavefront.
"""
tab_component_names = True

Expand All @@ -46,6 +48,16 @@ class WaveFrontSensorTarget(BaseInterface, GroupDevice,
doc='Second thermocouple.')


class WaveFrontSensorTargetFDQ(WaveFrontSensorTarget):
"""
An array of targets used to determine the beam's wavefront.
With a Kenyence FDQ flow meter installed.
"""
flow_meter = Cpt(FDQ, '', kind='normal',
doc='Device that measures PCW Flow Rate.')


class WaveFrontSensorTargetCool(WaveFrontSensorTarget):
"""
An array of targets used to determine the beam's wavefront.
Expand Down

0 comments on commit 996d452

Please sign in to comment.