90 lines
1.9 KiB
Tcl
90 lines
1.9 KiB
Tcl
namespace eval amoroven {
|
|
}
|
|
|
|
proc stdConfig::amoroven {} {
|
|
controller syncedprot
|
|
|
|
obj AMOROVEN rd
|
|
prop read amoroven::read_press
|
|
|
|
kids "pressure, pump and gas" {
|
|
node vacuumpump wr -int
|
|
prop enum 1
|
|
prop read amoroven::read_pump
|
|
prop check amoroven::check_pump
|
|
prop write stdSct::complete
|
|
|
|
node gasflow wr -int
|
|
prop enum 1
|
|
prop read amoroven::read_valve hcd hv
|
|
prop check amoroven::set_valve hcd
|
|
prop write stdSct::complete
|
|
|
|
node tlimit par 700
|
|
node tlimit_without_vacuum par 320
|
|
}
|
|
}
|
|
|
|
proc amoroven::read_press {} {
|
|
sct update [expr [result cc f] * 4 + 4]
|
|
return idle
|
|
}
|
|
|
|
proc amoroven::update_limit {vacuumon} {
|
|
if {$vacuumon} {
|
|
set tlim [hval [sct parent]/tlimit]
|
|
set msg ""
|
|
} else {
|
|
set tlim [hval [sct parent]/tlimit_without_vacuum]
|
|
set msg " vacuum pump off"
|
|
}
|
|
if {$tlim != [result tt set/limit] || [silent "" hgetpropval /tt/set tlimit_message] ne $msg} {
|
|
tt set/limit $tlim
|
|
hsetprop /tt/set tlimit_message $msg
|
|
}
|
|
}
|
|
|
|
proc amoroven::check_pump {} {
|
|
if {[sct target]} {
|
|
update_limit 1
|
|
} else {
|
|
set tlim [hval [sct parent]/tlimit_without_vacuum]
|
|
if {[result tt set] > $tlim || [result tt] > $tlim} {
|
|
error "temperature to high to switch off pump"
|
|
}
|
|
update_limit 0
|
|
}
|
|
set_valve nc
|
|
}
|
|
|
|
proc amoroven::read_pump {} {
|
|
read_valve nc nv
|
|
set tlim [result tt set/limit]
|
|
update_limit [hvali [sct]]
|
|
if {![hvali [sct]] && [hvali /tt/set] > $tlim} {
|
|
tt set 0
|
|
clientlog "WARNING: vacuumpump off, switched off T"
|
|
}
|
|
return idle
|
|
}
|
|
|
|
proc amoroven::set_valve {cmd} {
|
|
set on [expr [sct target] != 0]
|
|
clientput "$cmd $on"
|
|
cc $cmd $on
|
|
sct update $on
|
|
return idle
|
|
}
|
|
|
|
proc amoroven::read_valve {cmd getcmd} {
|
|
# if sct requested is available, the target is changed, but not yet applied
|
|
if {[silent [result cc $getcmd] sct requested]} {
|
|
# refresh
|
|
cc $cmd 1
|
|
sct update 1
|
|
} else {
|
|
sct update 0
|
|
}
|
|
return idle
|
|
}
|