diff --git a/devices/undulator.py b/devices/undulator.py index 5cef4b8..5b1525c 100644 --- a/devices/undulator.py +++ b/devices/undulator.py @@ -96,10 +96,29 @@ class Undulators(Adjustable): t = a.set_target_value(k_new, hold=False) tasks.append(t) wait_for_all(tasks) + + # make sure new K values have been written TODO: needed? + sleep(0.5) + + # switching on radial motors ... + wait_for_all([ + a.adj_radial_on.set_target_value(1, hold=False) for a in self.adjs.values() + ]) + + # ... and pushing go to ensure proper movements + wait_for_all([ + a.adj_radial_go.set_target_value(1, hold=False) for a in self.adjs.values() + ]) + + # make sure the undulators finished moving TODO: needed? + sleep(5) + if self.adjust_chic: print("CHIC adjustment follows") self.chic.set_target_value(value, hold=False).wait() #TODO: test whether an additional sleep is needed print("CHIC adjustment done") + else: + print("CHIC adjustment skipped") return self._as_task(change, hold=hold) @@ -133,6 +152,8 @@ class Undulator(PVAdjustable): pvname_readback = name + ":K_READ" super().__init__(pvname_setvalue, pvname_readback=pvname_readback, accuracy=accuracy, active_move=True, name=name, internal=True) self.adj_energy = PVAdjustable(name + ":FELPHOTENE", internal=True) + self.adj_radial_on = PVAdjustable(name + ":RADIAL-ON.PROC", internal=True) + self.adj_radial_go = PVAdjustable(name + ":RADIAL-GO.PROC", internal=True) @property def energy(self):