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

This commit is contained in:
2022-11-25 15:14:01 +01:00
14 changed files with 97 additions and 37 deletions

View File

@ -2,7 +2,7 @@ Comment: 30.07.2021, FP and CMN, 16mK--2.3K extrapolated elsewhere
Sensor Model: RX-1000-BF0.007 Sensor Model: RX-1000-BF0.007
Serial Number: U08127 Serial Number: U08127
Data Format: 4 (Log Ohms/Kelvin) Data Format: 4 (Log Ohms/Kelvin)
SetPoint Limit: 0.0282 (Kelvin) SetPoint Limit: 20 (Kelvin)
Temperature coefficient: 1 (Negative) Temperature coefficient: 1 (Negative)
Number of Breakpoints: 198 Number of Breakpoints: 198

View File

@ -1,7 +1,7 @@
Sensor Model: RX-1000-BF0.007 Sensor Model: RX-1000-BF0.007
Serial Number: U08130 Serial Number: U08130
Data Format: 4 (Log Ohms/Kelvin) Data Format: 4 (Log Ohms/Kelvin)
SetPoint Limit: 0.0167 (Kelvin) SetPoint Limit: 10 (Kelvin)
Temperature coefficient: 1 (Negative) Temperature coefficient: 1 (Negative)
Number of Breakpoints: 198 Number of Breakpoints: 198

0
tcl/calcurves/X145791.340 Executable file → Normal file
View File

View File

@ -75,6 +75,6 @@ dil extVersion 1
catch {default ts control} catch {default ts control}
catch {default ts heaterselect} catch {default ts heaterselect}
#makeMotorValve vb ${dilts}:3004 makeMotorValve vb ${dilts}:3004
#makeMotorValve vm ${dilts}:3006 makeMotorValve vm ${dilts}:3006

View File

@ -228,7 +228,7 @@ proc stdConfig::ccu4 {{title CCU4} args} {
node hea out node hea out
prop label "add. He channels" prop label "add. He channels"
prop enum 0,1,6 prop enum 0,1,6=6
node hch out -int node hch out -int
prop label "LHe channel" prop label "LHe channel"
@ -539,7 +539,13 @@ proc ccu4::update {} {
set errvar [silent "" hgetpropval [sct]/$name errvar] set errvar [silent "" hgetpropval [sct]/$name errvar]
if {$errvar ne ""} { if {$errvar ne ""} {
set errval [hvali [sct]/$errvar] 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] hsetprop [sct]/$name geterror [lindex [split [hgetpropval [sct]/$errvar enum] ,] $errval]
hupdate [sct]/$name $value hupdate [sct]/$name $value
} else { } else {

View File

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

View File

@ -27,16 +27,30 @@ 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 /ts/pot hsetprop /tt getsample hvali /th/pot
} msg } msg
clientput $msg clientput $msg
} }
proc heliox::check_set {} { proc heliox::check_set {} {
# save for later
sct goto [sct target]
if {[sct target] < 1.6} { if {[sct target] < 1.6} {
set condense_text "" set condense_text ""
if {[hvali [sct]/lasts_until] > [DoubleTime]} { if {[hvali [sct]/lasts_until] > [DoubleTime]} {
@ -49,7 +63,7 @@ proc heliox::check_set {} {
hupdate [sct]/mode 4 hupdate [sct]/mode 4
set condense_text "started" set condense_text "started"
} }
sct goto [sct target] # sct goto [sct target]
if {$condense_text ne ""} { if {$condense_text ne ""} {
sct print "going to [sct target] K might take a while - condense process is $condense_text" 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 set mainsensor /th/pot
switch [sctval [sct]/mode] { switch [sctval [sct]/mode] {
1 { 1 {
nv set 2.5 nv set [hvali [sct]/holdflow]
th setsorb/channel C th setsorb/channel C
th setsorb 20 th setsorb 20
th mainloop set th mainloop set
@ -73,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]/holdflow]
th setsorb/channel C th setsorb/channel C
th setsorb 20 th setsorb 20
th mainloop set th mainloop set
@ -82,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]/holdflow]
th setsorb/channel B th setsorb/channel B
th mainloop setsorb th mainloop setsorb
th set 0 th set 0
@ -111,13 +125,14 @@ proc heliox::check_set {} {
} }
proc heliox::setmainsensor {mainsensor} { proc heliox::setmainsensor {mainsensor} {
set old [silent "" hgetpropval [sct objectPath] mainsensor] if {$mainsensor eq "/th/low"} {
if {$mainsensor ne $old} { set old /th/pot
if {$old ne ""} { } else {
catch {[sct controller] killupdatescript $old "updateval [sct objectPath]"} set old /th/low
}
[sct controller] updatescript $mainsensor "updateval [sct objectPath]"
} }
catch {[sct controller] killupdatescript $old "updateval [sct objectPath]"}
[sct controller] updatescript $mainsensor "updateval [sct objectPath]"
hsetprop [sct objectPath] mainsensor $mainsensor
} }
proc heliox::check_mode {} { proc heliox::check_mode {} {
@ -126,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]
} }
@ -136,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]
} }
@ -146,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
@ -178,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
@ -215,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
@ -241,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]"
} }
} }

View File

@ -303,7 +303,7 @@ proc ipsmag::update_leads {{n_of_slaves 3}} {
set msg "slave currents ($currents) are not within $mincur .. $maxcur" set msg "slave currents ($currents) are not within $mincur .. $maxcur"
hupdate [sct objectPath]/status $msg hupdate [sct objectPath]/status $msg
if {$status eq ""} { if {$status eq ""} {
# clientlog "ERROR: $msg" clientlog "WARNING: $msg"
} }
} elseif {[string match {slave currents *} $status]} { } elseif {[string match {slave currents *} $status]} {
hupdate [sct objectPath]/status "" hupdate [sct objectPath]/status ""

View File

@ -45,8 +45,8 @@ proc luft::writeCf {} {
} else { } else {
luft::set_error "epics error: $val $errtxt" luft::set_error "epics error: $val $errtxt"
} }
if {[scan [lindex [sct target] 0] %d period]} { catch {
sct timeout [expr [clock seconds] + $period + 10] sct timeout [expr [clock seconds] + $timeout + 10]
} }
return idle return idle
} }

View File

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

View File

@ -16,6 +16,7 @@ proc readpipe {} {
puts stdout "> $line" puts stdout "> $line"
} }
if {[eof $sea(pipe)]} { if {[eof $sea(pipe)]} {
puts stdout EOF
exit exit
} }
lassign $line adr date time value lassign $line adr date time value
@ -65,7 +66,12 @@ set env(EPICS_CA_AUTO_ADDR_LIST) NO
set env(PATH) $env(PATH):/afs/psi.ch/project/sinq/rhel7/stow/base-3.15.5/bin/linux-x86_64-debug/ set env(PATH) $env(PATH):/afs/psi.ch/project/sinq/rhel7/stow/base-3.15.5/bin/linux-x86_64-debug/
set sea(debug) [lindex "$argv 0" 0] set sea(debug) [lindex "$argv 0" 0]
set sea(heartbeat) 300 if {$sea(debug) eq "1"} {
set sea(heartbeat) 20
} else {
set sea(heartbeat) 300
set sea(debug) 0
}
# connect to sea server prep0 # connect to sea server prep0
set sea(sock) [socket samenv.psi.ch 8640] set sea(sock) [socket samenv.psi.ch 8640]
@ -78,15 +84,14 @@ if {$sea(debug)} {
set cmd "/afs/psi.ch/project/sinq/rhel7/stow/base-3.15.5/bin/linux-x86_64-debug/camonitor [array names values]" set cmd "/afs/psi.ch/project/sinq/rhel7/stow/base-3.15.5/bin/linux-x86_64-debug/camonitor [array names values]"
set ret [catch {set proc [exec ps ax -o pid,args | grep $cmd]} msg] set ret [catch {set proc [exec ps ax -o pid,args | grep $cmd]} msg]
set killed [list]
if {$ret == 0} { if {$ret == 0} {
foreach line [split $proc "\n"] { foreach line [split $proc "\n"] {
set l [split [string trim $line]] set l [split [string trim $line]]
set c [lrange $l 1 end] set c [lrange $l 1 end]
if {"$c" eq "$cmd"} { if {"$c" eq "$cmd"} {
# process was still running # process was still running
if {$sea(debug)} { lappend killed [lindex $l 0]
puts stdout "kill $proc ($c)"
}
exec kill -9 [lindex $l 0] exec kill -9 [lindex $l 0]
} }
} }
@ -95,5 +100,15 @@ if {$ret == 0} {
set sea(pipe) [open "|$cmd" r] set sea(pipe) [open "|$cmd" r]
fileevent $sea(pipe) readable readpipe fileevent $sea(pipe) readable readpipe
puts stdout [pid $sea(pipe)] set mypid [pid $sea(pipe)]
set f [open $env(HOME)/monitfiles/luft_camonitor.pid w]
puts $f $mypid
close $f
puts stdout $mypid
if {[llength $killed] > 0 && $sea(debug)} {
puts stdout "killed $killed"
}
seacom "clientlog luft started"
vwait forever vwait forever

View File

@ -16,7 +16,7 @@ makenv tt -driver [lsdriver] {
#tt set/limit 310 #tt set/limit 310
makeCCU4 ma6 nv makeCCU4 ma6 nv he_ilm
hupdate /nv/set 1.2 hupdate /nv/set 1.2
makeN2Fill ccu4ilm { makeN2Fill ccu4ilm {
ln2fill lowlevel 10 ln2fill lowlevel 10

View File

@ -1,3 +1,3 @@
stickDesc = standard MA6 stick stickDesc = standard MA6 stick
stick_sensors x63161 x63163 stick_sensors x63161 undefined

View File

@ -81,12 +81,20 @@ proc makeCCU4 {args} {
helium_register _cc /cc/h0 vessel helium_register _cc /cc/h0 vessel
if {$vessel ne "0"} { if {$vessel ne "0"} {
catch {cc hea 1} catch {cc hea 1}
catch {cc hem0 475}
catch {cc hfu0 0}
} }
} }
helium_register _cc /cc/h helium_register _cc /cc/h
} }
he_ilm { he_ilm {
makenv hefill -driver ccu4ext he lev makenv hefill -driver ccu4ext he lev
set vessel [silent 0 result instconfig hevessel]
if {$vessel ne "0"} {
catch {cc hea 1}
catch {cc hem0 475}
catch {cc hfu0 0}
}
GraphAdd lev % He_Level brown GraphAdd lev % He_Level brown
GraphAdd cc.h0 % HeVessel blue GraphAdd cc.h0 % HeVessel blue
hsetprop /hefill fast_cmd "lev mode 1\ncc hf 1" hsetprop /hefill fast_cmd "lev mode 1\ncc hf 1"