36 lines
1004 B
Python
36 lines
1004 B
Python
import ch.psi.pshell.device.PositionerConfig as PositionerConfig
|
|
import ch.psi.pshell.device.Speedable as Speedable
|
|
|
|
|
|
class PseudoMotor(PositionerBase, Speedable):
|
|
def __init__(self, name):
|
|
PositionerBase.__init__(self, name, PositionerConfig())
|
|
self.rbck = 0.0
|
|
self.setp = 0.0
|
|
self.settime = time.time()
|
|
|
|
def doRead(self):
|
|
return self.setp
|
|
|
|
def doWrite(self, val):
|
|
self.setp = val
|
|
self.settime = time.time()
|
|
|
|
def doReadReadback(self):
|
|
offset = self.setp - self.rbck
|
|
d = (self.speed * (time.time() - self.settime))
|
|
d = min(d, abs(offset))
|
|
self.rbck = self.rbck + d if offset>0 else self.rbck -d
|
|
self.settime = time.time()
|
|
return self.rbck
|
|
|
|
def getSpeed(self):
|
|
return 3.0
|
|
|
|
positioner = PseudoMotor("PseudoMotor")
|
|
add_device(positioner, True);
|
|
|
|
show_panel(PseudoMotor)
|
|
cscan(positioner, MachineCurrent, 0, 10, 1.0)
|
|
|