115 lines
2.8 KiB
Tcl
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
|