diff --git a/tcl/drivers/dil12.tcl b/tcl/drivers/dil12.tcl index bafec0f..3199b58 100644 --- a/tcl/drivers/dil12.tcl +++ b/tcl/drivers/dil12.tcl @@ -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 diff --git a/tcl/drivers/heliox.tcl b/tcl/drivers/heliox.tcl index 3676209..29087d6 100644 --- a/tcl/drivers/heliox.tcl +++ b/tcl/drivers/heliox.tcl @@ -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]" } } diff --git a/tcl/instconfig/dmc.tcl b/tcl/instconfig/dmc.tcl index 6d2a5a5..f04a7c1 100644 --- a/tcl/instconfig/dmc.tcl +++ b/tcl/instconfig/dmc.tcl @@ -3,3 +3,4 @@ instconfig makeitem n2fill 1 instconfig makeitem hefill 1 # he vessel with RS232 instconfig makeitem hevessel 1 +instconfig makeitem sensirion 1 diff --git a/tcl/startup/ccu4make.tcl b/tcl/startup/ccu4make.tcl index 6f44be1..0d0082c 100644 --- a/tcl/startup/ccu4make.tcl +++ b/tcl/startup/ccu4make.tcl @@ -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