111 lines
1.9 KiB
Tcl
111 lines
1.9 KiB
Tcl
namespace eval ilm {} {
|
|
}
|
|
|
|
proc stdConfig::ilm {{cfg 1}} {
|
|
set nodes {{} 0 0}
|
|
set label "LHe level meter settings"
|
|
switch $cfg {
|
|
2 - 211 {
|
|
set nodes {{} /n2 0}
|
|
set label "level meter settings"
|
|
}
|
|
220 {
|
|
set nodes {{} /he 0}
|
|
}
|
|
221 {
|
|
set label "level meter settings"
|
|
set nodes {{} /he /n2}
|
|
}
|
|
}
|
|
|
|
controller std \r 10
|
|
|
|
prop startcmd V
|
|
|
|
obj ilm200 rd
|
|
prop readcmd "R1"
|
|
prop update ilm::update
|
|
GraphAdd lev % He_level brown
|
|
|
|
kids $label {
|
|
|
|
# mode works only for first He channel
|
|
|
|
node mode -int wr
|
|
prop enum "slow,fast (switches to slow automatically after filling)"
|
|
prop read ilm::rdmode
|
|
prop write ilm::wrmode
|
|
prop nodes $nodes
|
|
|
|
if {[lindex $nodes 1] eq "/he"} {
|
|
node he rd
|
|
prop readcmd "R2"
|
|
prop update ilm::update
|
|
}
|
|
|
|
if {[lindex $nodes 1] eq "/n2"} {
|
|
node n2 rd
|
|
prop readcmd "R2"
|
|
prop update ilm::update
|
|
GraphAdd lev.n2 % N2_level black
|
|
}
|
|
|
|
if {[lindex $nodes 2] eq "/n2"} {
|
|
node he rd
|
|
prop readcmd "R3"
|
|
prop update ilm::update
|
|
GraphAdd lev.n2 % N2_level black
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
proc ilm::update {} {
|
|
stdSct::scanf "R%d" level
|
|
sct update [expr $level * 0.1]
|
|
return idle
|
|
}
|
|
|
|
proc ilm::rdmode {} {
|
|
sct send X
|
|
return ilm::updmode
|
|
}
|
|
|
|
proc ilm::updmode {} {
|
|
stdSct::scanf "X%c%c%cS%2x%2x%2xR" x1 x2 x3 s1 s2 s3
|
|
set chan 0
|
|
if {$s1 & 2} {
|
|
sct update 1
|
|
} else {
|
|
sct update 0
|
|
}
|
|
foreach n [sct nodes] {
|
|
incr chan
|
|
if {$n ne "0"} {
|
|
if {[set x$chan] == 9} {
|
|
hsetprop [sct parent]$n geterror "error (probably sensor not connected)"
|
|
}
|
|
}
|
|
}
|
|
return idle
|
|
}
|
|
|
|
proc ilm::wrmode {} {
|
|
sct send C3
|
|
return ilm::wrmode2
|
|
}
|
|
|
|
proc ilm::wrmode2 {} {
|
|
if {[sct target]} {
|
|
sct send T1
|
|
} else {
|
|
sct send S1
|
|
}
|
|
return ilm::wrmode3
|
|
}
|
|
|
|
proc ilm::wrmode3 {} {
|
|
sct send C0
|
|
return stdSct::completeUpdate
|
|
}
|