Files
sea/tcl/startup/lpr.tcl
2022-08-18 15:04:28 +02:00

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
}
}