[WIP] fixes for gas10ka / varioxB
treat proxy for io correctly
This commit is contained in:
@ -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)
|
||||
|
Reference in New Issue
Block a user