jtccr: add more logic
- set VTI T - stop CCR compressor on warmup
This commit is contained in:
+12
-7
@@ -33,6 +33,8 @@ class JTCCR(Writable):
|
||||
|
||||
compressor = Attached()
|
||||
ccrcompressor = Attached()
|
||||
preg = Attached()
|
||||
ccr_temp = Attached()
|
||||
|
||||
value = Parameter('current state', datatype=EnumType(STATES), default=0)
|
||||
target = Parameter('target state', datatype=EnumType(STATES), default=0)
|
||||
@@ -52,7 +54,7 @@ class JTCCR(Writable):
|
||||
p3margin = Parameter('start compressor when p3 is below pressreg setpoint plus this value',
|
||||
datatype=FloatRange(unit='bar'),
|
||||
readonly=False, default=0.01)
|
||||
p3reg = Parameter('pressure regulation setpoint', datatype=FloatRange(unit='bar'), default=4.0)
|
||||
# preg = Parameter('pressure regulation setpoint', datatype=FloatRange(unit='bar'), default=4.0)
|
||||
plow = Parameter('pressure below 5K', datatype=FloatRange(unit='bar'),
|
||||
readonly=False, default=4.0)
|
||||
|
||||
@@ -87,14 +89,17 @@ class JTCCR(Writable):
|
||||
|
||||
def set_mode(self, state):
|
||||
if state == 'high_pressure':
|
||||
self.p3reg = 12
|
||||
self.preg.write_target(12)
|
||||
self.handle_valves(**self.valves_high_pressure)
|
||||
self.ccr_temp.write_target(1)
|
||||
elif state == 'circulating':
|
||||
self.p3reg = self.plow
|
||||
self.preg.write_target(self.plow)
|
||||
self.handle_valves(**self.valves_circulating)
|
||||
self.ccr_temp.write_target(1)
|
||||
elif state == 'warmup':
|
||||
self.ccr_temp.write_target(270)
|
||||
self.handle_valves(**self.valves_warmup)
|
||||
self.ccrcompressor(False)
|
||||
self.ccrcompressor.write_target(False)
|
||||
elif state != 'manual':
|
||||
self.log.error('unknown state %r', state)
|
||||
self.value = state
|
||||
@@ -129,20 +134,20 @@ class JTCCR(Writable):
|
||||
self.security_settings()
|
||||
self.status = WARN, 'overpressure: He recovery output closed?'
|
||||
return
|
||||
if p2 < self.p2min and p3 < self.p3reg and self.value != 'high_pressure':
|
||||
if p2 < self.p2min and p3 < self.preg.target and self.value != 'high_pressure':
|
||||
# underpressure protection
|
||||
self.security_settings()
|
||||
self.status = WARN, 'underpressure: not enough He'
|
||||
return
|
||||
if self.value == 'circulating':
|
||||
if p3 < self.p3reg and not compressor_state:
|
||||
if p3 < self.preg.target and not compressor_state:
|
||||
self.compressor.write_target(True)
|
||||
elif (p3 - p2) > self.pdifmax and compressor_state:
|
||||
self.compressor.write_target(False)
|
||||
# TODO: do we need to skip overpressure protection for one time?
|
||||
if self.value == 'high_pressure':
|
||||
if not self.ccrcompressor.read_value():
|
||||
if p4 > self.p3reg * 0.99:
|
||||
if p4 > self.preg.target * 0.99:
|
||||
if self._start_ccr is None:
|
||||
self._start_ccr = time.time() + 900 # 15 min
|
||||
self.status = IDLE, 'flush a little before cooling'
|
||||
|
||||
Reference in New Issue
Block a user