Skip to content

Keithley 2400

Keithley

2400

200V, 1A, 20W SourceMeter SMU

smu SCPI
Keithley 2400 Source Measure Unit front panel
Dave Jones, CC BY 2.0, via Wikimedia Commons
Default Address 24
Termination LF
IEEE 488.2 Yes
IDN Patterns
KEITHLEY INSTRUMENTS INC.,MODEL 2400,*,*KEITHLEY INSTRUMENTS,MODEL 2400,*,*KEITHLEY INSTRUMENTS*,*2400*,*,*

The Keithley 2400 SourceMeter is a 4-quadrant source-measure unit capable of simultaneously sourcing and measuring both voltage and current. Maximum output is 200V at 1A (20W total). Widely used for semiconductor characterization, solar cell testing, LED testing, and production test. Now manufactured by Tektronix. GPIB interface is standard. The output-off mode (OUTP:SMOD) is important for DUT protection -- HIMP opens the output relay, while NORM/ZERO keep it closed.

Bit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0
OperationRQS/MSSESBMAVQuestionable DataError QueueUnusedMeasurement Event
Operation summary bitRequesting service / Master summary statusEvent status byte summary bitMessage available in output bufferQuestionable data summary bitOne or more errors in error queueNot usedMeasurement event summary bit

Use *STB? to read status byte, *SRE to set service request enable register

Standard IEEE 488.2 commands supported by all compliant instruments

Command Type Description
*IDN? query Identification query -- returns manufacturer, model, serial, firmware
Details
Returns (string) — Comma-separated identification
Example: KEITHLEY INSTRUMENTS INC.,MODEL 2400,1234567,C30 Mar 17 2006 09:29:29/A02 /K/J
*RST command Reset to factory default state (output off, voltage source, 21V range)
*CLS command Clear status registers and error queue
*ESE {mask} command Set event status enable register
Details
Parameters
  • mask (numeric) — Bitmask 0-255
*ESE? query Query event status enable register
Details
Returns (numeric)
Example: 0
*ESR? query Read and clear event status register
Details
Returns (numeric)
Example: 0
*OPC command Set operation complete bit in ESR when all pending operations finish
*OPC? query Returns 1 when all pending operations complete
Details
Returns (numeric)
Example: 1
*SRE {mask} command Set service request enable register
Details
Parameters
  • mask (numeric) — Bitmask 0-255
*SRE? query Query service request enable register
Details
Returns (numeric)
Example: 0
*STB? query Read status byte register
Details
Returns (numeric) — Status byte value
Example: 0
*TST? query Self-test; returns 0 for pass, 1 for fail
Details
Returns (numeric)
Example: 0
Note: Takes several seconds to complete
*TRG command Trigger measurement from bus (requires trigger source BUS)
*SAV {location} command Save current instrument setup to non-volatile memory
Details
Parameters
  • location (numeric) — Memory location 0-4
*RCL {location} command Recall instrument setup from non-volatile memory
Details
Parameters
  • location (numeric) — Memory location 0-4

Configure the source (output) function, level, and range

Command Type Description
SOUR:FUNC {function} command Select source function (voltage or current)
Details
Parameters
  • function (enum) — VOLT=voltage source, CURR=current source Values: VOLT, CURR
SOUR:FUNC? query Query current source function
Details
Returns (string)
Example: VOLT
SOUR:VOLT:MODE {mode} command Set voltage source mode
Details
Parameters
  • mode (enum) — FIX=fixed level, LIST=list sweep, SWE=staircase sweep Values: FIX, LIST, SWE
SOUR:VOLT {value} command Set source voltage level
Details
Parameters
  • value (numeric) — Voltage in volts (-210 to +210) or MIN|MAX|DEF
Example SOUR:VOLT 5.0
SOUR:VOLT? query
Details
Returns (numeric)
Example: +5.00000000E+00
SOUR:VOLT:RANG {range} command Set voltage source range
Details
Parameters
  • range (numeric) — 0.2, 2, 20, 200 (volts) or MIN|MAX
SOUR:VOLT:RANG? query
Details
Returns (numeric)
Example: +2.00000000E+01
SOUR:VOLT:RANG:AUTO {state} command Enable/disable voltage source autoranging
Details
Parameters
  • state (enum) Values: ON, OFF
SOUR:CURR:MODE {mode} command Set current source mode
Details
Parameters
  • mode (enum) — FIX=fixed level, LIST=list sweep, SWE=staircase sweep Values: FIX, LIST, SWE
SOUR:CURR {value} command Set source current level
Details
Parameters
  • value (numeric) — Current in amps (-1.05 to +1.05) or MIN|MAX|DEF
Example SOUR:CURR 0.001
SOUR:CURR? query
Details
Returns (numeric)
Example: +1.00000000E-03
SOUR:CURR:RANG {range} command Set current source range
Details
Parameters
  • range (numeric) — 1e-6, 10e-6, 100e-6, 1e-3, 10e-3, 100e-3, 1 (amps) or MIN|MAX
SOUR:CURR:RANG? query
Details
Returns (numeric)
Example: +1.00000000E-03
SOUR:CURR:RANG:AUTO {state} command Enable/disable current source autoranging
Details
Parameters
  • state (enum) Values: ON, OFF
SOUR:DEL {seconds} command Set source delay (settling time before measurement)
Details
Parameters
  • seconds (numeric) — Delay in seconds (0 to 999.9999) or MIN|MAX|DEF
Note: Allows DUT to settle after source changes before measurement is taken
SOUR:DEL? query
Details
Returns (numeric)
Example: +1.00000000E-03
SOUR:DEL:AUTO {state} command Enable/disable automatic source delay
Details
Parameters
  • state (enum) Values: ON, OFF

Configure which parameters to measure and their ranges, compliance limits, and integration time

Command Type Description
SENS:FUNC {function_list} command Select measurement function(s)
Details
Parameters
  • function_list (string) — Quoted function name(s): 'VOLT', 'CURR', 'RES', or 'VOLT','CURR' for concurrent
Example SENS:FUNC 'VOLT','CURR'
SENS:FUNC? query
Details
Returns (string)
Example: "VOLT:DC"
SENS:VOLT:PROT {value} command Set voltage compliance limit (when sourcing current)
Details
Parameters
  • value (numeric) — Compliance voltage in volts (1e-3 to 210) or MIN|MAX|DEF
Example SENS:VOLT:PROT 10
Note: Acts as a voltage clamp to protect the DUT when the instrument is sourcing current
SENS:VOLT:PROT? query
Details
Returns (numeric)
Example: +1.00000000E+01
SENS:VOLT:PROT:TRIP? query Query whether voltage compliance limit has been reached
Details
Returns (numeric) — 0=not tripped, 1=in compliance
Example: 0
SENS:CURR:PROT {value} command Set current compliance limit (when sourcing voltage)
Details
Parameters
  • value (numeric) — Compliance current in amps (1e-6 to 1.05) or MIN|MAX|DEF
Example SENS:CURR:PROT 0.1
Note: Acts as a current clamp to protect the DUT when the instrument is sourcing voltage
SENS:CURR:PROT? query
Details
Returns (numeric)
Example: +1.00000000E-01
SENS:CURR:PROT:TRIP? query Query whether current compliance limit has been reached
Details
Returns (numeric) — 0=not tripped, 1=in compliance
Example: 0
SENS:VOLT:RANG {range} command Set voltage measurement range
Details
Parameters
  • range (numeric) — 0.2, 2, 20, 200 (volts) or MIN|MAX
SENS:VOLT:RANG? query
Details
Returns (numeric)
Example: +2.00000000E+01
SENS:VOLT:RANG:AUTO {state} command Enable/disable voltage measurement autoranging
Details
Parameters
  • state (enum) Values: ON, OFF
SENS:CURR:RANG {range} command Set current measurement range
Details
Parameters
  • range (numeric) — 1e-6, 10e-6, 100e-6, 1e-3, 10e-3, 100e-3, 1 (amps) or MIN|MAX
SENS:CURR:RANG? query
Details
Returns (numeric)
Example: +1.00000000E-01
SENS:CURR:RANG:AUTO {state} command Enable/disable current measurement autoranging
Details
Parameters
  • state (enum) Values: ON, OFF
SENS:VOLT:NPLC {nplc} command Set voltage measurement integration time in power line cycles
Details
Parameters
  • nplc (numeric) — 0.01 to 10 or MIN|MAX
Note: Higher NPLC = better resolution but slower. 10 NPLC = 6.5 digits.
SENS:VOLT:NPLC? query
Details
Returns (numeric)
Example: +1.00000000E+00
SENS:CURR:NPLC {nplc} command Set current measurement integration time in power line cycles
Details
Parameters
  • nplc (numeric) — 0.01 to 10 or MIN|MAX
SENS:CURR:NPLC? query
Details
Returns (numeric)
Example: +1.00000000E+00
SENS:AVER:STAT {state} command Enable/disable measurement averaging (digital filter)
Details
Parameters
  • state (enum) Values: ON, OFF
SENS:AVER:COUN {count} command Set number of readings to average
Details
Parameters
  • count (numeric) — 1 to 100
SENS:AVER:TCON {type} command Set averaging filter type
Details
Parameters
  • type (enum) — MOV=moving average, REP=repeating average Values: MOV, REP

Enable/disable the source output and configure output-off behavior

Command Type Description
OUTP {state} command Turn source output on/off
Details
Parameters
  • state (enum) Values: ON, OFF
Note: CAUTION: Turning output ON applies voltage/current to DUT. Verify compliance limits before enabling.
OUTP? query Query output state
Details
Returns (numeric) — 0=OFF, 1=ON
Example: 0
OUTP:SMOD {mode} command Set output-off mode (behavior when output is turned off)
Details
Parameters
  • mode (enum) — HIMP=high impedance (relay open), NORM=normal (source 0V, measure), ZERO=0V output, GUAR=guard Values: HIMP, NORM, ZERO, GUAR
Note: HIMP physically disconnects the output. NORM/ZERO keep the output relay closed.
OUTP:SMOD? query
Details
Returns (string)
Example: HIMP

Trigger and read measurements

Command Type Description
MEAS:VOLT? query Configure sense for voltage, trigger one reading, and return result
Details
Returns (numeric) — Depends on FORM:ELEM setting; default returns voltage, current, resistance, timestamp, status
Example: +5.00000000E+00,+1.23456789E-03,+4.05000000E+03,+1.00000000E+00,+0.00000000E+00
MEAS:CURR? query Configure sense for current, trigger one reading, and return result
Details
Returns (numeric)
Example: +5.00000000E+00,+1.23456789E-03,+4.05000000E+03,+1.00000000E+00,+0.00000000E+00
MEAS:RES? query Configure sense for resistance, trigger one reading, and return result
Details
Returns (numeric)
Example: +5.00000000E+00,+1.23456789E-03,+4.05000000E+03,+1.00000000E+00,+0.00000000E+00
READ? query Enable output if needed, trigger one measurement, return reading, disable output
Details
Returns (numeric) — Comma-separated values per FORM:ELEM
Example: +5.00000000E+00,+1.23456789E-03,+4.05000000E+03,+1.00000000E+00,+0.00000000E+00
Note: READ? is a high-level command that manages the output state automatically
INIT command Initiate trigger model and place in wait-for-trigger state
FETCH? query Return stored readings from buffer (no new trigger)
Details
Returns (numeric) — Comma-separated readings per FORM:ELEM

Trigger model configuration (arm layer and trigger layer)

Command Type Description
TRIG:SOUR {source} command Set trigger source
Details
Parameters
  • source (enum) — BUS=*TRG/GET, IMM=immediate, TLIN=trigger link Values: BUS, IMM, TLIN
TRIG:SOUR? query
Details
Returns (string)
Example: IMM
TRIG:DEL {seconds} command Set trigger delay
Details
Parameters
  • seconds (numeric) — Delay in seconds (0 to 999.9999) or MIN|MAX|DEF
TRIG:DEL? query
Details
Returns (numeric)
Example: +0.00000000E+00
TRIG:COUN {count} command Set number of triggers to accept (measurements per arm event)
Details
Parameters
  • count (numeric) — 1 to 2500, or MIN|MAX|INF
TRIG:COUN? query
Details
Returns (numeric)
Example: +1
SAMP:COUN {count} command Set number of readings per trigger
Details
Parameters
  • count (numeric) — 1 to 2500 or MIN|MAX
SAMP:COUN? query
Details
Returns (numeric)
Example: +1
ARM:SOUR {source} command Set arm layer event source
Details
Parameters
  • source (enum) — IMM=immediate, BUS=GPIB, TLIN=trigger link, TIM=timer, MAN=manual, NST=notify Values: BUS, IMM, TLIN, TIM, MAN, NST
ARM:SOUR? query
Details
Returns (string)
Example: IMM
ARM:COUN {count} command Set arm count (number of arm events before returning to idle)
Details
Parameters
  • count (numeric) — 1 to 2500, or MIN|MAX|INF
ARM:COUN? query
Details
Returns (numeric)
Example: +1

Configure voltage or current sweep parameters for IV curves and characterization

Command Type Description
SOUR:VOLT:STAR {value} command Set voltage sweep start value
Details
Parameters
  • value (numeric) — Start voltage in volts
Example SOUR:VOLT:STAR 0
SOUR:VOLT:STOP {value} command Set voltage sweep stop value
Details
Parameters
  • value (numeric) — Stop voltage in volts
Example SOUR:VOLT:STOP 5
SOUR:VOLT:STEP {value} command Set voltage sweep step size
Details
Parameters
  • value (numeric) — Step voltage in volts
Example SOUR:VOLT:STEP 0.1
SOUR:CURR:STAR {value} command Set current sweep start value
Details
Parameters
  • value (numeric) — Start current in amps
SOUR:CURR:STOP {value} command Set current sweep stop value
Details
Parameters
  • value (numeric) — Stop current in amps
SOUR:CURR:STEP {value} command Set current sweep step size
Details
Parameters
  • value (numeric) — Step current in amps
SOUR:SWE:RANG {mode} command Set sweep ranging mode
Details
Parameters
  • mode (enum) — BEST=optimal range per step, AUTO=autorange, FIX=fixed range Values: BEST, AUTO, FIX
SOUR:SWE:POIN {count} command Set number of sweep points (overrides step if both set)
Details
Parameters
  • count (numeric) — Number of points in sweep (1 to 2500)
SOUR:SWE:POIN? query
Details
Returns (numeric)
Example: 51
SOUR:SWE:SPAC {spacing} command Set sweep spacing
Details
Parameters
  • spacing (enum) — LIN=linear, LOG=logarithmic Values: LIN, LOG
SOUR:SWE:DIR {direction} command Set sweep direction
Details
Parameters
  • direction (enum) Values: UP, DOWN

Control which data elements are returned and their format

Command Type Description
FORM:ELEM {elements} command Select data elements included in output readings
Details
Parameters
  • elements (string) — Comma-separated: VOLT, CURR, RES, TIME, STAT
Example FORM:ELEM VOLT,CURR
Note: Default is all five elements. Reducing elements speeds up data transfer.
FORM:ELEM? query
Details
Returns (string)
Example: VOLT,CURR,RES,TIME,STAT
FORM:DATA {format} command Set data transfer format
Details
Parameters
  • format (enum) — ASC=ASCII text, REAL/SREAL=32-bit IEEE 754, DREAL=64-bit IEEE 754 Values: ASC, REAL,32, REAL,64, SREAL, DREAL
Note: Binary formats are faster for bulk sweep data but require binary parsing
FORM:DATA? query
Details
Returns (string)
Example: ASC

Internal data buffer for storing sweep and measurement readings

Command Type Description
TRAC:CLE command Clear all readings from buffer
TRAC:POIN {size} command Set buffer size (number of readings to store)
Details
Parameters
  • size (numeric) — 1 to 2500 or MIN|MAX
TRAC:POIN? query Query buffer size
Details
Returns (numeric)
Example: 2500
TRAC:POIN:ACT? query Query number of readings currently stored in buffer
Details
Returns (numeric)
Example: 0
TRAC:FEED {source} command Select data source for buffer
Details
Parameters
  • source (enum) — SENS=raw readings, CALC=math results, NONE=disable Values: SENS, CALC, NONE
TRAC:FEED:CONT {control} command Set buffer control mode
Details
Parameters
  • control (enum) — NEXT=fill once and stop, ALW=continuous wrap, NEV=disable Values: NEXT, ALW, NEV
TRAC:DATA? query Return all readings from buffer
Details
Returns (numeric) — Comma-separated values per FORM:ELEM for each reading
Example: +0.00000E+00,+1.23456E-09,+0.00000E+00,+0.00000E+00,+0.00000E+00,...

Status register queries for event detection and service requests

Command Type Description
STAT:MEAS? query Read and clear measurement event register
Details
Returns (numeric) — Measurement event register value
Example: 0
STAT:MEAS:ENAB {mask} command Set measurement event enable register
Details
Parameters
  • mask (numeric) — Bitmask 0-65535
STAT:OPER? query Read and clear operation event register
Details
Returns (numeric)
Example: 0
STAT:OPER:ENAB {mask} command Set operation event enable register
Details
Parameters
  • mask (numeric) — Bitmask 0-65535
STAT:QUES? query Read and clear questionable data event register
Details
Returns (numeric)
Example: 0
STAT:QUES:ENAB {mask} command Set questionable data event enable register
Details
Parameters
  • mask (numeric) — Bitmask 0-65535
STAT:PRES command Preset all enable registers to 0

System configuration and queries

Command Type Description
SYST:ERR? query Read and remove one error from error queue
Details
Returns (string) — Error code and message
Example: +0,"No error"
SYST:VERS? query Query SCPI version
Details
Returns (string)
Example: 1995.0
SYST:BEEP {frequency},{duration} command Issue a beep at specified frequency and duration
Details
Parameters
  • frequency (numeric) — Frequency in Hz (65 to 2e6)
  • duration (numeric) — Duration in seconds (0 to 7.9)
Example SYST:BEEP 440,0.5
SYST:BEEP:STAT {state} command Enable/disable beeper
Details
Parameters
  • state (enum) Values: ON, OFF
SYST:RSEN {state} command Enable/disable 4-wire remote sensing
Details
Parameters
  • state (enum) Values: ON, OFF
Note: ON=4-wire (Kelvin) sensing for accurate measurements. Requires sense leads connected to DUT.
SYST:RSEN? query
Details
Returns (numeric) — 0=2-wire, 1=4-wire
Example: 0
SYST:AZER:STAT {state} command Enable/disable autozero for measurements
Details
Parameters
  • state (enum) Values: ON, OFF
Note: Disabling autozero doubles measurement speed at the cost of some accuracy
DISP:ENAB {state} command Enable/disable the front panel display
Details
Parameters
  • state (enum) Values: ON, OFF
Note: Disabling the display improves measurement throughput. Same effect as DISP ON/OFF.
DISP:ENAB? query Query front panel display enable state
Details
Returns (numeric) — 0=disabled, 1=enabled
Example: 1
DISP {state} command Turn front panel display on/off
Details
Parameters
  • state (enum) Values: ON, OFF
Note: Turning display off improves measurement speed
DISP:TEXT "{message}" command Display custom text on front panel (up to 32 chars)
Details
Parameters
  • message (string) — Up to 32 characters
Example DISP:TEXT "IV SWEEP"
DISP:TEXT:CLE command Clear custom display text and return to normal display
SYST:PRES command Return to factory default settings

Sweep voltage from 0V to 5V and measure current at each step — standard diode or resistor characterization

1

Reset to known state

*RST
2

Clear status registers

*CLS
3

Select voltage source function

SOUR:FUNC VOLT
4

Set to sweep mode

SOUR:VOLT:MODE SWE
5

Set sweep start voltage

SOUR:VOLT:STAR 0
6

Set sweep stop voltage

SOUR:VOLT:STOP 5
7

Set sweep step size

SOUR:VOLT:STEP 0.1
8

Set linear sweep spacing

SOUR:SWE:SPAC LIN
9

Set current compliance to 100mA

SENS:CURR:PROT 0.1
10

Configure sense to measure voltage and current

SENS:FUNC 'VOLT','CURR'
11

Return only voltage and current data

FORM:ELEM VOLT,CURR
12

Set trigger count to match sweep points

TRIG:COUN 51
13

Enable output

OUTP ON
14

Initiate sweep

INIT
15

Wait for completion

*OPC?
Expected: 1
16

Fetch all sweep data

TRAC:DATA?
Expected: Comma-separated V,I pairs
17

Disable output

OUTP OFF

Source a precise current and measure the resulting voltage across the DUT

1

Reset to known state

*RST
2

Clear status registers

*CLS
3

Select current source function

SOUR:FUNC CURR
4

Set fixed source mode

SOUR:CURR:MODE FIX
5

Set source current to 1mA

SOUR:CURR 0.001
6

Set voltage compliance to 10V

SENS:VOLT:PROT 10
7

Measure voltage

SENS:FUNC 'VOLT'
8

Return voltage only

FORM:ELEM VOLT
9

Enable output

OUTP ON
10

Trigger and read voltage

READ?
Expected: +X.XXXXXXXXE+XX
11

Check if in compliance (voltage limit hit)

SENS:VOLT:PROT:TRIP?
Expected: 0
12

Disable output when done

OUTP OFF

Source a known current, measure voltage, and read computed resistance using 4-wire sensing

1

Reset to known state

*RST
2

Clear status registers

*CLS
3

Enable 4-wire remote sensing

SYST:RSEN ON
4

Select current source function

SOUR:FUNC CURR
5

Set fixed source mode

SOUR:CURR:MODE FIX
6

Set test current to 1mA

SOUR:CURR 0.001
7

Set voltage compliance

SENS:VOLT:PROT 20
8

Measure resistance

SENS:FUNC 'RES'
9

Return resistance only

FORM:ELEM RES
10

Set NPLC for good resolution

SENS:VOLT:NPLC 10
11

Enable output

OUTP ON
12

Trigger and read resistance

READ?
Expected: +X.XXXXXXXXE+XX
13

Disable output when done

OUTP OFF

Apply a fixed voltage to a DUT and measure the resulting current — standard LED or semiconductor forward bias test

1

Reset to known state

*RST
2

Clear status registers

*CLS
3

Select voltage source function

SOUR:FUNC VOLT
4

Set fixed source mode

SOUR:VOLT:MODE FIX
5

Set source voltage to 3.3V

SOUR:VOLT 3.3
6

Set voltage source range

SOUR:VOLT:RANG 20
7

Set current compliance to 20mA

SENS:CURR:PROT 0.02
8

Measure current

SENS:FUNC 'CURR'
9

Set current measurement range

SENS:CURR:RANG 0.1
10

Return current only

FORM:ELEM CURR
11

Set NPLC for good accuracy

SENS:CURR:NPLC 1
12

Enable output

OUTP ON
13

Trigger and read current

READ?
Expected: +X.XXXXXXXXE-XX
14

Check if in compliance (current limit hit)

SENS:CURR:PROT:TRIP?
Expected: 0
15

Disable output when done

OUTP OFF