uniax, version 7.10.2021

- driving with a generator
- 3 phases
  1) find active range (low current, far movement until force over hysteresis)
  2) release force until well below target
  3) adjusting using pid_p. (this is in fact an integral factor)
This commit is contained in:
2021-10-08 08:53:22 +02:00
parent 2c6b42f2aa
commit 57082e276f
5 changed files with 211 additions and 84 deletions

View File

@ -495,15 +495,15 @@ class Module(HasAccessibles):
for pname in self.parameters:
errfunc = getattr(modobj, 'error_update_' + pname, None)
if errfunc:
def errcb(err, p=pname, efunc=errfunc):
def errcb(err, p=pname, m=modobj, efunc=errfunc):
try:
efunc(err)
except Exception as e:
modobj.announceUpdate(p, err=e)
m.announceUpdate(p, err=e)
self.errorCallbacks[pname].append(errcb)
else:
def errcb(err, p=pname):
modobj.announceUpdate(p, err=err)
def errcb(err, p=pname, m=modobj):
m.announceUpdate(p, err=err)
if pname in autoupdate:
self.errorCallbacks[pname].append(errcb)
@ -516,8 +516,8 @@ class Module(HasAccessibles):
efunc(e)
self.valueCallbacks[pname].append(cb)
elif pname in autoupdate:
def cb(value, p=pname):
modobj.announceUpdate(p, value)
def cb(value, p=pname, m=modobj):
m.announceUpdate(p, value)
self.valueCallbacks[pname].append(cb)
def isBusy(self, status=None):
@ -642,7 +642,7 @@ class Writable(Readable):
"""basic writable module"""
target = Parameter('target value of the module',
default=0, readonly=False, datatype=FloatRange())
default=0, readonly=False, datatype=FloatRange(unit='$'))
class Drivable(Writable):