diff --git a/script/test/DemoCscanPseudo4.py b/script/test/DemoCscanPseudo4.py index 6832de7c..2d36a17c 100644 --- a/script/test/DemoCscanPseudo4.py +++ b/script/test/DemoCscanPseudo4.py @@ -1,30 +1,33 @@ +import ch.psi.pshell.device.PositionerConfig as PositionerConfig +import ch.psi.pshell.device.Speedable as Speedable + + class PseudoMotor(PositionerBase, Speedable): - def __init__(self): - PositionerBase.__init__(self) - self.readback = 0.0 - self.setpoint = 0.0 + def __init__(self, name): + PositionerBase.__init__(self, name, PositionerConfig()) + self.rbck = 0.0 + self.setp = 0.0 self.settime = time.time() def doRead(self): - self.setpoint + return self.setp def doWrite(self, val): - self.settime = time.time() - self.setpoint = val + self.setp = val - def doReadReadback(self, val): - offset = self.setpoint - self.readback + def doReadReadback(self): + offset = self.setp - self.rbck d = (self.speed * (time.time() - self.settime)) d = min(d, abs(offset)) - self.position = self.readback + d if offset>0 else self.readback -d - return self.position + self.rbck = self.rbck + d if offset>0 else self.rbck -d + return self.rbck def getSpeed(self): return 3.0 -positioner = PseudoMotor() +positioner = PseudoMotor("PseudoMotor") add_device(positioner, True); -show_panel("PseudoMotor") +show_panel(PseudoMotor) cscan(positioner, MachineCurrent, 0, 10, 1.0)