fixes for flamesample
- fixes in SwitchDrive - increase range when reading is zero in autorange - add debugging log msgs
This commit is contained in:
parent
8cb9154bb5
commit
c80b4ac5fb
@ -235,6 +235,9 @@ class ResChannel(Channel):
|
|||||||
return None
|
return None
|
||||||
result = float(self.communicate('RDGR?%d' % self.channel))
|
result = float(self.communicate('RDGR?%d' % self.channel))
|
||||||
if result == 0:
|
if result == 0:
|
||||||
|
if self.autorange:
|
||||||
|
rng = int(max(self.minrange, self.range)) # convert from enum to int
|
||||||
|
self.write_range(min(self.MAX_RNG, rng + 1))
|
||||||
return None
|
return None
|
||||||
if self.autorange:
|
if self.autorange:
|
||||||
self.fix_autorange()
|
self.fix_autorange()
|
||||||
@ -251,8 +254,10 @@ class ResChannel(Channel):
|
|||||||
lim -= 0.05 # not more than 4 steps at once
|
lim -= 0.05 # not more than 4 steps at once
|
||||||
# effectively: <0.16 %: 4 steps, <1%: 3 steps, <5%: 2 steps, <20%: 1 step
|
# effectively: <0.16 %: 4 steps, <1%: 3 steps, <5%: 2 steps, <20%: 1 step
|
||||||
elif rng < self.MAX_RNG:
|
elif rng < self.MAX_RNG:
|
||||||
|
self.log.debug('increase range due to error %d', rng)
|
||||||
rng = min(self.MAX_RNG, rng + 1)
|
rng = min(self.MAX_RNG, rng + 1)
|
||||||
if rng != self.range:
|
if rng != self.range:
|
||||||
|
self.log.debug('range change to %d', rng)
|
||||||
self.write_range(rng)
|
self.write_range(rng)
|
||||||
self._last_range_change = now
|
self._last_range_change = now
|
||||||
return result
|
return result
|
||||||
|
@ -155,7 +155,6 @@ class SwitchDriv(HasConvergence, Drivable):
|
|||||||
|
|
||||||
def doPoll(self):
|
def doPoll(self):
|
||||||
super().doPoll()
|
super().doPoll()
|
||||||
if self.isBusy():
|
|
||||||
if self._switch_target is not None:
|
if self._switch_target is not None:
|
||||||
mid = (self.min_high + self.max_low) * 0.5
|
mid = (self.min_high + self.max_low) * 0.5
|
||||||
if self._switch_target == HIGH:
|
if self._switch_target == HIGH:
|
||||||
@ -172,27 +171,36 @@ class SwitchDriv(HasConvergence, Drivable):
|
|||||||
self._switch_target = None
|
self._switch_target = None
|
||||||
self.write_target(self.target)
|
self.write_target(self.target)
|
||||||
return
|
return
|
||||||
else:
|
if not self.isBusy():
|
||||||
low = get_value(self.low, self.max_low)
|
low = get_value(self.low, self.max_low)
|
||||||
high = get_value(self.high, self.min_high)
|
high = get_value(self.high, self.min_high)
|
||||||
low_valid = low < self.max_low
|
low_valid = low < self.max_low
|
||||||
high_valid = high > self.min_high
|
high_valid = high > self.min_high
|
||||||
if high_valid and high > self.max_low:
|
if high_valid and high > self.max_low:
|
||||||
if not low_valid:
|
if not low_valid and not self.low.control_active:
|
||||||
set_enabled(self.low, False)
|
set_enabled(self.low, False)
|
||||||
return
|
return
|
||||||
if low_valid and low < self.min_high:
|
if low_valid and low < self.min_high:
|
||||||
if not high_valid:
|
if not high_valid and not self.high.control_active:
|
||||||
set_enabled(self.high, False)
|
set_enabled(self.high, False)
|
||||||
return
|
return
|
||||||
set_enabled(self.low, True)
|
set_enabled(self.low, True)
|
||||||
set_enabled(self.high, True)
|
set_enabled(self.high, True)
|
||||||
|
|
||||||
|
def get_selected(self):
|
||||||
|
low = get_value(self.low, self.max_low)
|
||||||
|
high = get_value(self.high, self.min_high)
|
||||||
|
if low < self.min_high:
|
||||||
|
return 0
|
||||||
|
if high > self.max_low:
|
||||||
|
return 1
|
||||||
|
return self.selected
|
||||||
|
|
||||||
def read_value(self):
|
def read_value(self):
|
||||||
return self.low.value if self.selected == LOW else self.high.value
|
return self.low.value if self.get_selected() == LOW else self.high.value
|
||||||
|
|
||||||
def read_status(self):
|
def read_status(self):
|
||||||
status = self.low.status if self.selected == LOW else self.high.status
|
status = self.low.status if self.get_selected() == LOW else self.high.status
|
||||||
if status[0] >= ERROR:
|
if status[0] >= ERROR:
|
||||||
return status
|
return status
|
||||||
return super().read_status() # convergence status
|
return super().read_status() # convergence status
|
||||||
@ -202,17 +210,17 @@ class SwitchDriv(HasConvergence, Drivable):
|
|||||||
selected = self.selected
|
selected = self.selected
|
||||||
target1 = target
|
target1 = target
|
||||||
self._switch_target = None
|
self._switch_target = None
|
||||||
if target > self.max_low:
|
if target > self.max_low * 0.75 + self.min_high * 0.25:
|
||||||
if self.value < self.min_high:
|
if self.value < self.min_high:
|
||||||
target1 = self.max_low
|
target1 = min(target, self.max_low)
|
||||||
self._switch_target = HIGH
|
self._switch_target = HIGH
|
||||||
selected = LOW
|
selected = LOW
|
||||||
else:
|
else:
|
||||||
this, other = other, this
|
this, other = other, this
|
||||||
selected = HIGH
|
selected = HIGH
|
||||||
elif target < self.min_high:
|
elif target < self.min_high * 0.75 + self.max_low * 0.25:
|
||||||
if self.value > self.max_low:
|
if self.value > self.max_low:
|
||||||
target1 = self.min_high
|
target1 = max(self.min_high, target)
|
||||||
self._switch_target = LOW
|
self._switch_target = LOW
|
||||||
this, other = other, this
|
this, other = other, this
|
||||||
selected = HIGH
|
selected = HIGH
|
||||||
|
Loading…
x
Reference in New Issue
Block a user