ultrasound.PE: fix control loop

Change-Id: I2b2bdf4ad48887ae256a68119f53e6a38048ce1e
This commit is contained in:
2025-04-01 09:54:18 +02:00
parent 1febb7bacf
commit 56bee015b3

View File

@ -102,17 +102,19 @@ class ControlRoi(Roi, Readable):
self._freq_target = freq
# do no control 2 times after changing frequency
self._skipctrl = 2
fdif = freq - self._old[0]
if self.control_active:
if self._old:
newfreq = freq + inphase * self.slope
fdif = freq - self._old[0]
if abs(fdif) >= self.minstep:
idif = inphase - self._old[1]
self.slope = - fdif / idif
self.log.info('fdif %r minstep %r', fdif, self.minstep)
else:
# do a 'test' step
newfreq = freq + self.minstep
self.old = (freq, inphase)
if abs(fdif) > self.minstep * 0.99:
idif = inphase - self._old[1]
if idif:
self.slope = - fdif / idif
self._old = (freq, inphase)
if self._skipctrl > 0: # do no control for some time after changing frequency
self._skipctrl -= 1
elif self.control_active: