Skip to content

Commit

Permalink
Merge branch 'main' of https://github.com/BCDA-APS/apstools into main
Browse files Browse the repository at this point in the history
  • Loading branch information
prjemian committed Jan 13, 2021
2 parents 3136724 + 7ca9329 commit 2999454
Showing 1 changed file with 61 additions and 20 deletions.
81 changes: 61 additions & 20 deletions apstools/devices.py
Original file line number Diff line number Diff line change
Expand Up @@ -896,6 +896,25 @@ def state(self):
return result


class TrackingSignal(Signal):
"""
Signal to decide if undulator will be tracked while changing the
monochromator energy.
"""

def check_value(self, value):
"""
Check if the value is a boolean.
Raises
------
ValueError
"""
if not isinstance(value, bool):
raise ValueError(
'tracking is boolean, it can only be True or False.')


class ApsUndulator(Device):
"""
APS Undulator
Expand All @@ -905,27 +924,37 @@ class ApsUndulator(Device):
undulator = ApsUndulator("ID09ds:", name="undulator")
"""

energy = Component(EpicsSignal, "Energy", write_pv="EnergySet")
energy_taper = Component(EpicsSignal, "TaperEnergy", write_pv="TaperEnergySet")
energy = Component(EpicsSignal, "Energy", write_pv="EnergySet",
put_complete=True, kind='hinted')
energy_taper = Component(EpicsSignal, "TaperEnergy",
write_pv="TaperEnergySet", kind='config')
gap = Component(EpicsSignal, "Gap", write_pv="GapSet")
gap_taper = Component(EpicsSignal, "TaperGap", write_pv="TaperGapSet")
start_button = Component(EpicsSignal, "Start", put_complete=True)
stop_button = Component(EpicsSignal, "Stop")
harmonic_value = Component(EpicsSignal, "HarmonicValue")
gap_deadband = Component(EpicsSignal, "DeadbandGap")
device_limit = Component(EpicsSignal, "DeviceLimit")

access_mode = Component(EpicsSignalRO, "AccessSecurity")
device_status = Component(EpicsSignalRO, "Busy")
total_power = Component(EpicsSignalRO, "TotalPower")
message1 = Component(EpicsSignalRO, "Message1")
message2 = Component(EpicsSignalRO, "Message2")
message3 = Component(EpicsSignalRO, "Message3")
time_left = Component(EpicsSignalRO, "ShClosedTime")

device = Component(EpicsSignalRO, "Device")
location = Component(EpicsSignalRO, "Location")
version = Component(EpicsSignalRO, "Version")
gap_taper = Component(EpicsSignal, "TaperGap", write_pv="TaperGapSet",
kind='config')
start_button = Component(EpicsSignal, "Start", put_complete=True,
kind='omitted')
stop_button = Component(EpicsSignal, "Stop", kind='omitted')
harmonic_value = Component(EpicsSignal, "HarmonicValue", kind='config')
gap_deadband = Component(EpicsSignal, "DeadbandGap", kind='config')
device_limit = Component(EpicsSignal, "DeviceLimit", kind='config')

access_mode = Component(EpicsSignalRO, "AccessSecurity", kind='omitted')
device_status = Component(EpicsSignalRO, "Busy", kind='omitted')
total_power = Component(EpicsSignalRO, "TotalPower", kind='config')
message1 = Component(EpicsSignalRO, "Message1", kind='omitted')
message2 = Component(EpicsSignalRO, "Message2", kind='omitted')
message3 = Component(EpicsSignalRO, "Message3", kind='omitted')
time_left = Component(EpicsSignalRO, "ShClosedTime", kind='omitted')

device = Component(EpicsSignalRO, "Device", kind='config')
location = Component(EpicsSignalRO, "Location", kind='config')
version = Component(EpicsSignalRO, "Version", kind='config')

# Useful undulator parameters that are not EPICS PVs.
energy_deadband = Component(Signal, value=0.0, kind='config')
energy_backlash = Component(Signal, value=0.0, kind='config')
energy_offset = Component(Signal, value=0, kind='config')
tracking = Component(TrackingSignal, value=False, kind='config')


class ApsUndulatorDual(Device):
Expand Down Expand Up @@ -1453,6 +1482,18 @@ def move_energy(self, energy):
self.energy.put(energy)
self.move_button.put(1)

def calibrate_energy(self, value):
"""Calibrate the mono energy.
Parameters
----------
value: float
New energy for the current monochromator position.
"""
self.use_set.put('Set')
self.energy.put(value)
self.use_set.put('Use')


class ProcessController(Device):
"""
Expand Down

0 comments on commit 2999454

Please sign in to comment.