frappy-psi.jtccr: fixes, use parameters instead of properties
limit should be visible and should also be modifiable for test purposes + remove vm (as it is not connected and may be removed later)
This commit is contained in:
+26
-14
@@ -35,29 +35,36 @@ class JTCCR(Writable):
|
||||
value = Parameter('current state', datatype=EnumType(STATES), default=0)
|
||||
target = Parameter('target state', datatype=EnumType(STATES), default=0)
|
||||
#p1min = Property('lower limit to switch to high pressure mode', dataype=FloatRange(unit='mbar'), default=1.8)
|
||||
p1max = Property('limit to switch to circulating mode', datatype=FloatRange(unit='mbar'), default=2.2)
|
||||
p2min = Property('lower limit to turn compressor off', datatype=FloatRange(unit='mbar'), default=0.12)
|
||||
p2max = Property('upper limit to turn compressor on', datatype=FloatRange(unit='mbar'), default=0.8)
|
||||
p1max = Parameter('limit to switch to circulating mode', datatype=FloatRange(unit='mbar'),
|
||||
readonly=False, default=2.2)
|
||||
p2min = Parameter('lower limit to turn compressor off', datatype=FloatRange(unit='mbar'),
|
||||
readonly=False, default=0.12)
|
||||
p2max = Parameter('upper limit to turn compressor on', datatype=FloatRange(unit='mbar'),
|
||||
readonly=False, default=0.8)
|
||||
#p2lim = Property('do not start compressor if p2 is below this value', datatype=FloatRange(unit='mbar'), default=0.15)
|
||||
pdifmax = Property('max pressure difference of compressor', datatype=FloatRange(unit='mbar'), default=5.0)
|
||||
pdifmargin = Property('safety margin for pressure difference of compressor',
|
||||
datatype=FloatRange(unit='mbar'), default=1.0)
|
||||
p3margin = Property('start compressor when p3 is below pressreg setpoint plus this value',
|
||||
datatype=FloatRange(unit='mbar'), default=0.01)
|
||||
pdifmax = Parameter('max pressure difference of compressor', datatype=FloatRange(unit='mbar'),
|
||||
readonly=False, default=5.0)
|
||||
pdifmargin = Parameter('safety margin for pressure difference of compressor',
|
||||
datatype=FloatRange(unit='mbar'),
|
||||
readonly=False, default=1.0)
|
||||
p3margin = Parameter('start compressor when p3 is below pressreg setpoint plus this value',
|
||||
datatype=FloatRange(unit='mbar'),
|
||||
readonly=False, default=0.01)
|
||||
p3reg = Parameter('pressure regulation setpoint', datatype=FloatRange(unit='mbar'), default=4.0)
|
||||
plow = Property('pressure below 5K', datatype=FloatRange(unit='mbar'), default=4.0)
|
||||
plow = Parameter('pressure below 5K', datatype=FloatRange(unit='mbar'),
|
||||
readonly=False, default=4.0)
|
||||
|
||||
valves_high_pressure = {
|
||||
'close': 'v3 v4 v5 v6 v7 v8 v10',
|
||||
'open': 'v1 v2 v9 vm',
|
||||
'open': 'v1 v2 v9', # vm
|
||||
}
|
||||
valves_circulating = {
|
||||
'close': 'v3 v4 v5 v6 v7 v9 v10',
|
||||
'open': 'v1 v2 v8 vm',
|
||||
'open': 'v1 v2 v8', # vm
|
||||
}
|
||||
valves_warmup = {
|
||||
'close': 'v6 v7 v8 v9 v10',
|
||||
'open': 'v1 v2 v3 v4 v5 vm',
|
||||
'open': 'v1 v2 v3 v4 v5', # vm
|
||||
}
|
||||
valves_security= {
|
||||
'open': '',
|
||||
@@ -70,7 +77,8 @@ class JTCCR(Writable):
|
||||
|
||||
def write_target(self, target):
|
||||
if self.value != target:
|
||||
self.set_mode(STATES.get(target))
|
||||
self.log.info('set mode %r', target)
|
||||
self.set_mode(target)
|
||||
return target
|
||||
|
||||
def set_mode(self, state):
|
||||
@@ -82,6 +90,8 @@ class JTCCR(Writable):
|
||||
self.handle_valves(**self.valves_circulating)
|
||||
elif state == 'warmup':
|
||||
self.handle_valves(**self.valves_warmup)
|
||||
elif state != 'manual':
|
||||
self.log.error('unknown state %r', state)
|
||||
self.value = state
|
||||
|
||||
def security_settings(self):
|
||||
@@ -91,11 +101,13 @@ class JTCCR(Writable):
|
||||
|
||||
def handle_valves(self, close=(), open=()):
|
||||
"""set given valves. raises ImpossibleError, when checks fails"""
|
||||
self.log.info('handle_valves %r %r', close, open)
|
||||
self._valves_to_wait_for = {}
|
||||
self._valves_failed = {True: [], False: []}
|
||||
for flag, valves in enumerate([close, open]):
|
||||
for vname in valves.split():
|
||||
valve = self.secNode.modules[vname]
|
||||
self.log.info('set valve %s to %r', vname, flag)
|
||||
valve.write_target(flag)
|
||||
# TODO: do we need to wait for motor valve?
|
||||
|
||||
@@ -131,7 +143,7 @@ class JTCCR(Writable):
|
||||
self.compressor.write_target(False)
|
||||
if (p3 - p2) >= self.pdifmax + 0.1:
|
||||
self.handle_valves(**self.valves_overpressure)
|
||||
self.status = BUSY, 'release to recovery'
|
||||
self.status = WARN, 'release to recovery'
|
||||
elif self.secNode.modules['v10'].read_value():
|
||||
self.secNode.modules['v10'].write_target(False)
|
||||
self.status = IDLE, 'release finished'
|
||||
|
||||
Reference in New Issue
Block a user