Merge branch 'master' of gitlab.psi.ch-samenv:samenv/sea
This commit is contained in:
@ -228,7 +228,7 @@ proc stdConfig::ccu4 {{title CCU4} args} {
|
||||
|
||||
node hea out
|
||||
prop label "add. He channels"
|
||||
prop enum 0,1,6
|
||||
prop enum 0,1,6=6
|
||||
|
||||
node hch out -int
|
||||
prop label "LHe channel"
|
||||
@ -539,7 +539,13 @@ proc ccu4::update {} {
|
||||
set errvar [silent "" hgetpropval [sct]/$name errvar]
|
||||
if {$errvar ne ""} {
|
||||
set errval [hvali [sct]/$errvar]
|
||||
if {$errval > 0} {
|
||||
if {$errval == 1} {
|
||||
# sens warm
|
||||
updateval [sct]/$name -11
|
||||
} elseif {$errval == 3} {
|
||||
# timeout
|
||||
updateval [sct]/$name 111
|
||||
} elseif {$errval > 0} {
|
||||
hsetprop [sct]/$name geterror [lindex [split [hgetpropval [sct]/$errvar enum] ,] $errval]
|
||||
hupdate [sct]/$name $value
|
||||
} else {
|
||||
|
@ -41,7 +41,7 @@ proc stdConfig::ccu4flow {args} {
|
||||
node flow upd -secop=nvflow
|
||||
|
||||
node set out
|
||||
default 2.0
|
||||
default 1.0
|
||||
prop check ccu4flow::checkset
|
||||
prop write stdSct::complete
|
||||
prop label "flow set"
|
||||
@ -89,11 +89,11 @@ proc stdConfig::ccu4flow {args} {
|
||||
node hystpulse_c par 0
|
||||
prop help {motor pulse to overcome hysteresis when closing}
|
||||
|
||||
node tol par 0.1
|
||||
node tol par 0.25
|
||||
prop label tolerance
|
||||
prop help {valid below 3 mbar}
|
||||
|
||||
node tolhigh par 0.2
|
||||
node tolhigh par 0.5
|
||||
prop label tol. above 4
|
||||
prop help {valid above 4 mbar}
|
||||
|
||||
|
@ -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
|
||||
|
@ -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]/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]/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]/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]"
|
||||
}
|
||||
}
|
||||
|
@ -303,7 +303,7 @@ proc ipsmag::update_leads {{n_of_slaves 3}} {
|
||||
set msg "slave currents ($currents) are not within $mincur .. $maxcur"
|
||||
hupdate [sct objectPath]/status $msg
|
||||
if {$status eq ""} {
|
||||
# clientlog "ERROR: $msg"
|
||||
clientlog "WARNING: $msg"
|
||||
}
|
||||
} elseif {[string match {slave currents *} $status]} {
|
||||
hupdate [sct objectPath]/status ""
|
||||
|
@ -45,8 +45,8 @@ proc luft::writeCf {} {
|
||||
} else {
|
||||
luft::set_error "epics error: $val $errtxt"
|
||||
}
|
||||
if {[scan [lindex [sct target] 0] %d period]} {
|
||||
sct timeout [expr [clock seconds] + $period + 10]
|
||||
catch {
|
||||
sct timeout [expr [clock seconds] + $timeout + 10]
|
||||
}
|
||||
return idle
|
||||
}
|
||||
|
@ -618,12 +618,12 @@ proc secop::update_ {} {
|
||||
hsetprop $objpath status posfault
|
||||
}
|
||||
} else {
|
||||
if {[silent idle hgetpropval $objpath status] eq "run" && $writestatus ne "done"
|
||||
&& ($value < 300 || $value >= 390)} {
|
||||
clientput "$objpath/target changed, but status not BUSY: $value $text_value ($writestatus)"
|
||||
set value 300
|
||||
set text_value "target changed ($text_value)"
|
||||
}
|
||||
# if {[silent idle hgetpropval $objpath status] eq "run" && $writestatus ne "done"
|
||||
# && ($value < 300 || $value >= 390)} {
|
||||
# clientput "$objpath/target changed, but status not BUSY: $value $text_value ($writestatus)"
|
||||
# set value 300
|
||||
# set text_value "target changed ($text_value)"
|
||||
# }
|
||||
if {$value < 300 || $value >= 390} { # not busy or finalizing
|
||||
hsetprop $objpath status idle
|
||||
}
|
||||
|
Reference in New Issue
Block a user