Merge branch 'master' of gitlab.psi.ch-samenv:samenv/sea

This commit is contained in:
l_samenv
2022-11-08 13:29:17 +01:00
4 changed files with 54 additions and 21 deletions

View File

@ -798,13 +798,13 @@ proc dil12::autostep {phase init} {
}
dil12::check_cool_button
if {[result dil p1] < [hvali [sct]/p1low] && [result dil g1] < 5 &&
[result dil p2] < [hvali [sct]/p2low] && [result dil v6pos] > 99} {
[result dil p2] < [hvali [sct]/p2low] && [result dil v6pos] > 50} {
if {[sct pumptime] == 0} {
dil12::openvalves v5a v2a v7 v2 v1 v6 v5 v3 vb_open
dil v4a 1
sct pumptime [expr [DoubleTime] + 105]
dil12::msg "pump for 2 more minutes"
} elseif {[DoubleTime] > [sct pumptime]} {
} elseif {[DoubleTime] > [sct pumptime] && [result dil v6pos] > 99} {
# do not check for vb/vm here, as the user already might manipulate the valves
dil12::openvalves v1 v6 v3 v5
dil v4a 0

View File

@ -27,16 +27,30 @@ proc stdConfig::heliox {} {
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)"
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 {
hsetprop /tt getsample hvali /ts/pot
hsetprop /tt getsample hvali /th/pot
} msg
clientput $msg
}
proc heliox::check_set {} {
# save for later
sct goto [sct target]
if {[sct target] < 1.6} {
set condense_text ""
if {[hvali [sct]/lasts_until] > [DoubleTime]} {
@ -49,7 +63,7 @@ proc heliox::check_set {} {
hupdate [sct]/mode 4
set condense_text "started"
}
sct goto [sct target]
# sct goto [sct target]
if {$condense_text ne ""} {
sct print "going to [sct target] K might take a while - condense process is $condense_text"
}
@ -65,7 +79,7 @@ proc heliox::check_set {} {
set mainsensor /th/pot
switch [sctval [sct]/mode] {
1 {
nv set 2.5
nv set [hvali [sct parent]/holdflow]]
th setsorb/channel C
th setsorb 20
th mainloop set
@ -73,7 +87,7 @@ proc heliox::check_set {} {
run tt [sct target]
}
2 {
nv set 2.5
nv set [hvali [sct parent]/holdflow]]
th setsorb/channel C
th setsorb 20
th mainloop set
@ -82,7 +96,7 @@ proc heliox::check_set {} {
th set [sct target]
}
3 {
nv set 2.5
nv set [hvali [sct parent]/holdflow]]
th setsorb/channel B
th mainloop setsorb
th set 0
@ -111,13 +125,14 @@ proc heliox::check_set {} {
}
proc heliox::setmainsensor {mainsensor} {
set old [silent "" hgetpropval [sct objectPath] mainsensor]
if {$mainsensor ne $old} {
if {$old ne ""} {
catch {[sct controller] killupdatescript $old "updateval [sct objectPath]"}
}
[sct controller] updatescript $mainsensor "updateval [sct objectPath]"
if {$mainsensor eq "/th/low"} {
set old /th/pot
} else {
set old /th/low
}
catch {[sct controller] killupdatescript $old "updateval [sct objectPath]"}
[sct controller] updatescript $mainsensor "updateval [sct objectPath]"
hsetprop [sct objectPath] mainsensor $mainsensor
}
proc heliox::check_mode {} {
@ -126,7 +141,7 @@ proc heliox::check_mode {} {
0 {
}
1 {
nv set 2.5
nv set [hvali [sct parent]/holdflow]
if {[sct target] != [hvali [sct]]} {
th set [hvali /th/target]
}
@ -136,7 +151,7 @@ proc heliox::check_mode {} {
set state "hi-T mode"
}
2 {
nv set 2.5
nv set [hvali [sct parent]/holdflow]
if {[sct target] != [hvali [sct]]} {
th set [hvali /th/target]
}
@ -146,7 +161,7 @@ proc heliox::check_mode {} {
set state "mid-T mode"
}
3 {
nv set 2.5
nv set [hvali [sct parent]/holdflow]
if {[hvali [sct parent]/lasts_until] > [DoubleTime]} {
th set 0
th setsorb/channel B
@ -178,6 +193,20 @@ proc heliox::check_mode {} {
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 {} {
sct print [lindex {undefined "hi-T mode" "mid-T mode" "low-T mode" "-> condense"} [sct target]]
return idle
@ -215,11 +244,11 @@ proc heliox::read {} {
}
if {[hvali [sct]] == 4} {
if {$ts > 3} {
nv set 4
nv set [hvali [sct parent]/condenseflow]
set lasts_until 0
sct condense_deadline [expr $now + 36000] # timeout: should be 3600
} elseif {[result th sorb] > 39} {
nv set 4
nv set [hvali [sct parent]/condenseflow]
# 3He vapor pressure: 200 mbar at 2 K, power law
set p [expr 200 * ($ts / 2.0) ** 3.5]
# dump pressure at condensation start
@ -241,8 +270,9 @@ proc heliox::read {} {
th setsorb/channel B
th mainloop setsorb
th setsorb [silent 0.25 hgetpropval [sct parent] goto]
sct update 3
nv set 2.5
# switch to lowT and trigger check_mode
hset [sct] 3
nv set [hvali [sct parent]/holdflow]]
clientput "the 3He pot [hvali [sct parent]/pot_state]"
}
}

View File

@ -3,3 +3,4 @@ instconfig makeitem n2fill 1
instconfig makeitem hefill 1
# he vessel with RS232
instconfig makeitem hevessel 1
instconfig makeitem sensirion 1

View File

@ -81,6 +81,8 @@ proc makeCCU4 {args} {
helium_register _cc /cc/h0 vessel
if {$vessel ne "0"} {
catch {cc hea 1}
catch {cc hem0 475}
catch {cc hfu0 0}
}
}
helium_register _cc /cc/h