[WIP] fixes for gas10ka / varioxB

treat proxy for io correctly
This commit is contained in:
l_samenv
2024-06-10 10:11:03 +02:00
parent b1f9c74269
commit 67fa50a9e0
10 changed files with 855 additions and 59 deletions

View File

@ -211,6 +211,14 @@ class TemperatureSensor(MercuryChannel, Readable):
return self.query('DEV::TEMP:SIG:RES')
class RawSensor(MercuryChannel, Readable):
kind = 'TEMP'
value = Parameter(unit='Ohm')
def read_value(self):
return self.query('DEV::TEMP:SIG:RES')
class HasInput(HasControlledBy, MercuryChannel):
pass
@ -313,7 +321,7 @@ class HeaterOutput(HasInput, Writable):
if self._last_target is not None:
if not self.true_power:
self._volt_target = math.sqrt(self._last_target * self.resistivity)
self.change('DEV::HTR:SIG:VOLT', self._volt_target, tolerance=2e-4)
self.change('DEV::HTR:SIG:VOLT', self._volt_target, n_retry=0)
return self.resistivity
def read_status(self):
@ -338,7 +346,7 @@ class HeaterOutput(HasInput, Writable):
self.write_resistivity(res)
if self.controlled_by == 0:
self._volt_target = math.sqrt(self._last_target * self.resistivity)
self.change('DEV::HTR:SIG:VOLT', self._volt_target, tolerance=2e-4)
self.change('DEV::HTR:SIG:VOLT', self._volt_target, n_retry=0)
return volt * current
def read_target(self):
@ -356,7 +364,7 @@ class HeaterOutput(HasInput, Writable):
might be used by a software loop
"""
self._volt_target = math.sqrt(target * self.resistivity)
self.change('DEV::HTR:SIG:VOLT', self._volt_target, tolerance=2e-4)
self.change('DEV::HTR:SIG:VOLT', self._volt_target, n_retry=0)
self._last_target = target
return target
@ -365,6 +373,15 @@ class HeaterOutput(HasInput, Writable):
return self.set_target(value)
class HeaterUpdate(HeaterOutput):
kind = 'HTR,TEMP'
def update_target(self, module, value):
self.change(f'DEV::TEMP:LOOP:ENAB', False, off_on)
super().update_target(module, value)
self.set_target(value)
class TemperatureLoop(TemperatureSensor, ConvLoop):
kind = 'TEMP'
output_module = Attached(HasInput, mandatory=False)