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:
zolliker 2021-11-10 13:12:49 +01:00
parent d76d79aebb
commit 47d09e9b08

View File

@ -28,7 +28,7 @@ from time import sleep
from secop.datatypes import FloatRange
from secop.lib import mkthread
from secop.modules import BasicPoller, Drivable, \
Module, Parameter, Readable, Writable
Module, Parameter, Readable, Writable, Command
class SimBase:
@ -104,10 +104,11 @@ class SimWritable(SimReadable, Writable):
class SimDrivable(SimReadable, Drivable):
interval = Parameter('simulation interval', FloatRange(0, 1), readonly=False, default=0.3)
def sim(self):
while self._value == self.target:
sleep(0.3)
sleep(self.interval)
self.status = self.Status.BUSY, 'MOVING'
speed = 0
if 'ramp' in self.accessibles:
@ -116,7 +117,7 @@ class SimDrivable(SimReadable, Drivable):
speed = self.speed
if speed == 0:
self._value = self.target
speed *= 0.3
speed *= self.interval
try:
self.pollParams(0)
except Exception:
@ -129,7 +130,7 @@ class SimDrivable(SimReadable, Drivable):
self._value -= speed
else:
self._value = self.target
sleep(0.3)
sleep(self.interval)
try:
self.pollParams(0)
except Exception:
@ -139,4 +140,8 @@ class SimDrivable(SimReadable, Drivable):
def _hw_wait(self):
while self.status[0] == self.Status.BUSY:
sleep(0.3)
sleep(self.interval)
@Command
def stop(self):
self.target = self.value