improve simulation
- customizable simulation interval - add stop command to SimDrivable Change-Id: Id4eb0ec465ecc97a115397c295c4a052aceb762c Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/27092 Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de> Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de> Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
This commit is contained in:
parent
d76d79aebb
commit
47d09e9b08
@ -28,7 +28,7 @@ from time import sleep
|
|||||||
from secop.datatypes import FloatRange
|
from secop.datatypes import FloatRange
|
||||||
from secop.lib import mkthread
|
from secop.lib import mkthread
|
||||||
from secop.modules import BasicPoller, Drivable, \
|
from secop.modules import BasicPoller, Drivable, \
|
||||||
Module, Parameter, Readable, Writable
|
Module, Parameter, Readable, Writable, Command
|
||||||
|
|
||||||
|
|
||||||
class SimBase:
|
class SimBase:
|
||||||
@ -104,10 +104,11 @@ class SimWritable(SimReadable, Writable):
|
|||||||
|
|
||||||
|
|
||||||
class SimDrivable(SimReadable, Drivable):
|
class SimDrivable(SimReadable, Drivable):
|
||||||
|
interval = Parameter('simulation interval', FloatRange(0, 1), readonly=False, default=0.3)
|
||||||
|
|
||||||
def sim(self):
|
def sim(self):
|
||||||
while self._value == self.target:
|
while self._value == self.target:
|
||||||
sleep(0.3)
|
sleep(self.interval)
|
||||||
self.status = self.Status.BUSY, 'MOVING'
|
self.status = self.Status.BUSY, 'MOVING'
|
||||||
speed = 0
|
speed = 0
|
||||||
if 'ramp' in self.accessibles:
|
if 'ramp' in self.accessibles:
|
||||||
@ -116,7 +117,7 @@ class SimDrivable(SimReadable, Drivable):
|
|||||||
speed = self.speed
|
speed = self.speed
|
||||||
if speed == 0:
|
if speed == 0:
|
||||||
self._value = self.target
|
self._value = self.target
|
||||||
speed *= 0.3
|
speed *= self.interval
|
||||||
try:
|
try:
|
||||||
self.pollParams(0)
|
self.pollParams(0)
|
||||||
except Exception:
|
except Exception:
|
||||||
@ -129,7 +130,7 @@ class SimDrivable(SimReadable, Drivable):
|
|||||||
self._value -= speed
|
self._value -= speed
|
||||||
else:
|
else:
|
||||||
self._value = self.target
|
self._value = self.target
|
||||||
sleep(0.3)
|
sleep(self.interval)
|
||||||
try:
|
try:
|
||||||
self.pollParams(0)
|
self.pollParams(0)
|
||||||
except Exception:
|
except Exception:
|
||||||
@ -139,4 +140,8 @@ class SimDrivable(SimReadable, Drivable):
|
|||||||
|
|
||||||
def _hw_wait(self):
|
def _hw_wait(self):
|
||||||
while self.status[0] == self.Status.BUSY:
|
while self.status[0] == self.Status.BUSY:
|
||||||
sleep(0.3)
|
sleep(self.interval)
|
||||||
|
|
||||||
|
@Command
|
||||||
|
def stop(self):
|
||||||
|
self.target = self.value
|
||||||
|
Loading…
x
Reference in New Issue
Block a user