50 lines
1.3 KiB
Tcl
50 lines
1.3 KiB
Tcl
# lambda point control
|
|
|
|
proc makeLPR {lpr lnv port sensors} {
|
|
set abovelam [lindex $sensors 0]
|
|
GraphAdd ${lnv}.flow mbar LPR_flow orange
|
|
GraphAdd ${lnv}.autoflow.flowtarget mbar LPR_set brown
|
|
makenv $lnv -driver nv_ccu -controller ccu2 -port $port "lambda point refrigerator"
|
|
makenv $lpr -driver piloop -invar $abovelam -outvar "lpr_set $lnv $lpr" -prop 0.5 -int 600 -outmin 35 -outmax 12 -title "lpr"
|
|
hsetprop /$lnv switchgraph "lpr_switchgraph $lnv {$sensors}"
|
|
# _$lpr updatescript $abovelam "lpr_update $sensors"
|
|
# set lnv to off by default
|
|
hset /$lnv 5
|
|
hsetprop /$lnv @outvar_start $lnv 1
|
|
}
|
|
|
|
proc lpr_update {sens value} {
|
|
foreach s $sens {
|
|
set s [hvali $s]
|
|
if {$s > $value} {
|
|
set value $s
|
|
}
|
|
}
|
|
loop::updateinput1 $value
|
|
}
|
|
|
|
proc lpr_set {lnv lpr {setpoint ""}} {
|
|
if {$setpoint eq ""} {
|
|
return [result $lnv set]
|
|
}
|
|
if {[hvali $lnv] != 1} {
|
|
$lpr mode 0
|
|
error "lambda point refrigerator is switched off - must be controlling while lpr control is on"
|
|
}
|
|
$lnv set $setpoint
|
|
}
|
|
|
|
proc lpr_switchgraph {nvname sensors value} {
|
|
foreach ls $sensors {
|
|
set ls [join [lrange [split $ls /] 1 end] .]
|
|
GraphItem shown $ls $value
|
|
}
|
|
GraphItem shown ${nvname}.flow $value
|
|
GraphItem shown ${nvname}.autoflow.flowtarget $value
|
|
if {$value} {
|
|
ignoreMsg $nvname 0
|
|
} else {
|
|
ignoreMsg $nvname always
|
|
}
|
|
}
|