83 lines
1.6 KiB
Tcl
83 lines
1.6 KiB
Tcl
# keithley 2400 sourcemeter
|
|
namespace eval ksm2400 {} {
|
|
}
|
|
|
|
proc stdConfig::ksm2400 {} {
|
|
controller std "\n" 5
|
|
prop startcmd ":CONF:CURR:DC;;:SOUR:CURR:LEV 0;:OUTP 0;*IDN?"
|
|
|
|
obj Keithley2400 rd -float
|
|
prop read ksm2400::read
|
|
kids ksm {
|
|
node Enable wr -int
|
|
default 0
|
|
prop label Current
|
|
prop writecmd ":OUTP %d;:OUTP?"
|
|
prop readcmd ":OUTP?"
|
|
prop readfmt "%d"
|
|
prop enum off,on
|
|
|
|
node Llim wr
|
|
default 2.0
|
|
prop label set_Voltage_Limit
|
|
prop writecmd ":SENS:VOLT:PROT:LEV %g;:SENS:VOLT:PROT:LEV?"
|
|
prop readcmd ":SENS:VOLT:PROT:LEV?"
|
|
prop readfmt "%g"
|
|
|
|
node Vtrip rd
|
|
prop label VoltageTrip
|
|
prop readcmd ":SENS:VOLT:PROT:TRIP?"
|
|
prop readfmt "%g"
|
|
|
|
|
|
node iset wr
|
|
prop writecmd ":SOUR:CURR:LEV %g;:SOUR:CURR:LEV:AMPL?"
|
|
prop readcmd ":SOUR:CURR:LEV:AMPL?"
|
|
prop readfmt "%g"
|
|
|
|
node Vmas rd
|
|
prop label Voltagemeas
|
|
prop readcmd ":READ?"
|
|
prop readfmt "%g"
|
|
|
|
}
|
|
}
|
|
|
|
proc ksm2400::read {} {
|
|
set mode [hvali [sct]/Enable]
|
|
if {$mode == 0} {
|
|
sct send ":SOUR:CURR:LEV?"
|
|
} else {
|
|
sct send ":READ?"
|
|
}
|
|
return ksm2400::update
|
|
}
|
|
|
|
proc ksm2400::update {} {
|
|
set mode [hvali [sct]/Enable]
|
|
if {$mode ==0} {
|
|
sct update [sct result]
|
|
} else {
|
|
set dat [split [sct result] "," ]
|
|
sct update [lindex $dat 1]
|
|
}
|
|
if { [hvali [sct]/Vtrip] } {
|
|
sct geterror "Voltage Compliance reached"
|
|
}
|
|
return idle
|
|
}
|
|
|
|
proc ksm2400::enable {} {
|
|
|
|
set Enable [sct target]
|
|
sct send ":OUTP $Enable;:OUTP?"
|
|
return ksm2400::updateenable
|
|
}
|
|
|
|
proc ksm2400::updateenable {} {
|
|
sct update [sct result]
|
|
return idle
|
|
}
|
|
|
|
|