# BF dilution pressure readings pc9193 port 1234 namespace eval bfgh {} { } proc stdConfig::bfgh {} { controller std "\n" 5 prop startcmd "names" obj BlueForsPressureLog -none kids "BF Gashandling Sensors" { node pivc rd prop readcmd "mgstatus 1" prop readfmt "S05: %g" node pstill rd prop readcmd "mgstatus 2" prop readfmt "S05: %g" node pcond rd prop readcmd "mgstatus 3" prop readfmt "S05: %g" node phep rd prop readcmd "mgstatus 4" prop readfmt "S05: %g" node pdump rd prop readcmd "mgstatus 5" prop readfmt "S05: %g" node paux rd prop readcmd "mgstatus 6" prop readfmt "S05: %g" node flow rd prop readcmd "fmstatus" prop readfmt "S09: %g" node v11 wr prop help "Dump PumpOUT" prop write bfgh::setrmt prop enum 1 prop read bfgh::chanread foreach {node help} { v2 "Gate Bypass" v1 "Gate Valve" turbo1 "Still Turbo" v12 "Dump slow PumpOUT" v3 "Still-Condenser Short" v10 "before He-3 Scroll" turbo2 "Aux. Turbo" v14 "common Vacuum 1" v4 "Compressor Bypass" v13 "Dump return" compressor "condensation Compressor" v15 " !!!Still-Aux Short!!!" v5 "Compressor out" hs-still "Heat switch 4K-Still" v21 "Aux Turbo bypass" v16 "common vacuum 2" v6 "Compressor in" scroll1 "He-3 Scroll" v22 "Aux Turbo in" v17 " !!!Condeser-Aux short!!!" v7 "Ln2 Trap out" scroll2 "Aux Scroll" v23 "Aux Turbo out" v18 " !!!Still-Aux short2!!!" v8 "LN2 Trap bypass" pulsetube "Pulse Tube" v19 "Venting" v20 "aux (Venting 2)" v9 "LN2 Trap in" hs-mc "Heat Switch Still-MC" ext "Still Heater" } { node $node out prop help $help prop write bfgh::setrmt prop enum 1 } node ext_still_control par 1 prop help "control still with lakeshore 370 output from /bfgh/ext" prop enum 1 node stillpower wr default 0.01 prop help "when /bfgh/ext is on, stillpower is applied to /tbf/set/manualpower" prop check bfgh::check_still prop write stdSct::completeUpdate prop read bfgh::read_still node serial_turbo_control par 1 prop help "use serial instead of analog connection for switching turbo on/off" prop enum 1 } variable ctrl variable path $ctrl updatescript $path/ext bfgh::ext_update $ctrl updatescript $path/turbo1 bfgh::turbo1_update } proc bfgh::ext_update {value} { if {[hval [sct parent]/ext_still_control]} { set old [hval /tbf/set/mode] set oldp [hval /tbf/set/manualpower] if {$value} { set new 2 set newp [hval [sct parent]/stillpower] } else { set new 0 set newp 0 } if {$new != $old} { hset /tbf/set/mode $new } if {$newp != $oldp} { hset /tbf/set/manualpower $newp } } } proc bfgh::read_still {} { [sct controller] updatescript /tbf/set/manualpower "bfgh::update_still [sct]" sct update [hvali [sct]] return idle } proc bfgh::update_still {path value} { if {$value} { updateval $path $value } return idle } proc bfgh::check_still {} { if {[sctval [sct parent]/ext_still_control]} { tbf set/manualpower [sct target] } } proc bfgh::turbo1_update {value} { set ser [hval [sct parent]/serial_turbo_control] if {$ser} { if {$value} { if {!([hval /turbo1a/on] && [hval /turbo1a/motor] && [hval /turbo1b/on] && [hval /turbo1b/motor])} { turbo1a on 1 turbo1b on 1 turbo1a motor 1 turbo1b motor 1 } } else { if {[hval /turbo1a/on] || [hval /turbo1a/motor] || [hval /turbo1b/on] || [hval /turbo1b/motor]} { turbo1a motor 0 turbo1b motor 0 turbo1a on 0 turbo1b on 0 } } } } proc bfgh::chanread {} { sct send "status" return bfgh::chanupd } proc bfgh::chanupd {} { set response [string range [sct result] 5 end] foreach chan [split $response ","] { set c [split $chan "="] hupdate [sct parent]/[lindex $c 0] [lindex $c 1] } hdelprop [sct] geterror return idle } proc bfgh::setrmt {} { sct send "control 1" return bfgh::takectrl } proc bfgh::takectrl {} { sct send "remote 1" return bfgh::writechan } proc bfgh::writechan {} { set node [lindex [split [sct] "/"] end] if {$node == "v15"|| $node == "v17"|| $node == "v18"} { hdelprop [sct parent]/$node requested clientput "ERROR: you are not allowed to change these values" # this are special valves they need confirmation } else { if {[sct target]} { sct send "on $node" } else { sct send "off $node" } } return bfgh::rtnctrl } proc bfgh::rtnctrl {} { sct send "remote 0" return bfgh::rtnrmt } proc bfgh::rtnrmt {} { sct send "control 0" return bfgh::chanread }