64 lines
1.4 KiB
Tcl
64 lines
1.4 KiB
Tcl
proc make17tfNv {} {
|
|
Layout 17tf
|
|
catch {
|
|
makeobject flowtf array logged
|
|
flowtf makeitem int 1
|
|
flowtf makeitem closed 0.4
|
|
flowtf makeitem opened 4.0
|
|
flowtf makeitem target 2.0
|
|
flowtf makeitem mode fixed
|
|
flowtf makeitem pos 0.5
|
|
}
|
|
hsetprop /nv read flowtask17tf
|
|
}
|
|
|
|
proc flowtask17tf {} {
|
|
if {[result flowtf mode] eq "controlled"} {
|
|
set pos [result flowtf pos]
|
|
set apos [result 17tf nv]
|
|
if {$pos > $apos + 0.1} {
|
|
set pos [expr $apos + 0.1]
|
|
}
|
|
if {$pos < $apos - 0.1} {
|
|
set pos [expr $apos - 0.1]
|
|
}
|
|
set dif [expr [result flowtf target] - [result nv flow]]
|
|
set new [expr $pos + $dif * [result flowtf int] * 0.001]
|
|
if {$new < [result flowtf closed]} {
|
|
set new [result flowtf closed]
|
|
}
|
|
if {$new > [result flowtf opened]} {
|
|
set new [result flowtf opened]
|
|
}
|
|
flowtf pos $new
|
|
if {[result 17tf valvestatus] eq "Idle"} {
|
|
17tf setposition $new
|
|
}
|
|
} else {
|
|
#clientput "FIXED"
|
|
}
|
|
return idle
|
|
}
|
|
|
|
proc 17tfLayout {} {
|
|
Group nv17tf "flow control"
|
|
}
|
|
|
|
proc nv17tfGroup {} {
|
|
|
|
RadioGroup "flowtf mode"
|
|
|
|
Tip "control flow at a given setpoint"
|
|
RadioButton controlled
|
|
NoNewline
|
|
Tip "fixed needle valve"
|
|
RadioButton fixed
|
|
Newline
|
|
|
|
Input "pressure target" "flowtf target"
|
|
Input "gain" "flowtf int"
|
|
Input "min" "flowtf closed"
|
|
Input "max" "flowtf opened"
|
|
|
|
}
|