heliox: add holdflow and condenseflow params

+ fix mainsensor when switching from condense to lowT
This commit is contained in:
2022-11-08 09:09:41 +01:00
parent 112071ac6c
commit 72c8e99036

View File

@ -27,8 +27,20 @@ proc stdConfig::heliox {} {
node pot_state -text upd node pot_state -text upd
node target_hours par 60 node target_hours par 48
prop help "how many hours the pot should last (< 75)" prop help "how many hours the pot should last (< 75)"
node holdflow out
default 1.5
prop check heliox::check_holdflow
prop help "flow for holding pressure"
prop write stdSct::complete
node condenseflow out
default 3
prop check heliox::check_condenseflow
prop help "flow for condensing"
prop write stdSct::complete
} }
catch { catch {
hsetprop /tt getsample hvali /th/pot hsetprop /tt getsample hvali /th/pot
@ -67,7 +79,7 @@ proc heliox::check_set {} {
set mainsensor /th/pot set mainsensor /th/pot
switch [sctval [sct]/mode] { switch [sctval [sct]/mode] {
1 { 1 {
nv set 2.5 nv set [hvali [sct parent]/holdflow]]
th setsorb/channel C th setsorb/channel C
th setsorb 20 th setsorb 20
th mainloop set th mainloop set
@ -75,7 +87,7 @@ proc heliox::check_set {} {
run tt [sct target] run tt [sct target]
} }
2 { 2 {
nv set 2.5 nv set [hvali [sct parent]/holdflow]]
th setsorb/channel C th setsorb/channel C
th setsorb 20 th setsorb 20
th mainloop set th mainloop set
@ -84,7 +96,7 @@ proc heliox::check_set {} {
th set [sct target] th set [sct target]
} }
3 { 3 {
nv set 2.5 nv set [hvali [sct parent]/holdflow]]
th setsorb/channel B th setsorb/channel B
th mainloop setsorb th mainloop setsorb
th set 0 th set 0
@ -129,7 +141,7 @@ proc heliox::check_mode {} {
0 { 0 {
} }
1 { 1 {
nv set 2.5 nv set [hvali [sct parent]/holdflow]
if {[sct target] != [hvali [sct]]} { if {[sct target] != [hvali [sct]]} {
th set [hvali /th/target] th set [hvali /th/target]
} }
@ -139,7 +151,7 @@ proc heliox::check_mode {} {
set state "hi-T mode" set state "hi-T mode"
} }
2 { 2 {
nv set 2.5 nv set [hvali [sct parent]/holdflow]
if {[sct target] != [hvali [sct]]} { if {[sct target] != [hvali [sct]]} {
th set [hvali /th/target] th set [hvali /th/target]
} }
@ -149,7 +161,7 @@ proc heliox::check_mode {} {
set state "mid-T mode" set state "mid-T mode"
} }
3 { 3 {
nv set 2.5 nv set [hvali [sct parent]/holdflow]
if {[hvali [sct parent]/lasts_until] > [DoubleTime]} { if {[hvali [sct parent]/lasts_until] > [DoubleTime]} {
th set 0 th set 0
th setsorb/channel B th setsorb/channel B
@ -181,6 +193,20 @@ proc heliox::check_mode {} {
sct update [sct target] sct update [sct target]
} }
proc heliox::check_condenseflow {} {
if {[sctval [sct parent]/mode] == 4} {
nv set [sct target]
}
sct update [sct target]
}
proc heliox::check_holdflow {} {
if {[sctval [sct parent]/mode] != 4} {
nv set [sct target]
}
sct update [sct target]
}
proc heliox::complete {} { proc heliox::complete {} {
sct print [lindex {undefined "hi-T mode" "mid-T mode" "low-T mode" "-> condense"} [sct target]] sct print [lindex {undefined "hi-T mode" "mid-T mode" "low-T mode" "-> condense"} [sct target]]
return idle return idle
@ -218,11 +244,11 @@ proc heliox::read {} {
} }
if {[hvali [sct]] == 4} { if {[hvali [sct]] == 4} {
if {$ts > 3} { if {$ts > 3} {
nv set 4 nv set [hvali [sct parent]/condenseflow]
set lasts_until 0 set lasts_until 0
sct condense_deadline [expr $now + 36000] # timeout: should be 3600 sct condense_deadline [expr $now + 36000] # timeout: should be 3600
} elseif {[result th sorb] > 39} { } elseif {[result th sorb] > 39} {
nv set 4 nv set [hvali [sct parent]/condenseflow]
# 3He vapor pressure: 200 mbar at 2 K, power law # 3He vapor pressure: 200 mbar at 2 K, power law
set p [expr 200 * ($ts / 2.0) ** 3.5] set p [expr 200 * ($ts / 2.0) ** 3.5]
# dump pressure at condensation start # dump pressure at condensation start
@ -244,8 +270,9 @@ proc heliox::read {} {
th setsorb/channel B th setsorb/channel B
th mainloop setsorb th mainloop setsorb
th setsorb [silent 0.25 hgetpropval [sct parent] goto] th setsorb [silent 0.25 hgetpropval [sct parent] goto]
sct update 3 # switch to lowT and trigger check_mode
nv set 2.5 hset [sct] 3
nv set [hvali [sct parent]/holdflow]]
clientput "the 3He pot [hvali [sct parent]/pot_state]" clientput "the 3He pot [hvali [sct parent]/pot_state]"
} }
} }