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

115 lines
2.8 KiB
Tcl

#----- LakeShore 370 -----
proc makeLs370 {{name LS370} {obj ts}} {
makenv $obj lsc370
if {[string equal ts $obj]} {
Layout ls370 $name
defineTemperature ts
} else {
Layout ls370a $obj
}
}
proc ls370Group {obj} {
showStatus $obj
if {[result $obj ighHeater] >= 0} {
Tip "maximal heater power (mW)"
Input "max. heater power" "ls370ighpower"
}
Group ls370Control "Control Parameters" $obj
Group ls370Range "Reading Parameters" $obj
}
proc ls370aGroup {obj} {
showStatus $obj
Group ls370Control "Control Parameters" $obj
Group ls370Range "Reading Parameters" $obj
}
proc ls370ControlGroup {obj} {
RadioGroup "ts ighHeater"
RadioButton -1 weakLink
set val [result ts ighHeater]
if {$val == -1} {set val 0}
RadioButton $val noWeakLink
# Label "IDR range must be -1 for weak link"
# Tip "this is controlled by max power for no weak link"
# Input "IDR range" "ts ighHeater"
Tip "proportional control parameter (gain: the higher, the faster)"
Input "prop" "$obj prop"
Tip "integral control parameter (seconds)"
Input "integ" "$obj integ"
Tip "derivative control parameter (seconds)"
Input "deriv" "$obj deriv"
Newline
Tip "heater range (0...8)"
Input "heater range" "$obj htrRange"
Label "[$obj enumText htrRange] / [result $obj maxPower] mW"
Newline
Tip "tolerance (K) for drive command"
Input "tolerance" "$obj tolerance"
Tip "timeout (sec) for drive command"
Input "drive timeout" "$obj maxwait"
Tip "settling time (sec) for drive command"
Input "settling time" "$obj settle"
}
proc ls370RangeGroup {obj} {
Tip "voltage excitation (0...12)"
Input "voltage excit." "$obj voltageEx"
Label [$obj enumText voltageEx]
Tip "current excitation (0...22)"
Input "current excit." "$obj currentEx"
Label [$obj enumText currentEx]
CheckBox "auto range" "$obj autoRange"
Newline
Tip "resistance range (0...22)"
Input "resistance range" "$obj range"
Label [$obj enumText range]
}
proc ls370Layout args {
Input "$args set T" "ts set"
if {[result ts htrRange] == 0} {
if {[result ts set] != 0} {
Style warning
}
Label "heater OFF"
}
Group ls370 "LS370 settings" ts
}
proc ls370aLayout {obj} {
Group ls370a "LS370a settings" $obj
}
proc ls370ighPower {{value none}} {
if {[string compare $value none] == 0} {
set hr [result dil htrRange]
if {$hr == 0} {
return "ts maxPower = 0"
}
return [ts maxPower]
}
if {$value > 0} {
set hr 5
while {$value < 2.01 && $hr > 1} {
set value [expr $value * 10]
incr hr -1
}
if {$value < 10.1} {
ts htrRange 6
} else {
ts htrRange 7
}
ts ighHeater $hr
dil htrRange $hr
} else {
ts htrRange 0
dil htrRange 0
}
return [ts maxPower]
}
publishLazy ls370ighPower spy