US
Current Language
×
English

Select a language:

Contact your local Tektronix office:

Contact Us
Toggle Menu
US
Current Language
×
English

Select a language:

Contact your local Tektronix office:

Contact Us

XYZs of Oscilloscopes

After reading this primer, you will be able to:

  • Describe how oscilloscopes work
  • Describe the differences between analog, digital storage, digital phosphor, and digital sampling oscilloscopes
  • Describe electrical waveform types
  • Understand basic oscilloscope controls
  • Take simple measurements

The glossary in the back of this primer will give you definitions of unfamiliar terms. The vocabulary and multiple-choice written exercises on oscilloscope theory and controls make this primer a useful classroom aid. No mathematical or electronics knowledge is necessary.

DOWNLOAD PDF

Read Online

Oscilloscope Basics: Waveforms, Graph, & Measurement Reading

Waveform and Signal Analysis

Nearly all consumer products today have electronic circuits. Whether a product is simple or complex, if it includes electronic components, the design, verification, and debugging process requires an oscilloscope to analyze the numerous electrical signals that make the product come to life.

Understanding oscilloscope basics is critical to almost all product design.

TEK-XYZ-Primer-Chapter1-mainscope-665x225

What exactly is an oscilloscope, anyway? Quite simply, an oscilloscope is a diagnostic instrument that draws a graph of an electrical signal. This simple graph can tell you many things about a signal, such as:

  • The time and voltage values of a signal.
  • The frequency of an oscillating signal.
  • The "moving parts" of a circuit represented by the signal.
  • The frequency with which a particular portion of the signal occurs relative to other portions.
  • Whether or not a malfunctioning component is distorting the signal.
  • How much of a signal is direct current (DC) or alternating current (AC).
  • How much of the signal is noise and whether the noise is changing with time.

View our complete line of oscilloscopes »

The Oscilloscope's Graph

At the most basic level, an oscilloscope's graph of an electrical signal shows how the signal changes over time (Figure 2):

TEK-XYZ-Primer-C1-Figure2
Figure 2: X, Y, and Z components of a displayed waveform.

The intensity or brightness of the display is sometimes called the Z-axis. In Digital Phosphor Oscilloscopes (DPO), the Z-axis can be represented by color grading of the display (Figure 3).

TEK-XYZ-Primer-C1-Figure3-850x638
Figure 3:Two offset clock patterns with Z axis intensity grading.

The Significance of Signal Integrity

A key benefit of an oscilloscope is its ability to accurately reconstruct a signal. The better the reconstruction of the signal the higher the signal integrity. Here's one way to think of signal integrity. An oscilloscope is analogous to a camera that captures signal images that you then observe and interpret. Several key issues lie at the heart of signal integrity:

  • When you take a picture, is it an accurate representation of what actually happened?
  • Is the picture clear or fuzzy?
  • How many accurate pictures can you take per second?

The different systems and performance capabilities of an oscilloscope contribute to its ability to deliver the highest signal integrity possible. Probes also affect the signal integrity of a measurement system.

This primer helps you understand all of these elements so you can choose and use the oscilloscope appropriate for your application. Before you begin evaluating oscilloscopes, you need to understand the basics of waveforms and waveform measurements.

This information is covered in this chapter. It's the foundation of putting an oscilloscope to work for you.

Understanding Waveforms and Waveform Measurements

The generic term for a pattern that repeats over time is a wave. Sound waves, brain waves, ocean waves,
and voltage waves are all repetitive patterns. An oscilloscope measures voltage waves. A waveform is a graphic representation of a wave.

Physical phenomena such as vibrations, temperature, or electrical phenomena such as current or power can be converted to a voltage by a sensor. One cycle of a wave is the portion of the wave that repeats. A voltage waveform shows time on the horizontal axis and voltage on the vertical axis.

Waveform shapes reveal a great deal about a signal. Any time you see a change in the height of the waveform, you know the voltage has changed. Any time there is a flat horizontal line, you know that there is no change for that length of time.

Straight, diagonal lines mean a linear change; a rise or fall of voltage at a steady rate. Sharp angles on a waveform indicate sudden change. Figure 4 shows common waveforms.

TEK-XYZ-Primer-C1-Figure4-450x649
Figure 4:Common waveforms
 

Figure 5 displays sources of common waveforms, such as electrical outlets, computers, automobiles, and televisions.

TEK-XYZ-Primer-C1-Figure5-450x657
Figure 5: Sources of common waveforms

Types of Waves

You can classify most waves into these types:

  • Sine waves.
  • Square and rectangular waves.
  • Sawtooth and triangle waves.
  • Step and pulse shapes.
  • Periodic and non-periodic signals.
  • Synchronous and asynchronous signals.
  • Complex waves.

Next we'll look at each of these types of waves.

Sine Waves

The sine wave is the fundamental wave shape for several reasons. It has harmonious mathematical properties"€it is the same sine shape you may have studied in trigonometry class.

The voltage in a wall outlet varies as a sine wave. Test signals produced by the oscillator circuit of a signal generator are often sine waves.

Most AC power sources produce sine waves (AC signifies alternating current, although the voltage alternates too; DC stands for direct current, which means a steady current and voltage, such as a battery produces.) The damped sine wave is a special case you may see in a circuit that oscillates, but winds down over time.

Square and Rectangular Waves

The square wave is another common wave shape. Basically, a square wave is a voltage that turns on and off (or goes high and low) at regular intervals. It is a standard wave for testing amplifiers. Good amplifiers increase the amplitude of a square wave with minimum distortion.

Television, radio, and computer circuitry often use square waves for timing signals. The rectangular wave is like the square wave except that the high and low time intervals are not of equal length. It is particularly important when analyzing digital circuitry.

Sawtooth and Triangle Waves

Sawtooth and triangle waves result from circuits designed to control voltages linearly, such as the horizontal sweep of an analog oscilloscope or the raster scan of a television.

The transitions between voltage levels of these waves change at a constant rate. These transitions are called ramps.

Step and Pulse Shapes

Signals such as steps and pulses that occur rarely, or non-periodically, are called single-shot or transient signals.

A step indicates a sudden change in voltage, similar to the voltage change you see if you turn on a power switch.

A pulse indicates sudden changes in voltage, similar to the voltage changes you see if you turn a power switch on and then off again. A pulse might represent one bit of information traveling through a computer circuit or it might be a glitch, or defect, in a circuit.

A collection of pulses traveling together creates a pulse train. Digital components in a computer communicate with each other using pulses. These pulses may be in the form of a serial data stream or multiple signal lines may be used to represent a value in a parallel data bus. Pulses are also common in x-ray, radar, and communications equipment.

Periodic and Non-periodic Signals

Repetitive signals are referred to as periodic signals, while signals that constantly change are known as non-periodic signals. A still picture is analogous to a periodic signal, while a movie is analogous to a non-periodic signal.

Synchronous and Asynchronous Signals

When a timing relationship exists between two signals, those signals are referred to as synchronous. Clock, data, and address signals inside a computer are examples of synchronous signals.

Asynchronous signals are signals between which no timing relationship exists. Because no time correlation exists between the act of touching a key on a computer keyboard and the clock inside the computer, these signals are considered asynchronous.

Complex Waves

Some waveforms combine the characteristics of sines, squares, steps, and pulses to produce complex wave shapes. The signal information may be embedded in the form of amplitude, phase, and/or frequency variations.

For example, although the signal in Figure 6 is an ordinary composite video signal, it is composed of many cycles of higher-frequency waveforms embedded in a lower-frequency envelope.

In this example, it is important to understand the relative levels and timing relationships of the steps. To view this signal, you need an oscilloscope that captures the low-frequency envelope and blends in the higher-frequency waves in an intensity-graded fashion so that you can see their overall combination as an image you can interpret visually.

Digital phosphor oscilloscopes (DPOs) are best suited to viewing complex waves, such as the video signals shown in Figure 6. Their displays provide the necessary frequency-of-occurrence information, or intensity grading, that is essential to understanding what the waveform is really doing.

Some oscilloscopes can display certain types of complex waveforms in special ways. For example, telecommunications data may be displayed as an eye pattern or a constellation diagram:

TEK-XYZ-Primer-C1-Figure6
Figure 6: An NTSC composite video signal is an example of a complex wave.

Telecommunications digital data signals can be displayed on an oscilloscope as a special type of waveform referred to as an eye pattern. The name comes from the similarity of the waveform to a series of eyes (Figure 7).

Eye patterns are produced when digital data from a receiver is sampled and applied to the vertical input, while the data rate is used to trigger the horizontal sweep. The eye pattern displays one bit or unit interval of data with all possible edge transitions and states superimposed in one comprehensive view.

TEK-XYZ-Primer-C1-Figure7-640x480
Figure 7: 622 Mb/s serial data eye pattern.

A constellation diagram is a representation of a signal modulated by a digital modulation scheme such as quadrature amplitude modulation or phase-shift keying.

TEK-XYZ-Primer-C1-Constellation-Diagram
Constellation Diagram.

Waveform Measurements

Many terms are used to describe the types of measurements you make with an oscilloscope. Next we'll look at some of the most common measurements and terms.

Frequency and Period

If a signal repeats, it has a frequency. Frequency is measured in Hertz (Hz) and is the number of times the signal repeats itself in one second. This is also referred to as cycles per second.

A repetitive signal also has a period, which is the amount of time it takes the signal to complete one cycle.

Period and frequency are reciprocals of each other, so that:

TEK-XYZ-Primer-C1-Figure8
Figure 8: Frequency and period of a sine wave.

Voltage

Voltage is the amount of electric potential, or signal strength, between two points in a circuit. Usually, one of these points is ground, or zero volts, but not always. You may want to measure the voltage from the maximum peak to the minimum peak of a waveform, referred to as the peak-to-peak voltage.

Amplitude

Amplitude is the amount of voltage between two points in a circuit. Amplitude commonly refers to the maximum voltage of a signal measured from ground, or zero volts. The waveform shown in Figure 9 has an amplitude of 1 V and a peak-to-peak voltage of 2 V.

TEK-XYZ-Primer-C1-Figure9
Figure 9: Amplitude and degrees of a sine wave.

Phase

Phase is best explained by looking at a sine wave. The voltage level of sine waves is based on circular motion. Given that a circle has 360°, one cycle of a sine wave has 360°, as shown in Figure 10.

Using degrees, you can refer to the phase angle of a sine wave when you want to describe how much of the period has elapsed.

Phase shift describes the difference in timing between two otherwise similar signals. The waveform in Figure 10 labeled "current" is said to be 90° out of phase with the waveform labeled "voltage," since the waves reach similar points in their cycles exactly 1/4 of a cycle apart (360°/4 = 90°). Phase shifts are common in electronics.

TEK-XYZ-Primer-C1-Figure10-750x630
Figure 10: Phase shift.

Waveform Measurements with Digital Oscilloscopes

Digital oscilloscopes have functions that make waveform measurements easy. They have front-panel buttons and screen-based menus from which you can select fully-automated measurements. These include amplitude, period, rise/fall time, and many more.

Many digital oscilloscopes also provide mean and RMS calculations, duty cycle, and other math operations. Automated measurements appear as on-screen alphanumeric readouts. Typically these readings are more accurate than is possible to obtain with direct graticule interpretation.

TEK-XYZ-Primer-C1-Figure-FAWM-550x335
Examples of fully-automated waveform measurements

Oscilloscope Types Explained: Analog vs. Digital Functionality


Electronic equipment can be classified into two categories: analog and digital. Analog equipment works with continuously variable voltages, while digital equipment works with discrete binary numbers that represent voltage samples. A conventional phonograph is an analog device, while a CD player is a digital device. Oscilloscopes can be classified similarly – as analog and digital types. In contrast to an analog oscilloscope, a digital oscilloscope uses an analog-to-digital converter (ADC) to convert the measured voltage into digital information. It acquires the waveform as a series of samples, and stores these samples until it accumulates enough samples to describe a waveform. The digital oscilloscope then reassembles the waveform for display on the screen, as shown in Figure 11.

TEK-XYZ-Primer-C2-Figure11
Figure 11: Analog oscilloscopes trace signals, while digital oscilloscopes sample signals and construct displays.

Types of Digital Oscilloscopes

Digital oscilloscopes can be classified into four types:

  • Digital storage oscilloscopes (DSO)
  • Digital phosphor oscilloscopes (DPO)
  • Mixed signal oscilloscopes (MSO)
  • Digital sampling oscilloscopes

This chapter describes these types of digital oscilloscopes in detail to help you zero in on the type of oscilloscope that’s right for your needs.

Digital Storage Oscilloscopes (DSO)

A conventional digital oscilloscope is known as a digital storage oscilloscope (DSO). Its display typically relies on a raster-type screen rather than the luminous phosphor found in older analog oscilloscopes.

DSOs allow you to capture and view events that may happen only once, known as transients. Because the waveform information exists in digital form as a series of stored binary values, it can be analyzed, archived, printed, and otherwise processed, within the oscilloscope itself or by an external computer.

The waveform need not be continuous; it can be displayed even when the signal disappears. Unlike analog oscilloscopes, DSOs provide permanent signal storage and extensive waveform processing. However, DSOs typically have no real-time intensity grading. Therefore they cannot express varying levels of intensity in the live signal.

Some of the subsystems in DSOs are similar to those in analog oscilloscopes. However, DSOs contain additional data-processing subsystems that are used to collect and display data for the entire waveform. A DSO employs a serial-processing architecture to capture and display a signal on its screen, as shown in Figure 12.

TEK-XYZ-Primer-C2-Figure12-850x135
Figure 12: The serial-processing architecture of a digital storage oscilloscope (DSO).

Serial-processing Architecture

Like an analog oscilloscope, a DSO’s first (input) stage is a vertical amplifier. Vertical controls allow you to adjust the amplitude and position range at this stage. Next, the analog to digital converter (ADC) in the horizontal system samples the signal at discrete points in time and converts the signal’s voltage at these points into digital values called sample points. This process is referred to as digitizing a signal.

The horizontal system’s sample clock determines how often the ADC takes a sample. This rate is referred to as the sample rate and is expressed in samples per second (S/s).

The sample points from the ADC are stored in acquisition memory as waveform points. Several sample points may comprise one waveform point. Together, the waveform points comprise one waveform record. The number of waveform points used to create a waveform record is called the record length. The trigger system determines the start and stop points of the record.

The DSO’s signal path includes a microprocessor through which the measured signal passes on its way to the display. This microprocessor processes the signal, coordinates display activities, manages the front panel controls, and more. The signal then passes through the display memory and is displayed on the oscilloscope screen.

Depending on the capabilities of an oscilloscope, additional processing of the sample points may take place, which enhances the display. Pre-trigger may also be available so you can see events before the trigger point. Most digital oscilloscopes also provide a selection of automatic parametric measurements, simplifying the measurement process.

DSOs provide high performance in a single-shot, multi-channel instrument (Figure 13). They are ideal for low repetition-rate or single-shot, high-speed, multichannel design applications. In the real world of digital design, an engineer usually examines four or more signals simultaneously, making the DSO a critical companion.

TEK-XYZ-Primer-C2-Figure13
Figure 13: The digital storage oscilloscope delivers high-speed, single-shot acquisition across multiple channels, increasing the likelihood of capturing elusive glitches and transient events

Digital Phosphor Oscilloscopes (DPO)

The digital phosphor oscilloscope (DPO) offers a new approach to oscilloscope architecture. This architecture enables it to deliver unique acquisition and display capabilities to accurately reconstruct a signal. While a DSO uses a serial-processing architecture to capture, display, and analyze signals, a DPO employs a parallel processing architecture to perform these functions (Figure 14).

TEK-XYZ-Primer-C2-Figure14-850x225
Figure 14: The parallel-processing architecture of a digital phosphor oscilloscope (DPO).

The DPO architecture dedicates unique ASIC hardware to acquire waveform images, delivering high waveform capture rates, resulting in a higher level of signal visualization. This performance increases the probability of witnessing transient events that occur in digital systems, such as runt pulses, glitches and transition errors, and enables additional analysis capability.

Parallel-processing Architecture

A DPO’s first (input) stage is similar to that of an analog oscilloscope—a vertical amplifier—and its second stage is similar to that of a DSO—an ADC. But, the DPO differs significantly from its predecessors following the analog-to-digital conversion.

For any oscilloscope—analog, DSO, or DPO—there is always a hold-off time during which the instrument processes the most recently acquired data, resets the system, and waits for the next trigger event. During this time, the oscilloscope is blind to all signal activity. The probability of seeing an infrequent or low repetition event decreases as the hold off time increases.

It is impossible to determine the probability of capture by simply looking at the display update rate. If you rely solely on the update rate, it is easy to make the mistake of believing that the oscilloscope is capturing all pertinent information about the waveform when, in fact, it is not.

The DSO processes captured waveforms serially. The speed of its microprocessor is a bottleneck in this process because it limits the waveform capture rate. The DPO rasterizes the digitized waveform data into a digital phosphor database. Every 1/30th of a second—about as fast as the human eye can perceive it—a snapshot of the signal image that is stored in the database is pipelined directly to the display. This direct rasterization of waveform data, and direct copy to display memory from the database, removes the data-processing bottleneck inherent in other architectures. The result is an enhanced “real-time” and lively display update. Signal details, intermittent events, and dynamic characteristics of the signal are captured in real-time. The DPO’s microprocessor works in parallel with this integrated acquisition system for display management, measurement automation, and instrument control, so that it does not affect the oscilloscope’s acquisition speed.

A DPO faithfully emulates the best display attributes of an analog oscilloscope, displaying the signal in three dimensions: time, amplitude, and the distribution of amplitude over time. All in real-time.

Unlike an analog oscilloscope’s reliance on chemical phosphor, a DPO uses a purely electronic digital phosphor that’s actually a continuously updated database. This database has a separate “cell” of information for every single pixel in the oscilloscope’s display. Each time a waveform is captured—in other words, every time the oscilloscope triggers—it is mapped into the digital phosphor database’s cells. Each cell that represents a screen location and is touched by the waveform is reinforced with intensity information, while other cells are not. Thus, intensity information builds up in cells where the waveform passes most often.

When the digital phosphor database is fed to the oscilloscope’s display, the display reveals intensified waveform areas, in proportion to the signal’s frequency of occurrence at each point, much like the intensity grading characteristics of an analog oscilloscope. The DPO also allows the display of the varying frequency-of-occurrence information on the display as contrasting colors, unlike an analog oscilloscope. With a DPO, it is easy to see the difference between a waveform that occurs on almost every trigger and one that occurs, say, every 100th trigger.

A DPO break down the barrier between analog and digital oscilloscope technologies. They are equally suitable for viewing high and low frequencies, repetitive waveforms, transients, and signal variations in real-time. Only a DPO provides the Z-axis (intensity) in real-time that is missing from conventional DSOs.

A DPO is ideal for those who need the best general purpose design and troubleshooting tool for a wide range of applications (Figure 15). A DPO is exemplary for advanced analysis, communication mask testing, digital debug of intermittent signals, repetitive digital design. and timing applications.

TEK-XYZ-Primer-C2-Figure15
Figure 15: Some DPOs can acquire millions of waveform in just seconds, significantly increasing the probability of capturing intermittent and elusive events and revealing dynamic signal behavior.

Mixed Domain Oscilloscopes (MDO)

Electronic equipment can be classified into two categories: analog and digital. Analog equipment works with continuously variable voltages, while digital equipment works with discrete binary numbers that represent voltage samples. A phonograph is an analog device, while an MP3 player is a digital device.

TEK-XYZ-Primer-C2-Figure16-640x480
Figure 16: Time-correlated display of a Zigbee radio's microprocessor SPI (MOSI) and (MISO) control lines, with measurements of drain current and voltage to the radio IC and the spectrum during turn-on.

Mixed Signal Oscilloscopes (MSO)

The mixed signal oscilloscope (MSO) combines the performance of a DPO with the basic functionality of a 16-channel logic analyzer, including parallel/serial bus protocol decoding and triggering.

The MSO's digital channels view a digital signal as either a logic high or logic low, just like a digital circuit views the signal. This means as long as ringing, overshoot and ground bounce do not cause logic transitions, these analog characteristics are not of concern to the MSO. Just like a logic analyzer, a MSO uses a threshold voltage to determine if the signal is logic high or logic low.

The MSO is the tool of choice for quickly debugging digital circuits using its powerful digital triggering, high-resolution acquisition capability, and analysis tools. The root cause of many digital problems is quicker to pinpoint by analyzing both the analog and digital representations of the signal, as shown in Figure 17, making an MSO ideal for verifying and debugging digital circuits.

TEK-XYZ-Primer-C2-Figure17-640x480
Figure 17: The MSO provides 16 integrated digital channels, enabling the ability to view and analyze time-correlated analog and digital signals.

Digital Sampling Oscilloscopes

In contrast to the digital storage and DPO architectures, the architecture of the digital sampling oscilloscope reverses the position of the attenuator/ amplifier and the sampling bridge (Figure 18). The input signal is sampled before any attenuation or amplification is performed. A low bandwidth amplifier can then be used after the sampling bridge because the signal has already been converted to a lower frequency by the sampling gate, resulting in a much higher bandwidth instrument.

TEK-XYZ-Primer-C2-Figure18-850x193
Figure 18: The parallel-processing architecture of a digital phosphor oscilloscope (DPO).

The tradeoff for this high bandwidth, however, is that the sampling oscilloscope’s dynamic range is limited. Since there is no attenuator/amplifier in front of the sampling gate, there is no facility to scale the input. The sampling bridge must be able to handle the full dynamic range of the input at all times. Therefore, the dynamic range of most sampling oscilloscopes is limited to about 1 V peak-to-peak. Digital storage and DPOs, on the other hand, can handle 50 to 100 volts.

In addition, protection diodes cannot be placed in front of the sampling bridge, as this limits the bandwidth. This reduces the safe input voltage for a sampling oscilloscope to about 3 V, as compared to 500 V available on other oscilloscopes.

When measuring high-frequency signals, the DSO or DPO may not be able to collect enough samples in one sweep. A digital sampling oscilloscope is an ideal tool for accurately capturing signals whose frequency components are much higher than the oscilloscope’s sample rate (Figure 19). This oscilloscope is capable of measuring signals of up to an order of magnitude faster than any other oscilloscope. It can achieve bandwidth and high-speed timing ten times higher than other oscilloscopes for repetitive signals. Sequential equivalent-time sampling oscilloscopes are available with bandwidths to 80 GHz.

TEK-XYZ-Primer-C2-Figure19
Figure 19: Time domain reflectometry (TDR) display from a digital sampling oscilloscope.

Evaluating Oscilloscopes: Learn About Key Features & Functions


Once you've determined the type of oscilloscope you need, there are still many models to choose from, including portable and hand-held. And when choosing an oscilloscope, there are a number of things to consider, such as the ease-of use, sample rate the probes used to bring data into it, and all the elements of an oscilloscope that affect its ability to achieve the required signal integrity.

To understand these considerations, we'll look briefly at ease-of-use and probes, and then describe some useful measurement and oscilloscope performance terms. These terms cover the criteria essential to choosing the right oscilloscope for your application.

Ease-of-Use

Oscilloscopes should be easy to learn and easy to use, helping you work at peak efficiency and productivity. This means you can focus on your design, rather than the measurement tools. Just as there is no one typical car driver, there is no one typical oscilloscope user. Regardless of whether you prefer a traditional instrument interface or a Windows® software interface, it is important to have flexibility in your oscilloscope's operation. Many oscilloscopes offer a balance between performance and simplicity by providing many ways to operate the instrument. A typical oscilloscope's front-panel layout (Figure 60) provides dedicated vertical, horizontal and trigger controls.

TEK-XYZ-Primer-C3-Figure60-550x520
Figure 60: Traditional, analog-style knobs control position, scale, intensity, etc. – precisely as you would expect.

The Complete Measurement System Probes

Even the most advanced instrument can only be as precise as the data that goes into it. A probe works in conjunction with an oscilloscope as part of the measurement system. Precision measurements start at the probe tip. The right probes matched to the oscilloscope and the device under test (DUT) not only allow the signal to be brought to the oscilloscope cleanly, they also amplify and preserve the signal for the greatest signal integrity and measurement accuracy. Please refer to the Tektronix ABCs of Probes Primer for more information about probes and probe accessories.

Bandwidth

Bandwidth determines an oscilloscope's fundamental ability to measure a signal. As signal frequency increases, the capability of an oscilloscope to accurately display the signal decreases. The bandwidth specification indicates the frequency range that the oscilloscope can accurately measure.

Oscilloscope bandwidth is specified as the frequency at which a sinusoidal input signal is attenuated to 70.7% of the signal's true amplitude, known as the –3 dB point, a term based on a logarithmic scale, as shown in Figure 44.

TEK-XYZ-Primer-C3-Figure44-850x408
Figure 44: Oscilloscope bandwidth is the frequency at which a sinusoidal input signal is attenuated to 70.7% of the signal's true amplitude, known as the -3 dB point.

Without adequate bandwidth, an oscilloscope cannot resolve high-frequency changes. Amplitude is distorted. Edges vanish. Details are lost. All the features, bells and whistles in your oscilloscope will mean nothing.

To determine the oscilloscope bandwidth needed to accurately characterize signal amplitude in your specific application, apply the “5 Times Rule”:

TEK-XYZ-Primer-C3-Figure-5x-rule-850x149
5 Times Rule

An oscilloscope selected using the “5 Times Rule” provides less than ±2% error in your measurements. This is typically sufficient for today's applications. However, as signal speeds increase, it may not be possible to achieve this rule of thumb. Keep in mind that higher bandwidth will likely provide more accurate reproduction of a signal, as shown in Figure 45.

TEK-XYZ-Primer-C3-Figure45-640x480
Figure 45: The higher the bandwidth, the more accurate the reproduction of your signal, as illustrated with a signal captured at 250 MHz, 1 GHz and 4 GHz bandwidth levels.

Some oscilloscopes provide a method of enhancing the bandwidth through digital signal processing (DSP). A DSP arbitrary equalization filter can be used to improve the oscilloscope channel response. This filter extends the bandwidth, flattens the oscilloscope's channel frequency response, improves phase linearity, and provides a better match between channels. It also decreases rise time and improves the time domain step response.

Rise Time

Rise time describes the useful frequency range of an oscilloscope. Rise time measurements are critical in the digital world. Rise time may be a more appropriate performance consideration when you expect to measure digital signals, such as pulses and steps. An oscilloscope must have sufficient rise time to accurately capture the details of rapid transitions (Figure 46).

TEK-XYZ-Primer-C3-Figure46-640x480
Figure 46: Rise time characterization of a high-speed digital signal.

To calculate the oscilloscope rise time required for your signal type, use this equation:

TEK-XYZ-Primer-C3-Figure-RiseTime-750x71
Oscilloscope Rise Time

Using this equation is similar to using the equation for bandwidth. As in the case of bandwidth, achieving this rule of thumb may not always be possible given the extreme speeds of today's signals. Always remember that an oscilloscope with faster rise time will more accurately capture the critical details of fast transitions.

In some applications, you may know only the rise time of a signal. A constant allows you to relate the bandwidth and rise time of the oscilloscope using this equation:

TEK-XYZ-Primer-C3-Figure-Bandwidth-RiseTime650x121
Bandwidth and Rise Time

Where K is a value between 0.35 and 0.45, depending on the shape of the oscilloscope's frequency response curve and pulse rise time response. Oscilloscopes with a bandwidth of <1 GHz typically have a 0.35 value, while oscilloscopes with a bandwidth of> 1 GHz usually have a value between 0.40 and 0.45.

Some logic families produce inherently faster rise times than others (Figure 47).

TEK-XYZ-Primer-C3-Figure47-640x303
Figure 47: Some logic families produce inherently faster rise times than others.

Sample Rate

Sample rate is specified in samples per second (S/s). It defines how frequently a digital oscilloscope takes a snapshot or sample of the signal, analogous to the frames in a movie. The faster an oscilloscope samples (i.e., the higher the sample rate), the greater the resolution and detail of the displayed waveform and the less likely that critical information or events is lost (Figure 48).

TEK-XYZ-Primer-C3-Figure48-640x480
Figure 48: A higher sample rate provides greater signal resolution, ensuring that you'll see intermittent events.

The minimum sample rate may also be important if you need to look at slowly changing signals over longer periods of time. Typically, the displayed sample rate changes with changes made to the horizontal scale control to maintain a constant number of waveform points in the displayed waveform record.

How do you calculate your sample rate requirements? The method differs based on the type of waveform you are measuring, and the method of signal reconstruction used by the oscilloscope.

In order to accurately reconstruct a signal and avoid aliasing, the Nyquist theorem states that the signal must be sampled at least twice as fast as its highest frequency component. This theorem, however, assumes an infinite record length and a continuous signal. Since no oscilloscope offers infinite record length and, by definition, glitches are not continuous, sampling at only twice the rate of highest frequency component is usually insufficient.

In reality, accurate reconstruction of a signal depends on both the sample rate and the interpolation method used to fill in the spaces between the samples. Some oscilloscopes let you select either sin (x)/x interpolation for measuring sinusoidal signals, or linear interpolation for square waves, pulses and other signal types.

For accurate reconstruction using sin (x)/x interpolation, your oscilloscope should have a sample rate at least 2.5 times the highest frequency component of your signal. Using linear interpolation, the sample rate should be at least 10 times the highest frequency signal component.

Some measurement systems with sample rates to 10 GS/s and bandwidths to 3+ GHz are optimized for capturing very fast, single-shot and transient events by oversampling up to 5 times the bandwidth.

A Note About Bandwidth and Sample Rate

The digital approach means that the oscilloscope can display any frequency within its range with stability, brightness, and clarity. For repetitive signals, the bandwidth of the digital oscilloscope is a function of the analog bandwidth of the front-end components of the oscilloscope, commonly referred to as the –3 dB point. For single-shot and transient events, such as pulses and steps, the bandwidth can be limited by the oscilloscope's sample rate.

Waveform Capture Rate

All oscilloscopes blink. That is, they open their eyes a given number of times per second to capture the signal, and close their eyes in between. This is the waveform capture rate, expressed as waveforms per second (wfms/s). While the sample rate indicates how frequently the oscilloscope samples the input signal within one waveform, or cycle, the waveform capture rate refers to how quickly an oscilloscope acquires waveforms.

Waveform capture rates vary greatly, depending on the type and performance level of the oscilloscope. Oscilloscopes with high waveform capture rates provide significantly more visual insight into signal behavior, and dramatically increase the probability that the oscilloscope will quickly capture transient anomalies such as jitter, runt pulses, glitches and transition errors.

Digital storage oscilloscopes (DSO) employ a serial processing architecture to capture from 10 to 5,000 wfms/s. Some DSOs provide a special mode that bursts multiple captures into long memory, temporarily delivering higher waveform capture rates followed by long processing dead times that reduce the probability of capturing rare, intermittent events.

Most digital phosphor oscilloscopes (DPO) employ a parallel processing architecture to deliver vastly greater waveform capture rates. Some DPOs can acquire millions of waveforms in just seconds, significantly increasing the probability of capturing intermittent and elusive events and allowing you to see the problems in your signal more quickly (Figure 49).

TEK-XYZ-Primer-C3-Figure49-640x480_2
Figure 49: A DPO provides an ideal solution for non-repetitive, high-speed, multi-channel digital design applications.

Moreover, the DPO's ability to acquire and display three dimensions of signal behavior in real time—amplitude, time and distribution of amplitude over time—results in a superior level of insight into signal behavior (Figure 50).

TEK-XYZ-Primer-C3-Figure50-640x480
Figure 50: A DPO enables a superior level of insight into signal behavior by
- delivering vastly greater waveform capture rates and three-dimensional
- display, making it the best general-purpose design and troubleshooting
- tool for a wide range of applications.

Record Length

Record length, expressed as the number of points that comprise a complete waveform record, determines the amount of data that can be captured with each channel. Since an oscilloscope can store only a limited number of samples, the waveform duration (time) is inversely proportional to the oscilloscope's sample rate:

TEK-XYZ-Primer-C3-Figure-TimeInterval-550x120
Time Interval

Oscilloscopes allow you to select record length to optimize the level of detail needed for your application. If you are analyzing an extremely stable sinusoidal signal, you may need only a 500 point record length, but if you are isolating the causes of timing anomalies in a complex digital data stream, you may need a million points or more for a given record length, as shown in Figure 51.

TEK-XYZ-Primer-C3-Figure51
Figure 51: Capturing the high frequency detail of this modulated 85 MHz carrier requires high resolution sampling (100 ps). Seeing the signal's complete modulation envelope requires a long time duration (1 ms). Using long record length (10 MB), the oscilloscope can display both.

Triggering Capabilities

An oscilloscope's trigger function synchronizes the horizontal sweep at the correct point of the signal. This is essential for clear signal characterization. Trigger controls allow you to stabilize repetitive waveforms and capture single-shot waveforms.

Effective Bits

Effective bits represent a measure of a digital oscilloscope's ability to accurately reconstruct a sine wave signal's shape. This measurement compares the oscilloscope's actual error to that of a theoretical “ideal” digitizer. Because the actual errors include noise and distortion, the frequency and amplitude of the signal must be specified.

Frequency Response

Bandwidth alone is not enough to ensure that an oscilloscope can accurately capture a high frequency signal. The goal of oscilloscope design is a specific type of frequency response: maximally flat envelope delay (MFED). A frequency response of this type delivers excellent pulse fidelity with minimum overshoot and ringing. Since a digital oscilloscope is composed of real amplifiers, attenuators, ADCs, interconnects, and relays, MFED response is a goal that can only be approached. Pulse fidelity varies considerably with model and manufacturer.

Vertical Sensitivity

Vertical sensitivity indicates how much the vertical amplifier can amplify a weak signal. This is usually measured in millivolts (mV) per division. The smallest voltage detected by a general-purpose oscilloscope is typically about 1 mV per vertical screen division.

Sweep Speed

Sweep speed indicates how fast the trace can sweep across the oscilloscope screen, making it possible to see fine details. The sweep speed of an oscilloscope is represented by time (seconds) per division.

Gain Accuracy

Gain accuracy indicates how accurately the vertical system attenuates or amplifies a signal, usually represented as a percentage error.

Horizontal Accuracy (Time Base)

Horizontal accuracy, or time base accuracy, indicates how accurately the horizontal system displays the timing of a signal, usually represented as a percentage error.

Vertical Resolution (Analog-to-Digital Converter)

Vertical resolution of the analog-to-digital converter (ADC), and therefore, the digital oscilloscope, indicates how precisely it can convert input voltages into digital values. Vertical resolution is measured in bits. Calculation techniques can improve the effective resolution, as exemplified with hi-res acquisition mode.

Timing Resolution Mixed Signal Oscilloscopes (MSO)

An important MSO acquisition specification is the timing resolution used for capturing digital signals. Acquiring a signal with better timing resolution provides a more accurate timing measurement of when the signal changes. For example, a 500 MS/s acquisition rate has 2 ns timing resolution and the acquired signal edge uncertainty is 2 ns. A smaller timing resolution of 60.6 ps (16.5 GS/s) decreases the signal edge uncertainty to 60.6 ps and captures faster changing signals.

Some MSOs internally acquire digital signals with two types of acquisitions at the same time. The first acquisition is with standard timing resolution, and the second acquisition uses a high-speed resolution. The standard resolution is used over a longer record length while the high-speed timing acquisition offers more resolution around a narrow point of interest (Figure 52).

TEK-XYZ-Primer-C3-Figure52-640x480
Figure 52: The MSO provides 16 integrated digital channels, enabling the ability to view and analyze time-correlated analog and digital signals. A high speed timing acquisition provides more resolution to reveal narrow events such as glitches.

Connectivity

The need to analyze measurement results remains of utmost importance. The need to document and share information and measurement results easily and frequently has also grown in importance. The connectivity of an oscilloscope delivers advanced analysis capabilities and simplifies the documentation and sharing of results. As shown in Figure 53, standard interfaces (GPIB, RS-232, USB, and Ethernet) and network communication modules enable some oscilloscopes to deliver a vast array of functionality and control.

TEK-XYZ-Primer-C3-Figure53-640x640
Figure 53: Today's oscilloscopes provide a wide array of communications interfaces, such as a standard Centronics port and optional Ethernet/RS-232, GPIB/RS-232, and VGA/RS-232 modules. There is even a USB port (not shown) on the front panel.

Some advanced oscilloscopes also let you:

  • Create, edit and share documents on the oscilloscope, all while working with the instrument in your particular environment
  • Access network printing and file sharing resources
  • Access the Windows® desktop
  • Run third-party analysis and documentation software
  • Link to networks
  • Access the Internet
  • Send and receive e-mail

Expandability

An oscilloscope should be able to accommodate your needs as they change. Some oscilloscopes allow you to:

  • Add memory to channels to analyze longer record lengths
  • Add application-specific measurement capabilities
  • Complement the power of the oscilloscope with a full range of probes and modules
  • Work with popular third-party analysis and productivity
  • Windows-compatible software
  • Add accessories, such as battery packs and rack mounts

Application modules and software may enable you to transform your oscilloscope into a highly-specialized analysis tool capable of performing functions such as jitter and timing analysis, microprocessor memory system verification, communications standards testing, disk drive measurements, video measurements, power measurements and much more. Figures 54 through 59 highlight a few of these examples.

TEK-XYZ-Primer-C3-Figure54
Figure 54: Analysis software packages are specifically designed to meet jitter and eye measurement needs of today's high-speed digital designers.
TEK-XYZ-Primer-C3-Figure55-640x480
Figure 55: Serial bus analysis is accelerated with automated trigger, decode, and search on serial packet context.
TEK-XYZ-Primer-C3-Figure57-640x483
Figure 57: Advanced DDR analysis tools automate complex memory tasks like separating read/write bursts and performing JEDEC measurements.
TEK-XYZ-Primer-C3-Figure58
Figure 58: Video application modules make the oscilloscope a fast, tell-all tool for video troubleshooting.
TEK-XYZ-Primer-C3-Figure59-640x480
Figure 59: Advanced analysis and productivity software, such as MATLAB®, can be installed in Windows-based oscilloscopes to accomplish local signal analysis.

Oscilloscope Systems and Controls: Vertical, Horizontal & Triggering Explained

Analog and digital oscilloscopes have some basic controls that are similar, and some that are different. We’ll look at the basic systems and controls that are common to both. Understanding these systems and controls is key to using an oscilloscope to tackle your specific measurement challenges. Note that your oscilloscope probably has additional controls not discussed here.

The Three Systems

A basic oscilloscope consists of three different systems – the vertical system, horizontal system, and trigger system. Each system contributes to the oscilloscope’s ability to accurately reconstruct a signal.

The front panel of an oscilloscope is divided into three sections labeled Vertical, Horizontal, and Trigger. Your oscilloscope may have other sections, depending on the model and type.

When using an oscilloscope, you adjust settings in these areas to accommodate an incoming signal:

  • Vertical: This is the attenuation or amplification of the signal. Use the volts/div control to adjust the amplitude of the signal to the desired measurement range.
  • Horizontal: This is the time base. Use the sec/div control to set the amount of time per division represented horizontally across the screen.
  • Trigger: This is the triggering of the oscilloscope. Use the trigger level to stabilize a repeating signal, or to trigger on a single event.

We’ll look at each of these systems and controls, in this chapter.

TEK-XYZ-Primer-C4-Figure20
Figure 20: Front-panel control section of an oscilloscope.

Vertical System and Controls

Vertical controls are used to position and scale the waveform vertically, set the input coupling, and adjust other signal conditioning. Common vertical controls include:

  • Position
  • Coupling: DC, AC, and GND
  • Bandwidth: Limit and Enhancement
  • Termination: 1M ohm and 50 ohm
  • Offset
  • Invert: On/Off
  • Scale: Fixed Steps and Variable

Some of these controls are described next.

Position and Volts per Division

The vertical position control allows you to move the waveform up and down so it’s exactly where you want it on the screen.

The volts-per-division setting (usually written as volts/div) is a scaling factor that varies the size of the waveform on the screen. If the volts/div setting is 5 volts, then each of the eight vertical divisions represents 5 volts and the entire screen can display 40 volts from bottom to top, assuming a graticule with eight major divisions. If the setting is 0.5 volts/div, the screen can display 4 volts from bottom to top, and so on.

The maximum voltage you can display on the screen is the volts/div setting multiplied by the number of vertical divisions. Note that the probe you use, 1X or 10X, also influences the scale factor.

You must divide the volts/div scale by the attenuation factor of the probe if the oscilloscope does not do it for you. Often the volts/div scale has either a variable gain or a fine gain control for scaling a displayed signal to a certain number of divisions. Use this control to assist in taking rise time measurements.

Input Coupling

Coupling refers to the method used to connect an electrical signal from one circuit to another. In this case, the input coupling is the connection from your test circuit to the oscilloscope.

The coupling can be set to DC, AC, or ground. DC coupling shows all of an input signal. AC coupling blocks the DC component of a signal so that you see the waveform centered around zero volts. Figure 21 illustrates this difference.

The AC coupling setting is useful when the entire signal (alternating current + direct current) is too large for the volts/div setting.

TEK-XYZ-Primer-C4-Figure21
Figure 21: AC and DC input coupling.

The ground setting disconnects the input signal from the vertical system, which lets you see where zero volts is located on the screen.

With grounded input coupling and auto trigger mode, you see a horizontal line on the screen that represents zero volts. Switching from DC to ground and back again is a handy way of measuring signal voltage levels with respect to ground.

Bandwidth Limit

Most oscilloscopes have a circuit that limits the bandwidth of the oscilloscope. By limiting the bandwidth, you reduce the noise that sometimes appears on the displayed waveform, resulting in a cleaner signal display.

Note that while eliminating noise, the bandwidth limit can also reduce or eliminate high frequency signal content.

Bandwidth Enhancement

Some oscilloscopes may provide a DSP arbitrary equalization filter that can be used to improve the oscilloscope channel response. This filter extends the bandwidth, flattens the oscilloscope channel frequency response, improves phase linearity, and provides a better match between channels. It also decreases rise time and improves the time domain step response.

Horizontal System and Controls

An oscilloscope’s horizontal system is most closely associated with its acquisition of an input signal. Sample rate and record length are among the considerations here. Horizontal controls are used to position and scale the waveform horizontally. Common horizontal controls include:

  • Acquisition
  • Sample Rate
  • Position and Seconds per Division
  • Time Base
  • Zoom/Pan
  • Search
  • XY Mode
  • Z Axis
  • XYZ Mode
  • Trigger Position
  • Scale
  • Trace Separation
  • Record Length
  • Resolution

Some of these controls are described next.

Acquisition Controls

Digital oscilloscopes have settings that let you control how the acquisition system processes a signal. Figure 22 shows an example of an acquisition menu.

Look over the acquisition options on your digital oscilloscope while you read this section.

TEK-XYZ-Primer-C4-Figure22-640x480
Figure 22: Example of an acquisition menu.
Acquisition Modes

Acquisition modes control how waveform points are produced from sample points. Sample points are the digital values derived directly from the analog-to-digital converter (ADC). The sample interval refers to the time between these sample points.

Waveform points are the digital values that are stored in memory and displayed to construct the waveform. The time-value difference between waveform points is referred to as the waveform interval.

The sample interval and the waveform interval may or may not be the same. This fact leads to the existence of several different acquisition modes in which one waveform point is comprised of several sequentially acquired sample points.

Additionally, waveform points can be created from a composite of sample points taken from multiple acquisitions, which provides another set of acquisition modes. A description of the most commonly used acquisition modes follows.

Sample Mode: This is the simplest acquisition mode. The oscilloscope creates a waveform point by saving one sample point during each waveform interval.

Peak Detect Mode: The oscilloscope saves the minimum and maximum value sample points taken during two waveform intervals and uses these samples as the two corresponding waveform points.

Digital oscilloscopes with peak detect mode run the ADC at a fast sample rate, even at very slow time base settings (slow time base settings translate into long waveform intervals) and are able to capture fast signal changes that would occur between the waveform points if in sample mode (Figure 23).

TEK-XYZ-Primer-C4-Figure23-750x248
Figure 23: Sample rate varies with time base settings - the slower the time based setting, the slower the sample rate. Some digital oscilloscopes provide peak detect mode to capture fast transients at slow sweep speeds.

Peak detect mode is particularly useful for seeing narrow pulses spaced far apart in time, as shown in Figure 24.

TEK-XYZ-Primer-C4-Figure24-640x480
Figure 24: Advanced analysis and productivity software, such as MATLAB®, can be installed in Windows-based oscilloscopes to accomplish local signal analysis.

Hi-Res Mode: Like peak detect, hi-res mode is a way of getting more information in cases when the ADC can sample faster than the time base setting requires. In this case, multiple samples taken within one waveform interval are averaged together to produce one waveform point.

The result is a decrease in noise and an improvement in resolution for low-speed signals. The advantage of Hi-Res Mode over Average is that Hi-Res Mode can be used even on a single shot event.

Envelope Mode: Envelope mode is similar to peak detect mode. However, in envelope mode, the minimum and maximum waveform points from multiple acquisitions are combined to form a waveform that shows min/max accumulation over time.

Peak detect mode is usually used to acquire the records that are combined to form the envelope waveform.

Average Mode: In average mode, the oscilloscope saves one sample point during each waveform interval as in sample mode. However, waveform points from consecutive acquisitions are then averaged together to produce the final displayed waveform.

Average mode reduces noise without loss of bandwidth, but requires a repeating signal.

Waveform Database Mode: In waveform database mode, the oscilloscope accumulates a waveform database that provides a three-dimensional array of amplitude, time, and counts.

Starting and Stopping the Acquisition System

One of the greatest advantages of digital oscilloscopes is their ability to store waveforms for later viewing.

To this end, there are usually one or more buttons on the front panel that allow you to start and stop the acquisition system so you can analyze waveforms at your leisure.

Additionally, you may want the oscilloscope to automatically stop acquiring after one acquisition is complete or after one set of records has been turned into an envelope or average waveform.

This feature is commonly called single sweep or single sequence and its controls are usually found either with the other acquisition controls or with the trigger controls.

Sampling

Sampling is the process of converting a portion of an input signal into a number of discrete electrical values for the purpose of storage, processing, and/or display. The magnitude of each sampled point is equal to the amplitude of the input signal at the instant in time in which the signal is sampled.

Sampling is like taking snapshots. Each snapshot corresponds to a specific point in time on the waveform. These snapshots can then be arranged in the appropriate order in time to reconstruct the input signal.

In a digital oscilloscope, an array of sampled points is reconstructed on a display with the measured amplitude on the vertical axis and time on the horizontal axis (Figure 25).

The input waveform in Figure 25 appears as a series of dots on the screen. If the dots are widely spaced and difficult to interpret as a waveform, the dots can be connected using a process called interpolation.

Interpolation connects the dots with lines or vectors. A number of interpolation methods are available that can be used to produce an accurate representation of a continuous input signal.

TEK-XYZ-Primer-C4-Figure25-640x384
Figure 25: Basic sampling, showing sample points are connected by interpolation to produce a continuous waveform.
Sampling Controls

Some digital oscilloscopes provide you with a choice in sampling method, either real-time sampling or equivalent time sampling. The acquisition controls available with these oscilloscopes allow you to select a sample method to acquire signals.

Note that this choice makes no difference for slow time base settings and only has an effect when the ADC cannot sample fast enough to fill the record with waveform points in one pass. Each sampling method has distinct advantages, depending on the kind of measurements being made.

Controls are typically available to give you the choice of three horizontal time base modes of operations. If you are simply doing signal exploration and want to interact with a lively signal, you use the Automatic or Interactive Default mode that provides you with the liveliest display update rate.

If you want a precise measurement and the highest real-time sample rate that will give you the most measurement accuracy, then you use the Constant Sample Rate mode. It maintains the highest sample rate and provides the best real-time resolution.

The last mode is called the Manual mode because it ensures direct and independent control of the sample rate and record length.

Real-time Sampling Method

Real-time sampling is ideal for signals whose frequency range is less than half the oscilloscope’s maximum sample rate.

Here, the oscilloscope can acquire more than enough points in one “sweep” of the waveform to construct an accurate picture, as shown in Figure 26. Real-time sampling is the only way to capture fast, single-shot, transient signals with a digital oscilloscope.

TEK-XYZ-Primer-C4-Figure26-750x167
Figure 26: Advanced analysis and productivity software, such as MATLAB®, can be installed in Windows-based oscilloscopes to accomplish local signal analysis.

Real-time sampling presents the greatest challenge for digital oscilloscopes because of the sample rate needed to accurately digitize high-frequency transient events, as shown in Figure 27.

These events occur only once, and must be sampled in the same time frame that they occur.

TEK-XYZ-Primer-C4-Figure27-750x273
Figure 27: Real-time sampling method.

If the sample rate isn’t fast enough, high-frequency components can “fold down” into a lower frequency, causing aliasing in the display, as demonstrated in Figure 28. In addition, real-time sampling is further complicated by the high-speed memory required to store the waveform once it is digitized.

Please refer to the Sample Rate and Record Length sections in Chapter 3—Evaluating Oscilloscopes for additional detail about the sample rate and record length needed to accurately characterize high-frequency components.

TEK-XYZ-Primer-C4-Figure28-750x563
Figure 28: Undersampling of a 100 MHz sine wave introduces aliasing effects.

For real-time sampling with interpolation, digital oscilloscopes take discrete samples of the signal that can be displayed. However, it can be difficult to visualize the signal represented as dots, especially because there can be only a few dots representing high-frequency portions of the signal.

To aid in the visualization of signals, digital oscilloscopes typically have interpolation display modes.

Interpolation is a processing technique used to estimate what the waveform looks like based on a few points. In simple terms, interpolation “connects the dots” so that a signal that is sampled only a few times in each cycle can be accurately displayed.

Using real-time sampling with interpolation, the oscilloscope collects a few sample points of the signal in a single pass in real-time mode and uses interpolation to fill in the gaps. Linear interpolation connects sample points with straight lines. This approach is limited to reconstructing straight- edged signals (Figure 29), which better lends itself to square waves. The more versatile sin x/x interpolation connects sample points with curves (Figure 29).

Sin x/x interpolation is a mathematical process in which points are calculated to fill in the time between the real samples. This form of interpolation lends itself to curved and irregular signal shapes, which are far more common in the real world than pure square waves and pulses. Because of this, sin x/x interpolation is the preferred method for applications where the sample rate is three to five times the system bandwidth.

If the sample rate isn’t fast enough, high-frequency components can “fold down” into a lower frequency, causing aliasing in the display, as demonstrated in Figure 28. In addition, real-time sampling is further complicated by the high-speed memory required to store the waveform once it is digitized.

Please refer to the Sample Rate and Record Length sections in Chapter 3—Evaluating Oscilloscopes for additional detail about the sample rate and record length needed to accurately characterize high-frequency components.

TEK-XYZ-Primer-C4-Figure29-750x340
Figure 29: Linear and sin x/x interpolation.
Equivalent-time Sampling Method

When measuring high-frequency signals, the oscilloscope may not be able to collect enough samples in one sweep. Equivalent-time sampling can be used to accurately acquire signals whose frequency exceeds half the oscilloscope’s sample rate (Figure 30).

TEK-XYZ-Primer-C4-Figure30-750x496
Figure 30: Some oscilloscopes use equivalent-time sampling to capture and display very fast, repetitive signals.

Equivalent-time digitizers (samplers) take advantage of the fact that most naturally occurring and man-made events are repetitive. Equivalent-time sampling constructs a picture of a repetitive signal by capturing a little bit of information from each repetition.

The waveform slowly builds up like a string of lights, illuminating one-by-one. This allows the oscilloscope to accurately capture signals whose frequency components are much higher than the oscilloscope’s sample rate. There are two types of equivalent-time sampling methods: random and sequential. Each has its advantages:

  • Random equivalent-time sampling allows display of the input signal prior to the trigger point, without the use of a delay line.
  • Sequential equivalent-time sampling provides much greater time resolution and accuracy.

Both require that the input signal be repetitive.

Random Equivalent-time Sampling

Random equivalent-time digitizers (samplers) use an internal clock that runs asynchronously with respect to the input signal and the signal trigger (Figure 31).

TEK-XYZ-Primer-C4-Figure31-750x267
Figure 31: In random equivalent-time sampling, the sampling clock runs asynchronously with the input signal and the trigger.

Samples are taken continuously, independent of the trigger position, and are displayed based on the time difference between the sample and the trigger. Although samples are taken sequentially in time, they are random with respect to the trigger, hence the name “random” equivalent-time sampling. Sample points appear randomly along the waveform when displayed on the oscilloscope screen.

The ability to acquire and display samples prior to the trigger point is the key advantage of this sampling technique, eliminating the need for external pre-trigger signals or delay lines.

Depending on the sample rate and the time window of the display, random sampling may also allow more than one sample to be acquired per triggered event. However, at faster sweep speeds, the acquisition window narrows until the digitizer cannot sample on every trigger.

It is at these faster sweep speeds that very precise timing measurements are often made, and where the extraordinary time resolution of the sequential equivalent-time sampler is most beneficial. The bandwidth limit for random equivalent-time sampling is less than that for sequential-time sampling.

Sequential Equivalent-time Sampling

The sequential equivalent-time sampler acquires one sample per trigger, independent of the time/div setting, or sweep speed, as shown in Figure 32.

TEK-XYZ-Primer-C4-Figure32-750x253
Figure 32: In sequential equivalent-time sampling, the single sample is taken for each recognized trigger after a time delay which is incremented after each cycle.

When a trigger is detected, a sample is taken after a very short, but well-defined, delay. When the next trigger occurs, a small time increment—delta t—is added to this delay and the digitizer takes another sample.

This process is repeated many times, with “delta t” added to each previous acquisition, until the time window is filled. Sample points appear from left to right in sequence along the waveform when displayed on the oscilloscope screen.

Technologically speaking, it is easier to generate a very short, very precise “delta t” than it is to accurately measure the vertical and horizontal positions of a sample relative to the trigger point, as required by random samplers. This precisely measured delay is what gives sequential samplers their unmatched time resolution.

With sequential sampling, the sample is taken after the trigger level is detected, so the trigger point cannot be displayed without an analog delay line. This may, in turn, reduce the bandwidth of the instrument. If an external pretrigger can be supplied, bandwidth will not be affected.

Position and Seconds per Division

The horizontal position control moves the waveform left and right to exactly where you want it on the screen. The seconds-per-division setting (usually written as sec/div) lets you select the rate at which the waveform is drawn across the screen (also known as the time base setting or sweep speed).

This setting is a scale factor. If the setting is 1 ms, each horizontal division represents 1 ms and the total screen width represents 10 ms, or ten divisions. Changing the sec/div setting enables you to look at longer and shorter time intervals of the input signal.

As with the vertical volts/div scale, the horizontal sec/div scale may have variable timing, allowing you to set the horizontal time scale between the discrete settings.

Time Base Selections

Your oscilloscope has a time base, which is usually referred to as the main time base. Many oscilloscopes also have what is called a delayed time base. This is a time base with a sweep that can start (or be triggered to start) relative to a pre-determined time on the main time base sweep.

Using a delayed time base sweep allows you to see events more clearly and to see events that are not visible solely with the main time base sweep.

The delayed time base requires the setting of a time delay and the possible use of delayed trigger modes and other settings not described in this primer. Refer to the manual supplied with your oscilloscope for information on how to use these features.

Zoom/Pan

Your oscilloscope may have special horizontal magnification settings that let you display a magnified section of the waveform on-screen. Some oscilloscopes add pan functions to the zoom capability. Knobs are used to adjust zoom factor or scale and the pan of the zoom box across the waveform.

Search

Some oscilloscopes offer search and mark capabilities, enabling you to quickly navigate through long acquisitions looking for user-defined events.

XY Mode

Most oscilloscopes have an XY mode that lets you display an input signal, rather than the time base, on the horizontal axis. This mode of operation opens up a whole new area of phase shift measurement techniques, as explained in the Oscilloscope Measurement Techniques section of Chapter 5—Setting Up and Using an Oscilloscope.

Z Axis

A digital phosphor oscilloscope (DPO) has a high display sample density and an innate ability to capture intensity information. With its intensity axis (Z-axis), the DPO is able to provide a three-dimensional, real-time display similar to that of an analog oscilloscope.

As you look at the waveform trace on a DPO, you can see brightened areas. These are the areas where a signal occurs most often.

This display makes it easy to distinguish the basic signal shape from a transient that occurs only once in a while—the basic signal appears much brighter. One application of the Z-axis is to feed special timed signals into the separate Z input to create highlighted “marker” dots at known intervals in the waveform.

XYZ Mode with DPO and XYZ Record Display

Some DPOs can use the Z input to create an XY display with intensity grading. In this case, the DPO samples the instantaneous data value at the Z input and uses that value to qualify a specific part of the waveform.

Once you have qualified samples, these samples can accumulate, resulting in an intensity-graded XYZ display.

XYZ mode is especially useful for displaying the polar patterns commonly used in testing wireless communication devices, such as a constellation diagram.

Another method of displaying XYZ data is XYZ record display. In this mode the data from the acquisition memory is used rather than the DPO database.

Trigger System and Controls

An oscilloscope’s trigger function synchronizes the horizontal sweep at the correct point of the signal. This is essential for clear signal characterization. Trigger controls allow you to stabilize repetitive waveforms and capture single-shot waveforms.

The trigger makes repetitive waveforms appear static on the oscilloscope display by repeatedly displaying the same portion of the input signal. Imagine the jumble on the screen that would result if each sweep started at a different place on the signal, as illustrated in Figure 33.

TEK-XYZ-Primer-C4-Figure33-700x528
Figure 33: Untriggered display.

Edge triggering, available in analog and digital oscilloscopes, is the basic and most common type. In addition to threshold triggering offered by both analog and digital oscilloscopes, many digital oscilloscopes offer numerous specialized trigger settings not offered by analog instruments.

These triggers respond to specific conditions in the incoming signal, making it easy to detect, for example, a pulse that is narrower than it should be. Such a condition is impossible to detect with a voltage threshold trigger alone.

Advanced trigger controls enable you to isolate specific events of interest to optimize the oscilloscope’s sample rate and record length. Advanced triggering capabilities in some oscilloscopes give you highly selective control.

You can trigger on pulses defined by amplitude (such as runt pulses), qualified by time (pulse width, glitch, slew rate, setup-and-hold, and time-out), and delineated by logic state or pattern (logic triggering).

Other advanced trigger functions include:

Pattern Lock Triggering: Pattern lock triggering adds a new dimension to NRZ serial pattern triggering by enabling the oscilloscope to take synchronized acquisitions of a long serial test pattern with outstanding time base accuracy.

Pattern lock triggering can be used to remove random jitter from long serial data patterns. Effects of specific bit transitions can be investigated, and averaging can be used with mask testing.

Serial Pattern Triggering: Serial pattern triggering can be used to debug serial architectures. It provides a trigger on the serial pattern of an NRZ serial data stream with built-in clock recovery and correlates events across the physical and link layer.

The instrument can recover the clock signal, identify transitions, and allow you to set the desired encoded words for the serial pattern trigger to capture.

A & B Triggering: Some trigger systems offer multiple trigger types only on a single event (A event), with delayed trigger (B event) selection limited to edge type triggering and often do not provide a way to reset the trigger sequence if the B event doesn’t occur.

Modern oscilloscopes can provide the full suite of advanced trigger types on both A and B triggers, logic qualification to control when to look for these events, and reset triggering to begin the trigger sequence again after a specified time, state, or transition so that even events in the most complex signals can be captured.

Search & Mark Triggering: Hardware triggers watch for one event type at a time, but Search can scan for multiple event types simultaneously. For example, scan for setup or hold time violations on multiple channels. Individual marks can be placed by Search indicating events that meet search criteria.

Trigger Correction: Since the trigger and data acquisition systems share different paths there is some inherent time delay between the trigger position and the data acquired. This results in skew and trigger jitter.

With a trigger correction system the instrument adjusts the trigger position and compensates for the difference of delay there is between the trigger path and the data acquisition path. This eliminates virtually any trigger jitter at the trigger point. In this mode, the trigger point can be used as a measurement reference. Serial Triggering on Specific Standard Signals I2C, CAN, LIN, etc.):

Some oscilloscopes (compare Tektronix oscilloscopes) provide the ability to trigger on specific signal types for standard serial data signals such as CAN, LIN, I2C, SPI, and others. The decoding of these signal types is also available on many oscilloscopes.

Parallel Bus Triggering: Multiple parallel buses can be defined and displayed at one time to easily view decoded parallel bus data over time. By specifying which channels are the clock and data lines, you can create a parallel bus display on some oscilloscopes that automatically decodes bus content.

You can save countless hours by using parallel bus triggers to simplify capture and analysis. Optional trigger controls in some oscilloscopes are designed specifically to examine communications signals as well.

Figure 34 highlights a few of these common trigger types in more detail. To maximize your productivity, some oscilloscopes provide an intuitive user interface to allow rapid setup of trigger parameters with wide flexibility in the test setup.

TEK-XYZ-Primer-C4-Figure34-800x502
Figure 34: Common trigger types.

Trigger Position

Horizontal trigger position control is only available on digital oscilloscopes. The trigger position control may be located in the horizontal control section of your oscilloscope. It actually represents the horizontal position of the trigger in the waveform record.

Varying the horizontal trigger position allows you to capture what a signal did before a trigger event, known as pre-trigger viewing. Thus, it determines the length of viewable signal both preceding and following a trigger point.

Digital oscilloscopes can provide pre-trigger viewing because they constantly process the input signal, whether or not a trigger has been received. A steady stream of data flows through the oscilloscope; the trigger merely tells the oscilloscope to save the present data in memory.

In contrast, analog oscilloscopes only display the signal—that is, write it on the CRT—after receiving the trigger. Thus, pre-trigger viewing is not available in analog oscilloscopes, with the exception of a small amount of pre-trigger provided by a delay line in the vertical system.

Pre-trigger viewing is a valuable troubleshooting aid. If a problem occurs intermittently, you can trigger on the problem, record the events that led up to it and, possibly, find the cause.

Trigger Level and Slope

The trigger level and slope controls provide the basic trigger point definition and determine how a waveform is displayed (Figure 35).

TEK-XYZ-Primer-C4-Figure35-640x465
Figure 35: Positive and negative slope triggering.

The trigger circuit acts as a comparator. You select the slope and voltage level on one input of the comparator. When the trigger signal on the other comparator input matches your settings, the oscilloscope generates a trigger.

The slope control determines whether the trigger point is on the rising or the falling edge of a signal. A rising edge is a positive slope and a falling edge is a negative slope. The level control determines where on the edge the trigger point occurs.

Trigger Sources

The oscilloscope does not necessarily need to trigger on the signal being displayed. Several sources can trigger the sweep:

  • Any input channel
  • An external source other than the signal applied to an input channel
  • The power source signal
  • A signal internally defined by the oscilloscope, from one or more input channels

Most of the time, you can leave the oscilloscope set to trigger on the channel displayed. Some oscilloscopes provide a trigger output that delivers the trigger signal to another instrument.

The oscilloscope can use an alternate trigger source, whether or not it is displayed, so you should be careful not to unwittingly trigger on channel 1 while displaying channel 2, for example.

Trigger Modes

The trigger mode determines whether or not the oscilloscope draws a waveform based on a signal condition. Common trigger modes include normal and auto:

  • In normal mode the oscilloscope only sweeps if the input signal reaches the set trigger point. Otherwise, the screen is blank (on an analog oscilloscope) or frozen (on a digital oscilloscope) on the last acquired waveform. Normal mode can be disorienting since you may not see the signal at first if the level control is not adjusted correctly.
  • Auto mode causes the oscilloscope to sweep, even without a trigger. If no signal is present, a timer in the oscilloscope triggers the sweep. This ensures that the display will not disappear if the signal does not cause a trigger.

In practice, you will probably use both modes: normal mode because it lets you see just the signal of interest, even when triggers occur at a slow rate, and auto mode because it requires less adjustment. Many oscilloscopes also include special modes for single sweeps, triggering on video signals, or automatically setting the trigger level.

Trigger Coupling

Just as you can select either AC or DC coupling for the vertical system, you can choose the kind of coupling for the trigger signal.

Besides AC and DC coupling, your oscilloscope may also have high frequency rejection, low frequency rejection, and noise rejection trigger coupling. These special settings are useful for eliminating noise from the trigger signal to prevent false triggering.

Trigger Holdoff

Sometimes getting an oscilloscope to trigger on the correct part of a signal requires great skill. Many oscilloscopes have special features to make this task easier.

Trigger holdoff is an adjustable period of time after a valid trigger during which the oscilloscope cannot trigger. This feature is useful when you are triggering on complex waveform shapes, so that the oscilloscope only triggers on an eligible trigger point.

Figure 36 shows how using trigger holdoff helps create a usable display.

TEK-XYZ-Primer-C4-Figure36-640x258
Figure 36: Positive and negative slope triggering.

Controls for Math and Measurement Operations

Your oscilloscope may also have operations that allow you to add waveforms together, creating a new waveform display. Analog oscilloscopes combine the signals while digital oscilloscopes create new waveforms mathematically. Subtracting waveforms is another math operation.

Subtraction with analog oscilloscopes is possible by using the channel invert function on one signal and then using the add operation. Digital oscilloscopes typically have a subtraction operation available. Figure 38 illustrates a third waveform created by combining two different signals.

TEK-XYZ-Primer-C4-Figure38-640x309
Figure 38: Adding channels.

Using the power of their internal processors, digital oscilloscopes offer many advanced math operations: multiplication, division, integration, Fast Fourier Transform, and more.

This advanced signal processing capability can also perform functions such as the insertion of a filter block that can be used to de-embed the characteristics of the fixture on the device under test or implement a filter block with desired frequency response such as a low pass filter.

The processing block is flexible, not dedicated. It can perform as an arbitrary filter instead. For example, for simulation of pre-emphasis/de-emphasis schemes.

Digital Timing and State Acquisitions

Digital channels provided by a mixed signal oscilloscope enable acquisition capabilities similar to those found on logic analyzers. There are two major digital acquisition techniques:

  • With timing acquisition, the MSO samples the digital signal at uniformly spaced times determined by the MSO's sample rate. At each sample point, the MSO stores the signal's logic state and creates a timing diagram of the signal.
  • State acquisition defines special times that the digital signal's logic state is valid and stable. This is common in synchronous and clocked digital circuits. A clock signal defines the time when the signal state is valid. For example, the input signal stable time is around the rising clock edge for a D-Flip-Flop with rising edge clocking. The output signal stable time is around the falling clock edge for a D-Flip-Flop with rising edge clocking. Since the clock period of a synchronous circuit may not be fixed, the time between state acquisitions may not be uniform as it is in a timing acquisition.

A mixed signal oscilloscope's digital channels acquire signals similar to how a logic analyzer acquires signals in timing acquisition mode.

The MSO then decodes the timing acquisition into a clocked bus display and event table display, which is similar to the logic analyzer's state acquisition. This provides important information during debugging.

Other Controls

This chapter described the basic oscilloscope controls that a beginner needs to know about. Your oscilloscope may have other controls for various functions. Some of these may include:

  • Automatic parametric measurements
  • Measurement cursors
  • Keypads for mathematical operations or data entry
  • Printing capabilities
  • Interfaces for connecting your oscilloscope to a computer or directly to the Internet

Look over the other options available to you and read your oscilloscope’s manual to find out more about these other controls.

Setting Up and Using an Oscilloscope How-To Guide

Once you have an oscilloscope, there are basic things you need to do to set it up and begin using it. This chapter briefly describes these things. In particular, proper grounding is very important for safety reasons; not just for yourself but also for the integrated circuits (ICs) you are testing. Setting oscilloscope controls, calibrating the oscilloscope, connecting probes, and compensating the probes are also described, along with basic oscilloscope measurement techniques.

Proper Grounding

Proper grounding is an important step when you set up to take measurements or work on a circuit:

  • Properly grounding the oscilloscope protects you from a hazardous shock.
  • Properly grounding yourself protects your ICs from damage.

To ground the oscilloscope means to connect it to an electrically neutral reference point, such as earth ground. Ground your oscilloscope by plugging its three-pronged power cord into an outlet grounded to earth ground. Grounding the oscilloscope is necessary for safety. If a high voltage contacts the case of an ungrounded oscilloscope—any part of the case, including knobs that appear insulated—it can give you a shock. However, with a properly grounded oscilloscope, the current travels through the grounding path to earth ground rather than through you to earth ground.

Grounding is also necessary for taking accurate measurements with your oscilloscope. The oscilloscope needs to share the same ground as any circuits you are testing. Some oscilloscopes do not require separate connection to earth ground. These oscilloscopes have insulated cases and controls, which keeps any possible shock hazard away from the user.

If you are working with ICs, you also need to ground yourself. ICs have tiny conduction paths that can be damaged by static electricity that builds up on your body. You can ruin an expensive IC simply by walking across a carpet or taking off a sweater and then touching the leads of the IC. To solve this problem, wear a grounding strap, as shown in Figure 64. This strap safely sends static charges on your body to earth ground.

TEK-XYZ-Primer-C4-Figure64-750x567
Figure 64: Typical wrist-type grounding strap.

Setting the Controls

After plugging in the oscilloscope, take a look at the front panel. As described at the beginning of Chapter 4—Oscilloscope Systems and Controls, the front panel is typically divided into three main sections labeled vertical, horizontal, and trigger. Your oscilloscope may have other sections, depending on the model and type. Notice the input connectors on your oscilloscope—this is where you attach the probes. Most oscilloscopes have at least two input channels and each channel can display a waveform on the screen. Multiple channels are useful for comparing waveforms. The front panel of a Mixed Signal Oscilloscope (MSO) willalso have digital inputs.

Some oscilloscopes have AUTOSET and/or DEFAULT buttons that can set up the controls in one step to accommodate a signal. If your oscilloscope does not have this capability, it is helpful to set the controls to standard positions before taking measurements.

Oscilloscope Instructions

  1. Set the oscilloscope to display channel 1.
  2. Set the vertical volts/division scale and position controls to mid–range positions.
  3. Turn off the variable volts/division.
  4. Turn off all magnification settings.
  5. Set the channel 1 input coupling to DC.
  6. Set the trigger mode to auto.
  7. Set the trigger source to channel 1.
  8. Turn trigger holdoff to minimum or off.
  9. Set the horizontal time/division and position controls to mid-range positions.
  10. Adjust channel 1 volts/division such that the signal occupies as much of the 10 vertical divisions as possible without clipping or signal distortion.

Calibrating the Instrument

In addition to proper oscilloscope setup, periodic instrument self-calibration is recommended for accurate measurements. Oscilloscope calibration is needed if the ambient temperature has changed more than 5° C (9° F) since the last self-calibration or once per week. In the oscilloscope menu, this can sometimes be initiated as Signal Path Compensation. Refer to the manual that accompanied your oscilloscope for more detailed instructions.

Connecting the Probes

Once you have properly grounded the oscilloscope and yourself, and you’ve set up the oscilloscope in standard positions, you are ready to connect a probe to your oscilloscope. A probe, if well-matched to the oscilloscope, enables you to access all of the power and performance in the oscilloscope and will ensure the integrity of the signal you are measuring. Measuring a signal requires two connections:

  • The probe tip connection
  • The ground connection

Probes often come with a clip attachment for grounding the probe to the circuit under test. In practice, you attach the grounding clip to a known ground in the circuit, such as the metal chassis of a product you are repairing, and touch the probe tip to a test point in the circuit.

Compensating the Probes

Passive attenuation voltage probes must be compensated to the oscilloscope. Before using a passive probe, you need to compensate it to balance its electrical properties to a particular oscilloscope. You should get into the habit of compensating the probe every time you set up your oscilloscope. A poorly adjusted probe can make your measurements less accurate. Figure 65 illustrates the effects on a 1 MHz test signal when using a probe that is not properly compensated.

Most oscilloscopes have a square wave reference signal available at a terminal on the front panel used to compensate the probe. General instructions to compensate the probe are as follows:

  1. Attach the probe to a vertical channel.
  2. Connect the probe tip to the probe compensation, i.e. square wave reference signal.
  3. Attach the ground clip of the probe to ground.
  4. View the square wave reference signal.
  5. Make the proper adjustments on the probe so that the corners of the square wave are square.

Oscilloscope Measurement Techniques

The two most basic measurements you can make are:

  • Voltage measurements
  • Time measurements

Just about every other measurement is based on one of these two fundamental techniques.

This section discusses methods for taking measurements visually with the oscilloscope screen. This is a common technique with analog instruments, and also may be useful for “at-a-glance” interpretation of digital oscilloscope displays.

Note that most digital oscilloscopes include automated measurement tools that simplify and accelerate common analysis tasks, thus improving the reliability and confidence of your measurements. However, knowing how to make measurements manually as described here will help you understand and check the automatic measurements.

Voltage Measurements

Voltage is the amount of electric potential, expressed in volts, between two points in a circuit. Usually one of these points is ground (zero volts), but not always. Voltages can also be measured from peak-to-peak. That is, from the maximum point of a signal to its minimum point. You must be careful to specify which voltage you mean. The oscilloscope is primarily a voltage-measuring device. Once you have measured the voltage, other quantities are just a calculation away. For example, Ohm’s law states that voltage between two points in a circuit equals the current times the resistance. From any two of these quantities you can calculate the third using the formula shown below.

TEK-XYZ-Primer-C4-Figure-Voltage_equals_current_times_resistance-750x389
Voltage = Current x Resistance

Another handy formula is the power law, which states that the power of a DC signal equals the voltage times the current. Calculations are more complicated for AC signals, but the point here is that measuring the voltage is the first step toward calculating other quantities. Figure 66 shows the voltage of one peak (Vp) and the peak-to-peak voltage (Vp–p).

TEK-XYZ-Primer-C4-Figure66-750x336
Figure 66: Voltage peak (Vp) and peak-to-peak voltage (Vp-p).

The most basic method of taking voltage measurements is to count the number of divisions a waveform spans on the oscilloscope’s vertical scale. Adjusting the signal to cover most of the display vertically makes for the best voltage measurements, as shown in Figure 67. The more display area you use, the more accurately you can read the measurement.

TEK-XYZ-Primer-C4-Figure67-750x406
Figure 67: Measure voltage on the center vertical graticule line.

Many oscilloscopes have cursors that let you make waveform measurements automatically, without having to count graticule marks. A cursor is simply a line that you can move across the display. Two horizontal cursor lines can be moved up and down to bracket a waveform’s amplitude for voltage measurements, and two vertical lines move right and left for time measurements. A readout shows the voltage or time at their positions.

Time and Frequency Measurements

You can make time measurements using the horizontal scale of the oscilloscope. Time measurements include measuring the period and pulse width of pulses. Frequency is the reciprocal of the period, so once you know the period, the frequency is one divided by the period. Like voltage measurements, time measurements are more accurate when you adjust the portion of the signal to be measured to cover a large area of the display, as illustrated in Figure 68.

TEK-XYZ-Primer-C4-Figure68-750x728<
Figure 68: Measure time on the center horizontal graticule line.

Pulse Width and Rise Time Measurements

In many applications, the details of a pulse’s shape are important. Pulses can become distorted and cause a digital circuit to malfunction, and the timing of pulses in a pulse train is often significant.

Standard pulse measurements are pulse rise time and pulse width. Rise time is the amount of time a pulse takes to go from a low to high voltage. By convention, the rise time is measured from 10% to 90% of the full voltage of the pulse. This eliminates any irregularities at the pulse’s transition corners.

Pulse width is the amount of time the pulse takes to go from low to high and back to low again. By convention, the pulse width is measured at 50% of full voltage. Figure 69 illustrates these measurement points.

TEK-XYZ-Primer-C4-Figure69-750x452
Figure 69: Rise time and pulse width measurement points.

Pulse measurements often require fine-tuning the triggering. To become an expert at capturing pulses, you should learn how to use trigger hold-off and how to set the digital oscilloscope to capture pre-trigger data, as described in Chapter 4—Oscilloscope Systems and Controls.. Horizontal magnification is another useful feature for measuring pulses, since it allows you to see fine details of a fast pulse.

Contact us

Live Chat with Tek representatives. Available 6:00 AM - 4:30 PM PST.

Downloads

Download Manuals, Datasheets, Software and more:

Media Type
MODEL or KEYWORD

US
Current Language
×
English

Select a language:

Contact your local Tektronix office:

Contact Us
Toggle Menu
US
Current Language
×
English

Select a language:

Contact your local Tektronix office:

Contact Us

Download

Download Manuals, Datasheets, Software and more:

DOWNLOAD TYPE
MODEL or KEYWORD

Feedback

Series 2600B System SourceMeter Instrument Reference Manual

This manual includes advanced operation topics and maintenance information. Programmers looking for a command reference and users looking for an in-depth description of the way the instrument works (including troubleshooting and optimization) should refer to this manual.


This manual applies to:

2601B, 2602B, 2611B, 2612B, 2635B, 2614B, 2636B, 2634B, 2604B

Related Product Information

  • Manual Type: Primary User
  • Part Number: 2600BS-901-01F
  • Release Date:

By downloading, you agree to the terms and conditions of the Manuals Download Agreement.

Manuals Download Agreement

ATTENTION: please read the following terms and conditions carefully before downloading any documents from this website. By downloading manuals from Tektronix' website, you agree to the following terms and conditions:

Manuals for Products That Are Currently Supported:

Tektronix hereby grants permission and license to owners of Tektronix instruments to download and reproduce the manuals on this website for their own internal or personal use. Manuals for currently supported products may not be reproduced for distribution to others unless specifically authorized in writing by Tektronix, Inc.

A Tektronix manual may have been revised to reflect changes made to the product during its manufacturing life. Thus, different versions of a manual may exist for any given product. Care should be taken to ensure that one obtains the proper manual version for a specific product serial number.

Manuals for Products That Are No Longer Supported:

Tektronix cannot provide manuals for measurement products that are no longer eligible for long term support. Tektronix hereby grants permission and license for others to reproduce and distribute copies of any Tektronix measurement product manual, including user manuals, operator's manuals, service manuals, and the like, that (a) have a Tektronix Part Number and (b) are for a measurement product that is no longer supported by Tektronix.

A Tektronix manual may be revised to reflect changes made to the product during its manufacturing life. Thus, different versions of a manual may exist for any given product. Care should be taken to ensure that one obtains the proper manual version for a specific product serial number.

This permission and license does not apply to any manual or other publication that is still available from Tektronix, or to any manual or other publication for a video production product or a color printer product.

Disclaimer:

Tektronix does not warrant the accuracy or completeness of the information, text, graphics, schematics, parts lists, or other material contained within any measurement product manual or other publication that is not supplied by Tektronix or that is produced or distributed in accordance with the permission and license set forth above.

Tektronix may make changes to the content of this website or to its products at any time without notice.

Limitation of Liability:

TEKTRONIX SHALL NOT BE LIABLE FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, ANY CONSEQUENTIAL OR INCIDENTAL DAMAGES, DAMAGES FOR LOSS OF PROFITS, BUSINESS INTERRUPTION, OR FOR INFRINGEMENT OF INTELLECTUAL PROPERTY) ARISING OUT OF THE USE OF ANY MEASUREMENT PRODUCT MANUAL OR OTHER PUBLICATION PRODUCED OR DISTRIBUTED IN ACCORDANCE WITH THE PERMISSION AND LICENSE SET FORTH ABOVE.

 

Read Online

Series 2600B System SourceMeter Instrument Reference Manual
SOURCING AND MEASURING
TRIGGERING
INSTRUMENT PROGRAMMING
TSP COMMAND REFERENCE

Safety Precautions

Keithley logoSafety precautions

The following safety precautions should be observed before using this product and any associated instrumentation. Although some instruments and accessories would normally be used with nonhazardous voltages, there are situations where hazardous conditions may be present.

This product is intended for use by personnel who recognize shock hazards and are familiar with the safety precautions required to avoid possible injury. Read and follow all installation, operation, and maintenance information carefully before using the product. Refer to the user documentation for complete product specifications.

If the product is used in a manner not specified, the protection provided by the product warranty may be impaired.

The types of product users are:

Responsible body is the individual or group responsible for the use and maintenance of equipment, for ensuring that the equipment is operated within its specifications and operating limits, and for ensuring that operators are adequately trained.

Operators use the product for its intended function. They must be trained in electrical safety procedures and proper use of the instrument. They must be protected from electric shock and contact with hazardous live circuits.

Maintenance personnel perform routine procedures on the product to keep it operating properly, for example, setting the line voltage or replacing consumable materials. Maintenance procedures are described in the user documentation. The procedures explicitly state if the operator may perform them. Otherwise, they should be performed only by service personnel.

Service personnel are trained to work on live circuits, perform safe installations, and repair products. Only properly trained service personnel may perform installation and service procedures.

Keithley products are designed for use with electrical signals that are measurement, control, and data I/O connections, with low transient overvoltages, and must not be directly connected to mains voltage or to voltage sources with high transient overvoltages. Measurement Category II (as referenced in IEC 60664) connections require protection for high transient overvoltages often associated with local AC mains connections. Certain Keithley measuring instruments may be connected to mains. These instruments will be marked as category II or higher.

Unless explicitly allowed in the specifications, operating manual, and instrument labels, do not connect any instrument to mains.

Exercise extreme caution when a shock hazard is present. Lethal voltage may be present on cable connector jacks or test fixtures. The American National Standards Institute (ANSI) states that a shock hazard exists when voltage levels greater than 30 V RMS, 42.4 V peak, or 60 VDC are present. A good safety practice is to expect that hazardous voltage is present in any unknown circuit before measuring.

Operators of this product must be protected from electric shock at all times. The responsible body must ensure that operators are prevented access and/or insulated from every connection point. In some cases, connections must be exposed to potential human contact. Product operators in these circumstances must be trained to protect themselves from the risk of electric shock. If the circuit is capable of operating at or above 1000 V, no conductive part of the circuit may be exposed.

Do not connect switching cards directly to unlimited power circuits. They are intended to be used with impedance-limited sources. NEVER connect switching cards directly to AC mains. When connecting sources to switching cards, install protective devices to limit fault current and voltage to the card.

Before operating an instrument, ensure that the line cord is connected to a properly-grounded power receptacle. Inspect the connecting cables, test leads, and jumpers for possible wear, cracks, or breaks before each use.

When installing equipment where access to the main power cord is restricted, such as rack mounting, a separate main input power disconnect device must be provided in close proximity to the equipment and within easy reach of the operator.

For maximum safety, do not touch the product, test cables, or any other instruments while power is applied to the circuit under test. ALWAYS remove power from the entire test system and discharge any capacitors before connecting or disconnecting cables or jumpers, installing or removing switching cards, or making internal changes, such as installing or removing jumpers.

Do not touch any object that could provide a current path to the common side of the circuit under test or power line (earth) ground. Always make measurements with dry hands while standing on a dry, insulated surface capable of withstanding the voltage being measured.

For safety, instruments and accessories must be used in accordance with the operating instructions. If the instruments or accessories are used in a manner not specified in the operating instructions, the protection provided by the equipment may be impaired.

Do not exceed the maximum signal levels of the instruments and accessories. Maximum signal levels are defined in the specifications and operating information and shown on the instrument panels, test fixture panels, and switching cards.

When fuses are used in a product, replace with the same type and rating for continued protection against fire hazard.

Chassis connections must only be used as shield connections for measuring circuits, NOT as protective earth (safety ground) connections.

If you are using a test fixture, keep the lid closed while power is applied to the device under test. Safe operation requires the use of a lid interlock.

If a Screw icon screw is present, connect it to protective earth (safety ground) using the wire recommended in the user documentation.

The Risk of danger icon symbol on an instrument means caution, risk of hazard. The user must refer to the operating instructions located in the user documentation in all cases where the symbol is marked on the instrument.

The Caution electric shock icon symbol on an instrument means warning, risk of electric shock. Use standard safety precautions to avoid personal contact with these voltages.

The Hot surface icon symbol on an instrument shows that the surface may be hot. Avoid personal contact to prevent burns.

The Connection terminal icon symbol indicates a connection terminal to the equipment frame.

If this Hg icon symbol is on a product, it indicates that mercury is present in the display lamp. Please note that the lamp must be properly disposed of according to federal, state, and local laws.

The WARNING heading in the user documentation explains hazards that might result in personal injury or death. Always read the associated information very carefully before performing the indicated procedure.

The CAUTION heading in the user documentation explains hazards that could damage the instrument. Such damage may invalidate the warranty.

The CAUTION heading with the Risk of danger icon symbol in the user documentation explains hazards that could result in moderate or minor injury or damage the instrument. Always read the associated information very carefully before performing the indicated procedure. Damage to the instrument may invalidate the warranty.

Instrumentation and accessories shall not be connected to humans.

Before performing any maintenance, disconnect the line cord and all test cables.

To maintain protection from electric shock and fire, replacement components in mains circuits — including the power transformer, test leads, and input jacks — must be purchased from Keithley. Standard fuses with applicable national safety approvals may be used if the rating and type are the same. The detachable mains power cord provided with the instrument may only be replaced with a similarly rated power cord. Other components that are not safety-related may be purchased from other suppliers as long as they are equivalent to the original component (note that selected parts should be purchased only through Keithley to maintain accuracy and functionality of the product). If you are unsure about the applicability of a replacement component, call a Keithley office for information.

Unless otherwise noted in product-specific literature, Keithley instruments are designed to operate indoors only, in the following environment: Altitude at or below 2,000 m (6,562 ft); temperature 0 °C to 50 °C (32 °F to 122 °F); and pollution degree 1 or 2.

To clean an instrument, use a cloth dampened with deionized water or mild, water-based cleaner. Clean the exterior of the instrument only. Do not apply cleaner directly to the instrument or allow liquids to enter or spill on the instrument. Products that consist of a circuit board with no case or chassis (e.g., a data acquisition board for installation into a computer) should never require cleaning if handled according to instructions. If the board becomes contaminated and operation is affected, the board should be returned to the factory for proper cleaning/servicing.

Safety precaution revision as of June 2018.

Introduction

Welcome

Thank you for choosing a Keithley Instruments product. The 2600B System SourceMeter® instrument provides manufacturers of electronic components and semiconductor devices with an instrument that combines source and measurement capabilities in a single instrument called a source‑measure unit (also called a SMU). This combination simplifies test processes by eliminating synchronization and connection issues associated with multiple instrument solutions. A 2600B provides a scalable, high throughput, highly cost‑effective solution for precision DC, pulse, and low frequency AC source-measure testing that also maintains code compatibility throughout the Series 2600B instruments.

Extended warranty

Additional years of warranty coverage are available on many products. These valuable contracts protect you from unbudgeted service expenses and provide additional years of protection at a fraction of the price of a repair. Extended warranties are available on new and existing products. Contact your local Tektronix office, sales partner, or distributor for details.

Contact information

If you have any questions after you review the information in this documentation, please contact your local Tektronix office, sales partner, or distributor. You can also call the Tektronix corporate headquarters (toll‑free inside the U.S. and Canada only) at 1‑800‑833‑9200. For worldwide contact numbers, visit tek.com/contact-tek.

Customer documentation

The documentation for the 2600B includes a Quick Start Guide, User's Manual, and Reference Manual. A Quick Start Guide is provided as a hard copy with the instrument. You can also access it from tek.com/keithley as an Adobe Acrobat .pdf file.

  • Quick Start Guide: Provides unpacking instructions, describes basic connections, and reviews basic operation information. If you are new to Keithley Instruments equipment, refer to the Quick Start Guide to take the steps needed to unpack, set up, and verify operation.
  • User's Manual: Includes installation, instrument description, operation, and maintenance information.
  • Reference Manual: Includes advanced operation topics and maintenance information. Programmers looking for a command reference and users looking for an in‑depth description of how the instrument works (including troubleshooting and optimization) should refer to the Reference Manual.

Product software and drivers

Go to the Product Support and Downloads web page to download drivers and software for your instrument.

Available drivers and software include:

  • KickStart Software: Enables quick test setup and data visualization when using one or more instruments.
  • Test Script Builder (TSB): This software provides an environment to develop a test program and the ability to load the test program onto the instrument. Running a program loaded on the instrument eliminates the need to send individual commands from the host computer to the instrument when running a test.
  • IVI-COM Driver: An IVI instrument driver you can use to create your own test applications in C/C++, VB.NET, or C# programming languages. It can also be called from other languages that support calling a DLL or ActiveX (COM) object. Refer to IVI Foundation for additional information.
  • LabVIEW Software drivers: Drivers to communicate with NITM LabVIEWTM Software.
  • Keithley I/O layer: Manages the communications between Keithley instrument drivers and software applications and the instrument itself. The I/O Layer handles differences in communications required to support GPIB, serial, ethernet, and other communications buses so that drivers and software applications do not need to handle the differences themselves.

To identify IP addresses of instruments that are connected to the local area network (LAN) and support the VXI‑11 discovery protocol, you can also use LXI Discovery Tool, available from the Resources page of the LXI Consortium website.

Capabilities and features

2600B System SourceMeter® instruments have the following features:

  • 4.5, 5.5, or 6.5 digit display resolution
  • Resistance and power measurement functions
  • Four-quadrant sink or source operation
  • Contact check function (not available on the 2604B, 2614B, and 2634B)
  • High‑capacitance mode for load impedance up to 50 µF (microfarads)
  • Linear, logarithmic, and custom sweeping and pulsing
  • Filtering to reduce reading noise
  • A trigger model that supports extensive triggering and synchronization schemes at hardware speeds
  • Internal memory that stores five user setup options
  • Dedicated reading buffers that can each store and recall over 140,000 measurements; additional dynamic reading buffers can be created
  • USB flash drive access for saving data buffers, test scripts, and user setups
  • Digital I/O port that allows the 2600B to control other devices (digital I/O lines not available on the Models 2604B, 2614B, and 2634B)
  • Compatible with Keithley IVy, a wireless I‑V characterization tool
  • LXI® version 1.4 Core 2011 compliant
  • Embedded TSP scripting engine that is accessible from any host interface; responds to high‑speed test scripts comprised of instrument control commands
  • TSP-LinkTM expansion bus that allows TSP-enabled instruments to trigger and communicate with each other; advanced Test Script Processor (TSPTM) scripting engine features enable parallel script execution across the TSP‑Link network (not available on the 2604B, 2614B, and 2634B)
  • Supports IEEE-488 (GPIB), RS-232, Universal Serial Bus (USB), and ethernet local area network (LAN) connections

Model-specific capabilities

Additional source and measure features:

  • Model 2601B, 2602B, and 2604B System SourceMeter® instruments:
    • Source ±DC voltage from 5 µV to 40.4 V
    • Source ±DC current from 100 pA to 3.03 A
    • Source ±pulse current up to 10 A
    • Measure ±pulse current up to 10 A
    • Measure ±DC voltage from 100 nV to 40.8 V
    • Measure ±DC current from 100 fA to 3.06 A
  • Model 2611B, 2612B, and 2614B System SourceMeter® instruments:
    • Source ±DC voltage from 5 µV to 202 V
    • Source ±DC current from 2 pA to 1.515 A
    • Source ±pulse current up to 10 A
    • Measure ±pulse current up to 10 A
    • Measure ±DC voltage from 100 nV to 204 V
    • Measure ±DC current from 100 fA to 1.53 A
  • Model 2634B, 2635B, and 2636B System SourceMeter® instruments:
    • Source ±DC voltage from 5 µV to 202 V
    • Source ±DC current from 1 fA to 1.515 A
    • Source ±pulse current up to 10 A
    • Measure ±pulse current up to 10 A
    • Measure ±DC voltage from 100 nV to 204 V
    • 2635B and 2636B: Measure ±DC current from 100 aA to 1.53 A
    • 2634B: Measure ±DC current from 1 fA to 1.53 A

Display the serial number

The instrument serial number is on a label on the rear panel of the instrument. You can also access the serial number from the front panel using the front-panel keys and menus.

To display the serial number on the front panel:

  1. If the 2600B is in remote operation, press the EXIT (LOCAL) key once to place the instrument in local operation.
  2. Press the MENU key.
  3. Use the navigation wheel to scroll to the SYSTEM-INFO menu item.
  4. Press the ENTER key. The SYSTEM INFORMATION menu is displayed.
  5. Scroll to the SERIAL# menu item.
  6. Press the ENTER key. The 2600B serial number is displayed.

Sourcing and measuring

Basic operation

WARNING For the Models 2611B, 2612B, 2614B, 2634B, 2635B, and 2636B, hazardous voltages may be present on all output and guard terminals. To prevent electrical shock that could cause injury or death, never make or break connections to the 2600B while the instrument is powered on. Turn off the equipment from the front panel or disconnect the main power cord from the rear of the 2600B before handling cables. Putting the equipment into standby does not guarantee that the outputs are powered off if a hardware or software fault occurs.

Source-measure capabilities

From the front panel, you can configure the instrument to perform the following source-measure operations:

  • Source voltage: Measure and display current, voltage, resistance, or power
  • Source current: Measure and display voltage, current, resistance, or power
  • Measure resistance: Display resistance calculated from voltage and current components of measurement (can optionally specify source voltage or source current value)
  • Measure power: Display power calculated from voltage and current components of measurement (can optionally specify source voltage or source current value)
  • Measure only (V or I): Display voltage or current measurement

Voltage and current

The following table lists the source and measure limits for the voltage and current functions. The full range of operation is explained in Operating boundaries.

Circuit configurations

The fundamental source-measure configurations for the 2600B are shown in the following figures. When sourcing voltage, you can measure current or voltage, as shown in the following figure.

Fundamental source-measure configurations: Source V

A

Current meter

+

-

Voltage source

V

Voltage meter

When sourcing current, you can measure voltage or current, as shown in the following figure.

Fundamental source-measure configuration: Source I

A

Current meter

?

Current source

V

Voltage meter

See the following topics for detailed information.

Source V

When configured to source voltage (V-source) as shown in the figure below, the 2600B functions as a low-impedance voltage source with current limit capability and can measure current (I-meter) or voltage (V-meter).

Source V configuration

Sense circuitry is used to monitor the output voltage continuously and make adjustments to the V‑source as needed. The V-meter senses the voltage at the HI / LO terminals (2-wire local sense) or at the device under test (DUT) (4-wire remote sense using the sense terminals) and compares it to the programmed voltage level. If the sensed level and the programmed value are not the same, the V‑source is adjusted accordingly. Remote sense eliminates the effect of voltage drops in the test leads, ensuring that the exact programmed voltage appears at the DUT. With 4-wire sensing enabled, both remote sense leads must be connected or incorrect operation occurs. For the 2601B, 2602B, 2611B, 2612B, 2635B, and 2636B, use contact check to verify that the sense leads are connected (see Contact check measurements).

Source I

When the instrument is configured to source current (I-source), as shown in the figure below, the instrument functions as a high-impedance current source with voltage limit capability and can measure current (I-meter) or voltage (V-meter).

For 2-wire local sensing, voltage is measured at the HI / LO terminals of the instrument. For 4-wire remote sensing, voltage is measured directly at the device‑under‑test (DUT) using the sense terminals. This eliminates any voltage drops that may be in the test leads or connections between the instrument and the DUT.

The current source does not require or use the sense leads to enhance current source accuracy. However, if the instrument is in 4-wire remote sense mode, the instrument may reach limit levels if the sense leads are disconnected. With 4-wire remote sensing selected, the sense leads must be connected or incorrect operation results.

Source I configuration

Source I measure I, source V measure V

The System SourceMeter® instrument can measure the same function that it is sourcing. For example, when sourcing a voltage, you can measure voltage. Conversely, if you are sourcing current, you can measure the output current. For these operations, the measure range is the same as the source range.

This feature is valuable when operating with the source in compliance. When in compliance, the programmed source value is not reached, so measuring the source lets you measure the actual output level.

Measure only (voltage or current)

The figures below show the configurations for using the instrument exclusively as a voltmeter or ammeter.

As shown in the following figure, to configure the instrument to measure voltage only, set it to source 0 A and measure voltage.

2600B measure voltage only

VARIABLE - CAUTION Set the voltage limit to a level that is higher than the measured voltage. If the voltage limit is set to a level that is lower than the measured voltage, excessive current flows into the instrument. This current could damage the instrument. Also, when connecting an external energy source to the instrument when it is configured as a current source, set the output off state to the high-impedance mode. See Output-off states for more information on the output-off states. See “Limits” in the Model 2600B User's Manual for details on compliance limits.

In the following figure, the instrument uses a 2-wire local sensing configuration and is set to measure current only by setting it to source 0 V and measure current. Note that to obtain positive (+) readings, conventional current must flow from HI to LO.

2600B measure current only

Contact check

VARIABLE - NOTE The Models 2604B, 2614B, and 2634B do not perform contact check measurements.

When a contact check measurement is made, two small current sources switch between the HI and SENSE HI terminals and the LO and SENSE LO terminals. By controlling the switches illustrated in the following figure, the current from these sources flows through the test leads and through the contact resistance, as shown. To accurately measure the resulting contact resistance, the differential amplifier outputs are measured once with the current sources connected, and again with the current sources disconnected. This allows for compensation of various offset voltages that can occur.

Contact check circuit

Operation considerations for the ADC

The following paragraphs discuss autozero and NPLC caching with the analog-to-digital converter (ADC).

Autozero

The ADC of the 2600B uses a ratiometric analog to digital (A/D) conversion technique. To ensure reading accuracy, the instrument must periodically obtain fresh measurements of its internal ground and voltage reference. Separate reference and zero measurements are used for each aperture.

As summarized in the table below, there are different settings for autozero. By default, the instrument is set to AUTO, which automatically checks these reference measurements whenever a signal measurement is made. If the reference measurements are out of date when a signal measurement is made, the instrument automatically makes two more A/D conversions, one for the reference and one for the zero, before returning the result. Thus, occasionally, a measurement takes longer than normal.

This extra time can cause problems in sweeps and other test sequences in which measurement timing is critical. To avoid the extra time for the reference measurements in these situations, you can select OFF. This setting disables the automatic reference measurements. Note that with automatic reference measurements disabled, the instrument may gradually drift out of specification.

To minimize the drift, make a reference and zero measurement immediately before a critical test sequence. You can use the ONCE setting to force a refresh of the reference and zero measurements used for the current aperture setting.

Autozero settings

Autozero setting

Description

OFF

Turns automatic reference measurements off.

ONCE

After immediately making one reference and one zero measurement, turns automatic reference measurements off.

AUTO

Automatically makes new acquisitions when the 2600B determines reference and zero values are out-of-date.

Setting autozero from the front panel

To change autozero from the front panel:

  1. Press the CONFIG key.
  2. Press the MEAS key.
  3. Turn the navigation wheel to select AUTO-ZERO, and then press the ENTER key or the navigation wheel.
  4. Turn the navigation wheel to select the mode (OFF, ONCE, or AUTO), and then press the ENTER key or the navigation wheel.
  5. Press the EXIT (LOCAL) key to return to the previous display.

Setting autozero from a remote interface

To set autozero from a remote interface:

Use the autozero command with the appropriate option shown in the following table to set autozero through a remote interface (see smuX.measure.autozero). For example, send the following command to activate channel A automatic reference measurements:

smua.measure.autozero = smua.AUTOZERO_AUTO

Autozero command and options

Command*

Description

smuX.measure.autozero = smuX.AUTOZERO_OFF

Disable autozero. Old NPLC cache values are used when autozero is disabled (see NPLC caching).

smuX.measure.autozero = smuX.AUTOZERO_ONCE

After immediately making one reference and one zero measurement, turns automatic reference measurements off.

smuX.measure.autozero = smuX.AUTOZERO_AUTO

Automatically makes new reference and zero measurements when the 2600B determines values are out-of-date.

* smuX can be smua for channel A or smub for channel B

NPLC caching

NPLC caching speeds up operation by caching A/D reference and zero values for up to the ten most recent measurement aperture settings. Whenever the integration rate is changed using the SPEED key, or a user setup is recalled, the NPLC cache is checked. If the integration rate is already stored in the cache, the stored reference and zero values are recalled and used. If the integration rate is not already stored in the cache, a reference and zero value is acquired and stored in the cache when the next measurement is made. If there are already ten NPLC values stored, the oldest one is overwritten by the newest one. When autozero is off, NPLC values stored in the cache are used, regardless of age.

Remote source-measure commands

Basic source-measurement procedures can also be performed through a remote interface. To do this, send the appropriate commands. The following table summarizes basic source-measure commands. See Introduction to TSP operation for more information on using these commands.

Basic source-measure commands

Command*

Description

smuX.measure.autorangei = smuX.AUTORANGE_ON

Enable current measure autorange.

smuX.measure.autorangev = smuX.AUTORANGE_ON

Enable voltage measure autorange.

smuX.measure.autorangei = smuX.AUTORANGE_OFF

Disable current measure autorange.

smuX.measure.autorangev = smuX.AUTORANGE_OFF

Disable voltage measure autorange.

smuX.measure.rangei = rangeval

Set current measure range.

smuX.measure.rangev = rangeval

Set voltage measure range.

reading = smuX.measure.i()

Request a current reading.

reading = smuX.measure.v()

Request a voltage reading.

iReading, vReading = smuX.measure.iv()

Request a current and voltage reading.

reading = smuX.measure.r()

Request a resistance reading.

reading = smuX.measure.p()

Request a power reading.

smuX.source.autorangei = smuX.AUTORANGE_ON

Enable current source autorange.

smuX.source.autorangev = smuX.AUTORANGE_ON

Enable voltage source autorange.

smuX.source.autorangei = smuX.AUTORANGE_OFF

Disable current source autorange.

smuX.source.autorangev = smuX.AUTORANGE_OFF

Disable voltage source autorange.

smuX.source.func = smuX.OUTPUT_DCVOLTS

Select voltage source function.

smuX.source.func = smuX.OUTPUT_DCAMPS

Select current source function.

smuX.source.leveli = sourceval

Set current source value.

smuX.source.levelv = sourceval

Set voltage source value.

smuX.source.limiti = level

Set current limit.

smuX.source.limitv = level

Set voltage limit.

smuX.source.limitp = level

Set power limit.

smuX.source.output = smuX.OUTPUT_ON

Turn on source output.

smuX.source.output = smuX.OUTPUT_OFF

Turn off source output.

smuX.source.rangei = rangeval

Set current source range.

smuX.source.rangev = rangeval

Set voltage source range.

smuX.sense = smuX.SENSE_LOCAL

Select local sense (2-wire).

smuX.sense = smuX.SENSE_REMOTE

Select remote sense (4-wire).

* smuX can be smua for channel A or smub for channel B

Requesting readings

You can request readings by including the appropriate measurement command as the argument for the print() command. The following programming example illustrates how to request a channel A current reading:

print(smua.measure.i())

Source-measure programming example

The following SMU programming example illustrates the setup and command sequence of a basic source‑measure procedure with the following parameters:

  • Source function and range: Voltage, autorange
  • Source output level: 5 V
  • Current compliance limit: 10 mA
  • Measure function and range: Current, 10 mA

-- Restore 2600B defaults.

smua.reset()

-- Select voltage source function.

smua.source.func = smua.OUTPUT_DCVOLTS

-- Set source range to autorange.

smua.source.autorangev = smua.AUTORANGE_ON

-- Set voltage source to 5 V.

smua.source.levelv = 5

-- Set current limit to 10 mA.

smua.source.limiti = 10e-3

-- Set current range to 10 mA.

smua.measure.rangei = 10e-3

-- Turn on output.

smua.source.output = smua.OUTPUT_ON

-- Print and place the current reading in the reading buffer.

print(smua.measure.i(smua.nvbuffer1))

-- Turn off output.

smua.source.output = smua.OUTPUT_OFF

Triggering in local mode

You do not need to change any trigger settings to use the basic source and measurement procedures described in the following topics.

VARIABLE - NOTE Press the MENU key, and then select SETUP > RECALL > INTERNAL > FACTORY to reset the factory default conditions.

The following figure shows the general sequence for SMU measurement triggering. The basic sequence is as follows:

  • When the output is turned on, the programmed source value is immediately applied to the device under test (DUT).
  • Through the front panel only: If the immediate trigger source is selected, a measurement is triggered immediately. However, if the manual trigger source is selected, the front‑panel TRIG key must be pressed.
  • The instrument waits for the programmed delay period (if any).
  • The instrument makes one measurement.
  • If the number of measurements is less than the programmed trigger count, it cycles to make another measurement (the measurement cycle is repeated indefinitely if the infinite trigger count is selected).
  • For multiple measurements, the instrument waits for the programmed trigger interval (if any) before making the next measurement.

    Local triggering

Configuring trigger attributes in local mode

From the front panel, press the CONFIG key, and then select TRIG. The following menu items are available:

  • TRIGGER-IN: Use these options to select the trigger-in source:
    • IMMEDIATE: Triggering occurs immediately and the instrument starts to make measurements when it is ready (for example, after the source output is turned on).
    • MANUAL: The front‑panel TRIG key must be pressed to trigger the instrument to make readings.
  • COUNT: Sets the trigger count (number of measurements) as follows:
    • FINITE: The instrument goes through measurement cycles for the programmed trigger count (1 to 99999).
    • INFINITE: The instrument goes through measurement cycles indefinitely until halted.
  • INTERVAL: Sets the time interval between measurements (0 s to 999.999 s) when the count is greater than 1.
  • DELAY: Sets the delay period between the trigger and the start of measurement (0 s to 999.999 s).

Front-panel triggering example

This example uses the front panel to configure the trigger parameters to meet the following requirements:

  • Manual triggering (TRIG key)
  • Infinite trigger count (cycle indefinitely through measurement cycles)
  • Interval (time between measurements): 1 s
  • Delay (time from trigger to measurement): 2 s

To configure the trigger parameters:

  1. Press the CONFIG key, and then the TRIG key.
  2. Select TRIGGER-IN, and then press the ENTER key or the navigation wheel.
  3. Select MANUAL, and then press the ENTER key or the navigation wheel.
  4. Select COUNT, then select INFINITE, and then press the ENTER key or the navigation wheel.
  5. Select INTERVAL, set the interval to 1 s, and then press the ENTER key or the navigation wheel.
  6. Choose DELAY, set the delay to 2 s, and then press the ENTER key or the navigation wheel.
  7. Use the EXIT (LOCAL) key to return to the normal display.
  8. Press the OUTPUT ON/OFF control to turn the output on.
  9. Press the TRIG key. A 2 s delay occurs before the first measurement. The instrument cycles through measurements indefinitely with a 1 s interval between measurements.
  10. Press the OUTPUT ON/OFF control again to stop making readings.

Configuring for measure-only tests using the MODE key

In addition to using the 2600B for conventional source-measure operations, you can also use it like a meter to measure current, voltage, resistance, or power.

To configure the 2600B as a voltage meter, current meter, ohmmeter, or wattmeter:

  1. Press the MODE key.
  2. Turn the navigation wheel to select the type of meter from the menu (I‑METER, V-METER, OHM-METER, or WATT-METER).
  3. Press the ENTER key to complete the configuration of the 2600B as the selected meter.

To manually configure the settings, refer to the following topics:

Voltmeter and ammeter measurements

You can make voltmeter and ammeter measurements without using the MODE key, such as when configuring measure-only tests over the remote interface.

To use the 2600B to measure voltage or current:

  1. Select the source-measure functions:
    • Voltmeter: Press the SRC key to select the current source and press the MEAS key to select the voltage measurement function.
    • Ammeter: Press the SRC key to select the voltage source and press the MEAS key to select the current measurement function.
  2. Set source and compliance levels. To edit the source level, use the procedure provided in Step 1: Select and set the source level; to edit the compliance level, use the procedure provided in Step 2: Set the compliance limit:
    • Select the lowest source range and set the source level to zero.
    • Set the compliance level to a value that is higher than the expected measurement.

VARIABLE - CAUTION When using the 2600B as a voltmeter, the voltage compliance limit must be set higher than the voltage that is being measured. Failure to do this could result in excessive current flow into the 2600B, incorrect measurements, and possible damage to the instrument.

  1. Use the RANGE keys to select a fixed measurement range that accommodates the expected reading. Use the lowest possible range for best accuracy. You can also select autorange, which automatically sets the 2600B to the most sensitive range.
  2. Connect the voltage or current to be measured. Make sure to use 2-wire connections from the 2600B to the device under test (DUT) (see “DUT test connections” in the Series 2600B User's Manual).
  3. Press the OUTPUT ON/OFF control to turn the output on.
  4. View the displayed reading (press the TRIG key if necessary).
  5. When finished, press the OUTPUT ON/OFF control to turn the output off.

Ohms measurements

Resistance readings are calculated from the measured current and measured voltage as follows:

R = V/I

Where:

  • R is the calculated resistance
  • V is the measured voltage
  • I is the measured current

Ohms ranging

The front‑panel ohms function does not use ranging. The instrument formats a calculated resistance reading (V/I) to best fit the display. There may be leading zeros if the ohms reading is less than 1 mO.

Basic ohms measurement procedure

When you use the MODE key to select ohms measurement, the 2600B is automatically configured as a current source with a level of 1 mA. To change the source function, source value, or compliance value (in other words, customize the standard ohmmeter configuration of the MODE key), then use the following steps to make ohms measurements. The following procedure assumes that the 2600B is already connected to the device under test (see “DUT test connections” in the Series 2600B User's Manual).

The following procedure requires dual-channel instruments (2602B, 2604B, 2612B, 2614B, 2634B, and 2636B) to be placed in single-channel display mode. For these models, press the DISPLAY key to select single-channel display mode. See “Display mode” in the Series 2600B User's Manual.

To make an ohms measurement:

  1. Press the SRC key to select the source function.
  2. Set the output source, as indicated by the units in the source field on the display. The flashing digit (cursor) indicates which value is presently selected for editing.
  3. Move the cursor to the digit to change, then press the navigation wheel to enter the EDIT mode.
  4. Use the RANGE keys to select a range that accommodates the value you want to set. For best accuracy, use the lowest possible source range.
  5. Enter the source value.
  6. Press the ENTER key or the navigation wheel to complete editing
  7. Press the LIMIT key to edit the voltage or current limit. When programming a voltage limit, set the voltage limit above the maximum expected voltage across the resistor under test. When programming a current limit, set the current limit at or above the maximum expected current through the resistor under test.
  8. Move the cursor to the digit to change, then press the navigation wheel to enter the EDIT mode, as indicated by the EDIT indicator.
  9. Enter the limit value, then press the ENTER key or the navigation wheel to complete editing.
  10. Press the MEAS key to display voltage or current.
  11. Make sure that AUTO measurement range is on (press the AUTO key if needed).
  12. Press the MEAS key as many times as needed to display ohms.
  13. Press the OUTPUT ON/OFF control to turn the output on.
  14. View the displayed reading (press the TRIG key if necessary). When finished, press the OUTPUT ON/OFF control to turn the output off.

Remote ohms command

Use the smuX.measure.r() function to get a resistance reading.

The programming example below illustrates how to get a resistance reading from SMU A:

reading = smua.measure.r()

See Remote source-measure commands for more commands to set up source and measure functions, and Introduction to TSP operation for more details.

Ohms programming example

The following programming example illustrates the setup and command sequence of a typical ohms measurement procedure with the following parameters:

  • Source function: Current, 10 mA range, 10 mA output
  • Voltage measure range: Autorange
  • Voltage compliance: 10 V
  • Sense mode: 4‑wire

-- Restore 2600B defaults.

smua.reset()

-- Select the current source function.

smua.source.func = smua.OUTPUT_DCAMPS

-- Set the source range to 10 mA.

smua.source.rangei = 10e-3

-- Set the current source to 10 mA.

smua.source.leveli = 10e-3

-- Set the voltage limit to 10 V.

smua.source.limitv = 10

-- Enable 4-wire ohms.

smua.sense = smua.SENSE_REMOTE

-- Set the voltage range to auto.

smua.measure.autorangev = smua.AUTORANGE_ON

-- Turn on output.

smua.source.output = smua.OUTPUT_ON

-- Retrieve a resistance reading.

print(smua.measure.r())

-- Turn off output.

smua.source.output = smua.OUTPUT_OFF

Ohms sensing

Ohms measurements can be made using either 2-wire or 4-wire sensing. See “DUT test connections” in the Series 2600B User's Manual for information on connections and sensing methods.

The 2-wire sensing method has the advantage of requiring only two test leads. However, as shown in the following figure (2-wire resistance sensing), test lead resistance can seriously affect the accuracy of 2-wire resistance measurements, particularly with lower resistance values.

Two-wire resistance sensing

The 4-wire sensing method, as shown in the following figure (4-wire resistance sensing), minimizes or eliminates the effects of lead resistance by measuring the voltage across the resistor under test with a second set of test leads. Because of the high input impedance of the voltmeter, the current through the sense leads is negligible, and the measured voltage is essentially the same as the voltage across the resistor under test.

Four-wire resistance sensing

Power measurements

Power readings are calculated from the measured current and voltage as follows:

Power calculations formula

Where:

P is the calculated power

V is the measured voltage

I is the measured current

Basic power measurement procedure

If you need to customize the standard wattmeter configuration of the MODE key, perform the following steps to make power measurements. The following procedure assumes that the 2600B is already connected to the device under test (DUT) as explained in “DUT test connections” in the Series 2600B User's Manual.

VARIABLE - WARNING Hazardous voltages may be present on all output and guard terminals. To prevent electrical shock that could cause injury or death, never make or break connections to the 2600B while the output is on. Turn off the equipment from the front panel or disconnect the main power cord from the rear of the 2600B before handling cables. Putting the equipment into an output‑off state does not guarantee that the outputs are powered off if a hardware or software fault occurs.

To perform power measurements from the front panel:

  1. If the instrument has two channels (2602B, 2604B, 2612B, 2614B, 2634B, and 2636B), press the DISPLAY key to place it in single-channel display mode.
  2. Set source function and value. Press the SRC key to select the voltage or current source function, as required.
  3. Set the output voltage or current to an appropriate value.
  4. Move the cursor to the digit to change, then press the navigation wheel to enter the EDIT mode.
  5. Use the RANGE keys to select a range that accommodates the value you want to set. For best accuracy, use the lowest possible source range.
  6. Enter the source value.
  7. Press the ENTER key or the navigation wheel to complete editing.
  8. Press the LIMIT key and set the voltage or current limit high enough for the expected voltage or current across the DUT to be measured.
  9. Press the LIMIT key.
  10. Move the cursor to the digit to change, then press the navigation wheel to enter the EDIT mode, as indicated by the EDIT indicator.
  11. Enter the limit value, then press the ENTER key or the navigation wheel to complete editing.
  12. Press the MEAS key as many times as needed to display power.
  13. Press the OUTPUT ON/OFF control to turn the output on.
  14. View the displayed reading (press the TRIG key if necessary).
  15. When finished, press the OUTPUT ON/OFF control again to turn the output off.

Power measurements using the remote interface

The following paragraphs summarize basic power measurement commands using the remote interface and also give a programming example for a typical power measurement situation.

Remote power reading command

The programming example below illustrates how to get a power reading from SMU A:

reading = smua.measure.p()

See Remote source-measure commands for more commands necessary to set up source and measure functions and also Introduction to TSP operation.

Power measurement programming example

The following programming example illustrates the setup and command sequence for a typical power measurement procedure with the following parameters:

  • Source function: Voltage, source autorange, 5 V output
  • Current measure function and range: Current, autorange
  • Current compliance: 50 mA

-- Restore 2600B defaults.

smua.reset()

-- Select voltage source function.

smua.source.func = smua.OUTPUT_DCVOLTS

-- Enable source autoranging.

smua.source.autorangev = smua.AUTORANGE_ON

-- Set voltage source to 5 V.

smua.source.levelv = 5

-- Set current limit to 50 mA.

smua.source.limiti = 50e-3

-- Set current range to autorange.

smua.measure.autorangei = smua.AUTORANGE_ON

-- Turn on the output.

smua.source.output = smua.OUTPUT_ON

-- Retrieve a power reading.

print(smua.measure.p())

-- Turn off the output.

smua.source.output = smua.OUTPUT_OFF

Contact check measurements

NOTE The Models 2604B, 2614B, and 2634B do not perform contact check measurements.

The contact check function prevents measurements that may be in error due to excessive resistance in the force or sense leads when making remotely sensed (Kelvin) measurements. Potential sources for this resistance include poor contact at the device under test (DUT), failing relay contacts on a switch card, and wires that are too long or thin. To use contact check, the current limit must be at least 1 mA (this allows enough current to flow when performing the test), and the source‑measure unit (SMU) must not be in High‑Z output‑off mode.

The contact check function also detects an open circuit that may occur when a four-point probe is misplaced or misaligned. This relationship is shown schematically in the figure below, where RC is the resistance of the mechanical contact at the DUT, and RS is the series resistance of relays and cables.

Contact check measurements

When the source is off, smuX.source.offmode is set to smuX.OUTPUT_ZERO, and the effective current limit is less than 1 mA, contact check operations result in error code 5066, source.offlimiti too low for contact check. In the zero off mode, smuX.source.offlimiti is ignored and the effective current limit depends on what the channel is sourcing when it is turned off. If the channel is sourcing:

  • Voltage: The current limit is determined by smuX.source.limiti.
  • Current: The current limit is determined by the greater of smuX.source.leveli or 10 percent of smuX.source.rangei.

Contact check commands

The following table summarizes the contact check commands. For a more complete description of these commands, refer to the “TSP command reference” section of the Series 2600B Reference Manual.

Basic contact check commands

Command

Description

flag = smuX.contact.check()

Determine if contact resistance is lower than threshold.

rhi, rlo = smuX.contact.r()

Measure the aggregate contact resistance.

smuX.contact.speed = speedSetting

Set speedSetting to one of the following:

  • 0 or smuX.CONTACT_FAST
  • 1 or smuX.CONTACT_MEDIUM
  • 2 or smuX.CONTACT_SLOW

smuX.contact.threshold = rvalue

Set resistance threshold for the contact check function.

Contact check programming example

The following programming example illustrates the setup and command sequence for a typical contact check measurement. These commands set the contact check speed to fast and the threshold to 100 O. Then, a contact check measurement against the threshold is made. If it fails, a more accurate contact check measurement is made, and the test is aborted. If it does not fail, the output is turned on, and the test continues.

-- Restore defaults.

smua.reset()

-- Set contact-check speed to fast.

smua.contact.speed = smua.CONTACT_FAST

-- Set the contact-check threshold to 100 ohms.

smua.contact.threshold = 100

-- Check contacts against threshold.

if not smua.contact.check() then

-- Set speed to slow.

smua.contact.speed = smua.CONTACT_SLOW

-- Get aggregate resistance readings.

rhi, rlo = smua.contact.r()

-- Return contact resistances to the host.

print(rhi, rlo)

-- Terminate execution.

exit()

end

-- Turn output on and continue.

smua.source.output = smua.OUTPUT_ON

Multiple SMU connections

VARIABLE - WARNING Connections to LO on the 2600B are not necessarily at 0 V. Hazardous voltages could exist between LO and chassis ground. Make sure that high-voltage precautions are taken throughout the test system. Alternatively, limit hazardous levels by adding external protection to limit the voltage between LO and chassis. Failure to make sure high-voltage precautions are used throughout the test system or a failure to limit hazardous levels could result in severe personal injury or death from electric shock.

VARIABLE - CAUTION Carefully consider and configure the appropriate output-off state, source function, and compliance limits before connecting the 2600B to a device that can deliver energy (for example, other voltage sources, batteries, capacitors, solar cells, or other 2600B instruments). Configure recommended instrument settings before making connections to the device. Failure to consider the output-off state, source, and compliance limits may result in damage to the instrument or to the device under test (DUT).

The following figures show how to use the SMUs of two 2600B instruments to test a 3-terminal device, such as an N-channel JFET. A typical application is for the 2600B to source a range of gate voltages, while another 2600B sources voltage to the drain of the device and measures current at each gate voltage.

Two SMUs connected to a 3-terminal device (local sensing)

Two SMUs (Model 2634B or 2636B) connected to a 3-terminal device (local sensing, floating)

Combining SMU outputs

The following information provides important considerations that need to be observed when combining source‑measure unit (SMU) outputs.

Use care when combining SMUs. Whenever SMUs are combined, make sure both SMUs have the same model number.

VARIABLE - NOTE For further information, visit tek.com/keithley for application notes on combining SMU channels, including Application Note 3047, Methods to Achieve Higher Currents from I-V Measurement Equipment.

VARIABLE - CAUTION Carefully consider and configure the appropriate output-off state, source function, and compliance limits before connecting the 2600B to a device that can deliver energy (for example, other voltage sources, batteries, capacitors, solar cells, or other 2600B instruments). Configure recommended instrument settings before making connections to the device. Failure to consider the output-off state, source, and compliance limits may result in damage to the instrument or to the device under test (DUT).

Pulse characteristics for the 2601B, 2602B, and 2604B

The following figure and table illustrate the pulse regions for each SMU. The programmed current and voltage levels for both SMUs must fall within the same pulse region. Refer to the 2600B specifications on tek.com/keithley for the latest pulse width and duty cycle information. Measurements are given priority over source and display operations, so make sure that the measurement time does not exceed the allowable pulse width and duty cycle in a particular pulse region.

Pulse regions

Pulse region specification

Region (quadrant diagram)

Region maximum

Maximum pulse width

Maximum duty cycle

1

1 A at 40 V

DC, no limit

100%

1

3 A at 6 V

DC, no limit

100%

2

1.5 A at 40 V

100 ms

25%

3

5 A at 35 V

4 ms

4%

4

10 A at 20 V

1.8 ms

1%

5

5 A at 6 V

10 ms

10%

Pulse characteristics for the 2611B, 2612B, 2614B, 2634B, 2635B, and 2636B

The following figure and table illustrate the pulse regions for each SMU. The programmed current and voltage levels for both SMUs must fall within the same pulse region. Refer to the 2600B specifications on tek.com/keithley for the latest pulse width and duty cycle information. Measurements are given priority over source and display operations, so make sure that the measurement time does not exceed the allowable pulse width and duty cycle in a particular pulse region.

Pulse region characteristics for 2611B, 2612B, 2614B, 2634B, 2635B, and 2636B

Pulse region specifications

Region (quadrant diagram)

Region maximum

Maximum pulse width

Maximum duty cycle

1

100 mA at 200 V

DC, no limit

100%

1

1.5 A at 20 V

DC, no limit

100%

2

1 A at 180 V

8.5 ms

1%

3

1 A at 200 V

2.2 ms

1%

4

10 A at 5 V

1 ms

2.2%

Guidelines for combining SMU outputs

When combining the outputs of two 2600B SMUs, restrict operation to pulse only or limited duty cycle operations whenever possible. DC operation in Region 1 is possible if necessary.

Do not place two voltage sources in parallel.

Do not place two current sources in series.

Carefully consider the appropriate output-off mode (smua.source.offmode) and output-off function (smua.source.offfunc) whenever changes are made to the source function. An alternative is to always use the high impedance output-off mode (smua.source.offmode = smua.OUTPUT_HIGH_Z).

To obtain the cleanest pulse edges and sweep steps, the rise and fall times of the individual SMUs must be similar. For comparable rise and fall times, the source range, source level, and limit range of SMU 1 should match the source range, source level, and limit range of SMU 2. Because you cannot set the source limit range directly, you must choose limit values that cause both SMUs to operate on the same limit range.

Additional configuration guidelines are presented in the following topics. Additional information, including examples of combining SMU instruments, is available in application notes on tek.com/keithley.

Source current using two 2600B instruments in parallel

This example shows the recommended approach for setting the source and limit ranges and levels when combining SMU current sources in parallel.

Source current using parallel SMU instruments

The values are based on the current and voltage levels available in Region 4 of a 2601B, 2602B, or 2604B SMU, as shown in the table in Combining SMU outputs. For information about generating pulses with a 2600B, refer to Using timers to perform pulse mode sweeps.

This configuration allows the combined SMUs to supply more current than a single SMU current source can provide. In this example, SMU 1 and SMU 2 each supply one-half of the total current for the SMU combination.

In this configuration, it is best practice to use only one SMU to limit the voltage output of the SMU combination. In this example, SMU 2 limits the voltage. A good approach for making sure that both SMUs are set to the same source limit range, which is recommended, is to set SMU 1 to the maximum voltage allowed in Region 4, then set the limit for SMU 2 ten percent lower.

VARIABLE - NOTE A 10% source limit margin is generally recommended, but this value can be adjusted to meet the requirements of a specific application.

Configure two 2600B SMUs to get the maximum pulsed current level possible in Region 4:

20 A with 18 V source limit

SMU 1 configuration (sources one-half of the total pulse current):

Source function:

smua.source.func = smua.OUTPUT_DCAMPS

Source range:

smua.source.rangei = 10

Idle (bias) source level (source level at the base of pulse):

smua.source.leveli = 0

Idle (bias) source limit (source limit at base of pulse):

smua.source.limitv = 6

Pulse source level (source level at top of pulse):

smua.trigger.source.listi({10})

Pulse source limit. SMU 2 controls the source limit for the combined SMUs. Set the voltage source limit of SMU 1 to the maximum voltage allowed in Region 4:

smua.trigger.source.limitv = 20

Output-off mode:

smua.source.offmode = smua.OUTPUT_NORMAL

Output-off function:

smua.source.offfunc = smua.OUTPUT_DCAMPS

Normal output-off voltage limit:

smua.source.offlimitv = 20

SMU 2 configuration (sources one-half of the total pulse current):

Source function:

smua.source.func = smua.OUTPUT_DCAMPS

Source range:

smua.source.rangei = 10

Idle (bias) source level (source level at base of pulse):

smua.source.leveli = 0

Idle (bias) source limit (source limit at base of pulse). Set the SMU 2 idle source limit ten percent lower than the SMU 1 idle source limit:

smua.source.limitv = 5.4

Pulse source level (source level at top of pulse):

smua.trigger.source.listi({10})

Pulse source limit. SMU 2 controls the source limit for the combined SMUs. Set the voltage source limit of SMU 2 ten percent lower than the source limit of SMU 1:

smua.trigger.source.limitv = 18

Output-off mode:

smua.source.offmode = smua.OUTPUT_NORMAL

Output-off function:

smua.source.offfunc = smua.OUTPUT_DCVOLTS

Current limit for normal output-off mode (this is the maximum current that flows between the two SMUs when the output is off):

smua.source.offlimiti = 1e-3 -- default

Voltage compliance must be ten percent lower than the voltage compliance of SMU 1. This causes SMU 1 to control the maximum voltage across the DUT. Voltage compliance limit (maximum):

smua.trigger.source.limitv = 18

Source voltage using two 2600B instruments in series

This example shows the recommended approach for setting the source and limit ranges and levels when combining SMU voltage sources in series.

Source voltage using 2600B instruments in series

The following values are based on the current and voltage levels available in Region 4 of a 2601B, 2602B, or 2604B SMU, as shown in the table in Combining SMU outputs. For information about generating pulses with a 2600B, refer to Using timers to perform pulse mode sweeps.

This configuration supplies more voltage than a single SMU voltage source can provide. In this example, SMU 1 and SMU 2 each supply one-half of the total voltage for the SMU combination. For the back-to-back series connection shown, the total voltage of the combined SMUs is VSMU 2 - VSMU 1. To obtain a net differential voltage that is twice VSMU 2, the polarity of SMU 1 is set to the opposite of the polarity of SMU 2.

In this configuration, it is best practice to use only one SMU to limit the current output of the SMU combination. In this example, SMU 2 limits the current. A good approach for making sure that both SMUs are set to the same source limit range, which is recommended, is to set SMU 1 to the maximum current allowed in Region 4, then set the limit for SMU 2 ten percent lower.

VARIABLE - NOTE A 10% source limit margin is generally recommended, but this value can be adjusted to meet the requirements of a specific application.

Configure two 2600B SMUs to get the maximum pulsed voltage level possible in Region 4:

40 V with 9 A source limit

SMU 1 configuration (sources one-half of the total pulse voltage):

Source function:

smua.source.func = smua.OUTPUT_DCVOLTS

Source range:

smua.source.rangev = 20

Idle (bias) source level (source level at base of pulse):

smua.source.levelv = -1e-12

VARIABLE - NOTE Source polarity changes incur a 100 µs settling delay. Because the number 0 is treated as a positive value in the 2600B, negative-going pulses with a 0 V bias level require the source to change polarity. To ensure the proper pulse timing of SMU 1 and SMU 2, it is best to eliminate the SMU 1 polarity changes and avoid the associated 100 µs time penalty. The easiest way to do this is set the bias level to a negative value that is significantly less than the programming resolution of the instrument, such as -1e-12. Functionally, this value is the same as zero, but it is mathematically negative, which eliminates the polarity change.

Idle (bias) source limit (source limit at base of pulse):

smua.source.limiti = 1

Pulse source level (source level at top of pulse):

smua.trigger.source.listv({-20})

As explained in the note above, the polarity of SMU 1 is generally the opposite of the voltage polarity across the device. To achieve a positive voltage across the device, program SMU 1 to a negative voltage level. For example, to output 40 V across the device, program SMU 1 to -20 V and SMU 2 to +20 V. To achieve a negative voltage across the device, program SMU 1 to a positive voltage level and SMU 2 to a negative voltage level.

Pulse source limit. SMU 2 controls the source limit for the combined SMUs. Set the current source limit of SMU 1 to the maximum current allowed in Region 4:

smua.trigger.source.limiti = 10

Output-off mode:

smua.source.offmode = smua.OUTPUT_NORMAL

Output-off function:

smua.source.offfunc = smua.OUTPUT_DCVOLTS

Normal output-off current limit:

smua.source.offlimiti = 1e-3 --(default)

SMU 2 configuration (sources one-half of the total pulse voltage):

Source function:

smua.source.func = smua.OUTPUT_DCVOLTS

Source range:

smua.source.rangev = 20

Idle (bias) source level (source level at base of pulse):

smua.source.levelv = 0

Idle (bias) source limit (source limit at base of pulse). This is similar to the pulse source limit. Set the SMU 2 idle source limit ten percent lower than the SMU 1 limit:

smua.source.limiti = 0.9

Pulse source level (source level at top of pulse):

smua.trigger.source.listv({-20})

Pulse source limit. SMU 2 controls the source limit for the combined SMUs. Set the current source limit of SMU 2 ten percent lower than the source limit of SMU 1:

smua.trigger.source.limiti = 9

Output-off mode:

smua.source.offmode = smua.OUTPUT_NORMAL

Output-off function:

smua.source.offfunc = smua.OUTPUT_DCVOLTS

Normal output-off current limit (0.9 mA, which is 10% less than the SMU 1 output-off limit):

smua.source.offlimiti = 0.9e-3

Source voltage with extended current using two 2600B instruments in parallel

This example shows the recommended approach for setting the source and limit ranges and levels when combining a SMU voltage source in parallel with a SMU current source.

Source voltage with extended current using parallel SMUs

The values are based on the current and voltage levels available in Region 4 of a 2601B, 2602B, or 2604B SMU, as shown in the table in Combining SMU outputs. For information about generating pulses with a 2600B, refer to Using timers to perform pulse mode sweeps.

The purpose of this configuration is to supply more current than a single SMU voltage source can provide. In this example, SMU 2 controls the voltage applied to a device-under-test (DUT). At full power, SMU 1 supplies 47% of the current required by the load and SMU 2 supplies 53%. SMU2 sinks excess current from SMU 1 when DUT current draw is less than the maximum current of the SMU combination.

Proper operation of this configuration requires that SMU 1 does not limit the voltage from SMU 2 and that SMU 2 does not limit the current from SMU 1. To accomplish this:

  • Set the voltage source level of SMU 2 ten percent lower than voltage source limit of SMU 1.
  • Set the current source level of SMU 1 ten percent lower than the current source limit of SMU 2.
  • Set the voltage source limit of SMU 1 to the maximum voltage allowed in Region 4.
  • Set the current source limit of SMU 2 to the maximum current allowed in Region 4.

These settings ensure that both SMUs are set to the same source and limit ranges, as recommended.

VARIABLE - NOTE A 10% source limit margin is generally recommended, but this value can be adjusted to meet the requirements of a specific application.

Configure two 2600B SMUs to obtain the maximum pulsed voltage level possible in Region 4:

18 V with 19 A capacity

SMU 1 configuration (supplies additional current that SMU 2 alone cannot provide):

Source function:

smua.source.func = smua.OUTPUT_DCAMPS

Source range:

smua.source.rangei = 10

Idle (bias) source level (source level at base of pulse):

smua.source.leveli = 0

Idle (bias) source limit (source limit at base of pulse):

smua.source.limitv = 6

Pulse source level (source level at top of pulse). Set the pulse source level ten percent lower than the current source limit of SMU 2:

smua.trigger.source.listi({9})

Pulse source limit. SMU 1 voltage source limit must be greater than the maximum voltage supplied by SMU 2. Set the voltage source limit of SMU 1 to the maximum voltage allowed in Region 4:

smua.trigger.source.limitv = 20

Output-off mode:

smua.source.offmode = smua.OUTPUT_NORMAL

Output-off function:

smua.source.offfunc = smua.OUTPUT_DCAMPS

Normal output-off voltage limit (40 V maximum):

smua.source.offlimitv = 20

SMU 2 configuration (SMU 2 controls the voltage applied to the device‑under‑test):

Source function:

smua.source.func = smua.OUTPUT_DCVOLTS

Source range:

smua.source.rangev = 20

Idle (bias) source level (source level at base of pulse):

smua.source.levelv = 0

Idle (bias) source limit (source limit at base of pulse):

smua.source.limiti = 1

Pulse source level (source level at top of pulse). Set the source level of SMU 2 ten percent lower than the voltage source limit of SMU 1:

smua.trigger.source.listv({18})

Pulse source limit. The pulse current source limit of SMU 2 must be greater than the maximum current supplied by SMU 1. Set the current source limit of SMU 2 to the maximum current level allowed in Region 4:

smua.trigger.source.limiti = 10

Output-off mode:

smua.source.offmode = smua.OUTPUT_NORMAL

Output-off function:

smua.source.offfunc = smua.OUTPUT_DCVOLTS

Normal output-off current limit:

smua.source.offlimiti = 1e-3

Combining channels in series to output higher voltage

VARIABLE - WARNING Channels in series can cause hazardous voltage (>30 VRMS, 42 VPEAK) to be present and accessible at the 2600B output connector. A safety shield must be used whenever hazardous voltages will be present in the test circuit. To prevent electrical shock that could cause injury or death, never use the 2600B in a test circuit that may contain hazardous voltages without a properly installed and configured safety shield.

When combining two 2600B SMU voltage sources in series, it is possible for the SMU combination to output hazardous voltage levels even though the individual SMUs cannot.

The following figure illustrates a Model 2602B configured with the two channels connected in series to output up to 80 V (40 V per channel).

Whenever hazardous voltage (>30 VRMS, 42 VPEAK) is output, a safety shield must completely surround the DUT test circuit. When using a metal safety shield, it must be connected to a known protective earth (safety ground) and chassis ground.

Combining channels to output higher voltage

(1) 2602B Channel A: SMU maximum pulse voltage: +40 V
(2) 2602B Channel B: SMU maximum pulse voltage: -40 V
(3) Series SMU maximum pulse voltage (as shown): 80 V

Combining channels in parallel to output higher current

Higher pulse current can be output by connecting two 2600B instrument channels in parallel.

The figure below illustrates the connection scheme of two Model 2602B channels connected in parallel. Two Model 2602B channels can output up to 20 A at 18 V (see Combining SMU outputs). The current delivered to the device under test (DUT) is the sum of the currents output by SMU channels (IT). Combining the two 2600B instrument channels expands the power envelope.

Connecting channels in parallel for higher current

I1 Single SMU maximum pulse current: 10 A
I2 Single SMU maximum pulse current: 10 A
IT Paralleled SMU channels maximum pulse current (as shown): 20 A

Output-off modes

CAUTION Carefully consider and configure the appropriate output-off state, source function, and compliance limits before connecting the 2600B to a device that can deliver energy (for example, other voltage sources, batteries, capacitors, solar cells, or other 2600B instruments). Configure recommended instrument settings before making connections to the device. Failure to consider the output-off state, source, and compliance limits may result in damage to the instrument or to the device under test (DUT).

Turning off the 2600B output may not completely isolate the instrument from the external circuit. You can use the output‑off mode to place the 2600B in a noninteractive state during idle periods. The available output‑off modes are normal, high‑impedance, and zero.

Normal output-off mode

The normal output‑off mode is the default output‑off mode setting. When the source‑measure unit (SMU) is in the normal output‑off mode, you can select either the current or the voltage output‑off function (see Output-off function). You can also specify current and voltage output‑off limits (Output-off limits (compliance)).

When the output is turned off, the output goes to either 0 V or 0 A, depending on the selected output‑off function. Voltage is the default output‑off function.

High-impedance output-off mode

For the high-impedance output-off mode (HI‑Z), the output relay opens when the output is turned off. This disconnects external circuitry from the input and output of the source‑measure unit (SMU). To prevent excessive wear on the output relay, do not use this output-off mode for tests that turn the output off and on frequently.

Zero output-off mode

When the zero output‑off mode is selected, the programmed source remains on the display, but internally, the voltage source is selected and is set to 0 V. Measurements are made and displayed.

When the selected source is voltage, the current compliance setting remains the same as the output‑on value and compliance detection remains active.

When the selected source is current, the current compliance setting is the programmed current source value or 10 percent full-scale of the present current range, whichever is greater.

You can use the 2600B as a current meter when it is in zero output‑off mode because it outputs 0 V but measures current.

To configure the output-off mode from the front panel:

  1. Press the CONFIG key.
  2. Press the OUTPUT ON/OFF control.
  3. Select OFF-STATE.
  4. Select MODE.
  5. Select the output-off mode: HI-Z (high‑impedance), NORMAL, or ZERO.
  6. Press the EXIT key to return to the normal display.

To select the normal output-off mode over a remote interface:*

smua.source.offmode = smua.OUTPUT_NORMAL

To select the high-impedance output-off mode over a remote interface:*

smua.source.offmode = smua.OUTPUT_HIGH_Z

To select the zero output-off mode over a remote interface:*

smua.source.offmode = smua.OUTPUT_ZERO

* smuX can be smua for channel A or smub for channel B

Output-off function

This setting is used only when the output is turned off and the 2600B is set to the normal output‑off mode (smuX.source.offmode = smuX.OUTPUT_NORMAL).

You can set the output-off function to CURRENT or VOLTAGE through the CONFIG menu on the front panel, or by using the smuX.source.offfunc attribute from a remote interface. VOLTAGE is the default output‑off function.

When the output is turned off and the selected output‑off function is VOLTAGE (smuX.source.offfunc = smuX.OUTPUT_DCVOLTS):

  • The source‑measure unit (SMU) sources 0 V.
  • The current limit is set by the smuX.source.offlimiti attribute (default 1 mA).

When the output is turned off and the selected output‑off function is CURRENT (smuX.source.offfunc = smuX.OUTPUT_DCAMPS):

  • The SMU sources 0 A.
  • The voltage limit is set by the smuX.source.offlimitv attribute (default 40 V).

When the output-off function is set to either voltage or current, the SMU may source or sink a very small amount of power. In most cases, this source or sink power level is insignificant.

Selecting the output-off function

NOTE This setting is used only when the output is turned off and the source‑measure unit (SMU) is in NORMAL output‑off mode.

To configure the output-off function from the front panel:

  1. Press the CONFIG key.
  2. Press the OUTPUT ON/OFF control.
  3. Select OFF-STATE and then select FUNCTION.
  4. Select CURRENT or VOLTAGE.
  5. Press the EXIT key to return to the normal display.

To configure the output-off function remotely:

To set 0 V output with current limit set by the smuX.source.offlimiti attribute:*

smuX.source.offfunc = smuX.OUTPUT_DCVOLTS

To set 0 A output with voltage limit set by the smuX.source.offlimitv attribute:*

smuX.source.offfunc = smuX.OUTPUT_DCAMPS

* smuX can be smua for channel A or smub for channel B

Output-off limits (compliance)

You can set output-off limits (compliance) for the current and voltage output‑off functions using the CONFIG menu on the 2600B front panel, or by setting the smuX.source.offlimitY attribute from a remote interface. The output‑off limits only apply when the output-off mode is normal.

Setting output-off limits

Setting the output‑off limit for CURRENT (smuX.source.offlimiti) specifies the current limit for the voltage source; setting the output‑off limit for VOLTAGE (smuX.source.offlimitv) specifies the voltage limit for the current source.

To configure the output-off limits from the front panel:

  1. Press the CONFIG key.
  2. Press the OUTPUT ON/OFF control.
  3. Select OFF-STATE and then select LIMIT.
  4. Select CURRENT or VOLTAGE.
  5. Set the limit value and then press the ENTER key or the navigation wheel.
  6. Press the EXIT key to return to the normal display.

To set the current limit in NORMAL output‑off mode remotely:*

smuX.source.offlimiti = iValue

To set the voltage limit in NORMAL output‑off mode remotely:*

smuX.source.offlimitv = vValue

* smuX can be smua for channel A or smub for channel B

Remote programming output-off states quick reference

The content of the following table is a quick reference of commands for programming output-off states from a remote interface.

Output-off state programming quick reference

Command*

Description

smuX.source.offmode = smua.OUTPUT_NORMAL

Selects normal output‑off mode.

smuX.source.offmode = smua.OUTPUT_HIGH_Z

Selects high‑impedance output‑off mode.

smuX.source.offmode = smua.OUTPUT_ZERO

Selects zero output-off mode.

smuX.source.offfunc = smua.OUTPUT_DCVOLTS

Sets 0 V output with current limit specified by the smua.source.offlimiti attribute.

smuX.source.offfunc = smua.OUTPUT_DCAMPS

Sets 0 A output with voltage limit specified by the smua.source.offlimitv attribute.

smuX.source.offlimiti = iValue

Sets current limit in normal output‑off mode.

smuX.source.offlimitv = vValue

Sets voltage limit in normal output‑off mode.

* smuX can be smua for channel A or smub for channel B

Range

The selected measurement range affects the accuracy of the measurements and the maximum signal that can be measured. If the range is changed, the front‑panel display may contain dashes instead of a reading (for example, --.---- mA). This indicates that no measurement was made using the range that is presently selected. To update the displayed reading, trigger a measurement (if in local control, press the TRIG key).

Available ranges

The following table lists the available source and measurement ranges for the 2600B.

2601B, 2602B, or 2604B

2611B, 2612B, or 2614B

2634B, 2635B, or 2636B

Voltage ranges

Current ranges

Voltage ranges

Current ranges

Voltage ranges

Current ranges

100 mV

100 nA

200 mV

100 nA

200 mV

100 pA2,3

1 V

1 µA

2 V

1 µA

2 V

1 nA

6 V

10 µA

20 V

10 µA

20 V

10 nA

40 V

100 µA

200 V

100 µA

200 V

100 nA

 

1 mA

 

1 mA

 

1 µA

 

10 mA

 

10 mA

 

10 µA

 

100 mA

 

100 mA

 

100 µA

 

1 A

 

1 A

 

1 mA

 

3 A

 

1.5 A

 

10 mA

 

 

 

10 A1

 

100 mA

 

 

 

 

 

1 A

 

 

 

 

 

1.5 A

1. The 10 A range is only available in pulse mode.

2. The 100 pA range is only for measurements.

3. The 100 pA measurement range is not available on the 2634B.

Maximum source values and readings

The full-scale output for each voltage and current source range is 101 percent of the selected range, but the full-scale measurement is 102 percent of the range. For example, ±1.01 A is the full-scale source value for the 1 A range, and ±102 mA is the full-scale reading for the 100 mA measurement range. Input levels that exceed the maximum levels cause the overflow message to be displayed. The instrument autoranges at 100 percent of the range.

Measure autodelay

The measure delay is a specific delay that is applied before each measurement is made. This delay is disabled by default (measurements are made immediately). You can change the default delay by setting the smuX.measure.delay attribute either to a specific value or to an autodelay setting (set smuX.measure.delay = smuX.DELAY_AUTO). If the measure delay is set to the autodelay setting, a range-dependent delay is applied each time the instrument performs a current measurement. This delay also happens for the measurement that is made after changing current ranges during an autoranged measurement. The default measurement delay varies by model.

You can increase or decrease the autodelay by changing the delay factor (for example, to reduce the delay across all ranges by half, set smuX.measure.delayfactor = 0.5). For additional information, refer to smuX.measure.delayfactor.

Ranging limitations

If the source and measure functions are different (such as source V and measure I, or source I and measure V), you can set source and measure ranges separately. If both the source and the measure functions are the same, the measure range is locked to the source range. In addition, there are other limitations.

  • 2601B, 2602B, 2604B: With the 40 V V‑Source range selected, the highest current measurement range is 1 A. With the 3 A I‑Source range selected, the highest voltage measurement range is 6 V. Refer to Operating boundaries for power derating information.
  • 2611B, 2612B, 2614B, 2634B, 2635B, 2636B: With the 200 V V-Source range selected, the highest current measurement range is 100 mA. With I-Source ranges above 100 mA selected, the highest voltage measurement range is 20 V. Refer to Operating boundaries for power derating information.

Manual ranging

Use the range keys, 3. Range keys (1) and 3. Range keys (3) , to select a fixed range:

  • To set the source range, press the SRC key, and then use the RANGE keys to set the range.
  • To set the measure range, select the single-channel display mode (2602B, 2604B, 2612B, 2614B, 2634B, or 2636B), and then use the RANGE keys to set the range.

If the instrument displays the overflow message on a particular range, select a higher range until an on-range reading is displayed. To ensure the best accuracy and resolution, use the lowest range possible that does not cause an overflow.

Autoranging

To use automatic source ranging, press SRC then the AUTO range key.

To use automatic measure ranging, press the MEAS key followed by the AUTO range key. The AUTO indicator turns on when source or measure autoranging is selected.

When autorange is selected, the instrument automatically sets the best range to source or measure the applied signal. The instrument increases the range to 100 percent of the present range.

VARIABLE - NOTE When you change a source value, source autoranging is automatically turned off and remains off until you re‑enable it.

Low range limits

The low range limit sets the lowest range that the 2600B uses when autoranging is enabled. This feature is useful for minimizing autorange settling times when measurements require numerous range changes.

To individually set low range limits for Source V, Source I, Measure V, and Measure I:

  1. Press the CONFIG key, then press either the SRC key (for source) or the MEAS key (for measure).
  2. Select voltage or current source, or measure, as appropriate, and then press the ENTER key or the navigation wheel.
  3. Select LOWRANGE, and then press the ENTER key or the navigation wheel.
  4. Set the low range to the appropriate setting, and then press the ENTER key or the navigation wheel.
  5. Press the EXIT (LOCAL) key twice to return to the main display.

Range considerations

The source range and measure range settings can interact depending on the source function. Additionally, the output state (on or off) can affect how the range is set. The following table describes these interactions.

If...

Then...

Notes

The source function is the same as the measurement function (for example, sourcing voltage and measuring voltage)

The measurement range is locked to be the same as the source range.

The setting for the voltage measure range is retained and used when the source function is changed to current.

2600B example:

smua.source.func = smua.OUTPUT_DCVOLTS

smua.source.rangev = 1

smua.measure.rangev = 10

-- Prints 1, the source range

print(smua.measure.rangev)

smua.source.func = smua.OUTPUT_DCAMPS

-- Prints 10, the measure range

print(smua.measure.rangev)

A source or measurement range for a function is explicitly set

Autoranging for that function is disabled.

Autoranging is controlled separately for each source and measurement function: Source voltage, source current, measure voltage, and measure current. Autoranging is enabled for all measurement functions by default.

Source autoranging is enabled

The output level controls the range.

Querying the range after the level is set returns the range the instrument chose as appropriate.

You send a source level that is out of range while autorange is off

The instrument does not return an error until the output is turned on.

While the output is turned off, the display shows a series of question marks. For example, ???.???mA is displayed for the 100 mA range.

The display also shows a series of question marks when pulsing in the extended operating area on the 10 A range.

Measure autoranging is enabled

The measure range changes only when a measurement is made.

Querying the range after the measurement is made returns the range that the instrument chose.

Range programming

Range commands

The following tables summarize commands necessary to control measure and source ranges. See the TSP command reference for more details about these commands.

Measure range commands*

Command**

Description

smuX.measure.autorangei = smuX.AUTORANGE_ON

Enable current measure autorange.

smuX.measure.autorangei = smuX.AUTORANGE_OFF

Disable current measure autorange.

smuX.measure.autorangev = smuX.AUTORANGE_ON

Enable voltage measure autorange.

smuX.measure.autorangev = smuX.AUTORANGE_OFF

Disable voltage measure autorange.

smuX.measure.lowrangei = lowrange

Set lowest current measure range for autorange.

smuX.measure.lowrangev = lowrange

Set lowest voltage measure range for autorange.

smuX.measure.rangei = rangeval

Select manual current measure range.

smuX.measure.rangev = rangeval

Select manual voltage measure range.

* See Available ranges

** smuX can be smua for channel A or smub for channel B

Source range and limit commands*

Command**

Description

smuX.source.autorangei = smuX.AUTORANGE_ON

Enable current source autorange.

smuX.source.autorangei = smuX.AUTORANGE_OFF

Disable current source autorange.

smuX.source.autorangev = smuX.AUTORANGE_ON

Enable voltage source autorange.

smuX.source.autorangev = smuX.AUTORANGE_OFF

Disable voltage source autorange.

smuX.source.limiti = level

Set voltage source current limit (compliance).

smuX.source.limitv = level

Set current source voltage limit (compliance).

smuX.source.limitp = level

Set source power limit (compliance).

smuX.source.lowrangei = lowrange

Set lowest current source range for autorange.

smuX.source.lowrangev = lowrange

Set lowest voltage source range for autorange.

smuX.source.rangei = rangeval

Select manual current source range.

smuX.source.rangev = rangeval

Select manual voltage source range.

* See Available ranges

** smuX can be smua for channel A or smub for channel B

Range programming example

The programming example below illustrates how to control both source and measure ranges. The 2600B is set up as follows:

  • Voltage source range: Autorange
  • Current measure range: 10 mA
  • Voltage source current limit: 10 mA

-- Restore 2600B defaults.

smua.reset()

-- Set V source range to autorange.

smua.source.autorangev = smua.AUTORANGE_ON

-- Select 10 mA measure range.

smua.measure.rangei = 10e-3

-- Set limit level to 10 mA.

smua.source.limiti = 10e-3

Digits

The display resolution of the measured reading depends on the DIGITS setting. The default display resolution setting is 6.5 digits. The DIGITS setting selects display resolution for all measurement functions.

The DIGITS setting has no effect on the format of readings returned by a print() command over a remote interface. To adjust the format of remote interface readings, see format.asciiprecision.

The number of displayed digits does not affect accuracy or speed. Accuracy and speed are controlled by the SPEED setting (see Speed).

Setting display resolution from the front panel

To set the display resolution, press the DIGITS key until the correct number of digits is displayed. Available display resolutions are 4.5, 5.5, and 6.5 digits.

VARIABLE - NOTE For 2602B, 2604B, 2612B, 2614B, 2634B, and 2636B when they are in dual-channel display mode, the maximum display resolution is 4.5 digits. Pressing the DIGITS key displays a message that advises you to change the display to the indicated channel. This message is also displayed in single-channel display mode when you press the DIGITS key for the channel that is not being displayed.

Setting display resolution from a remote interface

The following table summarizes use of the display.smuX.digits command. See the TSP command reference for more information.

Digits commands

Command*

Description

display.smuX.digits = display.DIGITS_4_5

Set the display to 4.5 digits.

display.smuX.digits = display.DIGITS_5_5

Set the display to 5.5 digits.

display.smuX.digits = display.DIGITS_6_5

Set the display to 6.5 digits.

* smuX can be smua for channel A or smub for channel B

Digits programming example

-- Select 5.5 digits.

display.smua.digits = display.DIGITS_5_5

Speed

The SPEED key sets the integration time, or measurement aperture, of the analog to digital (A/D) converter (period the input signal is measured). The integration time affects the usable digits, the amount of reading noise, and the reading rate of the instrument. The integration time is specified in parameters based on the number of power line cycles (NPLC), where 1 PLC for 60 Hz is 16.67 ms (1/60) and 1 PLC for 50 Hz is 20 ms (1/50).

In general, the fastest integration time (0.001 PLC) results in the fastest reading rate, but also causes increased reading noise and fewer usable digits. The slowest integration time (25 PLC) provides the best common-mode and normal-mode noise rejection but has the slowest reading rate. Settings between the fastest and slowest integration times are a compromise between speed and noise. The default power‑on speed setting is NORMAL (1 PLC).

VARIABLE - NOTE The SPEED setting affects all measurement functions. After setting speed, display resolution can be changed using the DIGITS key. For the 2602B, 2604B, 2612B, 2614B, 2634B, or 2636B in single-channel display mode, if you press the SPEED key for the channel that is not being displayed, it results in a display message to change to the other channel before setting the speed.

Setting the speed from the front panel

Press the SPEED key (or use the CONFIG menu) to display the following menu items:

  • FAST: Sets the measurement speed to 0.01 PLC (fast performance, but accuracy is reduced).
  • MED: Sets the measurement speed to 0.10 PLC (speed and accuracy are balanced).
  • NORMAL: Sets the measurement speed to 1.00 PLC (speed and accuracy are balanced).
  • HI-ACCURACY: Sets the measurement speed to 10.00 PLC (high accuracy, but speed is reduced).
  • OTHER: Sets the measurement speed to any value from 0.001 PLC to 25 PLC.

Setting the speed using the remote interface

The following table shows the command that controls speed. See the TSP command reference for more information.

Speed command

Command*

Description

smuX.measure.nplc = nplc

Sets the speed of the A/D converter (nplc = 0.001 to 25).

* smuX can be smua for channel A or smub for channel B

Speed programming example

Use the NPLC command to set the speed of the integrating analog-to-digital converter (ADC). The programming example below illustrates how to set the speed to 10 PLC:

-- Set NPLC to 10.

smua.measure.nplc = 10

Sweep operation

The 2600B can generate DC and pulsed sweeps to perform source‑only sweeps, source‑and‑measure sweeps, or measure‑only sweeps. The following information describes the sweep types of DC and pulsed linear staircase, DC and pulsed logarithmic staircase, and DC and pulsed list.

DC and pulsed linear staircase sweeps: With this type of sweep, the voltage or current increases or decreases in fixed steps, beginning with a start voltage or current and ending with a stop voltage or current. The figure below shows an increasing linear staircase sweep and a pulsed staircase sweep. Pulsed linear staircase sweeps function the same way that DC linear staircase sweeps function, except that pulsed linear staircase sweeps return to the idle level between pulses.

DC and pulsed linear staircase sweeps

DC and pulsed logarithmic staircase sweeps: In this type of sweep, the current or voltage increases or decreases geometrically, beginning with a start voltage or current and ending with a stop voltage or current. The figure below shows an increasing logarithmic staircase sweep and a pulsed logarithmic staircase sweep. Pulsed logarithmic staircase sweeps function the same way that DC logarithmic staircase sweeps function, except that pulsed logarithmic staircase sweeps return to the idle level between pulses.

DC and pulsed logarithmic staircase sweeps

DC and pulsed list sweeps: The list sweep allows you to program arbitrary sweep steps anywhere within the output voltage or current range of the 2600B. The following figure shows a list sweep with arbitrary steps and a pulsed list sweep. Pulsed list sweeps function the same way that DC list sweeps function, except that pulsed list sweeps return to the idle level between pulses.

DC and pulsed list sweeps

Sweep characteristics

VARIABLE - NOTE For any of the sweep types, program a pulse sweep by configuring the end pulse action. Refer to Pulse mode sweeps for more information.

Linear staircase sweeps

As shown below, this sweep type steps from a start voltage or current value to an ending (stop) value. When enabled, a measurement is made at each point after the source and measurement settling time.

Linear staircase sweep

A linear staircase sweep is configured using a start level, a stop level, and the total number of points, including the start and stop points. The step size is determined by the start and stop levels, and the number of sweep points:

step = (stop - start) / (points - 1)

VARIABLE - NOTE The number of sweep steps actually performed is determined by the trigger count. Refer to Triggering for more information.

The sweep can be either positive-going or negative-going, depending on the relative values of the start and stop parameters. When the sweep starts, the output goes to the start source level. The output then changes in equal steps until the stop level is reached. If the trigger count is greater than the number of points specified, the SMU starts over at the beginning value.

To configure a linear staircase sweep, use the smuX.trigger.source.linearY() command. This function configures the source values the SMU outputs when performing a linear sweep. After configuring the sweep, you must also enable the source action by setting the following attribute:*

smuX.trigger.source.action

* smuX can be smua for channel A or smub for channel B

Example:

-- Configure a sweep from 0 to 10 V in 1 V steps.

smua.trigger.source.linearv(0, 10, 11)

-- Enable the source action.

smua.trigger.source.action = smua.ENABLE

For more information, see smuX.trigger.source.linearY().

Logarithmic staircase sweeps

This type of sweep is similar to the linear staircase sweep. The steps, however, are done on a logarithmic scale.

Like a linear staircase sweep, logarithmic sweeps are configured using a start level, a stop level, and the number of points. The step size is determined by the start and stop levels, and the number of sweep points. However, in a logarithmic sweep, the step size increases or decreases exponentially. To create an increasing logarithmic sweep, set the stop value to be greater than the start value. To create a decreasing logarithmic sweep, set the stop value to be less than the start value. When enabled, a measurement is made at each step after source and measurement settling time. An asymptote can also be used to control the inflection of a sweep.

VARIABLE - NOTE The number of sweep steps actually performed is determined by the trigger count. See Triggering for more information.

The formula for a logarithmic sweep is:

vi = A + kbi

Where:

vi

=

The source value at source point i

i

=

The index of points in the sweep (ranges from 0 to N - 1), where N is the number of points in the sweep

k

=

The initial source value as an offset from the asymptote

b

=

The step size ratio

A

=

The asymptote value

The asymptote is used to change the inflection of the sweep curve and allow it to sweep through zero. The following figures depict the effect of the asymptote on the inflection of the sweep curve.

Increasing logarithmic sweep

Decreasing logarithmic sweep

Solving for k and b provides the following formulas:

Logarithmic staircase sweeps equations

Where:

Vend

= The source value at the end point

Vstart

= The source value at the start point

N

= The number of points in the sweep

A

= The asymptote value

VARIABLE - NOTE The number of points in a sweep is one greater than the number of steps in the sweep.

The following figure is an example of a five-point logarithmic sweep from 1 V to 10 V.

Logarithmic staircase sweep (1 V to 10 V, five steps)

In this example:

A = 0, Vstart = 1, Vend = 10, N = 5

Using the formula above, k = 1

Step size (b) for the sweep in the above figure is calculated as follows:

Logarithmic sweep step size equation

Therefore, b = 10(log step size) = 1.7783

The log steps for this sweep are listed in the table below.

Logarithmic sweep points

Source point (N)

Source level (V)

Step number (i)

1

1

0

2

1.7783

1

3

3.1623

2

4

5.6234

3

5

10

4

When this sweep starts, the output goes to the start level (1 V) and sweeps through the symmetrical log points.

To configure a logarithmic staircase sweep, use the smuX.trigger.source.logY()function. This function configures the source values the source-measure unit (SMU) outputs when performing a logarithmic sweep. After configuring the sweep, you must also enable the source action by setting the smuX.trigger.source.action attribute.

Example:

-- Configure a sweep from 1 to 10 V in 10 steps with an asymptote of 0 V.

smua.trigger.source.logv(1, 10, 11, 0)

-- Enable the source action.

smua.trigger.source.action = smua.ENABLE

For more information, see smuX.trigger.source.logY().

List sweeps

Use a list sweep to configure a sweep with arbitrary steps. When enabled, a measurement is made at each point after source and measurement settling time.

To configure a list sweep, use the smuX.trigger.source.listY()function. This function configures the source values that the source‑measure unit (SMU) outputs when performing a list sweep. After configuring the sweep, you must also enable the source action by setting the smuX.trigger.source.action attribute.

Example:

-- Sweep through 3 V, 1 V, 4 V, 5 V, and 2 V.

smua.trigger.source.listv({3, 1, 4, 5, 2})

-- Enable the source action.

smua.trigger.source.action = smua.ENABLE

When the sweep is started, the output level goes to the first point in the sweep. The sweep continues through the steps in the order that they were programmed.

The following figure shows a different example of a list sweep with six measurement points. When the sweep starts, the current or voltage goes to the first point in the sweep. The instrument cycles through the sweep points in the programmed order.

List sweep example

Pulse mode sweeps

To create a pulse sweep for any of the sweep types, configure the end pulse action.

To configure a pulse sweep for source‑measure unit (SMU) A, send:

smua.trigger.endpulse.action = smua.SOURCE_IDLE

To configure a DC sweep for SMU A, send:

smua.trigger.endpulse.action = smua.SOURCE_HOLD

Timers must be used to configure the pulse width and period. Refer to Using timers to perform pulsed sweeps for details.

The pulse width is managed by controlling the duration between the source stimulus event and the end pulse stimulus event. A latency exists between these stimulus events and their resulting source level transitions. This trigger latency can vary based on factors such as the source range and the electrical characteristics of the device under test (DUT).

The figure below shows the source and end pulse stimulus events in relationship to the pulse (see Triggering for information on stimulus events). Any change in ?t results in a corresponding change in the pulse width.

Pulse width control

Pulse duty cycle

Duty cycle is the percentage of time during the pulse period that the output is on. It is calculated as follows:

Duty cycle = Pulse width / (Pulse width + Off time)

For example, if the pulse width is 10 ms and the off time is 90 ms, the duty cycle is calculated as follows:

Duty cycle

= 10 ms / (10 ms + 90 ms)

 

= 10 ms / 100 ms

 

= 0.10

 

= 10 percent

See Maximum duty cycle equation for additional information on calculating the maximum duty cycle for a SMU.

Pulsing in the extended operating area

Pulse sweeps can be performed outside of the standard operating area by setting the appropriate compliance level. Review the specifications for the 2600B to determine the maximum current and voltage values available in pulse mode. When pulsing in the extended operating area, the source‑measure unit (SMU) forces the pulse to end early if the pulse width exceeds the maximum value. It also delays the next source action as necessary to stay within the duty cycle capabilities of the SMU. The following figure and table illustrate the pulse regions for a SMU when pulsing in the extended operating area. Refer to the 2600B specifications on tek.com/keithley for the latest pulse width and duty cycle information.

Pulsing in the extended operating area

Pulse region specification

Region (quadrant diagram)

Region maximum

Maximum pulse width

Maximum duty cycle

1

1 A at 40 V

DC, no limit

100%

1

3 A at 6 V

DC, no limit

100%

2

1.5 A at 40 V

100 ms

25%

3

5 A at 35 V

4 ms

4%

4

10 A at 20 V

1.8 ms

1%

5

5 A at 6 V

10 ms

10%

Configuring and running sweeps

Use the following topics to configure and run a sweep.

Configuring compliance limits remotely

You can configure voltage and current limits using the smuX.trigger.source.limitY attribute, which sets the sweep source limits. For example, to set the SMU A sweep limit to 10 V, send the command:

smua.trigger.source.limitv = 10

Configuring end sweep actions remotely

Use the end sweep action to configure the source action at the end of the sweep. You can program the source‑measure unit (SMU) to return to the idle source level or hold the last value of the sweep. Configure the end sweep action by setting the smuX.trigger.endsweep.action attribute. For example, execute the following command to configure SMU A to return the source to the idle source level at the end of a sweep:

smua.trigger.endsweep.action = smua.SOURCE_IDLE

Configuring measurements during a sweep

You can make measurements during a sweep using the smuX.trigger.measure.Y() function. When sweeps are run, measurements are stored in the specified reading buffer for later recall. You can specify which reading buffer stores the readings. For example, to store the voltage readings made during the sweep, send the commands:

smua.trigger.measure.v(vbuffername)

smua.trigger.measure.action = smua.ENABLE

To recall sweep data using the front panel:

  1. Press the RECALL key.
  2. Select DATA or STATISTICS.
  3. If you selected DATA: Select the buffer and use the navigation wheel or cursor keys to choose reading numbers to display.
  4. If you selected STATISTICS: Select the buffer and use the navigation wheel or cursor keys to choose MEAN, STD DEV, SAMPLE SIZE, MINIMUM, MAXIMUM, or PK-PK.

VARIABLE - NOTE Recalling readings from the reading buffer using the front panel can be done only if one of the dedicated reading buffers is used to store the sweep data.

To recall sweep data using remote commands:

Use the printbuffer() function to request buffer readings.

See Recalling readings for details about recalling data from the buffer.

Source and measurement delays

Whenever the source‑measure unit (SMU) outputs a source value in a sweep, it also applies the programmed source delay. The default source delay is zero (0) seconds. Set an additional source delay using the smuX.source.delay attribute.

Whenever the SMU makes a measurement in a sweep, it also applies any configured measurement delays. Use the smuX.measure.delay attribute to program a specific measurement delay. The default measurement delay varies by measure range.

Initiating and running sweeps

To run a sweep, you must configure the number of sweep points to output and the number of sweeps to perform. See Triggering for more information.

Examples:

To start a sweep, use the smuX.trigger.initiate() function. Sweeps are overlapped operations, so you can use the waitcomplete() function to suspend further operation until the sweep is complete.

To sweep 15 source points:

smua.trigger.count = 15

To perform eight sweeps:

smua.trigger.arm.count = 8

Aborting a sweep

You can use the smuX.abort() function to terminate all overlapped operations on a source‑measure unit (SMU), including sweeps. It returns the SMU to the idle state of the remote trigger model. See Triggering for more information.

Sweeping using factory scripts

Factory script functions that perform linear staircase, logarithmic staircase, and list sweeps are described in Factory scripts. You can use the factory script functions to execute simple sweeps or use them as examples for programming your own custom sweeps.

To run a sweep from the front panel:

  1. Press the LOAD key, and then select FACTORY.
  2. Select the name of the test to run.
  3. Press the RUN key. Follow the display prompts to complete the test.

See Factory scripts for more information about using factory scripts.

Press the RECALL key to access sweep data stored in dedicated reading buffer 1. See Reading buffers for more details about the buffer.

Sweep programming examples

The following topics provide procedures for programming and running a sweep. Each of these procedures includes commands for a typical sweep example. The following table summarizes parameters for each of these examples.

VARIABLE - NOTE You can retrieve the source code for the factory scripts by using the scriptVar.list() or scriptVar.source commands.

Sweep example parameters

Sweep type

Parameters for sweep examples

Linear staircase sweep

Start current: 1 mA

 

Stop current: 10 mA

 

Settling time: 0.1 s

 

Number of points: 10

Pulse current sweep

Bias current: 1 mA

 

On current: 10 mA

 

Pulse on time: 10 ms

 

Pulse off time: 50 ms

 

Number of points: 10

List sweep

Points: 3 V, 1 V, 4 V, 5 V, 2 V

 

Settling time 0.1 s

 

Number of points: 5

Linear staircase sweep example

The programming example below illustrates a staircase sweep.

-- Restore 2600B defaults.

smua.reset()

-- Set compliance to 1 V.

smua.source.limitv = 1

1. Configure source functions.

Restores defaults and sets the compliance limit to 1 V.

-- Linear staircase sweep

-- 1 mA to 10 mA, 0.1 second delay,

-- 10 points.

SweepILinMeasureV(smua, 1e-3, 10e-3, 0.1, 10)

2. Configure and execute the sweep.

Configures a linear staircase current sweep from 1 mA to 10 mA with 10 points and a 0.1 second settling time.

printbuffer(1, 10, smua.nvbuffer1.readings)

3. Request readings.

Requests readings from buffer 1.

Pulse current sweep example

The programming example below illustrates a pulse sweep.

-- Restore 2600B defaults.

smua.reset()

-- Set compliance to 10 V.

smua.source.limitv = 10

1. Configure source functions.

Restores defaults and sets the compliance to 10 V.

-- Pulse current sweep, 1 mA bias,

-- 10 mA level, 10 ms pulse on,

-- 50 ms pulse off, 10 cycles.

PulseIMeasureV(smua, 1e-3, 10e-3, 20e-3, 50e-3, 10)

2. Configure and execute the sweep.

Configures a 10 mA pulse current sweep with a 10 ms pulse on time, a 50 ms pulse off time, and 10 pulse-measure cycles.

printbuffer(1, 10, smua.nvbuffer1.readings)

 

3. Request readings.

Requests readings from buffer 1.

List sweep example

The programming example below illustrates a list sweep.

-- Restore 2600B defaults.

smua.reset()

-- Set compliance to 10 mA.

smua.source.limiti = 10e-3

1. Configure source functions.

Restores defaults and set the compliance to 10 mA.

-- Define voltage list.

vlist = {3, 1, 4, 5, 2}

-- List sweep, channel A, 3 V, 1 V, 4 V,

-- 5 V, 2 V steps, 0.1 s delay, 5 points.

SweepVListMeasureI(smua, vlist, 0.1, 5)

2. Configure and execute the sweep.

Configures a list sweep with 3 V, 1 V, 4 V, 5 V, and 2 V points using a 0.1 second settling time.

printbuffer(1, 5, smua.nvbuffer1.readings)

3. Request readings.

Requests readings from buffer 1.

Relative offset

When making measurements, you may need to subtract an offset value from a measurement.

The relative offset feature subtracts a set value or a baseline reading from measurement readings. When you enable relative offset, all measurements are recorded as the difference between the actual measured value and the relative offset value. The formula to calculate the offset value is:

Displayed value = Actual measured value - Relative offset value

When a relative offset value is established for a measure function, the value is the same for all ranges for that measure function. For example, if 0.5 A is set as a relative offset value on the 1 A range, the relative offset value is also 0.5 A on the lower current ranges. Selecting a range that cannot accommodate the relative offset value does not cause an overflow condition, but it also does not increase the maximum allowable input for that range. For example, on the 1 A range, the 2600B still overflows for an input of more than 1.02 A.

When relative offset is enabled, the REL indicator turns on. Changing measurement functions changes the relative offset value to the established relative offset value and state for that measurement function.

Enabling and disabling relative offset from the front panel

To enable and use the relative offset feature, press the REL key on the front panel. The reading (which becomes the relative offset value) is subtracted from itself, causing the SMU to display a zero value. The reading is stored for use with subsequent measurements. Press the REL key a second time to disable the relative offset.

Defining a relative offset value from the front panel

You can establish a relative offset value for the selected measurement function.

To establish a relative offset value from the front panel:

  1. Press the CONFIG key and then the REL key.
  2. Select the measurement function (CURRENT, VOLTAGE, OHMS, or WATTS).
  3. Press ENTER or the navigation wheel. The present relative offset value is displayed.
  4. Set the relative offset value.
  5. With the relative offset value displayed, press the ENTER key or the navigation wheel, and then press the EXIT (LOCAL) key to back out of the menu structure.

Relative offset commands

Relative offset commands are summarized in the following table.

Relative offset commands

Command*

Description

To set relative offset values:

 

smuX.measure.rel.leveli = relval

Set current relative offset value

smuX.measure.rel.levelp = relval

Set power relative offset value

smuX.measure.rel.levelr = relval

Set resistance relative offset value

smuX.measure.rel.levelv = relval

Set voltage relative offset value

To enable or disable relative offset:

 

smuX.measure.rel.enablei = smuX.REL_OFF

Disable current relative offset

smuX.measure.rel.enablep = smuX.REL_OFF

Disable power relative offset

smuX.measure.rel.enabler = smuX.REL_OFF

Disable resistance relative offset

smuX.measure.rel.enablev = smuX.REL_OFF

Disable voltage relative offset

smuX.measure.rel.enablei = smuX.REL_ON

Enable current relative offset

smuX.measure.rel.enablep = smuX.REL_ON

Enable power relative offset

smuX.measure.rel.enabler = smuX.REL_ON

Enable resistance relative offset

smuX.measure.rel.enablev = smuX.REL_ON

Enable voltage relative offset

* smuX can be smua for channel A or smub for channel B

Relative offset programming example

The programming example below performs a current measurement, uses it as the relative offset value, and enables current relative offset:

-- Measure and set present current value as the relative offset.

smua.measure.rel.leveli = smua.measure.i()

-- Enable current relative offset.

smua.measure.rel.enablei = smua.REL_ON

Filters

The filter feature lets you set the filter response to stabilize noisy measurements. The 2600B uses a digital filter, which is based on reading conversions. The displayed, stored, or transmitted reading is calculated using one or more reading conversions (from 1 to 100).

Filter types

The 2600B provides two averaging filters and a median filter. The power‑on default is the repeating filter.

The averaging filters are repeating and moving, as shown in the following figure. For the repeating filter, the stack (filter count) is filled, and the conversions are averaged to yield a reading. The stack is then cleared, and the process starts over.

Repeating and moving average filters

The moving filter uses a first-in, first-out stack. When the stack (filter count) becomes full, the measurement conversions are averaged, yielding a reading. For each subsequent conversion placed into the stack, the oldest conversion is discarded. The stack is averaged again, yielding a new reading.

The median filter is used to pass the reading that is nearest to the middle from a group of readings that are arranged according to size. The median filter uses a first-in, first-out stack similar to the moving filter. For each subsequent conversion placed into the stack, the oldest conversion is discarded. The median is then redetermined.

Median filter

When a moving filter or a median filter is first enabled, the stack is empty. The first reading conversion is placed in the stack and is then copied to the other stack locations to fill it. Thus, the first filtered reading is the same as the first reading conversion. The normal moving filter process continues. A true average or median reading is only yielded when the stack is filled with new reading conversions (no copies in the stack). For example, in the figure for the moving filter, it makes ten filtered readings to fill the stack with new reading conversions. The first nine filtered readings are calculated using copied reading conversions.

Response time

The filter parameters have speed and accuracy trade-offs for the time needed to display, store, or output a filtered reading. These affect the number of reading conversions for speed versus accuracy and response to input signal changes.

The filter type and count affect the overall reading speed. The moving average filter is much faster than the repeat average filter because the instrument does not have to refill the filter stack for each reading. Also, the number of readings averaged affects reading speed; as the number of readings averaged increases, the reading speed decreases.

Enabling the filter from the front panel

The filter is enabled by pressing the FILTER key on the front panel. The FILT indicator is on while the filter is enabled. Pressing FILTER a second time disables the filter.

Configuring the filter from the front panel

Filter type and count are configured from the filter configuration menu on the front panel. The same filter configuration is used for all measurement functions.

To configure the filter:

  1. Press the CONFIG key and then the FILTER key.
  2. Select TYPE, and then select the filter type: AVERAGE or MEDIAN.
    • AVERAGE: Use this menu item to select an averaging filter, then select the averaging filter type: MOVING or REPEAT.
    • MEDIAN: Use this menu item to select a median filter. The MOVING filter type is the only option.
  3. Select COUNT, and then specify the filter count (1 to 100 readings).

Setting the filter using a remote interface

The following table summarizes the filter commands. See the TSP command reference for details about commands.

Filter commands

Command*

Description

smuX.measure.filter.count = count

Set filter count (1 to 100)

smuX.measure.filter.enable = smuX.FILTER_ON

Enable filter

smuX.measure.filter.enable = smuX.FILTER_OFF

Disable filter

smuX.measure.filter.type = smuX.FILTER_MEDIAN

Select median filter type

smuX.measure.filter.type = smuX.FILTER_MOVING_AVG

Select moving average filter type

smuX.measure.filter.type = smuX.FILTER_REPEAT_AVG

Select repeating average filter type

* smuX can be smua for channel A or smub for channel B

Filter programming example

The programming example below illustrates how to set the following filter options:

  • Filter type: Moving average
  • Filter count: 10
  • Filter state: Enabled

-- Set the program count to 10.

smua.measure.filter.count = 10

-- Set the moving average filter type.

smua.measure.filter.type = smua.FILTER_MOVING_AVG

-- Enable the filter.

smua.measure.filter.enable = smua.FILTER_ON

High-capacitance mode

The Keithley Instruments 2600B has a high-capacitance mode.

Because the source‑measure unit (SMU) can measure low current, issues can arise when driving a capacitive load. The pole formed by the load capacitance and the current range resistor can cause a phase shift in the SMU voltage control loop. This shift can lead to overshoot, ringing, and instability. Due to the large dynamic range of current measurement and wide range of internal resistors, the operating conditions for a given capacitive load can vary.

Based on the type, some test applications may require capacitors larger than 10 nF. While running test scripts, it may not be possible to disconnect the capacitor from the integrated circuit and extract accurate data. For this purpose, you can use the high-capacitance mode to minimize overshoot, ringing, and instability.

This section provides the details that you need to estimate performance based on load capacitance and measurement conditions.

Understanding high-capacitance mode

The source‑measure unit (SMU) in the 2600B drives 10 nF of capacitance in normal operation. Typically, an internal capacitor across the current measuring element provides phase lead to compensate for the phase lag caused by the load capacitance on the output. This internal capacitance across the range resistance limits the speed for a specific measurement range.

The SMU in the 2600B implements frequency compensation to achieve the highest throughput possible for a 10 nF or less load. In addition, you must consider the settling time, voltage range, measure delay, the quality of the capacitor, the current measure range resistor, and the load resistor.

In normal operation, the SMU in the 2600B can drive capacitive loads as large as 10 nF. In high-capacitance mode, the SMU can drive a maximum of 50 µF of capacitance.

VARIABLE - NOTE When high-capacitance mode is enabled, a minimum load capacitance of 100 nF is recommended. In absence of this minimum load capacitance, overshoot and ringing may occur.

Highest throughput is achieved by using normal operation. In high‑capacitance mode, the speed of the 2600B SMU is reduced to compensate for the larger load capacitance. Stability is achieved by inserting an internal capacitance across the current measuring element of the SMU. This internal capacitor limits the speed for the source and measurement ranges. Therefore, when optimizing the speed of your test configuration in high-capacitance mode, you must consider the settling time, voltage, and current ranges, measure delay, quality of the load capacitor, and load resistance.

Understanding source settling times

Each 2600B source‑measure unit (SMU) can drive up to 50 µF of a capacitance in high‑capacitance mode. To accomplish this, the speed of the 2600B SMU is reduced. Source settling times increase when high‑capacitance mode is enabled. The following tables compare the source settling times in normal and high‑capacitance modes.

Model 2601B, 2602B, and 2604B source settling times

Range

Normal mode

High-capacitance mode

100 mV

50 µs

200 µs

1 V

50 µs

200 µs

6 V

100 µs

200 µs

40 V

150 µs

7 ms

 

Model 2611B, 2612B, 2614B, 2634B, 2635B, and 2636B source setting times

Range

Normal mode

High-capacitance mode

200 mV

50 µs

600 µs

2 V

50 µs

600 µs

20 V

110 µs

1.5 ms

200 V

700 µs

20 ms

In high-capacitance mode, the frequency compensation capacitance across the measure range resistors increases. This increase causes longer settling times on some current measure ranges. The same range elements that are used to measure current are used to source current. As a result, the current limit response times respond in a similar manner.

 

Current measure and source settling times

Current measure range

Normal mode
(typical)

High capacitance mode (typical)

1 A to 1.5 A (2611B, 2612B, 2614B, 2634B, 2635B, 2636B)

120 µs

120 µs (RLOAD > 6 O)

1 A to 3 A (2601B, 2602B, 2604B)

80 µs

120 µs (RLOAD > 2 O)

100 mA

100 µs

100 µs

10 mA

80 µs

100 µs

1 mA

100 µs

3 ms

100 µA

150 µs

3 ms

10 µA

500 µs

230 ms

1 µA

2 ms

230 ms

When high-capacitance mode is enabled, the amount of time to change the current measure range increases for each SMU. The current measure range and the current limit range are locked together. Setting the current limit automatically updates the measure range.

Adjusting the voltage source

When driving large capacitive loads with high-capacitance mode enabled, the response time may be lengthened by the current limit. For example, see the table titled "Current measure and source settling times" in Understanding source settling times. If a 1 µF capacitor charges to 10 V in 10 µs with a 1 A limit and the limit is set to 100 nA, the charging time is 100 seconds, as shown in the following equation.

Adjusting the voltage source (2)

The total response times while in high-capacitance mode are a combination of the time spent charging the capacitor (current limit) or the response time, whichever is greater. There is a direct relationship between the current limit and the charging time. As the current limit decreases, the amount of time required to charge the capacitor increases.

Understanding the capacitor

Based on the capacitor dielectric absorption, the settling time may change and the values in the "Current measure and source settling times" table in Understanding source settling times may differ.

VARIABLE - NOTE Tantalum or electrolytic capacitors are well known for long dielectric absorption settling times. Film capacitors and ceramics perform better, with NPO/COG dielectric ceramics yielding the best settling response.

Charging the capacitor and making readings

To charge and read a capacitor in high-capacitance mode:

  1. Set the current limit to a value that is higher than the value that is used for the measurement (for example, if measuring at 10 µA, the initial current limit can be set to 1 A).
  2. After the capacitor charges, lower the current limit and measure range to obtain the current measurement.

Enabling high-capacitance mode

Before enabling high-capacitance mode, note the following:

  • It is important to read High-capacitance mode to understand the impact of high-capacitance mode.
  • Test the device under test (DUT) and the capacitor to determine the best current limit and range of output voltages.
  • The settling times can vary based on the DUT. It is important to test the limits of the DUT before you use high‑capacitance mode.
  • Test the DUT for the appropriate current limit and output voltages.
  • For optimal performance, do not continuously switch between normal mode and high‑capacitance mode.
  • Before you charge the capacitor, start with 0 (zero) voltage across the capacitor.

VARIABLE - CAUTION Failure to test the DUT for the appropriate current limit and output voltages can result in damage to or destruction of the DUT.

To enable high-capacitance mode from the front panel:

  1. Press the CONFIG key.
  2. Press the SRC key and then select HIGHC-MODE.
  3. Select SRC-ENABLE and then press the navigation wheel (or the ENTER key).
  4. Select ENABLE and then press the navigation wheel (or the ENTER key).
  5. Press the EXIT (LOCAL) key to back out of the menu structure.

To enable high-capacitance mode using a remote interface:

smuX.source.highc = smua.ENABLE

Turning on high‑capacitance mode has the following effects on the source‑measure unit (SMU)* settings:

  • smuX.measure.autorangei is set to smuX.AUTORANGE_FOLLOW_LIMIT and cannot be changed.
  • Current ranges below 1 µA are not accessible.
  • If smuX.source.limiti is less than 1 µA, it is raised to 1 µA.
  • If smuX.source.rangei is less than 1 µA, it is raised to 1 µA.
  • If smuX.source.lowrangei is less than 1 µA, it is raised to 1 µA.
  • If smuX.measure.lowrangei is less than 1 µA, it is raised to 1 µA.

* smuX can be smua for channel A or smub for channel B

Measuring current using high-capacitance mode

The following inputs are required to test leakage using the factory leakage script, as shown in the following script example.

  • SMU: Sets the 2600B source‑measure unit to use
  • levelv: Sets the output voltage level
  • limiti: Sets the current limit for discharging or charging the capacitor
  • sourcedelay: Solves the following equation to determine the amount of time before making a current reading:
    Measuring current (1)
    Where: i is the limiti setting (current limit)
  • measurei: Sets the current measure range
  • measuredelay: Defines the delay to wait after lowering the current limit before making the measurement
Script example

Use the smuX.source.highc attribute to set and control the options for high‑capacitance mode.

The programming examples and figure below illustrate how to enable high-capacitance mode on SMU A.

1. To enable high-capacitance mode, send:

-- Enables high-capacitance mode.

smua.source.highc = smua.ENABLE

2. To run the i_leakage_measure() function in the KIHighC factory script, send:

-- Charges the capacitor.

smua.source.levelv = 5

smua.source.output = smua.OUTPUT_ON

delay(1)

imeas = i_leakage_measure(smua, 0, 1, 300e-3, 10e-6, 100e-3)

-- The parameters in the i_leakage_measure() function represent

-- the following:

-- smu = smua

-- levelv = 0 V

-- limiti = 1 A

-- sourcedelay = 300 ms

-- measurei = 10 uA range

-- measuredelay = 100 ms

VARIABLE - NOTE Adjust the voltage level and source delays based on:

  • The value and type of capacitor
  • The magnitude of the voltage step
  • The current measure range

Enabling high-capacitance mode

Saved setups

You can restore the 2600B to one of six nonvolatile‑memory setup configurations (five user setups and one factory default), or to a setup stored on an external USB flash drive. As shipped from the factory, the 2600B powers up with the factory default settings, which cannot be overwritten. The default settings are also in the five user setup locations, but may be overwritten. The factory default settings are listed in the command descriptions in the TSP command reference.

You can also change the setup configuration that is used when the instrument powers up.

Saving user setups

You can save the present 2600B setup to internal nonvolatile memory or a USB flash drive.

To save a user setup to nonvolatile memory from the front panel:

  1. Configure the 2600B to the settings that you want to save.
  2. Press the MENU key.
  3. Select SETUP and then press the ENTER key.
  4. Select the SAVE menu item and then press the ENTER key.
  5. Select INTERNAL and then press the ENTER key.
  6. Select the user number (1 through 5) and press the ENTER key.

To save a user setup to an external USB flash drive from the front panel:

  1. Configure the 2600B to the settings that you want to save.
  2. Insert the USB flash drive into the USB port on the front panel of the 2600B.
  3. Press the MENU key.
  4. Select SETUP and then press the ENTER key.
  5. Select SAVE and then press the ENTER key.
  6. Select USB1. The file name setup000.set is displayed.
  7. Turn the navigation wheel to change the last three digits of the file name and then press the ENTER key.

To save and recall user setups using remote commands:

Use the setup.save() and setup.recall() functions to save and recall user setups. The following example saves the present setup as setup 1, and then recalls setup 1.

-- Save the present setup to nonvolatile memory.

setup.save(1)

-- Recall the saved user setup from nonvolatile memory.

setup.recall(1)

Recalling a saved setup using the front panel

You can recall setups from internal nonvolatile memory or a USB flash drive.

To recall a saved setup from the front panel:

  1. Press the MENU key to access the main menu.
  2. Select SETUP, and then press the ENTER key.
  3. Select the RECALL menu item, and then press the ENTER key.
  4. Select one of the following:
    • INTERNAL
    • USB1
  5. For INTERNAL only, do one of the following:
    • Select FACTORY to restore factory defaults, then press the ENTER key.
    • Select the user number (1 through 5), then press the ENTER key.
  6. USB1 only: Select the appropriate file and then press the ENTER key.

Start-up configuration

The start-up configuration allows you to apply specific settings every time the instrument powers up. The settings are defined in a user setup. You can also select the factory default setup.

To select the power-on setup from the front panel:

  1. Press the MENU key to access the main menu.
  2. Select SETUP, and then press the ENTER key.
  3. Select POWERON, and then press the ENTER key.
  4. Select the configuration to use.
  5. Press the ENTER key.
  6. Use the EXIT (LOCAL) key to return to the main display.

To select the power-on setup using remote commands:

Use the setup.poweron attribute to select which setup to use when the instrument powers up. To set the setup.poweron configuration attribute:

setup.poweron = n

Where n is:

  • 0 (*RST or reset() factory defaults)
  • 1 to 5 (user setup 1 to 5)

Restoring factory default setups using remote commands

Use one of the reset functions to return the 2600B to the original factory defaults. An example of each type of reset is shown in the following program examples.

Restore all factory defaults of all nodes on the TSP-LinkTM network:

reset()

Restore all factory defaults (note that you cannot use *rst in a script):

*rst

Restore all factory defaults:

setup.recall(0)

Restore channel A defaults:

smua.reset()

Reset only the local TSP-Link node:

localnode.reset()

Reading buffers

Overview

Reading buffers capture measurements, ranges, instrument status, and output state of the Keithley Instruments 2600B. The 2600B has two default reading buffers for each channel. In addition to the default buffers, you can create user-defined reading buffers. You can use the reading buffers to acquire readings.

You can access reading buffers from the front panel or over the remote command interface.

The default reading buffers can store more than 60,000 readings if you enable the options for timestamps and source values. To store 140,000 readings internally, you can disable the timestamps and source values.

You can save reading buffers to internal nonvolatile memory in the instrument or to a USB flash drive.

Once you save the reading buffers to a USB flash drive, insert the USB flash drive into the USB port on your computer to view the data in any compatible data analysis application or to transfer the data from the USB flash drive to your computer.

Front-panel reading buffer control

The dedicated reading buffers can be configured, stored, and recalled when in local mode operation. Use the front panel to navigate and configure the reading buffers options and to save and recall stored readings.

Reading buffer options

The following list outlines the menu structure and menu items associated with front‑panel reading buffer control. This section provides a description for each reading buffer option. Use the procedure in Configuring reading buffers as a guideline to configure these reading buffer options.

CHANA-BUFF: Configures channel A buffer.

  • DEST: Set the data storage destination (buffer 1, buffer 2, or none).
  • BUFFER1: Configure buffer 1.
    • CLEAR: Clear buffer (YES or NO).
    • ELEMENTS: Enable (ON) or disable (OFF) data‑storage elements.
    • SRC-VAL: Enable or disable source values.
    • TSTAMP: Enable or disable timestamps.
  • BUFFER2: Configure buffer 2.
    • CLEAR: Clear buffer (YES or NO).
    • ELEMENTS: Enable (ON) or disable (OFF) data‑storage elements.
    • SRC-VAL: Enable or disable source values.
    • TSTAMP: Enable or disable timestamps.

CHANB-BUFF: Configures channel B buffer (2602B, 2604B, 2612B, 2614B, 2634B, and 2636B only).

  • DEST: Set the data storage destination (buffer 1, buffer 2, or none).
  • BUFFER1: Configure buffer 1.
    • CLEAR: Clear buffer (YES or NO).
    • ELEMENTS: Enable (ON) or disable (OFF) data storage elements.
    • SRC-VAL: Enable or disable source values.
    • TSTAMP: Enable or disable timestamps.
  • BUFFER2: Configure buffer 2.
    • CLEAR: Clear buffer (YES or NO).
    • ELEMENTS: Enable (ON) or disable (OFF) data storage elements.
    • SRC-VAL: Enable or disable source values.
    • TSTAMP: Enable or disable timestamps.

Configuring reading buffers

To configure reading buffers from the front panel:

VARIABLE - NOTE Enabling or disabling the source value or the timestamp is optional.

  1. Press the CONFIG key.
  2. Press the STORE key and then choose one of the following:
    • CHANA-BUFF
    • CHANB-BUFF (2602B, 2604B, 2612B, 2614B, 2634B, and 2636B only)
  3. To select a storage destination, select the DEST option, and then choose one of the following:
    • CHANx-BUFF1
    • CHANx-BUFF2
    • NONE

      CHANx: CHANA refers to SMU channel A and CHANB refers to SMU channel B (2602B, 2604B, 2612B, 2614B, 2634B, and 2636B only).
  4. Select BUFFER1 or BUFFER2.
  5. Clear the buffer by turning the navigation wheel to select CLEAR > YES.
  6. Turn the navigation wheel to highlight ELEMENTS, and then press the navigation wheel (or the ENTER key).

VARIABLE - NOTE You must clear the reading buffer before you can enable or disable the source value or the timestamp options.

  1. Configure the timestamp elements of the reading buffer:

    a. Turn the navigation wheel to highlight TSTAMP.

    b. Press the navigation wheel (or the ENTER key).

    c. Select OFF or ON and then press the navigation wheel (or the ENTER key).

  2. Configure the source value elements of the reading buffer:

    a. Turn the navigation wheel to highlight SRC-VAL.

    b. Press the navigation wheel (or the ENTER key).

    c. Select OFF or ON.

  3. Press the EXIT (LOCAL) key to return to the main menu.

VARIABLE - NOTE The 2601B, 2611B, and 2635B buffer configuration menu items are accessed in the same manner, except for channel selection.

Appending or overwriting existing reading buffers

When storing data to a reading buffer that already holds data, the new data can be appended to the reading buffer data, or it can overwrite the old data.

To configure the instrument to append or overwrite measurements the next time data is acquired:

  1. Press the CONFIG key.
  2. Select STORE, and then select STORAGE-MODE. The Storage Mode menu is shown.
  3. Select one of the following:
    • APPEND
    • OVERWRITE
  4. Press the EXIT (LOCAL) key to return to the main menu.

Storage operation

Use this option to initiate a storage operation and to configure the number of readings to acquire during the storage operation. The reading count can be more than 60,000 if timestamps and source values are enabled. The count can be more than 140,000 if timestamps and source values are disabled.

VARIABLE - NOTE To store the maximum number of readings in a reading buffer, disable the source values and timestamps for that reading buffer.

To specify the number of readings and initiate the storage operation:

  1. From the front panel, press the STORE key, and then select TAKE_READINGS.
  2. Use the navigation wheel to select the number of readings.
  3. Press the navigation wheel to switch to edit mode.
  4. Turn the navigation wheel to change the numeric value.
  5. Press the navigation wheel to save the numeric value.
  6. Press the ENTER key to save the count.
  7. Press the OUTPUT ON/OFF control to start making readings.

VARIABLE - NOTE If the output-off mode is ZERO or the output is already on, the instrument starts acquiring readings when the ENTER key is pressed. Otherwise, the instrument starts acquiring readings when the output is turned on.

Saving reading buffers

You can save the dedicated reading buffers to nonvolatile memory or you can save them to a USB flash drive.

The instrument restores the dedicated reading buffers from internal nonvolatile memory when the instrument is turned off and back on.

VARIABLE - NOTE You can also save reading buffer data to a .csv file using the web interface.

Saving the reading buffers to nonvolatile memory

After the measurements are complete, you can save the reading buffer data to the nonvolatile memory in the instrument.

To save the reading buffer data:

  1. From the front panel, press the STORE key, and then select SAVE.
  2. Select INTERNAL to save to internal nonvolatile memory.
  3. Select one of the following:
    • SMUA_BUFFER1
    • SMUA_BUFFER2
    • SMUB_BUFFER1 (2602B, 2604B, 2612B, 2614B, 2634B, and 2636B only)
    • SMUB_BUFFER2 (2602B, 2604B, 2612B, 2614B, 2634B, and 2636B only)
  4. The front panel displays Saving... This may take awhile.
  5. Press the EXIT (LOCAL) key to return to the main menu.

Saving the reading buffer to a USB flash drive

After the measurements are complete, you can save the reading buffer data to a USB flash drive.

To save the reading buffer data to a USB flash drive:

  1. Insert the USB flash drive into the USB port.
  2. Press the STORE key and use the navigation wheel to select SAVE.
  3. Select USB1.
  4. Select one of the following file formats:
    • CSV
    • XML
  5. Use the navigation wheel to select the reading buffer.
  6. Use the navigation wheel to change the file name.
  7. Press the navigation wheel or the ENTER key to save the file.
  8. Press the EXIT (LOCAL) key to return to the main menu.

Recalling readings

To recall the data stored in a reading buffer:

  1. Press the RECALL key.
  2. Select DATA or STATISTICS.
  3. Select the buffer to display: CHANx-BUFF1 or CHANx-BUFF2 (where X is A on the 2601B, 2611B, or 2635B, or X is A or B on the 2602B, 2604B, 2612B, 2614B, 2634B, or 2636B). The data or statistics are displayed.
    • If you are recalling data, the reading display is on the top left, and the buffer location number is on the right. The source values are on the lower left side of the display (if enabled); the timestamp (if used) is on the lower right side.
    • If you are recalling statistics, the information includes values for MEAN, STD DEV, SAMPLE SIZE, MINIMUM, MAXIMUM, and PK-PK.
    • The source display field identifies the buffer: SrcA1 (buffer 1), SrcA2 (buffer 2). For two‑channel instruments (2602B, 2604B, 2612B, 2614B, 2634B, 2636B): SrcB1 (buffer 1), SrcB2 (buffer 2).

Buffer location number

The buffer location number indicates the memory location of the source-measure reading. For example, location #000001 indicates that the displayed source-measure reading is stored at the first memory location.

Timestamp

If the timestamp is enabled, the first source-measure reading stored in the buffer (#0000001) is timestamped at 0.000 seconds. Subsequent readings are timestamped relative to when the first measurement was made. The interval between readings depends on the reading rate.

Displaying other buffer readings and statistics

To display other readings and statistics in the reading buffer:

  1. While still in the buffer recall mode:
    • If viewing the data stored in the buffer, turn the navigation wheel to increment and decrement the selected digit of the location number by one. Press the navigation wheel and then turn it or use the CURSOR keys to move to the next digit.
    • If viewing the statistics stored in the buffer, turn the navigation wheel or use the CURSOR keys to scroll between MEAN, STD DEV, SAMPLE SIZE, MINIMUM, MAXIMUM, and PK-PK.
  2. To exit from the reading buffer recall mode, press the EXIT (LOCAL) key.

Dual buffer example

The programming example below shows a script that stores current and voltage readings using buffer 1 for current and buffer 2 for voltage readings. The 2600B stores 100 current and voltage readings and then recalls all 100 sets of readings.

-- Restore 2600B defaults.

smua.reset()

-- Select measure I autorange.

smua.measure.autorangei = smua.AUTORANGE_ON

-- Select measure V autorange.

smua.measure.autorangev = smua.AUTORANGE_ON

-- Select ASCII data format.

format.data = format.ASCII

-- Clear buffer 1.

smua.nvbuffer1.clear()

-- Clear buffer 2.

smua.nvbuffer2.clear()

-- Set buffer count to 100.

smua.measure.count = 100

-- Set measure interval to 0.1 s.

smua.measure.interval = 0.1

-- Select source voltage function.

smua.source.func = smua.OUTPUT_DCVOLTS

-- Output 1 V.

smua.source.levelv = 1

-- Turn on output.

smua.source.output = smua.OUTPUT_ON

-- Store current readings in buffer 1, voltage readings in buffer 2.

smua.measure.overlappediv(smua.nvbuffer1, smua.nvbuffer2)

-- Wait for buffer to fill.

waitcomplete()

-- Turn off output.

smua.source.output = smua.OUTPUT_OFF

-- Output buffer 1 readings 1 to 100.

printbuffer(1, 100, smua.nvbuffer1)

-- Output buffer 2 readings 1 to 100.

printbuffer(1, 100, smua.nvbuffer2)

Remote reading buffer programming

You can get readings by making overlapped or sequential measurements. Overlapped commands do not finish executing before the next command starts. Sequential commands complete execution before the next command starts executing.

The measured value is not the only component of a reading. The measurement status (for example, “In Compliance” or “Overranged”) is also an element of data associated with a particular reading.

All routines that return measurements can store the measurements in the reading buffers. Overlapped measurements always return readings in a reading buffer. Nonoverlapped measurement functions can return single-point measurement values or store multiple values in a reading buffer.

A reading buffer is based on a Lua table. The measurements are retrieved with ordinary array accesses. If rb is a reading buffer, the first measurement is accessed as rb[1] and the ninth measurement as rb[9]. The additional information in the table is accessed as additional members of the table.

The load, save, and write operations for reading buffers function differently in the remote state. From a remote command interface, you can extract data from reading buffers as the instrument acquires the data.

Dedicated reading buffer designations

Each source‑measure unit (SMU) contains dedicated reading buffers:

  • smua.nvbuffer1 (buffer 1 for channel A)
  • smua.nvbuffer2 (buffer 2 for channel A)
  • smub.nvbuffer1 (buffer 1 for channel B)
  • smub.nvbuffer2 (buffer 2 for channel B)

To access a reading buffer, include the name of the SMU in the attribute. For example, the following command stores readings from channel A into buffer 1:

smua.measure.overlappedi(smua.nvbuffer1)

Dedicated reading buffer example

The following programming example illustrates how to store data using dedicated reading buffer 1. In the example, the 2600B loops for voltages from 0.01 V to 1 V with 0.01 V steps (performing a staircase sweep), stores 100 current readings and source values in buffer 1, and then recalls all 100 readings and source values.

-- Restore 2600B defaults.

smua.reset()

-- Select channel A display.

display.screen = display.SMUA

-- Display current.

display.smua.measure.func = display.MEASURE_DCAMPS

-- Select measure I autorange.

smua.measure.autorangei = smua.AUTORANGE_ON

-- Select ASCII data format.

format.data = format.ASCII

-- Clear buffer 1.

smua.nvbuffer1.clear()

-- Enable append buffer mode.

smua.nvbuffer1.appendmode = 1

-- Enable source value storage.

smua.nvbuffer1.collectsourcevalues = 1

-- Set the count to 1.

smua.measure.count = 1

-- Select the source voltage function.

smua.source.func = smua.OUTPUT_DCVOLTS

-- Set the bias voltage to 0 V.

smua.source.levelv = 0.0

-- Turn on the output.

smua.source.output = smua.OUTPUT_ON

-- Loop for voltages from 0.01 V to 1 V.

for v = 1, 100 do

-- Set the source voltage.

smua.source.levelv = v * 0.01

-- Measure the current and store in nvbuffer1.

smua.measure.i(smua.nvbuffer1)

end

-- Turn off the output.

smua.source.output = smua.OUTPUT_OFF

-- Output readings 1 to 100.

printbuffer(1, smua.nvbuffer1.n, smua.nvbuffer1.readings)

-- Output source values 1 to 100.

printbuffer(1, smua.nvbuffer1.n, smua.nvbuffer1.sourcevalues)

Reading buffer commands

The following tables summarize commands associated with the reading buffers. See TSP command reference for detailed reading buffer command information.

Reading buffer commands*

Command

Description

Commands to save and clear readings

smuX.savebuffer(smuX.nvbufferY)

Saves the reading buffer to the nonvolatile memory on the 2600B.

smuX.nvbuffer1.clear()

Clears buffer 1.

smuX.nvbuffer2.clear()

Clears buffer 2.

mybuffer = smuX.makebuffer(n)

Creates a dynamically allocated buffer for n readings.

mybuffer = nil

Deletes the dynamically allocated buffer.

savebuffer(smuX.nvbuffer1,"csv",

"/usb1/mybuffer.csv")

Saves the reading buffer to a USB flash drive.

Command

Description

Commands to store readings

smuX.measure.count = count

The number of measurements to acquire.

smuX.measure.overlappedi(rbuffer)

Makes current measurements; stores readings in rbuffer.

smuX.measure.overlappediv(ibuffer,

vbuffer)

Makes both current and voltage measurements; stores current readings in ibuffer and stores voltage readings in vbuffer.

smuX.measure.overlappedp(rbuffer)

Makes power measurements; stores readings in rbuffer.

smuX.measure.overlappedr(rbuffer)

Makes resistance measurements; stores readings in rbuffer.

smuX.measure.overlappedv(rbuffer)

Makes overlapped voltage measurements; stores readings in rbuffer.

smuX.measure.v(rbuffer)

Makes voltage measurements; stores readings in rbuffer.

smuX.measure.i(rbuffer)

Makes current measurements; stores readings in rbuffer.

smuX.measure.iv(ibuffer, vbuffer)

Makes both current and voltage measurements; stores current readings in ibuffer and stores voltage readings in vbuffer.

smuX.measure.r(rbuffer)

Makes resistance measurements; stores readings in rbuffer.

smuX.measure.p(rbuffer)

Makes power measurements; stores readings in rbuffer.

smuX.trigger.measure.v(rbuffer)

Configures voltage measurements to be made during a sweep, including where readings are stored (rbuffer).

smuX.trigger.measure.i(rbuffer)

Configures current measurements to be made during a sweep, including where readings are stored (rbuffer).

smuX.trigger.measure.r(rbuffer)

Configures resistance measurements to be made during a sweep, including where readings are stored (rbuffer).

smuX.trigger.measure.p(rbuffer)

Configures power measurements to be made during a sweep, including where readings are stored (rbuffer).

smuX.trigger.measure.iv(ibuffer,

vbuffer)

Configures both current and voltage measurements to be made during a sweep, including where readings are stored; current readings are stored in ibuffer and voltage readings are stored in vbuffer.

Command

Description

Commands to access readings

printbuffer(start_index, end_index,

st_1, st_2, ... st_n)

Prints data from buffer subtables:

  • start_index (starting index of values to print)
  • end_index (ending index of values to print)
  • st_1, st_2, ... st_n (subtables from which to print, each separated by a comma)

* smuX can be smua for channel A or smub for channel B

Buffer storage control attributes

The following table contains buffer storage control attributes.

VARIABLE - NOTE Before changing the collectsourcevalues, collecttimestamps, or timestampresolution attributes, you must clear the buffer using the smuX.nvbuffer1.clear() or smuX.nvbuffer2.clear() command.

Buffer storage attribute

Description

appendmode

The append mode is either off or on. When the append mode is off, a new measurement to this buffer overwrites the previous contents. When the append mode is on, the first new measurement is stored at the end of the existing data. This attribute is off when the buffer is created.

cachemode

When this attribute is on, the reading buffer cache improves access speed to reading buffer data. When running successive operations that overwrite reading buffer data without running any commands that automatically invalidate the cache, the reading buffer may return stale cache data. This attribute is initialized to on when the buffer is created.

collectsourcevalues

When this attribute is on, source values are stored with readings in the buffer. This value, off or on, can be changed only when the buffer is empty. When the buffer is created, this attribute is initialized to off.

collecttimestamps

When this attribute is on, timestamps are stored with readings in the buffer. This value, off or on, can be changed only when the buffer is empty. When the buffer is created, this attribute is initialized to off.

fillcount

The reading buffer fill count sets the number of readings to store before restarting at index 1. If the value is 0, then the capacity of the buffer is used. This attribute is only used when the fillmode attribute is set to FILL_WINDOW.

fillmode

The reading buffer fill mode controls how new data is added to the reading buffer. When this attribute is set to FILL_ONCE, the reading buffer does not overwrite readings. If the buffer fills up, new readings are discarded.

When this attribute is set to FILL_WINDOW, new readings are added after existing data until the buffer holds fillcount elements. Once there are fillcount elements, new data starts overwriting data starting at index 1.

timestampresolution

The timestamp resolution, in seconds. When the buffer is created, its initial resolution is 0.000001 seconds. At this resolution, the reading buffer can store unique timestamps for up to 71 minutes. This value can be increased for long tests.

Buffer read-only attributes

The following table contains buffer read‑only attributes that access the buffer parameters.

Attribute

Description

basetimestamp

The timestamp of when the reading at rb[1] was stored, in seconds from midnight January 1, 1970 GMT. See Time and date values for additional details.

capacity

The total number of readings that can be stored in the reading buffer.

n

The number of readings in the reading buffer.

next

This attribute indicates where the next element that is added to the reading buffer is stored.

Buffer storage control programming examples

The programming examples below illustrate the use of buffer storage control attributes.

Command

Description

smua.nvbuffer1.collectsourcevalues = 1

Enable source value storage.

smua.nvbuffer1.appendmode = 1

Enable buffer append mode.

smua.nvbuffer1.collecttimestamps = 0

Disable timestamp storage.

smua.nvbuffer1.timestampresolution = 0.001

Set timestamp resolution to 0.001024 s.

smua.nvbuffer1.fillcount = 50

Set 50 as the number of readings the buffer stores before restarting at index 1.

smua.nvbuffer1.fillmode = 0

Set the reading buffer to fill once (do not overwrite old data).

Buffer read-only attribute programming examples

The following programming examples illustrate use of buffer read‑only attributes.

Command

Description

number = smua.nvbuffer1.n

Request the number of readings in the buffer.

buffer_size = smua.nvbuffer1.capacity

Request buffer size.

Statistic attributes

Use the smuX.buffer.getstats() function to access the reading buffer data statistics. The table below lists the attributes that you can use to access the reading buffer statistics.

Attributes for accessing reading buffer data

Attribute

When returned

Description

n

Always

The number of data points on which the statistics are based

mean

When n > 0

The average of all readings added to the buffer

stddev

When n > 1

The standard deviation of all readings (samples) added to the buffer

min

When n > 0

A table containing data about the minimum reading value added to the buffer

max

When n > 0

A table containing data about the maximum reading value added to the buffer

If n equals zero (0), all other attributes are nil because there is no data to base any statistics on. If n equals 1, the stddev attribute is nil because the standard deviation of a sample size of 1 is undefined.

The min and max entries have the attributes described in the following table (bufferVar is the name of the buffer). See smuX.buffer.getstats() for additional information.

Min and max entry attributes

Attribute

Description

measurefunction

String indicating the function that was measured for the reading (current, voltage, ohms, or watts)

measurerange

The full-scale range value for the measurement range used when the measurement was made

reading

The reading value

sourcefunction

String indicating the source function at the time of the measurement (current or voltage)

sourceoutputstate

String indicating the state of the source (off or on)

sourcerange

Full-scale range value for the source range used when the measurement was made

sourcevalue

If bufferVar.collectsourcevalues is enabled, the sourced value in effect at the time of the reading

status

Status value for the reading; the status value is a floating-point number that encodes the status value into a floating-point value

timestamp

If bufferVar.collecttimestamps is enabled, the timestamp, in seconds, between when the reading was acquired and when the first reading in the buffer was acquired; adding this value to the base timestamp produces the actual time the measurement was acquired

Example:

The following programming example illustrates how to output mean and standard deviation statistics from buffer 1:

statistics = smua.buffer.getstats(smua.nvbuffer1)

print(statistics.mean, statistics.stddev)

Reading buffer attributes

Use the reading buffer attributes to access the reading buffer data. The table below displays the attributes that you can use to access the reading buffer data.

Recall attribute*

Description

measurefunctions

An array (a Lua table) of strings indicating the function measured for the reading (current, voltage, ohms, or watts).

measureranges

An array (a Lua table) of full-scale range values for the measure range used when the measurement was made.

readings

An array (a Lua table) of the readings stored in the reading buffer. This array holds the same data that is returned when the reading buffer is accessed directly; that is, rb[2] and rb.readings[2] access the same value.

sourcefunctions

An array (a Lua table) of strings indicating the source function at the time of the measurement (current or voltage).

sourceoutputstates

An array (a Lua table) of strings indicating the state of the source (off or on).

sourceranges

An array (a Lua table) of full-scale range values for the source range used when the measurement was made.

sourcevalues

If enabled, an array (a Lua table) of the sourced values in effect at the time of the reading.

statuses

An array (a Lua table) of status values for all the readings in the buffer. The status values are floating-point numbers that encode the status value into a floating-point value. See Buffer status.

timestamps

If enabled, an array (a Lua table) of timestamps, in seconds, of when each reading occurred. These are relative to the basetimestamp for the buffer. See Reading buffer commands.

* The default attribute is readings, which can be omitted.

Examples:

The following programming example illustrates how to output 100 channel A readings from buffer 1:

printbuffer(1, 100, smua.nvbuffer1.readings)

Similarly, the following outputs 100 channel A corresponding source values from buffer 1:

printbuffer(1, 100, smua.nvbuffer1.sourcevalues)

The default reading attribute is readings, which can be omitted. If readings is omitted, the following also outputs 100 channel A readings from buffer 1:

printbuffer(1, 100, smua.nvbuffer1)

Buffer status

The buffer reading status attribute includes the status information as a numeric value; see the following table for values. For example, to access status information for the second element of SMU channel A buffer 1, use the following command:

stat_info = smua.nvbuffer1.statuses[2]

Buffer status bits

Bit

Name

Hex value

Description

B0

Reserved

0x01

Reserved for future use

B1

Overtemp

0x02

Overtemperature condition

B2

AutoRangeMeas

0x04

Measure range was autoranged

B3

AutoRangeSrc

0x08

Source range was autoranged

B4

4Wire

0x10

4-wire (remote) sense mode was enabled

B5

Rel

0x20

Relative offset was applied to a reading

B6

Compliance

0x40

Source function was in compliance

B7

Filtered

0x80

Reading was filtered

Dynamic reading buffers

Reading buffers can also be allocated dynamically. You create and allocate the dynamic reading buffers with the smuX.makebuffer(n) command, where n is the number of readings the buffer can store. For example, the following command allocates a reading buffer named mybuffer that can store 100 readings:

mybuffer = smua.makebuffer(100)

You can delete allocated reading buffers by sending the following command:

mybuffer = nil

You can use dynamically allocated reading buffers interchangeably with the smuX.nvbufferY buffers that are described in Dedicated reading buffer designations.

Dynamically allocated buffer example

The programming example below illustrates how to store data to an allocated buffer called mybuffer. The 2600B stores 100 current readings in mybuffer and then recalls all the readings.

-- Restore 2600B defaults.

smua.reset()

-- Select measure I autorange.

smua.measure.autorangei = smua.AUTORANGE_ON

-- Select measure V autorange.

smua.measure.autorangev = smua.AUTORANGE_ON

-- Select ASCII data format.

format.data = format.ASCII

-- Set the buffer count to 100.

smua.measure.count = 100

-- Set the measure interval to 0.1 s.

smua.measure.interval = 0.1

-- Select the source voltage function.

smua.source.func = smua.OUTPUT_DCVOLTS

-- Set the source voltage to output 1 V.

smua.source.levelv = 1

-- Turn on the output.

smua.source.output = smua.OUTPUT_ON

-- Create a temporary reading buffer.

mybuffer = smua.makebuffer(smua.measure.count)

-- Store current readings in mybuffer.

smua.measure.overlappedi(mybuffer)

-- Wait for the buffer to fill.

waitcomplete()

-- Turn off the output.

smua.source.output = smua.OUTPUT_OFF

-- Output readings 1 to 100 from mybuffer.

printbuffer(1, 100, mybuffer)

-- Delete mybuffer.

mybuffer = nil

Triggering

Triggering

Triggering allows you to source signals and capture measurements when an input signal or combination of input signals meets a set of conditions that you set. Triggering controls the timing of when source and measure operations happen during a sweep. See Sweep operation for details on sweeping.

Remote triggering overview

There are two programming methods for triggering:

  • Using the trigger model
  • Interactive triggering

You can obtain very precise timing and synchronization between channels of multiple instruments using the trigger model to control the actions of the source‑measure unit (SMU). To achieve such precise timing, use a static trigger configuration. When a static trigger configuration is not possible, you can use the interactive triggering method to control the timing and actions of the SMU.

Both programming methods use trigger objects. Trigger objects generate and monitor trigger events. External triggers are possible using digital I/O, TSP‑LinkTM synchronization lines, LAN, command interface, and the manual trigger (the TRIG key).

The following figure graphically represents all the trigger objects of the 2600B instrument.

Triggering overview

VARIABLE - NOTE The Models 2604B, 2614B, and 2634B do not have digital I/O lines or TSP‑Link.

Trigger events are identified by means of an event ID. The following table describes the trigger event IDs.

Trigger event IDs*

Event ID**

Event description

smuX.trigger.SWEEPING_EVENT_ID

Occurs when the source‑measure unit (SMU) transitions from the idle state to the arm layer of the trigger model

smuX.trigger.ARMED_EVENT_ID

Occurs when the SMU moves from the arm layer to the trigger layer of the trigger model

smuX.trigger.SOURCE_COMPLETE_EVENT_ID

Occurs when the SMU completes a source action

smuX.trigger.MEASURE_COMPLETE_EVENT_ID

Occurs when the SMU completes a measure action

smuX.trigger.PULSE_COMPLETE_EVENT_ID

Occurs when the SMU completes a pulse

smuX.trigger.SWEEP_COMPLETE_EVENT_ID

Occurs when the SMU completes a sweep

smuX.trigger.IDLE_EVENT_ID

Occurs when the SMU returns to the idle state

digio.trigger[N].EVENT_ID

Occurs when an edge is detected on a digital I/O line

tsplink.trigger[N].EVENT_ID

Occurs when an edge is detected on a TSP‑Link line

lan.trigger[N].EVENT_ID

Occurs when the appropriate LXI trigger packet is received on LAN trigger object N

display.trigger.EVENT_ID

Occurs when the TRIG key on the front panel is pressed

trigger.EVENT_ID

Occurs when a *TRG command is received on the remote interface

GPIB only: Occurs when a GET bus command is received

USB only: Occurs when a USBTMC TRIGGER message is received

VXI-11 only: Occurs with the VXI-11 command device_trigger; reference the VXI-11 standard for additional details on the device trigger operation

trigger.blender[N].EVENT_ID

Occurs after a collection of events is detected

trigger.timer[N].EVENT_ID

Occurs when a delay expires

trigger.generator[N].EVENT_ID

Occurs when the trigger.generator[N].assert() function is executed

* Use the name of the trigger event ID to set a stimulus value rather than the numeric value. Using the name makes the code compatible for future upgrades (for example, if the numeric values must change when enhancements are added to the instrument).

** smuX can be smua for channel A or smub for channel B

Using the remote trigger model

The source‑measure unit (SMU) in the 2600B has a remote trigger model that supports a wide range of triggering features for source sweeps, triggered measurements, and pulse actions.

Measurements using the trigger model can be made synchronously with sourcing actions or they can be made asynchronously. The following figures graphically illustrate both modes of the remote trigger model.

Remote trigger model: Normal (synchronous) mode

Remote trigger model: Normal (synchronous) mode

Remote trigger model: Asynchronous mode

Remote trigger model: Asynchronous mode

When the smuX.trigger.measure.action attribute is set to smuX.DISABLE or smuX.ENABLE, the trigger model operates in synchronous measurement mode. When it is set to smuX.ASYNC, it operates in asynchronous mode.

Each section of the trigger model performs a function:

Idle state

If a sweep is not in process, the SMU is in the idle state. Use the smuX.trigger.initiate() function to move the SMU from the idle state to the arm layer.

Arm layer

Begins a sweep. Each sweep starts and ends in the arm layer.

Trigger layer

All source, measurement, and pulse actions occur in the trigger layer.

  • Source: Outputs the programmed voltage or current source value.
  • Measurement: Where the current, voltage, resistance, and power measurements occur.
  • End pulse: The end pulse action sources the idle (or bias) level if the pulse mode is enabled.

The remote trigger model dictates the sequence of operation for the SMU when it is configured to perform a sweep. When the SMU comes to an event detector, it suspends operation and waits for the event you have assigned to the stimulus input. If no event is assigned, the SMU continues uninterrupted past the event detector and through the trigger model. When the SMU comes to an action block, it performs the appropriate action, if enabled. The SMU loops through the arm and trigger layers until the programmed arm and trigger counts are satisfied.

Configuring source and measure actions

You can configure the source action using any of the following functions:

smuX.trigger.source.linearY()
smuX.trigger.source.logY()
smuX.trigger.source.listY()

Where:

Y = Source function (v = voltage, i = current)

Source functions cannot be changed within a sweep.

To enable the source action, set the smuX.trigger.source.action attribute to smuX.ENABLE.

The source‑measure unit (SMU) can be configured to perform any or all available measurements during a sweep using the smuX.trigger.measure.Y() function. To enable the measure action for a simple synchronous sweep, set the smuX.trigger.measure.action attribute to smuX.ENABLE. To enable the measure action for an asynchronous sweep, set the smuX.trigger.measure.action attribute to smuX.ASYNC.

VARIABLE - NOTE In asynchronous mode, trigger your measurements before the source completes the sweep (before the end sweep action occurs). If the source loop has completed its end sweep action, the measure loop terminates unless the measure action block is actively measuring. If this is the case, the active measurement is allowed to complete before returning to the arm layer.

VARIABLE - NOTE For more information about the sweep functions, refer to Sweep operations.

Configured source and measure delays are imposed when the SMU executes the source and measure action blocks. Additionally, if the measure count setting is greater than one, then the measure count is satisfied each time the measure action is performed.

The arm and trigger counts must be set to control how many times the SMU executes the source and measure actions. The arm count indicates the number of times to execute the complete sweep. The trigger count sets the number of loops in the trigger layer. Typically, you set the trigger count to be equal to the number of points in the configured sweep. If the trigger count is not equal to the number of points configured in the sweep, then one of the following occurs:

  • If the trigger count is greater than the number of points in a sweep, the SMU satisfies the trigger count by restarting the sweep values from the beginning. The points are configured by the smuX.trigger.source.linearY(), smuX.trigger.source.logY(), or smuX.trigger.source.listY() command.
  • If the trigger count is less than the number of source values configured, the SMU satisfies the trigger count and ignores the remaining source values.

For example, configure a three-point linear voltage sweep from 1 V to 3 V, with the trigger count set to 2. The SMU outputs 1 V, 2 V. If the trigger count is set to 6, the SMU outputs the values 1 V, 2 V, 3 V, 1 V, 2 V, 3 V, repeating the source values twice in a single sweep.

Enabling pulse mode sweeps using the end pulse action

Enable pulse mode sweeps using the end pulse action. The example command below illustrates how to configure pulse mode sweeps by setting the end pulse action:

smua.trigger.endpulse.action = smua.SOURCE_IDLE

You can use timers to configure the pulse width and period (see Timers for more information). To disable pulse mode sweeps, set the smuX.trigger.endpulse.action attribute to smuX.SOURCE_HOLD.

SMU event detectors

As shown in Using the remote trigger model, the source‑measure unit (SMU) has multiple event detectors to control the timing of various actions, as shown in the table below. Each event detector monitors for the trigger event assigned to the associated stimulus input. Operation through the trigger model is delayed at the event detector until the programmed trigger event occurs.

If the stimulus input is set to zero (0), the SMU continues uninterrupted through the remote trigger model.

Event detectors

Event detector

Function

Arm

Controls entry into the trigger layer of the trigger model.

Source

Controls execution of the source action.

Measure

Controls execution of the measurement action.

End pulse

Controls execution of the end pulse action.

For the SMU, action overruns occur when a new trigger is detected before the previous trigger is acted upon. When the trigger model is configured for asynchronous measurements, a measurement trigger generates an overrun if the SMU is not ready to start a new measurement.

Clearing SMU event detectors

When an event detector is cleared, the event detector discards previously detected trigger events. This prevents the source‑measure unit (SMU) from using trigger events that were detected during the last sweep or while it is in the arm layer, and allows it to start monitoring for new trigger events.

SMU event detectors are automatically cleared when:

  • A sweep is initiated using the smuX.trigger.initiate() function*.
  • The SMU moves from the arm layer into the trigger layer and the smuX.trigger.autoclear attribute is enabled.

* smuX can be smua for channel A or smub for channel B

Using the TRIG key to trigger a sweep

You can configure the source-measure unit (SMU) to perform a sweep in which each source step is triggered by the front‑panel TRIG key. The source action is preceded by the source event detector. The SMU pauses operation at an event detector until a programmed event occurs. The SMU can be programmed to wait at the source event detector (that is, not start the source action) until the TRIG key is pressed.

To configure the front‑panel TRIG key to trigger the source action, assign the trigger event created by the TRIG key (display.trigger.EVENT_ID) to the source stimulus input (smuX.trigger.source.stimulus).

The programming example below illustrates how to configure a 10-point linear voltage sweep on SMU A, in which each step is triggered by the TRIG key:

-- Configure a 10-point source voltage sweep.

smua.trigger.source.linearv(1, 10, 10)

smua.trigger.source.action = smua.ENABLE

-- Configure the TRIG key press as an input trigger for source action.

smua.trigger.source.stimulus = display.trigger.EVENT_ID

-- Configure the SMU to execute a single 10-point sweep.

smua.trigger.count = 10

smua.trigger.arm.count = 1

-- Turn on the output in preparation for the sweep.

smua.source.output = smua.OUTPUT_ON

-- Start the sweep and clear the event detectors.

smua.trigger.initiate()

-- The SMU waits for the front-panel TRIG key press before executing

-- each source action.

-- Wait for the sweep to complete.

waitcomplete()

The following figure graphically illustrates this example. See Sweep operation for more information about sweep operation.

Front-panel TRIG key triggering

Using trigger events to start actions on trigger objects

You can configure trigger objects to respond to events generated by other trigger objects, such as using a digital I/O trigger to initiate a sweep. To configure a trigger object to monitor for an event, assign the event ID of the trigger event to the stimulus input. When the specified trigger event occurs, the trigger object performs an action. The programming example below illustrates how to generate a digital I/O line 2 output trigger pulse for each SMU A source complete event:

-- Configure digio line 2 to generate an output trigger pulse each

-- time SMU A generates a source complete event.

digio.trigger[2].stimulus = smua.trigger.SOURCE_COMPLETE_EVENT_ID

The following figure illustrates this example.

Using trigger events to start actions

A stimulus input can be configured to monitor for only one trigger event ID at a time. To monitor more than one event, use an event blender. See Event blenders for more information.

Action overruns

An action overrun occurs when a trigger object receives a trigger event and is not ready to act on it. The action overruns of all trigger objects are reported in the operation event registers of the status model. Refer to Status model and the sections on each trigger object for details on the conditions that generate an action overrun.

Digital I/O port and TSP-Link synchronization lines

The 2600B has two sets of hardware lines that can be used for triggering: 14 digital I/O lines and three TSP‑LinkTM synchronization lines. These trigger objects are configured and controlled in the same way.

VARIABLE - NOTE The 2604B, 2614B, and 2634B do not have digital input/output lines or TSP-LinkTM synchronization lines.

See Digital I/O for more information about connections and direct control of the digital I/O and TSP-Link synchronization lines.

Mode

The mode indicates the type of edge the hardware lines detect as an external input trigger. Mode also indicates the type of signal generated as an external output trigger. The following table describes the hardware trigger modes for the hardware trigger lines. For additional detail, refer to Hardware trigger modes.

VARIABLE - NOTE To disable triggering on the hardware trigger lines, set the mode to bypass. This allows direct control of the line.

Hardware trigger mode summary

Trigger mode

Output

Input

Unasserted

Asserted

Detects

Bypass

N/A

N/A

N/A

Either edge

High

Low

Either

Falling edge

High

Low

Falling

Rising edge

The programmed state of the line determines if the behavior is similar to RisingA or RisingM:

  • High similar to RisingA
  • Low similar to RisingM

RisingA

High

Low

Rising

RisingM

Low

High

Not available

Synchronous

High latching

Low

Falling

SynchronousA

High latching

High

Falling

SynchronousM

High

Low

Rising

Pulse width

Specifies the pulse width of the output trigger signal when the hardware line is asserted.

Trigger configuration on hardware lines

You can configure the 2600B to send digital signals to trigger external instruments. You can link the output triggers to the completion of certain source-measure actions to enable hardware handshaking. The programming example below illustrates this.

-- Configure the 2600B to detect a rising

-- edge on digital I/O line 2.

digio.trigger[2].mode = digio.TRIG_RISINGA

digio.trigger[2].clear()

-- Configure SMU A to start its source action when a

-- trigger event occurs on digital I/O line 2.

smua.trigger.source.stimulus = digio.trigger[2].EVENT_ID

-- Configure digital I/O line 4 to output a 1 ms

-- rising-edge trigger pulse at the completion of

-- the SMU sweep.

digio.trigger[4].mode = digio.TRIG_RISINGM

digio.trigger[4].pulsewidth = 0.001

digio.trigger[4].stimulus = smua.trigger.SWEEP_COMPLETE_EVENT_ID

The triggering setup for this example is shown in the following figure.

External instrument triggering

Action overruns on hardware lines

An action overrun occurs when a trigger event is received before the digital I/O or TSP‑LinkTM line is ready to process it. The generation of an action overrun is dependent upon the trigger mode selected for that line. For more details on the causes of action overruns, see Hardware trigger modes. Use the status model to monitor for the occurrence of action overruns. For details, see Status model.

Timers

A timer is a trigger object that performs a delay when triggered. You can use timers to create delays, to start measurements, and step the source value at timed intervals. When a delay expires, the timer generates a trigger event. The 2600B has eight independent timers.

Timer attributes

Each timer has attributes that you can configure. These attributes are described in the following sections.

Count

The count sets the number of events to generate each time the timer generates a trigger event. Each event is separated by the delay set by the trigger.timer[N].delay command.

To configure the count, use the trigger.timer[N].count command.

Set the count number to 0 (zero) to cause the timer to generate trigger events indefinitely.

Timer delays

You can configure timers to perform the same delay each time or set up a delay list that allows the timer to sequence through an array of delay values. All delay values are specified in seconds.

A delay is the period after the timer is triggered and before the timer generates a trigger event. The programming example below illustrates how to configure timer 3 for a 10 s delay:

trigger.timer[3].delay = 10

You can configure a custom delay list to allow the timer to use a different interval each time it performs a delay. Each time the timer generates a trigger event, it uses the next delay value in the list. The timer repeats the delay list after all the elements in the delay list have been used. The programming example below illustrates how to configure timer 3 for delays of 2, 10, 15, and 7 seconds:

-- Configure timer 3 to complete delays of 2 s, 10 s,

-- 15 s, and 7 s.

trigger.timer[3].delaylist = {2, 10, 15, 7}

VARIABLE - NOTE Assigning a value to the delay attribute is the same as configuring it with a one‑element delay list.

Pass-through mode

When enabled, the timer generates a trigger event immediately when it is triggered. The timer generates additional trigger events each time a delay expires. If the pass-through attribute is disabled, the timer does not generate a trigger event until after the first delay elapses. The programming example below illustrates how to configure timer 3 by enabling pass-through mode:

trigger.timer[3].passthrough = true

Triggering a timer

You can configure a timer to start a delay when a trigger object generates a trigger event. Timers cannot be started with a command. A trigger event from a trigger object must be used to initiate a delay.

Assigning the stimulus attribute

Assign an event ID to the trigger.timer[N].stimulus attribute to configure the timer to start a delay when a specific trigger event occurs. The programming example below illustrates how to configure a source-delay-measure (SDM) cycle.

-- Configure the timer to begin when source action completes.

trigger.timer[1].stimulus = smua.trigger.SOURCE_COMPLETE_EVENT_ID

-- SMUA delay before a measurement begins.

smua.trigger.measure.stimulus = trigger.timer[1].EVENT_ID

Using a timer for an SDM cycle

Timer action overruns

The timer receives an action overrun when it generates a trigger event while a timer delay is still in progress. Use the status model to monitor for the occurrence of action overruns. For details, see Status model.

Using timers to perform pulse mode sweeps

You can use timers to control the pulse width during a pulsed sweep. To create a pulse train, a second timer must be used to configure the pulse period. The following topics provide examples that show a single pulse output and a pulse train output.

VARIABLE - NOTE To create a pulse, the SMU end pulse action smuX.trigger.endpulse.action must be set to smuX.SOURCE_IDLE.

Pulsing from a positive to a negative pulse level

The following single pulse and pulse train examples pulse from a zero bias level to a positive pulse level (+5 V). If you change the pulse level to a negative value, such as -5 V, the pulse width is nominally 100 µs shorter than expected. The pulse width is shortened because the SMU source must change polarity when pulsing from zero to a negative level, and there is an internal 100 µs delay associated with the change. This polarity change is required because the number zero (0) is treated as a positive value. Therefore, pulsing from zero to +5 V does not require a polarity change, but pulsing from zero to -5 V does. There are multiple ways to obtain the correct pulse width, but the simplest is to define a negative zero and set the bias level equal to that value.

A negative zero is a value that is mathematically negative and functionally equivalent to zero. For a SMU, a source level setting that is functionally equivalent to zero is one that is significantly less than the programming resolution of the source range being used. Programming resolution values are listed by range in the SMU instrument specifications. A suitable value that works for all voltage and current source ranges in the 2600B instruments is -1e-18. Therefore, to pulse from a zero bias level to a negative pulse level, make the following change to the examples:

-- Set the voltage source range and the bias source level and limit.

smua.source.rangev = 5

neg_zero = -1e-18

smua.source.levelv = neg_zero

smua.source.limiti = 0.1

Single pulse example

The SMU programming example below illustrates how to use a single timer to control the pulse width of a single‑shot pulse measurement. The programming example configures the timer and SMU as follows:

Timer 1: Pulse‑width timer

  • Set the delay attribute of a timer equal to the appropriate pulse width.
  • Configure the timer to trigger when the SMU moves out of the arm layer of the trigger model.
  • Assign the trigger event generated by the timer to the stimulus input of the SMU end pulse event detector.

SMU A

  • Configure the source action to start immediately by setting the stimulus input of the source event detector to 0.
  • Set the end pulse action to SOURCE_IDLE.

The following figure shows the trigger setup for this example.

Single-pulse triggering

Single pulse example code

VARIABLE - NOTE Even though no measurements are made in this example, a measure range is set. When sourcing voltage, it is good practice to set the current measure range equal to the triggered source limit range. This is especially important when the triggered limit is greater than 100 mA. If the measure range is not set, it may affect the shape of the pulse. This step is not necessary when sourcing current.

-- Reset SourceMeter instrument to default conditions.

reset()

-- Generate a single pulse with the following characteristics:

-- * Bias (idle) level = 0 V

-- * Pulse level = 5 V

-- * Pulse width = 500 us

-- Configure the source function.

smua.source.func = smua.OUTPUT_DCVOLTS

-- Set the voltage source range and the idle or bias source level and limit.

smua.source.rangev = 5

smua.source.levelv = 0

smua.source.limiti = 0.1

-- Configure the trigger-timer parameters to output a single 500 us pulse.

trigger.timer[1].delay = 0.0005

trigger.timer[1].count = 1

trigger.timer[1].passthrough = false

-- Start the timer when the SMU moves from the ARM layer to the TRIGGER layer.

trigger.timer[1].stimulus = smua.trigger.ARMED_EVENT_ID

-- Configure the trigger model to execute a single-point voltage pulse list sweep.

-- No measurements are made.

smua.trigger.source.listv({5})

smua.trigger.source.action = smua.ENABLE

smua.trigger.measure.action = smua.DISABLE

-- Set the trigger source limit to the same value as the bias limit.

smua.trigger.source.limiti = smua.LIMIT_AUTO

smua.measure.rangei = 0.1

-- Configure the source action to start immediately.

smua.trigger.source.stimulus = 0

-- Configure the endpulse action to achieve a pulse.

smua.trigger.endpulse.action = smua.SOURCE_IDLE

smua.trigger.endpulse.stimulus = trigger.timer[1].EVENT_ID

-- Set the appropriate counts for the trigger model.

smua.trigger.arm.count = 1

smua.trigger.count = 1

-- Turn on the SMU output and initiate the trigger model to output a single pulse.

smua.source.output = smua.OUTPUT_ON

smua.trigger.initiate()

-- Wait for the sweep to complete.

waitcomplete()

-- Turn off SMU output.

smua.source.output = smua.OUTPUT_OFF

Pulse train example

The SMU programming example below illustrates how to use two timers: One to control the pulse period, a second to control the pulse width. The example configures the timers and SMU as follows:

Timer 1: Pulse period timer

  • Set the delay attribute to the appropriate pulse period (see the following figure).
  • Configure the timer to start when the sweep is initiated.
  • Enable the pass-through attribute so that the timer generates a trigger event at the start of the first delay.
  • Set the count equal to one less than the total number of pulses to output.

    Pulse train

Timer 2: Pulse width timer

  • Set the delay attribute to an appropriate pulse width (see the following figure).
  • Set the stimulus input to the event ID of timer 1 (the start of each pulse is the start of the pulse period).
  • Set the count equal to 1 so that only one pulse is issued per period.

SMU A

  • Set the source stimulus input to the event ID of timer 1 so that the source action starts when the period starts.
  • Set the end pulse action to smua.SOURCE_IDLE so that the output is returned to the idle level after the pulse completes.
  • Set the end pulse stimulus input to the event ID of timer 2 so that the end pulse action executes when the pulse width timer expires.
  • Set the trigger count equal to the total number of pulses to output.
  • Set the arm count to 1.

The following figure shows the trigger setup for this example.

Pulse train triggering

Pulse train example code

VARIABLE - NOTE Even though no measurements are made in this example, a measure range is set. When sourcing voltage, it is good practice to set the current measure range equal to the triggered source limit range. This is especially important when the triggered limit is greater than 100 mA. If the measure range is not set, it may impact the shape of the first pulse in the train. This step is not necessary when sourcing current.

-- Reset the SourceMeter instrument to default conditions.

reset()

-- Generate a 10-point pulse train with the following characteristics:

-- * Bias (Idle) Level = 0 V

-- * Pulse Level = 5 V

-- * Pulse Width = 600 us

-- * Pulse Period = 5 ms

-- Configure the source function.

smua.source.func = smua.OUTPUT_DCVOLTS

-- Set the voltage source range and the bias source level and limit.

smua.source.rangev = 5

smua.source.levelv = 0

smua.source.limiti = 0.1

-- Use trigger timer 1 to control the period and trigger timer 2 to control the

-- pulse width. Alias the timers for convenience and clarity.

period_timer = trigger.timer[1]

pulsewidth_timer = trigger.timer[2]

-- Configure the period timer to output 10 total trigger events.

period_timer.delay = 0.005

-- The effective count is 10 because the passthrough setting is true.

period_timer.count = 9

-- Configure the timer to immediately output a trigger event when it is started.

period_timer.passthrough = true

-- Start the timer when the SMU moves from the ARM layer to the TRIGGER layer.

period_timer.stimulus = smua.trigger.ARMED_EVENT_ID

-- Configure the pulse width timer to output one trigger event for each period.

pulsewidth_timer.delay = 0.0006

pulsewidth_timer.count = 1

-- Do not immediately output a trigger event when pulse width timer is started.

pulsewidth_timer.passthrough = false

-- Start the pulse width timer with the period timer output trigger event.

pulsewidth_timer.stimulus = period_timer.EVENT_ID

-- Configure the trigger model to execute a 10-point fixed-level voltage pulse

-- train. No measurements are made.

smua.trigger.source.listv({5})

smua.trigger.source.action = smua.ENABLE

smua.trigger.measure.action = smua.DISABLE

-- Set the trigger source limit, which can be different than the bias limit.

-- This is an important setting for pulsing in the extended operating area.

smua.trigger.source.limiti = 1

smua.measure.rangei = 1

-- Trigger SMU source action with the period timer event.

smua.trigger.source.stimulus = period_timer.EVENT_ID

-- Configure the endpulse action to achieve a pulse.

smua.trigger.endpulse.action = smua.SOURCE_IDLE

-- Trigger the SMU end pulse action with a pulse width timer event.

smua.trigger.endpulse.stimulus = pulsewidth_timer.EVENT_ID

-- Set the trigger model count to generate one 10-point pulse train.

smua.trigger.arm.count = 1

smua.trigger.count = 10

-- Turn on the SMU output and initiate the trigger model to output the pulse train.

smua.source.output = smua.OUTPUT_ON

smua.trigger.initiate()

-- Wait for the sweep to complete.

waitcomplete()

-- Turn off SMU output.

smua.source.output = smua.OUTPUT_OFF

Event blenders

The ability to combine trigger events is called event blending. You can use an event blender to wait for up to four input trigger events to occur before responding with an output event.

You set the event blender operation using remote commands. You cannot set them up through the front panel.

You can program up to six event blenders for the 2600B.

Event blender modes

Event blenders perform logical AND and logical OR functions on trigger events. For example, trigger events can be triggered when either a manual trigger or external input trigger is detected.

  • Or: Generates an event when an event is detected on any one of the four stimulus inputs
  • And: Generates an event when an event is detected on all of the assigned stimulus inputs

Set the trigger.blender[N].orenable attribute to configure the event blender mode. Setting the attribute to true enables OR mode; setting the attribute to false enables AND mode.

Assigning input trigger events

Each event blender has four stimulus inputs. You can assign a different trigger event ID to each stimulus input. The programming example below illustrates how to assign the source complete event IDs of SMU A and SMU B to stimulus inputs 1 and 2 of event blender 1:

trigger.blender[1].stimulus[1] = smua.SOURCE_COMPLETE_EVENT_ID

trigger.blender[1].stimulus[2] = smub.SOURCE_COMPLETE_EVENT_ID

Action overruns

Action overruns are generated by event blenders depending on the mode, as shown in the following table. Use the status model to monitor for the occurrence of action overruns. For details, see Status model.

 

Action overruns

Mode

Action overrun

And

Generates an overrun when a second event on any of its inputs is detected before generating an output event.

Or

Generates an overrun when two events are detected simultaneously.

LAN triggering overview

Triggers can be sent and received over the LAN interface. The 2600B supports LAN extensions for instrumentation (LXI) and has eight LAN triggers that generate and respond to LXI trigger packets.

Understanding hardware value and pseudo line state

LAN triggering is similar to hardware synchronization except that LXI trigger packets are used instead of hardware signals. A bit in the LXI trigger packet called the hardware value simulates the state of a hardware trigger line. The 2600B stores the hardware value of the last LXI trigger packet that was sent or received as the pseudo line state.

The stateless event flag is a bit in the LXI trigger packet that indicates if the hardware value should be ignored. If it is set, the 2600B ignores the hardware value of the packet and generates a trigger event. The 2600B always sets the stateless flag for outgoing LXI trigger packets. If the stateless event flag is not set, the hardware value indicates the state of the signal.

Changes in the hardware value of consecutive LXI trigger packets are interpreted as edge transitions. Edge transitions generate trigger events. If the hardware value does not change between successive LXI trigger packets, the 2600B assumes an edge transition was missed and generates a trigger event. The following table illustrates edge detection in LAN triggering.

LXI trigger edge detection

Stateless event flag

Hardware value

Pseudo line state

Falling edge

Rising edge

0

0

0

Detected

Detected

0

1

0

-

Detected

0

0

1

Detected

-

0

1

1

Detected

Detected

1

-

-

Detected

Detected

Set the LAN trigger mode to configure the edge detection method in incoming LXI trigger packets. The mode that is selected also determines the hardware value in outgoing LXI trigger packets. The following table lists the LAN trigger modes.

LAN trigger modes

Trigger mode

Input detected

Output generated

Notes

Either edge

Either

Negative

 

Falling edge

Falling

Negative

 

Rising edge

Rising

Positive

 

RisingA

Rising

Positive

Same as Rising edge

RisingM

Rising

Positive

Same as Rising edge

Synchronous

Falling

Positive

Same as SynchronousA

SynchronousA

Falling

Positive

 

SynchronousM

Rising

Negative

 

The programming example below illustrates how to configure the LAN trigger mode.

-- Set LAN trigger 2 to falling edge.

lan.trigger[2].mode = lan.TRIG_FALLING

Understanding LXI trigger event designations

LAN trigger objects generate LXI trigger events, which are LAN0 to LAN7 (zero based). In the command table, the LXI trigger events can be accessed using lan.trigger[1] through lan.trigger[8].

lan.trigger[1] corresponds to LXI trigger event LAN0 and lan.trigger[8] corresponds to LXI trigger event LAN7.

Generating LXI trigger packets

You can configure the 2600B to output an LXI trigger packet to other LXI instruments.

To generate LXI trigger packets:

  1. Call the lan.trigger[N].connect() function.
  2. Select the event that triggers the outgoing LXI trigger packet by assigning the specific event ID to the LAN stimulus input.

Make sure to use the same LXI domain on both the 2600B instrument and the other instrument. If the 2600B has a different LXI domain than the instrument at the other end of the trigger connection, the LXI trigger packets are ignored by both instruments.

Command interface triggering

A command interface trigger occurs when:

  • A GPIB GET command is detected (GPIB only)
  • A VXI-11 device_trigger method is invoked (VXI-11 only)
  • A *TRG message is received
  • A USBTMC TRIGGER message is received (USB only)

Use trigger.EVENT_ID to monitor for command interface triggers. To ensure that commands and triggers issued over the command interface are processed in the correct order, a trigger event is not generated until:

  • The trigger command is executed
  • trigger.wait() retrieves the trigger command from the command queue before it would normally be executed

Command interface triggering does not generate action overruns. The triggers are processed in the order that they are received in the 2600B command queue. The 2600B only processes incoming commands when no commands are running. Unprocessed input triggers can cause an overflow in the command queue. It is important to make sure a script processes triggers while it is running.

VARIABLE - NOTE The command queue can fill up with trigger entries if too many *TRG messages are received while a test script is running, even if the script is processing triggers. You can avoid this by using the localnode.prompts4882 attribute (see TSP command reference for more information), and by using trigger.wait() calls that remove the *TRG messages from the command queue. If the command queue fills with too many trigger entries, messages like abort are not processed.

Trigger generator

The 2600B has two trigger generators that you can use to generate trigger events. Use the trigger.generator[N].assert()function to directly trigger events from the command interface or a script (for example, you can trigger a sweep while the instrument is under script control).

The trigger.generator[N].EVENT_ID constant is an identification number that identifies events generated by this generator. To have another trigger object respond to trigger events generated by this generator, set the stimulus attribute of the other object to the value of this constant.

Manual triggering

The TRIG key is used for manual triggering. Each time the TRIG key is pressed, a trigger event is generated. You can monitor for a manual trigger event using the event ID display.trigger.EVENT_ID. See Using the TRIG key to trigger a sweep for an example of how to use a manual trigger.

There are no action overruns for manual triggering.

Interactive triggering

The complexity of some test system configurations may not allow a static trigger setup. These configurations require more dynamic control of triggering than the static trigger setup provides. For such cases, a setup providing interactive trigger programming allows the generation and detection of trigger events that can be controlled on demand under remote control. For example, you can use interactive triggering when you need to make multiple source function changes or implement conditional branching to other test setups based on recent measurements.

Detecting trigger events using the wait() function

Most of the 2600B trigger objects, except for source-measure unit (SMU) trigger objects, have built-in event detectors that monitor for trigger events. The event detector only monitors events generated by that object and cannot be configured to monitor events generated by any other trigger object. Using the wait() function of the trigger object causes the 2600B to suspend command execution until a trigger event occurs or until the specified timeout period elapses.

For example, use trigger.blender[N].wait(Y) to suspend command execution until an event blender generates an event, where N is the specific event blender and Y is the timeout period. After executing the wait() function, the event detector of the trigger object is cleared.

The following programming example illustrates how to suspend command execution while waiting for various events to occur:

-- Wait up to 10 seconds for a front-panel TRIG key press.

display.trigger.wait(10)

-- Wait up to 60 seconds for timer 1 to complete its delay.

trigger.timer[1].wait(60)

-- Wait up to 30 seconds for input trigger to digital I/O line 10.

digio.trigger[10].wait(30)

Using the assert function to generate output triggers

You can use certain trigger objects to generate output triggers on demand. These trigger objects are the digital I/O lines, TSP‑Link synchronization lines, and the LAN.

The programming example below illustrates how to generate an output trigger using the assert function of the trigger object.

VARIABLE - NOTE Connection parameters and commands that establish a connection are not shown in this example.

-- Generate a falling-edge trigger on digital I/O line 3.

digio.trigger[3].mode = digio.TRIG_FALLING

digio.trigger[3].assert()

-- Generate a rising edge trigger on TSP-Link sync line 1.

tsplink.trigger[1].mode = tsplink.TRIG_RISINGM

tsplink.trigger[1].assert()

-- Generate a LAN trigger on LAN pseudo line 6.

lan.trigger[6].mode = lan.TRIG_EITHER

lan.trigger[6].assert()

Using the release function of the hardware lines

Use the release function to allow the hardware line to output another external trigger when the pulse width is set to 0.

Setting the pulse width to 0 results in an indefinite length pulse when the assert function is used to output an external trigger. When an indefinite length pulse is used, the release function must be used to release the line before another external trigger can be output.

The release function can also be used to release latched input triggers when the hardware line mode is set to Synchronous. In Synchronous mode, the receipt of a falling edge trigger latches the line low. The release function releases this line high in preparation for another input trigger.

The programming example below illustrates how to output an indefinite external trigger.

-- Set digio line 1 to output an indefinite external trigger.

digio.trigger[1].mode = digio.TRIG_FALLING

digio.trigger[1].pulsewidth = 0

digio.trigger[1].assert()

-- Release digio line 1.

digio.trigger[1].release()

-- Output another external trigger.

digio.trigger[1].assert()

For information about hardware lines, see Digital I/O port and TSP-Link synchronization lines.

Using the set function to bypass SMU event detectors

The set functions are useful whenever you want the source‑measure unit (SMU) to continue operation without waiting for a programmed trigger event.

There is a set function for each SMU event detector. When called, the function immediately satisfies the event detector, allowing the SMU to continue through the trigger model.

For example, you can use a set function when you want the SMU to immediately perform an action the first time through the trigger model, even if a programmed trigger event does not occur. You can use a set function to start actions on the SMU if there is a missed trigger event.

The programming example below illustrates how to have the SMU immediately perform an action the first time through the trigger model, even if a programmed trigger event does not occur.

-- Immediately sets the arm event detector of SMU A

-- to the detected state.

smua.trigger.arm.set()

-- Sets the measure event detector of SMU A.

smua.trigger.measure.set()

Event detector overruns

If a second trigger event is generated before an event detector clears, the trigger object generates a detector overrun. You can check for detector overruns by reading the overrun attribute of the trigger object. The attribute is set to true when an overrun occurs. You can use the clear() function to immediately clear the event detector, discarding any history of previous trigger events. The clear() function also clears any detector overruns.

VARIABLE - NOTE Detector overruns are not the same as the action overruns that are reported in the status model.

The programming example below illustrates how to check for and respond to detector overruns.

testOver = digio.trigger[4].overrun

if testOver == true then

print("Digital I/O overrun occurred.")

end

Examples using interactive triggering

The following examples demonstrate how to use interactive triggering.

Command interface interactive trigger example

The programming example below illustrates how to clear triggers, turn on the source‑measure unit (SMU) output, and then enable a 30‑second timeout to wait for a command interface trigger. When the trigger is received, the 2600B performs a voltage reading.

-- Clear any previously detected command interface triggers.

trigger.clear()

-- Turn on output.

smua.source.output = smua.OUTPUT_ON

-- Wait 30 seconds for a command interface trigger.

triggered = trigger.wait(30)

-- Get a voltage reading.

reading = smua.measure.v()

-- Send a command interface trigger to trigger the measurement.

*TRG

VARIABLE - NOTE *TRG cannot be used in a script.

Manual triggering example

The programming example below illustrates how to pause a script and prompt the operator to press the TRIG key when the operator is ready to continue. If the TRIG key is not pressed, the test continues after waiting 10 minutes (600 seconds).

display.clear()

display.trigger.clear()

display.setcursor(1, 1)

display.settext("Take a Break")

display.setcursor(2, 1)

display.settext("Press TRIG to continue")

display.trigger.wait(600)

display.clear()

Digital I/O triggering interactive example

The programming example below illustrates how to configure digital I/O line 2 as an input trigger and digital I/O line 14 as an output trigger. The 2600B to wait for an external input trigger on digital I/O line 2. If a trigger event occurs, the 2600B outputs an external trigger on digital I/O line 14. If no trigger event is received on digital I/O line 2, the test is aborted.

-- Configure digital I/O lines 2 and 14 for input trigger detection

-- and output trigger generation, respectively.

digio.trigger[2].mode = digio.TRIG_RISINGA

digio.trigger[2].clear()

digio.trigger[14].mode = digio.TRIG_FALLING

digio.trigger[14].pulsewidth = 0.0001

-- Wait 15 seconds for a trigger event to occur on digital I/O line 2.

trigInput = digio.trigger[2].wait(15)

-- If a trigger event occurs on digital I/O line 2, assert an output

-- trigger on digital I/O line 14. If a trigger event does

-- not occur, turn off the output of smua and issue a message

-- on the front-panel display.

if trigInput == true then

digio.trigger[14].assert()

else

smua.source.output = smua.OUTPUT_OFF

display.screen = display.USER

display.clear()

display.setcursor(1, 1)

display.settext("No trigger received. Test aborted.")

exit()

end

Hardware trigger modes

You can use different hardware trigger modes for digital I/O and TSP-LinkTM synchronization. Use hardware triggers to integrate Keithley instruments and non-Keithley instruments in a test system. The 2600B supports 14 digital I/O lines and three TSP-Link synchronization lines that can be used for input or output triggering.

VARIABLE - NOTE For direct control of the line state, use the bypass trigger mode.

Falling edge trigger mode

The falling edge trigger mode generates low pulses and detects all falling edges. The figure titled "Falling edge input trigger" shows the characteristics of the falling edge input trigger; the figure titled "Falling edge output trigger" shows the falling edge output trigger.

Input characteristics:

  • Detects all falling edges as input triggers.

    Falling edge input trigger

Output characteristics:

  • In addition to trigger events from other trigger objects, the digio.trigger[N].assert() and tsplink.trigger[N].assert() commands generate a low pulse for the programmed pulse duration.
  • An action overrun occurs if the physical line state is low and a source event occurs.

    Falling edge output trigger

Rising edge master trigger mode

Use the rising edge master (RisingM) trigger mode (see the figure titled "RisingM output trigger") to synchronize with non-Keithley instruments that require a high pulse. Input trigger detection is not available in this trigger mode. You can use the RisingM trigger mode to generate rising edge pulses.

VARIABLE - NOTE The RisingM trigger mode does not function properly if the line is driven low by an external drive.

Output characteristics:

  • Configured trigger events, as well as the digio.trigger[N].assert() and tsplink.trigger[N].assert() commands, cause the physical line state to float high during the trigger pulse duration.
  • An action overrun occurs if the physical line state is high when a stimulus event occurs.

    RisingM output trigger

Rising edge acceptor trigger mode

The rising edge acceptor trigger mode (RisingA) generates a low pulse and detects rising edge pulses. Refer to the following figures.

Input characteristics:

  • All rising edges generate an input event.

    RisingA input trigger

Output characteristics:

  • In addition to trigger events from other trigger objects, the digio.trigger[N].assert() and tsplink.trigger[N].assert() commands generate a low pulse that is similar to the falling edge trigger mode.

    RisingA output trigger

Either edge trigger mode

The either edge trigger mode generates a low pulse and detects both rising and falling edges.

Input characteristics:

  • All rising or falling edges generate an input trigger event.

    Either edge input trigger

Output characteristics:

  • In addition to trigger events from other trigger objects, the digio.trigger[N].assert() and tsplink.trigger[N].assert() commands generate a low pulse that is similar to the falling edge trigger mode.
  • An action overrun occurs if the physical line state is low while a stimulus event occurs.

    Either edge output trigger

About the synchronous trigger modes

Use the synchronous trigger modes to implement bidirectional triggering, to wait for one node, or to wait for a collection of nodes to complete all triggered actions.

All non-Keithley instrumentation must have a trigger mode that functions similar to the SynchronousA or SynchronousM trigger modes.

To use synchronous triggering, configure the trigger master to SynchronousM trigger mode or the non-Keithley equivalent. Configure all other nodes in the test system to SynchronousA trigger mode or a non-Keithley equivalent.

Synchronous master trigger mode (SynchronousM)

Use the synchronous master trigger mode to generate falling edge output triggers, to detect the rising edge input triggers, and to initiate an action on one or more external nodes with the same trigger line.

In this mode, the output trigger consists of a low pulse. All non-Keithley instruments attached to the synchronization line in a trigger mode equivalent to SynchronousA must latch the line low during the pulse duration.

To use the SynchronousM trigger mode, configure the triggering master as SynchronousM and then configure all other nodes in the test system as Synchronous, SynchronousA, or to the non-Keithley instruments equivalent.

VARIABLE - NOTE Use the SynchronousM trigger mode to receive notification when the triggered action on all nodes is complete.

Input characteristics:

  • All rising edges are input triggers.
  • When all external drives release the physical line, the rising edge is detected as an input trigger.
  • A rising edge is not detected until all external drives release the line and the line floats high.

    Synchronous master input trigger

Output characteristics:

  • In addition to trigger events from other trigger objects, the digio.trigger[N].assert() and tsplink.trigger[N].assert() functions generate a low pulse that is similar to the falling edge trigger mode.
  • An action overrun occurs if the physical line state is low when a stimulus event occurs.

    Synchronous master output trigger

Synchronous acceptor trigger mode (SynchronousA)

Use the synchronous acceptor trigger mode (SynchronousA) on a trigger subordinate that operates with a trigger master configured for the SynchronousM trigger mode. The roles of the internal and external drives are reversed in the SynchronousA trigger mode.

Input characteristics:

  • The falling edge is detected as the external drive pulses the line low, and the internal drive latches the line low.

    Synchronous acceptor input trigger

Output characteristics:

  • In addition to trigger events from other trigger objects, the digio.trigger[N].assert() and tsplink.trigger[N].assert() functions release the line if the line is latched low. The pulse width is not used.
  • The physical line state does not change until all drives (internal and external) release the line.
  • Action overruns occur if the internal drive is not latched low and a source event is received.

    Synchronous acceptor output trigger

Synchronous trigger mode

The synchronous trigger mode is a combination of SynchronousA and SynchronousM trigger modes. Use the Synchronous trigger mode for compatibility with older Keithley products.

VARIABLE - NOTE Keithley Instruments recommends using SynchronousA and SynchronousM modes only.

Input characteristics:

  • The falling edge generates an input event and latches the internal drive low.

    Synchronous input trigger

Output characteristics:

  • In addition to trigger events from other trigger objects, the digio.trigger[N].assert() and tsplink.trigger[N].assert() functions generate a low pulse for the programmed pulse duration if the line is latched low; a falling edge does not occur.
  • A normal falling edge pulse generates when the internal drive is not latched low and the digio.trigger[N].assert() and tsplink.trigger[N].assert() functions are issued.
  • To mirror the SynchronousA trigger mode, set the pulse width to 1 µs or any small nonzero value.
  • Action overruns are disabled.

    Synchronous output trigger

Digital I/O

The 2600B has a digital input/output port that can be used to control external digital circuitry. For example, you can use a handler that is used to perform binning operations with a digital I/O port.

Port configuration

The digital I/O port, a standard female DB-25 connector (shown below), is on the rear panel.

Digital I/O port

Connecting cables for Trigger Link

Use a cable equipped with a male DB‑25 connector (L-com part number CSMN25MF-5) to connect the digital I/O port to other Keithley Instruments models equipped with a Trigger Link (TLINK) interface.

Digital I/O lines

The port provides 14 digital I/O lines. Each output is set high (+5 V) or low (0 V) and can read high or low logic levels. Each digital I/O line is an open-drain signal.

VARIABLE - NOTE The 2604B, 2614B, and 2634B do not have digital I/O lines.

+5 V output

The digital I/O port provides three +5 VDC output lines that you can use to drive external logic circuitry. The maximum combined current output for all lines is 250 mA. These lines are protected by a self-resetting fuse with a one‑hour recovery time.

Output enable line

You can use the 2601B, 2602B, and 2604B output enable (OE) line of the digital I/O with a switch in the test fixture or component handler. With proper use, power is removed from the device under test (DUT) when the lid of the fixture is opened. See Using output enable for more details.

VARIABLE - WARNING The digital I/O port of the Model 2601B/2602B/2604B is not suitable for control of safety circuits and should not be used to control a safety interlock. When an interlock is required for safety, a separate circuit should be provided that meets the requirements of the application to reliably protect the operator from exposed voltages.

Interlock line

VARIABLE - WARNING At no time should you bypass the interlock feature of the 2600B. Safe operation requires a separate interlock circuit that meets the requirements of the application to reliably protect the operator from exposed voltages. Bypassing the interlock could expose the operator to hazardous voltages that could result in personal injury or death.

The 2611B, 2612B, 2614B, 2634B, 2635B, or 2636B interlock (INT) line of the digital I/O can be used with a switch in the test fixture or component handler. With proper use, power is removed from the DUT when the lid of the fixture is opened. See Interlock operation and Interlock for more details.

Use interlock cable assembly CA-558 to connect the 2600B interlock to either a Model 8010 High Power Device Test Fixture or to the Model 2657A-LIM-3 LO Interconnect Module (refer to the connection information supplied with the device).

Digital I/O configuration

The following figure shows the basic configuration of the digital I/O port. Writing a 1 to a line sets that line high (~ +5 V). Writing a 0 to a line sets that line low (~0 V). Note that an external device pulls an I/O line low by shorting it to ground, so that a device must be able to sink at least 960 µA per I/O line.

Digital I/O interface schematic

Controlling digital I/O lines

Although the digital I/O lines are primarily intended for use with a device handler for limit testing, they can also be used for other purposes, such as controlling external logic circuits. You can control lines either from the front panel or over a remote interface.

To set digital I/O values from the front panel:

  1. Press the MENU key, select DIGOUT, and then press the ENTER key or press the navigation wheel.
  2. Select DIG-IO-OUTPUT, and then press the ENTER key or the navigation wheel.

    Set the decimal value as required to set digital I/O lines in the range of 0 to 16,383 (see the table in Digital I/O bit weighting), and then press the ENTER key or the navigation wheel.
    For example, to set digital I/O lines 3 and 8, set the value to 132.

  3. Press the EXIT (LOCAL) key as needed to return to the main menu.

To write-protect specific digital I/O lines to prevent their values from being changed:

  1. Press the MENU key, then select DIGOUT and then press the ENTER key or the navigation wheel.
  2. Select WRITE-PROTECT, and then press the ENTER key or the navigation wheel.
  3. Set the decimal value as required to write‑protect digital I/O lines within the range of 0 to 16,383 (see Digital I/O bit weighting), and then press the ENTER key or the navigation wheel. For example, to write‑protect digital I/O lines 4 and 10, set the value to 520.
  4. Press the EXIT (LOCAL) key as needed to return to the main menu.

To remove write protection, reset the decimal value to include only the lines that you want to write protect. To remove write protection from all lines, set the value to 0.

Digital I/O bit weighting

Bit weighting for the digital I/O lines is shown in the following table.

Digital bit weight

Line #

Bit

Decimal weighting

Hexadecimal weighting

1

B1

1

0x0001

2

B2

2

0x0002

3

B3

4

0x0004

4

B4

8

0x0008

5

B5

16

0x0010

6

B6

32

0x0020

7

B7

64

0x0040

8

B8

128

0x0080

9

B9

256

0x0100

10

B10

512

0x0200

11

B11

1,024

0x0400

12

B12

2,048

0x0800

13

B13

4,096

0x1000

14

B14

8,192

0x2000

Remote digital I/O commands

Commands that control and access the digital I/O port are summarized in the following table. See the TSP command reference for complete details on these commands. See Digital I/O bit weighting for decimal and hexadecimal values used to control and access the digital I/O port and individual lines. Use these commands to trigger the 2600B using external trigger pulses applied to the digital I/O port, or to provide trigger pulses to external devices.

Use these commands to perform basic steady-state digital I/O operations such as reading and writing to individual I/O lines or reading and writing to the entire port.

VARIABLE - NOTE You can use the digital I/O lines for both input and output. You must write a 1 to all digital I/O lines that are to be used as inputs.

Remote digital I/O commands

 

Command

Description

digio.readbit(bit)

Read one digital I/O input line

digio.readport()

Read digital I/O port

digio.writebit(bit, data)

Write data to one digital I/O output line

digio.writeport(data)

Write data to digital I/O port

digio.writeprotect = mask

Write protect mask to digital I/O port

Digital I/O programming example

The programming commands below illustrate how to set bit B1 of the digital I/O port high, and then read the entire port value.

digio.trigger[1].mode = digio.TRIG_BYPASS

-- Set bit B1 high.

digio.writebit(1,1)

-- Read digital I/O port.

data = digio.readport()

Using output enable

VARIABLE - NOTE Output enable is only available on the 2601B, 2602B, and 2604B.

The digital I/O port provides an output enable line for use with a test fixture switch. When properly used, the output of the instrument turns OFF when the lid of the test fixture is opened. See “DUT test connections” in the Series 2600B User's Manual for important safety information when using a test fixture.

VARIABLE - WARNING When an interlock is required for safety, a separate circuit should be provided that meets the requirements of the application to reliably protect the operator from exposed voltages. The digital I/O port of the 2601B, 2602B, or 2604B is not suitable for control of safety circuits and should not be used to control a safety interlock.

Output enable operation

When output enable is enabled, the output of the 2601B, 2602B, or 2604B can only be turned on when the output enable line is pulled high through a switch to +5 V, as shown in the following figure. If the lid of the test fixture opens, the switch opens and the output enable line goes low, which turns off the output of the instrument. The output does not automatically turn on when output enable is set high. The output can be turned on again when +5  is applied to the output enable line.

Using the output enable line

Front-panel control of output enable

To activate the output enable line from the front panel:

  1. Press the CONFIG key followed by the OUTPUT ON/OFF control.
  2. Choose DIO-CONTROL, then press the ENTER key or the navigation wheel.
  3. To activate the output enable signal, select OE_OUTPUT_OFF. This causes the source‑measure unit (SMU) output to be blocked if the output enable is not asserted (connected to +5 V).
    To deactivate the output enable signal, select NONE. The state of the output enable signal has no effect on the 2600B output.
  4. Press the EXIT (LOCAL) key as needed to return to the normal display.

Remote control of output enable

Use one of these commands to control output enable action:

smuX.source.outputenableaction = smuX.OE_NONE

smuX.source.outputenableaction = smuX.OE_OUTPUT_OFF

For the 2601B, smuX is smua (SMU Channel A). For the 2602B and 2604B, this value can be smua or smub (for SMU channel A or SMU channel B, respectively).

When set to smuX.OE_NONE, the 2600B does not take action when the output enable line is low. When set to smuX.OE_OUTPUT_OFF, the instrument turns the output off as if the smuX.source.output = smuX.OUTPUT_OFF command was received. The instrument does not automatically turn its output on when the output enable line returns to the high state. For example, the following command activates the output enable for SMU A:

smua.source.outputenableaction = smua.OE_OUTPUT_OFF

TSP-Link trigger lines

The 2600B has three trigger lines that you can use for triggering, digital I/O, and to synchronize multiple instruments on a TSP-LinkTM network.

VARIABLE - NOTE The 2604B, 2614B, and 2634B do not have a TSP-Link interface.

Connecting to the TSP-Link system

The TSP‑LinkTM trigger lines are built into the TSP-Link connection. Use the TSP-Link connectors on the back of the 2600B. If you are using a TSP‑Link network, you do not have to modify any connections. See TSP-Link system expansion interface for detailed information about connecting to the TSP-Link system.

Using TSP-Link trigger lines for digital I/O

Each trigger line is an open-drain signal. When using the TSP‑LinkTM trigger lines for digital I/O, any node that sets the programmed line state to zero (0) causes all nodes to read 0 from the line state. This occurs regardless of the programmed line state of any other node. Refer to the table in Digital I/O bit weighting for digital bit‑weight values.

Remote TSP-Link trigger line commands

Commands that control and access the TSP‑LinkTM trigger line port are summarized in the following table. See the TSP command reference for complete details on these commands. See the table in Digital I/O bit weighting for the decimal and hexadecimal values used to control and access the digital I/O port and individual lines.

Use the commands in following table to perform basic steady-state digital I/O operations; for example, you can program the 2600B to read and write to a specific TSP-Link trigger line or to the entire port.

VARIABLE - NOTE The TSP-Link trigger lines can be used for both input and output. You must write a 1 to all TSP-Link trigger lines that are used as inputs.

Remote trigger line commands

Command

Description

tsplink.readbit(bit)

Reads one digital I/O input line.

tsplink.readport()

Reads the digital I/O port.

tsplink.writebit(bit, data)

Writes data to one digital I/O line.

tsplink.writeport(data)

Writes data to the digital I/O port.

tsplink.writeprotect = mask

Sets the write‑protect mask of the digital I/O port.

Programming example

The programming example below illustrates how to set bit B1 of the TSP-Link digital I/O port high, and then read the entire port value:

-- Set the TSP-Link trigger line to the trigger bypass mode.

tsplink.trigger[1].mode = tsplink.TRIG_BYPASS

-- Set bit B1 high.

tsplink.writebit(1, 1)

-- Read I/O port.

data = tsplink.readport()

Theory of operation

Source-measure concepts

This section provides detailed information about source-measure concepts, including:

Limit principles

A limit acts as a clamp. If the output reaches the limit value, the 2600B attempts to prevent the output from exceeding that value. This action switches the source from a voltage source to a current source (or from a current source to a voltage source) when a limit is reached.

As an example, assume the following:

  • 2600B instrument: VSRC = 10 V; ILIMIT = 10 mA
  • Device-under-test (DUT) resistance: 10 O

With a source voltage of 10 V and a DUT resistance of 10 O, the current through the DUT should be 10 V / 10 O = 1 A. However, because the limit is set to 10 mA, the current does not exceed that value, and the voltage across the resistance is limited to 100 mV. In effect, the 10 V voltage source is transformed into a 10 mA current source.

The 2600B SMU output does not exceed the compliance limit, except for the compliance limit conditions described in Source-measure capabilities.

Overheating protection

Proper ventilation is required to keep the System SourceMeter® instrument from overheating. Even with proper ventilation, the instrument can overheat if the ambient temperature is too high or the System SourceMeter® instrument is operated in sink mode for long periods. The instrument has an overtemperature protection circuit that turns the output off if the instrument overheats. When the overtemperature protection circuit turns the output off, a message indicating this condition is displayed. You cannot turn the output on until the instrument cools down.

Power equations to avoid overheating

To avoid overheating, do not operate any channel on the instrument in a manner that forces the instrument to exceed the maximum duty cycle (DCMAX), which is computed using the General power equation below. Factors such as the ambient temperature, quadrant of operation, and high‑power pulse levels (if applicable) affect the maximum duty cycle. Exceeding the calculated maximum duty cycle may cause the temperature protection mechanism to engage. When this happens, an error message displays and the instrument output is disabled until the internal temperature of the instrument is reduced to an acceptable level.

You do not have to be concerned about overheating if the following conditions are true:

  • The instrument is used as a power source and not a power sink.
  • The ambient temperature is = 30 °C.
  • Extended operating area pulsing is not being performed.

However, if any one of these is false, the instrument may overheat if operated in a manner that exceeds the calculated maximum duty cycle, DCMAX.

The maximum duty cycle equation is derived from the power equation below by solving for DCMAX. The general power equation describes how much power an instrument channel can source and sink before the total power cannot be fully dissipated by the cooling system of the instrument. This equation incorporates all the factors that can influence the power dissipated by the instrument.

General power equation

General SourceMeter instrument power equation (1)

VOA

The instrument output amplifier voltage. This constant can be found in the tables in Maximum duty cycle equation.

VP

The voltage level the instrument is attempting to force while at the pulse level.

When operating in quadrants 1 or 3 (sourcing power), the sign of this voltage must be positive when used in the power equations.

When operating in quadrants 2 or 4 (sinking power), the sign of this voltage must be negative when used in the power equations.

IP

The current flowing through the instrument channel while at the pulse level.

VB

The voltage level the instrument is attempting to force while at the bias level.

When operating in quadrants 1 or 3 (sourcing power), the sign of this voltage must be positive when used in the power equations.

When operating in quadrants 2 or 4 (sinking power), the sign of this voltage must be negative when used in the power equations.

IB

The current flowing through the instrument channel while at the bias level.

PCS

The maximum power generated in an instrument channel that can be properly dissipated by the instrument cooling system, measured in watts. For the 2600B, this constant equals 56.

PDER

= TAMB - 30

This factor represents the number of watts the instrument is derated when operating in environments above 30 °C. The maximum output power of each instrument channel is reduced by 1 W per degree C above 30 °C.

PDER is 0 when the ambient temperature is below 30 °C.

TAMB

The ambient temperature of the instrument operating environment.

Maximum duty cycle equation

The following equation applies to both channels, sinking or sourcing power simultaneously. If a duty cycle less than 100% is required to avoid overheating, the maximum on-time must be less than 10 seconds.

Maximum duty cycle equation 1 (1)

VARIABLE - NOTE When attempting to determine the maximum duty cycle, where the off state is 0 V or 0 A:

  • IB is 0
  • IP and VP are the voltage and current levels when the instrument is on

2601B, 2602B, and 2604B maximum duty cycle equation constants

Constant

100 mV range

1 V range

6 V range

40 V range

VOA

18

18

18

55

2611B, 2612B, 2614B, 2634B, 2635B, and 2636B maximum duty cycle equation constants

Constant

200 mV range

2 V range

20 V range

200 V range

VOA

40

40

40

220

Operating boundaries

Depending on how the instrument is programmed and what is connected to the output (load or source), the instrument can operate in any of the four quadrants. The four quadrants of operation are shown in the following figure. When operating in the first (I) or third (III) quadrant, the instrument operates as a source (voltage and current have the same polarity). As a source, the instrument delivers power to a load.

Four quadrants of operation

When operating in the second (II) or fourth (IV) quadrant, the instrument is operating as a sink (voltage and current have opposite polarity). As a sink, it is dissipating power rather than sourcing it. An external source or an energy storage device, such as a capacitor or battery, can force operation in the sink region.

Continuous power operating boundaries

The general operating boundaries for 2601B, 2602B, 2604B continuous power output are shown in the following figure (for derating factors, see General power and maximum duty cycle equations). In this figure, the current (600 mA, 1 A, 2.2 A, and 3 A) and the voltage (6 V and 40 V) magnitudes are nominal values. Also note that the boundaries are not drawn to scale.

2601B, 2602B, or 2604B continuous power operating boundaries

The general operating boundaries for 2611B, 2612B, 2614B, 2634B, 2635B, or 2636B continuous power output are shown in the following figure (for derating factors, see General power equation). In this figure, the current (100 mA and 1.5 A) and voltage (20 V and 200 V) magnitudes are nominal values. Also note that the boundaries are not drawn to scale.

2611B, 2612B, 2614B, 2634B, 2635B, or 2636B continuous power operating boundaries

Operation as a sink

When the 2600B is operating in the second quadrant or fourth quadrant, the SMU operates as a load that sinks and dissipates power internally. The ability of the SMU to dissipate power is defined by the boundaries shown in the previous figure. When the SMU is operating in the second or fourth quadrant, the DUT is a power source (such as a battery, solar cell, or a power supply).

VARIABLE - CAUTION Use care when connecting a source to the 2600B that is capable of exceeding the voltage or current limit. Using the 2601B, 2602B, or 2604B to sink more than 3 A can damage the instrument and invalidate your warranty. Using the 2611B, 2612B, 2614B, 2634B, 2635B, or 2636B to sink more than 1.5 A can damage the instrument and invalidate your warranty.

V-source operating boundaries

2601B and 2602B voltage source operating boundaries

The following figures show the operating boundaries for the voltage source. Only the first quadrant of operation is shown. Operation in the other three quadrants is similar.

The following figure shows the output characteristics for the voltage source. As shown, the 2601B, 2602B, and 2604B can output up to 6.06 V at 3 A, or 40.4 V at 1 A. Note that when sourcing more than 6.06 V, current is limited to 1 A.

Voltage source output characteristics (2601B, 2602B, and 2604B)

The following figure shows the limit lines for the voltage source. The voltage source limit line represents the maximum source value possible for the presently selected voltage source range. For example, if you are using the 6 V source range, the voltage source limit line is at 6.3 V. The current compliance limit line represents the actual compliance in effect (see Limit principles). These limit lines are boundaries that represent the operating limits of the instrument for this quadrant of operation. The operating point can be anywhere inside (or on) these limit lines. The limit line boundaries for the other quadrants are similar.

Voltage source limit lines (2601B, 2602B, and 2604B)

2611B, 2612B, 2614B, 2634B, 2635B, and 2636B voltage source operating boundaries

The following figures show the operating boundaries for the voltage source. Only the first quadrant of operation is shown. Operation in the other three quadrants is similar.

The following figure shows the output characteristics for the V-source. As shown, the 2611B, 2612B, 2614B, 2634B, 2635B, or 2636B can output up to 20.2 V at 1.5 A, or 202 V at 100 mA. Note that when sourcing more than 20.2 V, current is limited to 100 mA.

Voltage source output characteristics (2611B, 2612B, 2614B, 2634B, 2635B, 2636B)

The following figure shows the limit lines for the voltage source. The voltage source limit line represents the maximum source value possible for the presently selected voltage source range. For example, if you are using the 20 V source range, the voltage source limit line is at 20.2 V. The current compliance limit line represents the actual compliance in effect (see Limit principles). These limit lines are boundaries that represent the operating limits of the instrument for this quadrant of operation. The operating point can be anywhere inside (or on) these limit lines. The limit line boundaries for the other quadrants are similar.

Voltage source limit lines (2611B, 2612B, 2614B, 2634B, 2635B, 2636B)

Load considerations (V-source)

The boundaries within which the 2600B operates depend on the load (device‑under‑test, or DUT) that is connected to the output. The following figures show operation examples for resistive loads that are 2 kO and 800 O, respectively. For these examples, the SMU is programmed to source 10 V and limit current (10 mA).

In the following figure, the SMU is sourcing 10 V to the 2 kO load and subsequently measures 5 mA. The SMU is programmed to limit power (60 mW). As shown, the load line for 2 kO intersects the 10 V voltage source line at 5 mA. The current compliance limit and the power compliance limit are not reached (the SMU is not limited through its compliance settings).

Normal voltage source operation

IM

= VS / R

 

= 10 V / 2 kO)

 

= 5 mA

The following figure shows what happens if the resistance of the load is decreased to 800 O. The DUT load line for 800 O intersects the current compliance limit line, which places the SMU in compliance. When in compliance, the SMU cannot source its programmed voltage (10 V). For the 800 O DUT, the SMU only outputs 8 V (at the 10 mA limit).

Notice that as resistance decreases, the slope of the DUT load line increases. As resistance approaches infinity (open output), the SMU sources virtually 10 V at 0 mA. Conversely, as resistance increases, the slope of the DUT load line decreases. At zero resistance (shorted output), the SMU sources virtually 0 V at 10 mA.

Voltage source operation in current compliance

VS

= IM × R

 

= (10 mA)(800 O)

 

= 8 V

The following figure shows what happens if a power limit of 60 mW is applied. As the SMU attempts to output the programmed source value of 10 V, the power compliance limit line is reached, which places the SMU in power compliance. The SMU enforces the power compliance limit by setting the current compliance limit line to the new power‑limited current compliance limit line setting, which in this example is 6 mA. In compliance, the SMU cannot source its programmed voltage (10 V). For the 800 O DUT, the SMU outputs 4.8 V at the 5 mA limit. In this example, current never exceeds the programmed compliance of 10 mA or the programmed power compliance of 60 mW under any load.

Voltage source operation in power compliance

VS

= IM × R

 

= (6 mA)(800 O)

 

= 4.8 V

The following figure shows a voltage sweep on a resistive load of 800 O. For this example, the SMU is programmed to sweep voltage to 10 V, limit current (6 mA), and limit power (50 mW). When sweeping, the actual source output varies according to the programmed source value until the current limit is reached. As the figure shows, the output sources the programmed value until placed in current compliance at the 6 mA limit. The sweep then continues (programmed current source values increase along the green sweep points line), but the output remains at the same value as when the SMU went into voltage compliance. This continues until the programmed source value sweeps to a high enough level that the power limit line is reached (50 mW). At this point, the current and voltage start to decrease, lowering the current and voltage values along the DUT load line. When the last point is swept (10 V), the actual output is 4 V at 5 mA.

Programmed voltage source sweep operation in current and power compliance

V-source sink operating boundaries

The quadrant within which the 2600B operates depends on the device-under-test (DUT) that is connected to the 2600B output. The following example illustrates this operation using the 2600B configured as a voltage source to discharge a 12 V power source (a battery).

Sourcing voltage while sinking current

VARIABLE - NOTE The current compliance limit applies to both positive and negative currents. For example, if you set the current compliance limit to 50 mA, the current limit applies to ±50 mA.

For this example, the 2600B is programmed to source 2 V and to limit current to 50 mA. When the SMU turns on, the battery voltage is higher than the programmed voltage source value. Because the SMU cannot deliver the programmed voltage, the SMU is placed in current compliance and begins to sink current. Sink operation continues until the battery voltage equals the programmed voltage source level and the current in the circuit drops to nearly 0 A.

In the following figure, as the battery drains, the battery voltage is lowered (shown by the green arrow in the figure). Operation continues in this direction until the SMU can deliver the programmed voltage source value.

VARIABLE - NOTE Because the battery is a power source, initial operation can occur anywhere along the initial battery voltage line. This voltage is limited only by the capability of the battery (see the following figure).

Considerations when sourcing voltage and sinking power

I-source operating boundaries

2601B, 2602B, and 2604B current source operating boundaries

The following figure shows the operating boundaries and output characteristics for the current source. Only the first quadrant of operation is shown; operation in the other three quadrants is similar. As shown, the 2601B, 2602B, and 2604B can output up to 1.01 A at 40 V, or 3.03 A at 6 V. Note that when sourcing more than 1.01 A, voltage is limited to 6 V.

Current source output characteristics (2601B, 2602B, and 2604B)

The following figure shows the limit lines for the current source. The current source limit line represents the maximum source value possible for the presently selected current source range. The voltage compliance limit line represents the actual compliance that is in effect (see Limit principles). These limit lines are boundaries that represent the operating limits of the instrument for this quadrant of operation. The operating point can be anywhere inside (or on) these limit lines. The limit line boundaries for the other quadrants are similar.

Current source limit lines (2601B, 2602B, and 2604B)

2611B, 2612B, 2614B, 2634B, 2635B, and 2636B current source operating boundaries

The following figure show the operating boundaries and output characteristics for the current source. Only the first quadrant of operation is shown; operation in the other three quadrants is similar. As shown, the 2611B, 2612B, 2614B, 2634B, 2635B, and 2636B instruments can output up to 101 mA at 200 V or 1.515 A at 20 V. Note that when sourcing more than 101 mA, voltage is limited to 20 V.

Output characteristics of current source (2611B, 2612B, 2614B, 2634B, 2635B, and 2636B)

The following figure shows the limit lines for the current source. The current source limit line represents the maximum source value possible for the presently selected current source range. The voltage compliance limit line represents the actual compliance that is in effect (see Limit principles). These limit lines are boundaries that represent the operating limits of the instrument for this quadrant of operation. The operating point can be anywhere inside (or on) these limit lines. The limit line boundaries for the other quadrants are similar.

Current source limit line (2611B, 2612B, 2614B, 2634B, 2635B, and 2636B)

Load considerations (I-source)

The boundaries within which the SMU operates depend on the load (device‑under‑test, or DUT) that is connected to its output. The following figures shows operation examples for resistive loads that are 50 O and 200 O. For these examples, the SMU is programmed to source 100 mA and limit voltage (10 V).

In the following figure, the SMU is sourcing 100 mA to the 50 O load and subsequently measures 5 V. The SMU is also programmed to limit power to 600 mW. As shown, the load line for 50 O intersects the 100 mA current source line at 5 V. The voltage compliance limit and the power compliance limit are not reached (the SMU is not limited through its compliance settings).

Normal current source operation

VM

= IS × R

 

= (100 mA)(50 O)

 

= 5 V

The following figure shows what happens if the resistance of the load is increased to 200 O. The DUT load line for 200 O intersects the voltage compliance limit line, which places the SMU in voltage compliance. In compliance, the SMU cannot source the programmed current of 100 mA. For the 200 O DUT, the SMU only outputs 50 mA at the 10 V limit.

As resistance increases, the slope of the DUT load line increases. As resistance increases and approaches infinity (open output), the SMU sources virtually 0 mA at 10 V. Conversely, as resistance decreases, the slope of the DUT load line decreases. At zero resistance (shorted output), the SMU sources 100 mA at virtually 0 V.

Current source operation in voltage compliance

IS

= VM / R

 

= 10 V / 200 O)

 

= 50 mA

The following figure shows what happens if a power limit of 600 mW is applied. As the SMU attempts to output the programmed source value of 100 mA, the power‑limited voltage compliance limit line is reached, which places the SMU in power compliance. The SMU enforces the power compliance limit by setting the voltage compliance limit to the new power‑limited voltage compliance limit setting, which in this case is 6 V. In compliance, the SMU cannot source its programmed current of 100 mA. For the 200 O DUT, the SMU only outputs 30 mA at the 6 V limit. In this example, voltage never exceeds the programmed compliance of 10 V or the programmed power compliance of 600 mW under any load.

Current source operation in power compliance

IS

= VM / R

 

= 6 V / 200 O)

 

= 30 mA

The following figure shows a current sweep on a resistive load of 200 O. For this example, the SMU is programmed to sweep current to 100 mA, limit voltage (6 V), and limit power (500 mW). When sweeping, the actual source output varies according to the programmed source value until the voltage limit is reached. As the figure shows, the output sources the programmed value until placed in voltage compliance at the 6 V limit. The sweep then continues (programmed current source values increase along the green sweep points line), but the output remains at the same value as when the SMU went into voltage compliance. This continues until the programmed source value sweeps to a high enough level that the power limit line is reached (in this example, 500 mW). At this point, the voltage and the current start to decrease, lowering the current and voltage values along the DUT load line. When the last point is swept (100 mA), the actual output is 25 mA (at 5 V).

Programmed current source sweep operation in voltage and power compliance

I-source sink operating boundaries

The quadrant within which the 2600B operates depends on the device-under-test (DUT) connected to the 2600B output. The following example illustrates this operation by using the 2600B configured to provide a constant current to discharge a 12 V power source (a battery).

VARIABLE - CAUTION When using the SMU current source as a sink, always set the voltage compliance limit to levels that are higher than the external voltage level. Using the 2601B, 2602B, or 2604B to sink more than 3 A can damage the instrument and invalidate your warranty. Using the 2611B, 2612B, 2614B, 2634B, 2635B, or 2636B to sink more than 1.5 A can damage the instrument and invalidate your warranty.

Sourcing current sink operation example

VARIABLE - NOTE The voltage compliance limit applies both to positive and negative voltages. For example, if you set the voltage compliance limit to 15 V, the voltage limit applies to ±15 V.

For this example, the 2600B is programmed to source -50 mA (the constant current) and to limit voltage to 15 V. When the SMU turns on, it begins sinking current as determined by the programmed current source level (-50 mA), causing a decrease in battery voltage. If the battery were ideal and could be charged negatively, its voltage would continue to decrease until it is negatively charged at -15 V (shown by the green arrow in the following figure), at which point the SMU is in voltage compliance.

VARIABLE - CAUTION Reversing the polarity when sourcing current and sinking power may destroy some power sources. To prevent a negative charge, monitor the measurement of the battery voltage on the SMU and stop the discharge before the SMU starts to operate in quadrant III (negative voltage). You can stop the discharge by changing the programmed current source level or by disconnecting the SMU from the device.

As the battery drains, the battery voltage is lowered as shown by the green arrow. Operation continues in this direction until the you stop operation or the voltage reaches the voltage compliance limit. Because the battery is a power source, operation in this example is limited by the capability of the battery to deliver 50 mA. See the following figure.

Considerations when sourcing current and sinking power

Guard

VARIABLE - WARNING GUARD is at the same potential as output HI. If hazardous voltages are present at output HI, they are also present at the GUARD terminal.

The rear‑panel GUARD terminals are always enabled and provide a buffered voltage that is at the same level as the HI (or SENSE HI for remote sense) voltage. The purpose of guarding is to eliminate the effects of leakage current (and capacitance) that can exist between HI and LO. In the absence of a driven guard, leakage in the external test circuit could be high enough to adversely affect the performance of the SMU.

Leakage current can occur through parasitic or nonparasitic leakage paths. An example of parasitic resistance is the leakage path across the insulator in a coaxial or triaxial cable. An example of nonparasitic resistance is the leakage path through a resistor that is connected in parallel to the device‑under‑test (DUT).

Guard connections

Guard is typically used to drive the guard shields of cables and test fixtures. Guard is extended to a test fixture from the cable guard shield. Inside the test fixture, the guard can be connected to a guard plate or shield that surrounds the device‑under‑test (DUT).

VARIABLE - WARNING A safety shield must be used whenever hazardous voltages (>30 VRMS, 42 VPEAK) will be present in the test circuit. To prevent electrical shock that could cause injury or death, never use the 2600B in a test circuit that may contain hazardous voltages without a properly installed and configured safety shield. The figures in this topic show the metal case of a test fixture being used as a safety shield.

VARIABLE - NOTE See “Guarding and shielding” in the Model 2600B User's Manual for details about guarded test connections.

Inside the test fixture, a triaxial cable can be used to extend guard to the DUT. The center conductor of the cable is used for HI, and the inner shield is used for guard.

The figures below show how cable guard can eliminate leakage current through the insulators in a test fixture. In this figure, leakage current (IL) flows through the insulators (RL1 and RL2) to LO, adversely affecting the low-current (or high-resistance) measurement of the DUT.

Also in the figures below, the driven guard is connected to the cable shield and extended to the metal guard plate for the insulators. Since the voltage on either end of RL1 is the same (0 V drop), no current can flow through the leakage resistance path, so the instrument only measures the current through the DUT.

Unguarded measurements

Unguarded measurements

Guarded measurements

Guarded measurements

Analog-to-digital converter

The 2600B SMUs have integrating analog-to-digital converter (ADCs). The integrating ADCs use a ratiometric analog-to-digital conversion technique. Depending on the configuration of the integrating ADCs, periodic fresh reference measurements are required to minimize drift. The measurement aperture is used to determine the time interval between these measurement updates. For additional information, see Autozero. To optimize operation of these ADCs, the instrument caches the reference and zero values for the ten most recent power‑line cycles. For additional information, see NPLC caching.

Measurement settling time considerations

Several outside factors can influence measurement settling times. Effects such as dielectric absorption, cable leakages, and noise can all extend the times required to make stable measurements. Be sure to use appropriate shielding, guarding, and aperture selections when making low‑current measurements.

Each current measurement range has a combination of a range resistor and a compensating capacitor that must settle to allow a stable measurement. By default (when power is turned on or after a smuX.reset() command), delays are enforced to account for approximately 6t or 6 time constants of a given range (to reach 0.1 percent of the final value, assuming 2.3t per decade). The table below lists the current ranges and associated default delays. In addition, a 1 Hz analog filter is used by default on the 1 nA and 100 pA ranges.

Current measure settling time1, 2

Time required to reach 0.1% of final value after source level command is processed on a fixed range.

Values below for VOUT = 2 V unless otherwise noted.

Current range

Settling time

1.5 A to 1 A

<120 µs (typical) (RLOAD >6 O)

100 mA to 10 mA

<80 µs (typical)

1 mA

<100 µs (typical)

100 µA

<150 µs (typical)

10 µA

<500 µs (typical)

1 µA

<2.5 ms (typical)

100 nA

<15 ms (typical)

10 nA

<90 ms (typical)

1 nA1

<360 ms (typical)

100 pA3

<360 ms (typical)

1. Delay factor set to 1. Compliance equals 100 mA.
2. Time for measurement to settle after a VSTEP.
3. With default analog filter setting <450 ms.

VARIABLE - NOTE Delays are on by default for the 2634B, 2635B, and 2636B. Delays are off by default for the 2601B, 2602B, 2604B, 2611B, 2612B, and 2614B but can be enabled.

You can manipulate both the analog filter and the default delays to produce faster response times. Turn off the analog filter to yield faster settling times. Control the default delays by using the delay factor multiplier. The default value for delay factor multiplier is 1.0, but adjusting it to other values result in either a faster or slower response. For example, increasing the delay factor to 1.3 accounts for settling to 0.01 percent of the final value. The commands to manipulate the delay factor and analog filter are shown in the following topics.

Programming example for controlling settling time delay

The following code provides measure delay examples for controlling settling time delay of SMU channel A. You can use the delay factor to apply a multiplier when smuX.measure.delay is set to smuX.DELAY_AUTO. Setting the delay factor above 1.0 increases the delay; a value below 1.0 decreases the delay. Setting this value to 0.0 disables delays when autodelay is on.

-- Turn off measure delay (default setting is smua.DELAY_AUTO).

smua.measure.delay = 0

-- Set measure delay for all ranges to Y in seconds.

smua.measure.delay = Y

-- Adjust the delay factor.

smua.measure.delayfactor = 1.0

Programming example for controlling analog filter (2634B, 2635B, and 2636B only)

The following code is an example of a measure delay that controls the analog filter of SMU channel A:

-- Default setting (analog filter on).

smua.measure.analogfilter = 1

This filter is only active when the current measure range is 1 nA/100 pA. Setting the attribute to zero (0) disables the filter.

Effects of load on current source settling time

The settling time of the source‑measure unit (SMU) can be influenced by the impedance of the device‑under‑test (DUT) in several ways. One influence is caused by an interaction between the impedances of the SMU current source feedback element and the DUT. This interaction can cause a reduction in the bandwidth of the SMU. This reduction results in an increase in the settling time of the current source.

There is a maximum DUT impedance for each current source range for which the specified current settling times are maintained. The following table lists the DUT impedances for each of these current source ranges. For the latest specifications, go to tek.com/keithley. The settling time on a current source range can increase significantly when measuring DUTs that have an impedance that is higher than the maximum DUT impedance listed below.

Maximum DUT impedances for specified settling time performance

Range

SMU feedback impedance

Maximum DUT impedance

1 nA

1 GO

2 GO

10 nA

120 MO

60 MO

100 nA

40 MO

20 MO

1 µA

1.2 MO

600 kO

10 µA

400 kO

200 kO

100 µA

12 kO

6 kO

1 mA

4 kO

2 kO

10 mA

120 O

60 O

100 mA

40 O

20 O

1 A

1 O

6 O

1.5 A

1 O

6 O

3 A

0.3 O

1.5 O

Creating pulses with the 2600B SMU

Although the 2600B is not a pulse generator, you can create pulses by programming the source‑measure unit (SMU) to output a DC value and then return to an idle level. For information on how to create pulses, refer to Sweep operation and Using the remote trigger model.

Pulse rise and fall times

VARIABLE - NOTE Although the 2600B can create pulses, it is not a pulse generator (pulse rise times are not programmable).

The pulse rise time is the time it takes a pulse to go from 10% to 90% of the maximum value of the pulse. Pulse fall time is similar but on the trailing edge of the pulse. For the 2600B, pulse rise and fall times can vary depending on the following factors:

Refer to the 2600B specifications for details on source settling times. For the latest specifications, go to tek.com/keithley.

Pulse rise and fall times

Range and pulse settling

Each SMU range has different specifications for source settling times. This causes different rise and fall time characteristics depending on the set range.

In addition, pulse performance is dependent on the pulse setting as a percent of full scale. For example, a 100 mA pulse on the 1 A range (which is 10% of full scale) performs differently than a 1 A pulse on the 1 A range (which is full scale). Refer to the 2600B specifications for details. For the latest specifications, go to tek.com/keithley.

SMU load and operating mode

Settling times for the current source vary with the resistive load applied. In addition to the load, the times vary depending on whether the source-measure unit (SMU) is configured as a voltage source or a current source, and also if the voltage source range is selected.

Pulse width

The pulse width is the interval between 10% on the rising (leading) edge to 90% on the falling (trailing) edge. Exceeding the specified pulse width limits can result in short pulses. In addition, the jitter of the pulse width can change the pulse width (this is especially important for short pulse widths). Jitter in respect to pulse width is the short-term instability of the trailing edge relative to the leading edge.

Review the 2600B specifications for information on source settling time. For the latest specifications, go to tek.com/keithley.

Troubleshooting guide

Introduction

Troubleshooting information includes information on the Keithley Instruments 2600B errors (including a complete list of error messages) and LAN troubleshooting suggestions.

Error levels

Error messages are listed in Error summary list. Errors have one of the following error levels:

Number

Error level

Description

0

NO_SEVERITY

The message is information only. This level is used when the error queue is empty; the message does not represent an error.

10

INFORMATIONAL

The message is information only. This level is used to indicate status changes; the message does not represent an error.

20

RECOVERABLE

The error was caused by improper use of the instrument or by conditions that can be corrected. This message indicates that an error occurred. The instrument is still operating normally.

30

SERIOUS

There is a condition that prevents the instrument from functioning properly. The message indicates that the instrument is presently operating in an error condition. If the condition is corrected, the instrument returns to normal operation.

40

FATAL

There is a condition that cannot be corrected that prevents the instrument from functioning properly. Disconnect the DUT and turn the power off and then on again. If the error is a hardware fault that persists after cycling the power, the instrument must be repaired.

Effects of errors on scripts

Most errors do not abort a running script. The only time a script is aborted is when a Lua runtime error (error code -286, "TSP runtime error") is detected. Runtime errors are caused by actions such as trying to index into a variable that is not a table.

Syntax errors (error code -285, "Program syntax") in a script or command prevent execution of the script or command.

Retrieve errors

When errors occur, the error messages are placed in the error queue. Use errorqueue commands to request error message information. For example, the following commands request the complete set of information about the next message in the error queue. They return the code, message, severity, and node for that error:

errorCode, message, severity, errorNode = errorqueue.next()

print(errorCode, message, severity, errorNode)

The following table lists the commands associated with the error queue.

Remote commands associated with the error queue

Command

Description

errorqueue.clear()

Clear error queue of all errors

errorqueue.count

Number of messages in the error queue

errorqueue.next()

Request next error message from queue

Error summary list

Error summary

Error number

Error level

Error message

-430

RECOVERABLE

Query DEADLOCKED

-420

RECOVERABLE

Query UNTERMINATED

-410

RECOVERABLE

Query INTERRUPTED

-363

RECOVERABLE

Input buffer overrun

-360

RECOVERABLE

Communications error

-350

RECOVERABLE

Queue overflow

-315

RECOVERABLE

Configuration memory lost

-314

RECOVERABLE

Save/recall memory lost

-292

RECOVERABLE

Referenced name does not exist

-286

RECOVERABLE

TSP Runtime error

-285

RECOVERABLE

Program syntax

-282

RECOVERABLE

Illegal program name

-281

RECOVERABLE

Cannot create program

-225

RECOVERABLE

Out of memory or TSP Memory allocation error

-224

RECOVERABLE

Illegal parameter value

-222

RECOVERABLE

Parameter data out of range

-221

RECOVERABLE

Settings conflict

-220

RECOVERABLE

Parameter error

-211

RECOVERABLE

Trigger ignored

-203

RECOVERABLE

Command protected

-154

RECOVERABLE

String too long

-151

RECOVERABLE

Invalid string data

-110

RECOVERABLE

Command header error

-109

RECOVERABLE

Missing parameter

-108

RECOVERABLE

Parameter not allowed

-105

RECOVERABLE

Trigger not allowed

-104

RECOVERABLE

Data type error

0

NO_SEVERITY

Queue Is Empty

503

RECOVERABLE

Calibration overflow

601

RECOVERABLE

Reading buffer data lost

603

RECOVERABLE

Power on state lost

702

FATAL

Unresponsive digital FPGA

802

RECOVERABLE

OUTPUT blocked by interlock

819

RECOVERABLE

Error parsing exponent

820

RECOVERABLE

Error parsing value

900

FATAL

Internal system error

1100

RECOVERABLE

Command unavailable

1101

RECOVERABLE

Parameter too big

1102

RECOVERABLE

Parameter too small

1103

RECOVERABLE

Min greater than max

1104

RECOVERABLE

Too many digits for param type

1105

RECOVERABLE

Too many parameters

1107

RECOVERABLE

Cannot modify factory menu

1108

RECOVERABLE

Menu name does not exist

1109

RECOVERABLE

Menu name already exists

1110

FATAL

Analog supply failure: over temperature

1113

RECOVERABLE

Data too complex

1122

SERIOUS

Interlock or power supply failure

1200

RECOVERABLE

TSP-Link initialization failed

1202

RECOVERABLE

TSP-Link initialization failed

1203

RECOVERABLE

TSP-Link initialization failed (possible loop in node chain)

1204

RECOVERABLE

TSP-Link initialization failed

1205

RECOVERABLE

TSP-Link initialization failed (no remote nodes found)

1206

RECOVERABLE

TSP-Link initialization failed

1207

RECOVERABLE

TSP-Link initialization failed

1208

RECOVERABLE

TSP-Link initialization failed

1209

RECOVERABLE

TSP-Link initialization failed

1210

RECOVERABLE

TSP-Link initialization failed (node ID conflict)

1211

RECOVERABLE

Node NN is inaccessible

1212

RECOVERABLE

Invalid node ID

1213

RECOVERABLE

TSP-Link session expired

1215

RECOVERABLE

Code execution requested within the local group

1216

RECOVERABLE

Remote execution requested on node in group with pending overlapped operations

1217

RECOVERABLE

Remote execution requested on node outside the local group

1218

RECOVERABLE

Operation allowed only when TSP-Link master

1219

RECOVERABLE

TSP-Link found fewer nodes than expected

1400

RECOVERABLE

Expected at least NN parameters

1401

RECOVERABLE

Parameter NN is invalid

1402

RECOVERABLE

User scripts lost

1403

RECOVERABLE

Factory scripts lost

1404

RECOVERABLE

Invalid byte order

1405

RECOVERABLE

Invalid ASCII precision

1406

RECOVERABLE

Invalid data format

1500

RECOVERABLE

Invalid baud rate setting

1501

RECOVERABLE

Invalid parity setting

1502

RECOVERABLE

Invalid terminator setting

1503

RECOVERABLE

Invalid bits setting

1504

RECOVERABLE

Invalid flow control setting

1600

RECOVERABLE

Maximum GPIB message length exceeded

1700

RECOVERABLE

Display area boundary exceeded

1800

RECOVERABLE

Invalid digital trigger mode

1801

RECOVERABLE

Invalid digital I/O line

2000

SERIOUS

Flash download error

2001

RECOVERABLE

Cannot flash with error in queue

2101

FATAL

Could not close socket

2102

RECOVERABLE

Lan configuration already in progress

2103

RECOVERABLE

Lan disabled

2104

RECOVERABLE

Socket error

2105

RECOVERABLE

Unreachable gateway

2106

RECOVERABLE

Could not acquire ip address

2110

RECOVERABLE

Could not resolve hostname

2111

RECOVERABLE

DNS name (FQDN) too long

2112

RECOVERABLE

Connection not established

2200

RECOVERABLE

File write error

2201

RECOVERABLE

File read error

2202

RECOVERABLE

Cannot close file

2203

RECOVERABLE

Cannot open file

2204

RECOVERABLE

Directory not found

2205

RECOVERABLE

File not found

2206

RECOVERABLE

Cannot read current working directory

2207

RECOVERABLE

Cannot change directory

2211

RECOVERABLE

File system error

2212

RECOVERABLE

File system command not supported

2213

RECOVERABLE

Too many open files

2214

RECOVERABLE

File access denied

2215

RECOVERABLE

Invalid file handle

2216

RECOVERABLE

Invalid drive

2217

RECOVERABLE

File system busy

2218

RECOVERABLE

Disk full

2219

RECOVERABLE

File corrupt

2220

RECOVERABLE

File already exists

2221

RECOVERABLE

File seek error

2222

RECOVERABLE

End-of-file error

2223

RECOVERABLE

Directory not empty

2400

RECOVERABLE

Invalid specified connection

2401

RECOVERABLE

Invalid timeout seconds (.001 to 30)

2402

RECOVERABLE

TSPnet remote error: XXX, where XXX explains the remote error

2403

RECOVERABLE

TSPnet failure

2404

RECOVERABLE

TSPnet read failure

2405

RECOVERABLE

TSPnet read failure, aborted

2406

RECOVERABLE

TSPnet read failure, timeout

2407

RECOVERABLE

TSPnet write failure

2408

RECOVERABLE

TSPnet write failure, aborted

2409

RECOVERABLE

TSPnet write failure, timeout

2410

RECOVERABLE

TSPnet max connections reached

2411

RECOVERABLE

TSPnet connection failed

2412

RECOVERABLE

TSPnet invalid termination

2413

RECOVERABLE

TSPnet invalid reading buffer table

2414

RECOVERABLE

TSPnet invalid reading buffer index range

2415

RECOVERABLE

TSPnet feature only supported on TSP connections

2416

RECOVERABLE

TSPnet must specify both port and init

2417

RECOVERABLE

TSPnet disconnected by other side

2418

RECOVERABLE

TSPnet read input buffer overflow

2419

RECOVERABLE

Invalid format specifier

2420

RECOVERABLE

Termination locked while using TSP connection

2500

RECOVERABLE

Average delay must be at least NNN seconds

4900

RECOVERABLE

Reading buffer index NN is invalid

4903

RECOVERABLE

Reading buffer expired

4904

SERIOUS

ICX parameter count mismatch, %s (Line #%d)

4905

SERIOUS

ICX parameter invalid value, %s (Line #%d)

4906

SERIOUS

ICX invalid function id, %s (Line #%d)

5001

FATAL

SMU is unresponsive. Disconnect DUT and cycle power

5003

SERIOUS

Saved calibration constants corrupted

5004

RECOVERABLE

Operation conflicts with CALA sense mode

5005

RECOVERABLE

Value too big for range

5007

RECOVERABLE

Operation would exceed safe operating area of the instrument

5008

RECOVERABLE

Operation not permitted while OUTPUT is on

5009

SERIOUS

Unknown sourcing function

5010

SERIOUS

No such SMU function

5011

RECOVERABLE

Operation not permitted while cal is locked

5012

RECOVERABLE

Cal data not saved - save or restore before lock

5013

RECOVERABLE

Cannot save cal data - unlock before save

5014

RECOVERABLE

Cannot restore cal data - unlock before restore

5015

RECOVERABLE

Save to cal set disallowed

5016

RECOVERABLE

Cannot change cal date - unlock before operation

5017

RECOVERABLE

Cannot change cal constants - unlock before operation

5018

SERIOUS

Cal version inconsistency

5019

RECOVERABLE

Cannot unlock - invalid password

5021

SERIOUS

Cannot restore default calset. Using previous calset

5022

SERIOUS

Cannot restore previous calset. Using factory calset

5023

SERIOUS

Cannot restore factory calset. Using nominal calset

5024

SERIOUS

Cannot restore nominal calset. Using firmware defaults

5025

RECOVERABLE

Cannot set filter.count > 1 when measure.count > 1

5027

RECOVERABLE

Unlock cal data with factory password

5028

RECOVERABLE

Cannot perform requested operation while source autorange is enabled

5029

RECOVERABLE

Cannot save without changing cal adjustment date

5032

RECOVERABLE

Cannot change this setting unless buffer is cleared

5033

RECOVERABLE

Reading buffer not found within device

5038

RECOVERABLE

Index exceeds maximum reading

5041

SERIOUS

Output Enable not asserted

5042

RECOVERABLE

Cannot perform requested action while an overlapped operation is in progress

5043

RECOVERABLE

Cannot perform requested operation while voltage measure autorange is enabled

5044

RECOVERABLE

Cannot perform requested operation while current measure autorange is enabled

5045

RECOVERABLE

Cannot perform requested operation while filter is enabled

5046

SERIOUS

SMU too hot

5047

RECOVERABLE

Minimum timestamp resolution is 1us

5048

RECOVERABLE

Contact check not valid with HIGH-Z OUTPUT off

5049

RECOVERABLE

Contact check not valid while an active current source

5050

RECOVERABLE

I limit too low for contact check

5051

FATAL

Model number/SMU hardware mismatch. Disconnect DUT and cycle power

5052

RECOVERABLE

Interlock engaged; system stabilizing

5053

RECOVERABLE

Unstable output detected - Measurements may not be valid

5055

RECOVERABLE

Cannot change adjustment date - change cal constants before operation

5059

RECOVERABLE

trigger.source.action enabled without configuration

5060

RECOVERABLE

trigger.measure.action enabled without configuration

5061

RECOVERABLE

Operation not permitted while OUTPUT is off

5062

SERIOUS

SMU overload. Automatic OUTPUT off.

5063

RECOVERABLE

Cannot perform requested operation while measure autozero is on

5064

RECOVERABLE

Cannot use reading buffer that collects source values

5065

RECOVERABLE

I range too low for contact check

5066

RECOVERABLE

source.offlimiti too low for contact check

5069

SERIOUS

Autorange locked for HighC mode

LAN troubleshooting suggestions

If you are unable to connect to the web interface of the instrument, check the following items:

  • Verify that the network cable is in the LAN port on the rear panel of the instrument, not one of the TSP‑LinkTM ports (see the description in Rear panel).
  • Verify that the network cable is in the correct port on the computer. The LAN port of a laptop may be disabled when the laptop is in a docking station.
  • Verify that the configuration information for the correct ethernet card was used during the setup procedure.
  • Verify that the network card in the computer is enabled.
  • Verify that the IP address of the instrument is compatible with the IP address on the computer.
  • Verify that the subnet mask address of the instrument is the same as the subnet mask address of the computer.
  • Turn the instrument power off, and then on. Wait at least 60 seconds for the network configuration to be completed. Verify that an IP address has been assigned to the instrument:
    1. Press the MENU key to display the MAIN MENU.
    2. Use the navigation wheel to select LAN. The LAN CONFIG menu is displayed.
    3. Select STATUS.
    4. Select IP-ADDRESS.
  • Restart your computer.
  • For more detail on LAN settings, see Connecting to the LAN.

If the above actions do not correct the problem, contact your system administrator.

Introduction to TSP operation

Introduction to TSP operation

Instruments that are enabled for Test Script Processor (TSPTM) operate like conventional instruments by responding to a sequence of commands sent by the controller. You can send individual commands to the TSP-enabled instrument the same way you do when using any other instrument.

Unlike conventional instruments, TSP-enabled instruments can execute automated test sequences independently, without an external controller. You can load a series of TSP commands into the instrument. You can store these commands as a script that can be run later by sending a single command message to the instrument.

You do not have to choose between using conventional control or script control. You can combine these forms of instrument control in the way that works best for your test application.

Control the instrument by sending individual command messages

You can send a message that contains remote commands to control an instrument through the communications interface. You can use a test program that resides on a computer (the controller) to sequence the actions of the instrument.

TSP commands can be function-based or attribute-based. Function-based commands are commands that control actions or activities. Attribute-based commands define characteristics of an instrument feature or operation.

Constants represent fixed values.

Functions

Function-based commands control actions or activities. A function-based command performs an immediate action on the instrument.

Each function consists of a function name followed by a set of parentheses ( ). Only include information in the parentheses if the function takes a parameter. If the function takes one or more parameters, they are placed between the parentheses and separated by commas.

Example 1

beeper.beep(0.5, 2400)

delay(0.250)

beeper.beep(0.5, 2400)

Emit a double beep at 2400 Hz. The sequence is 0.5 s on, 0.25 s off, 0.5 s on.

Example 2

You can use the results of a function-based command directly or assign the results to variables for later access. The following code defines x and prints it.

x = math.abs(-100)

print(x)

Output:

100

Attributes

Attribute-based commands are commands that set the characteristics of an instrument feature or operation. For example, a characteristic of TSP‑enabled instruments is the model number (localnode.model).

Attributes can be read-only, read-write, or write-only. They can be used as a parameter of a function or assigned to another variable.

To set the characteristics, attribute-based commands define a value. For many attributes, the value is in the form of a number or a predefined constant.

Example 1: Set an attribute using a number

beeper.enable = 0

This attribute controls the beeps that occur when front‑panel controls are selected. Setting this attribute to 0 turns off the beeper.

Example 2: Set an attribute using a constant

format.data = format.REAL64

Using the constant REAL64 sets the print format to double‑precision floating-point format.

To read an attribute, you can use the attribute as the parameter of a function or assign it to another variable.

Example 3: Read an attribute using a function

print(format.data)

Reads the data format by passing the attribute to the print function. If the data format is set to 3, the output is:

3.00000e+00

This shows that the data format is set to double precision floating point.

Example 4: Read an attribute using a variable

fd = format.data

This reads the data format by assigning the attribute to a variable named fd.

Queries

Instruments enabled for Test Script Processor (TSPTM) do not have inherent query commands. Like other scripting environments, the print() and printnumber() commands generate output in the form of response messages. Each print() command creates one response message.

Example

x = 10

print(x)

Example of an output response message:

10

Your output may be different if you set your ASCII precision setting to a different value.

Information on scripting and programming

If you need information about using scripts with your TSP‑enabled instrument, see Fundamentals of scripting for TSP.

If you need information about using the Lua programming language with the instrument, see Fundamentals of programming for TSP.

About TSP commands

This section contains an overview of the TSP commands for the instrument. The commands are organized into groups, with a brief description of each group. Each section contains links to the detailed descriptions for each command in the TSP command reference section of this documentation.

Beeper control

The beeper commands allow you to sound, enable, or disable the instrument beeper.

beeper.beep()

beeper.enable

Bit manipulation and logic operations

The bit functions perform bitwise logic operations on two given numbers, and bit operations on one given number. Logic and bit operations truncate the fractional part of given numbers to make them integers.

Logic operations

The bit.bitand(), bit.bitor(), and bit.bitxor() functions in this group perform bitwise logic operations on two numbers. The Test Script Processor (TSPTM) scripting engine performs the indicated logic operation on the binary equivalents of the two integers. This bitwise logic operation is performed on all corresponding bits of the two numbers. The result of a logic operation is returned as an integer.

Bit operations

The rest of the functions in this group are used for operations on the bits of a given number. You can use these functions to:

  • Clear a bit
  • Toggle a bit
  • Test a bit
  • Set a bit or bit field
  • Retrieve the weighted value of a bit or field value

All these functions use an index parameter to specify the bit position of the given number. The least significant bit of a given number has an index of 1, and the most significant bit has an index of 32.

VARIABLE - NOTE The Test Script Processor (TSP) scripting engine stores all numbers internally as IEEE Std 754 double-precision floating-point values. The logical operations work on 32‑bit integers. Any fractional bits are truncated. For numbers larger than 4294967295, only the lower 32 bits are used.

bit.bitand()

bit.bitor()

bit.bitxor()

bit.clear()

bit.get()

bit.getfield()

bit.set()

bit.setfield()

bit.test()

bit.toggle()

Data queue

Use the data queue commands to:

  • Share data between test scripts running in parallel
  • Access data from a remote group or a local node on a TSP‑LinkTM network at any time

The data queue in the Test Script Processor (TSPTM) scripting engine is first-in, first-out (FIFO).

You can access data from the data queue even if a remote group or a node has overlapped operations in process.

dataqueue.add()

dataqueue.CAPACITY

dataqueue.clear()

dataqueue.count

dataqueue.next()

Digital I/O

VARIABLE - NOTE The 2604B, 2614B, and 2634B do not have digital input/output lines. The commands to control the digital input/output lines are not available for these models.

The digital I/O port of the instrument can control external circuitry (such as a component handler for binning operations).

The I/O port has 14 lines. Each line can be at TTL logic state 1 (high) or 0 (low). See the pinout diagram in Digital I/O port for additional information.

There are commands to read and write to each individual bit, and commands to read and write to the entire port.

digio.readbit()

digio.readport()

digio.trigger[N].assert()

digio.trigger[N].clear()

digio.trigger[N].EVENT_ID

digio.trigger[N].mode

digio.trigger[N].overrun

digio.trigger[N].pulsewidth

digio.trigger[N].release()

digio.trigger[N].reset()

digio.trigger[N].stimulus

digio.trigger[N].wait()

digio.writebit()

digio.writeport()

digio.writeprotect

Error queue

When errors and events occur, the error and status messages are placed in the error queue. Use the error queue commands to request error and status message information.

errorqueue.clear()

errorqueue.count

errorqueue.next()

Event log

You can use the event log to view specific details about LAN triggering events.

eventlog.all()

eventlog.clear()

eventlog.count

eventlog.enable

eventlog.next()

eventlog.overwritemethod

File I/O

You can use the file I/O commands to open and close directories and files, write data, or to read a file on an installed USB flash drive. File I/O commands are organized into two groups:

  • Commands that reside in the fs and io table, for example: io.open(), io.close(), io.input(), and io.output(). Use these commands to manage file system directories; open and close file descriptors; and perform basic I/O operations on a pair of default files (one input and one output).
  • Commands that reside in the file descriptors (for example: fileVar:seek(), fileVar:write(), and fileVar:read()) operate exclusively on the file with which they are associated.

The root folder of the USB flash drive has the absolute path:

"/usb1/"

VARIABLE - NOTE You can use either the slash (/) or backslash (\) as a directory separator. However, the backslash is also used as an escape character, so if you use it as a directory separator, you generally need to use a double backslash (\\) when you are creating scripts or sending commands to the instrument.

For basic information about navigation and directory listing of files on a flash drive, see File system navigation.

File descriptor commands for file I/O use a colon (:) to separate the command parts rather than a period (.), like the io commands.

File descriptors cannot be passed between nodes in a TSP-LinkTM system, so the io.open(), fileVar::read(), and fileVar::write commands are not accessible to the TSP-Link system. However, the default input and output files mentioned above allow for the execution of many file I/O operations without any reference to a file descriptor.

fileVar:close()

fileVar:flush()

fileVar:read()

fileVar:seek()

fileVar:write()

fs.chdir()

fs.cwd()

fs.is_dir()

fs.is_file()

fs.mkdir()

fs.readdir()

fs.rmdir()

io.close()

io.flush()

io.input()

io.open()

io.output()

io.read()

io.type()

io.write()

os.remove()

os.rename()

The following standard I/O commands are not supported:

File

I/O

  • fileVar:lines()
  • fileVar:setvbuf()
  • io.lines()
  • io.popen()

File system navigation

The 2600B can use commands from the Lua fs library to navigate and list files that are available on a flash drive. These Lua commands are in the fs command group in the instrument.

The fs commands make the file system of any given node available to the entire TSP-LinkTM system. For example, you can use the command node[5].fs.readdir(".") to read the contents of the current working directory on node 5.

The root folder of the USB flash drive has the absolute path:

"/usb1/"

VARIABLE - NOTE You can use either the slash (/) or backslash (\) as a directory separator. However, the backslash is also used as an escape character, so if you use it as a directory separator, you generally need to use a double backslash (\\) when you are creating scripts or sending commands to the instrument.

The instrument supports the following Lua fs commands:

fs.chdir()

fs.cwd()

fs.is_dir()

fs.is_file()

fs.mkdir()

fs.readdir()

fs.rmdir()

The following Lua fs commands are not supported:

fs.chmod()
fs.chown()
fs.stat()

GPIB

This attribute stores the GPIB address.

gpib.address

Instrument identification

These commands store strings that describe the instrument.

localnode.description

localnode.model

localnode.revision

localnode.serialno

LAN and LXI

The LAN commands have options that allow you to review and configure network settings.

The lan.config.* commands allow you to configure LAN settings over the remote interface.

VARIABLE - NOTE You must send lan.applysettings() for the configuration settings to take effect.

The lan.status.* commands help you determine the status of the LAN.

The lan.trigger[N].* commands allow you to set up and assert trigger events that are sent over the LAN.

Other LAN commands allow you to reset the LAN, restore defaults, check LXI domain information, and enable or disable the Nagle algorithm.

lan.applysettings()

lan.autoconnect

lan.config.dns.address[N]

lan.config.dns.domain

lan.config.dns.dynamic

lan.config.dns.hostname

lan.config.dns.verify

lan.config.duplex

lan.config.gateway

lan.config.ipaddress

lan.config.method

lan.config.speed

lan.config.subnetmask

lan.linktimeout

lan.lxidomain

lan.nagle

lan.reset()

lan.restoredefaults()

lan.status.dns.address[N]

lan.status.dns.name

lan.status.duplex

lan.status.gateway

lan.status.ipaddress

lan.status.macaddress

lan.status.port.dst

lan.status.port.rawsocket

lan.status.port.telnet

lan.status.port.vxi11

lan.status.speed

lan.status.subnetmask

lan.timedwait

lan.trigger[N].assert()

lan.trigger[N].clear()

lan.trigger[N].connect()

lan.trigger[N].connected

lan.trigger[N].disconnect()

lan.trigger[N].EVENT_ID

lan.trigger[N].ipaddress

lan.trigger[N].mode

lan.trigger[N].overrun

lan.trigger[N].protocol

lan.trigger[N].pseudostate

lan.trigger[N].stimulus

lan.trigger[N].wait()

localnode.description

localnode.password

localnode.passwordmode

Queries and response messages

You can use the print(), printbuffer(), and printnumber() functions to query the instrument and generate response messages. The format attributes control how the data is formatted for the print functions used.

The localnode commands determine if generated errors are automatically sent and if prompts are generated.

format.asciiprecision

format.byteorder

format.data

localnode.prompts

localnode.prompts4882

localnode.showerrors

print()

printbuffer()

printnumber()

Saved setups

Use the saved setups commands to save or restore the configurations to or from the nonvolatile memory of the instrument or an installed USB flash drive. You can use the setup.poweron attribute to specify which setup is recalled when the instrument is turned on.

setup.poweron

setup.recall()

setup.save()

Scripting

Scripting helps you combine commands into a block of code that the instrument can run. Scripts help you communicate with the instrument efficiently. These commands describe how to create, load, modify, run, and exit scripts.

For detail on using scripts, see Fundamentals of scripting for TSP.

exit()

makegetter()

makesetter()

script.anonymous

script.delete()

script.factory.catalog()

script.load()

script.new()

script.newautorun()

script.restore()

script.run()

script.user.catalog()

scriptVar.autorun

scriptVar.list()

scriptVar.name

scriptVar.run()

scriptVar.save()

scriptVar.source

SMU

localnode.linefreq

smuX.abort()

smuX.buffer.getstats()

smuX.buffer.recalculatestats()

smuX.contact.check()

smuX.contact.r()

smuX.contact.speed

smuX.contact.threshold

smuX.makebuffer()

smuX.measure.autorangeY

smuX.measure.autozero

smuX.measure.count

smuX.measure.delay

smuX.measure.delayfactor

smuX.measure.filter.count

smuX.measure.filter.enable

smuX.measure.filter.type

smuX.measure.highcrangedelayfactor

smuX.measure.interval

smuX.measure.lowrangeY

smuX.measure.nplc

smuX.measure.overlappedY()

smuX.measure.rangeY

smuX.measure.rel.enableY

smuX.measure.rel.levelY

smuX.measure.Y()

smuX.measureYandstep()

smuX.nvbufferY

smuX.reset()

smuX.savebuffer()

smuX.sense

smuX.source.autorangeY

smuX.source.compliance

smuX.source.delay

smuX.source.func

smuX.source.highc

smuX.source.levelY

smuX.source.limitY

smuX.source.lowrangeY

smuX.source.offlimitY

smuX.source.offmode

smuX.source.output

smuX.source.outputenableaction

smuX.source.rangeY

smuX.source.settling

smuX.trigger.arm.count

smuX.trigger.arm.set()

smuX.trigger.arm.stimulus

smuX.trigger.ARMED_EVENT_ID

smuX.trigger.autoclear

smuX.trigger.count

smuX.trigger.endpulse.action

smuX.trigger.endpulse.set()

smuX.trigger.endpulse.stimulus

smuX.trigger.endsweep.action

smuX.trigger.IDLE_EVENT_ID

smuX.trigger.initiate()

smuX.trigger.measure.action

smuX.trigger.measure.set()

smuX.trigger.measure.stimulus

smuX.trigger.measure.Y()

smuX.trigger.MEASURE_COMPLETE_EVENT_ID

smuX.trigger.PULSE_COMPLETE_EVENT_ID

smuX.trigger.source.action

smuX.trigger.source.limitY

smuX.trigger.source.linearY()

smuX.trigger.source.listY()

smuX.trigger.source.logY()

smuX.trigger.source.set()

smuX.trigger.source.stimulus

smuX.trigger.SOURCE_COMPLETE_EVENT_ID

smuX.trigger.SWEEP_COMPLETE_EVENT_ID

smuX.trigger.SWEEPING_EVENT_ID

Status model

The status model is a set of status registers and queues. You can use the following commands to manipulate and monitor these registers and queues to view and control various instrument events.

status.condition

status.measurement.*

status.measurement.buffer_available.*

status.measurement.current_limit.*

status.measurement.instrument.*

status.measurement.instrument.smuX.*

status.measurement.reading_overflow.*

status.measurement.voltage_limit.*

status.node_enable

status.node_event

status.operation.*

status.operation.calibrating.*

status.operation.instrument.*

status.operation.instrument.digio.*

status.operation.instrument.digio.trigger_overrun.*

status.operation.instrument.lan.*

status.operation.instrument.lan.trigger_overrun.*

status.operation.instrument.smuX.*

status.operation.instrument.smuX.trigger_overrrun.*

status.operation.instrument.trigger_blender.*

status.operation.instrument.trigger_blender.trigger_overrun.*

status.operation.instrument.trigger_timer.*

status.operation.instrument.trigger_timer.trigger_overrun.*

status.operation.instrument.tsplink.*

status.operation.instrument.tsplink.trigger_overrun.*

status.operation.measuring.*

status.operation.remote.*

status.operation.sweeping.*

status.operation.trigger_overrun.*

status.operation.user.*

status.questionable.*

status.questionable.calibration.*

status.questionable.instrument.*

status.questionable.instrument.smuX.*

status.questionable.over_temperature.*

status.questionable.unstable_output.*

status.request_enable

status.request_event

status.reset()

status.standard.*

status.system.*

status.system2.*

status.system3.*

status.system4.*

status.system5.*

Triggering

The triggering commands allow you to set the conditions that the instrument uses to determine when measurements are captured. See Sweep operation for details on sweeping.

VARIABLE - NOTE
The digio and tsplink commands are not available on the 2604B, 2614B, and 2634B.

digio.trigger[N].assert()

digio.trigger[N].clear()

digio.trigger[N].EVENT_ID

digio.trigger[N].mode

digio.trigger[N].overrun

digio.trigger[N].pulsewidth

digio.trigger[N].release()

digio.trigger[N].reset()

digio.trigger[N].stimulus

digio.trigger[N].wait()

display.trigger.clear()

display.trigger.EVENT_ID

display.trigger.overrun

display.trigger.wait()

lan.trigger[N].assert()

lan.trigger[N].clear()

lan.trigger[N].connect()

lan.trigger[N].connected

lan.trigger[N].disconnect()

lan.trigger[N].EVENT_ID

lan.trigger[N].ipaddress

lan.trigger[N].mode

lan.trigger[N].overrun

lan.trigger[N].protocol

lan.trigger[N].pseudostate

lan.trigger[N].stimulus

lan.trigger[N].wait()

smuX.trigger.arm.count

smuX.trigger.arm.set()

smuX.trigger.arm.stimulus

smuX.trigger.ARMED_EVENT_ID

smuX.trigger.autoclear

smuX.trigger.count

smuX.trigger.endpulse.action

smuX.trigger.endpulse.set()

smuX.trigger.endpulse.stimulus

smuX.trigger.endsweep.action

smuX.trigger.IDLE_EVENT_ID

smuX.trigger.initiate()

smuX.trigger.measure.action

smuX.trigger.measure.set()

smuX.trigger.measure.stimulus

smuX.trigger.measure.Y()

smuX.trigger.MEASURE_COMPLETE_EVENT_ID

smuX.trigger.PULSE_COMPLETE_EVENT_ID

smuX.trigger.source.action

smuX.trigger.source.limitY

smuX.trigger.source.linearY()

smuX.trigger.source.listY()

smuX.trigger.source.logY()

smuX.trigger.source.set()

smuX.trigger.source.stimulus

smuX.trigger.SOURCE_COMPLETE_EVENT_ID

smuX.trigger.SWEEP_COMPLETE_EVENT_ID

smuX.trigger.SWEEPING_EVENT_ID

trigger.blender[N].clear()

trigger.blender[N].EVENT_ID

trigger.blender[N].orenable

trigger.blender[N].overrun

trigger.blender[N].reset()

trigger.blender[N].stimulus[M]

trigger.blender[N].wait()

trigger.clear()

trigger.EVENT_ID

trigger.generator[N].assert()

trigger.generator[N].EVENT_ID

trigger.timer[N].clear()

trigger.timer[N].count

trigger.timer[N].delay

trigger.timer[N].delaylist

trigger.timer[N].EVENT_ID

trigger.timer[N].overrun

trigger.timer[N].passthrough

trigger.timer[N].reset()

trigger.timer[N].stimulus

trigger.timer[N].wait()

trigger.wait()

tsplink.trigger[N].assert()

tsplink.trigger[N].clear()

tsplink.trigger[N].EVENT_ID

tsplink.trigger[N].mode

tsplink.trigger[N].overrun

tsplink.trigger[N].pulsewidth

tsplink.trigger[N].release()

tsplink.trigger[N].reset()

tsplink.trigger[N].stimulus

tsplink.trigger[N].wait()

Userstrings

Use the functions in this group to store and retrieve user-defined strings in nonvolatile memory. These strings are stored as key‑value pairs. The key is a unique identifier such as a part number or identification string.

You can use the userstring functions to store custom, instrument-specific information in the instrument, such as department number, asset number, or manufacturing plant location.

userstring.add()

userstring.catalog()

userstring.delete()

userstring.get()

Factory scripts

The Keithley Instruments 2600B System SourceMeter® instrument is shipped with one or more factory scripts saved in its flash firmware memory. A factory script is made up of a number of functions. Some of them can be called from the front‑panel LOAD TEST menu. All of them can be called using remote programming.

A factory script is similar to a user script, except a factory script is created by Keithley Instruments at the factory and is permanently stored in nonvolatile memory. The differences between a user script and a factory script include the following:

  • A factory script cannot be deleted from nonvolatile memory.
  • The script listing for a factory script can be retrieved and modified, but it is then treated as a user script. A user script cannot be saved as a factory script.
  • Factory scripts are not stored in global variables. The only references to factory scripts are in the script.factory.scripts attribute.
  • The script.factory.catalog() function returns an iterator that can be used in a for loop to iterate over all the factory scripts.

Example

To retrieve the catalog listing for factory scripts, send:

for name in script.factory.catalog() do print(name) end

Running a factory script

Use either of the following commands to run a factory script:

script.factory.scripts.name()
script.factory.scripts.name.run()

Where: name is the name of the factory script.

Example:

Run the factory script named KISweep.

script.factory.scripts.KISweep()

Running a factory script function from the front-panel controls

  1. Press the LOAD key.
  2. Select FACTORY.
  3. Select the function to run and press the ENTER key or navigation wheel.
  4. Press the RUN key.
  5. Follow the prompts on the front panel to run the script.

Retrieving and modifying a factory script listing

The script listing for a factory script can be retrieved and modified. However, it cannot be saved as a factory script. The modified script can be saved as a user script using the same name or a new name.

An imported factory script can only be reloaded into the 2600B as a user script.

The following function retrieves a script listing. The script code is output with the shell keywords (loadscript or loadandrunscript and endscript):

script.factory.scripts.name.list()

Where: name is the name of the factory script.

An example that retrieves the script listing for a factory script named KISweep:

script.factory.scripts.KISweep.list()

KISweep factory script

The KISweep factory script provides simple sweep test programming and shows how to use the sweeping function.

This script is made up of the following functions. Access these functions from the front panel or the remote interfaces. The following functions make up the KISweep factory script:

SweepILinMeasureV()

SweepIListMeasureV()

SweepILogMeasureV()

SweepVLinMeasureI()

SweepVListMeasureI()

SweepVLogMeasureI()

KIPulse factory script

The KIPulse factory script provides examples of how to generate pulses and to provide a simple pulsing interface. Pulses can be generated using the functions listed below.

VARIABLE - NOTE Please note the following information about the KIPulse factory script:

  • This factory script only operates on the channels present in the instrument executing the pulse functions. These functions do not operate correctly if you attempt to access instrument channels over the TSP‑LinkTM interface.
  • The KIPulse factory scripts are general purpose examples that may not be suitable for all use cases. Very short pulses (less than 1 ms pulse width) may require optimization of the examples provided by the factory script in order to achieve settled measurements.
  • The PulseIMeasureV() and PulseVMeasureI() functions may be accessed from the front panel. The remaining functions may only be accessed remotely.

Use the configuration KIPulse tag parameter pulse functions to configure a pulse train and assign the configuration to the tag parameter (use QueryPulseConfig() to inspect configured pulse trains). Use the initiation InitiatePulseTest() function to execute the pulse trains assigned to its tag arguments. The conditions listed in the table below must be true for these functions to execute successfully.

Conditions that must be true for successful function execution

Conditions for Config functions

Conditions for InitiatePulseTest functions

Conditions for InitiatePulseTestDual functions

Source autorange (I and V) off

Output on

Output on

Measure autorange (I and V) off

There is enough free space in the buffer

There is enough free space in the buffer

Measure NPLC < ton

Buffer append mode is on when pulse train is >1 point

Buffer append mode is on when pulse train is >1 point

Measure autozero OFF or ONCE

Safety interlock engaged when using the 200 V range

Separate unique source‑measure units (SMUs) for each tag

 

 

Safety interlock engaged when using the 200 V range

 

 

Same NPLC setting for each tag

 

 

Same toff for each tag

Use the KIPulse simple pulse functions to specify and perform a specified number of pulse-measure cycles.

KIPulse tag parameter pulse functions

ConfigPulseIMeasureV()

ConfigPulseVMeasureI()

ConfigPulseIMeasureVSweepLin()

ConfigPulseVMeasureISweepLin()

ConfigPulseIMeasureVSweepLog()

ConfigPulseVMeasureISweepLog()

InitiatePulseTest()

InitiatePulseTestDual()

QueryPulseConfig()

KIPulse simple pulse functions

PulseIMeasureV()

PulseVMeasureI()

Advanced features for KIPulse tag parameter pulse functions

Variable off time between pulses in a pulse train

The KIPulse “Configure” functions accept the toff parameter as a table or as a number. The table allows you to define different off times to be used after each pulse. Note the following:

  • If toff is passed as a number or only a single value is used in the table, it is used for all points in a multiple point pulse.
  • The number of times specified in the table must match the number of points called for in the sweep.
  • The times used in tables must match for dual channel pulsing.
  • Each specified off time must adhere to the duty cycle limits for the specified pulsing region.

Simultaneous IV measurement during pulse

The KIPulse “Configure” functions optionally accept an extra reading buffer to activate simultaneous IV measurements during pulsing. Previous usage of passing in a reading buffer or a nil (for no measurement) is still supported.

KIHighC factory script

The KIHighC factory script is made up of two functions: i_leakage_measure() and i_leakage_threshold(). These functions are intended to be used when high capacitance mode is active. Output is generally at a nonzero voltage before calling these functions. These functions can also be used to step the voltage to zero volts in order to measure the leakage current.

i_leakage_measure()

i_leakage_threshold()

KIParlib factory script

The KIParlib factory script is made up of two functions: gm_vsweep() and gm_isweep().

gm_vsweep()

gm_isweep()

KISavebuffer factory script

The KISavebuffer script has one function: savebuffer().

savebuffer()

Instrument programming

Fundamentals of scripting for TSP

VARIABLE - NOTE Though it can improve your process to use scripts, you do not have to create scripts to use the instrument. Most of the examples in the documentation can be run by sending individual command messages. The following few sections of the documentation describe scripting and programming features of the instrument. You only need to review this information if you are using scripting and programming.

Scripting helps you combine commands into a block of code that the instrument can run. Scripts help you communicate with the instrument more efficiently.

Scripts offer several advantages compared to sending individual commands from the host controller (computer):

  • Scripts are easier to save, refine, and implement than individual commands.
  • The instrument performs more quickly and efficiently when it processes scripts than it does when it processes individual commands.
  • You can incorporate features such as looping and branching into scripts.
  • Scripts allow the controller to perform other tasks while the instrument is running a script, enabling some parallel operation.
  • Scripts eliminate repeated data transfer times from the controller.

In the instrument, the Test Script Processor (TSPTM) scripting engine processes and runs scripts.

This section describes how to create, load, modify, and run scripts.

What is a script?

A script is a collection of instrument control commands and programming statements. Scripts that you create are referred to as user scripts.

Your scripts can be interactive. Interactive scripts display messages on the front panel of the instrument that prompt the operator to enter parameters.

Runtime and nonvolatile memory storage of scripts

Scripts are loaded into the runtime environment of the instrument. From there, they can be stored in nonvolatile memory in the instrument.

The runtime environment is a collection of global variables, which include scripts, that the user has defined. A global variable can be used to store a value while the instrument is turned on. When you create a script, the instrument creates a global variable with the same name so that you can reference the script more conveniently. After scripts are loaded into the runtime environment, you can run and manage them from the front panel of the instrument or from a computer. Information in the runtime environment is lost when the instrument is turned off.

Nonvolatile memory is where information is stored even when the instrument is turned off. Save scripts to nonvolatile memory to save them even if the power is cycled. The scripts that are in nonvolatile memory are loaded into the runtime environment when the instrument is turned on.

Scripts are placed in the runtime environment when:

  • The instrument is turned on. All scripts that are saved to nonvolatile memory are copied to the runtime environment when the instrument is turned on.
  • Loaded over a remote command interface.

For detail on the amount of memory available in the runtime environment, see Memory considerations for the runtime environment.

VARIABLE - NOTE If you make changes to a script in the runtime environment, the changes are lost when the instrument is turned off. To save the changes, you must save them to nonvolatile memory. See Working with scripts in nonvolatile memory.

What can be included in scripts?

Scripts can include combinations of Test Script Processor (TSPTM) commands and Lua code. TSP commands instruct the instrument to do one thing and are described in the command reference (see TSP commands). Lua is a scripting language that is described in Fundamentals of programming for TSP.

Commands that cannot be used in scripts

Though the instrument accepts the following commands, you cannot use these commands in scripts.

Commands that cannot be used in scripts

General commands

IEEE Std 488.2 common commands

abort

endflash

endscript

flash

loadscript

loadandrunscript

password

restoreglobals

*CLS

*ESE

*ESE?

*ESR?

*IDN?

*OPC

*OPC?

*RST

*SRE

*SRE?

*STB?

*TRG

*TST?

*WAI

Manage scripts

This section describes how to create scripts by sending commands over the remote interface.

Tools for managing scripts

To manage scripts, you can send messages to the instrument, use your own development tool or program, use Keithley Test Script Builder (TSB) software, or use TSB Embedded on the web interface of the instrument.

TSB software is a programming tool that you can download from the Product Support and Downloads web page. You can use it to create, modify, debug, and store Test Script Processor (TSPTM) scripting engine scripts. For more information about using the TSB software, see Using Test Script Builder (TSB).

TSB Embedded is a tool with a reduced set of features than the complete Keithley TSB software. TSB Embedded has both script-building functionality and console functionality (single‑line commands). It is accessed from a web browser. Refer to Working with TSB Embedded for additional information.

VARIABLE - NOTE If you are using TSB or TSB Embedded to create scripts, you do not need to use the commands loadscript or loadandrunscript and endscript.

Create and load a script

You create scripts by loading them into the runtime environment of the instrument. You can load a script as a named script or as the anonymous script.

Once a script is loaded into the instrument, you can execute it remotely or from the front panel.

Anonymous scripts

If a script is created with the loadscript or loadandrunscript command with no name defined, it is called the anonymous script. There can only be one anonymous script in the runtime environment. If another anonymous script is loaded into the runtime environment, it replaces the existing anonymous script.

Named scripts

A named script is a script with a unique name. You can have as many named scripts as needed in the instrument (within the limits of the memory available to the runtime environment). When a named script is loaded into the runtime environment with the loadscript or loadandrunscript commands, a global variable with the same name is created to reference the script.

Key points regarding named scripts:

  • If you load a new script with the same name as an existing script, the existing script becomes an unnamed script, which in effect removes the existing script if there are no variables that reference it.
  • Sending revised scripts with different names does not remove previously loaded scripts.
  • Named scripts can be saved to internal nonvolatile memory. Saving a named script to nonvolatile memory allows the instrument to be turned off without losing the script. See Working with scripts in nonvolatile memory.
Load a script by sending commands over the remote interface

To load a script over the remote interface, you can use the loadscript, loadandrunscript, and endscript commands.

The loadscript and loadandrunscript commands start the collection of messages that make up the script. When the instrument receives either of these commands, it starts collecting all subsequent messages. Without these commands, the instrument runs them immediately as individual commands.

The endscript command tells the instrument to compile the collection of messages. It compiles the messages into one group of commands. This group of commands is loaded into the runtime environment.

The following figure shows an example of how to load a script named test. The first command tells the instrument to start collecting the messages for the script named test. The last command marks the end of the script. When this script is run, the message This is a test is displayed on the instrument and sent to the computer.

Loadscript and endscript example

To load a named script by sending commands:

  1. Send the command loadscript scriptName, where scriptName is the name of the script. The name must be a legal Lua variable name.
  2. Send the commands that need to be included in the script.
  3. Send the command endscript.
  4. You can now run the script. See Run scripts.

VARIABLE - NOTE To run the script immediately, use loadandrunscript scriptName instead of loadscript.

Load a script from the instrument front panel

You can also load scripts from a USB flash drive to the runtime environment of the instrument. Depending on the content of the TSP file on the drive, the script can be loaded either as an anonymous script without a designated name, or as a named script with a user-defined name. Only named scripts can be saved to internal nonvolatile memory. Only one anonymous script can exist in the runtime environment.

To load a script into the instrument with a specific name, the TSP file must include the shell keywords loadscript and endscript, along with the specified script name, as shown in the example file MyScript1.tsp, which contains the script:

loadscript Beeper

reset()

beeper.enable = beeper.ON

beeper.beep(2, 2400)

endscript

When you load the file MyScript1.tsp from the flash drive, a script named Beeper is created in the runtime environment. Note that the script is named using the name that follows the loadscript keyword, not the name of the TSP file on the flash drive. After the script is loaded, you can choose to save it to nonvolatile memory.

If the loaded file does not contain loadscript and endscript keywords, or if no name is included after the loadscript keyword, the code is loaded as the anonymous script. Loading an unnamed script overwrites the existing anonymous script. For example, if a file named MyScript2.tsp contains only the following code, the script is loaded as the anonymous script:

reset()

beeper.enable = beeper.ON

beeper.beep(2, 2400)

The file must be a valid script file. If not, an error message is posted and no further action is taken. You can view the errors on the front panel of the instrument.

To load a script from a USB flash drive:

  1. Insert the flash drive into the USB port on the instrument.
  2. Select the MENU key.
  3. Select the SCRIPT option.
  4. Select the LOAD option.
  5. Select the USB1 option. A menu is displayed that lists the TSP files and directories on the flash drive.
  6. If the files are in a directory, use the navigation wheel to select the directory. A new menu is displayed that lists the TSP files and directories in that directory.
  7. Use the navigation wheel to select the TSP file you want to load.
  8. If the script has the same name as a script that is already in memory, you are prompted to overwrite the script.
    • Select Yes to continue.
    • Select No to return to the list of files. You must select a file to continue.
  9. The SCRIPT ACTION menu is displayed. You can select:
    • SAVE-INTERNAL: Save the file to nonvolatile memory. This is the same as sending scriptVar.save() with no parameters.
    • ACTIVE-FOR-RUN: Set the script to run from the RUN button.
  10. Loading is complete. To return to the MAIN menu, press EXIT (LOCAL) until the MAIN menu is displayed.
  11. If you selected ACTIVE-FOR-RUN, you can select RUN to run the script.

VARIABLE - NOTE The entries in the SCRIPT ACTION menu depend on whether the script that was loaded is a named script or the anonymous script. If it is a named script, both SAVE-INTERNAL and ACTIVE-FOR-RUN appear in the menu. If it is the anonymous script, then only ACTIVE-FOR-RUN appears in the menu.

Run scripts

This section describes how to run the anonymous and named scripts.

On the front panel, items are available through the USER menu if you explicitly add them to the menu. The items the menu selections represent can be scripts, function calls, or instrument commands. Items in the menus are referred to as scripts in this section.

The SCRIPTS menu lists the names of scripts in nonvolatile memory or scripts that have been added to the runtime environment. The anonymous script also appears in this menu.

VARIABLE - NOTE If the instrument is in local control when the script is started, it switches to remote control (REM is displayed) while the script is running. The instrument is returned to local control when the script completes. If you press the front‑panel EXIT (LOCAL) key while the script is running, the script is stopped.

Run the anonymous script

The anonymous script can be run many times without reloading it. It remains in the runtime environment until a new anonymous script is created or until the instrument is turned off.

To run the anonymous script, use any one of these commands:

  • run()
  • script.run()
  • script.anonymous()
  • script.anonymous.run()
Run a named script

You can run any named script that is in the runtime environment using one of the following commands:

  • scriptVar()
  • scriptVar.run()

Where scriptVar is the user-defined name of the script.

When a script is named, it can be accessed using the global variable scriptVar.

To run a named script from TSB Embedded, select the script from the User Scripts list and select Run.

Example: Run a named script

test3()

If the script test3 is loaded into the runtime environment, the instrument executes test3.

Run a user script from the instrument front panel

From the front panel, you can load and run a script that was previously added to the USER menu.

To run the code from the front panel and add it to the USER menu:

  1. Select the LOAD key.
  2. Select USER.
  3. Select the script from list and press the ENTER key. The script is loaded into the runtime environment.
  4. Press the RUN key to execute.

To run a script directly without adding it to the USER menu:

  1. Select the LOAD key.
  2. Select SCRIPTS and select the ENTER key. There may be a short pause before a menu is displayed that represents the scripts in the instrument.
  3. Select the script from the list and select the ENTER key. The script is now loaded for front‑panel execution.
  4. Press the RUN key to execute.

Scripts that run automatically

You can set up scripts to run automatically when you power on the instrument. To do this, either set the autorun attribute for the script to yes (see Autorun scripts) or create a script with the script name autoexec (see Autoexec script).

Autoexec script

The autoexec script runs automatically when the instrument is turned on. It runs after all the scripts have loaded and any scripts defined as autorun have run.

To create a script that executes automatically, create and load a new script and name it autoexec. See Create and load a script.

VARIABLE - NOTE You must save the autoexec script to nonvolatile memory if you want to use it after instrument power has been turned off and then turned on again. See Save a user script to nonvolatile memory for more detail.

Example: Create an autoexec script with the loadscript command

loadscript autoexec

display.clear()

display.settext("Hello from autoexec")

endscript

autoexec.save()

Creates the script autoexec.

Saves the autoexec script to nonvolatile memory. The next time the instrument is turned on, Hello from autoexec is displayed.

Example: Create an autoexec script using TSB Embedded

display.clear()

display.settext("Hello from autoexec")

In the TSP Script box, enter autoexec.

Enter the code in the entry box.

Select Save Script.

Creates a new script that clears the display when the instrument is turned on and displays Hello from autoexec.

Autorun scripts

Autorun scripts run automatically when the instrument is turned on. You can set any number of scripts to autorun. The run order for autorun scripts is arbitrary, so make sure the run order is not important.

You can set a script to run automatically by setting the .autorun attribute of the script to "yes" and then saving the script. The format is:

scriptVar.autorun = "yes"

scriptVar.save()

Where scriptVar is the user-defined name of the script.

To disable autorun, set the autorun attribute of the script to no and then save the script.

VARIABLE - NOTE The scriptVar.save() command saves the script to nonvolatile memory, which makes the change persistent through a power cycle. Refer to Save a user script to nonvolatile memory for more detail.

Example: Set a script to run automatically

test5.autorun = "yes"

test5.save()

Assume a script named test5 is in the runtime environment.

The next time the instrument is turned on, test5 script automatically loads and runs.

Work with scripts in nonvolatile memory

This section of the manual has primarily described working with scripts in the runtime environment. You can also work with scripts in nonvolatile memory.

The runtime environment and nonvolatile memory are separate storage areas in the instrument. The information in the runtime environment is lost when the instrument is turned off. The nonvolatile memory remains intact when the instrument is turned off. When the instrument is turned on, information in nonvolatile memory is loaded into the runtime environment.

Save a user script

You can save scripts to nonvolatile memory using commands or TSB Embedded.

Only named scripts can be saved to nonvolatile memory. The anonymous script must be named before it can be saved to nonvolatile memory.

Save the anonymous script as a named script

To save the anonymous script to nonvolatile memory, you must name it first.

To save the anonymous script as a named script:

  1. To name the script, send the command script.anonymous.name = "myTest" (where myTest is the name of the script).
  2. Send the script.anonymous.save() command to save myTest to nonvolatile memory.
Save a script from the instrument front panel

You can save scripts from the runtime environment to nonvolatile memory or the USB port on the instrument front panel.

VARIABLE - NOTE If you want to save the anonymous script to nonvolatile memory, you must name it first. See Save the anonymous script as a named script.

To save a script to nonvolatile memory from the front panel:

  1. Select the MENU key.
  2. Select the SCRIPT option.
  3. Select the SAVE option.

    A list of the scripts available to save is displayed. It may take a few seconds to display. The displayed list is from the script.user.scripts table in the instrument.
  4. Turn the navigation wheel to select the script that you want to save.
  5. Select INTERNAL. Press the navigation wheel. The script is saved to nonvolatile memory using the name attribute of the script.
  6. Press EXIT (LOCAL) several times to return to the Main Menu.

Delete user scripts

VARIABLE - NOTE These steps remove a script from nonvolatile memory. To completely remove a script from the instrument, there are additional steps you must take. See Delete user scripts from the instrument.

To delete a script from nonvolatile memory using a remote interface, send either of the following commands:

  • script.delete("name")
  • script.user.delete("name")

Where: name is the user-defined name of the script.

Example: Delete a user script from nonvolatile memory

script.delete("test8")

Delete a user script named test8 from nonvolatile memory.

To delete a script from nonvolatile memory using TSB Embedded:

  1. In TSB Embedded, select the script from the User Scripts list.
  2. Select Delete. There is no confirmation message.

Programming example: Interactive script

An interactive script prompts the operator to input values using front panel controls. The following example script uses display messages to prompt the operator to:

  • Enter the voltage level to source
  • Enable or disable measurements
  • Set the number of readings if measurements are enabled

After the operator completes entering values, the output turns on and sources the specified value. If measurements were enabled, a message indicates that measurements are in progress. Another message is displayed when the source-measure operation is complete. If measurements were not enabled, the message indicates that the source operation is complete.

When an input prompt is displayed, the script waits until the operator inputs the parameter or presses the ENTER key. The example shown here assumes that you are using TSB or TSB Embedded. If you are using a remote interface, you need to add the loadscript and endscript commands to the example code. See Load a script by sending commands over the remote interface for details.

reset()

-- Clear the display.

display.clear()

-- Prompt the user for a voltage value to source.

srcVoltage = display.prompt("+000.00", " V", "Enter source voltage", 5, -20, 20)

-- Prompt the user to enable measurements.

measEnable = display.menu("Measurements?", "ENABLE DISABLE")

if measEnable == "ENABLE" then

      -- Prompt the user for the number of measurements.

      numMeas = display.prompt("0000", " Rdgs", "Enter the number of readings", 10,

0, 9999)

      smua.measure.count = numMeas

      smua.nvbuffer1.clear()

end

-- Convert user input to the source level.

smua.source.levelv = tonumber(srcVoltage)

smua.source.output = smua.OUTPUT_ON

if measEnable == "ENABLE" then

      -- Inform the user that measurements are in progress

      display.setcursor(1, 1)

display.settext("$BPlease wait.$R$NMeasure operation in progress.")

smua.measure.i(smua.nvbuffer1)

      display.clear()

      -- Inform the user that the Source Measure operation has finished

      display.settext("Operation Finished$NSource-Measure Complete")

else

      -- Inform the user that the Source operation has finished

      display.settext("Operation Finished$NSource Complete")

end

-- Wait 5 seconds then return to the main screen.

delay(5)

display.screen = display.SMUA

Fundamentals of programming for TSP

To conduct a test, a computer (controller) is programmed to send sequences of commands to an instrument. The controller orchestrates the actions of the instrumentation. The controller is typically programmed to request measurement results from the instrumentation and make test sequence decisions based on those measurements.

To use the advanced features of the instrument, you can add programming commands to your scripts. Programming commands control script execution and provide tools such as variables, functions, branching, and loop control.

The Test Script Processor (TSPTM) scripting engine is a Lua interpreter. In TSP-enabled instruments, the Lua programming language has been extended with control commands that are specific to Keithley instruments.

What is Lua?

Lua is a programming language that can be used with TSP-enabled instruments. Lua is an efficient language with simple syntax that is easy to learn.

Lua is also a scripting language, which means that scripts are compiled and run when they are sent to the instrument. You do not compile them before sending them to the instrument.

Lua basics

This section contains the basics about the Lua programming language to allow you to start adding Lua programming commands to your scripts quickly.

For more information about Lua, see the Lua website. Another source of useful information is the Lua users group, created for and by users of Lua programming language.

Comments

You can start a comment anywhere outside a string by typing a double hyphen (--). If the text immediately after -- is anything other than double left brackets ([[), the comment is a short comment, which continues until the end of the line.

If -- is followed by [[, the following characters are a long comment, which continues until double right brackets (]]) close the comment. Long comments may continue for several lines and may contain nested [[ . . . ]] pairs.

An example of a short comment is:

-- Turn off the front-panel display.

An example of a long comment is:

--[[Display a menu with three menu items. If the second menu item is selected,

the selection is given the value Test2.]]

Function and variable name restrictions

You cannot use factory script names, functions created by factory scripts, Lua reserved words and top‑level command names for function or variable names.

For information on factory script names, see Factory scripts.

You cannot use the following Lua reserved words for function or variable names.

Lua reserved words

and

for

or

break

function

repeat

do

if

return

else

in

then

elseif

local

true

end

nil

until

false

not

while

You also cannot use top‑level command names as variable names. If you use these names, it results in the loss of use of the commands. For example, if you send the command digio = 5, you cannot access the digio.* commands until you turn the instrument power off and then turn it on again. These names include:

Top level command names

beeper

gcinfo

os

smub

bit

gettimezone

print

status

collectgarbage

gpib

printbuffer

string

dataqueue

io

printnumber

timer

delay

lan

reset

tonumber

digio

localnode

savebuffer

tostring

display

makegetter

script

trigger

errorqueue

makesetter

serial

tsplink

eventlog

math

settime

tspnet

exit

meminfo

settimezone

type

format

node

setup

userstring

fs

opc

smua

waitcomplete

Values and variable types

In Lua, you use variables to store values in the runtime environment for later use.

Lua is a dynamically‑typed language; the type of the variable is determined by the value that is assigned to the variable.

Variables in Lua are assumed to be global unless they are explicitly declared to be local. A global variable is accessible by all commands. Global variables do not exist until they have been assigned a value.

Variable types

Variables can be one of the following types.

Variable types and values

Variable type returned

Value

Notes

"nil"

not declared

The type of the value nil, whose main property is to be different from any other value; usually it represents the absence of a useful value.

"boolean"

true or false

Boolean is the type of the values false and true. In Lua, both nil and false make a condition false; any other value makes it true.

"number"

number

All numbers are real numbers; there is no distinction between integers and floating-point numbers.

"string"

sequence of words or characters

 

"function"

a block of code

Functions perform a task or compute and return values.

"table"

an array

New tables are created with { } braces. For example:
{1, 2, 3.00e0}

"userdata"

variables

Allows arbitrary program data to be stored in Lua variables.

"thread"

line of execution

 

To determine the type of a variable, you can call the type() function, as shown in the following examples.

VARIABLE - NOTE The output you get from these examples may vary depending on the data format that is set.

Example: Nil

x = nil

print(x, type(x))

nil nil

Example: Boolean

y = false

print(y, type(y))

false boolean

Example: String and number

x = "123"

print(x, type(x))

 

x = x + 7

print(x, type(x))

123 string

 

 

Adding a number to x forces its type to number.

130 number

Example: Function

function add_two(first_value,

second_value)

return first_value + second_value

end

print(add_two(3, 4), type(add_two))

7 function

Example: Table

atable = {1, 2, 3, 4}

print(atable, type(atable))

print(atable[1])

print(atable[4])

Defines a table with four numeric elements.

Note that the table value (shown here as a096cd30) varies.

 

table: a096cd30 table

1

4

Delete a global variable

To delete a global variable, assign nil to the global variable. This removes the global variable from the runtime environment.

Functions

With Lua, you can group commands and statements using the function keyword. Functions can take zero, one, or multiple parameters, and they return zero, one, or multiple values.

You can use functions to form expressions that calculate and return a value. Functions can also act as statements that execute specific tasks.

Functions are first-class values in Lua. That means that functions can be stored in variables, passed as arguments to other functions, and returned as results. They can also be stored in tables.

When a function is defined, it is stored in the runtime environment. Like all data that is stored in the runtime environment, the function persists until it is removed from the runtime environment, is overwritten, or the instrument is turned off.

Create functions using the function keyword

Functions are created with a message or in Lua code in either of the following forms:

function myFunction(parameterX) functionBody end

myFunction = function (parameterX) functionBody end

Where:

  • myFunction: The name of the function.
  • parameterX: Parameter names. To use multiple parameters, separate the names with commas.
  • functionBody: The code that is executed when the function is called.

To execute a function, substitute appropriate values for parameterX and insert them into a message formatted as:

myFunction(valueForParameterX, valueForParameterY)

Where valueForParameterX and valueForParameterY represent the values to be passed to the function call for the given parameters.

VARIABLE - NOTE The output you get from these examples may vary depending on the data format settings of the instrument.

Example 1

function add_two(first_value, second_value)

return first_value + second_value

end

print(add_two(3, 4))

Creates a variable named add_two that has a variable type of function.

Output:

7

Example 2

add_three = function(first_value,

second_value, third_value)

return first_value + second_value +

third_value

end

print(add_three(3, 4, 5))

Creates a variable named add_three that has a variable type of function.

Output:

12

Example 3

function sum_diff_ratio(first_value,

second_value)

psum = first_value + second_value

pdif = first_value - second_value

prat = first_value / second_value

return psum, pdif, prat

end

sum, diff, ratio = sum_diff_ratio(2, 3)

print(sum)

print(diff)

print(ratio)

Returns multiple parameters (sum, difference, and ratio of the two numbers passed to it).

Output:

5

-1

0.66666666666667

Create functions using scripts

You can use scripts to define functions. Scripts that define a function are like any other script: They do not cause any action to be performed on the instrument until they are executed. The global variable of the function does not exist until the script that created the function is executed.

A script can consist of one or more functions. Once a script has been run, the computer can call functions that are in the script directly.

VARIABLE - NOTE The following steps use TSB Embedded. You can also use the loadscript and endscript commands to create the script over the remote interface. See Load a script by sending commands over the remote interface.

Steps to create a function using a script:

  1. In TSB Embedded, enter a name into the TSP Script box. For example, type MakeMyFunction.
  2. Enter the function as the body of the script. This example concatenates two strings:

    MyFunction = function (who)

    print ("Hello".. who)

    end

  3. Select Save Script.
  4. MakeMyFunction is now on the instrument in a global variable with the same name as the script (MakeMyFunction). However, the function defined in the script does not yet exist because the script has not been executed.
  5. Run the script as a function. For this example, send:

    MakeMyFunction()

    This instructs the instrument to run the script, which creates the MyFunction global variable. This variable is of the type "function" (see Variable types).

  6. Run the new function with a value.

    MyFunction("world")

    The response message is:

    Hello world.

Group commands using the function keyword

The following script contains instrument commands that display the name of the person that is using the script on the front panel of the instrument. It takes one parameter to represent this name. When this script is run, the function is loaded in memory. Once loaded into memory, you can call the function outside of the script to execute it.

When calling the function, you must specify a string for the name argument of the function. For example, to set the name to John, call the function as follows:

myDisplay("John")

Example: User script

User script created in Test Script Builder or
TSB Embedded

User script created in a different program

 

function myDisplay(name)

display.clear()

display.settext(

name .. "$N is here!")

end

loadscript

function myDisplay(name)

display.clear()

display.settext(

name .. " $N is here!")

end

endscript

Operators

You can compare and manipulate Lua variables and constants using operators.

Logical operators

The logical operators in Lua are and, or, and not. All logical operators consider both false and nil as false and anything else as true.

The operator not always returns false or true.

The conjunction operator and returns its first argument if the first argument is false or nil; otherwise, and returns its second argument. The disjunction operator or returns its first argument if this value is different from nil and false; otherwise, or returns its second argument. Both and and or use shortcut evaluation, that is, the second operand is evaluated only if necessary.

VARIABLE - NOTE The example output you get may vary depending on the data format settings of the instrument.

Example

print(10 or errorqueue.next())

print(nil or "a")

print(nil and 10)

print(false and errorqueue.next())

print(false and nil)

print(false or nil)

print(10 and 20)

1.00000e+01

a

nil

false

false

nil

2.00000e+01

String concatenation

String operators

Operator

Description

..

Concatenates two strings. If either argument is a number, it is coerced to a string (in a reasonable format) before concatenation.

Example: Concatenation

print(2 .. 3)

print("Hello " .. "World")

Output:

23

Hello World

Operator precedence

Operator precedence in Lua follows the order below (from higher to lower priority):

  • ^ (exponentiation)
  • not, - (unary)
  • *, /
  • +, –
  • .. (concatenation)
  • <, >, <=, >=, ~=, ==
  • and
  • or

You can use parentheses to change the precedences in an expression. The concatenation ("..") and exponentiation ("^") operators are right associative. All other binary operators are left associative. The following examples show equivalent expressions.

Equivalent expressions

reading + offset < testValue/2+0.5

=

(reading + offset) < ((testValue/2)+0.5)

3+reading^2*4

=

3+((reading^2)*4)

Rdg < maxRdg and lastRdg <=
expectedRdg

=

(Rdg < maxRdg) and (lastRdg <= expectedRdg)

-reading^2

=

-(reading^2)

reading^testAdjustment^2

=

reading^(testAdjustment^2)

Conditional branching

Lua uses the if, else, elseif, then, and end keywords to do conditional branching.

In Lua, nil and false are false and everything else is true. Zero (0) is true in Lua.

The syntax of a conditional block is as follows:

if expression then

block

elseif expression then

block

else

block

end

Where:

  • expression is Lua code that evaluates to either true or false
  • block consists of one or more Lua statements

Example: If

if 0 then

print("Zero is true!")

else

print("Zero is false.")

end

Output:

Zero is true!

Example: Comparison

x = 1

y = 2

if x and y then

print("Both x and y are true")

end

Output:

Both x and y are true

Example: If and else

x = 2

if not x then

print("This is from the if block")

else

print("This is from the else block")

end

Output:

This is from the else block

Example: Else and elseif

x = 1

y = 2

if x and y then

print("'if' expression 2 was not false.")

end

 

if x or y then

print("'if' expression 3 was not false.")

end

 

if not x then

print("'if' expression 4 was not false.")

else

print("'if' expression 4 was false.")

end

 

if x == 10 then

print("x = 10")

elseif y > 2 then

print("y > 2")

else

print("x is not equal to 10, and y is not greater than 2.")

end

Output:

'if' expression 2 was not false.

'if' expression 3 was not false.

'if' expression 4 was false.

x is not equal to 10, and y is not greater than 2.

Loop control

If you need to repeat code execution, you can use the Lua while, repeat, and for control structures. To exit a loop, you can use the break keyword.

While loops

To use conditional expressions to determine whether to execute or end a loop, you use while loops. These loops are similar to Conditional branching statements.

while expression do

block

end

Where:

  • expression is Lua code that evaluates to either true or false
  • block consists of one or more Lua statements

VARIABLE - NOTE The output you get from this example may vary depending on the data format settings of the instrument.

Example: While

list = {

"One", "Two", "Three", "Four", "Five", "Six"}

print("Count list elements on numeric index:")

element = 1

while list[element] do

print(element, list[element])

element = element + 1

end

This loop exits when list[element] = nil.

Output:

Count list elements on

numeric index:

1 One

2 Two

3 Three

4 Four

5 Five

6 Six

Repeat until loops

To repeat a command, you use the repeat ... until statement. The body of a repeat statement always executes at least once. It stops repeating when the conditions of the until clause are met.

repeat

block

until expression

Where:

  • block consists of one or more Lua statements
  • expression is Lua code that evaluates to either true or false

VARIABLE - NOTE The output you get from this example may vary depending on the data format settings of the instrument.

Example: Repeat until

list = {"One", "Two", "Three", "Four", "Five", "Six"}

print("Count elements in list using repeat:")

element = 1

repeat

print(element, list[element])

element = element + 1

until not list[element]

Output:

Count elements in list

using repeat:

1 One

2 Two

3 Three

4 Four

5 Five

6 Six

For loops

There are two variations of for statements supported in Lua: Numeric and generic.

VARIABLE - NOTE In a for loop, the loop expressions are evaluated once, before the loop starts.

The output you get from these examples may vary depending on the data format settings of the instrument.

Example: Numeric for

list = {"One", "Two", "Three", "Four", "Five", "Six"}

---------- For loop -----------

print("Counting from one to three:")

for element = 1, 3 do

print(element, list[element])

end

print("Counting from one to four, in steps of two:")

for element = 1, 4, 2 do

print(element, list[element])

end

The numeric for loop repeats a block of code while a control variable runs through an arithmetic progression.

Output:

Counting from one to three:

1 One

2 Two

3 Three

Counting from one to four, in steps of two:

1 One

3 Three

Example: Generic for

days = {"Sunday",

"Monday", "Tuesday",

"Wednesday", "Thursday",

"Friday", "Saturday"}

for i, v in ipairs(days) do

print(days[i], i, v)

end

The generic for statement works by using functions called iterators. On each iteration, the iterator function is called to produce a new value, stopping when this new value is nil.

Output:

Sunday 1 Sunday

Monday 2 Monday

Tuesday 3 Tuesday

Wednesday 4 Wednesday

Thursday 5 Thursday

Friday 6 Friday

Saturday 7 Saturday

Break

The break statement terminates the execution of a while, repeat, or for loop, skipping to the next statement after the loop. A break ends the innermost enclosing loop.

Return and break statements can only be written as the last statement of a block. If it is necessary to return or break in the middle of a block, an explicit inner block can be used.

VARIABLE - NOTE The output you get from these examples may vary depending on the data format settings of the instrument.

Example: Break with while statement

local numTable = {5, 4, 3, 2, 1}

local k = table.getn(numTable)

local breakValue = 3

while k > 0 do

if numTable[k] == breakValue then

print("Going to break and k = ", k)

break

end

k = k - 1

end

if k == 0 then

print("Break value not found")

end

This example defines a break value (breakValue) so that the break statement is used to exit the while loop before the value of k reaches 0.

Output:

Going to break and k = 3

Example: Break with while statement enclosed by comment delimiters

local numTable = {5, 4, 3, 2, 1}

local k = table.getn(numTable)

-- local breakValue = 3

while k > 0 do

if numTable[k] == breakValue then

print("Going to break and k = ", k)

break

end

k = k - 1

end

if k == 0 then

print("Break value not found")

end

This example defines a break value (breakValue), but the break value line is preceded by comment delimiters so that the break value is not assigned and the code reaches the value 0 to exit the while loop.

Output:

Break value not found

Example: Break with infinite loop

a, b = 0, 1

while true do

print(a, b)

a, b = b, a + b

if a > 500 then

break

end

end

This example uses a break statement that causes the while loop to exit if the value of a becomes greater than 500.

Output:

0 1

1 1

1 2

2 3

3 5

5 8

8 13

13 21

21 34

34 55

55 89

89 144

144 233

233 377

377 610

Tables and arrays

Lua makes extensive use of the data type table, which is a flexible array-like data type. Table indices start with 1. Tables can be indexed not only with numbers, but with any value except nil. Tables can be heterogeneous, which means that they can contain values of all types except nil.

Tables are the sole data structuring mechanism in Lua. They may be used to represent ordinary arrays, symbol tables, sets, records, graphs, trees, and so on. To represent records, Lua uses the field name as an index. The language supports this representation by providing a.name as an easier way to express a["name"].

VARIABLE - NOTE The output you get from this example may vary depending on the data format settings of the instrument.

Example: Loop array

atable = {1, 2, 3, 4}

i = 1

while atable[i] do

print(atable[i])

i = i + 1

end

Defines a table with four numeric elements.

Loops through the array and prints each element.

The Boolean value of atable[index] evaluates to true if there is an element at that index. If there is no element at that index, nil is returned (nil is considered to be false).

Output:

1

2

3

4

Standard libraries

In addition to the standard programming constructs described in this document, Lua includes standard libraries that contain useful functions for string manipulation, mathematics, and related functions. Test Script Processor (TSPTM) scripting engine instruments also include instrument control extension libraries, which provide programming interfaces to the instrumentation that can be accessed by the TSP scripting engine. These libraries are automatically loaded when the TSP scripting engine starts and do not need to be managed by the programmer.

The following topics provide information on some of the basic Lua standard libraries. For additional information, see the Lua website. The TSP scripting engine uses Lua 5.0.2.

Base library functions

Base library functions

Function

Description

collectgarbage()

collectgarbage(limit)

Sets the garbage-collection threshold to the given limit (in kilobytes) and checks it against the byte counter. If the new threshold is smaller than the byte counter, Lua immediately runs the garbage collector. If there is no limit parameter, it defaults to zero (0), which forces a garbage‑collection cycle. See Lua memory management for more information.

gcinfo()

Returns the number of kilobytes of dynamic memory that the Test Script Processor (TSPTM) scripting engine is using and returns the present garbage collector threshold (also in kilobytes). See Lua memory management for more information.

tonumber(x)

tonumber(x, base)

Returns x converted to a number. If x is already a number, or a convertible string, the number is returned; otherwise, it returns nil.

An optional argument specifies the base to use when interpreting the numeral. The base may be any integer from 2 to 36, inclusive. In bases above 10, the letter A (in either upper or lower case) represents 10, B represents 11, and so forth, with Z representing 35. In base 10, the default, the number may have a decimal part and an optional exponent. In other bases, only unsigned integers are accepted.

tostring(x)

Receives an argument of any type and converts it to a string in a reasonable format.

type(v)

Returns the type of its only argument as a string. The possible results of this function are "nil" (a string, not the value nil), "number", "string", "boolean", "table", "function", "thread", and "userdata".

Lua memory management

Lua automatically manages memory, which means you do not have to allocate memory for new objects and free it when the objects are no longer needed. Lua occasionally runs a garbage collector to collect all objects that are no longer accessible from Lua. All objects in Lua are subject to automatic management, including tables, variables, functions, threads, and strings.

Lua uses two numbers to control its garbage-collection cycles. One number counts how many bytes of dynamic memory Lua is using; the other is a threshold. When the number of bytes crosses the threshold, Lua runs the garbage collector, which reclaims the memory of all inaccessible objects. The byte counter is adjusted, and the threshold is reset to twice the new value of the byte counter.

String library functions

This library provides generic functions for string manipulation, such as finding and extracting substrings. When indexing a string in Lua, the first character is at position 1 (not 0, as in ANSI C). Indices may be negative and are interpreted as indexing backward from the end of the string. Thus, the last character is at position –1.

String library functions

Function

Description

string.byte(s)

string.byte(s, i)

string.byte(s, i, j)

Returns the internal numeric codes of the characters s[i], s[i+1], ···, s[j]. The default value for i is 1; the default value for j is i.

string.char(···)

Receives zero or more integers separated by commas. Returns a string with length equal to the number of arguments, in which each character has the internal numeric code equal to its corresponding argument.

string.format(

formatstring, ...)

Returns a formatted version of its variable number of arguments following the description given in its first argument, which must be a string. The format string follows the same rules as the printf family of standard C functions. The only differences are that the modifiers *, l, L, n, p, and h are not supported and there is an extra option, q. The q option formats a string in a form suitable to be safely read back by the Lua interpreter; the string is written between double quotes, and all double quotes, newlines, embedded zeros, and backslashes in the string are correctly escaped when written.

For example, the call:

string.format('%q', 'a string with "quotes" and \n newline')

produces the string:

"a string with \"quotes\" and \
newline"

The options c, d, E, e, f, g, G, i, o, u, X, and x all expect a number as argument. q and s expect a string. This function does not accept string values containing embedded zeros, except as arguments to the q option.

string.len(s)

Receives a string and returns its length. The empty string "" has length 0. Embedded zeros are counted, so "a\000bc\000" has length 5.

string.lower(s)

Receives a string and returns a copy of this string with all uppercase letters changed to lowercase. All other characters are left unchanged.

string.rep(s, n)

Returns a string that is the concatenation of n copies of the string s.

string.sub(s, i)

string.sub(s, i, j)

Returns the substring of s that starts at i and continues until j; i and j can be negative. If j is absent, it is assumed to be equal to ‑1 (which is the same as the string length). In particular, the call string.sub(s, 1, j) returns a prefix of s with length j, and string.sub(s, ‑i) returns a suffix of s with length i.

string.upper(s)

Receives a string and returns a copy of this string with all lowercase letters changed to uppercase. All other characters are left unchanged.

Math library functions

This library is an interface to most of the functions of the ANSI C math library. All trigonometric functions work in radians. The functions math.deg() and math.rad() convert between radians and degrees.

Math library functions

Function

Description

math.abs(x)

Returns the absolute value of x.

math.acos(x)

Returns the arc cosine of x.

math.asin(x)

Returns the arc sine of x.

math.atan(x)

Returns the arc tangent of x.

math.atan2(y, x)

Returns the arc tangent of y/x but uses the signs of both parameters to find the quadrant of the result (it also correctly handles the case of x being zero).

math.ceil(x)

Returns the smallest integer larger than or equal to x.

math.cos(x)

Returns the cosine of x.

math.deg(x)

Returns the angle x (given in radians) in degrees.

math.exp(x)

Returns the value ex.

math.floor(x)

Returns the largest integer smaller than or equal to x.

math.frexp(x)

Returns m and e such that x = m2e, where e is an integer and the absolute value of m is in the range [0.5, 1] (or zero when x is zero).

math.ldexp(m, e)

Returns m2e (e should be an integer).

math.log(x)

Returns the natural logarithm of x.

math.log10(x)

Returns the base-10 logarithm of x.

math.max(x, ...)

Returns the maximum value among its arguments.

math.min(x, ...)

Returns the minimum value among its arguments.

math.pi

The value of p (3.141592654).

math.pow(x, y)

Returns xy (you can also use the expression x^y to compute this value).

math.rad(x)

Returns the angle x (given in degrees) in radians.

math.random()

math.random(m)

math.random(m, n)

This function is an interface to the simple pseudorandom generator function rand provided by ANSI C.

When called without arguments, returns a uniform pseudorandom real number in the range [0,1]. When called with an integer number m, math.random() returns a uniform pseudorandom integer in the range [1, m]. When called with two integer numbers m and n, math.random() returns a uniform pseudorandom integer in the range [m, n].

math.randomseed(x)

Sets x as the seed for the pseudorandom generator; equal seeds produce equal sequences of numbers.

math.sin(x)

Returns the sine of x.

math.sqrt(x)

Returns the square root of x. You can also use the expression x^0.5 to compute this value.

math.tan(x)

Returns the tangent of x.

Programming example: User script

The following script puts a message on the front‑panel display slowly, one character at a time. The intent of this example is to demonstrate:

  • The use of a for loop
  • Simple display remote commands
  • Simple Lua string manipulation

VARIABLE - NOTE When creating a script using the TSB Embedded, you do not need the shell commands loadscript and endscript, as shown in the examples below.

Example: User script

User script created in TSB Embedded

User script created in user's own program

 

loadscript

display.clear()

myMessage = "Hello World!"

for k = 1, string.len(myMessage) do

x = string.sub(myMessage, k, k)

display.settext(x)

print(x)

delay(1)

end

display.clear()

myMessage = "Hello World!"

for k = 1, string.len(myMessage) do

x = string.sub(myMessage, k, k)

display.settext(x)

print(x)

delay(1)

end

 

endscript

Password management

The 2600B has password capabilities that let you decide how to password protect the instrument. Password protection prevents unauthorized access to any remote interface and reserves the instrument exclusively for your use.

When password usage is enabled, you must supply a password to change the configuration or to control an instrument from a remote command interface.

Setting the password from a command or web interface

The attribute localnode.passwordmode enables passwords and sets the mode. The password mode identifies which interface to password protect.

Set this attribute to one of the values below to enable password checking:

  • localnode.PASSWORD_NONE or 0: Disable passwords everywhere
  • localnode.PASSWORD_WEB or 1: Use passwords on the web interface only
  • localnode.PASSWORD_LAN or 2: Use passwords on the web interface and all LAN interfaces

localnode.PASSWORD_ALL or 3: Use passwords on the web interface and all remote command interfaces VARIABLE - NOTE When a password is set for the web interface, you cannot make changes using the web interface options Virtual Front Panel, Flash Upgrade, or TSB Embedded.

The password lock feature on 2600B is similar to the lock feature on your computer.

VARIABLE - NOTE You must assign a password to use this feature. Passwords can be up to 255 characters.

To set the password using the web interface:

  1. From the web interface, select Set Password.
    The LXI - Keithley Instruments - 2600B - Administration page is displayed.
  2. In Current Password, type the existing password. The default is admin.
  3. In New Password, type the new password.
  4. Retype the new password in Confirm New Password.
  5. Select Submit.

The LXI Welcome page is displayed.

To enable the password from a command interface:

To lock the instrument when you are away from the testing area, send the following command:

password

The remote interface is locked. The 2600B does not respond to commands issued from the command interface until you unlock the interface. This reserves the instrument and protects the test script running on the instrument.

Unlocking the remote interface

If the remote interface is locked, you must enter the password before the 2600B responds to any command issued over a remote interface.

VARIABLE - NOTE The password for the example below is Keithley.

To unlock the remote interface, send the following command:

password Keithley

The 2600B is unlocked and communicates with any remote interface.

Resetting the password

You can reset the password from the front panel. Once you enable the password feature, the 2600B stores this password until the LAN configuration is reset or until you reset the password.

To reset the password:

  1. From the front panel, press the MENU key.
  2. Select RESET-PASSWORD.

VARIABLE - NOTE Resetting the LAN settings also resets the password feature. If you reset the LAN settings, you must re-enable the password feature.

Key-press codes

You can use key codes to remotely simulate pressing a front‑panel key or the navigation wheel. There are also key codes to simulate rotating the navigation wheel to the left or right (one click at a time).

Sending key codes

Use the display.sendkey() function to remotely simulate pressing a front-panel key or the navigation wheel. The following programming examples illustrate how to simulate pressing the MENU key in two different ways:

display.sendkey(display.KEY_MENU)

display.sendkey(68)

Capturing key-press codes

The 2600B maintains a history of the key code for the last pressed front‑panel key. When you turn on the instrument (or transition from local to remote operation), the key code is set to 0 (display.KEY_NONE).

When you press a front‑panel key, the key code value for that key can be captured and returned. There are two functions associated with the capture of key-press codes: display.getlastkey() and display.waitkey().

display.getlastkey()

The display.getlastkey() function immediately returns the key code for the last pressed key. The following programming example illustrates how to display the last key pressed:

key = display.getlastkey()

print(key)

The above code returns the key code value (see the following table). A value of 0 (display.KEY_NONE) indicates that the key code history had been cleared.

 

Key codes

Value

Key list

 

Value

Key list

0

display.KEY_NONE

 

82

display.KEY_ENTER

65

display.KEY_RANGEUP

 

85

display.KEY_RECALL

68

display.KEY_MENU

 

86

display.KEY_MEASA

69

display.KEY_MODEA

 

87

display.KEY_DIGITSA

70

display.KEY_RELA

 

92

display.KEY_TRIG

71

display.KEY_RUN

 

93

display.KEY_LIMITA

72

display.KEY_DISPLAY

 

94

display.KEY_SPEEDA

73

display.KEY_AUTO

 

95

display.KEY_LOAD

75

display.KEY_EXIT

 

97

display.WHEEL_ENTER

77

display.KEY_FILTERA

 

103

display.KEY_RIGHT

78

display.KEY_STORE

 

104

display.KEY_LEFT

79

display.KEY_SRCA

 

107

display.WHEEL_LEFT

80

display.KEY_CONFIG

 

114

display.WHEEL_RIGHT

81

display.KEY_RANGEDOWN

 

 

 

VARIABLE - NOTE You cannot track the OUTPUT ON/OFF control for a source‑measure unit (SMU) using this function.

display.waitkey()

The display.waitkey() function captures the key code value for the next key press:

key = display.waitkey()

After sending the display.waitkey() function, the script pauses and waits for the operator to press a front‑panel key. For example, if the MENU key is pressed, the function returns the value 68, which is the key code for that key. The key code values are the same as listed in display.getlastkey().

The following programming example illustrates how to prompt the user to press the EXIT (LOCAL) key to abort the script, or any other key to continue it:

display.clear()

display.setcursor(1, 1)

display.settext("Press EXIT to Abort")

display.setcursor(2, 1)

display.settext("or any key to continue")

key = display.waitkey()

display.clear()

display.setcursor(1, 1)

if key == 75 then

display.settext("Test Aborted")

exit()

else

display.settext("Test Continuing")

end

The above code captures the key that is pressed by the operator. The key code value for the EXIT (LOCAL) key is 75. If the EXIT (LOCAL) key is pressed, the script aborts. If any other key is pressed, the script continues.

Remote communications interfaces

You can choose one of several communications interfaces to send commands to and receive responses from the 2600B.

You can control the 2600B from only one communications interface at a time. The first interface on which the instrument receives a message takes control of the instrument. If another interface sends a message, that interface can take control of the instrument. You may need to enter a password to change the interface, depending on the setting of interface access.

The 2600B automatically detects the type of communications interface (LAN, USB, GPIB, or RS‑232) when you connect to the respective port on the rear panel of the instrument. In most cases, you do not need to configure anything on the instrument. In addition, you do not need to reboot if you change the type of interface that is connected.

Supported remote interfaces

The 2600B supports the following remote interfaces:

  • USB: Communicate with the instrument over a USB connection.
  • LAN: Local area network (LAN) communications provide the flexibility to build scalable and functional test or data acquisition systems with a large degree of flexibility.
  • GPIB: General purpose interface bus is an IEEE-488 instrumentation data bus.
  • RS-232: Communicate with the instrument over the serial port or with another instrument using its serial port.

VARIABLE - NOTE The 2600B can be controlled from only one communications interface at a time. The first interface from which it receives a message takes control of the instrument. It ignores the other interfaces until the instrument is returned to local operation.

For more information about the remote interfaces, see:

Remote interface connections

The rear‑panel locations of the remote interface connections are shown in the following figures.

2602B and 2612B IEEE-488, LAN, USB, and RS-232 connections (2601B, 2604B, 2611B, and 2614B similar)

1 IEEE-488 connection

2 LAN connection

3 USB connection

4 RS-232 connection

2636B IEEE-488, LAN, USB, and RS-232 connections (2634B and 2635B similar)

1 IEEE-488 connection

2 LAN connection

3 USB connection

4 RS-232 connection

Output queue

Response messages, such as those generated from print commands, are placed in the output queue. All remote command interfaces share the same output queue.

The output queue sets the message available (MAV) bit in the status model.

The data in the output queue is cleared by the *CLS command.

USB communications

To use the rear‑panel USB port, you need a driver that communicates using the USBTMC protocol, such as NI-VISA, on the host computer.

When installed, the USBTMC protocol allows the MicrosoftTM WindowsTM operating system to recognize the instrument.

When you connect a USB device that implements the USBTMC or USBTMC-USB488 protocol to the computer, the driver automatically detects the device. Note that the driver does not recognize other USB devices, such as printers, scanners, and storage devices.

The USB can be used for single ASCII‑based commands.

In this section, "USB instruments" refers to devices that implement the USBTMC or USBTMC‑USB488 protocol.

See Software components for applications and instrument drivers for more information on drivers.

Communicate with the instrument

When using Virtual Instrument Software Architecture (VISA) to communicate with the USB device, you need to use a VISA communications driver. VISA requires a resource string in the following format to connect to the correct USB instrument:

USB[board]::manufacturer ID::model code::serial number[::USB interface number][::INSTR]

This requires that you determine the parameters. You can gather this information by running a utility that automatically detects all instruments connected to the computer. If you installed the Keithley I/O Layer, the Keithley Configuration Panel is available from the MicrosoftTM WindowsTM Start menu in the Keithley Instruments menu.

To use the Keithley Configuration Panel to determine the VISA resource string:

  1. Start the Keithley Configuration Panel. The Keithley Configuration Wizard opens to the Select Operation dialog box.
  2. Complete the wizard.
  3. Save the configuration. From the Configuration Utility, select File > Save.
  4. Open the Keithley Communicator.
  5. Select File > Open Instrument to open the instrument you named in the wizard.

    Keithley Communicator Open an Instrument

  6. Select OK.
  7. Send a command to the instrument and see if it responds.

VARIABLE - NOTE If you have a full version of NI‑VISA on your system, you can run NI-MAX or the VISA Interactive Utility. See their documentation for information.

If you have the Keysight IO Libraries on your system, you can run Keysight Connection Expert to review your USB instruments. See their documentation for information.

Connecting multiple USB instruments to the computer

The most convenient way to connect USB instrumentation to the computer is to plug a USB cable directly from the instrument to the computer. If you have more than one USB instrument or have other USB devices, such as printers, keyboards, and mice, you might not have enough USB connectors on the computer.

To gain more ports, you can use a USB hub or add more USB controller cards if you have available PCI or PCI Express slots.

LAN communications

This section describes how to connect to a LAN.

The 2600B is an LXI version 1.4 Core 2011 compliant instrument that supports TCP/IP and complies with IEEE Std 802.3 (ethernet). The LAN port on the rear panel of the 2600B supports full connectivity on a 10 Mbps or 100 Mbps network.

LAN cable connection

The 2601B, 2602B, 2611B, 2612B, 2635B, and 2636B include two LAN crossover cables. Use one cable for the TSP‑LinkTM network and use the other cable for the LAN.

One cable is provided for the 2604B, 2614B, and 2634B for connection to the LAN. The TSP-Link is not available on these models.

Use the following figure as a guide when making LAN connections.

2600B LAN connection

1 2600B ethernet port (LAN)

2 Straight-through LAN cable or crossover LAN cable

3 Ethernet port (on the host computer)

Use the LXI Discovery Tool

To find the IP address of the 2600B from a computer, use the LXI Discovery Tool, a utility that is available from the Resources tab of the website for the LXI Consortium.

LAN status LEDs

The figure below illustrates the two status light-emitting diodes (LEDs) that are on the LAN port of the instrument. The table below the figure provides explanations of the LED states. The LED labeled 1 indicates the LAN port is connected to a 100 Mbps network. The LED labeled 2 indicates the LAN port is connected to a 10 Mbps network.

LAN status

 

When an LED is:

The network:

 

Off

is not connected

 

On

is connected

 

Blinking

is sending or receiving data

Connecting to the LAN

Each device on the LAN (corporate or private) requires a unique IP address. Contact your corporate information technology (IT) department for details about obtaining an IP address before you deploy the 2600B on a corporate or private network.

VARIABLE - NOTE Contact your corporate IT department for permission before you connect the 2600B to a corporate network.

Setting the LAN configuration method

There are two methods used to configure the LAN.

AUTO: Use the AUTO setting to allow the DHCP server to automatically set the LAN settings.

You do not need to set the LAN options manually. The DHCP server automatically configures the IP address, subnet mask, and the default gateway. To use this option, a DHCP server must be available on the LAN.

MANUAL: Use the MANUAL setting to manually configure the communications parameters.

The MANUAL setting requires you to configure the following:

  • IP address
  • Gateway
  • Subnet mask

To select a LAN configuration method:

  1. From the front panel, press the MENU key, and then select LAN > CONFIG > METHOD.
  2. Select either AUTO or MANUAL.
  3. Press the ENTER key.
  4. Press the EXIT (LOCAL) key until you return to the LAN CONFIG menu.
  5. Select APPLY_SETTINGS > YES, and then press the ENTER key.
Setting the IP address

VARIABLE - NOTE Contact your corporate information technology (IT) department to secure a valid IP address for the instrument when placing the instrument on a corporate network.

To set the IP address when LAN configuration method is set to MANUAL:

  1. From the front panel, press the MENU key, and then select LAN > CONFIG > IP-ADDRESS.
  2. Turn the navigation wheel to select and enter a valid IP address for the instrument.
  3. Press the ENTER key to confirm the changes.
  4. Press the EXIT (LOCAL) key twice to return to the LAN CONFIG menu.
  5. Select APPLY_SETTINGS > YES, and then press the ENTER key.
Setting the gateway

VARIABLE - NOTE Contact your corporate information technology (IT) department to secure a valid gateway for the instrument when placing the instrument on a corporate network.

To set the gateway when LAN configuration method is set to MANUAL:

  1. From the front panel, press the MENU key, and then select LAN > CONFIG > GATEWAY.
  2. Turn the navigation wheel to select and enter a valid gateway address for the instrument.
  3. Press the ENTER key to confirm the changes.
  4. Press the EXIT (LOCAL) key twice to return to the LAN CONFIG menu.
  5. Select APPLY_SETTINGS > YES, and then press the ENTER key.
Setting the subnet mask

VARIABLE - NOTE Contact your corporate information technology (IT) department to secure a valid subnet mask for the instrument when placing the instrument on a corporate network.

To set the subnet mask when LAN configuration method is set to MANUAL:

  1. From the front panel, press the MENU key, and then select LAN > CONFIG > SUBNETMASK.
  2. Turn the navigation wheel to select and enter a valid subnet mask for the instrument.
  3. Press the ENTER key to confirm the changes.
  4. Press the EXIT (LOCAL) key twice to return to the LAN CONFIG menu.
  5. Select APPLY_SETTINGS > YES, and then press the ENTER key.
LAN speeds

Another characteristic of the LAN is speed. The 2600B negotiates with the host computer and other LXI‑compliant devices on the LAN to transmit data at the highest speed possible. LAN speeds must be configured to match the speed of the other instruments on the network.

To set the LAN speed:

  1. From the front panel, press the MENU key and select LAN > CONFIG > SPEED.
  2. Turn the navigation wheel to select either 10 Mbps or 100 Mbps.
  3. Press the ENTER key.
  4. Press the EXIT (LOCAL) key once to return to the previous menu.
  5. Select APPLY_SETTINGS > YES, and then press the ENTER key.
Configuring the domain name system (DNS)

The Domain Name System (DNS) lets you type a domain name in the address bar to connect to the instrument. If you use DNS, you can use a name instead of an IP address.

Example:

Model2600B.XYZcompany.com

VARIABLE - NOTE Contact your corporate information technology (IT) department for information about DNS. If a DNS server is not part of the LAN infrastructure, do not use this setting.

To enable or disable DNS host name verification:

  1. From the front panel, press the MENU key, and then select LAN > CONFIG > DNS > VERIFY.
  2. Turn the navigation wheel to select either ENABLE or DISABLE. When enabled, the instrument performs a DNS lookup to verify the DNS host name matches the value specified in the lan.config.dns.hostname attribute.
  3. Press the ENTER key.
  4. Press the EXIT (LOCAL) key twice to return to the LAN CONFIG menu.

To enable or disable DNS registration:

  1. From the front panel, press the MENU key and select LAN > CONFIG > DNS > DYNAMIC.
  2. Turn the navigation wheel to select either ENABLE or DISABLE. DNS registration works with the DHCP to register the host name specified in the lan.config.dns.hostname attribute with the DNS server.
  3. Press the ENTER key.
  4. Press the EXIT (LOCAL) key twice to return to the LAN CONFIG menu.
  5. Select APPLY_SETTINGS > YES, and then press the ENTER key.

To set the DNS server IP addresses:

  1. From the front panel, press the MENU key and select LAN > CONFIG > DNS.
  2. Turn the navigation wheel to select either DNS-ADDRESS1 or DNS-ADDRESS2.
  3. Press the ENTER key.
  4. Turn the navigation wheel to select and enter a valid IP address for the DNS server.
  5. Press the ENTER key.
  6. Press the EXIT (LOCAL) key twice to return to the LAN CONFIG menu.
  7. Select APPLY_SETTINGS > YES, and then press the ENTER key.
Confirming the active speed and duplex negotiation

The 2600B automatically detects the speed and duplex negotiation active on the LAN. Once the speed and duplex negotiation is detected, the instrument automatically adjusts its own settings to match the LAN settings.

To confirm the active LAN speed and duplex mode:

  1. From the front panel, press the MENU key.
  2. Select LAN > STATUS.
  3. Use the navigation wheel to select one of the following:
    • SPEED
    • DUPLEX
  4. Press the ENTER key to view the active setting.
  5. Press the EXIT (LOCAL) key once to return to the STATUS menu.

Duplex mode

The duplex mode is based on the LAN configuration. There are two settings:

  • Half-duplex: Allows communications in both directions, but only one direction is active at a time (not simultaneously).
  • Full: Permits communications in both directions simultaneously.

To set the duplex mode:

  1. From the front panel, press MENU key and select LAN > CONFIG > DUPLEX.
  2. Turn the navigation wheel to select either HALF or FULL.
  3. Press the ENTER key.
  4. Press the EXIT (LOCAL) key once to return to the LAN CONFIG menu.
  5. Select APPLY_SETTINGS > YES, and then press the ENTER key.

Establishing a point-to-point connection

To enable access to the instrument web interface and other web applications from a computer, use a one-to-one LAN connection and set up a static IP address between the host computer and the instrument.

The following instructions describe how to configure the IP address of the instrument. The IP address of the instrument is based on the present IP address of the host computer. Each device on the LAN (corporate or private) requires a unique IP address.

VARIABLE - CAUTION Contact your corporate information technology (IT) department for permission before you connect the 2600B to a corporate network.

If you have problems, see LAN troubleshooting suggestions (LAN troubleshooting suggestions, LAN troubleshooting suggestions).

VARIABLE - NOTE Record all network configurations before modifying any existing network configuration information on the network interface card. Once the network configuration settings are updated, the previous information is lost. This may cause a problem reconnecting the host computer to a corporate network, particularly if DHCP Enabled = NO (disabled).

Be sure to return all settings to their original configuration before reconnecting the host computer to a corporate network. Failure to do this could result in loss of data. Contact your system administrator for more information.

Step 1: Identify and record the existing IP configuration

To identify the existing IP configuration:

  1. Open the command prompt window.
  2. At the command prompt, type ipconfig/all and press the Enter key. A list of existing IP configuration information for your computer is displayed.

    Computer IP configuration using the command prompt

VARIABLE - NOTE If the information for the ethernet adapter displays Media Disconnected, close the command prompt and go to Step 2: Disable DHCP to use the existing computer IP address.

  1. When the information is displayed, record the following information for the network card:
    • DHCP mode: _______________________________
    • IP address: ________________________________
    • Subnet mask: ______________________________
    • Default gateway: ____________________________
    • DNS servers: _______________________________

VARIABLE - CAUTION The ipconfig/all command displays the configuration of every network card. Make sure that you record the information for the proper network card.

  1. If:
  2. To exit the IP configuration screen, type exit at the command prompt and press Enter.
Step 2: Disable DHCP to use the existing computer IP address

VARIABLE - NOTE Do not change the IP address at any time without talking to your system administrator. Entering an incorrect IP address can prevent your workstation from connecting to your corporate network.

See the appropriate instructions below for your operating system. These instructions show the default options. Be aware that there may be differences in these steps if your Microsoft Windows options are customized or if you do not have administrator status.

To disable DHCP:

  1. From the Start menu, select View Network Connections.
  2. Right-click Ethernet and select Properties.
  3. Select Internet Protocol Version 6.

    Ethernet networking properties

  4. Select Properties.
  5. Select Use the following IPv6 address. The option for "Use the following DNS server addresses" is automatically selected.
  6. Set the IP address. If the IP address and subnet mask fields:
    • Contain values: Record the IP address, subnet mask, default gateway, and DNS servers to use in Step 3: Configure the LAN settings of the instrument.
    • Are blank: In the IP address field, enter 192.168.1.100. In the subnet mask field, enter 255.255.255.0. These are used to configure the LAN settings of the instrument.
  7. Select OK to close the Internet Protocol (TCP/IP) Properties dialog box.
  8. Select Close to close the Ethernet Properties dialog box.
  9. Close the Network Connections window.
Step 3: Configure the LAN settings of the instrument

VARIABLE - NOTE These steps assume that you are making all the settings in the order shown here. If you only change one or a few settings, be aware that you need to apply the settings before they are in effect. To apply the settings, from the LAN CONFIG menu, select APPLY_SETTINGS > YES, and then press the ENTER key.

To configure the 2600B using the front panel:

  1. Press the MENU key to display the MAIN MENU.
  2. Use the navigation wheel to select LAN. The LAN CONFIG menu is displayed.
  3. Change the IP address assignment method:

    a. Select CONFIG > METHOD > MANUAL, and then press the ENTER key.

    b. Press the EXIT (LOCAL) key once to return to the LAN CONFIG menu.

  4. Enter the IP address using the LAN CONFIG menu:

    a. Select CONFIG > IP-ADDRESS.

    b. Refer to the recorded computer's IP address (Step 1: Identify and record the existing IP configuration). A portion of the computer's IP address is used as a base for the instrument's unique ID. Only the last three numbers (after the last decimal point) of the IP address differ between the computer and the instrument. If the subnet mask is 255.255.255.0, the last three digits can be any value from 1 to 255.

    For example, the Internet Protocol (TCP/IP) Properties dialog box shows that the computer's IP address is 192.168.1.100 (see the figure titled "Internet protocol (TCP/IP) Properties dialog box" in Step 2: Disable DHCP to use the existing computer IP address). A unique IP address for the instrument might be 192.168.001.101.

VARIABLE - NOTE The IP address of the instrument can have leading zeros, but the IP address of the computer cannot.

c. Use the navigation wheel to select and enter an appropriate IP address for the instrument. Be sure to record the IP address to use in Step 4: Access the web interface of the instrument.

d. Press ENTER key or navigation wheel to confirm the changes.

e. Press the EXIT (LOCAL) key twice to return to the LAN CONFIG menu.

  1. Change the subnet mask from the LAN CONFIG menu:

    a. Select CONFIG > SUBNETMASK, and then press the ENTER key. The SUBNETMASK menu item is to the right of GATEWAY. Use the navigation wheel to scroll through the options.

    b. Modify the SUBNETMASK value to match the computer settings recorded earlier (or 255.255.255.000 if DHCP Enabled = YES).

    c. Press the ENTER key or the navigation wheel when you are finished changing all the characters.

  2. d. Press the EXIT (LOCAL) key twice to return to the LAN CONFIG menu.
  3. From the LAN CONFIG menu, select APPLY_SETTINGS > YES, and then press the ENTER key.
Step 4: Access the web interface of the instrument
  1. Open a web browser on the host computer.
  2. Enter the IP address of the instrument in the web browser address box. For example, if the instrument IP address is 192.168.1.101, enter 192.168.1.101 in the browser address box.
  3. Press Enter on the computer keyboard to open the web interface of the instrument.

NOTE If the web interface does not open in the browser, see LAN troubleshooting suggestions (LAN troubleshooting suggestions, LAN troubleshooting suggestions).

Viewing the network settings

To view the active network settings:

  1. From the front panel, press the MENU key, and then select LAN > STATUS.
  2. Use the navigation wheel to select one of the following network settings:
    • IP-ADDRESS
    • GATEWAY
    • SUBNET-MASK
    • METHOD
    • DNS
    • MAC-ADDRESS
  3. Press the ENTER key to view the active setting.
  4. Press the EXIT (LOCAL) key once to return to the STATUS menu.

Viewing LAN status messages

To view the LAN status messages:

  1. From the front panel, press the MENU key and select LAN > STATUS > CONFIG/FAULT.
  2. Press the ENTER key.

    LAN CONFIG/FAULT

There are two types of LAN status messages:

  • LAN fault messages: Communicate issues related to physical connectivity.
  • LAN configuration messages: Communicate issues or events related to configuration.

The following table displays possible fault and configuration messages.

LAN CONFIG/FAULT messages

LAN message type

Possible messages

LAN fault

Could not acquire IP address

Duplicate IP address detected

DHCP lease lost

Lan Cable Disconnected

LAN configuration

 

Starting DHCP Configuration

DHCP Server Not Found

DHCP configuration started on xxx.xxx.xxx.xxx

Searching for DNS server(s)

Starting DLLA Configuration

DLLA Failed

DLLA configuration started on xxx.xxx.xxx.xxx

Starting Manual Configuration

Manual configuration started on xxx.xxx.xxx.xxx

Closed

Monitoring the LAN

The lan.autoconnect command configures the instrument to monitor the LAN for lost connections. All ethernet connections are disconnected if the LAN link is disconnected for longer than the time-out value specified in the lan.linktimeout attribute.

For detail on these commands, refer to the following command descriptions:

Selecting a LAN interface protocol

You can use a remote interface protocol to connect to the 2600B. The 2600B provides telnet, VXI-11, and raw socket LAN interfaces, with associated LAN protocols (each interface uses a different protocol). Select the interface based on the protocol needed.

You can also use a dead socket termination interface (DST) to troubleshoot connection problems.

VARIABLE - NOTE You can only use one remote interface at a time. Although multiple ethernet connections to the instrument can be opened, only one can be used to control the instrument at a time.

VXI-11 connection

This remote interface is similar to GPIB and supports message boundaries, serial poll, and service requests (SRQs). A VXI-11 driver or NI‑VISA software is required. Test Script Builder (TSB) uses NI‑VISA and can be used with the VXI-11 interface. You can expect a slower connection with this protocol.

Raw socket connection

All Keithley instruments that have LAN connections support raw socket communications. This means that you can connect to the TCP/IP port on the instrument and send and receive commands. A programmer can easily communicate with the instrument using the Winsock API on computers with the MicrosoftTM WindowsTM operating system or using the Berkeley Sockets API on LinuxTM or AppleTM computers.

Raw socket is a basic ethernet connection that communicates in a manner similar to RS-232 without explicit message boundaries. The instrument always terminates messages with a line feed, but because binary data may include bytes that resemble line‑feed characters, it may be difficult to distinguish between data and line‑feed characters.

Use raw socket as an alternative to VXI-11. Raw socket offers a faster connection than VXI-11. However, raw socket does not support explicit message boundaries, serial poll, and service requests.

Dead socket connection

The dead socket termination (DST) port is used to terminate all existing ethernet connections. A dead socket is a socket that is held open by the instrument because it has not been properly closed. This most often happens when the host computer is turned off or restarted without first closing the socket. This port cannot be used for command and control functions.

Use the dead socket termination port to manually disconnect a dead session on any open socket. All existing ethernet connections are terminated and closed when the connection to the dead socket termination port is closed.

Confirming port numbers

To view the port number assigned to each remote interface protocol:

  1. From the front panel, press the MENU key, and then select LAN > STATUS > PORT.
  2. Use the navigation wheel to select one of the following:
    • RAW-SOCKET
    • TELNET
    • VXI-11
    • DST
  3. Press the ENTER key to view the port number.
  4. Press the EXIT (LOCAL) key once to return to the PORT menu.

The following table displays the remote interface protocols supported by the 2600B and their assigned port numbers.

Port number

Command interface

Port number

Raw socket

5025

Telnet

23

VXI-11

1024

DST (dead socket termination)

5030

Telnet connection

The telnet protocol is similar to raw socket and can be used when you need to interact directly with the instrument. Telnet is often used for debugging and troubleshooting. You need a separate telnet program to use this protocol.

The 2600B supports the telnet protocol, which you can use over a TCP/IP connection to send commands to the instrument. You can use a telnet connection to interact with scripts or send real‑time commands.

Configuring a telnet connection

This procedure uses PuTTY, which is open source, cross-platform, and usable under the MIT license. Consult the PuTTY help or user manual for other usage concerns not covered in this document.

To connect with the 2600B using PuTTY on a Windows system:

  1. On the host computer, open PuTTY. The PuTTY Configuration dialog opens.

    PuTTY configuration description dialog box

  2. In Host Name (or IP address), enter the instrument IP address, such as 192.168.1.101.
  3. In Port, enter 23.
  4. For Connection Type, select Telnet.

    Telnet connection settings example

  5. Select Open to start the telnet session.

Use PuTTY to interact directly with the instrument.

Communicating with the instrument using PuTTY

Reset LAN settings

To reset the LAN settings to the factory defaults from the front panel, select MENU > LAN > RESET.

LAN troubleshooting suggestions

If you are unable to connect to the web interface of the instrument, check the following items:

  • The network cable is in the LAN port on the rear panel of the instrument, not one of the TSP‑LinkTM ports.
  • The network cable is in the correct port on the computer. The LAN port of a laptop may be disabled when the laptop is in a docking station.
  • The setup procedure used the configuration information for the correct ethernet card.
  • The network card of the computer is enabled.
  • The IP address of the instrument is compatible with the IP address on the computer.
  • The subnet mask address of the instrument is the same as the subnet mask address of the computer.

You can also try restarting the computer and the instrument.

To restart the instrument:

  1. Turn the power to the instrument off, and then on.
  2. Wait at least 60 seconds for the network configuration to be completed.

GPIB operation

The following topics contain information about GPIB standards, bus connections, and primary address selection.

GPIB standards

The GPIB is the IEEE‑488 instrumentation data bus, which uses hardware and programming standards originally adopted by the Institute of Electrical and Electronic Engineers (IEEE) in 1975. The instrument is IEEE Std 488.1 compliant and supports IEEE Std 488.2 common commands and status model topology.

Connect the GPIB cable

To connect an instrument to the GPIB bus, use a cable equipped with standard IEEE-488 connectors, as shown in the following figure.

GPIB connector

To allow many parallel connections to one instrument, stack the connectors. Each connector has two screws on it to ensure that connections remain secure. The following figure shows a typical connection diagram for a test system with multiple instruments.

VARIABLE - CAUTION To avoid possible mechanical damage, stack no more than three connectors on any one instrument. To minimize interference caused by electromagnetic radiation, use only shielded IEEE-488 cables. Contact Keithley for shielded cables.

To connect the instrument to the IEEE-488 bus, line up the cable connector with the connector on the rear panel. Install and tighten the screws securely, making sure not to overtighten them. The following figure shows the location of the connector.

IEEE-488 connections

IEEE-488 connector location

Connect any additional connectors from other instruments as required for your application. Make sure the other end of the cable is properly connected to the controller. You can have up to 15 devices connected to a GPIB interface, including the controller. The maximum cable length is the lesser of either:

  • The number of devices multiplied by 2 m (6.5 ft)
  • 20 m (65.6 ft)

You may see erratic bus operation if you ignore these limits.

Primary address

The 2600B ships from the factory with a GPIB primary address of 26. If the GPIB interface is enabled, it momentarily displays the primary address on power-up. You can set the address to a value from 0 to 30, but do not assign the same address to another device or to a controller that is on the same GPIB bus (controller addresses are usually 0 or 21).

To set or check the primary address from the front panel:

  1. Press the MENU key, select GPIB, and then press the ENTER key or the navigation wheel.
  2. Select ADDRESS, then press the ENTER key or the navigation wheel.
  3. Use the navigation wheel to set the primary address to the appropriate value, then press the ENTER key or the navigation wheel.
  4. Press the EXIT (LOCAL) key twice to return to the normal display.

To set the primary address remotely:

gpib.address = address

To set the primary address remotely to 20:

gpib.address = 20

Note that changing the GPIB address takes effect when the command is processed. Any response messages generated after processing this command are sent with the new settings. If command messages are being queued (sent before this command has executed), the new settings may take effect in the middle of a subsequent command message, so be careful when setting this attribute from the GPIB interface.

GPIB terminator

When receiving data over the GPIB, the instrument terminates messages on any line feed character or any data byte with EOI asserted (line feed with EOI asserted is also valid). When sending data, it appends a line feed character to all outgoing messages. The EOI line is asserted with the terminating line feed character.

Front-panel GPIB operation

This section describes aspects of the front panel that are part of GPIB operation, including messages, status indicators, and the LOCAL key.

Error and status messages

The front-panel display may show error and status messages. The instrument can be programmed to generate a service request (SRQ), and command queries can be performed to check for specific error conditions.

Communications status indicators

The remote (REM), talk (TALK), listen (LSTN), and service request (SRQ) indicators show the communications bus status. Each of these indicators is described in the following table.

Status indicator

Applies to

REM

GPIB, VXI-11, USB, RS-232

TALK

GPIB only

LSTN

GPIB only

SRQ

GPIB, VXI-11, USB

REM

This indicator is illuminated when the instrument is in the remote-control state. When the instrument is in the remote‑control state, all front‑panel keys, except for the EXIT (LOCAL) key and OUTPUT ON/OFF control, are locked out. When REM is off, the instrument is in the local‑control state and front‑panel operation is restored.

TALK

This indicator is on when the instrument is in the talker active state. Place the instrument in the talk state by addressing it to talk with the correct talk command. TALK is off when the instrument is in the talker idle state. Place the instrument in the talker idle state by sending a UNT (untalk) command, addressing it to listen, or by sending the IFC (interface clear) command.

LSTN

This indicator is on when the instrument is in the listener active state, which is activated by addressing the instrument to listen with the correct listen command. LSTN is off when the instrument is in the listener idle state. Place the instrument in the listener idle state by sending UNL (unlisten), addressing it to talk, or by sending the IFC (interface clear) command over the bus.

SRQ

You can program the instrument to generate a service request (SRQ) when one or more errors or conditions occur. When this indicator is on, a service request was generated. This indicator stays on until all conditions that caused the SRQ are cleared.

Note that while the SRQ indicator turns on when a service request is generated, it reflects the state of the master summary status (MSS) bit and not the request for service (RQS) bit. Therefore, performing a serial poll does not turn off the indicator. To turn off the indicator, you must use *CLS or status.reset() to clear all the conditions that caused the MSS bit to be set.

VARIABLE - NOTE The SRQ applies to all available communications buses. However, actual service requests only apply to GPIB, USB, and VXI-11.

For additional information on using the SRQ, refer to Status byte and service request (SRQ).

LOCAL key

The EXIT (LOCAL) key cancels the remote state and restores local operation of the instrument. Pressing the EXIT (LOCAL) key turns off the REM indicator and returns the display to normal if a user-defined message was displayed. Pressing the EXIT (LOCAL) key or the OUTPUT ON/OFF control also aborts any commands or scripts that are being processed.

If the LLO (local lockout setting) command is in effect, the EXIT (LOCAL) key is inoperative. For safety reasons, you can use the OUTPUT ON/OFF control to turn the output off while in LLO.

RS-232 interface operation

The following topics contain information about configuring RS-232 communications parameters, sending or receiving command messages, and requesting or retrieving data. To control the 2600B, connect a controller or personal computer to the 2600B RS-232 interface. Alternatively, you can use the 2600B to control another device over RS-232.

Setting RS-232 interface parameters

To set interface parameters from the front panel:

  1. Press the MENU key, select RS232, and then press the ENTER key or the navigation wheel.
  2. Select and enter the following interface parameters:
  3. Press the EXIT (LOCAL) key twice to return to the normal display.
Remote RS-232 parameters

Commands to set RS-232 parameters are listed in the following table.

RS-232 interface commands

Command

Description

serial.baud = baud

Set baud rate (300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200)

serial.databits = bits

Set number of bits (7 or 8)

serial.flowcontrol = flow

Set flow control:

serial.FLOW_NONE (no flow control)

serial.FLOW_HARDWARE (hardware flow control)

serial.parity = parity

Set parity:

serial.PARITY_NONE (no parity)

serial.PARITY_EVEN (even parity)

serial.PARITY_ODD (odd parity)

Changes to a serial port setting take effect when the command is processed. Any response messages generated after the commands are processed are sent with the new settings. If command messages are being queued (sent before the commands have executed), the new settings may take effect in the middle of a subsequent command message, so be careful when setting these attributes from the RS‑232 interface.

RS-232 programming example

The programming example below illustrates how to set the baud rate to 9600 with no flow control:

serial.baud = 9600

serial.flowcontrol = serial.FLOW_NONE

Sending and receiving data

The RS-232 interface transfers data using 7 or 8 data bits; 1 stop bit; and no, even, or odd parity. Make sure the device you connect to the 2600B also uses the same settings.

RS-232 terminator

When receiving data over the RS-232 interface, the command interface terminates on line feeds. A line feed is appended to all output messages when the RS-232 interface is used as a command interface.

Sending data using the serial.write() function does not append a terminator. Be sure to append the appropriate terminator to the message before sending it.

Baud rate

The baud rate is the rate at which the 2600B and the programming terminal communicate. Select one of the following available rates:

  • 115200
  • 9600
  • 600
  • 57600
  • 4800
  • 300
  • 38400
  • 2400

 

  • 19200
  • 1200

 

The factory-selected baud rate is 9600.

Both the 2600B and the programming terminal must be configured for the same baud rate. Make sure the device connected to the 2600B RS-232 port can support the selected baud rate.

Data bits and parity

The RS-232 interface can be configured to send/receive data that is 7 or 8 bits long using even, odd, or no parity.

Flow control and signal handshaking

Signal handshaking between the controller and the instrument allows the two devices to communicate to each other to determine if they are ready to receive data.

The RS-232 interface provides two control lines (request to send and clear to send) for this purpose. The instrument asserts the RTS signal when it is admissible for the computer to transmit to the instrument. It sends information to the computer when the CTS signal is asserted by the computer.

RS-232 connections

Connect the RS-232 serial port of the 2600B to the serial port of a computer using a straight-through RS-232 cable terminated with DB-9 connectors. Do not use a null modem cable. The serial port uses the transmit (TXD), receive (RXD), CTS and RTS (if flow control is enabled), and signal ground (GND) lines of the RS-232 standard. The connector location is shown in Remote communications interfaces.

If your computer uses a DB-25 connector for the RS-232 interface, you need a standard cable or adapter with a DB-25 connector on one end and a DB-9 connector on the other.

RS-232 interface connector

Pinouts for the RS-232 connector

Pin

Description

1

No connection

2

TXD, transmit data

3

RXD, receive data

4

No connection

5

GND, signal ground

6

No connection

7

RTS, ready to send

8

CTS, clear to send

9

No connection

The following table provides pinout identification for the 9-pin (DB-9) or 25-pin (DB-25) serial port connector on the computer.

Computer serial port pinout

Signal*

DB-9 pin number

DB-25 pin number

DCD, data carrier detect

1

8

RXD, receive data

2

3

TXD, transmit data

3

2

DTR, data terminal ready

4

20

GND, signal ground

5

7

DSR, data set ready

6

6

RTS, request to send

7

4

CTS, clear to send

8

5

RI, ring indicator

9

22

* The 2600B does not use all RS-232 signals. See Flow control and signal handshaking.

Software components for applications and instrument drivers

The majority of software applications and all instrument drivers from Keithley depend on the following software components:

  • NI‑VISA
  • VISA shared components
  • IVI shared components
  • NI CVI runtime engine
  • NI IVI compliance package
  • Keithley SCPI‑based instrument driver

These software components are available for download from the Product Support and Downloads web page.

Instrument driver types

There are several different styles of instrument drivers. Keithley provides the following instrument drivers for the 2600B:

  • A native LabVIEW driver
  • An IVI-C driver
  • An IVI-COM driver

You need to pick the style that best suits the application development environment that you are using. For example, if you are using LabVIEW, pick a native LabVIEW driver. If a native LabVIEW driver is not available, you can use an IVI-C driver because LabVIEW has the option of creating a wrapper for the IVI-C driver.

LabVIEW supports IVI-COM drivers, but they are not preferred. However, if they are the only driver types available for the instrument, they can be used.

If LabWindows/CVI or C/C++ is your programming language, an IVI-C driver is the best option. For MicrosoftTM Visual BasicTM 6.0 and any .NET language (C#, VB.NET, and so on), an IVI-COM driver is the best option.

Sometimes instrument vendors do not provide all three driver types. Most languages can accommodate other driver types, but this is not optimal.

The following sections describe the different driver types in more detail.

VXIPnP drivers

VXIplug&play (VXIPnP) style drivers are Win32 DLLs that have some standard functions defined by the IVI Foundation, such as:

  • init
  • close
  • error_message
  • reset
  • self_test
  • read
  • initiate
  • fetch
  • abort

The application programming interface (API) was defined so that users of instruments have a familiar API from instrument to instrument. There are some basic guidelines when creating APIs for your instrument, such as using VISA data types and how to construct the CVI hierarchy.

LabVIEW drivers

Native LabVIEW drivers

A native LabVIEWTM driver is a LabVIEW driver that is created using entirely built-in LabVIEW VIs. It does not make any calls to external DLLs or Library files. This makes the driver portable to all the platforms and operating systems that LabVIEW and VISA supports (such as LinuxTM on x86, Mac OSTM X, and MicrosoftTM WindowsTM).

LabVIEW driver wrappers

All IVI-C drivers have a function panel file (file name extension .fp) that shows a hierarchy of the function calls into a DLL. It is a tool that guides a user to select the correct function call in the driver, because a DLL only has a flat API entry point scheme (unlike COM or .NET).

Any CVI‑generated .fp files can be imported into LabVIEW and LabVIEW generates a wrapper for the DLL. The drawback here is that the driver is dependent on the DLL, which is not portable and is therefore specific to the Windows operating system.

Get instrument drivers

To see what drivers are available for your instrument:

  1. Go to the Product Support and Downloads web page.
  2. Enter the model number of your instrument.
  3. Select Software from the list.
  4. Select and download the file.

For LabVIEWTM, you can also go to the NI website and search their instrument driver database.

Instrument driver examples

All Keithley drivers come with examples written in several programming languages that show you how to do common tasks with the instruments. The examples are available in the drivers and through Test Script Builder.

IVI shared components

The IVI shared components are similar in concept to the VISA shared components. The IVI Foundation provides class drivers for:

  • All the supported instruments (DMM, Scope, Fgen, and so on)
  • The configuration store

The IVI shared components also create the installation folders and registry keys that all IVI drivers and support files use for installation.

Interchangeable Virtual Instruments (IVI) style drivers

The IVI Foundation defined a set of application programming interfaces (APIs) for instruments, including digital multimeters, arbitrary waveform/function generators, DC power supplies, AC power supplies, oscilloscopes, switches, spectrum analyzers, RF signal generators, and power meters.

There are two types of IVI drivers, IVI‑COM and IVI‑C. IVI-COM drivers use MicrosoftTM COM technology to expose driver functionality. IVI-C drivers use conventional Microsoft WindowsTM DLLs to export simple C-based functions.

For more information about IVI drivers and the differences between the COM, C, and .NET interfaces, see Understanding the Benefits of IVI.

NI CVI runtime engine

IVI-C drivers that are created using the NITM LabWindowsTM/CVI environment depend on either the CVI runtime DLL (cvirte.dll) or the instrument support runtime DLL (instrsup.dll). These DLLs must be present on the system for them to run.

NI IVI Compliance Package

The NITM IVI Compliance Package (ICP) is a software package that contains IVI class drivers and support libraries that are needed for the development and use of applications that leverage IVI instrument interchangeability. The IVI Compliance Package also is based on and is compliant with the latest version of the instrument programming specifications defined by the IVI Foundation.

The NI ICP installer installs the IVI shared components, CVI runtime engine, and the instrument support runtime engine.

Keithley I/O layer

The Keithley I/O Layer is a software package that contains several utilities and drivers. It is mainly used as a supplement to IVI drivers.

For additional detail on the Keithley I/O layer, including computer requirements and installation instructions, see tek.com/keithley.

Keithley Configuration Panel

The Keithley Configuration Panel is a configuration utility for IVI drivers, similar to NI-MAX. It can also autodetect USBTMC instruments and LAN instruments that support the VXI-11 protocol.

Keithley Communicator

The Keithley Communicator is a dumb terminal program that uses VISA to communicate with the instrument.

Install the Keithley I/O Layer

VARIABLE - NOTE Before installing, it is a good practice to check the Product Support and Downloads web page to verify that you have the latest version of the Keithley I/O Layer.

You can download the Keithley I/O Layer from tek.com/keithley.

To install the Keithley I/O Layer:

  1. Download the Keithley I/O Layer Software from the Product Support and Downloads web page. The software is a single compressed file.
  2. Run the downloaded file from the Downloads directory.
  3. Follow the instructions on the screen to install the software.
  4. Reboot your computer to complete the installation.

Test Script Builder

Keithley Test Script Builder (TSB) is a software tool you can use to develop scripts for TSP-enabled instruments.

Install the TSB software

The installation files for the TSB software are available at tek.com/keithley.

To install the TSB software:

  1. Close all programs.
  2. Download the installer to your computer and double‑click the .exe file to start the installation.
  3. Follow the on-screen instructions.

Using Test Script Builder (TSB)

Keithley Test Script Builder (TSB) is a software tool that simplifies building test scripts. You can use TSB to perform the following operations:

  • Send remote commands and Lua statements
  • Receive responses (data) from commands and scripts
  • Upgrade instrument firmware
  • Create, manage, and run user scripts
  • Debug scripts
  • Import factory scripts to view or edit and convert to user scripts

The Keithley Test Script Processor (TSPTM) scripting engine is a Lua interpreter. In TSP-enabled instruments, the Lua programming language has been extended with control commands that are specific to Keithley instruments. For more information about using the Lua scripting language with Keithley TSP-enabled instruments, refer to the Fundamentals of programming for TSP.

Keithley has created a collection of remote commands specifically for use with Keithley TSP-enabled instruments; for detailed information about those commands, refer to the "Command reference" section of the documentation for your specific instrument. You can build scripts from a combination of these commands and Lua programming statements. Scripts that you create are referred to as "user scripts." Also, some TSP-enabled instruments include built-in factory scripts.

The following figure shows an example of the Test Script Builder. As shown, the workspace is divided into these areas:

  • Project navigator
  • Script editor
  • Outline view
  • Programming interaction
  • Help files

    Example of the Test Script Builder workspace

Item

Description

1

Project navigator

2

Script editor; right‑click to run the script that is displayed

3

Outline view

4

Programming interaction

5

Help; includes detailed information on using Test Script Builder

Project navigator

The project navigator consists of project folders and the script files (.tsp) created for each project. Each project folder can have one or more script files.

To view the script files in a project folder, select the plus (+) symbol next to the project folder. To hide the folder contents, select the minus (-) symbol next to the project folder.

You can download a TSP project to the instrument and run it, or you can run it from the TSB interface.

Script editor

The script editor is where you write, modify, and debug scripts.

To open and display a script file, double-click the file name in the project navigator. You can have multiple script files open in the script editor at the same time. Each open script file is displayed on a separate tab.

To display another script file that is already open, select the tab that contains the script in the script editor area.

Outline view

The outline view allows you to navigate through the structure of the active script in the script editor. Double-clicking a variable name or icon causes the first instance of the variable in the active script to be highlighted.

This view shows:

  • Names of local and global variables
  • Functions referenced by the active script in the script editor
  • Parameters
  • Loop control variables
  • Table variables
  • Simple assignments to table fields

The Outline tab is visible by default in the TSP perspective.

Icon

Name

Examples

TSB global function icon

Global function variable

function gFunction()

end

TSB local function variable icon

Local function variable

local function lFunction()

end

TSB anonymous function icon

Anonymous function

myTest(function() return 1 end)

TSB global table icon

Global table variable

gTable = { }

TSB local table icon

Local table variable

local lTable = { }

TSP other table field icon

Other table field

testTable.unit1 = "This is unit 1"

testTable.unit2 = "This is unit 2"

TSB global variable icon

Global variable

gVariable = 3

TSB local variable icon

Local variable

local lVariable = 5

TSB table method icon

Table method

gTable = { }

function gTable:testmethod()

end

[ ]

Nonfunction block statement (example 1)

if true == true then

local var

end

 

Nonfunction block statement (example 2)

for index = 1, 10 do

end

Programming interaction

This part of the workspace is where you interact with the scripts that you are building in Test Script Builder (TSB). The actual contents of the programming interaction area of the workspace can vary.

You can send commands from the Instrument Console command line, retrieve data, view variables and errors, and view and set breakpoints when using the debug feature. For additional information, refer to the online help that is accessible from Test Script Builder (TSB).

Working with TSB Embedded

TSB Embedded is a script management tool that is available through the web interface of the instrument. You can use TSB Embedded to create, modify, and save test scripts, and to send individual commands. TSB Embedded provides some of the features of Test Script Builder (TSB). TSB is a software tool that simplifies building test scripts for Keithley Instruments that are enabled to use the Test Script Processor (TSPTM) scripting engine. You can also use TSB Embedded to send individual commands to the instrument.

VARIABLE - NOTE For more information on scripts, refer to Fundamentals of scripting for TSP.

TSB Embedded interface

Simplify the display

You can simplify the TSB Embedded display to show only the TSP Script Editor or only the instrument Console.

The TSP Script Editor includes the list of User Scripts, the script entry area, and the script management buttons.

The Console includes only the Console and Output boxes and controls. You can use these to send individual commands to the instrument.

To display only the TSP Script Editor features, under View Selection, select Editor. To display only the Console features, select Console.

Create a script using TSB Embedded

VARIABLE - NOTE If you are using TSB Embedded to create scripts, you do not need to use the commands loadscript or loadandrunscript and endscript.

You can create a script from the instrument web interface with TSB Embedded. When you save the script, it is loaded into the runtime environment and saved in the nonvolatile memory of the instrument.

To create a script using TSB Embedded:

  1. If there is an existing script, select Clear Script.
  2. In the TSP Script box, enter a name for the script.
  3. In the input area, enter the sequence of commands to be included in the script.
  4. Select Save Script. The name is added to the User Scripts list.

VARIABLE - NOTE If there is an error in the code, a message is displayed in the Output area and the script is not saved. Resolve the error and select Save Script again.

Copy an existing script

You can copy an existing script to a script with a different name.

To copy an existing script:

  1. Select the script from the User Scripts list.
  2. In the TSP Script box, delete the existing name and enter a name for the script.
  3. Select Save Script. The script with the new name is added to the User Scripts list.

Run a script

Running a script executes the script on the instrument.

To run a script:

  1. Select a script from the User Scripts list.
  2. Select Run Script.

To stop a running script, select Abort.

The Abort button is only displayed while a script is running.

Delete a script

VARIABLE - NOTE You cannot retrieve a deleted script. Be sure to back up your script to your computer before deleting.

To delete a script from TSB Embedded:

  1. Select the script from the User Scripts list.
  2. Select Delete Script.
  3. Select Delete on the confirmation message.

Modify a script

You can modify the script in TSB Embedded.

To modify a script:

  1. Select a script from the User Scripts list.
  2. Modify the code in the editor.
  3. Select Save Script.

Import a script from a computer

You can import a script from any drive that you can access from the host computer, including USB flash drives.

When you import a script with a loadscript command, the TSP Script is assigned the loadscript name (not the file name). If the script does not include a loadscript command, the TSP Script name is not assigned.

TSP files have the extension .tsp.

To import a script from the host computer:

  1. Select Import from PC.
  2. Choose Select File to select a file. You can also drag the file into the Select File box.
  3. Select Import.
  4. In the TSP Script box, modify the script name as needed.
  5. Select Save Script.

The script is added to the User Scripts list.

Export a script to a computer

You can download a script from TSB Embedded to the host computer.

TSP scripts have the extension .tsp.

To export a script to a computer:

  1. Select the script from the User Scripts list.
  2. Select Export to PC. The file is saved as a download.
  3. Use the procedure for your browser to work with the file.

Export a script to the instrument USB

You can save a script to a USB flash drive inserted into the USB connector on the front panel of the instrument.

To export a script to a USB flash drive:

  1. Insert a flash drive into the USB port on the front panel of the instrument.
  2. Select the script from the User Scripts list.
  3. Select Export to USB.
  4. In the Export File Name box, enter the file name.
  5. Select Export.

Reset the instrument using TSB Embedded

The reset option in TSB Embedded performs an abort operation followed by a reset() command.

Refer to reset() for additional information.

Send individual instrument commands with TSB Embedded

You can send individual commands to the instrument using TSB Embedded. The response from the instrument appears in the Output box.

To send commands from the console:

  1. Type the command in Console.
  2. Press the Enter key to send the command to the instrument. The command is displayed in the Output box. If there is a response to the command, it is displayed after the command.

To clear information from the Output box:

  1. Right-click in the Output box.
  2. Select Clear.

To copy information from the Output box:

  1. Right-click in the Output box.
  2. Select Copy. The information is copied to the clipboard.

Advanced scripting for TSP

The following topics describe advanced information that can help you understand how the Test Script Processor (TSPTM) scripting engine works.

Global variables and the script.user.scripts table

When working with script commands, it is helpful to understand how scripts are handled in the instrument.

Scripts are loaded into the runtime environment from nonvolatile memory when you turn the instrument on. They are also added to the runtime environment when you load them into the instrument.

A script in the runtime environment can be:

  • A named script
  • An unnamed script
  • The anonymous script (which is a special unnamed script)

Script names can be assigned by using the loadscript command or by defining the scriptVar parameter of the script.new() function. When a named script is loaded into the runtime environment:

  • A global variable with the same name is created so that you can reference the script more conveniently.
  • An entry for the script is added to the script.user.scripts table.

When you create a script using the script.new() function without providing a name, the script is added to the runtime environment as an unnamed script. The script.new() function returns the script, but the script is not added to the script.user.scripts table.

When the anonymous script is loaded, it does not have a global variable or an entry in the script.user.scripts table. If there is an existing anonymous script, it is replaced by the new one.

When the instrument is turned off, everything in the runtime environment is deleted, including the scripts and global variables.

See the following figure to see how the scripts, global variables, and script.user.scripts table interrelate.

Global variables and scripts in the runtime environment

Create a script using the script.new() command

Use the script.new() function to copy an existing script from the local node to a remote node. This enables parallel script execution.

You can create a script with the script.new() function using the command:

scriptVar = script.new(code, name)

Where:

scriptVar

=

Name of the variable created when the script is loaded into the runtime environment

code

=

Content of the script

name

=

Name that is added to the script.user.scripts table

For example, to set up a two-second beep, you can send the command:

beepTwoSec = script.new("beeper.enable = 1 beeper.beep(2, 2400)", "beepTwoSec")

To run the new script, send the command:

beepTwoSec()

When you add beepTwoSec, the global variable and script.user.scripts table entries are made to the runtime environment, as shown in the following figure.

Runtime environment after creating a script

Create an unnamed script using script.new()

VARIABLE - NOTE Unnamed scripts are not available from the front‑panel display of the instrument. Only the anonymous script and named scripts are available from the front‑panel display.

When you create a script using script.new(), if you do not include name, the script is added to the runtime environment as an unnamed script. The script.new() function returns the script. You can assign it to a global variable, a local variable, or ignore the return value. A global variable is not automatically created.

For example, send the following command:

hello = script.new('display.clear() display.settext("hello")')

A script is created in the runtime environment and a global variable is created that references the script.

To run the script, send the command:

hello()

Create an unnamed script

Rename a script

You can rename a script to a new name or be the autoexec script.

To change the name of a script, use the command:

scriptVar.name = "renamedScript"

Where:

scriptVar

=

The global variable name

"renamedScript"

=

The new name of the user script that was referenced by the scriptVar global variable

After changing the name, you need to save the original script to save the change to the name attribute.

For example:

beepTwoSec.name = "beep2sec"

beepTwoSec.save()

Run the beep2sec script using the following command:

script.user.scripts.beep2sec()

VARIABLE - NOTE If the new name is the same as a name that is already used for a script, the name of the existing script is removed and that script becomes unnamed. This removes the existing script if there are no other variables that reference the previous script. If variables do reference the existing script, the references remain intact.

Changing the name of a script does not change the name of any variables that reference that script. After changing the name, the script is in the script.user.scripts table under its new name.

Rename script

For example, to change the name of the script named test2 to be autoexec:

test2.name = "autoexec"

test2.save()

The autoexec script runs automatically when the instrument is turned on. It runs after all the scripts have loaded and any scripts marked as autorun have run.

VARIABLE - NOTE You can also use the script.new() and the scriptVar.source attribute commands to create a script with a new name. For example, if you had an existing script named test1, you could create a new script named test2 by sending the command:
test2 = script.new(test1.source, "test2")
Refer to script.new().

Retrieve a user script

There are several ways to retrieve the source code of a user script:

  • One line at a time: Use scriptVar.list() to retrieve the source code one line at a time.
  • Entire script: Use the print(scriptVar.source) command to retrieve the script source code as a single string.

See Create and load a script for information about recreating the script and loading it back into the instrument.

VARIABLE - NOTE To get a list of scripts that are in nonvolatile memory, use the script.user.catalog() function.

Retrieve source code one line at a time

To retrieve the source code one line at a time, send the scriptVar.list() command. When this command is received, the instrument sends the entire script. Each line of the script is sent as a separate response message. The output includes the loadscript or loadandrunscript and endscript keywords.

After retrieving the source code, you can modify and save the command lines as a user script under the same name or a new name.

To retrieve the source code of a script one line at a time, send the command:

scriptVar.list()

Where scriptVar is the name of the script.

VARIABLE - NOTE To retrieve the commands in the anonymous script, use script.anonymous.list().

Example: Retrieve source code one line at a time

test.list()

Retrieve the source of a script named "test".

The output looks similar to:

loadscript test

display.clear()

display.settext("This is a test")

print("This is a test")

endscript

Retrieve a script as a single string

To retrieve the entire user script source code as a single string, use the scriptVar.source attribute. The loadscript or loadandrunscript and endscript keywords are not included.

To retrieve the source code as a single string, send the command:

print(scriptVar.source)

Where scriptVar is the name of the script.

Example: Retrieve the source code as a single string

print(test.source)

Retrieve the source of a script named "test".

Output looks similar to:

display.clear() display.settext("This is a test") print("This is a test")

Delete user scripts from the instrument

In most circumstances, you can delete a script using script.delete() (as described in Delete user scripts), and then turn the instrument off and back on again. However, if you cannot turn the instrument off, you can use the following steps to completely remove a script from the instrument.

When you completely remove a script, you delete all references to the script from the runtime environment, the script.user.scripts table, and nonvolatile memory.

To completely remove a script:

  1. Remove the script from the runtime environment. Set any variables that refer to the script to nil or assign the variables a different value. For example, to remove the script "beepTwoSec" from the runtime environment, send the following code:
    beepTwoSec = nil
  2. Remove the script from the script.user.scripts table. Set the name attribute to an empty string (""). This makes the script nameless, but does not make the script become the anonymous script. For example, to remove the script named "beepTwoSec", send the following code:
    script.user.scripts.beepTwoSec.name = ""
  3. Remove the script from nonvolatile memory. To delete the script from nonvolatile memory, send the command:
    script.delete("name")

    Where name is the name that the script was saved as. For example, to delete "beepTwoSec", send:
    script.delete("beepTwoSec")

Restore a script to the runtime environment

You can retrieve a script that was removed from the runtime environment but is still saved in nonvolatile memory.

To restore a script from nonvolatile memory into the runtime environment, you can use script.restore("scriptName"), where scriptName is the user-defined name of the script to be restored.

For example, to restore a user script named "test9" from nonvolatile memory:

script.restore("test9")

Memory considerations for the runtime environment

The 2600B reserves 32 MB of memory for dynamic runtime use. Approximate allocation of this memory is shown below:

5 MB

Firmware general operation

1 MB

Reserve for instrument internal operation

2 MB

Reserve for future firmware updates

24 MB

Runtime environment, user‑created reading buffers, and active sweep configuration

Note that the runtime environment, user-created reading buffers, and active sweep configuration must fit in the 24 MB of memory that is available. The amount of memory used by a reading buffer is approximately 15 bytes for each entry requested.

Reading buffers also use a small amount of memory for reading buffer management, which is not significant when making memory utilization calculations. For example, assume two reading buffers were created. One of them was created to store up to 1,000 readings and the other to store up to 2,500 readings. The memory reserved for the reading buffers is calculated as follows:

(1000 * 15) + (2500 * 15) = 52,500 bytes or 52.5 kilobytes

Note that the dedicated reading buffers do not consume memory that is needed by the runtime environment; do not include them in your memory consumption calculations. Also, reading buffers for remote nodes consume memory on the remote node, not the local node. Make sure the total reading buffer memory for any particular remote node does not exceed 24 MB, but do not include that amount in your local memory consumption calculations.

The amount of memory used by a sweep configuration is based on the number of source points. The actual memory consumption can vary greatly depending on the source‑measure unit (SMU) settings, but as a general rule, each source point can be expected to consume at least 24 bytes.

It is possible for the memory used for the runtime environment, sweep configuration and reading buffers to exceed 24 MB. When this occurs, there is a risk that memory allocation errors will occur and commands will not be executed as expected.

VARIABLE - CAUTION If the instrument encounters memory allocation errors when the memory used is above 95 percent, the state of the instrument cannot be guaranteed. After attempting to save any important data, turn off power to the instrument and turn it back on to reset the runtime environment and return the instrument to a known state. Unsaved scripts and data in reading buffers will be lost.

The amount of memory in use can be checked using the meminfo() function. The first value returned by meminfo() is the number of kilobytes of memory in use.

If the amount of memory used is over 95 percent or if you receive out‑of‑memory errors, you should reduce the amount of memory that is used.

Some suggestions for increasing the available memory:

  • Turn the instrument off and on. This deletes scripts that have not been saved and reloads only scripts that have been stored in nonvolatile memory.
  • Remove unneeded scripts from nonvolatile memory. Scripts are loaded from nonvolatile memory into the runtime environment when the instrument is turned on. See Delete user scripts from the instrument.
  • Reduce the number of TSP-LinkTM nodes.
  • Delete unneeded global variables from the runtime environment by setting them to nil.
  • Set the source attribute of all scripts to nil.
  • Adjust the collectgarbage() settings in Lua. See Lua memory management for more information.
  • Review scripts to optimize their memory usage. In particular, you can see memory gains by changing string concatenation lines into a Lua table of string entries. You can then use the table.concat() function to create the final string concatenation.

TSP-Link system expansion interface

VARIABLE - NOTE TSP-LinkTM is not available on the 2604B, 2614B, and 2634B.

The TSP-LinkTM expansion interface allows the 2600B instrument to communicate with other Test Script Processor (TSPTM) enabled instruments. The test system can be expanded to include up to 32 TSP-Link enabled instruments.

VARIABLE - CAUTION Combining two 2600B instruments to achieve greater currents in both source voltage and source current applications requires specific precautions, including configuration settings. Make sure that you adequately understand the risks involved and the measures needed to accommodate the combination of two 2600B instruments. To prevent damage to the 2600B, connected instruments, and the device under test, make sure proper procedures are used. For further information, visit the Keithley website at tek.com/keithley for application notes on combining two 2600B channels.

Master and subordinates

In a TSP-Link system, one of the nodes (instruments) is the master node and the other nodes are the subordinate nodes. The master node in a TSP-Link system can control the other nodes (subordinates) in the system.

When any node transitions from local operation to remote operation, it becomes the master of the system. All other nodes also transition to remote operation and become its subordinates. When any node transitions from remote operation to local, all other nodes also transition to local operation, and the master/subordinate relationship between nodes is dissolved.

The expanded system can be stand-alone or computer-based.

Stand-alone system: You can run a script from the front panel of any instrument (node) connected to the system. When a script is run, all nodes in the system go into remote operation (REM indicators turn on). The node running the script becomes the master and can control all other nodes, which become its subordinates. When the script is finished running, all the nodes in the system return to local operation (REM indicators turn off), and the master/subordinate relationship between nodes is dissolved.

Computer-based system: You can use a computer and a remote communications interface to any single node in the system. This node becomes the interface to the entire system. When a command is sent through this node, all nodes go into remote operation (REM indicators turn on). The node that receives the command becomes the master and can control all other nodes, which become its subordinates. In a computer-based system, the master/subordinate relationship between nodes can only be dissolved by performing an abort operation.

TSP-Link nodes

Each instrument (node) attached to the TSP-LinkTM network must be identified by assigning it a unique TSP-Link node number.

Commands for remote nodes are stored in the node table. An individual node is accessed as node[N], where N is the node number assigned to the node.

All TSP-accessible remote commands can be accessed as elements of the specific node. The following attributes are examples of items you can access:

  • node[N].model: The product model number string of the node.
  • node[N].revision: The product revision string of the node.
  • node[N].serialno: The product serial number string of the node.

You do not need to know the node number of the node that is running a script. The variable localnode is an alias for the node entry of the node where the script is running. For example, if a script is running on node 5, you can use the global variable localnode as an alias for node[5]. To access the product model number for this example, use localnode.model.

Connections

Connections for an expanded system are shown in the following figure. As shown, one instrument is optionally connected to the computer using the GPIB, LAN, USB, or RS-232 interface.

All the instruments in the system are connected in a sequence (daisy-chained) using LAN crossover cables. The cables used for TSP-Link connections must be category 5e or higher and less than three meters between nodes.

Details about these computer communications connections are described in Remote communications interfaces. You can use TSP-Link without a host computer.

TSP-Link connections

Initialization

Before you can use a TSP-LinkTM system, it must be initialized. For initialization to succeed, each instrument in a TSP-Link system must be assigned a different node number.

Assign node numbers

At the factory, each 2600B instrument is assigned as node 1. The node number is stored in nonvolatile memory and remains in storage when the instrument is turned off. You can assign a node number to a 2600B using the front panel or by using a remote command. There can only be 32 physical nodes, but you can assign node numbers from 1 to 64.

To assign a node number from the front panel of the instrument:

  1. Press the MENU key, then select TSPLINK > NODE.
  2. Press the navigation wheel and select the node number.
  3. Press the ENTER key to save the number.

To assign a node number using a remote command:

Set the tsplink.node attribute of the instrument:

tsplink.node = N

Where N = 1 to 64

To determine the node number of an instrument, you can read the tsplink.node attribute by sending the following command:

print(tsplink.node)

The node number is output. For example, if the node number is 1, a 1 is displayed.

Reset the TSP-Link network

After all the node numbers are set, you must initialize the system by performing a TSP‑LinkTM network reset.

VARIABLE - NOTE If you change the system configuration after initialization, you must reinitialize the system by performing a TSP‑Link network reset. Changes that require that you reinitialize the TSP‑Link network include turning off power or rebooting any instrument in the system, or rearranging or disconnecting the TSP-Link cable connections between instruments.

Front-panel operation

To reset the TSP-LinkTM network from the front panel:

  1. Power on all instruments connected to the TSP-Link network.
  2. Press the MENU key, select TSPLINK, and then press the ENTER key.
  3. Turn the navigation wheel to select RESET, and then press the ENTER key.

Remote programming

The commands associated with the TSP-LinkTM system reset are listed in the following table.

TSP-Link reset commands

Command

Description

tsplink.reset()

Initializes the TSP-Link network

tsplink.state

Reads the state of the TSP-Link network:

  • online if the most recent TSP-Link reset was successful
  • offline if the reset operation failed

An attempted TSP-Link reset operation fails if any of the following conditions are true:

  • Two or more instruments in the system have the same node number
  • There are no other instruments connected to the instrument performing the reset (only if the expected number of nodes was not provided in the reset call)
  • One or more of the instruments in the system is turned off
  • The actual number of nodes is less than the expected number

The following code illustrates a TSP-Link reset operation and displays its state:

tsplink.reset()

print(tsplink.state)

If the reset operation is successful, online is output to indicate that communications with all nodes have been established.

Accessing nodes

A TSP-LinkTM reset command populates the node table. Each instrument in the system corresponds to an entry in this table. Each entry is indexed by the node number of the instrument. The variable node[N] (where N is the node number) is used to access any node in the system. For example, node 1 is represented as entry node[1] in the node table.

You can access all the remote commands for a specific node by adding node[N]. to the beginning of the remote command, where N is the node number. For example, to set the NPLC value for the source‑measure unit (SMU) A on node 1 to 0.1, you could send this command:

node[1].smua.measure.nplc = 0.1

The variable localnode is an alias for node[N], where N is the node number of the node on which the code is running. For example, if node 1 is running the code, you can use localnode instead of node[1].

The following programming examples illustrate how to access instruments in the TSP-Link system (shown in TSP‑Link connections):

  • Any one of the following commands reset SMU A of node 1 (which, in this example, is the master). The other nodes in the system are not affected.
    • smua.reset()
    • localnode.smua.reset()
    • node[1].smua.reset()
  • The following command resets SMU A of node 4, which is a subordinate. The other nodes are not affected.
    • node[4].smua.reset()

Using the reset() command

Most TSP-LinkTM system operations target a single node in the system, but the reset() command affects the system as a whole by resetting all nodes to their default settings:

-- Reset all nodes in a TSP-Link system to their default state.

reset()

VARIABLE - NOTE Using the reset() command in a TSP-Link network differs from using the tsplink.reset() command. The tsplink.reset() command reinitializes the TSP-Link network and turns off the output of any TSP‑linked instrument; it may change the state of individual nodes in the system.

Use node[N].reset() or localnode.reset() to reset only one of the nodes. The other nodes are not affected. The following programming example shows this type of reset operation with code that is run on node 1.

-- Reset node 1 only.

node[1].reset()

-- Reset the node you are connected to (in this case, node 1).

localnode.reset()

-- Reset node 4 only.

node[4].reset()

Using the abort command

An abort command terminates an executing script and returns all nodes to local operation (REM indicators turn off). This dissolves the master/subordinate relationships between nodes. To invoke an abort operation, either send an abort command to a specific node or press the EXIT (LOCAL) key on any node in the system.

You can also perform an abort operation by pressing the OUTPUT ON/OFF control on any node. The results are the same as above, with the addition that all source‑measure unit (SMU) outputs in the system are turned off.

Triggering with TSP-Link

The TSP-LinkTM expansion interface has three trigger lines that function similarly to the digital I/O synchronization lines. See Digital I/O and Triggering for more information.

TSP advanced features

Use the Test Script Processor (TSPTM) scripting engine's advanced features to:

  • Run test scripts simultaneously
  • Manage resources allocated to test scripts that are running simultaneously
  • Use the data queue to facilitate real‑time communications between nodes on the TSP‑LinkTM network

When test scripts are run simultaneously, it improves functional testing, provides higher throughput, and expands system flexibility.

There are two methods you can use to run test scripts simultaneously:

  • Create multiple TSP-Link networks
  • Use a single TSP-Link network with groups

The following figure displays the first method, which consists of multiple TSP‑Link networks. Each TSP‑Link network has a master node and a remote connection to the computer.

Multiple TSP-Link networks

Another method you can use to run simultaneous test scripts is to use groups with a single TSP‑Link network. Each group on the TSP‑Link network can run a test while other groups are running different tests.

A group consists of one or more nodes with the same group number. The following figure displays a single TSP‑Link network with groups. This method requires one TSP‑Link network and a single GPIB connection to the computer.

Single TSP-Link network with groups

The following table shows an example of the functions of a single TSP‑Link network. Each group in this example runs a different test script than the other groups, which allows the system to run multiple tests simultaneously.

TSP-Link network group functions

Group number

Group members

Present function

0

Master node 1

Initiates and runs a test script on node 2

Initiates and runs a test script on node 5

Initiates and runs a test script on node 6

1

Group leader

Node 2

Runs the test script initiated by the master node

Initiates remote operations on node 3

Node 3

Performs remote operations initiated by node 2

2

Group leader

Node 5

Runs the test script initiated by the master node

Initiates remote operations on node 4

Node 4

Performs remote operations initiated by node 5

3

Group leader

Node 6

Runs the test script initiated by the master node

Use groups to manage nodes on TSP-Link network

The primary purpose of groups is to allow each group to run a different test script simultaneously.

A group can consist of one or more nodes. You must assign group numbers to each node using remote commands. If you do not assign a node to a group, it defaults to group 0, which is always grouped with the master node (regardless of the group to which the master node is assigned).

Master node overview

You can assign the master node to any group. You can also include other nodes in the group that includes the master. Note that any nodes that are set to group 0 are automatically included in the group that contains the master node, regardless of the group that is assigned to the master node.

The master node is always the node that coordinates activity on the TSP‑Link network.

The master node:

  • Is the only node that can use the execute() command on a remote node
  • Cannot initiate remote operations on any node in a remote group if any node in that remote group is performing an overlapped operation (a command that continues to operate after the command that initiated it has finished running)
  • Can execute the waitcomplete() command to wait for the group to which the master node belongs; to wait for another group; or to wait for all nodes on the TSP‑Link network to complete overlapped operations (overlapped commands allow the execution of subsequent commands while device operations of the overlapped command are still in progress)

Group leader overview

Each group has a dynamic group leader. The last node in a group that performs any operation initiated by the master node is the group leader.

The group leader:

  • Performs operations initiated by the master node
  • Initiates remote operations on any node with the same group number
  • Cannot initiate remote operations on any node with a different group number
  • Can use the waitcomplete() command without a parameter to wait for all overlapped operations running on nodes in the same group

Assign groups

Group numbers can range from zero (0) to 64. The default group number is 0. You can change the group number at any time. You can also add or remove a node to or from a group at any time.

Each time the power for a node is turned off, the group number for that node changes to 0.

The following example code dynamically assigns a node to a group:

-- Assign node 3 to group 1.

node[3].tsplink.group = 1

Run simultaneous test scripts

You can send the execute() command from the master node to initiate a test script and Lua code on a remote node. The execute() command places the remote node in the overlapped operation state. As a test script runs on the remote node, the master node continues to process other commands simultaneously.

Use the following code to send the execute() command for a remote node. The N parameter represents the node number that runs the test script (replace N with the node number).

To set the global variable "setpoint" on node N to 2.5:

node[N].execute("setpoint = 2.5")

The following code runs a test script that is defined on the local node. For this example, scriptVar is defined on the local node, which is the node that initiates the code to run on the remote node. The local node must be the master node.

To run scriptVar on node N:

node[N].execute(scriptVar.source)

The following code runs a test script that is defined on a remote node. For this example, scriptVar is defined on the remote node.

To run a script defined on the remote node:

node[N].execute("scriptVar()")

It is recommended that you copy large scripts to a remote node to improve system performance. See Copying test scripts across the TSP-Link network for more information.

Coordinate overlapped operations in remote groups

All overlapped operations on all nodes in a group must have completed before the master node can send a command to the group. If you send a command to a node in a remote group when an overlapped operation is running on any node in that group, errors occur.

You can execute the waitcomplete() command on the master node or group leader to wait for overlapped operations. The action of waitcomplete() depends on the parameters specified.

If you want to wait for completion of overlapped operations for:

  • All nodes in the local group: Use waitcomplete() without a parameter from the master node or group leader.
  • A specific group: Use waitcomplete(N) with a group number as the parameter from the master node. This option is not available for group leaders.
  • All nodes in the system: Use waitcomplete(0) from the master node. This option is not available for group leaders.

For additional information, refer to waitcomplete().

The following code shows two examples that use the waitcomplete() command from the master node:

-- Wait for each node in group N to complete all overlapped operations.

waitcomplete(N)

-- Wait for all groups on the TSP-Link network to complete overlapped operations.

waitcomplete(0)

A group leader can issue the waitcomplete() command to wait for the local group to complete all overlapped operations.

The following code is an example of how to use the waitcomplete() command from a group leader:

-- Wait for all nodes in the local group to complete all overlapped operations.

waitcomplete()

Use the data queue for real-time communications

Nodes that are running test scripts at the same time can store data in the data queue for real-time communications. Each instrument has an internal data queue that uses a first-in, first-out (FIFO) structure to store data. You can use the data queue to post numeric values, strings, and tables.

Use the data queue commands to:

  • Share data between test scripts running in parallel
  • Access data from a remote group or a local node on a TSP‑Link network at any time

You cannot access the reading buffers or global variables from any node in a remote group while a node in that group is performing an overlapped operation. However, you can use the data queue to retrieve data from any node in a group that is performing an overlapped operation. In addition, the master node and the group leaders can use the data queue to coordinate activities.

Tables in the data queue consume one entry. When a node stores a table in the data queue, a copy of the data in the table is made. When the data is retrieved from the data queue, a new table is created on the node that is retrieving the data. The new table contains a separate copy of the data in the original table, with no references to the original table or any subtables.

You can access data from the data queue even if a remote group or a node has overlapped operations in process. See the dataqueue commands for more information.

Copy test scripts across the TSP-Link network

To run a large script on a remote node, copy the test script to the remote node to increase the speed of test script initiation.

The code in the following example copies a test script across the TSP‑LinkTM network, creating a copy of the script on the remote node with the same name.

-- Add the source code from the script

-- testScript to the data queue.

node[2].dataqueue.add(testScript.source)

-- Create a new script on the remote node

-- using the source code from testScript.

node[2].execute(testScript.name ..
"= script.new(dataqueue.next(), [[" .. testScript.name .. "]])")

Removing stale values from the reading buffer cache

The node that acquires the data also stores the data for the reading buffer. To optimize data access, all nodes can cache data from the node that stores the reading buffer data.

When you run Lua code remotely, it can cause reading buffer data that is held in the cache to become stale. If the values in the reading buffer change while the Lua code runs remotely, another node can hold stale values. Use the clearcache() command to clear the cache. For additional detail on the reading buffer cache commands, see bufferVar.cachemode and bufferVar.clearcache().

The following example code demonstrates how stale values occur and how to use the clearcache() command to clear the cache on node 2, which is part of group 7.

-- Create a reading buffer on a node in a remote group.

node[2].tsplink.group = 7

node[2].execute("rbremote = smua.makebuffer(20)" ..

"smua.measure.count = 20 " ..

"smua.measure.v(rbremote)")

-- Create a variable on the local node to

-- access the reading buffer.

rblocal = node[2].getglobal("rbremote")

-- Access data from the reading buffer.

print(rblocal[1])

-- Run code on the remote node that updates the reading buffer.

node[2].execute("smua.measure.v(rbremote)")

-- Use the clearcache command if the reading buffer contains cached data.

rblocal.clearcache()

-- If you do not use the clearcache command, the data buffer

-- values never update. Every time the print command is

-- issued after the first print command, the same data buffer

-- values print.

print(rblocal[1])

TSP-Net

The TSP-NetTM library allows the 2600B to control LAN-enabled devices directly through its LAN port. This enables the 2600B to communicate directly with a device that is not TSPTM enabled without the use of a controlling computer.

TSP-Net capabilities

The TSP-Net library permits the 2600B to control a remote instrument through the LAN port for both Test Script Processor (TSPTM) and non-TSP instruments. Using TSP-Net library methods, you can transfer string data to and from a remote instrument, transfer and format data into Lua variables, and clear input buffers. The TSP-Net library is only accessible using commands from a remote command interface.

You can use TSP-Net commands to communicate with any ethernet-enabled instrument. However, specific TSP-Net commands exist for TSP-enabled instruments to allow for support of features unique to the TSP scripting engine. These features include script downloads, reading buffer access, wait completion, and handling of TSP scripting engine prompts. 

Using TSP-Net commands with TSP-enabled instruments, a 2600B can download a script to another TSP-enabled instrument and have both instruments run scripts independently. The 2600B can read the data from the remote instrument and either manipulate the data or send the data to a different remote instrument on the LAN. You can simultaneously connect to a maximum of 32 devices using standard TCP/IP networking techniques through the LAN port of the 2600B.

Use TSP-Net with any ethernet-enabled instrument

VARIABLE - NOTE Refer to TSP command reference for details about the commands presented in this section.

The 2600B LAN port is auto‑sensing (Auto-MDIX), so you can use either a LAN crossover cable or a LAN straight-through cable to connect directly from the 2600B to an ethernet device or to a hub.

To set up communications to a remote ethernet‑enabled instrument that is enabled for TSPTM:

  1. Send the following command to configure TSP‑Net to send an abort command when a connection to a TSP instrument is established:

tspnet.tsp.abortonconnect = 1

If the scripts are allowed to run, the connection is made, but the remote instrument may be busy.

  1. Send the command:

connectionID = tspnet.connect(ipAddress)

Where:

  • connectionID is the connection ID that is used as a handle in all other TSP‑Net function calls.
  • ipAddress is the IP address, entered as a string, of the remote instrument.

See tspnet.connect() for additional detail.

To set up communications to a remote ethernet‑enabled device that is not enabled for TSP:

Send the command:

connectionID = tspnet.connect(ipAddress, portNumber, initString)

Where:

  • connectionID is the connection ID that is used as a handle in all other tspnet function calls.
  • ipAddress is the IP address, entered as a string, of the remote device.
  • portNumber is the port number of the remote device.
  • initString is the initialization string that is to be sent to ipAddress.

See tspnet.connect() for additional detail.

To communicate to a remote ethernet device from the 2600B:

  1. Connect to the remote device using one of the previous procedures. If the 2600B cannot make a connection to the remote device, it generates a timeout event. Use tspnet.timeout to set the timeout value. The default timeout value is 20 s.
  2. Use tspnet.write() or tspnet.execute() to send strings to a remote device. If you use:
    • tspnet.write(): Strings are sent to the device exactly as indicated. You must supply any needed termination characters.
    • tspnet.execute(): The instrument appends termination characters to all strings that are sent. Use tspnet.termination() to specify the termination character.
  3. To retrieve responses from the remote instrument, use tspnet.read(). The TSP instrument suspends operation until the remote device responds or a timeout event is generated. To check if data is available from the remote instrument, use tspnet.readavailable().
  4. Disconnect from the remote device using the tspnet.disconnect() function. Terminate all remote connections using tspnet.reset().

Example script

The following example demonstrates how to connect to a remote device that is not enabled for TSPTM, and send and receive data from this device:

-- Set tspnet timeout to 5 s.

tspnet.timeout = 5

-- Establish connection to another device with IP address 192.168.1.51

-- at port 1394.

id_instr = tspnet.connect("192.168.1.51", 1394, "*rst\r\n")

-- Print the device ID from connect string.

print("ID is: ", id_instr)

-- Set the termination character to CRLF. You must do this

-- for each connection after the connection has been made.

tspnet.termination(id_instr, tspnet.TERM_CRLF)

-- Send the command string to the connected device.

tspnet.write(id_instr, "login admin\r\n")

-- Read the available data, then print it.

tspnet.write(id_instr, "*idn?\r\n")

print("instrument write/read returns: ", tspnet.read(id_instr))

-- Disconnect all existing TSP-Net sessions.

tspnet.reset()

This example produces a return such as:

ID is: 1

instrument write/read returns: SUCCESS: Logged in

instrument write/read returns: KEITHLEY INSTRUMENTS,MODEL 2600B,04089762,1.6.3d

TSP-Net compared to TSP-Link to communicate with TSP-enabled devices

The TSP‑LinkTM network interface is the preferred communications method for most applications where communications occurs between the 2600B and another TSP‑enabled instrument.

One of the advantages of using the TSP‑Link network interface is that TSP‑Link connections have three trigger lines that are available to each device on the TSP‑Link network. You can use any one of the trigger lines to perform hardware triggering between devices on the TSP‑Link network. Refer to Hardware trigger modes for details.

However, if the distance between the 2600B and the TSP‑enabled device is longer than 15 feet, use TSP‑Net commands.

TSP-Net instrument commands: General device control

The following instrument commands provide general device control:

tspnet.clear()

tspnet.connect()

tspnet.disconnect()

tspnet.execute()

tspnet.idn()

tspnet.read()

tspnet.readavailable()

tspnet.reset()

tspnet.termination()

tspnet.timeout

tspnet.write()

TSP-Net instrument commands: TSP-enabled device control

The following instrument commands provide TSP‑enabled device control:

tspnet.tsp.abort()

tspnet.tsp.abortonconnect

tspnet.tsp.rbtablecopy()

tspnet.tsp.runscript()

Example: Using tspnet commands

function telnetConnect(ipAddress, userName, password)

-- Connect through telnet to a computer.

id = tspnet.connect(ipAddress, 23, "")

-- Read the title and login prompt from the computer.

print(string.format("from computer--> (%s)", tspnet.read(id, "%n")))

print(string.format("from computer--> (%s)", tspnet.read(id, "%s")))

-- Send the login name.

tspnet.write(id, userName .. "\r\n")

-- Read the login echo and password prompt from the computer.

print(string.format("from computer--> (%s)", tspnet.read(id, "%s")))

-- Send the password information.

tspnet.write(id, password .. "\r\n")

-- Read the telnet banner from the computer.

print(string.format("from computer--> (%s)", tspnet.read(id, "%n")))

print(string.format("from computer--> (%s)", tspnet.read(id, "%n")))

print(string.format("from computer--> (%s)", tspnet.read(id, "%n")))

print(string.format("from computer--> (%s)", tspnet.read(id, "%n")))

end

function test_tspnet()

tspnet.reset()

-- Connect to a computer using telnet.

telnetConnect("192.0.2.1", "my_username", "my_password")

-- Read the prompt back from the computer.

print(string.format("from computer--> (%s)", tspnet.read(id, "%n")))

-- Change directory and read the prompt back from the computer.

tspnet.write(id, "cd c:\\\r\n")

print(string.format("from computer--> (%s)", tspnet.read(id, "%s")))

-- Make a directory and read the prompt back from the computer.

tspnet.write(id, "mkdir TEST_TSP\r\n")

print(string.format("from computer--> (%s)", tspnet.read(id, "%s")))

-- Change to the newly created directory.

tspnet.write(id, "cd c:\\TEST_TSP\r\n")

print(string.format("from computer--> (%s)", tspnet.read(id, "%s")))

-- if you have data print it to the file.

-- 11.2 is an example of data collected.

cmd = "echo " .. string.format("%g", 11.2) .. " >> datafile.dat\r\n"

tspnet.write(id, cmd)

print(string.format("from computer--> (%s)", tspnet.read(id, "%s")))

tspnet.disconnect(id)

end

test_tspnet()

TSP command reference

TSP command programming notes

This section contains general information about using TSP commands.

Placeholder text

This manual uses italicized text to represent the parts of remote commands that must be replaced by user specified values. The following examples show typical uses of italicized text.

Example 1:

beeper.enable = state

Where state can be a value (beeper.ON or beeper.OFF) or an integer (1 or 0) that you specify. For example, to set this attribute on, you send one of the following commands:

beeper.enable = beeper.ON

beeper.enable = 1

Example 2:

digio.trigger[N].assert()

Where N is an integer (1 to 14) that you specify. For example, to assert trigger line 7, you send:

digio.trigger[7].assert()

To assert a trigger line with a variable as the integer, you send:

triggerline = 7

digio.trigger[triggerline].assert()

Example 3:

smuX.trigger.measure.Y(rbuffer)

Where:

X refers to the source‑measure unit (SMU) channel (use a for SMU A).

Y is the measurement type that you specify (v, i, r, or p).

rbuffer is the reading buffer object where the readings are stored.

For example, to use SMU A to make voltage measurements and store them in buffer vbuffername, you send:

smua.trigger.measure.v(vbuffername)

Syntax rules

Use these syntax requirements to build well-formed instrument control commands.

Instrument commands are case sensitive. Refer to the command reference descriptions for the correct case.

The white space in lists of parameters in functions is optional. For example, the following functions are equivalent:

digio.writebit(3,0)

digio.writebit (3, 0)

All functions must have a set of parentheses () immediately following the function, even if there are no parameters specified. For example:

waitcomplete(G)

timezone = localnode.gettimezone()

If there are multiple parameters, they must be separated by commas (,). For example:

beeper.beep(0.5, 2400)

Time and date values

Time and date values are represented as the number of seconds since some base. There are three time bases:

  • UTC 12:00 am Jan 1, 1970. Some examples of UTC time are reading buffer base timestamps, adjustment dates, and the value returned by os.time().
  • Instrument on. References time to when the instrument was turned on. The value returned by os.clock() is referenced to the turn-on time.
  • Event. Time referenced to an event, such as the first reading stored in a reading buffer.

Use the TSP command reference

The Test Script Processor (TSPTM) command reference contains detailed descriptions of each of the TSP commands that you can use to control your instrument. Each command description is broken into subsections. The following figure shows an example of a command description.

Example instrument command description

The subsections contain information about the command. The subsections are:

  • Command name and summary table
  • Usage
  • Details
  • Example
  • Also see

The content of each of these subsections is described in the following topics.

Command name and summary table

Each instrument command description starts with the command name, followed by a brief description and a table with relevant information for each command. Definitions for the numbered items in the following figure are listed after the figure.

TSP command name and summary table

  1. Instrument command name. Indicates the beginning of the command description. It is followed by a brief description of what the command does.
  2. Type of command. Commands can be functions, attributes, or constants. If the command is an attribute, it can be read-only (R), read-write (RW), or write-only (W). For detail on commands, see Introduction to TSP operation.
  3. TSP-Link accessible. Yes or No; indicates whether or not the command can be accessed through a TSP-Link network.
  4. Affected by. Commands or actions that may change the setting of this command.
    • LAN restore defaults: This command is reset to the default value when lan.restoredefaults() is sent.
    • Digital I/O trigger N reset: This command is reset to the default value when digio.trigger[N].reset() is sent.
    • Recall setup: This command is stored as part of the saved setup and is changed to the value stored in the saved setup when the setup is recalled.
    • Instrument reset: This command is reset to the default value when reset(), localnode.reset(), or *RST is sent.
    • SMU reset: This command is reset to the default value when smuX.reset() is sent.
    • Power cycle: This command is set to the default value when the instrument power is cycled.
  5. Where saved. Indicates where the command settings reside once they are used on an instrument. Options include:
    • Not saved: Command is not saved anywhere and must be typed each time you use it.
    • Nonvolatile memory: Storage area in the instrument where information is saved when the instrument is turned off.
    • Saved setup: Command is saved as part of the saved setup.
  6. Default value: Lists the default value or constant for the command. The parameter values are defined in the Usage or Details sections of the command description.

Command usage

The Usage section of the remote command listing shows how to properly structure the command. Each line in the Usage section is a separate variation of the command usage. All possible command usage options are shown.

TSP usage description

1 Structure of command usage: Shows how to organize the parts of the command. If a parameter is shown to the left of the command, it is the return when you print the command. Items to the right are the parameters or other items you need to enter when setting the command.

2 User-supplied parameters: Indicated by italics. For example, for the function beeper.beep(duration, frequency), replace duration with the number of seconds and frequency with the frequency of the tone. Send beeper.beep(2, 2400) to generate a two-second, 2400 Hz tone.

Some commands have optional parameters. If there are optional parameters, they must be entered in the order presented in the Usage section. You cannot leave out any parameters that precede the optional parameter. Optional parameters are shown as separate lines in usage, presented in the required order with each valid permutation of the optional parameters.
For example:
printbuffer(startIndex, endIndex, buffer1)
printbuffer(startIndex, endIndex, buffer1, buffer2)

3 Parameter value options: Descriptions of the options that are available for the user‑defined parameter.

Command details

This section lists additional information you need to know to successfully use the remote command.

TSP Details description

Example section

The Example section of the remote command description shows examples of how you can use the command.

TSP example code

1 Actual example code that you can copy from this table and paste into your own programming application.

2 Description of the code and what it does. This may also contain example output of the code.

Related commands and information

The Also see section of the remote command description lists additional commands or sections that are related to the command.

TSP Also see description

TSP commands

The TSP commands available for the instrument are listed in alphabetical order.

beeper.beep()

This function generates an audible tone.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

beeper.beep(duration, frequency)

duration

The amount of time to play the tone (0.001 s to 100 s)

frequency

The frequency of the tone in hertz (Hz)

Details

You can use the beeper of the 2600B to provide an audible signal at a specified frequency and time duration. For example, you can use the beeper to signal the end of a lengthy sweep.

The beeper does not sound if it is disabled. It can be disabled or enabled with the beeper enable command, or through the front panel.

Example

beeper.enable = beeper.ON

beeper.beep(2, 2400)

Enables the beeper and generates a two‑second, 2400 Hz tone.

Also see

beeper.enable

beeper.enable

This command allows you to turn the beeper on or off.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Recall setup
Instrument reset

Saved setup

1 (beeper.ON)

Usage

state = beeper.enable

beeper.enable = state

state

Disable the beeper: beeper.OFF or 0

Enable the beeper: beeper.ON or 1

Details

This command enables or disables the beeper. When enabled, a beep signals that a front‑panel key has been pressed. Disabling the beeper also disables front‑panel key clicks.

Example

beeper.enable = beeper.ON

beeper.beep(2, 2400)

Enables the beeper and generates a two‑second, 2400 Hz tone.

Also see

beeper.beep()

bit.bitand()

This function performs a bitwise logical AND operation on two numbers.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

result = bit.bitand(value1, value2)

result

Result of the logical AND operation

value1

Operand for the logical AND operation

value2

Operand for the logical AND operation

Details

Any fractional parts of value1 and value2 are truncated to form integers. The returned result is also an integer.

Example

testResult = bit.bitand(10, 9)

print(testResult)

Performs a logical AND operation on decimal 10 (binary 1010) with decimal 9 (binary 1001), which returns a value of decimal 8 (binary 1000).

Output:

8.00000e+00

Also see

Bit manipulation and logic operations

bit.bitor()

bit.bitxor()

bit.bitor()

This function performs a bitwise logical OR operation on two numbers.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

result = bit.bitor(value1, value2)

result

Result of the logical OR operation

value1

Operand for the logical OR operation

value2

Operand for the logical OR operation

Details

Any fractional parts of value1 and value2 are truncated to make them integers. The returned result is also an integer.

Example

testResult = bit.bitor(10, 9)

print(testResult)

Performs a bitwise logical OR operation on decimal 10 (binary 1010) with decimal 9 (binary 1001), which returns a value of decimal 11 (binary 1011).

Output:

1.10000e+01

Also see

Bit manipulation and logic operations

bit.bitand()

bit.bitxor()

bit.bitxor()

This function performs a bitwise logical XOR (exclusive OR) operation on two numbers.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

result = bit.bitxor(value1, value2)

result

Result of the logical XOR operation

value1

Operand for the logical XOR operation

value2

Operand for the logical XOR operation

Details

Any fractional parts of value1 and value2 are truncated to make them integers. The returned result is also an integer.

Example

testResult = bit.bitxor(10, 9)

print(testResult)

Performs a logical XOR operation on decimal 10 (binary 1010) with decimal 9 (binary 1001), which returns a value of decimal 3 (binary 0011).

Output:

3.00000e+00

Also see

Bit manipulation and logic operations

bit.bitand()

bit.bitor()

bit.clear()

This function clears a bit at a specified index position.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

result = bit.clear(value, index)

result

Result of the bit manipulation

value

Specified number

index

One‑based bit position within value to clear (1 to 32)

Details

Any fractional part of value is truncated to make it an integer. The returned result is also an integer.

The least significant bit of value is at index position 1; the most significant bit is at index position 32.

Example

testResult = bit.clear(15, 2)

print(testResult)

The binary equivalent of decimal 15 is 1111. If you clear the bit at index position 2, the returned decimal value is 13 (binary 1101).

Output:

1.30000e+01

Also see

Bit manipulation and logic operations

bit.get()

bit.set()

bit.test()

bit.toggle()

bit.get()

This function retrieves the weighted value of a bit at a specified index position.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

result = bit.get(value, index)

result

Result of the bit manipulation

value

Specified number

index

One‑based bit position within value to get (1 to 32)

Details

This function returns the value of the bit in value at index. This is the same as returning value with all other bits set to zero (0).

The least significant bit of value is at index position 1; the most significant bit is at index position 32.

If the indexed bit for the number is set to zero (0), the result is zero (0).

Example

testResult = bit.get(10, 4)

print(testResult)

The binary equivalent of decimal 10 is 1010. If you get the bit at index position 4, the returned decimal value is 8.

Output:

8.00000e+00

Also see

Bit manipulation and logic operations

bit.clear()

bit.set()

bit.test()

bit.toggle()

bit.getfield()

This function returns a field of bits from the value starting at the specified index position.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

result = bit.getfield(value, index, width)

result

Result of the bit manipulation

value

Specified number

index

One‑based bit position within value to get (1 to 32)

width

The number of bits to include in the field (1 to 32)

Details

A field of bits is a contiguous group of bits. This function retrieves a field of bits from value starting at index.

The index position is the least significant bit of the retrieved field. The number of bits to return is specified by width.

The least significant bit of value is at index position 1; the most significant bit is at index position 32.

Example

myResult = bit.getfield(13, 2, 3)

print(myResult)

The binary equivalent of decimal 13 is 1101.

The field at index position 2 and width 3 consists of the binary bits 110. The returned value is decimal 6 (binary 110).

Output:

6.00000e+00

Also see

Bit manipulation and logic operations

bit.get()

bit.set()

bit.setfield()

bit.set()

This function sets a bit at the specified index position.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

result = bit.set(value, index)

result

Result of the bit manipulation

value

Specified number

index

One‑based bit position within value to set (1 to 32)

Details

This function returns result, which is value with the indexed bit set. The index must be between 1 and 32.

The least significant bit of value is at index position 1; the most significant bit is at index position 32.

Any fractional part of value is truncated to make it an integer.

Example

testResult = bit.set(8, 3)

 

print(testResult)

The binary equivalent of decimal 8 is 1000. If the bit at index position 3 is set to 1, the returned value is decimal 12 (binary 1100).

Output:

1.20000e+01

Also see

Bit manipulation and logic operations

bit.clear()

bit.get()

bit.getfield()

bit.setfield()

bit.test()

bit.toggle()

bit.setfield()

This function overwrites a bit field at a specified index position.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

result = bit.setfield(value, index, width, fieldValue)

result

Result of the bit manipulation

value

Specified number

index

One‑based bit position in value to set (1 to 32)

width

The number of bits to include in the field (1 to 32)

fieldValue

Value to write to the field

Details

This function returns result, which is value with a field of bits overwritten, starting at index. The index specifies the position of the least significant bit of value. The width bits starting at index are set to fieldValue.

The least significant bit of value is at index position 1; the most significant bit is at index position 32.

Before setting the field of bits, any fractional parts of value and fieldValue are truncated to form integers.

If fieldValue is wider than width, the most significant bits of the fieldValue that exceed the width are truncated. For example, if width is 4 bits and the binary value for fieldValue is 11110 (5 bits), the most significant bit of fieldValue is truncated and a binary value of 1110 is used.

Example

testResult = bit.setfield(15, 2, 3, 5)

print(testResult)

The binary equivalent of decimal 15 is 1111. After overwriting it with a decimal 5 (binary 101) at index position 2, the returned value is decimal 11 (binary 1011).

Output:

1.10000e+01

Also see

Bit manipulation and logic operations

bit.get()

bit.set()

bit.getfield()

bit.test()

This function returns the Boolean value (true or false) of a bit at the specified index position.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

result = bit.test(value, index)

result

Result of the bit manipulation

value

Specified number

index

One‑based bit position within value to test (1 to 32)

Details

This function returns result, which is the result of the tested bit.

The least significant bit of value is at index position 1; the most significant bit is at index position 32.

If the indexed bit for value is 0, result is false. If the bit of value at index is 1, the returned value is true.

If index is bigger than the number of bits in value, the result is false.

Example

testResult = bit.test(10, 4)

print(testResult)

The binary equivalent of decimal 10 is 1010. Testing the bit at index position 4 returns a Boolean value of true.

Output:

true

Also see

Bit manipulation and logic operations

bit.clear()

bit.get()

bit.set()

bit.toggle()

bit.toggle()

This function toggles the value of a bit at a specified index position.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

result = bit.toggle(value, index)

result

Result of the bit manipulation

value

Specified number

index

One‑based bit position within value to toggle (1 to 32)

Details

This function returns result, which is the result of toggling the bit index in value.

Any fractional part of value is truncated to make it an integer. The returned value is also an integer.

The least significant bit of value is at index position 1; the most significant bit is at index position 32.

The indexed bit for value is toggled from 0 to 1, or 1 to 0.

Example

testResult = bit.toggle(10, 3)

print(testResult)

The binary equivalent of decimal 10 is 1010. Toggling the bit at index position 3 returns a decimal value of 14 (binary 1110).

Output:

1.40000e+01

Also see

Bit manipulation and logic operations

bit.clear()

bit.get()

bit.set()

bit.test()

bufferVar.appendmode

This attribute sets the state of the append mode of the reading buffer.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Not applicable

See Details

0 (disabled)

Usage

state = bufferVar.appendmode

bufferVar.appendmode = state

state

The reading buffer append mode; set to one of the following:

  • 0: Append mode off; new measurement data overwrites the previous buffer content
  • 1: Append mode on; appends new measurement data to the present buffer content

bufferVar

The reading buffer; can be a dynamically allocated user-defined buffer or a dedicated reading buffer

Details

Assigning a value to this attribute enables or disables the buffer append mode. This value can only be changed with an empty buffer. Use bufferVar.clear() to empty the buffer.

For dedicated reading buffers, all buffer attributes are saved to nonvolatile memory only when the reading buffer is saved to nonvolatile memory.

If the append mode is set to 0, any stored readings in the buffer are cleared before new ones are stored. If append mode is set to 1, any stored readings remain in the buffer and new readings are added to the buffer after the stored readings.

With append mode on, the first new measurement is stored at rb[n+1], where n is the number of readings stored in buffer rb.

Example

buffer1.appendmode = 1

Append new readings to contents of the reading buffer named buffer1.

Also see

bufferVar.clear()

Reading buffers

bufferVar.basetimestamp

This attribute contains the timestamp that indicates when the first reading was stored in the buffer.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

Yes

Not applicable

See Details

0

Usage

basetime = bufferVar.basetimestamp

basetime

The timestamp of the first stored reading

bufferVar

The reading buffer; can be a dynamically allocated buffer (user‑defined), or a dedicated reading buffer (such as smua.nvbuffer1)

Details

This read-only attribute contains the timestamp (in seconds) of the first reading stored in a buffer (rb[1] stored in reading buffer rb). The timestamp is the number of seconds since 12:00 am January 1, 1970 (UTC) that the measurement was performed and stored.

For dedicated reading buffers, all buffer attributes are saved to nonvolatile memory only when the reading buffer is saved to nonvolatile memory.

See the smuX.nvbufferY attribute for details on accessing dedicated reading buffers.

Example

basetime = smua.nvbuffer1.basetimestamp

print(basetime)

Read the timestamp for the first reading stored in dedicated reading buffer 1.

Output:

1.57020e+09

This output indicates that the timestamp is 1,570,200,000 seconds (which is Friday, October 4, 2019 at 14:40:00 pm).

Also see

Reading buffers

smuX.measure.overlappedY()

smuX.measure.Y()

smuX.nvbufferY

smuX.trigger.measure.Y()

bufferVar.cachemode

This attribute enables or disables the reading buffer cache (on or off).

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Not applicable

Not saved

1 (enabled)

<CT2600B_only_end>Usage

cacheMode = bufferVar.cachemode

bufferVar.cachemode = cacheMode

cacheMode

The reading buffer cache mode; set to one of the following:

  • 0: Cache mode disabled (off)
  • 1: Cache mode enabled (on)

bufferVar

The reading buffer; can be a dynamically allocated user-defined buffer or a dedicated reading buffer

Details

Assigning a value to this attribute enables or disables the reading buffer cache. When enabled, the reading buffer cache improves access speed to reading buffer data.

If you run successive operations that overwrite reading buffer data, the reading buffer may return stale cache data. This can happen when initiating successive sweeps without reconfiguring the sweep measurements or when overwriting data in the reading buffer by setting the bufferVar.fillmode attribute to smuX.FILL_WINDOW. To avoid this, make sure that you include commands that automatically invalidate the cache as needed (for example, explicit calls to the bufferVar.clearcache() function) or disable the cache using this attribute (bufferVar.cachemode).

Example

smua.nvbuffer1.cachemode = 1

Enables reading buffer cache of dedicated reading buffer 1 (source‑measure unit (SMU) channel A).

Also see

bufferVar.clearcache()

bufferVar.fillmode

Reading buffers

bufferVar.capacity

This attribute sets the number of readings a buffer can store.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

Yes

Not applicable

See Details

Not applicable

Usage

bufferCapacity = bufferVar.capacity

bufferCapacity

The maximum number of readings the buffer can store

bufferVar

The reading buffer; can be a dynamically allocated user-defined buffer or a dedicated reading buffer

Details

This read-only attribute reads the number of readings that can be stored in the buffer.

For dedicated reading buffers, all buffer attributes are saved to nonvolatile memory only when the reading buffer is saved to nonvolatile memory.

The capacity of the buffer does not change as readings fill the buffer. A dedicated reading buffer that only collects basic items can store over 140,000 readings. Turning on additional collection items, such as timestamps and source values, decreases the capacity of a dedicated reading buffer (for example, smua.nvbuffer1), but does not change the capacity of a user-defined dynamically allocated buffer. A user-defined dynamically allocated buffer has a fixed capacity that is set when the buffer is created.

See the smuX.nvbufferY attribute for details on accessing dedicated reading buffers. See the smuX.makebuffer() function for information on creating user-defined dynamically allocated reading buffers.

Example

bufferCapacity = smua.nvbuffer1.capacity

 

print(bufferCapacity)

Reads the capacity of dedicated reading
buffer 1 (source‑measure unit (SMU) channel A).

Output:

1.49789e+05

The above output indicates that the buffer can hold 149789 readings.

Also see

Reading buffers

smuX.makebuffer()

smuX.measure.overlappedY()

smuX.measure.Y()

smuX.nvbufferY

smuX.trigger.measure.Y()

bufferVar.clear()

This function empties the buffer.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

bufferVar.clear()

bufferVar

The reading buffer; can be a dynamically allocated user-defined buffer or a dedicated reading buffer

Details

This function clears all readings and related recall attributes from the buffer (for example, bufferVar.timestamps and bufferVar.statuses) from the specified buffer.

Example

smua.nvbuffer1.clear()

Clears dedicated reading buffer 1 (source‑measure unit (SMU) channel A).

Also see

Reading buffers

smuX.nvbufferY

bufferVar.clearcache()

This function clears the cache.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

bufferVar.clearcache()

<AIT_DELETE_START><AIT_DELETE_END>This can happen when you:

  • Initiate successive sweeps without reconfiguring the sweep measurements. Watch for this when running Lua code remotely on more than one node, because values in the reading buffer cache may change while the Lua code is running.
  • Overwrite data in the reading buffer by setting the bufferVar.fillmode attribute to smuX.FILL_WINDOW.
  • Overwrite data in the reading buffer by setting the bufferVar.fillmode attribute to smuX.FILL_WINDOW.

<AIT_DELETE_END>To avoid this, you can include explicit calls to the bufferVar.clearcache() function to remove stale values from the reading buffer cache.

Example

smua.nvbuffer1.clearcache()

Clears the reading buffer cache for dedicated reading buffer 1.

<CTMPSU_only_start_***Set variable***>Example

slot[1].psu[1].nvbuffer1.clearcache()

Clears the reading buffer cache for dedicated reading buffer 1.

<CTMPSU_only_end_***Set variable***><CTMSMU_only_start_*** Set variable ***>Example

slot[1].smu[1].nvbuffer1.clearcache()

Clears the reading buffer cache for dedicated reading buffer 1.

<CTMSMU_only_end_*** Set variable ***>Also see

bufferVar.fillmode

Reading buffers

Removing stale values from the reading buffer cache

smuX.nvbufferY

<CTMPSU_only_start_***Set variable***>bufferVar.fillmode

Reading buffers

Removing stale values from the reading buffer cache

<CTMPSU_only_end_***Set variable***><CTMSMU_only_start_*** Set variable ***>

bufferVar.fillmode

Reading buffers

Removing stale values from the reading buffer cache

<CTMSMU_only_end_*** Set variable ***>

bufferVar.collectsourcevalues

This attribute sets whether or not source values are stored with the readings in the buffer.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Not applicable

See Details

0 (disabled)

Usage

state = bufferVar.collectsourcevalues

bufferVar.collectsourcevalues = state

state

Source value collection status; set to one of the following:

  • 0: Source value collection disabled (off)
  • 1: Source value collection enabled (on)

bufferVar

The reading buffer; can be a dynamically allocated buffer (user‑defined), or a dedicated reading buffer (such as smua.nvbuffer1)

Details

Assigning a value to this attribute enables or disables the storage of source values. Reading this attribute returns the state of source value collection. This value can only be changed with an empty buffer. Empty the buffer using the bufferVar.clear() function.

For dedicated reading buffers, all buffer attributes are saved to nonvolatile memory only when the reading buffer is saved to nonvolatile memory.

When on, source values are stored with readings in the buffer. This requires four extra bytes of storage for each reading. Turning on additional collection items, such as source values (this attribute) and timestamps, decreases the capacity of a dedicated reading buffer, but does not change the capacity of a user-defined dynamically allocated buffer.

You cannot collect source values when smuX.trigger.measure.action is set to smuX.ASYNC, so bufferVar.collectsourcevalues must be set to 0 when the measurement action is set to be asynchronous.

Example

smua.nvbuffer1.collectsourcevalues = 1

Include source values with readings for dedicated reading buffer 1.

Also see

bufferVar.clear()

Reading buffers

smuX.measure.overlappedY()

smuX.measure.Y()

smuX.nvbufferY

smuX.trigger.measure.action

smuX.trigger.measure.Y()

bufferVar.collecttimestamps

This attribute sets whether or not timestamp values are stored with the readings in the buffer.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Not applicable

See Details

0 (disabled)

Usage

state = bufferVar.collecttimestamps

bufferVar.collecttimestamps = state

state

Timestamp value collection status; set to one of the following:

  • 0: Timestamp value collection disabled (off)
  • 1: Timestamp value collection enabled (on)

bufferVar

The reading buffer; can be a dynamically allocated user-defined buffer or a dedicated reading buffer

Details

Assigning a value to this attribute enables or disables the storage of timestamps. Reading this attribute returns the state of timestamp collection.

For dedicated reading buffers, all buffer attributes are saved to nonvolatile memory only when the reading buffer is saved to nonvolatile memory.

When on, timestamp values are stored with readings in the buffer. This requires four extra bytes of storage for each reading. Turning on additional collection items, such as timestamps (this attribute) and source values, decreases the capacity of a dedicated reading buffer (for example, smua.nvbuffer1), but does not change the capacity of a user-defined dynamically allocated buffer.

The state variable can only be changed when the buffer is empty. Empty the buffer using the bufferVar.clear() function.

Example

smua.nvbuffer1.collecttimestamps = 1

Include timestamps with readings for dedicated reading buffer 1.

Also see

bufferVar.clear()

Reading buffers

smuX.measure.overlappedY()

smuX.measure.Y()

smuX.nvbufferY

smuX.trigger.measure.Y()

bufferVar.fillcount

This attribute sets the reading buffer fill count.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Not applicable

See Details

0

Usage

fillCount = bufferVar.fillcount

bufferVar.fillcount = fillCount

fillCount

The reading buffer fill count

bufferVar

The reading buffer; can be a dynamically allocated buffer (user‑defined), or a dedicated reading buffer (such as smua.nvbuffer1)

Details

The reading buffer fill count sets the number of readings to store before restarting at index 1. If the value is zero (0), then the capacity of the buffer is used. Use this attribute to control when the source‑measure unit (SMU) restarts filling the buffer at index 1, rather than having it restart when the buffer is full.

If the bufferVar.fillcount attribute is set to a value higher than the capacity of the buffer, after storing the element at the end of the buffer, the SMU overwrites the reading at index 1, the reading after that overwrites the reading at index 2, and so on.

This attribute is only used when the bufferVar.fillmode attribute is set to smuX.FILL_WINDOW.

For dedicated reading buffers, all buffer attributes are saved to nonvolatile memory only when the reading buffer is saved to nonvolatile memory.

Example

smua.nvbuffer1.fillcount = 50

Sets fill count of dedicated reading buffer 1 to 50.

Also see

bufferVar.fillmode

bufferVar.fillmode

This attribute sets the reading buffer fill mode.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Not applicable

See Details

0 (smuX.FILL_ONCE)

Usage

fillMode = bufferVar.fillmode

bufferVar.fillmode = fillMode

fillMode

The reading buffer fill mode; set to one of the following:

  • 0 or smuX.FILL_ONCE: Do not overwrite old data
  • 1 or smuX.FILL_WINDOW: New readings restart at index 1 after acquiring reading at index bufferVar.fillcount

bufferVar

The reading buffer; can be a dynamically allocated buffer (user‑defined), or a dedicated reading buffer (such as smua.nvbuffer1)

Details

When this attribute is set to smuX.FILL_ONCE, the reading buffer does not overwrite readings. If the buffer fills up, new readings are discarded.

When this attribute is set to smuX.FILL_WINDOW, new readings are added after existing data until the buffer holds bufferVar.fillcount elements. Continuing the sequence, the next reading overwrites the reading at index 1, the reading after that overwrites the reading at index 2, and so on.

For dedicated reading buffers, all buffer attributes are saved to nonvolatile memory only when the reading buffer is saved to nonvolatile memory.

Example

smua.nvbuffer1.fillmode = smua.FILL_ONCE

Sets fill mode of dedicated reading buffer 1 to fill once (do not overwrite old data).

Also see

bufferVar.fillcount

Reading buffers

bufferVar.measurefunctions

This attribute contains the measurement function that was used to acquire a reading stored in a specified reading buffer.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

Yes

Clearing the buffer

See Details

Not applicable

Usage

measurefunction = bufferVar.measurefunctions[N]

measurefunction

The measurement function used (Current, Voltage, Ohms, or Watts) to acquire reading number N in the specified buffer

bufferVar

The reading buffer; can be a dynamically allocated buffer (user‑defined), or a dedicated reading buffer (such as smua.nvbuffer1)

N

The reading number (1 to bufferVar.n)

Details

The measurefunctions buffer recall attribute is like an array (a Lua table) of strings indicating the function measured for the reading.

For dedicated reading buffers, all buffer attributes are saved to nonvolatile memory only when the reading buffer is saved to nonvolatile memory.

Example 1

measurefunction = smua.nvbuffer1.measurefunctions[5]

Store the measure function used to make reading number 5.

Example 2

printbuffer(1, 5, smua.nvbuffer1.measurefunctions)

Print the measurement function that was used to measure the first five readings saved in dedicated reading buffer 1.

Example output:

Current, Current, Current, Current, Current

Also see

bufferVar.measureranges

bufferVar.n

bufferVar.readings

bufferVar.sourcefunctions

bufferVar.sourceoutputstates

bufferVar.sourceranges

bufferVar.sourcevalues

bufferVar.statuses

bufferVar.timestamps

Reading buffers

bufferVar.measureranges

This attribute contains the measurement range values that were used for readings stored in a specified buffer.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

Yes

Clearing the buffer

See Details

Not applicable

Usage

measurerange = bufferVar.measureranges[N]

measurerange

The measurement range used to acquire reading number N in the specified buffer

bufferVar

The reading buffer; can be a dynamically allocated buffer (user‑defined), or a dedicated reading buffer (such as smua.nvbuffer1)

N

The reading number (1 to bufferVar.n)

Details

The measureranges buffer recall attribute is like an array (a Lua table) of full-scale range values for the measure range used when the measurement was made.

For dedicated reading buffers, all buffer attributes are saved to nonvolatile memory only when the reading buffer is saved to nonvolatile memory.

Example 1

measurerange = smua.nvbuffer1.measureranges[1]

Store the measure range that was used to make reading number 1.

Example 2

printbuffer(1, 10, smua.nvbuffer1.measureranges)

Print the range values that were used for the first 10 readings saved in dedicated reading buffer 1.

Example output:

1.00000e-07, 1.00000e-07,
1.00000e-07, 1.00000e-07,
1.00000e-07, 1.00000e-07,
1.00000e-07, 1.00000e-07,
1.00000e-07, 1.00000e-07

Also see

bufferVar.measurefunctions

bufferVar.n

bufferVar.readings

bufferVar.sourcefunctions

bufferVar.sourceoutputstates

bufferVar.sourceranges

bufferVar.sourcevalues

bufferVar.statuses

bufferVar.timestamps

Reading buffers

bufferVar.n

This attribute contains the number of readings in the buffer.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

Yes

Clearing the buffer

See Details

Not applicable

Usage

numberOfReadings = bufferVar.n

numberOfReadings

The number of readings stored in the buffer

bufferVar

The reading buffer; can be a dynamically allocated user-defined buffer or a dedicated reading buffer

Details

This read-only attribute contains the number of readings presently stored in the buffer.

For dedicated reading buffers, all buffer attributes are saved to nonvolatile memory only when the reading buffer is saved to nonvolatile memory.

Example

numberOfReadings = smua.nvbuffer1.n

print(numberOfReadings)

Reads the number of readings stored in dedicated reading buffer 1 (source‑measure unit (SMU) channel A).

Output:

1.25000+02

The above output indicates that there are 125 readings stored in the buffer.

Also see

bufferVar.measurefunctions

bufferVar.measureranges

bufferVar.readings

bufferVar.sourcefunctions

bufferVar.sourceoutputstates

bufferVar.sourceranges

bufferVar.sourcevalues

bufferVar.statuses

bufferVar.timestamps

Reading buffers

smuX.measure.overlappedY()

smuX.measure.Y()

smuX.nvbufferY

smuX.trigger.measure.Y()

bufferVar.readings

This attribute contains the readings stored in a specified reading buffer.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

Yes

Clearing the buffer

See Details

Not applicable

Usage

reading = bufferVar.readings[N]

reading

The value of the reading in the specified reading buffer

bufferVar

The reading buffer; can be a dynamically allocated user-defined buffer or a dedicated reading buffer

N

The reading number N; can be any value from 1 to the number of readings in the buffer; use the bufferVar.n command to determine the number of readings in the buffer

Details

The bufferVar.readings buffer recall attribute is like an array (a Lua table) of the readings stored in the reading buffer. This array holds the same data that is returned when the reading buffer is accessed directly; that is, rb[2] and rb.readings[2] access the same value.

For dedicated reading buffers, all buffer attributes are saved to nonvolatile memory only when the reading buffer is saved to nonvolatile memory.

Example

print(smua.nvbuffer1.readings[1])

Output the first reading saved in source‑measure unit (SMU) channel A, dedicated reading buffer 1.

Output:

8.81658e-08

Also see

bufferVar.measurefunctions

bufferVar.measureranges

bufferVar.n

bufferVar.sourcefunctions

bufferVar.sourceoutputstates

bufferVar.sourceranges

bufferVar.sourcevalues

bufferVar.statuses

bufferVar.timestamps

Reading buffers

bufferVar.sourcefunctions

This attribute contains the source function that was being used when the readings were stored in a specified reading buffer.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

Yes

Clearing the buffer

See Details

Not applicable

Usage

sourcefunction = bufferVar.sourcefunctions[N]

sourcefunction

The source function used (Current or Voltage) to acquire reading number N in the specified buffer

bufferVar

The reading buffer; can be a dynamically allocated buffer (user‑defined), or a dedicated reading buffer (such as smua.nvbuffer1)

N

The reading number (1 to bufferVar.n)

Details

The bufferVar.sourcefunctions buffer recall attribute is like an array (a Lua table) of strings indicating the source function at the time of the measurement.

For dedicated reading buffers, all buffer attributes are saved to nonvolatile memory only when the reading buffer is saved to nonvolatile memory.

Example 1

sourcefunction = smua.nvbuffer1.sourcefunctions[3]

print(sourcefunction)

Store the source function used to make reading number 3 and output the value.

Example 2

printbuffer(1, 10, smua.nvbuffer1.sourcefunctions)

Print the source function used for 10 readings stored in dedicated reading buffer 1.

Example output:

Voltage, Voltage, Voltage, Voltage, Voltage, Voltage, Voltage, Voltage, Voltage, Voltage

Also see

bufferVar.measurefunctions

bufferVar.measureranges

bufferVar.n

bufferVar.readings

bufferVar.sourceoutputstates

bufferVar.sourceranges

bufferVar.sourcevalues

bufferVar.statuses

bufferVar.timestamps

Reading buffers

bufferVar.sourceoutputstates

This attribute indicates the state of the source output for readings that are stored in a specified buffer.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

Yes

Clearing the buffer

See Details

Not applicable

Usage

state = bufferVar.sourceoutputstates[N]

state

The output state (Off or On) when reading N of the specified buffer was acquired

bufferVar

The reading buffer; can be a dynamically allocated buffer (user‑defined), or a dedicated reading buffer (such as smua.nvbuffer1)

N

The reading number (1 to bufferVar.n)

Details

The bufferVar.sourceoutputstates buffer recall attribute is similar to an array (a Lua table) of strings. This array indicates the state of the source output (Off or On) at the time of the measurement.

For dedicated reading buffers, all buffer attributes are saved to nonvolatile memory only when the reading buffer is saved to nonvolatile memory.

Example

printbuffer(1, 1, smua.nvbuffer1.sourceoutputstates)

Print the source output for the first reading stored in dedicated reading buffer 1.

Example output:

On

Also see

bufferVar.measurefunctions

bufferVar.measureranges

bufferVar.n

bufferVar.readings

bufferVar.sourcefunctions

bufferVar.sourceranges

bufferVar.sourcevalues

bufferVar.statuses

bufferVar.timestamps

Reading buffers

bufferVar.sourceranges

This attribute contains the source range that was used for readings stored in a specified reading buffer.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

Yes

Clearing the buffer

See Details

Not applicable

Usage

sourcerange = bufferVar.sourceranges[N]

sourcerange

The source range used to acquire reading number N in the specified buffer

bufferVar

The reading buffer; can be a dynamically allocated buffer (user‑defined), or a dedicated reading buffer (such as smua.nvbuffer1)

N

The reading number (1 to bufferVar.n)

Details

The bufferVar.sourceranges buffer recall attribute is like an array (a Lua table) of full-scale range values for the source range used when the measurement was made.

For dedicated reading buffers, all buffer attributes are saved to nonvolatile memory only when the reading buffer is saved to nonvolatile memory.

Example 1

sourcerange = smua.nvbuffer1.sourceranges[1]

Store the source range that was used for the first reading stored in dedicated reading buffer 1.

Example 2

printbuffer(1, 6, smua.nvbuffer1.sourceranges)

Print the source ranges that were used for the first 6 readings stored in source‑measure unit (SMU) A, buffer 1.

Example output:

1.00000e-04, 1.00000e-04, 1.00000e-04, 1.00000e-04, 1.00000e-04, 1.00000e-04

Also see

bufferVar.measurefunctions

bufferVar.measureranges

bufferVar.n

bufferVar.readings

bufferVar.sourcefunctions

bufferVar.sourceoutputstates

bufferVar.sourcevalues

bufferVar.statuses

bufferVar.timestamps

Reading buffers

bufferVar.sourcevalues

When enabled by the bufferVar.collectsourcevalues attribute, this attribute contains the source levels being output when readings in the reading buffer were acquired.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

Yes

Clearing the buffer

See Details

Not applicable

Usage

sourcevalue = bufferVar.sourcevalues[N]

sourcevalue

The output value of the source when reading N of the specified buffer was acquired

bufferVar

The reading buffer; can be a dynamically allocated buffer (user‑defined) or a dedicated reading buffer (such as smua.nvbuffer1)

N

The reading number (1 to bufferVar.n)

Details

If the bufferVar.collectsourcevalues attribute is enabled before readings are made, the bufferVar.sourcevalues buffer recall attribute is like an array (a Lua table) of the sourced value in effect at the time of the reading.

For dedicated reading buffers, all buffer attributes are saved to nonvolatile memory only when the reading buffer is saved to nonvolatile memory.

Example 1

sourcevalue = smua.nvbuffer1.sourcevalues[1]

 

Get the sourced value of the first reading stored in dedicated reading buffer 1.

Example 2

printbuffer(1, 6, smua.nvbuffer1.sourcevalues)

Print the sourced value of the first 6 readings stored in source‑measure unit (SMU) A, buffer 1.

Example output:

1.00000e-04, 1.00000e-04,

1.00000e-04, 1.00000e-04,

1.00000e-04, 1.00000e-04

Also see

bufferVar.collectsourcevalues

bufferVar.measurefunctions

bufferVar.measureranges

bufferVar.n

bufferVar.readings

bufferVar.sourcefunctions

bufferVar.sourceoutputstates

bufferVar.sourceranges

bufferVar.statuses

bufferVar.timestamps

Reading buffers

bufferVar.statuses

This attribute contains the status values of readings in the reading buffer.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

Yes

Clearing the buffer

See Details

Not applicable

Usage

statusInformation = bufferVar.statuses[N]

statusInformation

The status value when reading N of the specified buffer was acquired

bufferVar

The reading buffer; can be a dynamically allocated user-defined buffer or a dedicated reading buffer

N

The reading number N; can be any value from 1 to the number of readings in the buffer; use the bufferVar.n command to determine the number of readings in the buffer

Details

This read‑only buffer recall attribute is like an array (a Lua table) of the status values for all the readings in the buffer. The status values are floating-point numbers that encode the status value; see the following table for values.

For dedicated reading buffers, all buffer attributes are saved to nonvolatile memory only when the reading buffer is saved to nonvolatile memory.

Buffer status bits

Bit

Name

Hex

Description

B1

Overtemp

0x02

Over temperature condition

B2

AutoRangeMeas

0x04

Measure range was autoranged

B3

AutoRangeSrc

0x08

Source range was autoranged

B4

4Wire

0x10

4-wire (remote) sense mode enabled

B5

Rel

0x20

Relative offset applied to reading

B6

Compliance

0x40

Source function was limited because the complementary function would be over the compliance limit

B7

Filtered

0x80

Reading was filtered

Example

reset()

smua.source.func = smua.OUTPUT_DCVOLTS

smua.source.autorangev = smua.AUTORANGE_ON

smua.source.levelv = 5

smua.source.limiti = 10e-3

smua.measure.rangei = 10e-3

smua.source.output = smua.OUTPUT_ON

print(smua.measure.i(smua.nvbuffer1))

smua.source.output = smua.OUTPUT_OFF

 

print(smua.nvbuffer1.statuses[1])

Reset the instrument.

Set the voltage source function to DC volts. Set the range to auto.

Set the voltage source to 5 V.

Set current measure limit to 10 mA.

Set the current measure range to 10 mA.

Turn on the output.

Print and place the current reading in the reading buffer.

Turn off the output.

Output status value of the first measurement in the reading buffer.

Output example:

3.99470e-06

4.00000e+00

Also see

bufferVar.measurefunctions

bufferVar.measureranges

bufferVar.n

bufferVar.readings

bufferVar.sourcefunctions

bufferVar.sourceoutputstates

bufferVar.sourceranges

bufferVar.sourcevalues

bufferVar.timestamps

Reading buffers

bufferVar.timestampresolution

This attribute contains the resolution of the timestamp.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Not applicable

See Details

1e-6 (1 µs)

Usage

resolution = bufferVar.timestampresolution

resolution

Timestamp resolution in seconds (minimum 1 µs; rounded to an even power of 2 µs)

bufferVar

The reading buffer; can be a dynamically allocated user-defined buffer or a dedicated reading buffer

Details

Assigning a value to this attribute sets the resolution for the timestamps. Reading this attribute returns the timestamp resolution value. This value can only be changed with an empty buffer. Empty the buffer using the bufferVar.clear() function.

The finest timestamp resolution is 0.000001 seconds (1 µs). At this resolution, the reading buffer can store unique timestamps for up to 71 minutes. You can increase this value for very long tests.

For dedicated reading buffers, all buffer attributes are saved to nonvolatile memory only when the reading buffer is saved to nonvolatile memory.

Example

smua.nvbuffer1.timestampresolution = 0.000008

 

Sets the timestamp resolution of dedicated reading buffer 1 to 8 µs.

Also see

bufferVar.clear()

bufferVar.collecttimestamps

bufferVar.timestamps

Reading buffers

smuX.measure.overlappedY()

smuX.measure.Y()

smuX.nvbufferY

smuX.trigger.measure.Y()

bufferVar.timestamps

When enabled by the bufferVar.collecttimestamps attribute, this attribute contains the timestamp when each reading saved in the specified reading buffer occurred.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

Yes

Clearing the buffer

See Details

Not applicable

Usage

timestamp = bufferVar.timestamps[N]

timestamp

The complete timestamp (including date, time, and fractional seconds) of reading number N in the specified reading buffer when the reading was acquired

bufferVar

The reading buffer; can be a dynamically allocated user-defined buffer or a dedicated reading buffer

N

The reading number (1 to bufferVar.n)

Details

The bufferVar.timestamps information from a reading buffer is only available if the bufferVar.collecttimestamps attribute is set to 1 (default setting). If it is set to 0, you cannot access any time information from a reading buffer.

If enabled, this buffer recall attribute is like an array (a Lua table) that contains timestamps, in seconds, of when each reading occurred. These are relative to the bufferVar.basetimestamp for the buffer.

For dedicated reading buffers, all buffer attributes are saved to nonvolatile memory only when the reading buffer is saved to nonvolatile memory.

Example

timestamp = smua.nvbuffer1.timestamps[1]

 

Get the timestamp of the first reading stored in source‑measure unit (SMU) A, buffer 1.

Also see

bufferVar.clear()

bufferVar.collecttimestamps

bufferVar.measurefunctions

bufferVar.measureranges

bufferVar.n

bufferVar.readings

bufferVar.sourcefunctions

bufferVar.sourceoutputstates

bufferVar.sourceranges

bufferVar.sourcevalues

bufferVar.statuses

Reading buffers

ConfigPulseIMeasureV()

This KIPulse factory script function configures a current pulse train with a voltage measurement at each point.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

f, msg = ConfigPulseIMeasureV(smu, bias, level, limit, ton, toff, points, buffer, tag, sync_in, sync_out, sync_in_timeout, sync_in_abort)

f, msg = ConfigPulseIMeasureV(smu, bias, level, limit, ton, toff, points, buffer, tag, sync_in, sync_out, sync_in_timeout)

f, msg = ConfigPulseIMeasureV(smu, bias, level, limit, ton, toff, points, buffer, tag, sync_in, sync_out)

f, msg = ConfigPulseIMeasureV(smu, bias, level, limit, ton, toff, points, buffer, tag, sync_in)

f, msg = ConfigPulseIMeasureV(smu, bias, level, limit, ton, toff, points, buffer, tag)

f

A Boolean flag; this flag is true when the pulse was successfully configured, false when errors were encountered

msg

A string message; if the f flag is false, msg contains an error message; if it is true, msg contains a string that indicates successful configuration

smu

Instrument channel (for example, smua refers to SMU channel A)

bias

Bias level in amperes

level

Pulse level in amperes

limit

Voltage limit (for example, compliance) in volts

ton

Pulse on time in seconds

toff

Pulse off time in seconds

points

Number of pulse-measure cycles

buffer

Reading buffer where pulsed measurements are stored; if this is nil when the function is called, no measurements are made when the pulse train is initiated

tag

Numeric identifier to be assigned to the defined pulse train

sync_in

Defines a digital I/O trigger input line; if programmed, the pulse train waits for a trigger input before executing each pulse

sync_out

Defines a digital I/O trigger output line; if programmed, the pulse train generates a trigger output immediately before the start of ton

sync_in_timeout

Specifies the length of time (in seconds) to wait for input trigger; default value is 10 s

sync_in_abort

Specifies whether or not to abort the pulse if an input trigger is not received; if pulse aborts because of a missed trigger, a timer timeout message is returned; true or false

Details

Data for pulsed voltage measurements are stored in the reading buffer specified by the buffer input parameter.

This function configures a current pulse train with a voltage measurement at each point. Measurements are made at the end of the ton time.

This function does not cause the specified smu to output a pulse train. It simply checks to see if all the pulse dimensions can be achieved, and if they are, assigns the indicated tag or index to the pulse train. The InitiatePulseTest(tag) and InitiatePulseTestDual(tag1, tag2) functions are used to initiate a pulse train assigned to a valid tag.

ConfigPulseIMeasureV()

Example

ConfigPulseIMeasureV(smua, 0, 5, 10, 0.001, 0.080, 1, smua.nvbuffer1, 1)

Set up a pulse train that uses channel A. The pulse amplitude is 5 A and returns to 0 A after 1 ms. The pulse remains at 0 A for 80 ms and the voltage limit is 10 V during the pulse. The pulse train consists of only 1 pulse, and this pulse is assigned a tag index of 1.

Also see

InitiatePulseTest()

InitiatePulseTestDual()

KIPulse factory script

ConfigPulseIMeasureVSweepLin()

This KIPulse factory script function configures a linear pulsed current sweep with a voltage measurement at each point.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

f, msg = ConfigPulseIMeasureVSweepLin(smu, bias, start, stop, limit, ton, toff,
points, buffer, tag, sync_in, sync_out, sync_in_timeout, sync_in_abort)

f, msg = ConfigPulseIMeasureVSweepLin(smu, bias, start, stop, limit, ton, toff,
points, buffer, tag, sync_in, sync_out, sync_in_timeout)

f, msg = ConfigPulseIMeasureVSweepLin(smu, bias, start, stop, limit, ton, toff,
points, buffer, tag, sync_in, sync_out)

f, msg = ConfigPulseIMeasureVSweepLin(smu, bias, start, stop, limit, ton, toff,
points, buffer, tag, sync_in)

f, msg = ConfigPulseIMeasureVSweepLin(smu, bias, start, stop, limit, ton, toff,
points, buffer, tag)

f

A Boolean flag; this flag is true if the pulse was successfully configured, false when errors were encountered

msg

A string message; if the f flag is false, msg contains an error message; if it is true, msg contains a string indicating successful configuration

smu

Instrument channel (for example, smua refers to SMU channel A)

bias

Bias level in amperes

start

Pulse sweep start level in amperes

stop

Pulse sweep stop level in amperes

limit

Voltage limit (for example, compliance) in volts

ton

Pulse on time in seconds

toff

Pulse off time in seconds

points

Number of pulse-measure cycles

buffer

Reading buffer where pulsed measurements are stored; if this is nil when the function is called, no measurements are made when the pulse train is initiated

tag

Numeric identifier to be assigned to the defined pulse train

sync_in

Defines a digital I/O trigger input line; if programmed, the pulse train waits for a trigger input before executing each pulse

sync_out

Defines a digital I/O trigger output line; if programmed, the pulse train generates a trigger output immediately before the start of ton

sync_in_timeout

Specifies the length of time (in seconds) to wait for input trigger; default value is 10 s

sync_in_abort

Specifies whether or not to abort pulse if input trigger is not received; if pulse aborts because of a missed trigger, a timer timeout message is returned; true or false

Details

Data for pulsed voltage measurements are stored in the reading buffer specified by the buffer input parameter.

This function configures a linear pulsed current sweep with a voltage measurement at each point. Measurements are made at the end of the ton time.

The magnitude of the first pulse is start amperes; the magnitude of the last pulse is stop amperes. The magnitude of each pulse in between is step amperes larger than the previous pulse, where:

step = (stop - start) / (points - 1)

This function does not cause the specified smu to output a pulse train. It does check to see if all the pulse dimensions can be achieved, and if they can, assigns the indicated tag or index to the pulse train. The InitiatePulseTest(tag) and InitiatePulseTestDual(tag1, tag2) functions are used to initiate a pulse train assigned to a valid tag.

ConfigPulseIMeasureVSweepLin()

Example

ConfigPulseIMeasureVSweepLin(smua, 0, 0.01, 0.05, 1, 1e-3, 0.1, 20, smua.nvbuffer2, 3)

Set up a pulsed sweep that uses channel A. The pulsed sweep starts at 10 mA, ends at 50 mA, and returns to a 0 mA bias level between pulses. Each pulsed step is on for 1 ms, and then at the bias level for 100 ms. The voltage limit is 1 V during the entire pulsed sweep. The pulse train is comprised of 20 pulsed steps and the pulse train is assigned a tag index of 3.

Also see

InitiatePulseTest()

InitiatePulseTestDual()

KIPulse factory script

ConfigPulseIMeasureVSweepLog()

This KIPulse factory script function configures a voltage pulse train with a current measurement at each point.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

f, msg = ConfigPulseIMeasureVSweepLog(smu, bias, start, stop, limit, ton, toff, points, buffer, tag, sync_in, sync_out, sync_in_timeout, sync_in_abort)

f, msg = ConfigPulseIMeasureVSweepLog(smu, bias, start, stop, limit, ton, toff, points, buffer, tag, sync_in, sync_out, sync_in_timeout)

f, msg = ConfigPulseIMeasureVSweepLog(smu, bias, start, stop, limit, ton, toff, points, buffer, tag, sync_in, sync_out)

f, msg = ConfigPulseIMeasureVSweepLog(smu, bias, start, stop, limit, ton, toff, points, buffer, tag, sync_in)

f, msg = ConfigPulseIMeasureVSweepLog(smu, bias, start, stop, limit, ton, toff, points, buffer, tag)

f

A Boolean flag; this flag is true when the pulse was successfully configured, false when errors were encountered

msg

A string message; if the f flag is false, msg contains an error message; if it is true, msg contains a string indicating successful configuration

smu

Instrument channel (for example, smua refers to SMU channel A)

bias

Bias level in amperes

start

Pulse sweep start level in amperes

stop

Pulse sweep stop level in amperes

limit

Voltage limit (for example, compliance) in volts

ton

Pulse on time in seconds

toff

Pulse off time in seconds

points

Number of pulse-measure cycles

buffer

Reading buffer where pulsed measurements are stored; if this is nil when the function is called, no measurements are made when the pulse train is initiated

tag

Numeric identifier to be assigned to the defined pulse train

sync_in

Defines a digital I/O trigger input line; if programmed, the pulse train waits for a trigger input before executing each pulse

sync_out

Defines a digital I/O trigger output line; if programmed, the pulse train generates a trigger output immediately before the start of ton

sync_in_timeout

Specifies the length of time (in seconds) to wait for input trigger; default value is 10 s

sync_in_abort

Specifies whether or not to abort pulse if input trigger is not received; if pulse aborts because of a missed trigger, a timer timeout message is returned; true or false

Details

Data for pulsed voltage measurements are stored in the reading buffer specified by the buffer input parameter.

This function configures a logarithmic pulsed current sweep with a voltage measurement at each point. Measurements are made at the end of the ton time.

The magnitude of the first pulse is start amperes; the magnitude of the last pulse is stop amperes. The magnitude of each pulse in between is LogStepn amperes larger than the previous pulse, where:

LogStepSize = (log10(stop) - log10(start)) / (points -1)

LogStepn = (n - 1) * (LogStepSize), where n = [2, points]

SourceStepLeveln = antilog(LogStepn) * start

This function does not cause the specified smu to output a pulse train. It simply checks to see if all of the pulse dimensions can be achieved, and if they can, assigns the indicated tag or index to the pulse train. To initiate a pulse train assigned to a valid tag, use InitiatePulseTest(tag) and InitiatePulseTestDual(tag1, tag2).

ConfigPulseIMeasureVSweepLog()

Example

ConfigPulseIMeasureVSweepLog(smua, 0, 1e-3, 0.01, 1, 1e-3, 10e-3, 10, smua.nvbuffer1, 5)

Set up a pulsed logarithmic sweep that uses channel A. The pulsed sweep starts at 1 mA, ends at 10 mA, and returns to a 0 A bias level between pulses. Each pulsed step is on for 1 ms, and then at the bias level for 10 ms. The voltage limit is 1 V during the entire pulsed sweep. The pulse train is comprised of 10 pulsed steps, and the pulse train is assigned a tag index of 5.

Also see

InitiatePulseTest()

InitiatePulseTestDual()

KIPulse factory script

ConfigPulseVMeasureI()

This KIPulse factory script function configures a voltage pulse train with a current measurement at each point.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

f, msg = ConfigPulseVMeasureI(smu, bias, level, limit, ton, toff, points, buffer, tag, sync_in, sync_out, sync_in_timeout, sync_in_abort)

f, msg = ConfigPulseVMeasureI(smu, bias, level, limit, ton, toff, points, buffer, tag, sync_in, sync_out, sync_in_timeout)

f, msg = ConfigPulseVMeasureI(smu, bias, level, limit, ton, toff, points, buffer, tag, sync_in, sync_out)

f, msg = ConfigPulseVMeasureI(smu, bias, level, limit, ton, toff, points, buffer, tag, sync_in)

f, msg = ConfigPulseVMeasureI(smu, bias, level, limit, ton, toff, points, buffer, tag)

f

A Boolean flag; this flag is true when the pulse was successfully configured, false when errors were encountered

msg

A string message; if the f flag is false, msg contains an error message; if it is true, msg contains a string indicating successful configuration

smu

Instrument channel (for example, smua refers to SMU channel A)

bias

Bias level in volts

level

Pulse level in volts

limit

Current limit (for example, compliance) in amperes

ton

Pulse on time in seconds

toff

Pulse off time in seconds

points

Number of pulse-measure cycles

buffer

Reading buffer where pulsed measurements are stored; if this is nil when the function is called, no measurements are made when the pulse train is initiated

tag

Numeric identifier to be assigned to the defined pulse train

sync_in

Defines a digital I/O trigger input line; if programmed, the pulse train waits for a trigger input before executing each pulse

sync_out

Defines a digital I/O trigger output line; if programmed, the pulse train generates a trigger output immediately before the start of ton

sync_in_timeout

Specifies the length of time (in seconds) to wait for input trigger; default value is 10 s

sync_in_abort

Specifies whether or not to abort pulse if input trigger is not received; if pulse aborts because of a missed trigger, a timer timeout message is returned; true or false

Details

Data for pulsed current measurements are stored in the reading buffer specified by the buffer input parameter.

This function configures a voltage pulse train with a current measurement at each point. Measurements are made at the end of the ton time.

This function does not cause the specified smu to output a pulse train. It does check to see if all the pulse dimensions can be achieved, and if they can, assigns the indicated tag or index to the pulse train. To initiate a pulse train assigned to a valid tag, use InitiatePulseTest(tag) and InitiatePulseTestDual(tag1, tag2) .

ConfigPulseVMeasureI()

Example 1

ConfigPulseVMeasureI(smua, 0, 20, 1, 0.001, 0.080, 10, smua.nvbuffer1, 2)

Set up a pulse train that uses channel A. The pulse amplitude is 20 V and returns to 0 V after 1 ms. The pulse remains at 0 V for 80 ms, and the current limit is 1 A during the pulse. The pulse train consists of 10 pulses, and the pulse train is assigned a tag index of 2.

Example 2

local timelist = { 1, 2, 3, 4, 5 }

 

f, msg = ConfigPulseVMeasureI(smua, 0, 1,

100e-3, 1, timelist, 5, nil, 1)

Variable off time between pulses in a pulse train.

Configure a pulse with 1 second on-time and variable off-time, no measurement.

Example 3

rbi = smua.makebuffer(10)

rbv = smua.makebuffer(10)

rbi.appendmode = 1

rbv.appendmode = 1

rbs = { i = rbi, v = rbv }

 

f, msg = ConfigPulseVMeasureI(smua, 0, 10, 1e-3, 1e-3, 1e-3, 2, rbs, 1)

Simultaneous IV measurement during pulse.

Also see

InitiatePulseTest()

InitiatePulseTestDual()

KIPulse factory script

ConfigPulseVMeasureISweepLin()

This KIPulse factory script function configures a voltage pulse train with a current measurement at each point.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

f, msg = ConfigPulseVMeasureISweepLin(smu, bias, start, stop, limit, ton, toff, points, buffer, tag, sync_in, sync_out, sync_in_timeout, sync_in_abort)

f, msg = ConfigPulseVMeasureISweepLin(smu, bias, start, stop, limit, ton, toff, points, buffer, tag, sync_in, sync_out, sync_in_timeout)

f, msg = ConfigPulseVMeasureISweepLin(smu, bias, start, stop, limit, ton, toff, points, buffer, tag, sync_in, sync_out)

f, msg = ConfigPulseVMeasureISweepLin(smu, bias, start, stop, limit, ton, toff, points, buffer, tag, sync_in)

f, msg = ConfigPulseVMeasureISweepLin(smu, bias, start, stop, limit, ton, toff, points, buffer, tag)

f

A Boolean flag; this flag is true when the pulse was successfully configured, false when errors were encountered

msg

A string message; if the f flag is false, msg contains an error message; if it is true, msg contains a string indicating successful configuration

smu

Instrument channel (for example, smua refers to SMU channel A)

bias

Bias level in volts

start

Pulse sweep start level in volts

stop

Pulse sweep stop level in volts

limit

Current limit (for example, compliance) in amperes

ton

Pulse on time in seconds

toff

Pulse off time in seconds

points

Number of pulse-measure cycles

buffer

Reading buffer where pulsed measurements are stored; if this is nil when the function is called, no measurements are made when the pulse train is initiated

tag

Numeric identifier to be assigned to the defined pulse train

sync_in

Defines a digital I/O trigger input line; if programmed, the pulse train waits for a trigger input before executing each pulse

sync_out

Defines a digital I/O trigger output line; if programmed, the pulse train generates a trigger output immediately before the start of ton

sync_in_timeout

Specifies the length of time (in seconds) to wait for input trigger; default value is 10 s

sync_in_abort

Specifies whether or not to abort pulse if input trigger is not received; if pulse aborts because of a missed trigger, a timer timeout message is returned; true or false

Details

Data for pulsed current measurements are stored in the reading buffer specified by the buffer input parameter.

This function configures a linear pulsed voltage sweep with a current measurement at each point. Measurements are made at the end of the ton time.

The magnitude of the first pulse is start volts; the magnitude of the last pulse is stop volts. The magnitude of each pulse in between is step volts larger than the previous pulse, where:

step = (stop - start) / (points - 1)

This function does not cause the specified smu to output a pulse train. It does check to see if all the pulse dimensions can be achieved, and if they can, assigns the indicated tag or index to the pulse train.

The InitiatePulseTest(tag) and InitiatePulseTestDual(tag1, tag2) functions are used to initiate a pulse train assigned to a valid tag.

ConfigPulseVMeasureISweepLin()

Example

ConfigPulseVMeasureISweepLin(smua, 0, 1, 10, 1, 10e-3, 20e-3, 16, smua.nvbuffer1, 4)

Set up a pulsed sweep that uses channel A. The pulsed sweep starts at 1 V, ends at 10 V, and returns to a 0 V bias level between pulses. Each pulsed step is on for 10 ms, and then at the bias level for 20 ms.

The current limit is 1 A during the entire pulsed sweep. The pulse train is comprised of 16 pulsed steps, and the pulse train is assigned a tag index of 4.

Also see

InitiatePulseTest()

InitiatePulseTestDual()

KIPulse factory script

ConfigPulseVMeasureISweepLog()

This KIPulse factory script function configures a voltage pulse train with a current measurement at each point.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

f, msg = ConfigPulseVMeasureISweepLog(smu, bias, start, stop, limit, ton, toff, points, buffer, tag, sync_in, sync_out, sync_in_timeout, sync_in_abort)

f, msg = ConfigPulseVMeasureISweepLog(smu, bias, start, stop, limit, ton, toff, points, buffer, tag, sync_in, sync_out, sync_in_timeout)

f, msg = ConfigPulseVMeasureISweepLog(smu, bias, start, stop, limit, ton, toff, points, buffer, tag, sync_in, sync_out)

f, msg = ConfigPulseVMeasureISweepLog(smu, bias, start, stop, limit, ton, toff, points, buffer, tag, sync_in)

f, msg = ConfigPulseVMeasureISweepLog(smu, bias, start, stop, limit, ton, toff, points, buffer, tag)

f

A Boolean flag; this flag is true when the pulse was successfully configured, false when errors were encountered

msg

A string message; if the f flag is false, msg contains an error message; if it is true, msg contains a string indicating successful configuration

smu

Instrument channel (for example, smua refers to SMU channel A)

bias

Bias level in volts

start

Pulse sweep start level in volts

stop

Pulse sweep stop level in volts

limit

Current limit (for example, compliance) in amperes

ton

Pulse on time in seconds

toff

Pulse off time in seconds

points

Number of pulse-measure cycles

buffer

Reading buffer where pulsed measurements are stored; if this is nil when the function is called, no measurements are made when the pulse train is initiated

tag

Numeric identifier to be assigned to the defined pulse train

sync_in

Defines a digital I/O trigger input line; if programmed, the pulse train waits for a trigger input before executing each pulse

sync_out

Defines a digital I/O trigger output line; if programmed, the pulse train generates a trigger output immediately before the start of ton

sync_in_timeout

Specifies the length of time (in seconds) to wait for input trigger; default value is 10 s

sync_in_abort

Specifies whether or not to abort pulse if input trigger is not received; if pulse aborts because of a missed trigger, a timer timeout message is returned; true or false

Details

Data for pulsed current measurements are stored in the reading buffer specified by the buffer input parameter.

This function configures a logarithmic pulsed voltage sweep with a current measurement at each point. Measurements are made at the end of the ton time.

The magnitude of the first pulse is start volts; the magnitude of the last pulse is stop volts. The magnitude of each pulse in between is LogStepn volts larger than the previous pulse, where:

LogStepSize = (log10(stop) - log10(start)) / (points -1)

LogStepn = (n - 1) * (LogStepSize), where n = [2, points]

SourceStepLeveln = antilog(LogStepn) * start

This function does not cause the specified smu to output a pulse train. It does check to see if all the pulse dimensions can be achieved, and if they can, assigns the indicated tag or index to the pulse train. The InitiatePulseTest(tag) and InitiatePulseTestDual(tag1, tag2) functions are used to initiate a pulse train assigned to a valid tag.

ConfigPulseVMeasureISweepLog()

Example

ConfigPulseVMeasureISweepLog(smua, 0, 1, 10, 1, 10e-3, 20e-3, 10, smua.nvbuffer1, 6)

Set up a pulsed logarithmic sweep that uses SMU channel A. The pulsed sweep starts at 1 V, ends at 10 V, and returns to a 0 V bias level between pulses. Each pulsed step is on for 10 ms, and then at the bias level for 20 ms.

The current limit is 1 A during the entire pulsed sweep. The pulse train is comprised of 10 pulsed steps, and the pulse train is assigned a tag index of 6.

Also see

InitiatePulseTest()

KIPulse factory script

dataqueue.add()

This function adds an entry to the data queue.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

result = dataqueue.add(value)

result = dataqueue.add(value, timeout)

result

The resulting value of true or false based on the success of the function

value

The data item to add; value can be of any type

timeout

The maximum number of seconds to wait for space in the data queue

Details

You cannot use the timeout value when accessing the data queue from a remote node. You can only use the timeout value while adding data to the local data queue.

The timeout value is ignored if the data queue is not full.

The dataqueue.add() function returns false:

  • If the timeout expires before space is available in the data queue
  • If the data queue is full and a timeout value is not specified

If the value is a table, a duplicate of the table and any subtables is made. The duplicate table does not contain any references to the original table or to any subtables.

Example

dataqueue.clear()

dataqueue.add(10)

dataqueue.add(11, 2)

result = dataqueue.add(12, 3)

if result == false then

print("Failed to add 12 to the dataqueue")

end

print("The dataqueue contains:")

while dataqueue.count > 0 do

print(dataqueue.next())

end

Clear the data queue.

Each line adds one item to the data queue.

Output:

The dataqueue contains:

10

11

12

Also see

dataqueue.CAPACITY

dataqueue.clear()

dataqueue.count

dataqueue.next()

Using the data queue for real-time communications

dataqueue.CAPACITY

This constant is the maximum number of entries that you can store in the data queue.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Constant

Yes

 

 

 

Usage

count = dataqueue.CAPACITY

count

The variable that is assigned the value of dataqueue.CAPACITY

Details

This constant always returns the maximum number of entries that can be stored in the data queue.

Example

MaxCount = dataqueue.CAPACITY

while dataqueue.count < MaxCount do

dataqueue.add(1)

end

print("There are " .. dataqueue.count .. " items in the data queue")

This example fills the data queue until it is full and prints the number of items in the queue.

Output:

There are 128 items in the data queue

Also see

dataqueue.add()

dataqueue.clear()

dataqueue.count

dataqueue.next()

Using the data queue for real-time communications

dataqueue.clear()

This function clears the data queue.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

dataqueue.clear()

Details

This function forces all dataqueue.add() commands that are in progress to time out and deletes all data from the data queue.

Example

MaxCount = dataqueue.CAPACITY

while dataqueue.count < MaxCount do

dataqueue.add(1)

end

print("There are " .. dataqueue.count

.. " items in the data queue")

dataqueue.clear()

print("There are " .. dataqueue.count

.. " items in the data queue")

This example fills the data queue and prints the number of items in the queue. It then clears the queue and prints the number of items again.

Output:

There are 128 items in the data queue

There are 0 items in the data queue

Also see

dataqueue.add()

dataqueue.CAPACITY

dataqueue.count

dataqueue.next()

Using the data queue for real-time communications

dataqueue.count

This attribute contains the number of items in the data queue.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

Yes

Not applicable

Not applicable

Not applicable

Usage

count = dataqueue.count

count

The number of items in the data queue

Details

The count is updated as entries are added with dataqueue.add() and read from the data queue with dataqueue.next(). It is also updated when the data queue is cleared with dataqueue.clear().

A maximum of dataqueue.CAPACITY items can be stored at any one time in the data queue.

Example

MaxCount = dataqueue.CAPACITY

while dataqueue.count < MaxCount do

dataqueue.add(1)

end

print("There are " .. dataqueue.count

.. " items in the data queue")

dataqueue.clear()

print("There are " .. dataqueue.count

.. " items in the data queue")

This example fills the data queue and prints the number of items in the queue. It then clears the queue and prints the number of items again.

Output:

There are 128 items in the data queue

There are 0 items in the data queue

Also see

dataqueue.add()

dataqueue.CAPACITY

dataqueue.clear()

dataqueue.next()

Using the data queue for real-time communications

dataqueue.next()

This function removes the next entry from the data queue.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

value = dataqueue.next()

value = dataqueue.next(timeout)

value

The next entry in the data queue

timeout

The number of seconds to wait for data in the queue

Details

If the data queue is empty, the function waits up to the timeout value.

If data is not available in the data queue before the timeout expires, the return value is nil.

The entries in the data queue are removed in first-in, first-out (FIFO) order.

If the value is a table, a duplicate of the original table and any subtables is made. The duplicate table does not contain any references to the original table or to any subtables.

Example

dataqueue.clear()

for i = 1, 10 do

dataqueue.add(i)

end

print("There are " .. dataqueue.count .. " items in the data queue")

 

while dataqueue.count > 0 do

x = dataqueue.next()

print(x)

end

print("There are " .. dataqueue.count .. " items in the data queue")

Clears the data queue, adds ten entries, then reads the entries from the data queue. Output:

There are 10 items in the data queue

1

2

3

4

5

6

7

8

9

10

There are 0 items in the data queue

Your output may differ depending on the setting of format.asciiprecision.

Also see

dataqueue.add()

dataqueue.CAPACITY

dataqueue.clear()

dataqueue.count

format.asciiprecision

****Using the data queue for real-time communications

delay()

This function delays the execution of the commands that follow it.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

delay(seconds)

seconds

The number of seconds to delay (0 s to 100,000 s)

Details

The instrument delays execution of the commands for at least the specified number of seconds and fractional seconds. However, the processing time may cause the instrument to delay 5 µs to 10 µs (typical) more than the requested delay.

Example

beeper.beep(0.5, 2400)

delay(0.250)

beeper.beep(0.5, 2400)

Emit a double‑beep at 2400 Hz. The sequence is 0.5 s on, 0.25 s off, 0.5 s on.

Also see

None

digio.readbit()

This function reads one digital I/O line. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

data = digio.readbit(N)

data

The value to read: 1 or 0

N

Digital I/O line number to be read: 1 to ***Set DigioLines variable***

Details

A returned value of zero (0) indicates that the line is low. A returned value of one (1) indicates that the line is high.

Example

--Read the value of digital I/O line 2

local value = digio.readbit(2)

print("The value of line 2 is: " .. value)

Reads the state of digital I/O line 2.

Output:

2.00<expNote+00

Also see

digio.readport()

digio.writebit()

digio.writeport()

Digital I/O port

digio.readport()

This function reads the digital I/O port. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

data = digio.readport()

data

The present value of the input lines on the digital I/O port

Details

The binary equivalent of the returned value indicates the value of the input lines on the I/O port. The least significant bit (bit B1) of the binary number corresponds to line 1; bit B14 corresponds to line 14.

For example, a returned value of 170 has a binary equivalent of 000000010101010, which indicates that lines 2, 4, 6, and 8 are high (1), and the other 10 lines are low (0).

Example

data = digio.readport()

print(data)

Assume lines 2, 4, 6, and 8 are set high when the I/O port is read.

Output:

1.70000e+02

This is binary 10101010.

Also see

digio.readbit()

digio.writebit()

digio.writeport()

Digital I/O port

digio.trigger[N].assert()

This function asserts a trigger pulse on one of the digital I/O lines. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

digio.trigger[N].assert()

N

Digital I/O trigger line: 1 to ***Set DigioLines variable***

Details

The pulse width that is set determines how long the instrument asserts the trigger.

Example 1

digio.trigger[2].assert()

Asserts digital I/O trigger line 2.

Example 2

digio.trigger[2].logic = digio.LOGIC_NEGATIVE

digio.trigger[2].mode = digio.MODE_TRIGGER_OUT

digio.trigger[2].pulsewidth = 0

digio.trigger[2].assert()

digio.trigger[2].release()

Negative trigger out.

Example 3

digio.trigger[2].logic = digio.LOGIC_POSITIVE

digio.trigger[2].mode = digio.MODE_TRIGGER_OUT

digio.trigger[2].pulsewidth = 10e-6

digio.trigger[2].assert()}}

Positive trigger out.

Also see

digio.trigger[N].pulsewidth

digio.trigger[N].clear()

This function clears the trigger event on a digital I/O line. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

digio.trigger[N].clear()

N

Digital I/O trigger line: 1 to ***Set DigioLines variable***

Details

The event detector of a trigger enters the detected state when an event is detected. It is cleared when digio.trigger[N].wait() or digio.trigger[N].clear() is called.

digio.trigger[N].clear() clears the event detector of the specified trigger line, discards the history of the trigger line, and clears the digio.trigger[N].overrun attribute.

Example

digio.trigger[2].clear()

Clears the trigger event detector on I/O line 2.

Also see

digio.trigger[N].overrun

digio.trigger[N].wait()

digio.trigger[N].EVENT_ID

This constant identifies the trigger event generated by the digital I/O line N. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Constant

Yes

 

 

 

Usage

eventID = digio.trigger[N].EVENT_ID

eventID

The trigger event number

N

Digital I/O trigger line: 1 to ***Set DigioLines variable***

Details

To have another trigger object respond to trigger events generated by the trigger line, set the stimulus attribute of the other object to the value of this constant.

Example

digio.trigger[5].stimulus = digio.trigger[3].EVENT_ID

Uses a trigger event on digital I/O trigger line 3 to be the stimulus for digital I/O trigger line 5.

Also see

None

digio.trigger[N].mode

This attribute sets the mode in which the trigger event detector and the output trigger generator operate on the given trigger line. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Instrument reset
Digital I/O trigger N reset
Recall setup

Not saved

0 (digio.TRIG_BYPASS)

Usage

triggerMode = digio.trigger[N].mode

digio.trigger[N].mode = triggerMode

triggerMode

The trigger mode; see Details for values

N

Digital I/O trigger line: 1 to 14

Details

Set triggerMode to one of the values in the following table.

Trigger mode values

triggerMode

Description

digio.TRIG_BYPASS or 0

Allows direct control of the line.

digio.TRIG_FALLING or 1

Detects falling‑edge triggers as input; asserts a TTL-low pulse for output.

digio.TRIG_RISING or 2

If the programmed state of the line is high, the digio.TRIG_RISING mode behavior is similar to digio.TRIG_RISINGA. If the programmed state of the line is low, the digio.TRIG_RISING mode behavior is similar to digio.TRIG_RISINGM. Only use this setting if necessary for compatibility with other Keithley products.

digio.TRIG_EITHER or 3

Detects rising- or falling‑edge triggers as input. Asserts a TTL‑low pulse for output.

digio.TRIG_SYNCHRONOUSA or 4

Detects the falling‑edge input triggers and automatically latches and drives the trigger line low. Asserting the output trigger releases the latched line.

digio.TRIG_SYNCHRONOUS or 5

Detects the falling‑edge input triggers and automatically latches and drives the trigger line low. Asserts a TTL‑low pulse as an output trigger.

digio.TRIG_SYNCHRONOUSM or 6

Detects rising‑edge triggers as input. Asserts a TTL‑low pulse for output.

digio.TRIG_RISINGA or 7

Detects rising‑edge triggers as input. Asserts a TTL‑low pulse for output.

digio.TRIG_RISINGM or 8

Asserts a TTL-high pulse for output. Input edge detection is not possible in this mode.

When programmed to any mode except digio.TRIG_BYPASS, the output state of the I/O line is controlled by the trigger logic and the user‑specified output state of the line is ignored.

Use of either digio.TRIG_SYNCHRONOUSA or digio.TRIG_SYNCHRONOUSM is preferred over digio.TRIG_SYNCHRONOUS. digio.TRIG_SYNCHRONOUS is provided for compatibility with the digital I/O and TSP-Link triggering on older firmware.

To control the line state, set the mode to digio.TRIG_BYPASS and use the digio.writebit() and digio.writeport() commands.

Example

digio.trigger[4].mode = 2

Sets the trigger mode for I/O line 4 to digio.TRIG_RISING.

Also see

digio.trigger[N].clear()

digio.trigger[N].reset()

digio.writebit()

digio.writeport()

Sweep operation

digio.trigger[N].overrun

This attribute returns the event detector overrun status. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

Yes

Instrument reset
Digital I/O trigger N clear
Digital I/O trigger N reset
Recall setup

Not saved

Not applicable

Usage

overrun = digio.trigger[N].overrun

overrun

Trigger overrun state: true or false

N

Digital I/O trigger line: 1 to 14

Details

If this is true, an event was ignored because the event detector was already in the detected state when the event occurred.

This is an indication of the state of the event detector built into the line itself. It does not indicate if an overrun occurred in any other part of the trigger model or in any other detector that is monitoring the event.

Example

overrun = digio.trigger[1].overrun

print(overrun)

If there is no trigger overrun, the following text is output:

false

Also see

digio.trigger[N].clear()

digio.trigger[N].reset()

digio.trigger[N].pulsewidth

This attribute describes the length of time that the trigger line is asserted for output triggers. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Instrument reset
Digital I/O trigger N reset
Recall setup

Not saved

10e-6 (10 µs)

Usage

width = digio.trigger[N].pulsewidth

digio.trigger[N].pulsewidth = width

width

The pulse width in seconds

N

Digital I/O trigger line: 1 to 14

Details

Setting the pulse width to zero (0) seconds asserts the trigger indefinitely. To release the trigger line, use digio.trigger[N].release().

Example

digio.trigger[4].pulsewidth = 20e-6

Sets the pulse width for trigger line 4 to 20 µs.

Also see

digio.trigger[N].assert()

digio.trigger[N].release()

digio.trigger[N].reset()

digio.trigger[N].release()

This function releases an indefinite length or latched trigger. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

digio.trigger[N].release()

N

Digital I/O trigger line: 1 to 14

Details

Releases a trigger that was asserted with an indefinite pulsewidth time. It also releases a trigger that was latched in response to receiving a synchronous mode trigger. Only the specified trigger line is affected.

Example

digio.trigger[4].release()

Releases digital I/O trigger line 4.

Also see

digio.trigger[N].assert()

digio.trigger[N].pulsewidth

digio.trigger[N].reset()

This function resets trigger values to their factory defaults. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

digio.trigger[N].reset()

N

Digital I/O trigger line: 1 to 14

Details

This function resets the following attributes to factory default settings:

  • digio.trigger[N].mode
  • digio.trigger[N].pulsewidth
  • digio.trigger[N].stimulus

It also clears digio.trigger[N].overrun.

Example

digio.trigger[3].mode = 2

digio.trigger[3].pulsewidth = 50e-6

digio.trigger[3].stimulus = digio.trigger[5].EVENT_ID

print(digio.trigger[3].mode, digio.trigger[3].pulsewidth, digio.trigger[3].stimulus)

digio.trigger[3].reset()

print(digio.trigger[3].mode, digio.trigger[3].pulsewidth, digio.trigger[3].stimulus)

Set the digital I/O trigger line 3 for a falling edge with a pulsewidth of 50 µs.

Use digital I/O line 5 to trigger the event on line 3.

Reset the line to factory default values.

Output before reset:

2.00000e+00 5.00000e-05 5.00000e+00

Output after reset:

0.00000e+00 1.00000e-05 0.00000e+00

Also see

digio.trigger[N].mode

digio.trigger[N].overrun

digio.trigger[N].pulsewidth

digio.trigger[N].stimulus

digio.trigger[N].stimulus

This attribute selects the event that causes a trigger to be asserted on the digital output line. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Instrument reset
Digital I/O trigger N reset
Recall setup

Not saved

0

Usage

triggerStimulus = digio.trigger[N].stimulus

digio.trigger[N].stimulus = triggerStimulus

triggerStimulus

The event identifier for the triggering event

N

Digital I/O trigger line (1 to 14)

Details

Set this attribute to zero (0) to disable the automatic trigger output.

Do not use this attribute to generate output triggers under script control. Use digio.trigger[N].assert() instead.

The trigger stimulus for a digital I/O line may be set to one of the existing trigger event IDs described in the following table.

Trigger event IDs*

Event ID

Event description

smuX.trigger.SWEEPING_EVENT_ID

Occurs when the source‑measure unit (SMU) transitions from the idle state to the arm layer of the trigger model

smuX.trigger.ARMED_EVENT_ID

Occurs when the SMU moves from the arm layer to the trigger layer of the trigger model

smuX.trigger.SOURCE_COMPLETE_EVENT_ID

Occurs when the SMU completes a source action

smuX.trigger.MEASURE_COMPLETE_EVENT_ID

Occurs when the SMU completes a measurement action

smuX.trigger.PULSE_COMPLETE_EVENT_ID

Occurs when the SMU completes a pulse

smuX.trigger.SWEEP_COMPLETE_EVENT_ID

Occurs when the SMU completes a sweep

smuX.trigger.IDLE_EVENT_ID

Occurs when the SMU returns to the idle state

digio.trigger[N].EVENT_ID

Occurs when an edge is detected on a digital I/O line

tsplink.trigger[N].EVENT_ID

Occurs when an edge is detected on a TSP‑Link line

lan.trigger[N].EVENT_ID

Occurs when the appropriate LXI trigger packet is received on LAN trigger object N

display.trigger.EVENT_ID

Occurs when the TRIG key on the front panel is pressed

trigger.EVENT_ID

Occurs when a *TRG command is received on the remote interface

GPIB only: Occurs when a GET bus command is received

USB only: Occurs when a USBTMC TRIGGER message is received

VXI-11 only: Occurs with the VXI-11 command device_trigger; reference the VXI-11 standard for additional details on the device trigger operation

trigger.blender[N].EVENT_ID

Occurs after a collection of events is detected

trigger.timer[N].EVENT_ID

Occurs when a delay expires

trigger.generator[N].EVENT_ID

Occurs when the trigger.generator[N].assert() function is executed

 

 

* Use the name of the trigger event ID to set the stimulus value rather than the numeric value. Using the name makes the code compatible for future upgrades (for example, if the numeric values must change when enhancements are added to the instrument).

Example 1

digio.trigger[3].stimulus = 0

Clear the trigger stimulus of digital I/O line 3.

Example 2

digio.trigger[3].stimulus = smua.trigger.SOURCE_COMPLETE_EVENT_ID

Set the trigger stimulus of digital I/O line 3 to be the source complete event.

Also see

digio.trigger[N].assert()

digio.trigger[N].clear()

digio.trigger[N].reset()

digio.trigger[N].wait()

This function waits for a trigger. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

triggered = digio.trigger[N].wait(timeout)

triggered

The value is true if a trigger is detected, or false if no triggers are detected during the timeout period

N

Digital I/O trigger line: 1 to 14

timeout

Timeout in seconds

Details

This function pauses trigger operation up to the seconds set by timeout for an input trigger. If one or more trigger events are detected since the last time digio.trigger[N].wait() or digio.trigger[N].clear() was called, this function returns a value immediately. After waiting for a trigger with this function, the event detector is automatically reset and ready to detect the next trigger. This is true regardless of the number of events detected.

Example

triggered = digio.trigger[4].wait(3)

print(triggered)

Waits up to three seconds for a trigger to be detected on trigger line 4, then outputs the results.

Output if no trigger is detected:

false

Output if a trigger is detected:

true

Also see

digio.trigger[N].clear()

digio.writebit()

This function sets a digital I/O line high or low. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

digio.writebit(N, data)

N

Digital I/O trigger line: 1 to ***Set DigioLines variable***

data

The value to write to the bit:

  • 0 (low)
  • Non‑zero (high)

Details

If the output line is write‑protected using the digio.writeprotect attribute, the command is ignored.

The reset() function does not affect the present state of the digital I/O lines.

Use the digio.writebit() and digio.writeport() commands to control the output state of the synchronization line when trigger operation is set to digio.TRIG_BYPASS.

The data must be zero (0) to clear the bit. Any value other than zero (0) sets the bit.

Example

digio.writebit(4, 0)

Sets digital I/O line 4 low (0).

Also see

digio.readbit()

digio.readport()

digio.trigger[N].mode

digio.writeport()

digio.writeprotect

digio.writeport()

This function writes to all digital I/O lines. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

digio.writeport(data)

data

Value to write to the port: 0 to 16383

Details

The binary representation of data indicates the output pattern to be written to the I/O port. For example, a data value of 170 has a binary equivalent of 00000010101010. Lines 2, 4, 6, and 8 are set high (1), and the other 10 lines are set low (0).

Write‑protected lines are not changed.

The reset() function does not affect the present states of the digital I/O lines.

Use the digio.writebit() and digio.writeport() commands to control the output state of the synchronization line when trigger operation is set to digio.TRIG_BYPASS.

Example

digio.writeport(255)

Sets digital I/O Lines 1 through 8 high (binary 00000011111111).

Also see

digio.readbit()

digio.readport()

digio.writebit()

digio.writeprotect

digio.writeprotect

This attribute contains the write‑protect mask that protects bits from changes from the digio.writebit() and digio.writeport() functions. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Instrument reset
Recall setup

Saved setup

0

Usage

mask = digio.writeprotect

digio.writeprotect = mask

mask

The value that specifies the bit pattern for write‑protect mask

Details

Bits that are set to one cause the corresponding line to be write‑protected.

The binary equivalent of mask indicates the mask to be set for the I/O port. For example, a mask value of 7 has a binary equivalent of 00000000000111. This mask write‑protects lines 1, 2, and 3.

Example

digio.writeprotect = 15

Write‑protects lines 1, 2, 3, and 4.

Also see

digio.writebit()

digio.writeport()

display.clear()

This function clears all lines of the front‑panel display.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

display.clear()

Details

This function switches to the user screen and then clears the front‑panel display.

The display.clear(), display.setcursor(), and display.settext() functions are overlapped commands. That is, the script does not wait for one of these commands to complete. These functions do not immediately update the display. For performance considerations, they update the display as soon as processing time becomes available.

Also see

display.setcursor()

display.settext()

display.getannunciators()

This function reads the annunciators (indicators) that are presently turned on.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

annunciators = display.getannunciators()

annunciators

The bitmasked value that shows which indicators are turned on

Details

This function returns a bitmasked value showing which indicators are turned on. The 16‑bit binary equivalent of the returned value is the bitmask. The return value is a sum of set annunciators, based on the weighted value, as shown in the following table.

Annunciator (indicator) bitmasked values and equivalent constants

Indicator

Bit

Weighted value

Equivalent constant

FILT

1

1

display.ANNUNCIATOR_FILTER

MATH

2

2

display.ANNUNCIATOR_MATH

4W

3

4

display.ANNUNCIATOR_4_WIRE

AUTO

4

8

display.ANNUNCIATOR_AUTO

ARM

5

16

display.ANNUNCIATOR_ARM

TRIG

6

32

display.ANNUNCIATOR_TRIGGER

* (asterisk)

7

64

display.ANNUNCIATOR_STAR

SMPL

8

128

display.ANNUNCIATOR_SAMPLE

EDIT

9

256

display.ANNUNCIATOR_EDIT

ERR

10

512

display.ANNUNCIATOR_ERROR

REM

11

1024

display.ANNUNCIATOR_REMOTE

TALK

12

2048

display.ANNUNCIATOR_TALK

LSTN

13

4096

display.ANNUNCIATOR_LISTEN

SRQ

14

8192

display.ANNUNCIATOR_SRQ

REAR

15

16384

display.ANNUNCIATOR_REAR

REL

16

32768

display.ANNUNCIATOR_REL

Example 1

testAnnunciators = display.getannunciators()

print(testAnnunciators)

 

rem = bit.bitand(testAnnunciators, 1024)

if rem > 0 then

print("REM is on")

else

print("REM is off")

end

REM indicator is turned on.

Output:

1.28000e+03

REM is on

Example 2

print(display.ANNUNCIATOR_EDIT)

print(display.ANNUNCIATOR_TRIGGER)

print(display.ANNUNCIATOR_AUTO)

Output:

2.56000e+02

3.20000e+01

8.00000e+00

Also see

bit.bitand()

display.getcursor()

This function reads the present position of the cursor on the front‑panel display.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

row, column, style = display.getcursor()

row

The row where the cursor is: 1 (top row); 2 (bottom row)

column

The column where the cursor is:

  • If the cursor is in the top row: 1 to 20
  • If the cursor is in the bottom row: 1 to 32

style

Visibility of the cursor:

  • Invisible: 0
  • Blinking: 1

Details

This function switches the front‑panel display to the user screen (the text set by display.settext()), and then returns values to indicate the row that contains the cursor and the column position and cursor style.

Columns are numbered from left to right on the display.

Example 1

testRow, testColumn = display.getcursor()

print(testRow, testColumn)

This example reads the cursor position into local variables and prints them.

Example output:

1.00000e+00 1.00000e+00

Example 2

print(display.getcursor())

This example prints the cursor position directly. In this example, the cursor is in row 1 at column 3, with an invisible cursor:

1.00000e+00 3.00000e+00 0.00000e+00

Also see

display.gettext()

display.screen

display.setcursor()

display.settext()

display.getlastkey()

This function retrieves the key code for the last pressed key.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

keyCode = display.getlastkey()

keyCode

A returned value that represents the last front-panel key pressed; see Details for more information

Details

A history of the key code for the last pressed front‑panel key is maintained by the instrument. When the instrument is turned on, or when it is transitioning from local to remote operation, the key code is set to 0 (display.KEY_NONE).

Pressing the EXIT (LOCAL) key normally aborts a script. To use this function with the EXIT (LOCAL) key, you must set display.locallockout to display.LOCK.

The table below lists the keyCode value for each front‑panel action.

Key codes

Value

Key list

 

Value

Key list

0

display.KEY_NONE

 

82

display.KEY_ENTER

65

display.KEY_RANGEUP

 

83

display.KEY_MEASB

66

display.KEY_MODEB

 

84

display.DIGITSB

67

display.KEY_RELB

 

85

display.KEY_RECALL

68

display.KEY_MENU

 

86

display.KEY_MEASA

69

display.KEY_MODEA

 

87

display.KEY_DIGITSA

70

display.KEY_RELA

 

90

display.KEY_LIMITB

71

display.KEY_RUN

 

91

display.KEY_SPEEDB

72

display.KEY_DISPLAY

 

92

display.KEY_TRIG

73

display.KEY_AUTO

 

93

display.KEY_LIMITA

74

display.KEY_FILTERB

 

94

display.KEY_SPEEDA

75

display.KEY_EXIT

 

95

display.KEY_LOAD

76

display.KEY_SRCB

 

97

display.WHEEL_ENTER

77

display.KEY_FILTERA

 

103

display.KEY_RIGHT

78

display.KEY_STORE

 

104

display.KEY_LEFT

79

display.KEY_SRCA

 

107

display.WHEEL_LEFT

80

display.KEY_CONFIG

 

114

display.WHEEL_RIGHT

81

display.KEY_RANGEDOWN

 

 

 

VARIABLE - NOTE When using this function, use built-in constants such as display.KEY_RIGHT (rather than the numeric value of 103). This allows for better forward compatibility with firmware revisions.

You cannot use this function to track the OUTPUT ON/OFF controls for SMU A or SMU B.

Example

key = display.getlastkey()

print(key)

On the front panel, press the MENU key and then send the code shown here. This retrieves the key code for the last pressed key.

Output:

6.80000e+01

Also see

display.locallockout

display.sendkey()

display.gettext()

This function reads the text displayed on the front panel.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

text = display.gettext()

text = display.gettext(embellished)

text = display.gettext(embellished, row)

text = display.gettext(embellished, row, columnStart)

text = display.gettext(embellished, row, columnStart, columnEnd)

text

The returned value, which contains the text that is presently displayed

embellished

Indicates type of returned text: false (simple text); true (text with embedded character codes)

row

Selects the row from which to read the text: 1 (row 1); 2 (row 2). If row is not included, both rows of text are read

columnStart

Selects the first column from which to read text; for row 1, the valid column numbers are 1 to 20; for row 2, the valid column numbers are 1 to 32; if nothing is selected, 1 is used

columnEnd

Selects the last column from which to read text; for row 1, the valid column numbers are 1 to 20; for row 2, the valid column numbers are 1 to 32; the default is 20 for row 1, and 32 for row 2

Details

Using the command without any parameters returns both lines of the front‑panel display.

The $N character code is included in the returned value to show where the top line ends and the bottom line begins. This is not affected by the value of embellished.

When embellished is set to true, all other character codes are returned along with the message. When embellished is set to false, only the message and the $N character code is returned. For information on the embedded character codes, see display.settext().

The display is not switched to the user screen (the screen set using display.settext()). Text is read from the active screen.

Example 1

display.clear()

display.setcursor(1, 1)

display.settext("ABCDEFGHIJ$DKLMNOPQRST")

display.setcursor(2, 1)

display.settext("abcdefghijklm$Bnopqrstuvwxyz$F123456")

print(display.gettext())

print(display.gettext(true))

print(display.gettext(false, 2))

print(display.gettext(true, 2, 9))

print(display.gettext(false, 2, 9, 10))

This example shows how to retrieve the display text in multiple ways. The output is:

 

ABCDEFGHIJKLMNOPQRST$Nabcdefghijklmnopqrstuvwxyz123456

$RABCDEFGHIJ$DKLMNOPQRST$N$Rabcdefghijklm$Bnopqrstuvwxyz$F123456

abcdefghijklmnopqrstuvwxyz123456

$Rijklm$Bnopqrstuvwxyz$F123456

ij

Example 2

display.clear()

display.settext("User Screen")

text = display.gettext()

print(text)

This outputs all text in both lines of the display:

User Screen $N

This indicates that the message “User Screen” is on the top line. The bottom line is blank.

Also see

display.clear()

display.getcursor()

display.setcursor()

display.settext()

display.inputvalue()

This function displays a formatted input field on the front‑panel display that the operator can edit.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

display.inputvalue("format")

display.inputvalue("format", default)

display.inputvalue("format", default, minimum)

display.inputvalue("format", default, minimum, maximum)

format

A string that defines how the input field is formatted; see Details for more information

default

The default value for the input value

minimum

The minimum input value

maximum

The maximum input value

Details

The format parameter uses zeros (0), the decimal point, polarity sign, and exponents to define how the input field is formatted. The format parameter can include the options shown in the following table.

Option

Description

Examples

E

Include the E to display the value exponentially

0.00000e+0

+

Allows operators to enter positive or negative values; if the "+" sign is not included, the operator cannot enter a negative value

+0.00

0

Defines the digit positions for the value; up to six zeros (0)

+00.0000e+00

.

Include to have a decimal point appear in the value

+0.00

The default parameter is the value shown when the value is first displayed.

You can use the minimum and maximum parameters to limit the values that can be entered. When + is not selected for format, the minimum limit must be more than or equal to zero (0). When limits are used, you cannot enter values above or below these limits.

The input value is limited to ±1e37.

Before calling display.inputvalue(), you should send a message prompt to the operator using display.prompt(). Make sure to position the cursor where the edit field should appear.

After this command is sent, script execution pauses until a user enters a value and presses the ENTER key.

For positive and negative entry (plus sign (+) used for the value field and the exponent field), polarity of a nonzero value or exponent can be toggled by positioning the cursor on the polarity sign and turning the navigation wheel. Polarity is also toggled when using the navigation wheel to decrease or increase the value or exponent past zero. A zero (0) value or exponent (for example, +00) is always positive and cannot be toggled to negative polarity.

After executing this command and pressing the EXIT (LOCAL) key, the function returns nil.

Example

display.clear()

display.settext("Enter value between$N -0.10 and 2.00: ")

value = display.inputvalue("+0.00", 0.5, -0.1, 2.0)

print("Value entered = ", value)

Displays an editable field (+0.50) for operator input. The valid input range is -0.10 to +2.00, with a default of 0.50.

Output:

Value entered = 1.35000e+00

Also see

display.prompt()

display.setcursor()

display.settext()

display.loadmenu.add()

This function adds an entry to the USER menu, which can be accessed by pressing the LOAD key on the front panel.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

display.loadmenu.add("displayName", "code")

display.loadmenu.add("displayName", "code", memory)

displayName

The name that is added to the USER menu

code

The code that is run from the USER menu

memory

Determines if code is saved to nonvolatile memory:

  • Does not save the code to nonvolatile memory: 0 or display.DONT_SAVE
  • Saves the code to nonvolatile memory (default): 1 or display.SAVE

Details

After adding code to the load menu, you can run it from the front panel by pressing the LOAD key, then selecting USER to select from the available code to load. Pressing the RUN key then runs the script.

You can add items in any order. They are always displayed in alphabetical order when the menu is selected.

Any Lua code can be included in the code parameter. If memory is set to display.SAVE, the entry (name and code) is saved in nonvolatile memory. Scripts, functions, and variables used in the code are not saved by display.SAVE. Functions and variables need to be saved with the code. If the code is not saved in nonvolatile memory, it is lost when the 2600B is turned off. See Example 2 below.

If you do not make a selection for memory, the code is automatically saved to nonvolatile memory.

VARIABLE - NOTE You can create a script that defines several functions, and then use the display.loadmenu.add() command to add items that call those individual functions. This allows the operator to run tests from the front panel.

Example 1

display.loadmenu.add("Test9", "Test9()")

Assume a user script named Test9 is loaded into the runtime environment. Adds the menu entry to the USER menu to run the script after loading.

Example 2

display.loadmenu.add("Test", "DUT1() beeper.beep(2, 500)", display.SAVE)

Assume a script with a function named DUT1 is loaded into the instrument and the script has not been saved in nonvolatile memory.

Now assume you want to add a test named Test to the USER menu. You want the test to run the function named DUT1 and sound the beeper. This example adds Test to the menu, defines the code, and then saves the displayName and code in nonvolatile memory.

When Test is run from the front‑panel USER menu, the function named DUT1 executes and the beeper beeps for two seconds.

Now assume you turn off instrument power. Because the script was not saved in nonvolatile memory, the function named DUT1 is lost when you turn the instrument on. When Test is run again from the front panel, an error is generated because DUT1 no longer exists in the instrument as a function.

Example 3

display.loadmenu.add("Part1", "testpart([[Part1]], 5.0)", display.SAVE)

Adds an entry called Part1 to the front‑panel USER load menu for the code testpart([[Part1]], 5.0) and saves it in nonvolatile memory.

Also see

display.loadmenu.delete()

display.loadmenu.catalog()

This function creates an iterator for the user menu items accessed using the LOAD key on the front panel.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

for displayName in display.loadmenu.catalog() do body end

for displayName, code in display.loadmenu.catalog() do body end

displayName

The name displayed in the menu

code

The code associated with the displayName

body

The body of the code to process the entries in the loop

Details

Each time through the loop, displayName and code take on the values in the USER menu.

The instrument goes through the list in random order.

Example

for displayName, code in display.loadmenu.catalog() do

print(displayName, code)

end

Output:

Test DUT1() beeper.beep(2, 500)

Part1 testpart([[Part1]], 5.0)

Test9 Test9()

Also see

display.loadmenu.add()

display.loadmenu.delete()

display.loadmenu.delete()

This function removes an entry from the USER menu, which can be accessed using the LOAD key on the front panel.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

display.loadmenu.delete("displayName")

displayName

The name of the entry to be deleted from the USER menu

Details

If you delete an entry from the USER menu, you can no longer run it by pressing the LOAD key.

Example

display.loadmenu.delete("Test9")

for displayName, code in display.loadmenu.catalog() do

print(displayName, code)

end

Deletes the entry named Test9.

Output:

Test DUT1() beeper.beep(2, 500)

Part1 testpart([[Part1]], 5.0)

Also see

display.loadmenu.add()

display.loadmenu.catalog()

display.locallockout

This attribute describes whether or not the EXIT (LOCAL) key on the instrument front panel is enabled.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Power cycle

Not saved

0 (display.UNLOCK)

Usage

lockout = display.locallockout

display.locallockout = lockout

lockout

Unlocks EXIT (LOCAL) key: 0 or display.UNLOCK

Locks out EXIT (LOCAL) key: 1 or display.LOCK

Details

Set display.locallockout to display.LOCK to prevent the user from interrupting remote operation by pressing the EXIT (LOCAL) key.

Set this attribute to display.UNLOCK to allow the EXIT (LOCAL) key to interrupt script or remote operation.

Example

display.locallockout = display.LOCK

Disables the front‑panel EXIT (LOCAL) key.

Also see

None

display.menu()

This function presents a menu on the front‑panel display.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

selection = display.menu("name", "items")

selection

Name of the variable that holds the selected menu item

name

Menu name to display on the top line

items

Menu items to display on the bottom line

Details

The menu consists of the menu name string on the top line and a selectable list of items on the bottom line. The menu items must be a single string with each item separated by whitespace. The name for the top line is limited to 20 characters.

After sending this command, script execution pauses for the operator to select a menu item. An item is selected by rotating the navigation wheel to place the blinking cursor on the item, and then pressing the navigation wheel (or the ENTER key). When an item is selected, the text of that selection is returned.

Pressing the EXIT (LOCAL) key does not abort the script while the menu is displayed, but it does return nil. The script can be aborted by calling the exit function when nil is returned.

Example

selection = display.menu("Menu", "Test1 Test2 Test3")

print(selection)

Displays a menu with three menu items. If the second menu item is selected, selection is given the value Test2.

Output:

Test2

Also see

None

display.numpad

This attribute controls whether the front panel keys act as a numeric keypad during value entry.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Instrument reset
Recall setup

Saved setup

1 (display.ENABLE)

Usage

numericKeypad = display.numpad

display.numpad = numericKeypad

numericKeypad

Enable the numeric keypad feature (1 or display.ENABLE)

Disable the numeric keypad feature (0 or display.DISABLE)

Details

The numeric keypad feature is only available when editing a numeric value at the same time that the EDIT indicator is lit.

Example

display.numpad = display.ENABLE

Turn on the numeric keypad feature.

Also see

“Setting a value” in the 2600B User's Manual

display.prompt()

This function prompts the user to enter a parameter from the front panel of the instrument.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

display.prompt("format", "units", "help")

display.prompt("format", "units", "help", default)

display.prompt("format", "units", "help", default, minimum)

display.prompt("format", "units", "help", default, minimum, maximum)

format

A string that defines how the input field is formatted; see Details for more information

units

Set the units text string for the top line (eight characters maximum); this indicates the units (for example, "V" or "A") for the value

help

Text string to display on the bottom line (32 characters maximum)

default

The value that is shown when the value is first displayed

minimum

The minimum input value that can be entered

maximum

The maximum input value that can be entered (must be more than minimum)

Details

This function creates an editable input field at the present cursor position, and an input prompt message on the bottom line. Example of a displayed input field and prompt:

0.00V

Input 0 to +2V

The format parameter uses zeros (0), the decimal point, polarity sign, and exponents to define how the input field is formatted.

The format parameter can include the options shown in the following table.

Option

Description

Examples

E

Include the E to display the value exponentially. Include a plus sign (+) for positive/negative exponent entry. Do not include the plus sign (+) to prevent negative value entry. 0 defines the digit positions for the exponent.

 

0.00000E+0

+

Allows operators to enter positive or negative values. If the plus sign (+) is not included, the operator cannot enter a negative value.

+0.00

0

Defines the digit positions for the value. You can use up to six zeros (0).

+00.0000E+00

.

The decimal point where needed for the value.

+0.00

You can use the minimum and maximum parameters to limit the values that can be entered. When a plus sign (+) is not selected for format, the minimum limit must be greater than or equal to zero (0). When limits are used, the operator cannot enter values above or below these limits.

The input value is limited to ±1e37.

After sending this command, script execution pauses for the operator to enter a value and press ENTER.

For positive and negative entry (plus sign (+) used for the value field and the exponent field), polarity of a nonzero value or exponent can be toggled by positioning the cursor on the polarity sign and turning the navigation wheel. Polarity also toggles when using the navigation wheel to decrease or increase the value or exponent past zero. A zero value or exponent (for example, +00) is always positive and cannot be toggled to negative polarity.

After executing this command and pressing the EXIT (LOCAL) key, the value returns nil.

Example

value = display.prompt("0.00", "V", "Input 0 to +2V", 0.5, 0, 2)

print(value)

The above command prompts the operator to enter a voltage value. The valid input range is 0 to +2.00, with a default of 0.50:

0.50V

Input 0 to +2V

If the operator enters 0.70, the output is:

7.00000e-01

Also see

display.inputvalue()

display.screen

This attribute contains the selected display screen.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Instrument reset
Recall setup

Saved setup

Models 2601B/2611B/2635B:
0 (display.SMUA)

Models 2602B/2604B/2612B/2614B/2634B/2636B:
2 (display.SMUA_SMUB)

Usage

displayID = display.screen

display.screen = displayID

displayID

One of the following values:

  • 0 or display.SMUA: Displays source-measure and compliance for SMU A
  • 1 or display.SMUB: Displays source-measure and compliance for SMU B
  • 2 or display.SMUA_SMUB: Displays source-measure for SMU A and SMU B
  • 3 or display.USER: Displays the user screen

Details

Setting this attribute selects the display screen for the front panel. This performs the same action as pressing the DISPLAY key on the front panel. The text for the display screen is set by display.settext().

Read this attribute to determine which of the available display screens was last selected.

Example

display.screen = display.SMUA

Selects the source-measure and compliance limit display for SMU A.

Also see

display.settext()

display.sendkey()

This function sends a code that simulates the action of a front‑panel control.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

display.sendkey(keyCode)

keyCode

A parameter that specifies the key press to simulate; see Details for more information

Details

This command simulates pressing a front‑panel key or navigation wheel or turning the navigation wheel one click to the left or right.

Key codes

Value

Key list

 

Value

Key list

65

display.KEY_RANGEUP

 

83

display.KEY_MEASB

66

display.KEY_MODEB

 

84

display.KEY_DIGITSB

67

display.KEY_RELB

 

85

display.KEY_RECALL

68

display.KEY_MENU

 

86

display.KEY_MEASA

69

display.KEY_MODEA

 

87

display.KEY_DIGITSA

70

display.KEY_RELA

 

88

display.KEY_OUTPUTA

71

display.KEY_RUN

 

90

display.KEY_LIMITB

72

display.KEY_DISPLAY

 

91

display.KEY_SPEEDB

73

display.KEY_AUTO

 

92

display.KEY_TRIG

74

display.KEY_FILTERB

 

93

display.KEY_LIMITA

75

display.KEY_EXIT

 

94

display.KEY_SPEEDA

76

display.KEY_SRCB

 

95

display.KEY_LOAD

77

display.KEY_FILTERA

 

96

display.KEY_OUTPUTB

78

display.KEY_STORE

 

97

display.WHEEL_ENTER

79

display.KEY_SRCA

 

103

display.KEY_RIGHT

80

display.KEY_CONFIG

 

104

display.KEY_LEFT

81

display.KEY_RANGEDOWN

 

107

display.WHEEL_LEFT

82

display.KEY_ENTER

 

114

display.WHEEL_RIGHT

VARIABLE - NOTE When using this function, send built-in constants, such as display.KEY_RIGHT, rather than the numeric value, such as 103. This allows for better forward compatibility with firmware revisions.

Example

display.sendkey(display.KEY_RUN)

Simulates pressing the RUN key.

Also see

“Front panel” in the Series 2600B User's Manual

display.setcursor()

This function sets the position of the cursor.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

display.setcursor(row, column)

display.setcursor(row, column, style)

row

The row number for the cursor: 1 or 2

column

The active column position to set:

  • Row 1: 1 to 20
  • Row 2: 1 to 32

style

Set the cursor:

  • Invisible (default): 0
  • Blinking: 1

Details

Sending this command selects the user screen and then moves the cursor to the given location.

The display.clear(), display.setcursor(), and display.settext() functions are overlapped commands. That is, the script does not wait for one of these commands to complete. These functions do not immediately update the display. For performance considerations, they update the display as soon as processing time becomes available.

An out‑of-range parameter for row sets the cursor to row 2. An out‑of‑range parameter for column sets the cursor to column 20 for row 1, or 32 for row 2.

An out‑of‑range parameter for style sets it to 0 (invisible).

A blinking cursor is only visible when it is positioned over displayed text. It cannot be seen when positioned over a space character.

Example

display.clear()

display.setcursor(1, 8)

display.settext("Hello")

display.setcursor(2, 14)

display.settext("World")

This example displays a message on the front panel, approximately center. Note that the top line of text is larger than the bottom line of text.

The front panel of the instrument displays Hello on the top line and World on the second line.

Also see

display.clear()

display.getcursor()

display.gettext()

display.screen

display.settext()

display.settext()

This function displays text on the front‑panel user screen.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

display.settext("text")

text

Text message to be displayed, with optional character codes

Details

This function selects the user display screen and displays the given text.

After the instrument is turned on, the first time you use a display command to write to the display, the message "User Screen" is cleared. After the first write, you need to use display.clear() to clear the message.

The display.clear(), display.setcursor(), and display.settext() functions are overlapped commands. That is, the script does not wait for one of these commands to complete. These functions do not immediately update the display. For performance considerations, they update the display as soon as processing time becomes available.

The text starts at the present cursor position. After the text is displayed, the cursor is after the last character in the display message.

Top line text does not wrap to the bottom line of the display automatically. Any text that does not fit on the present line is truncated. If the text is truncated, the cursor remains at the end of the line.

The text remains on the display until replaced or cleared.

The character codes described in the following table can be included in the text string.

Display character codes

Character Code

Description

$N

Newline, starts text on the next line; if the cursor is already on line 2, text is ignored after the $N is received

$R

Sets text to normal intensity, nonblinking

$B

Sets text to blink

$D

Sets text to dim intensity

$F

Sets the text to background blink

$$

Escape sequence to display a single dollar symbol ($)

Example

display.clear()

display.settext("Normal $BBlinking$N")

display.settext("$DDim $FBackgroundBlink$R $$$$ 2 dollars")

This example sets the display to:

Normal Blinking

Dim BackgroundBlink $$ 2 dollars

with the named effect on each word.

Also see

display.clear()

display.getcursor()

display.gettext()

display.screen

display.setcursor()

display.smuX.digits

This attribute sets the front‑panel display resolution of the selected measurement.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Instrument reset
Recall setup

Saved setup

5 (display.DIGITS_5_5)

Usage

digits = display.smuX.digits

display.smuX.digits = digits

digits

Set digits to one of the following values:

  • Select 4½ digit resolution (4 or display.DIGITS_4_5)
  • Select 5½ digit resolution (5 or display.DIGITS_5_5)
  • Select 6½ digit resolution (6 or display.DIGITS_6_5)

X

Source‑measure unit (SMU) channel (for example, display.smua.digits applies to SMU channel A)

Details

SMU A and SMU B can be set for different measurement display resolutions.

Example

display.smua.digits = display.DIGITS_5_5

Select 5½ digit resolution for SMU A.

Also see

None

display.smuX.limit.func

If you are using a display mode that shows a single channel, this attribute specifies the type of limit value setting displayed.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Instrument reset
Recall setup

Saved setup

0 (display.LIMIT_IV)

Usage

func = display.smuX.limit.func

display.smuX.limit.func = func

func

One of the following values:

  • 0 or display.LIMIT_IV: Displays the primary limit setting
  • 1 or display.LIMIT_P: Displays the power limit setting

X

Source‑measure unit (SMU) channel (for example, display.smua.limit.func applies to SMU channel A)

Details

Selects the displayed limit function: primary (IV) or power (P).

SMU A and SMU B can be set for different display functions.

Example

display.smua.limit.func = display.LIMIT_P

Specifies that the power limit value is displayed for source-measure unit (SMU) channel A.

Also see

display.smuX.measure.func

“Display mode” in the Series 2600B User's Manual

display.smuX.measure.func

This attribute specifies the type of measurement that is being displayed.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Instrument reset
Recall setup

Saved setup

1 (display.MEASURE_DCVOLTS)

Usage

func = display.smuX.measure.func

display.smuX.measure.func = func

func

The type of measurement:

  • 0 or display.MEASURE_DCAMPS: Current measurement function
  • 1 or display.MEASURE_DCVOLTS: Voltage measurement function
  • 2 or display.MEASURE_OHMS: Resistance measurement function
  • 3 or display.MEASURE_WATTS: Power measurement function

X

Source‑measure unit (SMU) channel (for example, display.smua.measure.func applies to SMU channel A)

Details

Selects the measurement function that is displayed on the front panel. The units of measure are shown as amps, volts, ohms, or watts.

SMU A and SMU B can be set for different measurement functions.

Example

display.smua.measure.func = display.MEASURE_DCAMPS

Selects the current measure function for SMU A.

Also see

display.smuX.limit.func

display.trigger.clear()

This function clears the front‑panel trigger event detector.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

display.trigger.clear()

Details

The trigger event detector remembers if an event has been detected since the last display.trigger.wait() call. This function clears the trigger event detector and discards the previous history of TRIG key presses.

This attribute also clears the display.trigger.overrun attribute.

Also see

display.trigger.overrun

display.trigger.wait()

display.trigger.EVENT_ID

This constant is the event ID of the event generated when the front‑panel TRIG key is pressed.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Constant

Yes

 

 

 

Usage

eventID = display.trigger.EVENT_ID

eventID

The trigger event number

Details

Set the stimulus of any trigger event detector to the value of this constant to have it respond to front -panel trigger key events.

Also see

None

display.trigger.overrun

This attribute contains the event detector overrun status.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

Yes

Display trigger clear
Instrument reset
Recall setup

Not saved

false

Usage

overrun = display.trigger.overrun

overrun

The trigger overrun state (true or false)

Details

Indicates if a trigger event was ignored because the event detector was already in the detected state when the TRIG button was pressed.

Indicates the overrun state of the event detector built into the display.

This attribute does not indicate whether an overrun occurred in any other part of the trigger model or in any other detector that is monitoring the event.

Example

overrun = display.trigger.overrun

Sets the variable overrun equal to the present state of the event detector built into the display.

Also see

display.trigger.clear()

display.trigger.wait()

This function waits for the TRIG key on the front panel to be pressed.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

triggered = display.trigger.wait(timeout)

triggered

true: Trigger was detected

false: The operation timed out

timeout

Timeout in seconds

Details

If the trigger key was previously pressed and one or more trigger events were detected, this function returns immediately.

After waiting for a trigger with this function, the event detector is automatically reset and rearmed. This is true regardless of the number of events detected.

Use the display.trigger.clear() call to clear the trigger event detector.

Example

triggered = display.trigger.wait(5)

print(triggered)

Waits up to five seconds for the TRIG key to be pressed. If TRIG is pressed within five seconds, the output is true. If not, the output is false.

Also see

display.trigger.clear()

display.waitkey()

This function captures the key code value for the next front‑panel action.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

keyCode = display.waitkey()

keyCode

See Details for more information

Details

After you send this function, script execution pauses until a front‑panel action (for example, pressing a key or the navigation wheel, or turning the navigation wheel). After the action, the value of the key (or action) is returned.

If the EXIT (LOCAL) key is pressed while this function is waiting for a front‑panel action, the script is not aborted.

A typical use for this function is to prompt the user to press the EXIT (LOCAL) key to abort the script or press any other key to continue. For example, if the keyCode value 75 is returned (the EXIT (LOCAL) key was pressed), you can call the exit() function to abort the script.

The table below lists the keyCode values for each front panel action.

Key codes

Value

Key (or action)

 

Value

Key (or action)

65

display.KEY_RANGEUP

 

83

display.KEY_MEASB

66

display.KEY_MODEB

 

84

display.KEY_DIGITSB

67

display.KEY_RELB

 

85

display.KEY_RECALL

68

display.KEY_MENU

 

86

display.KEY_MEASA

69

display.KEY_MODEA

 

87

display.KEY_DIGITSA

70

display.KEY_RELA

 

88

display.KEY_OUTPUTA

71

display.KEY_RUN

 

90

display.KEY_LIMITB

72

display.KEY_DISPLAY

 

91

display.KEY_SPEEDB

73

display.KEY_AUTO

 

92

display.KEY_TRIG

74

display.KEY_FILTERB

 

93

display.KEY_LIMITA

75

display.KEY_EXIT

 

94

display.KEY_SPEEDA

76

display.KEY_SRCB

 

95

display.KEY_LOAD

77

display.KEY_FILTERA

 

96

display.KEY_OUTPUTB

78

display.KEY_STORE

 

97

display.WHEEL_ENTER

79

display.KEY_SRCA

 

103

display.KEY_RIGHT

80

display.KEY_CONFIG

 

104

display.KEY_LEFT

81

display.KEY_RANGEDOWN

 

107

display.WHEEL_LEFT

82

display.KEY_ENTER

 

114

display.WHEEL_RIGHT

VARIABLE - NOTE When using this function, use built-in constants such as display.KEY_RIGHT (rather than the numeric value of 103). This allows for better forward compatibility with firmware revisions.

Example

key = display.waitkey()

print(key)

Pause script execution until the operator presses a key or the navigation wheel, or rotates the navigation wheel.

If the output is:

8.60000e+01

It indicates that the MEAS(A) key was pressed.

Also see

Capturing key-press codes

display.getlastkey()

display.sendkey()

display.settext()

errorqueue.clear()

This function clears all entries out of the error queue.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

errorqueue.clear()

Details

See Error queue for additional information about the error queue.

Also see

errorqueue.count

errorqueue.next()

errorqueue.count

This attribute gets the number of entries in the error queue.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

Yes

Power cycle
Clearing error queue
Reading error messages

Not applicable

Not applicable

Usage

count = errorqueue.count

count

The number of entries in the error queue

Example

count = errorqueue.count

print(count)

Returns the number of entries in the error queue.

The following output indicates that there are four entries in the error queue:

4.00000e+00

Also see

Error queue

errorqueue.clear()

errorqueue.next()

errorqueue.next()

This function reads the oldest entry from the error queue and removes it from the queue.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

errorCode, message, severity, errorNode = errorqueue.next()

errorCode

The error code number for the entry

message

The message that describes the error code

severity

The severity level (0, 10, 20, 30, or 40); see Details for more information

errorNode

The node number where the error originated

Details

Entries are stored in a first-in, first-out (FIFO) queue. This function reads the oldest entry and removes it from the queue.

Error codes and messages are listed in the Error summary list.

If there are no entries in the queue, code 0, Queue is Empty, is returned.

Returned severity levels are described in the following table.

Number

Error level

Description

0

NO_SEVERITY

The message is information only. This level is used when the error queue is empty; the message does not represent an error.

10

INFORMATIONAL

The message is information only. This level is used to indicate status changes; the message does not represent an error.

20

RECOVERABLE

The error was caused by improper use of the instrument or by conditions that can be corrected. This message indicates that an error occurred. The instrument is still operating normally.

30

SERIOUS

There is a condition that prevents the instrument from functioning properly. The message indicates that the instrument is presently operating in an error condition. If the condition is corrected, the instrument returns to normal operation.

40

FATAL

There is a condition that cannot be corrected that prevents the instrument from functioning properly. Disconnect the DUT and turn the power off and then on again. If the error is a hardware fault that persists after cycling the power, the instrument must be repaired.

In an expanded system, each TSP‑Link enabled instrument is assigned a node number. The variable errorNode stores the node number where the error originated. The errorNode is always 1 on the 2604B/2614B/2634B.

Example

errorcode, message = errorqueue.next()

print(errorcode, message)

Reads the oldest entry in the error queue. The following output indicates that the queue is empty.

Output:

0.00000e+00 Queue Is Empty

Also see

Error queue

errorqueue.clear()

errorqueue.count

Error summary list

eventlog.all()

This function returns all entries from the event log as a single string and removes them from the event log.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

logString = eventlog.all()

logString

A listing of all event log entries

Details

This function returns all events in the event log. Logged items are shown from oldest to newest. The response is a string that has the messages delimited with a newline character.

This function also clears the event log.

If there are no entries in the event log, this function returns the value nil.

Example

print(eventlog.all())

Get and print all entries from the event log and remove the entries from the log.

Output:

17:26:35.690 10 Oct 2019, LAN0, 192.168.1.102, LXI, 0, 1570728395,
1192037155.733269000, 0, 0x0

17:26:39.009 10 Oct 2019, LAN5, 192.168.1.102, LXI, 0, 1570728399,
1192037159.052777000, 0, 0x0

Also see

eventlog.clear()

eventlog.count

eventlog.enable

eventlog.next()

eventlog.overwritemethod

eventlog.clear()

This function clears the event log.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

eventlog.clear()

Details

This command removes all messages from the event log.

Also see

eventlog.all()

eventlog.count

eventlog.enable

eventlog.next()

eventlog.overwritemethod

eventlog.count

This attribute returns the number of unread events in the event log.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

Yes

Instrument reset
Clearing event log
Reading event log

Not applicable

Not applicable

Usage

N = eventlog.count

N

The number of events in the event log

Example

print(eventlog.count)

Displays the present number of events in the instrument event log.

Output looks similar to:

3.00000e+00

Also see

eventlog.all()

eventlog.clear()

eventlog.enable

eventlog.next()

eventlog.overwritemethod

eventlog.enable

This attribute enables or disables the event log.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Instrument reset
Recall setup

Not saved

1 (eventlog.ENABLE)

Usage

status = eventlog.enable

eventlog.enable = status

status

The enable status of the event log:

  • Enable: 1 or eventlog.ENABLE
  • Disable: 0 or eventlog.DISABLE

Details

When the event log is disabled (eventlog.DISABLE or 0), no new events are added to the event log. You can, however, read and remove existing events.

When the event log is enabled, new events are logged.

Example

print(eventlog.enable)

eventlog.enable = eventlog.DISABLE

print(eventlog.enable)

Displays the present status of the 2600B event log.

Output:

1.00000e+00

0.00000e+00

Also see

eventlog.all()

eventlog.clear()

eventlog.count

eventlog.next()

eventlog.overwritemethod

eventlog.next()

This function returns the oldest unread event message from the event log and removes it from the event log.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

logString = eventlog.next()

logString

The next log entry

Details

Returns the next entry from the event log and removes it from the log.

If there are no entries in the event log, returns the value nil.

Example 1

print(eventlog.next())

Get the oldest message in the event log and remove that entry from the log.

Output:

17:28:22.085 10 Oct 2019, LAN2, 192.168.1.102, LXI, 0, 1570728502, <no time>, 0, 0x0

Example 2

print(eventlog.next())

If there is nothing in the event log, you get the following output:

nil

Also see

eventlog.all()

eventlog.clear()

eventlog.count

eventlog.enable

eventlog.overwritemethod

eventlog.overwritemethod

This attribute controls how the event log processes events if the event log is full.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Instrument reset
Recall setup

Not saved

1 (eventlog.DISCARD_OLDEST)

Usage

method = eventlog.overwritemethod

eventlog.overwritemethod = method

method

Set to one of the following values:

  • New entries are not logged: 0 or eventlog.DISCARD_NEWEST
  • Old entries are deleted as new events are logged: 1 or eventlog.DISCARD_OLDEST

Details

When this attribute is set to eventlog.DISCARD_NEWEST, new entries are not logged.

When this attribute is set to eventlog.DISCARD_OLDEST, the oldest entry is discarded when a new entry is added.

Example

eventlog.overwritemethod = 0

When the log is full, the event log ignores new entries.

Also see

eventlog.all()

eventlog.clear()

eventlog.count

eventlog.enable

eventlog.next()

exit()

This function stops a script that is presently running.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

exit()

Details

Terminates script execution when called from a script that is being executed.

This command does not wait for overlapped commands to complete before terminating script execution. If overlapped commands are required to finish, use the waitcomplete() function before calling exit().

Also see

waitcomplete()

fileVar:close()

This function closes the file that is represented by the fileVar variable.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

fileVar:close()

fileVar

The file descriptor variable to close

Details

This command is equivalent to io.close(fileVar).

Note that files are automatically closed when the file descriptors are garbage collected.

Example

local fileName = "/usb1/myfile.txt"

 

if fs.is_file(fileName) then

os.remove(fileName)

print("Removing file")

else

print("Nothing removed")

end

 

print("\n*** fileVar:close")

do

myfile, myfile_err, myfile_errnum = io.open(fileName, "w")

myfile:write("Line 1")

myfile:close()

end

myfile, myfile_err, myfile_errnum = io.open(fileName, "r")

myfile:close()

os.remove(fileName)

Opens file myfile.txt for writing. If no errors were found while opening, writes Removing file and closes the file.

Also see

fileVar:flush()

fileVar:read()

fileVar:seek()

fileVar:write()

io.close()

io.open()

fileVar:flush()

This function writes buffered data to a file.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

fileVar:flush()

fileVar

The file descriptor variable to flush

Details

The fileVar:write() or io.write() functions buffer data, which may not be written immediately to the USB flash drive. Use fileVar:flush() to flush this data. Using this function removes the need to close a file after writing to it, allowing the file to be left open to write more data. Data may be lost if the file is not closed or flushed before a script ends.

If there is going to be a time delay before more data is written to a file, and you want to keep the file open, flush the file after you write to it to prevent loss of data.

Example

local fileName = "/usb1/myfile.txt"

 

if fs.is_file(fileName) then

os.remove(fileName)

print("Removing file")

else

print("Nothing removed")

end

 

errorqueue.clear()

print("\n*** io.read")

myfile, myfile_err, myfile_errnum = io.open(fileName, "w")

myfile:write("Line 1\n")

myfile:flush()

myfile:close()

do

fileHandle = io.input(fileName)

value = io.read("*a")

print(value)

end

fileHandle:close()

 

print(errorqueue.next())

Writes data to a USB flash drive.

Also see

fileVar:write()

io.open()

io.write()

fileVar:read()

This function reads data from a file.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

data1 = fileVar:read()

data1 = fileVar:read(format1)

data1, data2 = fileVar:read("format1", "format2")

data1, ..., datan = fileVar:read("format1", ..., "formatn")

data1

First data read from the file

data2

Second data read from the file

datan

Last data read from the file

fileVar

The descriptor of the file to be read

format1

A string or number indicating the first type of data to be read

format2

A string or number indicating the second type of data to be read

formatn

A string or number indicating the last type of data to be read

...

One or more entries (or values) separated by commas

Details

The format parameters may be any of the following:

"*n": Returns a number.

"*a": Returns the whole file, starting at the current position (returns an empty string if the current file position is at the end of the file).

"*l": Returns the next line, skipping the end of line; returns nil if the current file position is at the end of file.

n: Returns a string with up to n characters; returns an empty string if n is zero; returns nil if the current file position is at the end of file.

If no format parameters are provided, the function performs as if the function is passed the value "*l".

Any number of format parameters may be passed to this command, each corresponding to a returned data value.

Example

local fileName = "/usb1/myfile.txt"

 

if fs.is_file(fileName) then

os.remove(fileName)

print("Removing file")

else

print("Nothing removed")

end

 

print("fileVar:read")

myfile, myfile_err, myfile_errnum = io.open(fileName, "w")

myfile:write("Line 1")

myfile:close()

do

myfile, myfile_err, myfile_errnum = io.open(fileName, "r")

contents = myfile:read("*a")

print(contents)

end

myfile:close()

os.remove(fileName)

Reads data from the input file.

Also see

fileVar:write()

io.input()

io.open()

fileVar:seek()

This function sets and gets the present position of a file.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

position, errorMsg = fileVar:seek()

position, errorMsg = fileVar:seek("whence")

position, errorMsg = fileVar:seek("whence", offset)

position

The new file position, measured in bytes from the beginning of the file

errorMsg

A string containing the error message

fileVar

The file descriptor variable

whence

A string indicating the base against which offset is applied; the default is "cur"

offset

The intended new position, measured in bytes from a base indicated by whence (default is 0)

Details

The whence parameters may be any of the following:

"set": Beginning of file

"cur": Current position

"end": End of file

If an error is encountered, it is logged to the error queue, and the command returns nil and the error string.

Example

local fileName = "/usb1/myfile.txt"

 

if fs.is_file(fileName) then

os.remove(fileName)

print("Removing file")

else

print("Nothing removed")

end

 

errorqueue.clear()

 

print("\n*** fileVar:seek")

myfile, myfile_err, myfile_errnum = io.open(fileName, "w")

myfile:write("Line 1")

myfile:close()

do

myfile, myfile_err, myfile_errnum = io.open(fileName, "r")

position = myfile:seek("end", -1)

print(position)

end

myfile:close()

os.remove(fileName)

Get the present position of a file.

Also see

io.open()

fileVar:write()

This function writes data to a file.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

fileVar:write(data)

fileVar:write(data1, data2)

fileVar:write(data1, ..., datan)

fileVar

The file descriptor variable

data

Write all data to the file

data1

The first data to write to the file

data2

The second data to write to the file

datan

The last data to write to the file

...

One or more entries (or values) separated by commas

Details

This function may buffer data until a flush (fileVar:flush() or io.flush()) or close (fileVar:close() or io.close()) operation is performed.

Example

local fileName = "/usb1/myfile.txt"

 

if fs.is_file(fileName) then

os.remove(fileName)

print("Removing file")

else

print("Nothing removed")

end

 

errorqueue.clear()

 

print("\n*** fileVar:write")

myfile, myfile_err, myfile_errnum = io.open(fileName, "w")

do

myfile:write("Line 1")

end

myfile:close()

os.remove(fileName)

Write data to a file.

Also see

fileVar:close()

fileVar:flush()

io.close()

io.flush()

io.open()

format.asciiprecision

This attribute sets the precision (number of digits) for all numbers returned in the ASCII format.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

No

Instrument reset
Recall setup

Not saved

6

Usage

precision = format.asciiprecision

format.asciiprecision = precision

precision

A number representing the number of digits to be printed for numbers printed with the print(), printbuffer(), and printnumber() functions; must be a number between 1 and 16

Details

This attribute specifies the precision (number of digits) for numeric data printed with the print(), printbuffer(), and printnumber() functions. The format.asciiprecision attribute is only used with the ASCII format. The precision value must be a number from 0 to 16.

Note that the precision is the number of significant digits printed. There is always one digit to the left of the decimal point; be sure to include this digit when setting the precision.

Example

format.asciiprecision = 10

x = 2.54

printnumber(x)

format.asciiprecision = 3

printnumber(x)

Output:

2.540000000e+00

 

2.54e+00

Also see

format.byteorder

format.data

print()

printbuffer()

printnumber()

format.byteorder

This attribute sets the binary byte order for the data that is printed using the printnumber() and printbuffer() functions.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Instrument reset
Recall setup

Not saved

1 (format.LITTLEENDIAN)

Usage

order = format.byteorder

format.byteorder = order

order

Byte order value as follows:

  • Most significant byte first: 0, format.NORMAL, format.NETWORK, or format.BIGENDIAN
  • Least significant byte first: 1, format.SWAPPED or format.LITTLEENDIAN

Details

This attribute selects the byte order in which data is written when you are printing data values with the printnumber() and printbuffer() functions. The byte order attribute is only used with the format.SREAL, format.REAL, format.REAL32, and format.REAL64 data formats.

format.NORMAL, format.BIGENDIAN, and format.NETWORK select the same byte order. format.SWAPPED and format.LITTLEENDIAN select the same byte order. Selecting which to use is a matter of preference.

Select the format.SWAPPED or format.LITTLEENDIAN byte order when sending data to a computer with a Microsoft Windows operating system.

Example

x = 1.23

format.data = format.REAL32

format.byteorder = format.LITTLEENDIAN

printnumber(x)

format.byteorder = format.BIGENDIAN

printnumber(x)

The output depends on the terminal program you use, but it looks something like:

#0¤p??

#0??p¤

Also see

format.asciiprecision

format.data

printbuffer()

printnumber()

format.data

This attribute sets the data format for data that is printed using the printnumber() and printbuffer() functions.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

No

Instrument reset
Recall setup

Not saved

1 (format.ASCII)

Usage

value = format.data

format.data = value

value

The format to use for data, set to one of the following values:

  • ASCII format: 1 or format.ASCII
  • Single‑precision IEEE Std 754 binary format: 2, format.SREAL, or format.REAL32
  • Double‑precision IEEE Std 754 binary format: 3, format.REAL, format.REAL64, or format.DREAL

Details

The precision of numeric values can be controlled with the format.asciiprecision attribute. The byte order of format.SREAL, format.REAL, format.REAL32, and format.REAL64 can be selected with the format.byteorder attribute.

REAL32 and SREAL select the same single precision format. REAL and REAL64 select the same double‑precision format. They are alternative identifiers. Selecting which to use is a matter of preference.

The IEEE Std 754 binary formats use four bytes for single‑precision values and eight bytes for double‑precision values.

When data is written with any of the binary formats, the response message starts with #0 and ends with a new line. When data is written with the ASCII format, elements are separated with a comma and space.

VARIABLE - NOTE Binary formats are not intended to be interpreted by humans.

Example

format.asciiprecision = 10

x = 3.14159265

format.data = format.ASCII

printnumber(x)

format.data = format.REAL64

printnumber(x)

Output a number represented by x in ASCII using a precision of 10, then output the same number in binary using double‑precision format.

Output:

3.141592650e+00

#0ñÔÈSû! @

Also see

format.asciiprecision

format.byteorder

printbuffer()

printnumber()

fs.chdir()

This function sets the current working directory.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

workingDirectory = fs.chdir("path")

workingDirectory

Returned value containing the working path

path

A string indicating the new working directory path

Details

The new working directory path may be absolute or relative to the current working directory.

An error is logged to the error queue if the given path does not exist.

Example

if fs.is_dir("/usb1/temp") == true then

  fs.chdir("/usb1/temp")

  testPath = fs.cwd()

  print(testPath)

else

  testPath = fs.cwd()

  print(testPath)

end

Insert a USB flash drive into the front panel of the instrument.

Verify that /usb1/temp is a directory and change it to be the current working directory.

Set the variable for the current working directory to be testPath.

The return should be:

/usb1/temp

If /usb1/temp is not a directory, set the variable for the current working directory to be testPath.

The return is:

/usb1

Also see

None

fs.cwd()

This function returns the absolute path of the current working directory.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

path = fs.cwd()

path

The absolute path of the current working directory

Example

if fs.is_dir("/usb1/temp") == true then

  fs.chdir("/usb1/temp")

  testPath = fs.cwd()

  print(testPath)

else

  testPath = fs.cwd()

  print(testPath)

end

Insert a USB flash drive into the front panel of the instrument.

Verify that /usb1/temp is a directory and change it to be the current working directory.

Set the variable for the current working directory to be testPath.

The return should be:

/usb1/temp

If /usb1/temp is not a directory, set the variable for the current working directory to be testPath.

The return is:

/usb1

Also see

None

fs.is_dir()

This function tests whether or not the specified path refers to a directory.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

status = fs.is_dir("path")

status

Whether or not the given path is a directory (true or false)

path

The path of the file system entry to test

Details

The file system path may be absolute or relative to the current working system path.

Example 1

print("Is directory: ", fs.is_dir("/usb1/"))

Because /usb1/ is always the root directory of an inserted flash drive, you can use this command to verify that USB flash drive is inserted.

Example 2

if fs.is_dir("/usb1/temp") == false then

    fs.mkdir("/usb1/temp")

end

Insert a USB flash drive into the front panel of the instrument.

Check to see if the temp directory exists.

If it does not exist, create a directory named temp.

Also see

fs.is_file()

fs.is_file()

Tests whether the specified path refers to a file (as opposed to a directory).

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

status = fs.is_file("path")

status

true if the given path is a file; otherwise, false

path

The path of the file system entry to test

Details

The file system path may be absolute or relative to the current working system path.

Example

rootDirectory = "/usb1/"

print("Is file: ", fs.is_file(rootDirectory))

Insert a USB flash drive into the front panel of the instrument.

Set rootDirectory to be the USB port.

Check to see if rootDirectory is a file. Because rootDirectory was set up as a directory, the return is false.

Also see

fs.is_dir()

fs.mkdir()

This function creates a directory at the specified path.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

path = fs.mkdir("newPath")

path

The returned path of the new directory

newpath

Location (path) of where to create the new directory

Details

The directory path may be absolute or relative to the current working directory.

An error is logged to the error queue if the parent folder of the new directory does not exist, or if a file system entry already exists at the given path.

Example

if fs.is_dir("/usb1/temp") == false then

    fs.mkdir("/usb1/temp")

end

Insert a USB flash drive into the front panel of the instrument.

Check to see if the temp directory exists.

If it does not exist, create a directory named temp.

Also see

fs.rmdir()

fs.readdir()

This function returns a list of the file system entries in the directory.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

files = fs.readdir("path")

files

A table containing the names of all the file system entries in the specified directory

path

The directory path

Details

The directory path may be absolute or relative to the current working directory.

This command is nonrecursive. For example, entries in subfolders are not returned.

An error is logged to the error queue if the given path does not exist or does not represent a directory.

Example

rootDirectory = "/usb1/"

entries = fs.readdir(rootDirectory)

count = table.getn(entries)

print("Found a total of "..count.." files and directories")

for i = 1, count do

print(entries[i])

end

Insert a USB flash drive into the front panel of the instrument.

Set rootDirectory to be the USB port.

Set entries as the variable for the file system entries in rootDirectory.

Return the number of files and directories in the directory.

Also see

None

fs.rmdir()

This function removes a directory from the file system.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

fs.rmdir("path")

path

The path of the directory to remove

Details

This path may be absolute or relative to the current working directory.

An error is logged to the error queue if the given path does not exist or does not represent a directory. An error is also logged if the directory is not empty.

Example

rootDirectory = "/usb1/"

tempDirectoryName = "temp"

if fs.is_dir(rootDirectory..tempDirectoryName) == false then

    fs.mkdir(rootDirectory..tempDirectoryName)

end

fs.rmdir(rootDirectory..tempDirectoryName)

Insert a USB flash drive into the front panel of the instrument.

Set rootDirectory to be the USB port.

Set tempDirectoryName to be equivalent to temp.

Check to see if tempDirectoryName exists.

If it does not exist, create a directory named temp.

Remove the directory.

Also see

fs.mkdir()

gettimezone()

This function retrieves the local time zone.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

timeZone = gettimezone()

timeZone

The local time zone of the instrument

Details

See settimezone() for additional details about the time zone format and a description of the fields.

timeZone can be in either of the following formats:

  • If one parameter was used with settimezone(), the format used is:
    GMThh:mm:ss
  • If four parameters were used with settimezone(), the format used is:
    GMThh:mm:ssGMThh:mm:ss,Mmm.w.dw/hh:mm:ss,Mmm.w.dw/hh:mm:ss

Example

timezone = gettimezone()

Reads the value of the local time zone.

Also see

settimezone()

gm_isweep()

This KIParlib factory script function performs a linear current sweep and calculates the transconductance (Gm) at each point.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

gm_array, vbuf, ibuf = gm_isweep(smu, start_i, stop_i, points)

gm_array

A Lua table containing the calculated Gm values at each point

vbuf

A reading buffer containing the measured voltage at each point

ibuf

A reading buffer containing the measured current at each point

smu

Instrument channel (for example, smua refers to SMU channel A)

start_i

Starting current level of the sweep

stop_i

Ending current level of the sweep

points

Number of measurements between start_i and stop_i (must be =2)

Details

Output data includes transconductance values, reading buffer with measured voltages, reading buffer with measured voltages and currents.

If all parameters are omitted when this function is called, this function is executed with the parameters set to the default values.

The gm_isweep() function performs a linear current sweep, measuring voltage and current, and then calculating the transconductance (Gm) at each point using the central difference method. It can return an array of Gm values, a reading buffer with the measured voltages, and a reading buffer with the measured currents.

Example

gm_array = gm_isweep(smua, 0, 0.01, 20)

 

 

gm_array, vbuf = gm_isweep(smua, 0, 0.01, 20)

 

 

gm_array, vbuf, ibuf = gm_isweep(smua, 0,

0.01, 20)

Source‑measure unit (SMU) A returns Gm values only.

 

SMU A returns Gm and reading buffer with measured voltages.

 

SMU A returns Gm and reading buffers with measured voltages and currents.

Also see

gm_vsweep()

KIParlib factory script

gm_vsweep()

This KIParlib factory script function performs a linear voltage sweep and calculates the transconductance (Gm) at each point.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

gm_array, ibuf, vbuf = gm_vsweep(smu, start_v, stop_v, points)

gm_array

A Lua table containing the calculated Gm values at each point

ibuf

A reading buffer containing the measured current at each point

vbuf

A reading buffer containing the measured voltage at each point

smu

Instrument channel (for example, smua refers to SMU channel A)

start_v

Starting voltage level of the sweep

stop_v

Ending voltage level of the sweep

points

Number of measurements between start_v and stop_v (must be = 2)

Details

Output data includes transconductance values, reading buffer with measured currents, reading buffer with measured currents and voltages.

The gm_vsweep() function performs a linear voltage sweep, measuring voltage and current, and then calculating the transconductance (Gm) at each point using the central difference method. It can return an array of Gm values, a reading buffer with the measured currents, and a reading buffer with the measured voltages.

Example

gm_array = gm_vsweep(smua, 0, 5, 20)

 

gm_array, ibuf = gm_vsweep(smua, 0, 5, 20)

 

 

gm_array, ibuf, vbuf = gm_vsweep(smua, 0, 5, 20)

SMU A returns Gm values only.

 

SMU A returns Gm and reading buffer with measured currents.

 

SMU A returns Gm and reading buffers with measured currents and voltages.

Also see

gm_isweep()

KIParlib factory script

gpib.address

This attribute contains the GPIB address.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

No

Not applicable

Nonvolatile memory

26

Usage

address = gpib.address

gpib.address = address

address

The GPIB address of the instrument: 1 to 30

Details

The address can be set to any address value from 1 to 30. However, the address must be unique in the system. It cannot conflict with an address that is assigned to another instrument or to the GPIB controller.

A new GPIB address takes effect when the command to change it is processed. If there are response messages in the output queue when this command is processed, they must be read at the new address.

If command messages are being queued (sent before this command has executed), the new settings may take effect in the middle of a subsequent command message, so use care when setting this attribute from the GPIB interface.

Allow sufficient time for the command to be processed before attempting to communicate with the instrument again.

The reset() function does not affect the GPIB address.

Example

gpib.address = 26

address = gpib.address

print(address)

Sets the GPIB address and reads the address.

Output:

26

Also see

GPIB setup<CT5880_only_start_*****Set variable*****>None<CT5880_only_end_*****Set variable*****>

i_leakage_measure()

This KIHighC factory script function performs a current leakage measurement after stepping the output voltage.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

imeas = i_leakage_measure(smuX, levelv, limiti, sourcedelay, measurei, measuredelay)

imeas

The measured current

X

Instrument channel (for example, smua refers to SMU channel A)

levelv

Voltage level to step to when this function is called

limiti

Current limit setting for the voltage step

sourcedelay

Delay to wait before lowering the current limit for measurement

measurei

Current limit (and measure range); the current limit is lower at this level and because high-capacitance mode is active, the measure range follows

measuredelay

Delay to wait after lowering the current limit before making the measurement

Details

This function causes the SMU to:

  • Change its current limit to limiti with a voltage output of levelv for sourcedelay time, and then change its current limit to measurei (that also changes the measurement range to measurei) for measuredelay time
  • When measuredelay time expires, a measurement is made and returned as imeas

When measuring leakage current:

  • Charge the capacitor before calling this function (the output of the instrument is usually at a nonzero voltage before calling this function; when measuring leakage, this function does not charge the capacitor)
  • Set levelv = 0

Example

smua.source.highc = smua.ENABLE

smua.source.levelv = 5

smua.source.output = smua.OUTPUT_ON

delay(1)

imeas = i_leakage_measure(smua, 0, 1, 300e-3, 10e-6, 0.1)

Enable high-capacitance mode. Charge the capacitor at 5 V for 1 second set by delay(1).

 

The parameters passed on to the i_leakage_measure() function in this example are:

smu = smua

levelv = 0 V

limiti = 1 A

sourcedelay = 300 ms

measurei = 10 µA range

measuredelay = 100 ms

The levels and delays depend on the value and type of capacitor used.

Also see

i_leakage_threshold()

High-capacitance mode

KIHighC factory script

i_leakage_threshold()

This KIHighC factory script function measures the current and compares it to a threshold. This continues until either the measured current drops below the threshold or the timeout expires.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

f = i_leakage_threshold(smuX, levelv, limiti, sourcedelay, measurei, measuredelay, threshold, timeout)

f

A Boolean flag; this flag is true when the current is below the threshold, false if threshold is not reached before timeout expires

X

Source‑measure unit (SMU) channel (for example, smua applies to SMU channel A)

levelv

Voltage level to step to when this function is called

limiti

Current limit setting for the voltage step

sourcedelay

Delay to wait before lowering the current limit for measurement

measurei

Current limit (and measure range); the current limit is lower at this level and because high-capacitance mode is active, the measure range follows

measuredelay

Delay before the first measurement after measure range is changed

threshold

The specified current that establishes the test limit

timeout

Amount of time (in seconds) to wait for the current to drop to threshold after all the delays have occurred

Details

This function causes the SMU to:

  • Change its current limit to limiti with a voltage output of levelv for sourcedelay time, and then changes its current limit to measurei (that also changes the measurement range to measurei) for measuredelay time.
  • When measuredelay time expires, measurements are made at a rate determined by the smuX.measure.nplc setting.

When testing the leakage current threshold:

  • Charge the capacitor before calling this function. The output of the instrument is usually at a nonzero voltage before calling this function; when measuring leakage, this function does not charge the capacitor.
  • If testing the leakage current threshold of the device, set levelv = 0.

Example

smua.source.highc = smua.ENABLE

smua.source.levelv = 5

smua.source.output = smua.OUTPUT_ON

delay(1)

pass = i_leakage_threshold(smua, 0, 1, 300e-3, 10e-6, 100e-3, 1e-6, 1)

Enable high-capacitance mode.

Charge the capacitor.

 

The parameters passed on to the i_threshold_measure() function in this example are:

smu = smua

levelv = 0 V

limiti = 1 A

sourcedelay = 300 ms

measurei = 10 µA range

measuredelay = 100 ms

threshold = 1 µA

timeout = 1 s

The levels and delays depend on the value and type of capacitor used.

Sets pass = true if the current is measured below 1 µA in less than 1 second.

Also see

High-capacitance mode

i_leakage_measure()

KIHighC factory script

InitiatePulseTest()

This KIPulse factory script function initiates the pulse configuration assigned to tag.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

f, msg = InitiatePulseTest(tag)

f

A Boolean flag; this flag is true when the pulse was successfully configured, false when errors are encountered

msg

A string message; if the f flag is false, msg contains an error message; if it is true, msg contains a string that indicates successful configuration

tag

Numeric identifier of the pulse configuration to be initiated

Details

This function only initiates configured pulse trains assigned to a valid tag. Configure the pulse before initiating it using one of the ConfigurePulse* functions (refer to the Also see section).

Example

smua.reset()

 

smua.source.rangev = 5

smua.source.rangei = 1

smua.source.levelv = 0

 

smua.measure.rangev = 5

smua.measure.rangei = 1

smua.measure.nplc = 0.01

smua.measure.autozero = smua.AUTOZERO_ONCE

 

smua.nvbuffer1.clear()

smua.nvbuffer1.appendmode = 1

 

smua.source.output = smua.OUTPUT_ON

 

f1, msg1 = ConfigPulseVMeasureI(smua, 0, 5, 1, 0.002, 0.2, 10, smua.nvbuffer1, 1)

 

if f1 == true then

f2, msg2 = InitiatePulseTest(1)

print("Initiate message:", msg2)

else

print("Config errors:", msg1)

end

Configure channel A to generate a pulse train. If no errors are encountered, initiate the pulse train. Channel A pulses voltage from a bias level of 0 V to a pulse level of 5 V. The pulse level is present for 2 ms and the bias level for 200 ms, with a 1 A limit setting. A total of 10 pulses is generated, and the measurement data is stored in smua.nvbuffer1. This pulse train is assigned to tag = 1.

Also see

ConfigPulseIMeasureV()

ConfigPulseIMeasureVSweepLin()

ConfigPulseIMeasureVSweepLog()

ConfigPulseVMeasureI()

ConfigPulseVMeasureISweepLin()

ConfigPulseVMeasureISweepLog()

KIPulse factory script

InitiatePulseTestDual()

This KIPulse factory script function initiates the pulse configuration assigned tag1 and tag2.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

f, msg = InitiatePulseTestDual(tag1, tag2)

f

A Boolean flag; this flag is true when the pulse was successfully configured, false when errors were encountered

msg

A string message; if the f flag is false, msg contains an error message; if it is true, msg contains a string indicating successful configuration

tag1

Numeric identifier of the first pulse configuration to be initiated

tag2

Numeric identifier of the second pulse configuration to be initiated

Details

The pulse trains associated with the indicated tags are generated simultaneously. This is useful when testing devices such as voltage regulators, where the input signal and output load must be applied to the instrument at the same time.

When using this function, each tag1 pulse encapsulates each tag2 pulse in time. Specifically, the tag1 pulse transitions from its bias level to its pulse level before the tag2 pulse. Both the tag1 and tag2 pulses return to their respective bias levels at approximately the same time. Measurements for both pulse trains occur at the same time (see the waveform in the figure below).

To provide this encapsulation, the following rules are enforced:

  • The tag1 pulse on time, ton1, must be configured to be > 40 µs longer than the tag2 pulse on time.
  • The tag1 and tag2 pulse off times, toff, must be the same.

    InitiatePulseTestDual

Example

smua.reset()

 

smua.source.rangev = 5

smua.source.rangei = 1

smua.source.levelv = 0

 

smua.measure.rangev = 5

smua.measure.rangei = 1

smua.measure.nplc = 0.01

smua.measure.autozero = smua.AUTOZERO_ONCE

 

smua.nvbuffer1.clear()

smua.nvbuffer1.appendmode = 1

 

smua.source.output = smua.OUTPUT_ON

 

smub.reset()

smub.source.func = smub.OUTPUT_DCAMPS

smub.source.rangei = 1

smub.source.rangev = 5

smub.source.leveli = 0

smub.measure.rangei = 1

smub.measure.rangev = 5

smub.measure.nplc = 0.01

smub.measure.autozero = smub.AUTOZERO_ONCE

smub.nvbuffer1.clear()

smub.nvbuffer1.appendmode = 1

smub.source.output = smub.OUTPUT_ON

 

f1, msg1 = ConfigPulseVMeasureI(smua, 0, 5, 1, 0.002, 0.2, 10, smua.nvbuffer1, 1)

f2, msg2 = ConfigPulseIMeasureV(smub, 0,-1, 5, 0.001, 0.2, 10, smub.nvbuffer1, 2)

if (f1 == true) and (f2 == true) then

f3, msg3 = InitiatePulseTestDual(1, 2)

print("Initiate message:", msg3)

else

print("Config errors:", msg1, msg2)

end

Set up channels A and B for pulse operation, configure pulse trains for each channel, and then initiate the pulse trains if no errors are encountered.

Channel A pulses voltage from a bias level of 0 V to pulse level of 5 V. The pulse level is present for 2 ms, and the bias level for 200 ms with a 1 A limit setting.

A total of 10 pulses is generated on channel A and the measurement data is stored in smua.nvbuffer1. This pulse train is assigned to tag = 1.

Channel B pulses current from a bias level of 0 A to pulse level of 1 A. The pulse level is present for 1 ms, and the bias level for 200 ms with a 5 V limit setting.

A total of 10 pulses is generated on channel B, and the measurement data is stored in smub.nvbuffer1. This pulse train is assigned to tag = 2.

Also see

ConfigPulseIMeasureV()

ConfigPulseIMeasureVSweepLin()

ConfigPulseIMeasureVSweepLog()

ConfigPulseVMeasureI()

ConfigPulseVMeasureISweepLin()

ConfigPulseVMeasureISweepLog()

io.close()

This function closes a file.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes (see Details)

 

 

 

Usage

io.close()

io.close(file)

file

The descriptor of the file to close

Details

If a file is not specified, the default output file closes.

Only io.close(), used without specifying a parameter, can be accessed from a remote node.

Example

testFile, testError = io.open("testfile.txt", "w")

if nil == testError then

testFile:write("This is my test file")

io.close(testFile)

end

Opens file testfile.txt for writing. If no errors were found while opening, writes "This is my test file" and closes the file.

Also see

io.open()

io.flush()

This function saves buffered data to a file.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

io.flush()

Details

You must use the io.flush() or io.close() functions to write data to the file system.

VARIABLE - NOTE Data is not automatically written to a file when you use the io.write() function. The io.write() function buffers data; it may not be written to the USB flash drive immediately. Use the io.flush() function to immediately write buffered data to the drive.

This function only flushes the default output file.

Using this command removes the need to close a file after writing to it and allows it to be left open to write more data. Data may be lost if the file is not closed or flushed before an application ends. To prevent the loss of data if there is going to be a time delay before more data is written (and when you want to keep the file open and not close it), flush the file after writing to it.

Also see

fileVar:flush()

fileVar:write()

io.write()

io.input()

This function assigns a previously opened file, or opens a new file, as the default input file.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes (see Details)

 

 

 

Usage

fileVar = io.input()

fileVar = io.input("newfile")

fileVar

The descriptor of the input file or an error message (if the function fails)

newfile

A string representing the path of a file to open as the default input file, or the file descriptor of an open file to use as the default input file

Details

The newfile path may be absolute or relative to the current working directory.

When using this function from a remote TSP-LinkTM node, this command does not accept a file descriptor and does not return a value.

If the function fails, an error message is returned.

Also see

io.open()

io.output()

io.open()

This function opens a file for later reference.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

fileVar, errorMsg = io.open("path")

fileVar, errorMsg = io.open("path", "mode")

fileVar

The descriptor of the opened file

errorMsg

Indicates whether an error was encountered while processing the function

path

The path of the file to open

mode

A string representing the intended access mode ("r" = read, "w" = write, and "a" = append)

Details

The path to the file to open may be absolute or relative to the current working directory. If you successfully open the file, errorMsg is nil and fileVar has the descriptor used to access the file.

If an error is encountered, the command returns nil for fileVar and an error string.

Example

testFile, testError = io.open("testfile.txt", "w")

if testError == nil then

testFile:write("This is my test file")

io.close(testFile)

end

Opens file testfile.txt for writing. If no errors were found while opening, writes "This is my test file" and closes the file.

Also see

io.close()

io.output()

This function assigns a previously opened file or opens a new file as the default output file.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes (see Details)

 

 

 

Usage

fileVar = io.output()

fileVar = io.output("newfile")

fileVar

The descriptor of the output file or an error message (if the function fails)

newfile

A file descriptor to assign (or the path of a file to open) as the default output file

Details

The path of the file to open may be absolute or relative to the current working directory.

When accessed from a remote node using the TSP-Link network, this command does not accept a file descriptor parameter and does not return a value.

If the function fails, an error message is returned.

Example

local fileName = "/usb1/myfile.txt"

 

if fs.is_file(fileName) then

os.remove(fileName)

print("Removing file")

else

print("Nothing removed")

end

 

errorqueue.clear()

 

print("\n*** io.output")

myfile, myfile_err, myfile_errnum = io.open(fileName, "w")

myfile:write("Line 1")

myfile:close()

do

fileHandle = io.output(fileName)

print(fileHandle)

end

io.close(fileHandle)

print(fileHandle)

os.remove(fileName)

Assign the file to be the default output file.

Also see

io.input()

io.open()

io.read()

This function reads data from the default input file.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

data1 = io.read()

data1 = io.read("format1")

data1, data2 = io.read("format1", "format2")

data1, ..., dataN = io.read("format1", ..., "formatN")

data1

The data read from the file

data2

The data read from the file

dataN

The data read from the file; the number of return values matches the number of format values given

format1

A string or number indicating the type of data to be read

format2

A string or number indicating the type of data to be read

formatN

A string or number indicating the type of data to be read

...

One or more entries (or values) separated by commas

Details

The format parameters may be any of the following:

Format parameter

Description

"*n"

Returns a number

"*a"

Returns the whole file, starting at the present position; returns an empty string if it is at the end of file

"*l"

Default setting; returns the next line, skipping the end of line; returns nil if the present file position is at the end of file

N

Returns a string with up to N characters; returns an empty string if N is zero (0); returns nil if the present file position is at the end of file

Any number of format parameters may be passed to this command, each corresponding to a returned data value.

Example

local fileName = "/usb1/myfile.txt"

 

if fs.is_file(fileName) then

os.remove(fileName)

print("Removing file")

else

print("Nothing removed")

end

 

errorqueue.clear()

 

-- io.read

print("\n*** io.read")

myfile, myfile_err, myfile_errnum = io.open(fileName, "w")

myfile:write("Line 1\n")

myfile:flush()

myfile:close()

do

fileHandle = io.input(fileName)

value = io.read("*a")

print(value)

end

fileHandle:close()

 

print(errorqueue.next())

Read data from the default input file.

Also see

None

io.type()

This function checks whether or not a given object is a file handle.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

type = io.type(obj)

type

Indicates whether the object is an open file handle

obj

Object to check

Details

Returns the string "file" if the object is an open file handle. If it is not an open file handle, nil is returned.

Example

local fileName = "/usb1/myfile.txt"

 

if fs.is_file(fileName) then

os.remove(fileName)

print("Removing file")

else

print("Nothing removed")

end

 

errorqueue.clear()

 

print("\n*** io.type")

myfile, myfile_err, myfile_errnum = io.open(fileName, "w")

myfile:write("Line 1")

myfile:close()

do

fileHandle = io.output(fileName)

state = io.type(fileHandle)

print(state)

end

io.close(fileHandle)

local state = io.type(fileHandle)

print(state)

os.remove(fileName)

Check whether or not fileName is a file handle.

Also see

io.open()

io.write()

This function writes data to the default output file.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

io.write()

io.write(data1)

io.write(data1, data2)

io.write(data1, ..., dataN)

data1

The data to be written

data2

The data to be written

dataN

The data to be written

...

One or more values separated by commas

Details

All data parameters must be either strings or numbers.

VARIABLE - NOTE Data is not immediately written to a file when you use the io.write() function. The io.write() function buffers data; it may not be written to the USB flash drive immediately. Use the io.flush() function to immediately write buffered data to the drive.

Example

local fileName = "/usb1/myfile.txt"

 

if fs.is_file(fileName) then

os.remove(fileName)

print("Removing file")

else

print("Nothing removed")

end

 

errorqueue.clear()

 

print("\n*** io.write")

myfile, myfile_err, myfile_errnum = io.open(fileName, "w")

myfile:write("Line 1")

myfile:close()

do

fileHandle = io.output(fileName)

io.write("Line 2")

end

io.close(fileHandle)

os.remove(fileName)

Writes data to the default output file.

Also see

io.flush()

lan.applysettings()

This function re-initializes the LAN interface with new settings.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

lan.applysettings()

Details

Disconnects all existing LAN connections to the instrument and re-initializes the LAN with the present configuration settings.

This function initiates a background operation. LAN configuration can be a lengthy operation. Although the function returns immediately, the LAN initialization continues to run in the background.

Even though the LAN configuration settings may not have changed since the LAN was last connected, new settings may take effect due to the dynamic nature of dynamic host configuration protocol (DHCP) or dynamic link local addressing (DLLA) configuration.

Re-initialization takes effect even if the configuration has not changed since the last time the instrument connected to the LAN.

Example

lan.applysettings()

Re-initialize the LAN interface with new settings.

Also see

None

lan.autoconnect

This attribute is used to enable or disable link monitoring.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

LAN restore defaults

Nonvolatile memory

1 (lan.ENABLE)

Usage

state = lan.autoconnect

lan.autoconnect = state

state

LAN link monitoring state:

1 or lan.ENABLE: Enables automatic link reconnection and monitoring

0 or lan.DISABLE: Disables automatic link reconnection and monitoring

Details

This attribute sets the LAN link monitoring and automatic connection state.

When this is set to lan.ENABLE, all connections are closed if the link to the LAN is lost for more than the time specified by lan.linktimeout.

Set this attribute to lan.ENABLE to automatically reset the LAN connection after the LAN link is established.

Example

lan.autoconnect = lan.ENABLE

Enable LAN link monitoring.

Also see

lan.linktimeout

lan.restoredefaults()

lan.config.dns.address[N]

This command configures the DNS server IP addresses.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

LAN restore defaults

Nonvolatile memory

"0.0.0.0"

Usage

dnsAddress = lan.config.dns.address[N]

lan.config.dns.address[N] = "dnsAddress"

dnsAddress

DNS server IP address

N

Entry index: 1 or 2

Details

This attribute is an array of Domain Name System (DNS) server addresses. These addresses take priority for DNS lookups and are consulted before any server addresses that are obtained using DHCP. This allows local DNS servers to be specified that take priority over DHCP‑configured global DNS servers.

You can specify up to two addresses. The address specified by 1 is consulted first for DNS lookups. dnsAddress must be a string specifying the IP address of the DNS server in dotted decimal notation.

Unused entries are returned as 0.0.0.0 when read. To disable an entry, set its value to 0.0.0.0 or the empty string "".

Although only two addresses may be manually specified here, the instrument uses up to three DNS server addresses. If two are specified here, only one that is given by a DHCP server is used. If no entries are specified here, up to three addresses that are given by a DHCP server are used.

Example

dnsaddress = "164.109.48.173"

lan.config.dns.address[1] = dnsaddress

Set the DNS address 1 to 164.109.48.173.

Also see

lan.config.dns.domain

lan.config.dns.dynamic

lan.config.dns.hostname

lan.config.dns.verify

lan.restoredefaults()

lan.config.dns.domain

This command configures the dynamic DNS domain.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

LAN restore defaults

Nonvolatile memory

""

Usage

domain = lan.config.dns.domain

lan.config.dns.domain = "domain"

domain

Dynamic DNS registration domain; a string of 255 characters or less

Details

This attribute holds the domain to request during dynamic DNS registration. Dynamic DNS registration works with DHCP to register the domain specified in this attribute with the DNS server.

The length of the fully qualified host name (combined length of the domain and host name with separator characters) must be less than or equal to 255 characters. Although up to 255 characters are allowed, you must make sure the combined length is also no more than 255 characters.

Example

print(lan.config.dns.domain)

Outputs the present dynamic DNS domain. For example, if the domain is Matrix, the response is:

Matrix

Also see

lan.config.dns.dynamic

lan.config.dns.hostname

lan.config.dns.verify

lan.restoredefaults()

lan.config.dns.dynamic

Enables or disables the dynamic DNS registration.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

LAN restore defaults

Nonvolatile memory

1 (lan.ENABLE)

Usage

state = lan.config.dns.dynamic

lan.config.dns.dynamic = state

state

The dynamic DNS registration state; iIt may be one of the following values:

  • Enabled: 1 or lan.ENABLE
  • Disabled: 0 or lan.DISABLE

Details

Dynamic DNS registration works with DHCP to register the host name with the DNS server. The host name is specified in the lan.config.dns.hostname attribute.

Example

print(lan.config.dns.dynamic)

Outputs the dynamic registration state.

If dynamic DNS registration is enabled, the response is:

1.00000e+00

Also see

lan.config.dns.hostname

lan.restoredefaults()

lan.config.dns.hostname

This attribute defines the dynamic DNS host name.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Not applicable

Nonvolatile memory

Instrument specific (see Details)

Usage

hostName = lan.config.dns.hostname

lan.config.dns.hostname = "hostName"

hostName

The host name to use for dynamic DNS registration; the host name must be a string of

  • 63 characters or less
  • start with a letter
  • end with a letter or digit
  • contain only letters, digits, and hyphens

Details

This attribute holds the host name to request during dynamic DNS registration. Dynamic DNS registration works with DHCP to register the host name specified in this attribute with the DNS server.

The factory default value for hostName is "k‑<model number>‑<serial number>", where <model number> and <serial number> are replaced with the actual model number and serial number of the instrument (for example, "k‑2602B‑1234567"). Note that hyphens separate the characters of hostName.

The length of the fully qualified host name (combined length of the domain and host name with separator characters) must be less than or equal to 255 characters. Although up to 63 characters can be entered here, you must make sure the combined length is no more than 255 characters.

Setting this attribute to an empty string (in other words, setting this attribute to a string of length zero or a string that consists entirely of whitespace characters) reverts the host name to the factory default value.

Example

print(lan.config.dns.hostname)

Outputs the present dynamic DNS host name.

Also see

lan.config.dns.domain

lan.config.dns.dynamic

lan.restoredefaults()

lan.config.dns.verify

This attribute defines the DNS host name verification state.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

LAN restore defaults

Nonvolatile memory

1 (lan.ENABLE)

Usage

state = lan.config.dns.verify

lan.config.dns.verify = state

state

DNS hostname verification state:

  • DNS host name verification enabled: 1 or lan.ENABLE
  • DNS host name verification disabled: 0 or lan.DISABLE

Details

When this is enabled, the instrument performs DNS lookups to verify that the DNS host name matches the value specified by lan.config.dns.hostname.

Example

print(lan.config.dns.verify)

Outputs the present DNS host name verification state.

If it is enabled, the output is:

1.00000e+00

Also see

lan.config.dns.hostname

lan.restoredefaults()

lan.config.duplex

This attribute defines the LAN duplex mode.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

LAN restore defaults

Nonvolatile memory

1 (lan.FULL)

Usage

duplex = lan.config.duplex

lan.config.duplex = duplex

duplex

LAN duplex setting can be one of the following values:

  • 1 or lan.FULL: Selects full-duplex operation
  • 0 or lan.HALF: Selects half-duplex operation

Details

This attribute does not indicate the actual setting currently in effect. Use the lan.status.duplex attribute to determine the present operating state of the LAN.

Example

lan.config.duplex = lan.FULL

Set the LAN duplex mode to full.

Also see

lan.restoredefaults()

lan.config.gateway

This attribute contains the LAN default gateway address.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

LAN restore defaults

Nonvolatile memory

"0.0.0.0"

Usage

gatewayAddress = lan.config.gateway

lan.config.gateway = "gatewayAddress"

gatewayAddress

LAN default gateway address; must be a string specifying the default IP address of the gateway in dotted decimal notation

Details

This attribute specifies the default gateway IP address to use when manual or DLLA configuration methods are used to configure the LAN. If DHCP is enabled, this setting is ignored.

This attribute does not indicate the actual setting that is presently in effect. Use the lan.status.gateway attribute to determine the present operating state of the LAN.

The IP address must be formatted in four groups of numbers, each separated by a decimal.

Example

print(lan.config.gateway)

Outputs the default gateway address. For example, you might see the output:

192.168.0.1

Also see

lan.restoredefaults()

lan.status.gateway

lan.config.ipaddress

This command specifies the LAN IP address.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

LAN restore defaults

Nonvolatile memory

"192.168.0.2"

Usage

ipAddress = lan.config.ipaddress

lan.config.ipaddress = "ipAddress"

ipAddress

LAN IP address; must be a string specifying the IP address in dotted decimal notation

Details

This command specifies the LAN IP address to use when the LAN is configured using the manual configuration method. This setting is ignored when DLLA or DHCP is used.

This attribute does not indicate the actual setting that is presently in effect. Use the lan.status.ipaddress attribute to determine the present operating state of the LAN.

Example

ipaddress = lan.config.ipaddress

Retrieves the presently set LAN IP address.

Also see

lan.restoredefaults()

lan.status.ipaddress

lan.config.method

This attribute contains the LAN settings configuration method.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

LAN restore defaults

Nonvolatile memory

0 (lan.AUTO)

Usage

method = lan.config.method

lan.config.method = method

method

The method for configuring LAN settings; it can be one of the following values:

  • Selects automatic sequencing of configuration methods: 0 or lan.AUTO
  • Use only manually specified configuration settings: 1 or lan.MANUAL

Details

This attribute controls how the LAN IP address, subnet mask, default gateway address, and DNS server addresses are determined.

When method is lan.AUTO, the instrument first attempts to configure the LAN settings using dynamic host configuration protocol (DHCP). If DHCP fails, it tries dynamic link local addressing (DLLA). If DLLA fails, it uses the manually specified settings.

When method is lan.MANUAL, only the manually specified settings are used. Neither DHCP nor DLLA are attempted.

Example

print(lan.config.method)

Outputs the present method.

For example:

1.00000e+00

Also see

lan.restoredefaults()

lan.config.speed

This attribute contains the LAN speed used when restarting in manual configuration mode.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

LAN restore defaults

Nonvolatile memory

100 (100 Mbps)

Usage

speed = lan.config.speed

lan.config.speed = speed

speed

LAN speed setting in Mbps (10 or 100)

Details

This attribute stores the speed that is used if the LAN is restarted for manual configuration operation.

This attribute does not indicate the actual setting presently in effect. Use the lan.status.speed attribute to determine the present operating state of the LAN.

The LAN speed is measured in megabits per second (Mbps).

Example

lan.config.speed = 100

Configure LAN speed for 100.

Also see

lan.restoredefaults()

lan.status.speed

lan.config.subnetmask

This attribute contains the LAN subnet mask.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

LAN restore defaults

Nonvolatile memory

"255.255.255.0"

Usage

mask = lan.config.subnetmask

lan.config.subnetmask = "mask"

mask

String that specifies the LAN subnet mask value in dotted decimal notation

Details

This attribute specifies the LAN subnet mask that is used when the manual configuration method is used to configure the LAN. This setting is ignored when DLLA or DHCP is used.

This attribute does not indicate the actual setting presently in effect. Use the lan.status.subnetmask attribute to determine the present operating state of the LAN.

Example

print(lan.config.subnetmask)

Outputs the LAN subnet mask, such as:

255.255.255.0

Also see

lan.restoredefaults()

lan.status.subnetmask

lan.linktimeout

This attribute contains the LAN link timeout period.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

LAN restore defaults

Nonvolatile memory

20 (20 s)

Usage

timeout = lan.linktimeout

lan.linktimeout = timeout

timeout

The LAN link monitor time-out period (in seconds)

Details

You must enable the command lan.autoconnect before you can use this attribute.

The timeout value represents the amount of time that passes before the instrument disconnects from the LAN due to the loss of the LAN link integrity.

The LAN interface does not disconnect if the connection to the LAN is reestablished before the timeout value expires.

If the LAN link integrity is not restored before the timeout value expires, the instrument begins to monitor for a new connection.

Example

print(lan.linktimeout)

Outputs the present LAN link timeout setting.

Also see

lan.autoconnect

lan.restoredefaults()

lan.lxidomain

This attribute contains the LXI domain.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

LAN restore defaults

Nonvolatile memory

0

Usage

domain = lan.lxidomain

lan.lxidomain = domain

domain

The LXI domain number: 0 to 255

Details

This attribute sets the LXI domain number.

All outgoing LXI packets are generated with this domain number. All inbound LXI packets are ignored unless they have this domain number.

Example

print(lan.lxidomain)

Displays the LXI domain.

Also see

None

lan.nagle

This attribute controls the state of the LAN Nagle algorithm.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Power cycle

Not saved

0 (lan.DISABLE)

Usage

state = lan.nagle

lan.nagle = state

state

The state of the Nagle algorithm:

  • Enable the LAN Nagle algorithm for TCP connections: 1 or lan.ENABLE
  • Disable the Nagle algorithm for TCP connections: 0 or lan.DISABLE

Details

This attribute enables or disables the use of the LAN Nagle algorithm on transmission control protocol (TCP) connections.

Also see

lan.restoredefaults()

lan.reset()

This function resets the LAN interface.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

lan.reset()

Details

This function resets the LAN interface. It performs the commands lan.restoredefaults() and lan.applysettings(). It also resets the LAN password.

Also see

lan.applysettings()

lan.restoredefaults()

localnode.password

lan.restoredefaults()

This function resets LAN settings to default values.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

lan.restoredefaults()

Details

The settings that are restored are shown in the following table.

Settings that are restored to default

Attribute

Default setting

lan.autoconnect

lan.ENABLE

lan.config.dns.address[N]

"0.0.0.0"

lan.config.dns.domain

""

lan.config.dns.dynamic

lan.ENABLE

lan.config.dns.hostname

"K-<model number>-<serial number>"

lan.config.dns.verify

lan.ENABLE

lan.config.duplex

lan.FULL

lan.config.gateway

"0.0.0.0"

lan.config.ipaddress

"192.168.0.2"

lan.config.method

lan.AUTO

lan.config.speed

100

lan.config.subnetmask

"255.255.255.0"

lan.linktimeout

20 (seconds)

lan.lxidomain

0

lan.nagle

lan.DISABLE

lan.timedwait

20 (seconds)

This command is run when lan.reset() is sent.

Example

lan.restoredefaults()

Restores the LAN defaults.

Also see

lan.reset()

localnode.password

lan.status.dns.address[N]

This attribute contains the DNS server IP addresses.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

Yes

Not applicable

Not applicable

Not applicable

Usage

dnsAddress = lan.status.dns.address[N]

dnsAddress

DNS server IP address

N

Entry index: 1, 2, or 3

Details

This attribute is an array of Domain Name System (DNS) server addresses. The instrument can use up to three addresses.

Unused or disabled entries are returned as "0.0.0.0" when read. The dnsAddress returned is a string specifying the IP address of the DNS server in dotted decimal notation.

The value of lan.status.dns.address[1] is referenced first for all DNS lookups. The values of lan.status.dns.address[2] and lan.status.dns.address[3] are referenced second and third, respectively.

Example

print(lan.status.dns.address[1])

Outputs DNS server address 1, for example:

164.109.48.173

Also see

lan.config.dns.address[N]

lan.status.dns.name

lan.status.dns.name

This attribute contains the present DNS fully qualified host name.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

Yes

Not applicable

Not applicable

Not applicable

Usage

hostName = lan.status.dns.name

hostName

Fully qualified DNS host name that can be used to connect to the instrument

Details

A fully qualified domain name (FQDN) specifies its exact location in the tree hierarchy of the Domain Name System (DNS).

A FQDN is the complete domain name for a specific computer or host on the LAN. The FQDN consists of two parts: The host name and the domain name.

If the DNS host name for an instrument is not found, this attribute stores the IP address in dotted decimal notation.

Example

print(lan.status.dns.name)

Outputs the dynamic DNS host name.

Also see

lan.config.dns.address[N]

lan.config.dns.hostname

lan.status.duplex

This attribute contains the duplex mode presently in use by the LAN interface.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

Yes

Not applicable

Not applicable

Not applicable

Usage

duplex = lan.status.duplex

duplex

LAN duplex setting can be one of the following values:

  • Half-duplex operation: 0 or lan.HALF
  • Full-duplex operation: 1 or lan.FULL

Example

print(lan.status.duplex)

Outputs the present LAN duplex mode, such as:

1.00000e+00

Also see

None

lan.status.gateway

This attribute contains the gateway address presently in use by the LAN interface.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

Yes

Not applicable

Not applicable

Not applicable

Usage

gatewayAddress = lan.status.gateway

gatewayAddress

LAN gateway address presently in use

Details

The value of gatewayAddress is a string that indicates the IP address of the gateway in dotted decimal notation.

Example

print(lan.status.gateway)

Outputs the gateway address, such as:

192.168.0.1

Also see

lan.config.gateway

lan.status.ipaddress

This attribute contains the LAN IP address presently in use by the LAN interface.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

Yes

Not applicable

Not applicable

Not applicable

Usage

ipAddress = lan.status.ipaddress

ipAddress

LAN IP address specified in dotted decimal notation

Details

The IP address is a character string that represents the IP address assigned to the instrument.

Example

print(lan.status.ipaddress)

Outputs the LAN IP address currently in use, such as:

192.168.0.2

Also see

lan.config.ipaddress

lan.status.macaddress

This attribute contains the LAN MAC address.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

Yes

Not applicable

Not applicable

Not applicable

Usage

macAddress = lan.status.macaddress

macAddress

The instrument MAC address

Details

The MAC address is a character string representing the MAC address of the instrument in hexadecimal notation. The string includes colons that separate the address octets (see Example).

Example

print(lan.status.macaddress)

Outputs the MAC address of the instrument, for example:

08:00:11:00:00:57

Also see

None

lan.status.port.dst

This attribute contains the LAN dead socket termination (DST) port number.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

Yes

Not applicable

Not applicable

Not applicable

Usage

port = lan.status.port.dst

port

DST port number

Details

This attribute holds the TCP port number used to reset all other LAN socket connections.

To reset all LAN connections, open a connection to the DST port number.

Example

print(lan.status.port.dst)

Outputs the LAN DST port number, such as:

5.03000e+03

Also see

None

lan.status.port.rawsocket

This attribute contains the LAN raw socket connection port number.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

Yes

Not applicable

Not applicable

Not applicable

Usage

port = lan.status.port.rawsocket

port

Raw socket port number

Details

The TCP port number is used to connect the instrument and to control the instrument over a raw socket communications interface.

Example

print(lan.status.port.rawsocket)

Outputs the LAN raw socket port number, such as:

5.02500e+03

Also see

None

lan.status.port.telnet

This attribute contains the LAN telnet connection port number.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

Yes

Not applicable

Not applicable

Not applicable

Usage

port = lan.status.port.telnet

port

Telnet port number

Details

This attribute holds the TCP port number used to connect to the instrument to control it over a telnet interface.

Example

print(lan.status.port.telnet)

Get the LAN telnet connection port number.

Output:

2.30000e+01

Also see

None

lan.status.port.vxi11

This attribute contains the LAN VXI-11 connection port number.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

Yes

Not applicable

Not applicable

Not applicable

Usage

port = lan.status.port.vxi11

port

LAN VXI-11 port number

Details

This attribute stores the TCP port number used to connect to the instrument over a VXI-11 interface.

Example

print(lan.status.port.vxi11)

Outputs the VXI-11 number, such as:

1.02400e+03

Also see

None

lan.status.speed

This attribute contains the LAN speed.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

Yes

Not applicable

Not applicable

Not applicable

Usage

speed = lan.status.speed

speed

LAN speed in Mbps: 10 or 100

Details

This attribute indicates the transmission speed presently in use by the LAN interface.

Example

print(lan.status.speed)

Outputs the transmission speed of the instrument presently in use, such as:

1.00000e+02

Also see

None

lan.status.subnetmask

This attribute contains the LAN subnet mask that is presently in use by the LAN interface.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

Yes

Not applicable

Not applicable

Not applicable

Usage

mask = lan.status.subnetmask

mask

A string specifying the subnet mask in dotted decimal notation

Details

Use this attribute to determine the present operating state of the LAN. This attribute returns the present LAN subnet mask value if the LAN is manually configured or when DLLA or DHCP is used.

Example

print(lan.status.subnetmask)

Outputs the subnet mask of the instrument that is presently in use, such as:

255.255.255.0

Also see

lan.config.subnetmask

lan.timedwait

This attribute contains the LAN timed-wait state interval.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

LAN restore defaults

Nonvolatile memory

20 (20 s)

Usage

timeout = lan.timedwait

lan.timedwait = timeout

timeout

The LAN timed-wait state interval in seconds

Details

This attribute controls the amount of time that resources are allocated to closed TCP connections. When a TCP connection is closed, the connection is put in a timed-wait state and resources remain allocated for the connection until the timed-wait state ends. During the timed-wait interval, the instrument processes delayed packets that arrive after the connection is closed.

Use this attribute to tailor the timed-wait state interval for the instrument.

Example

lan.timedwait = 30

Set the amount of time resources are allocated to TCP connection to 30 s.

Also see

lan.restoredefaults()

lan.trigger[N].assert()

This function simulates the occurrence of the trigger and generates the corresponding event ID.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

lan.trigger[N].assert()

N

The LAN event number: 1 to 8

Details

Generates and sends a LAN trigger packet for the LAN event number specified.

Sets the pseudo line state to the appropriate state.

The following indexes provide the listed LXI events:

  • 1:LAN0
  • 2:LAN1
  • 3:LAN2
  • …
  • 8:LAN7

Example

lan.trigger[5].assert()

Creates a trigger with LAN packet 5.

Also see

lan.lxidomain

lan.trigger[N].clear()

lan.trigger[N].mode

lan.trigger[N].overrun

lan.trigger[N].stimulus

lan.trigger[N].wait()

Understanding hardware value and pseudo line state

lan.trigger[N].clear()

This function clears the event detector for a LAN trigger.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

lan.trigger[N].clear()

N

The LAN event number: 1 to 8

Details

The trigger event detector enters the detected state when an event is detected. This function clears a trigger event detector and discards the history of the trigger packet.

This function clears all overruns associated with this LAN trigger.

Example

lan.trigger[5].clear()

Clears the event detector with LAN packet 5.

Also see

lan.trigger[N].assert()

lan.trigger[N].overrun

lan.trigger[N].stimulus

lan.trigger[N].wait()

lan.trigger[N].connect()

This function prepares the event generator for outgoing trigger events.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

lan.trigger[N].connect()

N

The LAN event number: 1 to 8

Details

This command prepares the event generator to send event messages. For TCP connections, this opens the TCP connection.

The event generator automatically disconnects when either the protocol or IP address for this event is changed.

Example

lan.trigger[1].protocol = lan.MULTICAST

lan.trigger[1].connect()

lan.trigger[1].assert()

Set the protocol for LAN trigger 1 to be multicast when sending LAN triggers. Then, after connecting the LAN trigger, send a message on LAN trigger 1 by asserting it.

Also see

lan.trigger[N].assert()

lan.trigger[N].ipaddress

lan.trigger[N].overrun

lan.trigger[N].protocol

lan.trigger[N].stimulus

lan.trigger[N].wait()

lan.trigger[N].connected

This attribute stores the LAN event connection state.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

Yes

Not applicable

Not applicable

Not applicable

Usage

connected = lan.trigger[N].connected

connected

The LAN event connection state:

  • Connected: true
  • Not connected: false

N

The LAN event number: 1 to 8

Details

This read-only attribute is set to true when the LAN trigger is connected and ready to send trigger events following a successful lan.trigger[N].connect() command. If the LAN trigger is not ready to send trigger events, this value is false.

This attribute is also false when either lan.trigger[N].protocol or lan.trigger[N].ipaddress attributes are changed or the remote connection closes the connection.

Example

lan.trigger[1].protocol = lan.MULTICAST

print(lan.trigger[1].connected)

Outputs true if connected or false if not connected.

Example output:

false

Also see

lan.trigger[N].connect()

lan.trigger[N].ipaddress

lan.trigger[N].protocol

lan.trigger[N].disconnect()

This function disconnects the LAN trigger.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

lan.trigger[N].disconnect()

N

The LAN event number: 1 to 8

Details

For TCP connections, this closes the TCP connection.

The LAN trigger automatically disconnects when either the lan.trigger[N].protocol or lan.trigger[N].ipaddress attributes for this event are changed.

Also see

lan.trigger[N].ipaddress

lan.trigger[N].protocol

lan.trigger[N].EVENT_ID

This constant is the event identifier used to route the LAN trigger to other subsystems (using stimulus properties).

Type

TSP-Link accessible

Affected by

Where saved

Default value

Constant

Yes

 

 

 

Usage

lan.trigger[N].EVENT_ID

N

The LAN event number: 1 to 8

Details

Set the stimulus of any trigger event detector to the value of this constant to have it respond to incoming LAN trigger packets.

Example

digio.trigger[14].stimulus = lan.trigger[1].EVENT_ID

Route occurrences of triggers on LAN trigger 1 to digital I/O trigger 14.

Also see

None

lan.trigger[N].ipaddress

This attribute specifies the address of UDP or TCP listeners.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Instrument reset
LAN trigger N reset
Recall setup

Not saved

"0.0.0.0"

Usage

ipAddress = lan.trigger[N].ipaddress

lan.trigger[N].ipaddress = "ipAddress"

ipAddress

The LAN address for this attribute as a string in dotted decimal notation

N

The LAN event number: 1 to 8

Details

Sets the IP address for outgoing trigger events.

Set to "0.0.0.0" for multicast.

After changing this setting, the lan.trigger[N].connect() command must be called before outgoing messages can be sent.

Example

lan.trigger[3].protocol = lan.TCP

lan.trigger[3].ipaddress = "192.168.1.100"

lan.trigger[3].connect()

Set the protocol for LAN trigger 3 to be lan.TCP when sending LAN triggers.

Use IP address "192.168.1.100" to connect the LAN trigger.

Also see

lan.trigger[N].connect()

lan.trigger[N].mode

This attribute sets the trigger operation and detection mode of the specified LAN event.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Instrument reset
LAN trigger N reset
Recall setup

Not saved

0 (lan.TRIG_EITHER)

Usage

mode = lan.trigger[N].mode

lan.trigger[N].mode = mode

mode

A number representing the trigger mode (0 to 7); see the Details section for more information

N

A number representing the LAN event number (1 to 8)

Details

This command controls how the trigger event detector and the output trigger generator operate on the given trigger. These settings are intended to provide behavior similar to the digital I/O triggers.

LAN trigger mode values

Mode

Number

Trigger packets detected as input

LAN trigger packet generated for output with a…

lan.TRIG_EITHER

0

Rising or falling edge (positive or negative state)

negative state

lan.TRIG_FALLING

1

Falling edge (negative state)

negative state

lan.TRIG_RISING

2

Rising edge (positive state)

positive state

lan.TRIG_RISINGA

3

Rising edge (positive state)

positive state

lan.TRIG_RISINGM

4

Rising edge (positive state)

positive state

lan.TRIG_SYNCHRONOUS

5

Falling edge (negative state)

positive state

lan.TRIG_SYNCHRONOUSA

6

Falling edge (negative state)

positive state

lan.TRIG_SYNCHRONOUSM

7

Rising edge (positive state)

negative state

lan.TRIG_RISING and lan.TRIG_RISINGA are the same.

lan.TRIG_RISING and lan.TRIG_RISINGM are the same.

Use of either lan.TRIG_SYNCHRONOUSA or lan.TRIG_SYNCHRONOUSM instead of lan.TRIG_SYNCHRONOUS is preferred. Use of lan.TRIG_SYNCHRONOUS is provided for compatibility with older products and other Keithley products.

Example

print(lan.trigger[1].mode)

Outputs the present LAN trigger mode of LAN event 1.

Also see

Digital I/O

TSP-Link system expansion interface

lan.trigger[N].overrun

This attribute contains the overrun status of the LAN event detector.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

Yes

LAN trigger N clear
LAN trigger N reset
Instrument reset
Recall setup

Not applicable

Not applicable

Usage

overrun = lan.trigger[N].overrun

overrun

The trigger overrun state for the specified LAN packet: true or false

N

The LAN event number: 1 to 8

Details

This command indicates whether an event has been ignored because the event detector was already in the detected state when the event occurred.

This is an indication of the state of the event detector built into the synchronization line itself. It does not indicate if an overrun occurred in any other part of the trigger model, or in any other construct that is monitoring the event.

It also is not an indication of an output trigger overrun. Output trigger overrun indications are provided in the status model.

Example

overrun = lan.trigger[5].overrun

print(overrun)

Checks the overrun status of a trigger on LAN5 and outputs the value, such as:

false

Also see

lan.trigger[N].assert()

lan.trigger[N].clear()

lan.trigger[N].stimulus

lan.trigger[N].wait()

lan.trigger[N].protocol

This attribute sets the LAN protocol to use for sending trigger messages.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Instrument reset
LAN trigger N reset
Recall setup

Not saved

0 (lan.TCP)

Usage

protocol = lan.trigger[N].protocol

lan.trigger[N].protocol = protocol

protocol

The protocol to use for messages from the trigger:

  • 0 or lan.TCP
  • 1 or lan.UDP
  • 2 or lan.MULTICAST

N

The LAN event number: 1 to 8

Details

The LAN trigger listens for trigger messages on all supported protocols, but uses the designated protocol for sending outgoing messages. After changing this setting, lan.trigger[N].connect() must be called before outgoing event messages can be sent.

When the lan.MULTICAST protocol is selected, the lan.trigger[N].ipaddress attribute is ignored and event messages are sent to the multicast address 224.0.23.159.

Example

print(lan.trigger[1].protocol)

Get LAN protocol to use for sending trigger messages for LAN event 1.

Also see

lan.trigger[N].connect()

lan.trigger[N].ipaddress

lan.trigger[N].pseudostate

This attribute sets the simulated line state for the LAN trigger.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Instrument reset
LAN trigger N reset
Recall setup

Not saved

1

Usage

pseudostate = lan.trigger[N].pseudostate

lan.trigger[N].pseudostate = pseudostate

pseudostate

The simulated line state: 0 or 1

N

A number representing the LAN event number: 1 to 8

Details

This attribute can be set to initialize the pseudo line state to a known value.

Setting this attribute does not cause the LAN trigger to generate any events or output packets.

Example

print(lan.trigger[1].pseudostate)

Get the present simulated line state for the LAN event 1.

Also see

None

lan.trigger[N].stimulus

This attribute specifies events that cause this trigger to assert.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Instrument reset
LAN trigger N reset
Recall setup

Not saved

0

Usage

triggerStimulus = lan.trigger[N].stimulus

lan.trigger[N].stimulus = triggerStimulus

triggerStimulus

The LAN event identifier used to trigger the event

N

A number specifying the trigger packet over the LAN for which to set or query the trigger source (1 to 8)

Details

This attribute specifies which event causes a LAN trigger packet to be sent for this trigger. Set triggerStimulus to one of the trigger event IDs, which are shown in the following table.

Trigger event IDs*

Event ID

Event description

smuX.trigger.SWEEPING_EVENT_ID

Occurs when the source‑measure unit (SMU) transitions from the idle state to the arm layer of the trigger model

smuX.trigger.ARMED_EVENT_ID

Occurs when the SMU moves from the arm layer to the trigger layer of the trigger model

smuX.trigger.SOURCE_COMPLETE_EVENT_ID

Occurs when the SMU completes a source action

smuX.trigger.MEASURE_COMPLETE_EVENT_ID

Occurs when the SMU completes a measurement action

smuX.trigger.PULSE_COMPLETE_EVENT_ID

Occurs when the SMU completes a pulse

smuX.trigger.SWEEP_COMPLETE_EVENT_ID

Occurs when the SMU completes a sweep

smuX.trigger.IDLE_EVENT_ID

Occurs when the SMU returns to the idle state

digio.trigger[N].EVENT_ID

Occurs when an edge is detected on a digital I/O line

tsplink.trigger[N].EVENT_ID

Occurs when an edge is detected on a TSP‑Link line

lan.trigger[N].EVENT_ID

Occurs when the appropriate LXI trigger packet is received on LAN trigger object N

display.trigger.EVENT_ID

Occurs when the TRIG key on the front panel is pressed

trigger.EVENT_ID

Occurs when a *TRG command is received on the remote interface

GPIB only: Occurs when a GET bus command is received

USB only: Occurs when a USBTMC TRIGGER message is received

VXI-11 only: Occurs with the VXI-11 command device_trigger; reference the VXI-11 standard for additional details on the device trigger operation

trigger.blender[N].EVENT_ID

Occurs after a collection of events is detected

trigger.timer[N].EVENT_ID

Occurs when a delay expires

trigger.generator[N].EVENT_ID

Occurs when the trigger.generator[N].assert() function is executed

 

 

* Use the name of the trigger event ID to set the stimulus value rather than the numeric value. Using the name makes the code compatible for future upgrades (for example, if the numeric values must change when enhancements are added to the instrument).

Setting this attribute to zero disables automatic trigger generation.

If any events are detected prior to calling lan.trigger[N].connect(), the event is ignored and the action overrun is set.

Example

lan.trigger[5].stimulus = trigger.timer[1].EVENT_ID

Use timer 1 trigger event as the source for LAN packet 5 trigger stimulus.

Also see

lan.trigger[N].assert()

lan.trigger[N].clear()

lan.trigger[N].connect()

lan.trigger[N].overrun

lan.trigger[N].wait()

lan.trigger[N].wait()

This function waits for an input trigger.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

triggered = lan.trigger[N].wait(timeout)

triggered

Trigger detection indication: true or false

N

The trigger packet over LAN to wait for: 1 to 8

timeout

Maximum amount of time in seconds to wait for the trigger event

Details

If one or more trigger events have been detected since the last time lan.trigger[N].wait() or lan.trigger[N].clear() was called, this function returns immediately.

After waiting for a LAN trigger event with this function, the event detector is automatically reset and rearmed regardless of the number of events detected.

Example

triggered = lan.trigger[5].wait(3)

Wait for a trigger with LAN packet 5 with a timeout of 3 seconds.

Also see

lan.trigger[N].assert()

lan.trigger[N].clear()

lan.trigger[N].overrun

lan.trigger[N].stimulus

localnode.autolinefreq

This attribute enables or disables automatic power line frequency detection at start‑up.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Not applicable

Nonvolatile memory

true (enabled)

Usage

flag = localnode.autolinefreq

localnode.autolinefreq = flag

flag

The auto line frequency detection setting:

  • true: Enable automatic line frequency detection at start-up
  • false: Disable automatic line frequency detection at start-up

Details

When this attribute is set to true, the power line frequency is detected automatically the next time the 2600B powers up. After the power line frequency is automatically detected at power-up, the localnode.linefreq attribute is set automatically to 50 or 60.

If the localnode.linefreq attribute is explicitly set, localnode.autolinefreq is automatically set to false.

When using this command from a remote node, replace localnode with the node reference, for example node[5].autolinefreq.

Also see

localnode.linefreq

localnode.description

This attribute stores a user-defined description and mDNS service name of the instrument.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Not applicable

Nonvolatile memory

Instrument specific (see Details)

Usage

localnode.description = "description"

description = localnode.description

description

User-defined description and mDNS service name of the instrument; use a string of 63 characters or less

Details

This attribute stores a string that contains a description of the instrument. This value appears on the LXI welcome page and is used as the mDNS service name of the instrument.

  • The factory default value of this attribute is "Keithley Instruments SMU <model number> - <serial number>", where <model number> and <serial number> are replaced with the actual model number and serial number of the instrument.

To revert this description to the factory default value, set this attribute to an empty string. An empty string is a string of length zero or a string consisting entirely of whitespace characters.

When using this command from a remote node, replace localnode with the node reference, for example node[5].description.

Example

description = "System in Lab 05"

localnode.description = description

Set description to System in Lab 05.

Also see

None

localnode.license

This attribute returns the product license agreements.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

Yes

Not applicable

Nonvolatile memory

Not applicable

Usage

license_agreement = localnode.license

license_agreement

The text of the license agreements

Example

print(localnode.license)

Returns the license agreements for the 2600B.

Also see

None

localnode.linefreq

This attribute contains the power line frequency setting that is used for NPLC calculations.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Not applicable

Nonvolatile memory

60 (60 Hz)

Usage

frequency = localnode.linefreq

localnode.linefreq = frequency

frequency

An integer representing the detected or specified line frequency of the instrument

Details

To achieve optimum noise rejection when performing measurements at integer NPLC apertures, set the line frequency attribute to match the frequency (50 Hz or 60 Hz) of the AC power line.

When using this command from a remote node, replace localnode with the node reference, for example node[5].linefreq. When this attribute is set, the localnode.autolinefreq attribute is automatically set to false. You can have the instrument automatically detect the AC power line frequency and set this attribute with the line frequency detected when the instrument power is turned on by setting the localnode.autolinefreq attribute to true.

Example 1

frequency = localnode.linefreq

Reads line frequency setting.

Example 2

localnode.linefreq = 60

Sets the line frequency to 60 Hz.

Also see

localnode.autolinefreq

localnode.model

This attribute stores the model number.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

Yes

Not applicable

Not applicable

Not applicable

Usage

model = localnode.model

model

The model number of the instrument

Example

print(localnode.model)

Outputs the model number of the local node. For example:

2602B

Also see

localnode.serialno

localnode.password

This attribute stores the remote access password.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (W)

Yes

LAN reset
LAN restore defaults

Nonvolatile memory

""

Usage

localnode.password = "password"

password

A string that contains the remote interface password, up to 255 characters

Details

This attribute stores the password that is set for any remote interface. When password usage is enabled with localnode.passwordmode, you must supply a password to change the configuration or to control an instrument from a remote command interface.

The instrument continues to use the old password for all interactions until the command to change it executes. When changing the password, give the instrument time to execute the command before attempting to use the new password.

You cannot retrieve a lost password from any command interface.

You can reset the password by resetting the LAN from the front panel or by sending the lan.reset() command.

When using this command from a remote node, localnode should be replaced with the node reference, for example, node[5].password.

Example

localnode.password = "N3wpa55w0rd"

Changes the remote interface password to N3wpa55w0rd.

Also see

lan.reset()

localnode.passwordmode

localnode.passwordmode

This attribute stores the password enable mode for remote access to the instrument.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Not applicable

Nonvolatile memory

1 (localnode.PASSWORD_WEB)

Usage

mode = localnode.passwordmode

localnode.passwordmode = mode

mode

The remote password enable mode

Details

This attribute controls if and where remote access passwords are required. Set this attribute to one of the values below to enable password checking:

  • localnode.PASSWORD_NONE or 0: Disable passwords everywhere
  • localnode.PASSWORD_WEB or 1: Use passwords on the web interface only
  • localnode.PASSWORD_LAN or 2: Use passwords on the web interface and all LAN interfaces

localnode.PASSWORD_ALL or 3: Use passwords on the web interface and all remote command interfaces VARIABLE - NOTE When a password is set for the web interface, you cannot make changes using the web interface options Virtual Front Panel, Flash Upgrade, or TSB Embedded.

When using this command from a remote node, replace localnode with the node reference, for example node[5].passwordmode.

If you enable password mode, you must also assign a password.

Example

mode = localnode.PASSWORD_WEB

localnode.passwordmode = mode

localnode.password = "SMU1234"

Sets value of mode to PASSWORD_WEB.

Allows use of passwords on the web interface only.

Set the password to SMU1234.

Also see

localnode.password

localnode.prompts

This attribute determines if the instrument generates prompts in response to command messages.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Power cycle

Not saved

0 (disabled)

Usage

prompting = localnode.prompts

localnode.prompts = prompting

prompting

Prompting mode:

  • Do not generate prompts: 0
  • Generate prompts: 1

Details

When the prompting mode is enabled, the instrument generates prompts when the instrument is ready to take another command. Because the prompt is not generated until the previous command completes, enabling prompts provides handshaking with the instrument to prevent buffer overruns.

When prompting is enabled, the instrument might generate the following prompts:

  • TSP>. The standard prompt, which indicates that the previous command completed normally.
  • TSP?. The prompt that is issued if there are unread entries in the error queue when the prompt is issued. Like the TSP> prompt, it indicates that processing of the command is complete. It does not mean the previous command generated an error, only that there were still errors in the queue when the command processing was complete.
  • >>>>. The continuation prompt, which occurs when downloading scripts. When downloading scripts, many command messages must be sent as a group. The continuation prompt indicates that the instrument is expecting more messages as part of the present command.

Commands do not generate prompts. The instrument generates prompts in response to command completion.

Prompts are enabled or disabled only for the remote interface that is active when you send the command. For example, if you enable prompts when the LAN connection is active, they are not enabled for a subsequent USB connection.

VARIABLE - NOTE Do not disable prompting when using Test Script Builder. Test Script Builder requires prompts and sets the prompting mode automatically. If you disable prompting, the instrument stops responding when you communicate using Test Script Builder because it is waiting for a common complete prompt from Test Script Builder.

Example

localnode.prompts = 1

Enable prompting.

Also see

localnode.showerrors

tsplink.reset()

localnode.prompts4882

This attribute enables and disables the generation of prompts for IEEE Std 488.2 common commands.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Power cycle

Not saved

1 (enabled)

Usage

prompting = localnode.prompts4882

localnode.prompts4882 = prompting

prompting

IEEE Std 488.2 prompting mode:

  • Disable prompting: 0
  • Enable prompting: 1

Details

When this attribute is enabled, the IEEE Std 488.2 common commands generate prompts if prompting is enabled with the localnode.prompts attribute. If localnode.prompts4882 is enabled, limit the number of *trg commands sent to a running script to 50 regardless of the setting of the localnode.prompts attribute.

When this attribute is disabled, IEEE Std 488.2 common commands do not generate prompts. When using the *trg command with a script that executes trigger.wait() repeatedly, disable prompting to avoid problems associated with the command interface input queue filling.

Example

localnode.prompts4882 = 0

Disables IEEE Std 488.2 common command prompting.

Also see

localnode.prompts

localnode.reset()

This function resets the local node instrument.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

localnode.reset()

Details

A local node reset includes:

  • Source‑measure unit (SMU) attributes affected by a SMU reset are reset
  • Other settings are restored to factory default settings

A localnode.reset() is different than a reset() because reset() resets the entire system.

If you want to reset a specific instrument or a subordinate node, use the node[X].reset() command. To do this, replace localnode with the node reference, for example, node[5].reset().

Example

localnode.reset()

Resets the local node.

Also see

reset()

smuX.reset()

localnode.revision

This attribute stores the firmware revision level.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

Yes

Not applicable

Not applicable

Not applicable

Usage

revision = localnode.revision

revision

Firmware revision level

Details

This attribute indicates the revision number of the firmware that is presently running in the instrument.

When using this command from a remote node, replace localnode with the node reference. For example, node[5].revision.

Example

print(localnode.revision)

Outputs the present revision level.

Sample output:

1.0.0

Also see

localnode.description

localnode.model

localnode.serialno

localnode.serialno

This attribute stores the serial number of the instrument.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

Yes

Not applicable

Not applicable

Not applicable

Usage

serialno = localnode.serialno

serialno

The serial number of the instrument

Details

This indicates the instrument serial number.

Example

display.clear()

display.settext(localnode.serialno)

Clears the instrument display.

Places the serial number of the instrument on the top line of its display.

Also see

localnode.description

localnode.model

localnode.revision

localnode.showerrors

This attribute sets whether or not the instrument automatically sends generated errors.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Power cycle

Not saved

0 (disabled)

Usage

errorMode = localnode.showerrors

localnode.showerrors = errorMode

errorMode

Show error setting:

  • Show errors: 1
  • Do not show errors: 0

Details

If this attribute is set to 1, the instrument automatically sends any generated errors stored in the error queue, and then clears the queue. Errors are processed either after executing a command message or immediately before issuing a prompt if prompts are enabled.

If this attribute is set to 0, errors are left in the error queue and must be explicitly read or cleared.

When using this command from a remote node, replace localnode with the node reference, for example, node[5].showerrors.

Example

localnode.showerrors = 1

Enables sending of generated errors.

Also see

localnode.prompts

makegetter()

This function creates a function to get the value of an attribute.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

getter = makegetter(table, "attributeName")

getter

The return value

table

Read‑only table where the attribute is located

attributeName

A string representing the name of the attribute

Details

This function is useful for aliasing attributes to improve execution speed. Calling the function created with makegetter() executes more quickly than accessing the attribute directly.

Creating a getter function is only useful if it is going to be called several times. Otherwise, the overhead of creating the getter function outweighs the overhead of accessing the attribute directly.

Example

getlevel = makegetter(smua.source, "levelv")

v = getlevel()

Creates a getter function called getlevel.

When getlevel() is called, it returns the value of smua.source.levelv.

Also see

makesetter()

makesetter()

This function creates a function that, when called, sets the value of an attribute.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

setter = makesetter(table, "attributeName")

setter

Function that sets the value of the attribute

table

Read-only table where the attribute is located

attributeName

The string name of the attribute

Details

This function is useful for aliasing attributes to improve execution speed. Calling the setter function execute more quickly than accessing the attribute directly.

Creating a setter function is only useful if it is going to be called several times. If you are not calling the setter function several times, it is more efficient to access the attribute directly.

Example

setlevel = makesetter(smua.source, "levelv")for v = 1, 10 do

setlevel(v)

end

Creates a setter function called setlevel.

Using setlevel() in the loop sets the value of smua.source.levelv, performing a source sweep.

Also see

makegetter()

meminfo()

This function returns the present amount of available memory and the total amount of memory in the instrument.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

freeMem, totalMem = meminfo()

freeMem

The amount of free dynamically allocated memory available

totalMem

The total amount of dynamically allocated memory in the instrument

Details

This function returns two values:

  • The amount of free dynamically allocated memory available in kilobytes
  • The total amount of dynamically allocated memory on the instrument in kilobytes

The difference between the two values is the amount presently used.

Example

print(meminfo())

Retrieve the amount of free and total memory in the instrument.

Output:

2.89840e+04 3.27680e+04

Also see

None

node[N].execute()

This function starts test scripts from a remote node. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes (see Details)

 

 

 

Usage

node[N].execute("scriptCode")

N

The node number of this instrument

scriptCode

A string containing the source code

Details

Only the remote master node can use the execute command to run a script on this node. This function does not run test scripts on the master node; only on this node when initiated by the master node.

This function may only be called when the group number of the node is different than the node of the master.

This function does not wait for the script to finish execution.

This command should only be used from a remote master when controlling this instrument over a TSP-LinkTM.

Example 1

node[2].execute(sourcecode)

Runs script code on node 2. The code is in a string variable called sourcecode.

Example 2

node[3].execute("x = 5")

Runs script code in string constant ("x = 5") to set x

equal to 5 on node 3.

Example 3

node[32].execute(TestDut.source)

Runs the test script stored in the variable TestDut

(previously stored on the master node) on node 32.

Also see

TSP advanced features

tsplink.group

node[N].getglobal()

This function returns the value of a global variable. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

value = node[N].getglobal("name")

value

The value of the variable

N

The node number of this instrument: 1 to 64

name

The global variable name

Details

This function retrieves the value of a global variable from the runtime environment of this node.

Do not use this command to retrieve the value of a global variable from the local node. Instead, access the global variable directly. This command should only be used from a remote master when controlling this instrument over a TSP-Link network.

Example

print(node[5].getglobal("test_val"))

Retrieves and outputs the value of the global variable named test_val from node 5.

Also see

node[N].setglobal()

TSP advanced features

node[N].setglobal()

This function sets the value of a global variable. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

node[N].setglobal("name", value)

<AIT_DELETE_START>

TSP advanced features<AIT_DELETE_END><AIT_DELETE_START>

TSP advanced features<AIT_DELETE_END>

TSP advanced features

opc()

This function sets the operation complete status bit when all overlapped commands are completed.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

opc()

Details

This function causes the operation complete bit in the Standard Event Status Register to be set when all previously started local overlapped commands are complete.

Note that each node independently sets its operation complete bits in its own status model. Any nodes that are not actively performing overlapped commands set their bits immediately. All remaining nodes set their own bits as they complete their own overlapped commands.

Example

opc()

waitcomplete()

print("1")

Output:

1

Also see

Status model

waitcomplete()

os.remove()

This function deletes the file or directory with a given name.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

success, msg = os.remove("filename")

success

A success indicator (true or nil)

msg

A message value (nil or an error message)

filename

A string representing the name of the file or directory to delete

Details

Directories must be empty before using the os.remove() function to delete them.

If this function fails, it returns nil (for success) and an error message string (for msg).

Example

os.remove("testFile")

Delete the file named testFile.

Also see

os.rename()

os.rename()

This function renames an existing file or directory.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

success, msg = os.rename("oldname", "newname")

success

A success indicator (true or nil)

msg

A message value (nil or an error message)

oldname

String representing the name of the file or directory to rename

newname

String representing the new name of the file or directory

Details

If this function fails, it returns nil (for success) and an error message string (for msg).

Example

os.rename("testFile", "exampleFile")

 

Changes the name of the existing file testFile to the name exampleFile.

Also see

os.remove()

os.time()

This function generates a time value in UTC time.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

utcTime = os.time()

utcTime = os.time(timespec)

utcTime

Time value in UTC time

timespec

The date and time (year, month, day, hour, and minute)

Details

The timespec is a table using the fields listed in the table below.

year

The year (1970 or later)

month

The month (1 to 12)

day

The day (1 to 31)

hour

The hour (00 to 23)

min

The minute (00 to 59)

sec

The second (00 to 59)

If the time (hour, minute, and second) options are not used, they default to noon for that day. When called without a parameter (the first form), the function returns the current time.

Set the time zone before calling the os.time() function.

Example

systemTime = os.time({year = 2019,

month = 3,

day = 31,

hour = 14,

min = 25})

settime(systemTime)

Sets the date and time to Mar 31, 2019 at 2:25 pm.

Also see

settime()

settimezone()

print()

This function generates a response message.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

print(value1)

print(value1, value2)

print(value1, ..., valueN)

value1

The first argument to output

value2

The second argument to output

valueN

The last argument to output

...

One or more values separated with commas

Details

TSP-enabled instruments do not have inherent query commands. Like other scripting environments, the print() command and other related print() commands generate output. The print() command creates one response message.

The output from multiple arguments is separated with a tab character.

Numbers are printed using the format.asciiprecision attribute. If you want use Lua formatting, print the return value from the tostring() function.

Example 1

x = 10

print(x)

Example of an output response message:

10

Your output might be different, depending on the ASCII precision setting.

Example 2

x = true

print(tostring(x))

Example of an output response message:

true

Also see

format.asciiprecision

printbuffer()

This function prints data from tables or reading buffer subtables.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

printbuffer(startIndex, endIndex, bufferVar)

printbuffer(startIndex, endIndex, bufferVar, bufferVar2)

printbuffer(startIndex, endIndex, bufferVar, ..., bufferVarN)

startIndex

Beginning index of the buffer to print; this must be more than one and less than endIndex

endIndex

Ending index of the buffer to print; this must be more than startIndex and less than the index of the last entry in the tables

bufferVar

First table or reading buffer subtable to print

bufferVar2

Second table or reading buffer subtable to print

bufferVarN

The last table or reading buffer subtable to print

...

One or more tables or reading buffer subtables separated with commas

Details

If startIndex = 1, 1 is used as startIndex. If n < endIndex, n is used as endIndex.

When any given reading buffers are used in overlapped commands that have not yet completed (at least to the specified index), this function outputs data as it becomes available.

When there are outstanding overlapped commands to acquire data, n refers to the index that the last entry in the table has after all the measurements have completed.

If you pass a reading buffer instead of a reading buffer subtable, the default subtable for that reading buffer is used.

This command generates a single response message that contains all data. The response message is stored in the output queue.

The format.data attribute controls the format of the response message.

Example

format.data = format.ASCII

format.asciiprecision = 6

printbuffer(1, rb1.n, rb1)

This assumes that rb1 is a valid reading buffer in the runtime environment. The use of rb1.n

(bufferVar.n) indicates that the instrument should output all readings in the reading buffer. In this example, rb1.n equals 10.

Example of output data (rb1.readings):

4.07205e-05, 4.10966e-05, 4.06867e-05, 4.08865e-05, 4.08220e-05, 4.08988e-05, 4.08250e-05, 4.09741e-05, 4.07174e-05, 4.07881e-05

Also see

***bufferVar.n

bufferVar.readings

format.asciiprecision

format.byteorder

format.data

printnumber()

printnumber()

This function prints numbers using the configured format.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

printnumber(value1)

printnumber(value1, value2)

printnumber(value1, ..., valueN)

value1

First value to print in the configured format

value2

Second value to print in the configured format

valueN

Last value to print in the configured format

...

One or more values separated with commas

Details

There are multiple ways to use this function, depending on how many numbers are to be printed.

This function prints the given numbers using the data format specified by format.data and format.asciiprecision.

Example

format.asciiprecision = 10

x = 2.54

printnumber(x)

format.asciiprecision = 3

printnumber(x, 2.54321, 3.1)

Configure the ASCII precision to 10 and set x to 2.54.

Read the value of x based on these settings.

Change the ASCII precision to 3.

View how the change affects the output of x and some numbers.

Output:

2.540000000e+00

2.54e+00, 2.54e+00, 3.10e+00

Also see

format.asciiprecision

format.byteorder

format.data

print()

printbuffer()

PulseIMeasureV()

This KIPulse factory script function performs a specified number of pulse I, measure V cycles.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

PulseIMeasureV(smu, bias, level, ton, toff, points)

smu

Instrument channel (for example, smua refers to SMU channel A)

bias

Bias level in amperes

level

Pulse level in amperes

ton

Pulse on time in seconds

toff

Pulse off time in seconds

points

Number of pulse-measure cycles

Details

Data for pulsed voltage measurements, current levels, and timestamps are stored in smua.nvbuffer1.

If any parameters are omitted or nil, the operator is prompted to enter them using the front panel.

To perform the specified number of pulse I, measure V cycles, this function:

1. Sets the smu to output bias amperes and dwell for toff seconds.

2. Sets the smu to output level amperes and dwell for ton seconds.

3. Performs voltage measurement with source at level amperes.

4. Sets the smu to output bias amperes for toff seconds.

5. Repeats steps 2 through 4 for all remaining points pulse-measure cycles.

PulseIMeasureV

Example

PulseIMeasureV(smua, 0.001, 1.0,

20e-3, 40e-3, 10)

SMU A outputs 1 mA and dwells for 40 ms, outputs 1 A and dwells for 20 ms. The voltage measurements occur during each 20 ms dwell period. After the measurement, the output returns to 1 mA and dwells for 40 ms. This pulse‑measure process repeats nine more times.

Also see

KIPulse factory script

PulseVMeasureI()

This KIPulse factory script function performs a specified number of pulse V, measure I cycles.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

PulseVMeasureI(smu, bias, level, ton, toff, points)

smu

Instrument channel (for example, smua refers to SMU channel A)

bias

Bias level in volts

level

Pulse level in volts

ton

Pulse on time in seconds

toff

Pulse off time in seconds

points

Number of pulse-measure cycles

Details

If any parameters are omitted or nil, the operator is prompted to enter them using the front panel. Data for pulsed current measurements, voltage levels, and timestamps are stored in smuX.nvbuffer1.

To perform the specified number of pulse V, measure I cycles, this function:

1. Sets the smu to output bias volts and dwell for toff seconds

2. Sets the smu to output level volts and dwell for ton seconds

3. Performs voltage measurement with source at level volts

4. Sets the smu to output bias volts for toff seconds

5. Repeats steps 2 through 4 for the remaining points pulse-measure cycles

PulseVMeasureI()

Example

smua.measure.nplc = 0.001

PulseVMeasureI(smua, -1, 1, 1E-3, 2E-3, 20)

SMU A outputs -1 V and dwells for 2 ms, outputs 1 V and dwells for 1 ms. The current measurements occur during each 1 ms dwell period. After the measurement, the output returns to -1 V and dwells for 2 ms. This pulse-measure process repeats 19 more times.

Also see

KIPulse factory script

QueryPulseConfig()

This KIPulse factory script function allows you to inspect the settings of the preconfigured pulse train assigned to tag.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

tbl = QueryPulseConfig(tag)

tag

Numeric identifier to be assigned to the defined pulse train

tbl

Returned table

Details

Once a pulse train is configured and assigned to a tag, you can use the QueryPulseConfig() command to inspect the settings of this preconfigured pulse train.

This function returns a table that contains the settings associated with the tag input parameter.

Return values:

tostring()

A function that returns most settings in a string that is convenient for printing

tag

Identifying tag for this pulse train

smu

The SMU configured for pulsing

func

Pulse function:

smuX.OUTPUT_DCAMPS or

smuX.OUTPUT_DCVOLTS

bias

Pulse bias level

level

Pulse level for non‑sweeping pulses

start

Starting level for sweep pulses

stop

Ending level for sweep pulses

limit

Limit value

ton

On time in seconds

toff

Off time in seconds

points

The number of points in this pulse train

buf

Reference to the buffer that contains measurement data

sync_in

The sync_in digio line, if used

sync_out

The sync_out digio line, if used

sourcevalues

A table containing the source value for each point in the pulse train

Example

smua.reset()

 

smua.source.rangev = 5

smua.source.rangei = 1

smua.source.levelv = 0

 

smua.measure.rangev = 5

smua.measure.rangei = 1

smua.measure.nplc = 0.01

smua.measure.autozero = smua.AUTOZERO_ONCE

 

smua.nvbuffer1.clear()

smua.nvbuffer1.appendmode = 1

 

smua.source.output = smua.OUTPUT_ON

 

f1, msg1 = ConfigPulseVMeasureI(smua, 0, 5,

1, 0.002, 0.2, 10, smua.nvbuffer1, 1)

 

print(QueryPulseConfig(1).tostring())

Configure channel A to generate a pulse train, query configuration, and then display as a string. Channel A pulses voltage from a bias level of 0 V to a pulse level of 5 V. The pulse level is present for 2 ms, and the bias level for 200 ms with a 1 A limit setting. A total of 10 pulses is generated, and the measurement data is stored in smua.nvbuffer1. This pulse train is assigned to tag = 1.

Output:

>> tag = 1

>> smu = smua

>> func = volts

>> type = pulse

>> bias = 0

>> level = 5

>> limit = 1

>> time on = 0.002

>> time off = 0.2

>> points = 10

>> measure = yes

>> sync_in = 0

>> sync_out = 0

>> sync_in_timeout = 0

>> sync_out_abort = 0

>> { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 }

Also see

ConfigPulseIMeasureV()

ConfigPulseIMeasureVSweepLin()

ConfigPulseIMeasureVSweepLog()

ConfigPulseVMeasureI()

ConfigPulseVMeasureISweepLin()

ConfigPulseVMeasureISweepLog()

KIPulse factory script

reset()

This function resets commands to their default settings.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

reset()

reset(system)

system

What to reset:

  • If the node is the master, the entire system is reset (default): true
  • Only the local group is reset: false

Details

The reset() command in its simplest form resets the entire TSP‑enabled system, including the controlling node and all subordinate nodes.

If you want to reset a specific instrument, use either the localnode.reset() or node[X].reset() command. Use the localnode.reset() command for the local instrument. Use the node[X].reset() command to reset an instrument on a subordinate node.

You can only reset the entire system using reset(true) if the node is the master. If the node is not the master node, executing this command generates an error.

Example

reset(true)

If the node is the master node, the entire system is reset; if the node is not the master node, an error is generated.

Also see

localnode.reset()

savebuffer()

This KISavebuffer factory script function saves a specified reading buffer as either a .csv file or an .xml file.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

savebuffer(buffer, "formatType", "fileName")

buffer

The reading buffer to save

formatType

A string indicating which file type to use: csv or xml

fileName

The file name of the saved buffer

Details

Use this function to save the specified buffer to a USB flash drive.

This function only saves to a USB flash drive.

You are not required to qualify the path to the USB flash drive, but you can add /usb1/ before the fileName (see Example 2).

Example 1

savebuffer(smua.nvbuffer1, "csv", "mybuffer.csv")

Save smua dedicated reading buffer 1 as a .csv file named mybuffer.csv.

Example 2

savebuffer(smua.nvbuffer1, "csv", "/usb1/mybuffer.csv")

Save smua dedicated reading buffer 1 to an installed USB flash drive as a .csv file named mybuffer.csv.

Also see

KISavebuffer factory script

smuX.savebuffer()

script.anonymous

This is a reference to the anonymous script.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

No

See Details

See Details

Not applicable

Usage

scriptVar = script.anonymous

scriptVar

The name of the variable that references the script

Details

You can use the script.anonymous script like any other script. To save the anonymous script as a user script, give it a name.

This script is replaced by loading a script with the loadscript or loadandrunscript commands when they are used without a name.

Example 1

script.anonymous.list()

Displays the content of the anonymous script.

Example 2

print(script.anonymous.source)

Retrieves the source of the anonymous script.

Also see

Anonymous scripts

scriptVar.autorun

scriptVar.list()

scriptVar.name

scriptVar.run()

scriptVar.save()

scriptVar.source

script.delete()

This function deletes a script from nonvolatile memory.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

script.delete("scriptName")

scriptName

The string that represents the name of the script

Example

script.delete("test8")

Deletes a user script named test8 from nonvolatile memory.

Also see

Delete user scripts from the instrument

scriptVar.save()

script.factory.catalog()

This function returns an iterator that can be used in a for loop to iterate over all the factory scripts.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

for name in script.factory.catalog() do body end

name

String representing the name of the script

body

Code that implements the body of the for loop to process the names in the catalog

Details

Accessing this catalog of scripts allows you to process the factory scripts. The entries are enumerated in no particular order.

Each time the body of the function executes, name takes on the name of one of the factory scripts. The for loop repeats until all scripts have been iterated.

Example

for name in script.factory.catalog() do

print(name)

end

Retrieve the catalog listing for factory scripts.

Also see

None

script.load()

This function creates a script from a specified file.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

scriptVar = script.load("file")

scriptVar = script.load("file", "name")

scriptVar

The created script; this is nil if an error is encountered

file

The path and file name of the script file to load

name

The name of the script to be created

Details

The file path may be absolute or relative to the current working directory. The root folder of the USB flash drive has the absolute path "/usb1/". Both the forward slash (/) and backslash (\) are supported as directory separators.

The file to be loaded must start with the loadscript or loadandrunscript keywords, contain the body of the script, and end with the endscript keyword.

Script naming:

  • If the name parameter is an empty string, or name is absent (or nil) and the script name cannot be extracted from the file, scriptVar is the only handle to the created script.
  • If name is given (and not nil), any script name embedded in the file is ignored.
  • If name conflicts with the name of an existing script in the script.user.scripts table, the existing script’s name attribute is set to an empty string before it is replaced in the script.user.scripts table by the new script.
  • If name is absent or nil, the command attempts to extract the name of the script from the file. Any conflict between the extracted name and that of an existing script in the scripts table generates an error. If the script name cannot be extracted, the created script's name attribute is initialized to the empty string and must be set to a valid nonempty string before saving the script to nonvolatile memory.

Example

myTest8 =
script.load("/usb1/filename.tsp", "myTest8")

Loads the script myTest8 from the USB flash drive.

Also see

script.new()

script.new()

This function creates a script.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

scriptVar = script.new("code")

scriptVar = script.new("code", "name")

scriptVar

The name of the variable that references the script

code

A string containing the body of the script

name

The name of the script

Details

The name parameter is the name that is added to the script.user.scripts table. If name is not provided, an empty string is used, and the script is unnamed. If the name already exists in script.user.scripts, the name attribute of the existing script is set to an empty string before it is replaced by the new script.

The name parameter is used for the instrument front‑panel display. If this parameter is not defined, the script is not available from the front panel.

You must save the new script into nonvolatile memory to retain it when the instrument is turned off.

Example 1

myTest8 = script.new(

"display.clear() display.settext('Hello from myTest8')", "myTest8")

myTest8()

Creates a new script referenced by the variable myTest8 with the name myTest8.

Runs the script. The instrument displays Hello from myTest8.

Example 2

autoexec = script.new(

"display.clear() display.settext('Hello from autoexec')", 'autoexec')

Creates a new autoexec script that clears the display when the instrument is turned on and displays Hello from autoexec.

Also see

Create a script using the script.new() command

Global variables and the script.user.scripts table

Named scripts

scriptVar.save()

script.newautorun()

script.newautorun()

This function creates a script and enables autorun.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

scriptVar = script.newautorun("code")

scriptVar = script.newautorun("code", "name")

scriptVar

The name of the variable that references the script

code

A string that contains the body of the script

name

The name of the script

Details

The name parameter is the name that is added to the script.user.scripts table. If name is not provided, an empty string is used, and the script is unnamed. If the name already exists in script.user.scripts, the name attribute of the existing script is set to an empty string before it is replaced by the new script.

The name parameter is used for the instrument front‑panel display. If this parameter is not defined, the script is not available from the front panel.

You must save the new script into nonvolatile memory to retain it when the instrument is turned off.

The script is run automatically immediately after it is created.

This command is the same as the script.new() function except that the script is automatically run.

Example

NewAuto = script.newautorun("print('Hello from new auto run command')", 'NewAuto')

print(NewAuto.autorun)

print(NewAuto.name)

Creates a new script called NewAuto that automatically has the autorun attribute set to yes after it is created. The name is set to NewAuto.

Output:

Hello from new auto run command

yes

NewAuto

Also see

Create a script using the script.new() command

Global variables and the script.user.scripts table

Named scripts

script.new()

scriptVar.autorun

scriptVar.save()

script.restore()

This function restores a script that was removed from the runtime environment.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

script.restore(name)

name

The name of the script to be restored

Details

This command copies the script from nonvolatile memory into the runtime environment. It also creates a global variable with the same name as the name of the script.

Example

script.restore("test9")

Restores a script named test9 from nonvolatile memory.

Also see

script.delete()

script.run()

This function runs the anonymous script.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

script.run()

run()

Details

Each time the script.run() command is given, the anonymous script is executed. This script can be run using this command many times without having to resend it.

Example

run()

Runs the anonymous script.

Also see

script.anonymous

script.user.catalog()

This function returns an iterator that can be used in a for loop to iterate over all the scripts stored in nonvolatile memory.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

for name in script.user.catalog() do body end

name

String representing the name of the script

body

Code that implements the body of the for loop to process the names in the catalog

Details

This function accesses the catalog of scripts stored in nonvolatile memory, which allows you to process all scripts in nonvolatile memory. The entries are enumerated in no particular order.

Each time the body of the function executes, name takes on the name of one of the scripts stored in nonvolatile memory. The for loop repeats until all scripts have been iterated.

Example

for name in script.user.catalog() do

print(name)

end

Retrieve the catalog listing for user scripts.

Also see

None

scriptVar.autorun

This attribute controls the autorun state of a script.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

No

Not applicable

See Details

See Details

Usage

scriptVar.autorun = "state"

state = scriptVar.autorun

scriptVar

The name of the variable that references the script

state

String that indicates whether or not the script runs automatically when powered on:

  • Script runs automatically: yes
  • Script does not run automatically: no

Details

Autorun scripts run automatically when the instrument is turned on. You can set any number of scripts to autorun.

The run order for autorun scripts is arbitrary, so make sure the run order is not important.

The default value for scriptVar.autorun depends on how the script was loaded. The default is no if the script was loaded with loadscript or script.new(). It is yes for scripts loaded with loadandrunscript or script.newautorun().

VARIABLE - NOTE Make sure to save the script in nonvolatile memory after setting the autorun attribute so that the instrument retains the setting.

Example

test5.autorun = "yes"

test5.save()

Assume a script named test5 is in the runtime environment.

The next time the instrument is turned on, test5 script automatically loads and runs.

Also see

None

scriptVar.list()

This function generates a script listing.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

scriptVar.list()

scriptVar

The name of the variable that references the script

Details

This function generates output in the form of a sequence of response messages (one message for each line of the script). It also generates output of the script control messages (loadscript or loadandrunscript and endscript).

Example

test7 = script.new("display.clear() display.settext('Hello from my test')", "test7")

test7()

test7.save()

test7.list()

Creates a script named test7 that displays text on the front panel and lists the script with the following output:

loadscript test7

display.clear() display.settext("Hello from my test")

endscript

Also see

Load a script by sending commands over the remote interface

Retrieve source code one line at a time

scriptVar.name

This attribute contains the name of a script in the runtime environment.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

No

Not applicable

Not applicable

Not applicable

Usage

scriptVar.name = "scriptName"

scriptName = scriptVar.name

scriptVar

Name of the variable that references the script

scriptName

A string that represents the name of the script

Details

When setting the script name, this attribute renames the script that the variable scriptVar references.

This attribute must be either a valid Lua identifier or the empty string. Changing the name of a script changes the index that is used to access the script in the script.user.scripts table. Setting the attribute to an empty string removes the script from the table completely and the script becomes an unnamed script.

As long as there are variables referencing an unnamed script, the script can be accessed through those variables. When all variables that reference an unnamed script are removed, the script is removed from the runtime environment.

If the new name is the same as a name that is already used for another script, the name of the other script is set to an empty string, and that script becomes unnamed.

VARIABLE - NOTE Changing the name of a script does not change the name of any variables that reference that script. The variables still reference the script, but the names of the script and variables may not match.

Example

test7 = script.new("display.clear() display.settext('Hello from my test')", "")

test7()

print(test7.name)

 

test7.name = "test7"

print(test7.name)

test7.save()

This example calls the script.new() function to create a script with no name, runs the script, names the script test7, and then saves the script in nonvolatile memory.

Also see

Rename a script

script.new()

scriptVar.save()

scriptVar.run()

This function runs a script.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

scriptVar.run()

scriptVar()

scriptVar

The name of the variable that references the script

Details

The scriptVar.run() function runs the script referenced by scriptVar. You can also run the script by using scriptVar().

To run a factory script, use script.factory.scripts.scriptName(), replacing scriptName with the name of the factory script.

Example

test8.run()

Runs the script referenced by the variable test8.

Also see

None

scriptVar.save()

This function saves the script to nonvolatile memory or to a USB flash drive.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

scriptVar.save()

scriptVar.save("filename")

scriptVar

The name of variable that references the script

filename

A string that contains the file name to use when saving the script to a USB flash drive

Details

The scriptVar.save() function saves a script to nonvolatile memory or a USB flash drive. The root folder of the USB flash drive has the absolute path /usb1/.

If no filename is specified (the file name parameter is an empty string), the script is saved to internal nonvolatile memory. If a filename is given, the script is saved to the USB flash drive.

You can add the file extension, but it is not required. The only allowed extension is .tsp (see Example 2).

Example 1

test8.save()

Saves the script referenced by the variable test8 to nonvolatile memory.

Example 2

test8.save("/usb1/myScript.tsp")

Saves the script referenced by the variable test8 to a file named myScript.tsp on your USB flash drive.

Also see

Save a user script

scriptVar.source

This attribute contains the source code of a script.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)
(see Details)

No

Not applicable

Not saved

Not applicable

Usage

code = scriptVar.source

scriptVar.source = nil

scriptVar

The name of the variable that references the script that contains the source code

code

A string that contains the body of the script

Details

The loadscript or loadandrunscript and endscript keywords are not included in the source code.

The body of the script is a single string with lines separated by the newline character.

The instrument automatically stores the source for all scripts that are loaded on the instrument. To free up memory or to obfuscate the code, assign nil to the source attribute of the script. Although this attribute is writable, it can only be set to the nil value.

Example

test7 = script.new("display.clear() display.settext('Hello from my test')", "")

print(test7.source)

This example creates a script called test7 that displays a message on the front panel and retrieves the source code.

Output:

display.clear() display.settext('Hello from my test')

Also see

scriptVar.list()

serial.baud

This attribute configures the baud rate for the RS-232 port.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Not applicable

Nonvolatile memory

9600

Usage

baud = serial.baud

serial.baud = baud

baud

The baud rate (300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, or 115200)

Details

A new baud rate setting takes effect when the command to change it is processed.

VARIABLE - NOTE Allow ample time for the command to be processed before attempting to communicate with the instrument again. If possible, set the baud rate from one of the other command interfaces or from the front panel.

The reset function has no effect on data bits.

Example

serial.baud = 1200

Sets the baud rate to 1200.

Also see

RS-232 interface operation

serial.databits

serial.flowcontrol

serial.parity

serial.databits

This attribute configures character width (data bits) for the RS-232 port.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Not applicable

Nonvolatile memory

8

Usage

bits = serial.databits

serial.databits = bits

bits

An integer representing the character width (7 or 8)

Details

A new data width setting takes effect when the command to change it is processed.

VARIABLE - NOTE Allow ample time for the command to be processed before attempting to communicate with the instrument again. If possible, set the character width from one of the other command interfaces or from the front panel.

The reset function has no effect on data bits.

Example

serial.databits = 8

Sets data width to 8.

Also see

RS-232 interface operation

serial.baud

serial.flowcontrol

serial.parity

serial.flowcontrol

This attribute configures flow control for the RS-232 port.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Not applicable

Nonvolatile memory

"none" (serial.FLOW_NONE)

Usage

flow = serial.flowcontrol

serial.flowcontrol = flow

flow

A string or value that represents flow control configuration; set to:

  • "none" or serial.FLOW_NONE (selects no flow control)
  • "hardware" or serial.FLOW_HARDWARE (selects hardware flow control)

Details

A new flow control setting takes effect when the command to change it is processed.

VARIABLE - NOTE Allow ample time for the command to be processed before attempting to communicate with the instrument again. If possible, set the flow control from one of the other command interfaces or from the front panel.

The reset function has no effect on flow control.

Example

serial.flowcontrol = serial.FLOW_NONE

Sets flow control to none.

Also see

serial.baud

serial.databits

serial.parity

serial.parity

This attribute configures parity for the RS-232 port.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Not applicable

Nonvolatile memory

"none" (serial.PARITY_NONE)

Usage

parity = serial.parity

serial.parity = parity

parity

Set parity to one of the following values:

  • Select no parity ("none" or serial.PARITY_NONE)
  • Select even parity ("even" or serial.PARITY_EVEN)
  • Select odd parity ("odd" or serial.PARITY_ODD)

Details

A new parity setting takes effect when the command to change it is processed.

VARIABLE - NOTE Allow ample time for the command to be processed before attempting to communicate with the instrument again. If possible, set parity from one of the other command interfaces or from the front panel.

The reset function has no effect on parity.

Example

serial.parity = serial.PARITY_NONE

Sets parity to none.

Also see

RS-232 interface operation

serial.baud

serial.databits

serial.flowcontrol

serial.read()

This function reads available characters (data) from the serial port.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

data = serial.read(maxchars)

data

A string that consists of all data read from the serial port

maxchars

An integer that specifies the maximum number of characters to read

Details

This function reads available characters from the serial port. It does not wait for new characters to arrive. As long as maxchars is less than 200 characters, all characters that are received by the serial port (before the serial.read() command is executed) are returned. If too many characters are received between calls to this function, the RS-232 buffers overflow and some characters may be lost.

Call this function as many times as necessary to receive the required number of characters. For optimal performance, use a small delay between repeated calls to this function.

The data returned is the raw data stream read from the port. No characters, such as control characters or terminator characters, are interpreted.

If you attempt to use this function when the serial port is enabled as a command interface, a settings conflict error is generated.

Example

data = serial.read(200)

 

print(data)

Read data from the serial port.

Output:

John Doe

The above output indicates that the string "John Doe" was read from the serial port.

Also see

serial.write()

serial.write()

This function writes data to the serial port.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

serial.write("data")

data

A string representing the data to write

Details

This function writes the specified string to the serial port, where it can be read by connected equipment (for example, a component handler).

No terminator characters are added to the data, and data is written exactly as specified by the data parameter.

Example

serial.write("1 2 3 4")

Write data string "1 2 3 4" to the serial port.

Also see

serial.read()

settime()

This function sets the real-time clock (sets the present time of the system).

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

settime(time)

time

The time in seconds since January 1, 1970 UTC

Details

This function sets the date and time of the instrument based on the time parameter (specified in UTC time). UTC time is specified as the number of seconds since Jan 1, 1970, UTC. You can use UTC time from a local time specification, or you can use UTC time from another source (for example, your computer).

Example

systemTime = os.time({year = 2020,

month = 3,

day = 31,

hour = 14,

min = 25})

settime(systemTime)

Sets the date and time to Mar 31, 2020 at 2:25 pm.

Also see

gettimezone()

os.time()

settimezone()

settimezone()

This function sets the local time zone.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

settimezone(offset)

settimezone("offset", "dstOffset", "dstStart", "dstEnd")

offset

String representing offset from UTC

dstOffset

String representing the daylight savings offset from UTC

dstStart

String representing when daylight savings time starts

dstEnd

String representing when daylight savings time ends

Details

You only need to set the time zone if you use the os.time() and os.date() functions.

If only one parameter is given, the same time offset is used throughout the year. If four parameters are given, time is adjusted twice during the year for daylight savings time.

offset and dstOffset are strings of the form "[+|-]hh[:mm[:ss]]" that indicate how much time must be added to the local time to get UTC time:

  • hh is a number between 0 and 23 that represents hours
  • mm is a number between 0 and 59 that represents minutes
  • ss is a number between 0 and 59 that represents seconds

The minute, second, +, and - fields are optional.

For example, to set the UTC-5 time zone, you specify the string "5", because UTC-5 is 5 hours behind UTC and you must add 5 hours to the local time to determine UTC time. To specify the time zone UTC4, you specify "-4", because UTC4 is 4 hours ahead of UTC and 4 hours must be subtracted from the local time to determine UTC.

dstStart and dstEnd are strings of the form "MM.w.dw/hh[:mm[:ss]]" that indicate when daylight savings time begins and ends respectively:

  • MM is a number between 1 and 12 that represents the month
  • w is a number between 1 and 5 that represents the week in the month
  • dw is a number between 0 and 6 that represents the day of the week (where 0 is Sunday)

The rest of the fields represent the time of day that the change takes effect:

  • hh represents hours
  • mm represents minutes
  • ss represents seconds

The minutes and seconds fields are optional.

The week of the month and day of the week fields are not specific dates.

Example

settimezone("8", "1", "3.3.0/02", "11.2.0/02")
settimezone(offset)

Sets offset to equal +8 hours, +1 hour for DST, starts on Mar 14 at 2:00 am, ends on Nov 7 at 2:00 am.

Sets local time zone to offset.

Also see

gettimezone()

os.time()

settime()

setup.poweron

This attribute specifies which saved setup to recall when the instrument is turned on.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Not applicable

Nonvolatile memory

0

Usage

id = setup.poweron

setup.poweron = id

id

An integer that specifies the setup to recall when the instrument power is turned on (0 to 5)

Details

When id = 0, the instrument uses the factory default setup when it is turned on. When id is set to 1 to 5, it uses the setup saved with setup.save().

Only setups stored in nonvolatile memory are available (you cannot recall a script from a USB flash drive with this command).

To save a script that is used when the instrument is powered on, you can create a configuration script and name it autoexec.

Example

setup.poweron = 0

Set the instrument to use the factory default setup when power is turned on.

Also see

setup.save()

Start-up (power-on) configuration

setup.recall()

This function recalls settings from a saved setup.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

setup.recall(id)

id

An integer or string that specifies the location of the setup to recall:

  • Factory default setup: 0
  • User-saved setup in nonvolatile memory: 1 to 5
  • User-saved setup on a USB flash drive: "/path/filename"

Details

When the id parameter is an integer (n), it is interpreted as the setup number to restore from the instrument's nonvolatile memory. When = 0, the instrument recalls the factory default setup; when = 1 to 5, the instrument recalls a user-saved setup.

When the id parameter is a string, it is interpreted as the path and file name of the setup to restore from a file on a USB flash drive. The path may be absolute or relative to the current working directory.

Before a setup is recalled, an instrument reset is performed.

Example 1

setup.recall(1)

Recall the user-saved setup at location 1.

Example 2

setup.recall("/usb1/KEITHLEY_30730.set")

Recall a user-saved setup stored in a file named KEITHLEY_30730 on a USB flash drive.

Also see

Saved setups

setup.save()

setup.save()

This function saves the present setup as a user-saved setup.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

setup.save(id)

id

An integer or string specifying where to save the user setup:

  • Save in nonvolatile memory (1 to 5)
  • Save as user-saved setup on a USB flash drive ("/path/filename")

Details

When the id parameter is an integer (n), it is interpreted as the setup number to save to the nonvolatile memory of the instrument.

VARIABLE - NOTE When you save to a specified integer (1 to 5) in nonvolatile memory, the previous setup at that same location is overwritten.

When the id parameter is a string, it is interpreted as the path and file name of the location to save the present setup on a USB flash drive. The path may be absolute or relative to the current working directory.

Example

setup.save(5)

Saves the present setup to the internal memory of the instrument at location 5.

Also see

Saved setups

setup.recall()

smuX.abort()

This function terminates all overlapped operations on the specified source‑measure unit (SMU).

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

smuX.abort()

X

Source‑measure unit (SMU) channel (for example, smua.abort() applies to SMU channel A)

Details

The smuX.abort() function does not turn the output off or change any settings.

If this function is used to abort a sweep, when it is executed, the SMU exits its trigger model immediately and returns to the idle state of the trigger model.

Example

smua.abort()

Terminates all overlapped operations on SMU channel A.

Also see

smuX.measure.overlappedY()

smuX.trigger.initiate()

smuX.buffer.getstats()

This function returns the statistics for a specified reading buffer.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

statistics = smuX.buffer.getstats(bufferVar)

statistics

The statistical data about the data in the reading buffer

X

Source‑measure unit (SMU) channel (for example, smua.buffer.getstats() specifies SMU channel A)

bufferVar

The reading buffer to process

Details

This function returns a table with statistical data about the data that is placed in the buffer.

The SMU automatically updates reading buffer statistics as data is added to the reading buffer. When the reading buffer is configured to wrap around and overwrite older data with new data, the buffer statistics include the data that was overwritten.

The table returned from this function is a snapshot. Although the SMU continues to update the statistics, the table returned is not updated. To get fresh statistics, call this function again.

The statistics parameter has the attributes described in the following table.

Attribute

When returned

Description

n

Always

The number of data points on which the statistics are based

mean

When n > 0

The average of all readings added to the buffer

stddev

When n > 1

The standard deviation of all readings (samples) added to the buffer

min

When n > 0

A table containing data about the minimum reading value added to the buffer

max

When n > 0

A table containing data about the maximum reading value added to the buffer

If n equals zero (0), all other attributes are nil. If n equals 1, the stddev attribute is nil because the standard deviation of a sample size of 1 is undefined.

The min and max entries each have the attributes defined in the following table.

Attribute

Description

measurefunction

String indicating the function that was measured for the reading (current, voltage, ohms, or watts)

measurerange

The full-scale range value for the measurement range used when the measurement was made

reading

The reading value

sourcefunction

String indicating the source function at the time of the measurement (current or voltage)

sourceoutputstate

String indicating the state of the source (off or on)

sourcerange

Full-scale range value for the source range used when the measurement was made

sourcevalue

If bufferVar.collectsourcevalues is enabled, the sourced value in effect at the time of the reading

status

Status value for the reading; the status value is a floating-point number that encodes the status value into a floating-point value

timestamp

If bufferVar.collecttimestamps is enabled, the timestamp, in seconds, between when the reading was acquired and when the first reading in the buffer was acquired; adding this value to the base timestamp produces the actual time the measurement was acquired

Example

reset()

smua.nvbuffer1.clear()

smua.measure.count = 10

smua.measure.v(smua.nvbuffer1)

stats = smua.buffer.getstats(smua.nvbuffer1)

print("n= "..stats.n)

print("mean= "..stats.mean)

print("stddev= "..stats.stddev)

print("min= "..stats.min.reading)

print("max= "..stats.max.reading)

Make measurements and store them in nvbuffer1. Print the statistics for the data.

Example output:

n= 10

mean= -2.3851394871599e-05

stddev= 4.406545187484e-07

min= -2.4557113647461e-05

max= -2.322196996829e-05

Also see

smuX.buffer.recalculatestats()

smuX.buffer.recalculatestats()

This function recalculates the statistics of the specified reading buffer.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

smuX.buffer.recalculatestats(bufferVar)

X

Source‑measure unit (SMU) channel (for example, smua.buffer.recalculatestats() specifies SMU channel A)

bufferVar

The reading buffer to process

Details

This function causes the SMU to regenerate the reading buffer statistics about the specified reading buffer. Because the SMU automatically updates reading buffer statistics when data is added to the reading buffer, this function is generally not needed. When the reading buffer is configured to wrap around and overwrite older data with new data, the buffer statistics include the data that was overwritten. Use this function to recalculate the statistics that include only the data that is presently stored in the buffer.

Example

smua.buffer.recalculatestats(smua.nvbuffer1)

Recalculates the statistics of buffer smua.nvbuffer1.

Also see

bufferVar.fillmode

smuX.buffer.getstats()

smuX.cal.adjustdate

This attribute stores the date of the last calibration adjustment.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

SMU cal. restore

SMU nonvolatile memory

Initially set to factory
calibration date

Usage

adjustDate = smuX.cal.adjustdate

smuX.cal.adjustdate = adjustDate

adjustDate

Date of the last adjustment

X

Source‑measure unit (SMU) channel (for example, smua.cal.adjustdate applies to SMU channel A)

Details

This attribute stores the adjustment date associated with the active calibration set. The adjustment date can be read at any time but can only be assigned a new value when calibration has been enabled with the smuX.cal.unlock() function.

You cannot change the adjustment date without first making a change to the calibration constants.

Once you change any calibration constants, you must set the adjustment date before you can save the calibration data to the nonvolatile memory of the SMU.

This attribute is stored with the active calibration set. If a different calibration set is restored, this attribute reflects the date stored with that set.

smuX.cal.adjustdate must be set to the date the adjustment was done using the UTC time and date. The date is stored as the number of seconds since UTC, 12:00 am Jan 1, 1970.

Due to the internal storage format, smuX.cal.adjustdate is only accurate to within a few minutes of the value set.

Example

smua.cal.adjustdate = os.time()

Sets the adjustment date for SMU channel A to the present time set on the instrument.

Also see

Adjustment

os.time()

smuX.cal.date

smuX.cal.due

smuX.cal.lock()

smuX.cal.restore()

smuX.cal.save()

smuX.cal.state

smuX.cal.unlock()

smuX.cal.date

This attribute stores the calibration date of the active calibration set.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

SMU calibration restore

SMU nonvolatile memory

Initially set to factory calibration date

Usage

calDate = smuX.cal.date

smuX.cal.date = calDate

calDate

The calibration date of the active calibration set

X

Source‑measure unit (SMU) channel (for example, smua.cal.date applies to SMU channel A)

Details

This attribute stores the calibration date that is associated with the active calibration set. The calibration date can be read at any time but can only be assigned a new value when calibration has been enabled with the smuX.cal.unlock() function. It is typically set to the date when the instrument was calibrated.

This attribute is stored with the active calibration set. If a different calibration set is restored, this attribute reflects the date stored with that set.

smuX.cal.date must be set to the date the calibration was done using the UTC time and date. The date is stored as the number of seconds since UTC 12:00 am Jan 1, 1970.

Due to the internal storage format, smuX.cal.date is accurate to within a few minutes of the value set.

Example

smua.cal.date = os.time()

Sets calibration date for SMU channel A to the present time set on the instrument.

Also see

Adjustment

os.time()

smuX.cal.adjustdate

smuX.cal.due

smuX.cal.lock()

smuX.cal.restore()

smuX.cal.save()

smuX.cal.state

smuX.cal.unlock()

smuX.cal.due

This attribute stores the calibration due date for the next calibration.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

SMU cal. restore

SMU nonvolatile memory

0

Usage

calDue = smuX.cal.due

smuX.cal.due = calDue

calDue

Due date of next calibration (0 indicates that no date is set)

X

Source‑measure unit (SMU) channel (for example, smua.cal.due applies to SMU channel A)

Details

This attribute stores the calibration due date associated with the active calibration set. The calibration due date can be read at any time but can only be assigned a new value when calibration has been enabled with the smuX.cal.unlock() function. It is typically set to the date when the next calibration should be performed.

This attribute is stored with the active calibration set. If a different calibration set is restored, this attribute reflects the due date stored with that set.

smuX.cal.due must be set to the date the next calibration is required using the UTC time and date. The date is stored as the number of seconds since UTC 12:00 am Jan 1, 1970.

Due to the internal storage format, smuX.cal.due is only accurate to within a few minutes of the value set.

Example

smua.cal.due = os.time() + 365 * 24 * 60 * 60

Sets the SMU channel A calibration due date equal to one year from the present time set on the instrument.

Also see

Adjustment

os.time()

smuX.cal.adjustdate

smuX.cal.date

smuX.cal.lock()

smuX.cal.restore()

smuX.cal.state

smuX.cal.unlock()

smuX.cal.lock()

This function disables the commands that change calibration settings.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

smuX.cal.lock()

X

Source‑measure unit (SMU) channel (for example, smua.cal.lock() specifies SMU channel A)

Details

Before you can lock calibration, the calibration constants must be written to nonvolatile memory or a previous calibration set must be restored. Error code 5012, "Cal data not saved - save or restore before lock," results if this function is called when the calibration state is smuX.CALSTATE_CALIBRATING.

Example

smua.cal.lock()

Disables calibration functions for SMU channel A.

Also see

Adjustment

smuX.cal.restore()

smuX.cal.save()

smuX.cal.state

smuX.cal.unlock()

smuX.cal.password

This attribute stores the password required to enable calibration.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (W)

Yes

Not applicable

SMU nonvolatile memory

"KI0026XX"

Usage

smuX.cal.password = "newPassword"

X

SMU channel (for example, smua.cal.password applies to SMU channel A)

newPassword

A string that contains the new password

Details

A new password can only be assigned when calibration has been unlocked.

The calibration password is write-only and cannot be read.

Example

smua.cal.password = "LetMeIn"

Assigns a new calibration password for SMU channel A.

Also see

Adjustment

smuX.cal.unlock()

smuX.cal.polarity

This attribute controls which calibration constants are used for all subsequent measurements.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Instrument reset
SMU reset
SMU cal. lock
Recall setup

Not saved

0 (smuX.CAL_AUTO)

Usage

calPolarity = smuX.cal.polarity

smuX.cal.polarity = calPolarity

calPolarity

The polarity to use for measurements. Set to one of the following values:

  • 0 or smuX.CAL_AUTO: Automatic polarity detection
  • 1 or smuX.CAL_POSITIVE: Measure with positive polarity calibration constants
  • 2 or smuX.CAL_NEGATIVE: Measure with negative polarity calibration constants

X

SMU channel (for example, smua.cal.polarity applies to SMU channel A)

Details

This attribute controls which polarity calibration constants are used to make all subsequent measurements.

This attribute does not affect the smuX.measure.calibrateY() command. The polarity for smuX.measure.calibrateY() is dictated by the range parameter that is defined for it. The measurement calibration commands require the measurements provided to have been made using the polarity being calibrated.

When making measurements for calibration points far away from zero, the correct polarity constants are inherently used. However, when making measurements near zero, it is possible that the instrument could use the calibration constants from the wrong polarity. Setting smuX.cal.polarity to positive or negative forces measurements to be made using the calibration constants for a given polarity, rather than basing the choice on the raw measurement data.

This attribute can only be set to positive or negative when calibration is unlocked. This attribute is automatically set to smuX.CAL_AUTO when calibration is locked.

Example

smua.cal.polarity = smua.CAL_POSITIVE

Selects positive calibration constants for all subsequent measurements on SMU channel A.

Also see

Adjustment

reset()

smuX.cal.lock()

smuX.cal.unlock()

smuX.measure.calibrateY()

smuX.reset()

smuX.source.calibrateY()

smuX.cal.restore()

This function loads a stored set of calibration constants.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

smuX.cal.restore()

smuX.cal.restore(calset)

X

Source‑measure unit (SMU) channel (for example, smua.cal.restore() applies to SMU channel A)

calset

The calibration set to be loaded; set calset to one of the following values:

  • 0 or smuX.CALSET_NOMINAL: A set of calibration constants that are uncalibrated, but set to nominal values to allow rudimentary functioning of the instrument
  • 1 or smuX.CALSET_FACTORY: The calibration constants when the instrument left the factory
  • 2 or smuX.CALSET_DEFAULT: The normal calibration set
  • 3 or smuX.CALSET_PREVIOUS: The calibration set that was used before the last default set was overwritten

Details

This function overwrites the present set of calibration constants with constants read from nonvolatile memory.

This function is disabled until a successful call to smuX.cal.unlock() is made.

If calset is not specified, smuX.CALSET_DEFAULT is used.

Example

smua.cal.restore()

Restores factory calibration constants for SMU channel A.

Also see

Adjustment

smuX.cal.lock()

smuX.cal.unlock()

smuX.cal.save()

This function stores the active calibration constants to nonvolatile memory.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

smuX.cal.save()

X

Source‑measure unit (SMU) channel (for example, smua.cal.save() applies to SMU channel A)

Details

This function stores the active set of calibration constants to nonvolatile memory. The previous calibration constants (from the default calibration set) are copied to the previous calibration set (smuX.CALSET_PREVIOUS) before overwriting the default calibration set.

This function is disabled until a successful call to smuX.cal.unlock() is made.

If any of the calibration constants have been changed, this function is disabled unless the calibration date, the calibration due date, and the calibration adjust date have been assigned new values.

Example

smua.cal.save()

Stores calibration constants for SMU channel A in nonvolatile memory.

Also see

Adjustment

smuX.cal.adjustdate

smuX.cal.date

smuX.cal.due

smuX.cal.lock()

smuX.cal.restore()

smuX.cal.unlock()

smuX.cal.state

This attribute returns the present calibration state.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

Yes

Not applicable

Not saved

Not applicable

Usage

calState = smuX.cal.state

calState

The present calibration state; when reading this attribute, calState has one of the following values:

  • 0 or smuX.CALSTATE_LOCKED: Calibration is locked
  • 1 or smuX.CALSTATE_CALIBRATING: The calibration constants or dates have been changed but not yet saved to nonvolatile memory
  • 2 or smuX.CALSTATE_UNLOCKED: Calibration is unlocked but none of the calibration constants or dates have changed since the last save/restore

X

Source‑measure unit (SMU) channel (for example, smua.cal.state applies to SMU channel A)

Details

This read-only attribute indicates the calibration state of the instrument: Locked, calibrating, or unlocked.

Example

calstate = smua.cal.state

print(calstate)

Reads calibration state for SMU channel A.

Output:

0.000000e+00

The above output indicates that calibration is locked.

Also see

Adjustment

smuX.cal.lock()

smuX.cal.restore()

smuX.cal.save()

smuX.cal.unlock()

smuX.cal.unlock()

This function enables the commands that change calibration settings.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

smuX.cal.unlock(password)

X

Source‑measure unit (SMU) channel (for example, smua.cal.unlock() applies to SMU channel A)

password

Calibration password

Details

This function enables the calibration functions to change the calibration settings.

The password when the instrument is shipped from the factory is "KI0026XX".

Example

smua.cal.unlock("KI0026XX")

Unlocks calibration for SMU channel A.

Also see

Adjustment

smuX.cal.lock()

smuX.cal.password

smuX.cal.restore()

smuX.cal.state

smuX.contact.calibratehi()

This function adjusts the high/sense high contact check measurement. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

smuX.contact.calibratehi(cp1Measured, cp1Reference, cp2Measured, cp2Reference)

X

Source‑measure unit (SMU) channel (for example, smua.contact.calibratehi() applies to SMU channel A)

cp1Measured

The value measured by this SMU for point 1

cp1Reference

The reference measurement for point 1 as measured externally

cp2Measured

The value measured by this SMU for point 2

cp2Reference

The reference measurement for point 2 as measured externally

Details

Contact check measurement calibration does not require range information.

Typically, points one and two are near 0 O and 50 O, respectively.

All four measurements (cp1Measured, cp1Reference, cp2Measured, and cp2Reference) must be made with the calibration set that is active. If not, corruption of the calibration constants may result.

The new calibration constants are activated immediately but are not written to nonvolatile memory. Use smuX.cal.save() to save the new constants to nonvolatile memory. The active calibration constants stay in effect until the instrument is power cycled or a calibration set is loaded from nonvolatile memory with the smuX.cal.restore() function.

This function is disabled until a successful call to smuX.cal.unlock() is made.

Example

-- Short SENSE LO and LO terminals.

-- Short SENSE HI and HI terminals.

-- Allow readings to settle, then get measurements.

r0_hi, r0_lo = smua.contact.r()

 

-- Connect 50 OHM resistor between SENSE LO and LO.

-- Connect 50 OHM resistor between SENSE HI and HI.

-- Allow readings to settle, then get measurements.

r50_hi, r50_lo = smua.contact.r()

smua.contact.calibratelo(r0_lo, Z_actual_lo, r50_lo, 50_ohm_actual_lo)

smua.contact.calibratehi(r0_hi, Z_actual_hi, r50_hi, 50_ohm_actual_hi)

The instrument performs a contact check.

Install and measure two resistors.

The user sends the contact check LO calibration command.

The user sends the contact check HI calibration command.

Also see

Adjustment

smuX.cal.restore()

smuX.cal.save()

smuX.cal.unlock()

smuX.contact.calibratelo()

smuX.contact.calibratelo()

This function adjusts the low/sense low contact check measurement. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

smuX.contact.calibratelo(cp1Measured, cp1Reference, cp2Measured, cp2Reference)

X

Source‑measure unit (SMU) channel (for example, smua.contact.calibratelo() applies to SMU channel A)

cp1Measured

The value measured by this SMU for point 1

cp1Reference

The reference measurement for point 1 as measured externally

cp2Measured

The value measured by this SMU for point 2

cp2Reference

The reference measurement for point 2 as measured externally

Details

Contact check measurement adjustment does not require range information.

Typically, points one and two are near 0 O and 50 O, respectively.

All four measurements (cp1Measured, cp1Reference, cp2Measured, and cp2Reference) must be made with the active calibration set. If not, corruption of the calibration constants may result.

The new calibration constants are activated immediately but are not written to nonvolatile memory. Use smuX.cal.save() to save the new constants to nonvolatile memory. The active calibration constants stay in effect until the instrument is power cycled or a calibration set is loaded from nonvolatile memory with the smuX.cal.restore() function.

This function is disabled until a successful call to smuX.cal.unlock() is made.

Example

-- Short SENSE LO and LO terminals.

-- Short SENSE HI and HI terminals.

-- Allow readings to settle, then get measurements.

r0_hi, r0_lo = smua.contact.r()

 

-- Connect 50 OHM resistor between SENSE LO and LO.

-- Connect 50 OHM resistor between SENSE HI and HI.

-- Allow readings to settle, then get measurements.

r50_hi, r50_lo = smua.contact.r()

smua.contact.calibratelo(r0_lo, Z_actual_lo, r50_lo, 50_ohm_actual_lo)

smua.contact.calibratehi(r0_hi, Z_actual_hi, r50_hi, 50_ohm_actual_hi)

The instrument performs a contact check.

Install and measure two resistors.

The user sends the contact check LO calibration command.

The user sends the contact check HI calibration command.

Also see

Adjustment

smuX.cal.restore()

smuX.cal.save()

smuX.cal.unlock()

smuX.contact.calibratehi()

smuX.contact.check()

This function determines if contact resistance is lower than the threshold. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

smuX.contact.check()

X

Source‑measure unit (SMU) channel (for example, smua.contact.check() applies to SMU channel A)

Details

This function returns true if the contact resistance is below the threshold; this function returns false if it is above the threshold. The threshold value is set by the smuX.contact.threshold attribute.

An error is generated when the output is on and:

  • SMU is a current source with current range set to less than 1 mA (error code 5065, "I range too low for contact check")
  • SMU is a voltage source with current limit set to less than 1 mA (error code 5050, "I limit too low for contact check")

An error is generated when the output is off and:

  • The output off mode is High-Z (error code 5048, "Contact check not valid with HIGH-Z OUTPUT off")
  • The output off mode is Normal with the smuX.source.offfunc attribute set to smuX.OUTPUT_DCVOLTS and the off current limit set to less than 1 mA (error code 5066, "source.offlimiti too low for contact check")
  • The output off mode is Normal with the smuX.source.offfunc attribute set to smuX.OUTPUT_DCAMPS and the source range is less than 1 mA (error code 5065, "I range too low for contact check")

Example

if not smua.contact.check() then

-- take action

end

Takes action if contact check on SMU channel A fails.

Also see

Contact check measurements

smuX.contact.speed

smuX.contact.threshold

smuX.source.offfunc

smuX.contact.r()

This function measures aggregate contact resistance. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

rhi, rlo = smuX.contact.r()

rhi

The measured aggregate contact resistance on the HI/sense HI side

rlo

The measured aggregate contact resistance on the LO/sense LO side

X

Source‑measure unit (SMU) channel (for example, smua.contact.r() applies to SMU channel A)

Details

If you attempt to perform a contact resistance measurement when any of the following conditions exist, an error is generated.

  • When the output is on and SMU is a current source with current range set to less than 1 mA
  • When the output is on and SMU is a voltage source with current limit set to less than 1 mA
  • When the output is off and the output off mode is High-Z
  • When the output is off and the output off mode is Normal with the smuX.source.offfunc attribute set to smuX.OUTPUT_DCVOLTS and the off current limit set to less than 1 mA
  • When the output is off and the output off mode is Normal with the smuX.source.offfunc attribute set to smuX.OUTPUT_DCAMPS and the source range is less than 1 mA

Example

if not smua.contact.check() then

smua.contact.speed = smua.CONTACT_SLOW

rhi, rlo = smua.contact.r()

print(rhi, rlo)

exit()

end

Check contacts against threshold.

Set speed for SMU channel A to slow.

Get resistance readings.

Output contact resistances to the host.

Terminate execution.

Also see

Contact check measurements

smuX.contact.check()

smuX.contact.speed

smuX.contact.speed

This attribute stores the speed setting for contact check measurements. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Instrument reset
SMU reset
Recall setup

Not saved

0 (smuX.CONTACT_FAST)

Usage

speedSetting = smuX.contact.speed

smuX.contact.speed = speedSetting

speedSetting

The speed setting. Set to one of the following:

  • 0 or smuX.CONTACT_FAST
  • 1 or smuX.CONTACT_MEDIUM
  • 2 or smuX.CONTACT_SLOW

X

Source‑measure unit (SMU) channel (for example, smua.contact.speed applies to SMU channel A)

Details

This setting controls the aperture of measurements made for contact check. It does not affect the smuX.measure.nplc aperture setting.

The speed setting can have a dramatic effect on the accuracy of the measurement (see specifications).

Example

smua.contact.speed = smua.CONTACT_SLOW

Configure contact check for higher accuracy on SMU channel A.

Also see

Contact check measurements

reset()

smuX.contact.check()

smuX.contact.r()

smuX.reset()

smuX.contact.threshold

This attribute stores the resistance threshold for the smuX.contact.check() function. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Instrument reset
SMU reset
Recall setup

Not saved

50 (50 O)

Usage

rValue = smuX.contact.threshold

smuX.contact.threshold = rValue

rValue

The resistance above which contact check fails (measured in ohms)

X

Source‑measure unit (SMU) channel (for example, smua.contact.threshold applies to SMU channel A)

Details

Set the threshold to less than 1 kO.

Example

smua.contact.threshold = 5

Set the contact check threshold for SMU channel A to 5 O.

Also see

Contact check measurements

reset()

smuX.contact.check()

smuX.reset()

smuX.makebuffer()

This function creates a reading buffer.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

bufferVar = smuX.makebuffer(bufferSize)

bufferVar

The created reading buffer

X

Source‑measure unit (SMU) channel (for example, smua.makebuffer() applies to SMU channel A)

bufferSize

Maximum number of readings that can be stored

Details

You can use this function to create and dynamically allocate reading buffers. Use bufferSize to designate the number of readings the buffer can store.

You can use dynamically allocated reading buffers interchangeably with the smuX.nvbufferY buffers.

To delete a reading buffer, set all references to the reading buffer equal to nil, then run the garbage collector (see the collectgarbage() function in Standard libraries).

Example

mybuffer2 = smua.makebuffer(200)

Creates a 200‑element reading buffer (mybuffer2) for SMU channel A.

Also see

collectgarbage() in Base library functions

Remote reading buffer programming

savebuffer()

smuX.nvbufferY

smuX.measure.analogfilter

This attribute controls the use of an analog filter when measuring on the lowest current ranges (2634B, 2635B, and 2636B only).

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Instrument reset
SMU reset
Recall setup

Not saved

1 (filter on)

Usage

option = smuX.measure.analogfilter

smuX.measure.analogfilter = option

option

Enables or disables the analog filter; set to one of the following:

  • Filter off: 0
  • Filter on: 1

X

Source‑measure unit (SMU) channel (for example, smua.measure.analogfilter applies to SMU channel A)

Details

This attribute engages an approximately 1 Hz analog filter across the current range elements.

The analog filter is only active when using the 1 nA and 100 pA measurement ranges.

Example

smua.measure.analogfilter = 0

Turns off the SMU channel A analog filter.

Also see

Filters

smuX.measure.autorangeY

This attribute stores the measurement autorange setting.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Instrument reset
SMU reset
Recall setup

Saved setup

1 (smuX.AUTORANGE_ON)

Usage

autoRange = smuX.measure.autorangeY

smuX.measure.autorangeY = autoRange

autoRange

The state of the measurement autorange setting; set to one of the following values:

  • Disabled: 0 or smuX.AUTORANGE_OFF
  • Enabled: 1 or smuX.AUTORANGE_ON
  • Measure range automatically set to the limit range: 2 or smuX.AUTORANGE_FOLLOW_LIMIT

X

Source‑measure unit (SMU) channel (for example, smua.measure.autorangev applies to SMU channel A)

Y

SMU measure function:

  • Voltage: v
  • Current: i

Details

This attribute indicates the measurement autorange state. Its value is smuX.AUTORANGE_OFF when the SMU measure circuit is on a fixed range and smuX.AUTORANGE_ON when it is in autorange mode.

Setting this attribute to smuX.AUTORANGE_OFF puts the SMU on a fixed range. The fixed range is the present SMU measure range.

Setting this attribute to smuX.AUTORANGE_ON puts the SMU measure circuit in autorange mode. It remains on its present measure range until the next measurement is requested.

If source high capacitance mode is enabled, current autorange is set to smuX.AUTORANGE_FOLLOW_LIMIT and cannot be changed.

Example

smua.measure.autorangev = smua.AUTORANGE_ON

Enables voltage measurement autoranging for SMU channel A.

Also see

Autoranging

Range

reset()

setup.recall()

smuX.measure.rangeY

smuX.reset()

smuX.measure.autozero

This attribute enables or disables automatic updates to the internal reference measurements (autozero) of the instrument.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Instrument reset
SMU reset
Recall setup

Saved setup

2 (smuX.AUTOZERO_AUTO)

Usage

azMode = smuX.measure.autozero

smuX.measure.autozero = azMode

azMode

Indicates status of autozero; set to one of the following values:

  • 0 or smuX.AUTOZERO_OFF: Autozero disabled
  • 1 or smuX.AUTOZERO_ONCE: Performs autozero once, then disables autozero
  • 2 or smuX.AUTOZERO_AUTO: Automatic checking of reference and zero measurements; an autozero is performed when needed

X

Source‑measure unit (SMU) channel (for example, smua.measure.autozero applies to SMU channel A)

Details

The analog-to-digital converter (ADC) uses a ratiometric A/D conversion technique. To ensure the accuracy of readings, the instrument must periodically obtain new measurements of its internal ground and voltage reference. The time interval between updates to these reference measurements is determined by the integration aperture being used for measurements. The 2600B uses separate reference and zero measurements for each aperture.

By default, the instrument automatically checks these reference measurements whenever a signal measurement is made. If the reference measurements have expired when a signal measurement is made, the instrument automatically takes two more A/D conversions, one for the reference and one for the zero, before returning the result. Thus, occasionally, a measurement takes more time than normal.

This additional time can cause problems in sweeps and other test sequences in which measurement timing is critical. To avoid the time that is needed for the reference measurements in these situations, you can use the smuX.measure.autozero attribute to disable the automatic reference measurements.

Disabling automatic reference measurements may allow the instrument to gradually drift out of specification. To minimize the drift, make a reference and zero measurement immediately before any critical test sequences. You can use the smuX.AUTOZERO_ONCE setting to force a refresh of the reference and zero measurements that are used for the present aperture setting.

The 2600B stores the reference measurements for the last ten NPLC settings that were used in a reference cache. If an NPLC setting is selected and an entry for it is not in the cache, the oldest (least recently used) entry is discarded to make room for the new entry.

Example

smua.measure.autozero = smua.AUTOZERO_ONCE

Performs autozero once for SMU channel A.

Also see

Autozero

reset()

setup.recall()

smuX.measure.nplc

smuX.reset()

smuX.measure.calibrateY()

This function generates and activates new measurement calibration constants.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

smuX.measure.calibrateY(range, cp1Measured, cp1Reference, cp2Measured, cp2Reference)

X

Source‑measure unit (SMU) channel (for example, smua.measure.calibratev() applies to SMU channel A)

Y

SMU measurement function (v = voltage, i = current)

range

The measurement range to adjust

cp1Measured

The value measured by this SMU for point 1

cp1Reference

The reference measurement for point 1 as measured externally

cp2Measured

The value measured by this SMU for point 2

cp2Reference

The reference measurement for point 2 as measured externally

Details

This function generates and activates new calibration constants for the given range.

The positive and negative polarities of the instrument must be adjusted separately. Use a positive value for the range parameter to adjust the positive polarity and a negative value for the range parameter to adjust the negative polarity.

All four measurements (cp1Measured, cp1Reference, cp2Measured, and cp2Reference) must be made with the calibration set that is active. Corruption of the calibration constants may result if this is ignored.

The new calibration constants are activated immediately but they are not written to nonvolatile memory. Use the smuX.cal.save() function to save the new constants to nonvolatile memory. The active calibration constants stay in effect until the instrument is power cycled or a calibration set is loaded from nonvolatile memory with the smuX.cal.restore() function.

This function is only available when calibration is unlocked using smuX.cal.unlock().

Example

smua.measure.calibratev(1, 1e-4, 1e-5, 0.92, 0.903)

Adjust SMU channel A voltage measurement using the following values:

  • 1 V calibration range
  • 1e-4 for +zero measurement reading
  • 1e-5 for +zero DMM measurement reading
  • 0.92 for +FS measurement reading
  • 0.903 for the +FS DMM measurement reading

Also see

Adjustment

smuX.cal.lock()

smuX.cal.restore()

smuX.cal.save()

smuX.cal.unlock()

smuX.source.calibrateY()

smuX.measure.count

This attribute sets the number of measurements made when a measurement is requested.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Instrument reset
SMU reset
Recall setup

Saved setup

1

Usage

count = smuX.measure.count

smuX.measure.count = count

count

Number of measurements

X

Source‑measure unit (SMU) channel (for example, smua.measure.count applies to SMU channel A)

Details

This attribute controls the number of measurements made any time a measurement is requested. When using a reading buffer with a measure command, this attribute also controls the number of readings to be stored.

If the count is set to a value greater than 1, any measurement delay set by smuX.measure.delay only occurs before the first measurement, while the smuX.measure.interval controls the interval between successive measurements.

Example

smua.measure.count = 10

Sets the SMU channel A measure count to 10.

Also see

reset()

setup.recall()

smuX.measure.delay

smuX.measure.interval

smuX.measure.overlappedY()

smuX.measure.Y()

smuX.reset()

smuX.measure.delay

This attribute controls the measurement delay.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Instrument reset
SMU reset
Recall setup

Saved setup

2601B, 2602B, 2604B, 2611B, 2612B, 2614B:
0 (smuX.DELAY_OFF)

2634B, 2635B, 2636B:
-1 (smuX.DELAY_AUTO)

Usage

mDelay = smuX.measure.delay

smuX.measure.delay = mDelay

mDelay

Set to the measurement delay value in seconds (for example, to specify an additional 10 ms measurement delay, set the value to 0.010)

You can also set it to one of the following values:

  • 0 or smuX.DELAY_OFF: No delay
  • -1 or smuX.DELAY_AUTO: Automatic delay value

X

Source‑measure unit (SMU) channel (for example, smua.measure.delay applies to SMU channel A)

Details

This attribute allows for additional delay (settling time) before making a measurement. If you define the value instead of using the automatic delay value, the delay you set is used regardless of the range.

The smuX.DELAY_AUTO setting causes a current range-dependent delay to be inserted when a current measurement is requested. This happens when a current measurement command is executed, when the measure action is done in a sweep, or after changing ranges during an autoranged measurement.

If smuX.measure.count is greater than 1, the measurement delay is only inserted before the first measurement.

Example

smua.measure.delay = 0.010

Sets a 10 ms measurement delay for SMU channel A.

Also see

Measure autodelay

reset()

smuX.measure.count

smuX.measure.delayfactor

smuX.source.delay

smuX.reset()

smuX.measure.delayfactor

This attribute stores a multiplier to the delays that are used when smuX.measure.delay is set to smuX.DELAY_AUTO.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Instrument reset
SMU reset
Recall setup

Not saved

1

Usage

delayFactor = smuX.measure.delayfactor

smuX.measure.delayfactor = delayFactor

delayFactor

The delay factor multiplier

X

Source‑measure unit (SMU) channel (for example, smua.measure.delayfactor applies to SMU channel A)

Details

The delay factor is only applied when smuX.measure.delay = smuX.DELAY_AUTO.

This attribute can be set to a value less than 1 (for example, 0.5) to decrease the automatic delay.

This attribute can be set to a value greater than 1 (for example, 1.5 or 2.0) to increase the automatic delay.

Setting this attribute to zero disables delays when smuX.measure.delay = smuX.DELAY_AUTO.

Example

smua.measure.delayfactor = 2.0

Doubles the measure delay for SMU channel A.

Also see

Measure autodelay

reset()

smuX.measure.delay

smuX.reset()

smuX.measure.filter.count

This command sets the number of measured readings that are required to yield one filtered measurement.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Instrument reset
SMU reset
Recall setup

Saved setup

1

Usage

filterCount = smuX.measure.filter.count

smuX.measure.filter.count = filterCount

filterCount

The number of readings required for each filtered measurement (1 to 100)

X

Source‑measure unit (SMU) channel (for example, smua.measure.filter.count applies to SMU channel A)

Details

This attribute sets the size of the stack used for filtered measurements.

Example

smua.measure.filter.count = 10

smua.measure.filter.type = smua.FILTER_MOVING_AVG

smua.measure.filter.enable = smua.FILTER_ON

Sets the filter count for SMU channel A to 10.

Sets the filter type to moving average.

Enables the filter.

Also see

Filters

reset()

setup.recall()

smuX.measure.filter.enable

smuX.measure.filter.type

smuX.reset()

smuX.measure.filter.enable

This command enables or disables filtered measurements.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Instrument reset
SMU reset
Recall setup

Saved setup

0 (smuX.FILTER_OFF)

Usage

filterState = smuX.measure.filter.enable

smuX.measure.filter.enable = filterState

filterState

The filter status; set to one of the following values:

  • 0 or smuX.FILTER_OFF: Disables the filter
  • 1 or smuX.FILTER_ON: Enables the filter

X

SMU channel (for example, smua.measure.filter.enable applies to SMU channel A)

Details

This command enables or disables the filter.

Example

smua.measure.filter.count = 10

smua.measure.filter.type = smua.FILTER_MOVING_AVG

smua.measure.filter.enable = smua.FILTER_ON

Sets the filter count for SMU channel A to 10.

Sets the filter type to moving average.

Enables the filter.

Also see

Filters

reset()

setup.recall()

smuX.measure.filter.count

smuX.measure.filter.type

smuX.reset()

smuX.measure.filter.type

This command sets the type of filter used for measurements when the measurement filter is enabled.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Instrument reset
SMU reset
Recall setup

Saved setup

1 (smuX.FILTER_REPEAT_AVG)

Usage

filterType = smuX.measure.filter.type

smuX.measure.filter.type = filterType

filterType

The filter type to use when filtering is enabled. Set to one of the following values:

  • 0 or smuX.FILTER_MOVING_AVG: Selects the moving filter
  • 1 or smuX.FILTER_REPEAT_AVG: Selects the repeat filter
  • 2 or smuX.FILTER_MEDIAN: Selects the median filter

X

SMU channel (for example, smua.measure.filter.type applies to SMU Channel A)

Details

The 2600B provides a moving average, repeating average, and median filter type.

For the repeating filter, the stack (filter count) is filled, and the conversions are averaged to yield a reading. The stack is then cleared, and the process starts over.

The moving average filter uses a first-in, first-out stack. When the stack (filter count) becomes full, the measurement conversions are averaged, yielding a reading. For each subsequent conversion placed into the stack, the oldest conversion is discarded. The stack is re-averaged, yielding a new reading.

The median filter uses a first-in, first-out stack. When the stack (filter count) becomes full, the reading nearest to the middle is returned. For each subsequent conversion placed into the stack, the oldest reading is discarded. The stack is then re-sorted, yielding a new reading. If the filter count is an even number, the reading returned is the average of the two middle readings.

Example

smua.measure.filter.count = 10

smua.measure.filter.type = smua.FILTER_MOVING_AVG

smua.measure.filter.enable = smua.FILTER_ON

Sets the filter count for SMU channel A to 10.

Sets the filter type to moving average.

Enables the filter.

Also see

Filters

reset()

setup.recall()

smuX.measure.filter.count

smuX.measure.filter.enable

smuX.reset()

smuX.measure.highcrangedelayfactor

This attribute contains a delay multiplier that is only used during range changes when the high-capacitance mode is active.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Instrument reset
SMU reset
Recall setup

Saved setup

10

Usage

delayFactor = smuX.measure.highcrangedelayfactor

smuX.measure.highcrangedelayfactor = delayFactor

delayFactor

The delay factor; set to a value between 1 and 99

X

SMU channel (for example, smua.measure.highcrangedelayfactor applies to SMU Channel A)

Details

This delay multiplier is only active when the high-capacitance mode is active.

Example

smua.measure.highcrangedelayfactor = 5

Increases the delay used during range changes for SMU channel A by a factor of 5.

Also see

High-capacitance mode

reset()

setup.recall()

smuX.reset()

smuX.source.highc

smuX.measure.interval

This attribute sets the interval between multiple measurements.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Instrument reset
SMU reset
Recall setup

Saved setup

0 (0 s)

Usage

interval = smuX.measure.interval

smuX.measure.interval = interval

interval

The interval value (in seconds); set to a value between 0 and 1

X

SMU channel (for example, smua.measure.interval applies to SMU Channel A)

Details

This attribute sets the time interval between measurements when smuX.measure.count is set to a value greater than 1. The source‑measure unit (SMU) attempts to start each measurement when scheduled. If the SMU cannot keep up with the interval setting, measurements are made as quickly as possible.

If filtered measurements are being made, the time interval is from the start of the first measurement for the filtered reading to the first measurement for a subsequent filtered reading. Extra measurements made to satisfy a filtered reading are not paced by this interval.

Example

smua.measure.interval = 0.5

Sets the measure interval for SMU channel A to 0.5 s.

Also see

reset()

setup.recall()

smuX.measure.count

smuX.reset()

smuX.measure.lowrangeY

This attribute sets the lowest measurement range that is used when the instrument is autoranging.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Instrument reset
SMU reset
Recall setup

Saved setup

Current:
2601B, 2602B, 2604B, 2611B, 2612B, 2614B:
100e-9 (100 nA)

2634B:
1e-9 (1 nA)

2635B, 2636:
100e-12 (100 pA)

Voltage:
2601B, 2602B, 2604B:
100e-3 (100 mV)
2611B, 2612B, 2614B, 2634B, 2635B, 2636B:
200e-3 (200 mV)

Usage

lowRange = smuX.measure.lowrangeY

smuX.measure.lowrangeY = lowRange

lowRange

The lowest voltage or current measurement range used during autoranging

X

Source‑measure unit (SMU) channel (for example, smua.measure.lowrangev applies to SMU channel A)

Y

SMU measure function (v = voltage, i = current)

Details

This attribute is used with autoranging to put a lower bound on the range used. Since lower ranges generally require greater settling times, setting a lowest range limit might make measurements require less settling time.

If the instrument is set to autorange and it is on a range lower than the one specified, the range is changed to the lowRange range value.

Example

smua.measure.lowrangev = 1

Sets voltage low range for SMU channel A to 1 V.

Also see

Range

reset()

setup.recall()

smuX.measure.autorangeY

smuX.reset()

smuX.measure.nplc

This command sets the integration aperture for measurements.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Instrument reset
SMU reset
Recall setup

Saved setup

1.0

Usage

nplc = smuX.measure.nplc

smuX.measure.nplc = nplc

nplc

The integration aperture; set from 0.001 to 25

X

Source‑measure unit (SMU) channel (for example, smua.measure.nplc applies to SMU channel A)

Details

This attribute controls the integration aperture for the analog‑to‑digital converter (ADC).

The integration aperture is based on the number of power line cycles (NPLC), where 1 PLC for 60 Hz is 16.67 ms (1/60) and 1 PLC for 50 Hz is 20 ms (1/50).

Example

smua.measure.nplc = 0.5

Sets the integration time for SMU channel A to 0.5.

Also see

reset()

setup.recall()

smuX.reset()

Speed

smuX.measure.overlappedY()

This function starts an asynchronous (background) measurement.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

smuX.measure.overlappedY(rbuffer)

smuX.measure.overlappediv(ibuffer, vbuffer)

X

Source‑measure unit (SMU) channel (for example, smua.measure.overlappedv() applies to SMU channel A)

Y

SMU measurement type (v = voltage, i = current, r = resistance, p = power)

rbuffer

A reading buffer object where the readings are stored

ibuffer

A reading buffer object where current readings are stored

vbuffer

A reading buffer object where voltage readings are stored

Details

This function starts a measurement and returns immediately. The measurements, as they are performed, are stored in a reading buffer (along with any other information that is being acquired). If the instrument is configured to return multiple readings where one is requested, the readings are available as they are made. Measurements are in the following units of measure: v = volts, i = amperes, r = ohms, p = watts.

The second form of this function, smuX.measure.overlappediv(), stores current readings in ibuffer and voltage readings in vbuffer.

This function is an overlapped command. Script execution continues while the measurements are made in the background. Attempts to access result values that have not yet been generated cause the script to block and wait for the data to become available. The waitcomplete() function can also be used to wait for the measurements to complete before continuing.

If a given reading buffer contains any data, it is cleared before making any measurements, unless the reading buffer has been configured to append data.

Example

smua.measure.overlappedv(smua.nvbuffer1)

Starts background voltage measurements for SMU channel A.

Also see

Reading buffers

smuX.measure.Y()

smuX.nvbufferY

waitcomplete()

smuX.measure.rangeY

This attribute contains the positive full‑scale value of the measurement range for voltage or current.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Instrument reset
SMU reset
Recall setup

Saved setup

Voltage:
2601B, 2602B, or 2604B:
100e-3 (100 mV)
2611B, 2612B, 2614B, 2634B, 2635B, or 2636B:
200e-3 (200 mV)

Current:
100e-3 (100 mA)

Usage

rangeValue = smuX.measure.rangeY

smuX.measure.rangeY = rangeValue

rangeValue

Set to the maximum expected voltage or current to be measured

X

Source‑measure unit (SMU) channel (for example, smua.measure.rangev applies to SMU channel A)

Y

SMU measurement function (v = voltage, i = current)

Details

Reading this attribute returns the positive full-scale value of the measurement range that the SMU is currently using. Assigning a value to this attribute sets the SMU on a fixed range large enough to measure the assigned value. The instrument selects the best range for measuring a value of rangeValue.

This attribute is primarily intended to eliminate the time that is required by the automatic range selection performed by a measuring instrument. Because selecting a fixed range prevents autoranging, an overrange condition can occur. For example, measuring 10.0 V on the 2601B, 2602B, or 2604B 6 V range or measuring 5.0 V on the 2611B, 2612B, or 2614B 2 V range causes an overrange. The value 9.91000E+37 is returned when this occurs.

If the source function is the same as the measurement function (for example, sourcing voltage and measuring voltage), the measurement range is locked to be the same as the source range. However, the setting for the measure range is retained. If the source function is changed (for example, from sourcing voltage to sourcing current), the retained measurement range is used.

2601B, 2602B, or 2604B example: Assume the source function is voltage. The source range is 1 V and you set the measure range for 6 V. Since the source range is 1 V, the SMU performs voltage measurements on the 1 V range. If you now change the source function to current, voltage measurements are made on the 6 V range.

Explicitly setting a measure range disables measure autoranging for that function. Autoranging is controlled separately for each source and measurement function: Source voltage, source current, measure voltage and measure current. Autoranging is enabled for all four by default.

Changing the range while the output is off does not update the hardware settings, but querying returns the range setting that is used when the output is turned on. Setting a range while the output is on takes effect immediately.

With measure autoranging enabled, the range is changed only when a measurement is made. Querying the range after a measurement returns the range selected for that measurement.

Example

smua.measure.rangev = 0.5

Selects the 1 V measurement range for SMU channel A.

Also see

Range

reset()

setup.recall()

smuX.measure.autorangeY

smuX.reset()

smuX.source.rangeY

smuX.measure.rel.enableY

This attribute turns relative measurements on or off.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Instrument reset
SMU reset
Recall setup

Not saved

0 (smuX.REL_OFF)

Usage

relEnable = smuX.measure.rel.enableY

smuX.measure.rel.enableY = relEnable

relEnable

Relative measurement control. Set relEnable to one of the following values:

  • 0 or smuX.REL_OFF: Disables relative measurements
  • 1 or smuX.REL_ON: Enables relative measurements

X

Source‑measure unit (SMU) channel (for example, smua.measure.rel.enablev applies to SMU channel A)

Y

SMU measurement function (v = voltage, i = current, r = resistance, p = power)

Details

This attribute enables or disables relative measurements. When relative measurements are enabled, all subsequent measured readings are offset by the relative offset value specified by smuX.measure.rel.levelY. Each returned measured relative reading is the result of the following calculation:

Relative reading = Actual measured reading - Relative offset value

Example

smua.measure.rel.enablev = smua.REL_ON

Enables relative voltage measurements for SMU channel A.

Also see

Relative offset

reset()

setup.recall()

smuX.measure.rel.levelY

smuX.reset()

smuX.measure.rel.levelY

This attribute sets the offset value for relative measurements.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Instrument reset
SMU reset
Recall setup

Not saved

0

Usage

relValue = smuX.measure.rel.levelY

smuX.measure.rel.levelY = relValue

relValue

Relative measurement offset value

X

Source‑measure unit (SMU) channel (for example, smua.measure.rel.levelv applies to SMU channel A)

Y

SMU measurement function (v = voltage, i = current, r = resistance, p = power)

Details

This attribute specifies the offset value used for relative measurements. When relative measurements are enabled (see smuX.measure.rel.enableY), all subsequent measured readings are offset by the value of this attribute. Each returned measured relative reading is the result of the following calculation:

Relative reading = Actual measured reading - Relative offset value

Example

smua.measure.rel.levelv = smua.measure.v()

Performs a voltage measurement using SMU channel A and then uses it as the relative offset value.

Also see

Relative offset

reset()

smuX.measure.rel.enableY

smuX.reset()

smuX.measure.Y()

This function makes one or more measurements.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

reading = smuX.measure.Y()

reading = smuX.measure.Y(readingBuffer)

iReading, vReading = smuX.measure.iv()

iReading, vReading = smuX.measure.iv(iReadingBuffer)

iReading, vReading = smuX.measure.iv(iReadingBuffer, vReadingBuffer)

reading

Returned value of the last (or only) reading of the measurement process

X

Source-measure unit (SMU) channel (for example, smua.measure.v() applies to SMU channel A)

Y

SMU measurement function (v = voltage, i = current, r = resistance, p = power)

readingBuffer

A reading buffer object where all readings are stored

iReading

The last reading of the current measurement process

vReading

The last reading of the voltage measurement process

iReadingBuffer

A reading buffer object where current readings are stored

vReadingBuffer

A reading buffer object where voltage readings are stored

Details

If you use this function without specifying a reading buffer, it makes one measurement and returns that measurement as reading. To use the additional information that is acquired while making a measurement or to return multiple readings, specify a reading buffer. If the instrument is configured to return multiple readings for a measurement and readingBuffer is specified, all readings are available in readingBuffer, but only the last measurement is returned as reading.

Measurements are in the following units of measure:

  • v = volts
  • i = amperes
  • r = ohms
  • p = watts

The smuX.measure.iv() function returns the last actual current measurement and voltage measurement as iReading and vReading, respectively. Additionally, it can store current and voltage readings if buffers are provided (iReadingBuffer and vReadingBuffer ).

The smuX.measure.count attribute determines how many measurements are performed. When using a reading buffer, it also determines the number of readings to store in the buffer. If a reading buffer is not specified, the SMU ignores the smuX.measure.count attribute and only makes one measurement.

The readingBuffer is cleared before making any measurements unless the buffer is configured to append data.

Example

smua.measure.count = 10

smua.measure.v(smua.nvbuffer1)

Makes 10 voltage measurements using SMU channel A and stores them in a buffer.

Also see

Reading buffers

smuX.measure.count

smuX.measure.overlappedY()

smuX.nvbufferY

smuX.measureYandstep()

This function makes one or two measurements and then steps the source.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

reading = smuX.measureYandstep(sourceValue)

iReading, vReading = smuX.measureivandstep(sourceValue)

reading

The measured reading before stepping the source

X

Source‑measure unit (SMU) channel (for example, smua.measurevandstep() applies to SMU channel A)

Y

SMU measurement function (v = voltage, i = current, r = resistance, p = power)

sourceValue

Source value to be set after the measurement is made

iReading

The current reading before stepping the source

vReading

The voltage reading before stepping the source

Details

The smuX.measureYandstep() function makes a measurement and then sets the source to sourceValue. Usage of the smuX.measureivandstep() function is similar, but makes two measurements simultaneously, one for current (i) and one for voltage (v).

Measurements are in the following units of measure: v = volts, i = amperes, r = ohms, p = watts.

Make sure the specified source value is appropriate for the selected source function. For example, if the source voltage function is selected, then sourceValue is expected to be a new voltage level.

Both source and measure autorange must be disabled before using this function. This function cannot be used if source high capacitance mode is enabled (high capacitance mode requires autoranging to be enabled).

This function is provided for very fast execution of source-measure loops. The measurement is made before the source is stepped. Before using this function, and before any loop this function may be used in, set the source value to its initial level.

Example

local ivalues = {}

smua.source.rangev = 1

smua.source.levelv = 0

smua.measure.rangei = 0.01

smua.source.output = smua.OUTPUT_ON

for index = 1, 10 do

ivalues[index] = smua.measureiandstep(index / 10)

end

ivalues[11] = smua.measure.i()

This use of the SMU channel A measure and step function measures current starting at a source value of 0 V. After each current measurement, the source is stepped 100 mV for the next current measurement. The final source level is 1 V, where current is again measured.

 

Also see

smuX.measure.autorangeY

smuX.measure.Y()

smuX.source.autorangeY

smuX.trigger.source.limitY

smuX.trigger.source.linearY()

smuX.trigger.source.listY()

smuX.trigger.source.logY()

Sweep Operation

smuX.nvbufferY

This attribute contains a dedicated reading buffer.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

Yes

Not applicable

See Details

Not applicable

Usage

bufferVar = smuX.nvbufferY

bufferVar

The dedicated reading buffer

X

Source‑measure unit (SMU) channel (for example, smua.nvbuffer1 applies to SMU channel A)

Y

SMU nonvolatile buffer (1 or 2)

Details

Each SMU channel contains two dedicated reading buffers: smuX.nvbuffer1 and smuX.nvbuffer2.

All routines that return measurements can also store them in either reading buffer. Overlapped measurements are always stored in a reading buffer. Synchronous measurements return either a single-point measurement or can be stored in a reading buffer if passed to the measurement command.

The dedicated reading buffers can be saved to internal nonvolatile memory (to retain data between power cycles) using the smuX.savebuffer() function.

Example

smua.measure.overlappedv(smua.nvbuffer1)

Store voltage readings from SMU channel A into SMU channel A dedicated reading buffer 1.

Also see

Configuring and running sweeps

Reading buffers

savebuffer()

smuX.makebuffer()

smuX.measure.overlappedY()

smuX.savebuffer()

smuX.trigger.measure.action

smuX.trigger.measure.set()

smuX.trigger.measure.stimulus

smuX.trigger.measure.Y()

smuX.reset()

This function turns off the output and resets the commands that begin with smuX. to their default settings.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

smuX.reset()

X

Source‑measure unit (SMU) channel (for example, smua.reset()applies to SMU channel A)

Details

This function turns off the output and returns the specified SMU channel to its default settings.

Example

smua.reset()

Turns off the output and resets SMU channel A to its default settings.

Also see

reset()

smuX.savebuffer()

This function saves one source‑measure unit (SMU) dedicated reading buffer to nonvolatile memory (there are two dedicated reading buffers for each SMU).

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

smuX.savebuffer(smuX.nvbufferY)

X

SMU channel (for example, smua.savebuffer(smua.nvbuffer1) applies to SMU channel A)

Y

SMU dedicated reading buffer (1 or 2)

Details

When the instrument is turned off and back on, the dedicated reading buffers are restored from nonvolatile memory to their last saved values.

Example

smua.savebuffer(smua.nvbuffer1)

Saves buffer 1 (SMU channel A) to internal memory.

Also see

Reading buffers

savebuffer()

smuX.nvbufferY

smuX.sense

This attribute contains the state of the sense mode.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

SMU reset
Instrument reset
Recall setup

Saved setup

0 (smuX.SENSE_LOCAL)

Usage

senseMode = smuX.sense

smuX.sense = senseMode

senseMode

The sense mode; set to one of the following:

  • 0 or smuX.SENSE_LOCAL: Selects local sense (2-wire)
  • 1 or smuX.SENSE_REMOTE: Selects remote sense (4-wire)
  • 3 or smuX.SENSE_CALA: Selects calibration sense mode

X

Source‑measure unit (SMU) channel (for example, smua.sense applies to SMU channel A)

Details

Source-measure operations are performed using either 2-wire local sense connections or 4-wire remote sense connections. Writing to this attribute selects the sense mode.

The smuX.SENSE_CALA mode is only used for calibration and may only be selected when calibration is enabled.

The sense mode can be changed between local and remote while the output is on.

The calibration sense mode cannot be selected while the output is on.

Resetting the instrument selects the local sense mode.

Example

smua.sense = smua.SENSE_REMOTE

Select 4-wire remote sensing for SMU channel A.

Also see

Series 2600B User's Guide:

2-wire local sensing connections

4-wire remote sensing connections

Sense mode selection

smuX.source.autorangeY

This attribute contains the state of the source autorange control (on/off).

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

SMU reset
Instrument reset
Recall setup

Saved setup

1 (smuX.AUTORANGE_ON)

Usage

sourceAutorange = smuX.source.autorangeY

smuX.source.autorangeY = sourceAutorange

sourceAutorange

The state of the source autorange control. Set to one of the following:

  • 0 or smuX.AUTORANGE_OFF: Disables source autorange
  • 1 or smuX.AUTORANGE_ON: Enables source autorange

X

Source‑measure unit (SMU) channel (for example, smua.source.autorangev applies to SMU channel A)

Y

SMU source function (v = voltage, i = current)

Details

This attribute indicates the source autorange state. Its value is smuX.AUTORANGE_OFF when the SMU source circuit is on a fixed range and smuX.AUTORANGE_ON when it is in autorange mode.

Setting this attribute to smuX.AUTORANGE_OFF puts the SMU on a fixed source range. The fixed range used is the present SMU source circuit range.

Setting this attribute to smuX.AUTORANGE_ON puts the SMU source circuit into autorange mode. If the source output is on, the SMU immediately changes range to the range most appropriate for the value being sourced if that range is different than the present SMU range.

Autorange is disabled if the source level is edited from the front panel. Setting the source range also turns off autorange when set by using the smuX.source.rangeY attribute.

Resetting the instrument selects the smuX.AUTORANGE_ON.

Example

smua.source.autorangev = smua.AUTORANGE_ON

Enables volts source autorange for SMU channel A.

Also see

smuX.measure.autorangeY

smuX.source.rangeY

smuX.source.calibrateY()

This function generates and activates new source calibration constants.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

smuX.source.calibrateY(range, cp1Expected, cp1Reference, cp2Expected, cp2Reference)

X

Source‑measure unit (SMU) channel (for example, smua.source.calibratev() applies to SMU channel A)

Y

SMU source function (v = voltage, i = current)

range

The measurement range to adjust

cp1Expected

The source value set for point 1

cp1Reference

The reference measurement for point 1 as measured externally

cp2Expected

The source value set for point 2

cp2Reference

The reference measurement for point 2 as measured externally

Details

This function generates and activates new calibration constants for the given range.

The positive and negative polarities of the source must be adjusted separately. Use a positive value for range to adjust the positive polarity and a negative value for range to adjust the negative polarity. Do not use 0.0 for a negative point; 0.0 is considered to be a positive number.

Typically, the two points that are used are near zero for point 1 and 90% of full scale for point 2. Full scale for point 2 should be avoided if the source of the SMU is substantially out of calibration.

The two reference measurements must be made with the source using the active calibration set. For example, source a value, measure it, and do not change the active calibration set before issuing this command.

The new calibration constants are activated immediately but they are not written to nonvolatile memory. Use the smuX.cal.save() function to save the new constants to nonvolatile memory. The active calibration constants stay in effect until the instrument is power cycled or a calibration set is loaded from nonvolatile memory with the smuX.cal.restore() function.

This function is only available when calibration is unlocked using smuX.cal.unlock().

Example

smua.source.calibratev(1, 1e-10, 1e-5, 0.9, 0.903)

Generates and activates new source calibration constants for the 1 A range. For point 1, it uses 1e-10 as the source value and 1e-5 as the reference measurement. For point 2, it uses 0.9 for the source value and 0.903 for the reference measurement.

Also see

Calibration

smuX.cal.restore()

smuX.cal.save()

smuX.cal.unlock()

smuX.measure.calibrateY()

smuX.source.compliance

This attribute contains the state of source compliance.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

Yes

Not applicable

Not saved

Not applicable

Usage

compliance = smuX.source.compliance

compliance

The state of source compliance:

  • true: Indicates that the limit function is in control of the source (source in compliance)
  • false: Indicates that the source function is in control of the output (source not in compliance)

X

Source‑measure unit (SMU) channel (for example, smua.source.compliance applies to SMU channel A)

Details

Reading this attribute updates the status model and the front panel with generated compliance information. See Current Limit (ILMT) in the status model diagram for the Measurement event registers. The Voltage Limit (VLMT) is not shown in the status model diagram for the Measurement event registers but is similar to the Current Limit (ILMT).

Example

compliance = smua.source.compliance

 

print(compliance)

Reads the source compliance state for SMU channel A.

Output:

true

This output indicates that a configured limit has been reached (voltage, current, or power limit).

Also see

smuX.source.limitY

smuX.source.delay

This attribute contains the source delay.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

SMU reset
Instrument reset
Recall setup

Not saved

0 (smuX.DELAY_OFF)

Usage

sDelay = smuX.source.delay

smuX.source.delay = sDelay

sDelay

Set to the source delay value (for example, to specify an additional 10 ms source delay, set the value to 0.010); you can also set it one of the following values:

  • 0 or smuX.DELAY_OFF: No delay
  • -1 or smuX.DELAY_AUTO: Automatic delay value

X

Source‑measure unit (SMU) channel (for example, smua.source.delay applies to SMU channel A)

Details

This attribute allows for additional delay (settling time) after an output step.

The smuX.DELAY_AUTO setting causes a range-dependent delay to be inserted when the source is changed. Range-dependent delays are based on the output settling time values as defined in the 2600B specifications.

Example

smua.source.delay = smua.DELAY_AUTO

Sets the delay for SMU channel A to automatic (a range-dependent delay is inserted whenever the source is changed).

Also see

reset()

smuX.measure.count

smuX.measure.delay

smuX.reset()

smuX.source.func

This attribute contains the source function, which can be voltage or current.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

SMU reset
Instrument reset
Recall setup

Saved setup

1 (smuX.OUTPUT_DCVOLTS)

Usage

sFunction = smuX.source.func

smuX.source.func = sFunction

sFunction

The source function; set to one of the following values:

  • 0 or smuX.OUTPUT_DCAMPS: Selects the current source function
  • 1 or smuX.OUTPUT_DCVOLTS: Selects the voltage source function

X

Source‑measure unit (SMU) channel (for example, smua.source.func applies to SMU channel A)

Details

Reading this attribute indicates the output function of the source for the specified SMU channel. Setting this attribute configures the SMU channel as either a voltage source or a current source.

Example

smua.source.func = smua.OUTPUT_DCAMPS

Sets the source function of SMU channel A to be a current source.

Also see

smuX.source.levelY

smuX.source.output

smuX.source.highc

This attribute enables or disables high-capacitance mode.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

SMU reset
Instrument reset
Recall setup

Saved setup

0 (smuX.DISABLE)

Usage

highC = smuX.source.highc

smuX.source.highc = highC

highC

The state of the high-capacitance mode; set to one of the following values:

  • 0 or smuX.DISABLE: Disables high-capacitance mode
  • 1 or smuX.ENABLE: Enables high-capacitance mode

X

Source‑measure unit (SMU) channel (for example, smua.source.highc applies to SMU channel A)

Details

When enabled, the high-capacitance mode has the following effects on the SMU settings:

  • smuX.measure.autorangei is set to smuX.AUTORANGE_FOLLOW_LIMIT and cannot be changed
  • Current ranges below 1 µA are not accessible
  • If smuX.source.limiti is less than 1 µA, it is raised to 1 µA
  • If smuX.source.rangei is less than 1 µA, it is raised to 1 µA
  • If smuX.source.lowrangei is less than 1 µA, it is raised to 1 µA
  • If smuX.measure.lowrangei is less than 1 µA, it is raised to 1 µA

Example

smua.source.highc = smua.ENABLE

Activates high-capacitance mode for SMU channel A.

Also see

High-capacitance mode

smuX.source.levelY

This attribute sets the source level.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

SMU reset
Instrument reset
Recall setup

Saved setup

0

Usage

sourceLevel = smuX.source.levelY

smuX.source.levelY = sourceLevel

sourceLevel

The source value; set to one of the following values:

Voltage: 0 V to ±40 V (2601B, 2602B, 2604B)

Voltage: 0 V to ±200 V (2611B, 2612B, 2614B, 2634B, 2635B, 2636B)

Current: 0 A to ±3 A (2601B, 2602B, 2604B)

Current: 0 A to ±1.5 A (2611B, 2612B, 2614B, 2634B, 2635B, 2636B)

X

Source‑measure unit (SMU) channel (for example, smua.source.levelv applies to SMU channel A)

Y

SMU source function (v = voltage, i = current)

Details

This attribute configures the output level of the voltage or current source.

If the source is configured as a voltage source and the output is on, the new smuX.source.levelv setting is sourced immediately. If the output is off or the source is configured as a current source, the voltage level is sourced when the source is configured as a voltage source and the output is turned on.

If the source is configured as a current source and the output is on, the new smuX.source.leveli setting is sourced immediately. If the output is off or the source is configured as a voltage source, the current level is sourced when the source is configured as a current source and the output is turned on.

The sign of sourceLevel dictates the polarity of the source. Positive values generate positive voltage or current from the high terminal of the source relative to the low terminal. Negative values generate negative voltage or current from the high terminal of the source relative to the low terminal.

The reset() function sets the source levels to 0 V and 0 A.

Example

smua.source.levelv = 1

Sets voltage source of SMU channel A to 1 V.

Also see

smuX.source.compliance

smuX.source.func

smuX.source.output

Source-measure concepts

smuX.source.limitY

This attribute sets compliance limits.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

SMU reset
Instrument reset
Recall setup

Saved setup

Limit voltage:

2601B, 2602B, 2604B: 40 (40 V)
2611B, 2612B, 2614B, 2634B, 2635B, 2636B:
20 (20 V)

Limit current:

2601B, 2602B, 2604B: 1 (1 A)
2611B, 2612B, 2614B, 2634B, 2635B, 2636B:
100e-3 (100 mA)

Limit power: 0 (disabled)

Usage

limit = smuX.source.limitY

smuX.source.limitY = limit

limit

The compliance limit value; set to one of the following values:
Voltage compliance:
2601B, 2602B, 2604B: 10 mV to 40 V
2611B, 2612B, 2614B, 2634B, 2635B, 2636B: 20 mV to 200 V

Current compliance:
2601B, 2602B, 2604B, 2611B, 2612B, 2614B: 10 nA to 3 A
2634B, 2635B, 2636B: 100 pA to 1.5 A

Power compliance (in watts)

X

Source‑measure unit (SMU) channel (for example, smua.source.limitv applies to SMU channel A)

Y

SMU function (v = voltage, i = current, p = power)

Details

Use the smuX.source.limiti attribute to limit the current output of the voltage source. Use smuX.source.limitv to limit the voltage output of the current source. The SMU always uses autoranging for the limit setting. Use the smuX.source.limitp attribute to limit the output power of the source.

Set this attribute in the test sequence before the turning the source on.

Using a limit value of 0 results in error code 1102, "Parameter too small," for v and i. Setting this attribute to zero disables power compliance for p. When setting the power compliance limit to a nonzero value, the SMU adjusts the source limit where appropriate to limit the output to the specified power. The SMU uses the lower of the programmed compliance value (the compliance level that is if power compliance is disabled) or the limit calculated from the power compliance setting.

Reading this attribute indicates the presently set compliance value. Use smuX.source.compliance to read the state of source compliance.

Example

smua.source.limitv = 15

Sets the voltage limit of SMU channel A to 15 V.

Also see

“DUT test connections” in the Series 2600B User's Guide

smuX.source.compliance

smuX.source.func

smuX.source.output

smuX.source.lowrangeY

This attribute sets the lowest source range that is used during autoranging.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

SMU reset
Instrument reset
Recall setup

Saved setup

Voltage:

2601B, 2602B, 2604B: 100e‑3 (100 mV)
2611B, 2612B, 2614B, 2634B, 2635B, 2636B: 200e‑3 (200 mV)

Current:

2601B, 2602B, 2604B, 2611B, 2612B, 2614B: 100e‑9 (100 nA)
2634B, 2635B, 2636B: 1e‑9 (1 nA)

Usage

sourceRangeLow = smuX.source.lowrangeY

smuX.source.lowrangeY = sourceRangeLow

sourceRangeLow

Set to the lowest voltage (in volts) or current (in amperes) range to be used

X

Source‑measure unit (SMU) channel (for example, smua.source.lowrangev applies to SMU channel A)

Y

SMU source function (v = voltage, i = current)

Details

This attribute is used with source autoranging to put a lower bound on the range that is used. Lower ranges generally require greater settling times. If you set a low range value, you might be able to source small values with less settling time.

If the instrument is set to autorange and it is on a range lower than the one specified by sourceRangeLow, the source range is changed to the range specified by sourceRangeLow.

Example

smua.source.lowrangev = 1

Sets volts low range for Models 2601B, 2602B, 2604B SMU A to 1 V. This prevents the source from using the 100 mV range when sourcing voltage.

Also see

smuX.source.autorangeY

smuX.source.offfunc

This attribute sets the source function that is used (source 0 A or 0 V) when the output is turned off and the source‑measure unit (SMU) is in normal output-off mode.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

SMU reset
Instrument reset
Recall setup

Saved setup

1 (smuX.OUTPUT_DCVOLTS)

Usage

offfunc = smuX.source.offfunc

smuX.source.offfunc = offfunc

offfunc

Set to the source function to be used when the output is off and the SMU is in normal output-off mode. Set to one of the following values:

  • 0 or smuX.OUTPUT_DCAMPS: Source 0 A
  • 1 or smuX.OUTPUT_DCVOLTS: Source 0 V

X

SMU channel (for example, smua.source.offfunc applies to SMU channel A)

Details

This attribute controls the source function used when the output is turned off and smuX.source.offmode is set to smuX.OUTPUT_NORMAL.

Set this attribute to smuX.OUTPUT_DCVOLTS for the source to be a 0 V source when the output is off (smuX.source.offlimiti is used).

Set it to smuX.OUTPUT_DCAMPS for the source to be a 0 A source when the output is off (smuX.source.offlimitv is used).

Example

smua.source.offmode = smua.OUTPUT_NORMAL

smua.source.offfunc = smua.OUTPUT_DCVOLTS

Sets the normal output-off mode to source 0 V when the output is turned off for SMU channel A.

Also see

Output-off states

smuX.source.offlimitY

smuX.source.offmode

smuX.source.output

smuX.source.offlimitY

This attribute sets the limit (current or voltage) used when the source‑measure unit (SMU) is in normal output-off mode.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

SMU reset
Instrument reset
Recall setup

Saved setup

Current: 1e-3 (1 mA)
Voltage: 40 (40 V)

Usage

sourceLimit = smuX.source.offlimitY

smuX.source.offlimitY = sourceLimit

sourceLimit

Set to the limit to be used when the SMU is in normal output-off mode

X

Source‑measure unit (SMU) channel (for example, smua.source.offlimiti applies to SMU channel A)

Y

SMU source function (v = voltage, i = current)

Details

Setting the current limit to lower than 1 mA may interfere with operation of the contact check function. See smuX.contact.check() and smuX.contact.r() for details.

Example

smua.source.offlimiti = 10e-3

Changes the normal output-off mode limit to 10 mA for SMU channel A.

Also see

smuX.contact.check()

smuX.contact.r()

smuX.source.offfunc

smuX.source.offmode

smuX.source.offmode

This attribute sets the source output-off mode.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

SMU reset
Instrument reset
Recall setup

Saved setup

0 (smuX.OUTPUT_NORMAL)

Usage

sourceOffMode = smuX.source.offmode

smuX.source.offmode = sourceOffMode

sourceOffMode

The output-off setting; set to one of the following values:

  • 0 or smuX.OUTPUT_NORMAL: Configures the source function according to smuX.source.offfunc attribute
  • 1 or smuX.OUTPUT_ZERO: Configures source to output 0 V as smuX.OUTPUT_NORMAL with different compliance handling (see the Details below)
  • 2 or smuX.OUTPUT_HIGH_Z: Opens the output relay when the output is turned off

X

Source‑measure unit (SMU) channel (for example, smua.source.offmode applies to SMU channel A)

Details

Reading this attribute returns the output-off mode of the source. Setting this attribute configures the SMU output-off mode.

The default sourceOffMode is smuX.OUTPUT_NORMAL. In this mode, the source function is configured according to the smuX.source.offfunc attribute. The smuX.source.offfunc attribute controls whether the SMU is configured as a 0 V voltage source or a 0 A current source. When the SMU is operating as a 0 A current source, the smuX.source.offlimitv attribute sets the voltage limit. This is similar to how the smuX.source.offlimiti attribute sets the current limit when the SMU is operating as a 0 V voltage source.

When the sourceOffMode is set to smuX.OUTPUT_ZERO, the source is configured to output 0 V just as smuX.OUTPUT_NORMAL mode with smuX.source.offfunc = smuX.OUTPUT_DCVOLTS. If the source function is voltage, the current limit is not changed. If the source function is current, the current limit is set to the current source level or 10 percent of the current source range, whichever is greater.

When sourceOffMode is set to smuX.OUTPUT_HIGH_Z, the SMU opens the output relay when the output is turned off.

Example

smua.source.offmode = smua.OUTPUT_HIGH_Z

Sets the output‑off mode for SMU channel A to open the output relay when the output is turned off.

Also see

Output-off states

smuX.source.offfunc

smuX.source.offlimitY

smuX.source.output

smuX.source.output

This attribute enables or disables the source output.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

SMU reset
Instrument reset
Recall setup

Not saved

0 (smuX.OUTPUT_OFF)

Usage

sourceOutput = smuX.source.output

smuX.source.output = sourceOutput

sourceOutput

The output state setting of the source; set to one of the following values:

  • 0 or smuX.OUTPUT_OFF: Turns off the source output
  • 1 or smuX.OUTPUT_ON: Turns on the source output
  • 2 or smuX.OUTPUT_HIGH_Z: Turns off the output in high Z mode (allows you to go to high Z mode without first setting the smuX.source.offmode attribute to smuX.OUTPUT_HIGH_Z)

X

Source‑measure unit (SMU) channel (for example, smua.source.output applies to SMU channel A)

Details

Reading this attribute returns the output state of the source. Setting this attribute switches the output of the source on or off.

When the output is switched on, the SMU sources either voltage or current, as set by smuX.source.func.

Setting this attribute to smuX.OUTPUT_HIGH_Z causes the output to turn off and go to the High Z mode. If the smuX.source.output is read after setting this attribute to smuX.OUTPUT_HIGH_Z, it returns 0.

Example

smua.source.output = smua.OUTPUT_ON

Turns on the SMU channel A source output.

Also see

“DUT test connections” in the Series 2600B User's Guide

smuX.source.func

smuX.source.offmode

smuX.source.outputenableaction

This attribute controls output enable action of the source.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

SMU reset
Instrument reset
Recall setup

Saved setup

0 (smuX.OE_NONE)

Usage

outputAction = smuX.source.outputenableaction

smuX.source.outputenableaction = outputAction

outputAction

The output enable action of the source; set to one of the following values:

  • 0 or smuX.OE_NONE: No action
  • 1 or smuX.OE_OUTPUT_OFF: Turns the source output off

X

Source‑measure unit (SMU) channel (for example, smua.source.outputenableaction applies to SMU channel A)

Details

For 2601B, 2602B, or 2604B, this attribute controls the action the SMU takes when the output enable line goes low (deasserted).

When set to smuX.OE_NONE, the SMU takes no action when the output enable line goes low (deasserted).

When set to smuX.OE_OUTPUT_OFF and the output enable line is de-asserted, the SMU turns its output off as if the smuX.source.output = smuX.OUTPUT_OFF command had been received.

The SMU does not automatically turn its output on when the output enable line returns to the high state.

If the output enable line is not asserted when this attribute is set to smuX.OE_OUTPUT_OFF and the output is on, the output turns off immediately.

Detection of the output enable line going low does not abort any running scripts. This may cause execution errors.

For models that have a safety interlock (2611B, 2612B, 2614B, 2635B, 2636B, and 2634B), this attribute dictates the source output behavior when the interlock line is not engaged and the source is configured for safe operation.

In the following situations, source output automatically turns off when the interlock is disengaged and the output cannot be turned on unless the interlock is engaged:

  • When sourcing voltage on the 20 V range or lower.
  • When sourcing current with a limit of 20 V or less and the smuX.source.outputenableaction attribute is set to smuX.OE_OUTPUT_OFF.

In the following situations, the source ignores the state of the interlock signal and the output can be turned on regardless of the interlock state:

  • When sourcing voltage on the 20 V range or lower.
  • When sourcing current with a limit of 20 V or less and the smuX.source.outputenableaction attribute is set to smuX.OE_NONE.

In the following situations, the source output automatically turns off when the interlock is disengaged, the output cannot be turned on unless the interlock is engaged, and the smuX.source.outputenableaction attribute is ignored:

  • When sourcing voltage on the 200 V range.
  • When sourcing current with a limit greater than 20 V.

Example

smua.source.outputenableaction = smua.OE_OUTPUT_OFF

Sets SMU channel A to turn off the output if the output enable line goes low (deasserted).

Also see

smuX.source.offmode

smuX.source.output

smuX.source.rangeY

This attribute contains the source range.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

SMU reset
Instrument reset
Recall setup

Saved setup

Voltage:

2601B, 2602B, 2604B:
100e-3 (100 mV)

2611B, 2612B, 2614B, 2634B, 2635B, 2636B: 200e-3 (200 mV)

Current:

2601B, 2602B, 2604B, 2611B, 2612B, 2614B:
100e-9 (100 nA)
2634B, 2635B, 2636B:
1e-9 (1 nA)

Usage

rangeValue = smuX.source.rangeY

smuX.source.rangeY = rangeValue

rangeValue

Set to the maximum expected voltage or current to be sourced

X

Source‑measure unit (SMU) channel (for example, smua.measure.rangev applies to SMU channel A)

Y

SMU source function (v = voltage, i = current)

Details

This attribute contains a value that sets the source‑measure unit (SMU) to a fixed range large enough to source the value. When read, the attribute contains the range the instrument is presently on when in autorange.

Assigning a value to this attribute sets the SMU to a fixed range large enough to source the assigned value. The instrument selects the best range for sourcing a value of rangeValue.

Reading this attribute returns the positive full-scale value of the source range the SMU is currently using. With source autoranging enabled, the output level controls the range. Querying the range after the level is set returns the range the instrument chose as appropriate for that source level.

This attribute is primarily intended to eliminate the time required by the automatic range selection performed by a sourcing instrument. Because selecting a fixed range prevents autoranging, an overrange condition can occur. For example, sourcing 10.0 V on the Model 2601B, 2602B, or 2604B 6 V range or sourcing 5.0 V on the 2611B, 2612B, or 2614B 2 V range causes an overrange condition.

Example

smua.source.rangev = 1

Selects the 1 V source range for SMU channel A.

Also see

Range

reset()

setup.recall()

smuX.measure.rangeY

smuX.reset()

smuX.source.autorangeY

smuX.source.settling

This attribute contains the source settling mode.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

SMU reset
Instrument reset
Recall setup

Not saved

0 (smuX.SETTLE_SMOOTH)

Usage

settleOption = smuX.source.settling

smuX.source.settling = settleOption

settleOption

Set to the source settling mode. Set to one of the following values:

0 or smuX.SETTLE_SMOOTH: Turns off additional settling operations (default)

1 or smuX.SETTLE_FAST_RANGE: Instructs the source‑measure unit (SMU) to use a faster procedure when changing ranges

2 or smuX.SETTLE_FAST_POLARITY: Instructs the SMU to change polarity without going to zero

3 or smuX.SETTLE_DIRECT_IRANGE: Instructs the SMU to change the current range directly

4 or smuX.SETTLE_SMOOTH_100NA: Enables the use of range rampers for the 100 nA range

128 or smuX.SETTLE_FAST_ALL: Enables all smuX.SETTLE_FAST_* operations

X

SMU channel (for example, smua.source.settling applies to SMU channel A)

Details

Using smuX.SETTLE_FAST_RANGE may cause the SMU to exceed the range change overshoot specification.

smuX.SETTLE_FAST_POLARITY does not go to zero when changing polarity and may create inconsistencies at the zero crossing.

smuX.SETTLE_DIRECT_IRANGE switches the SMU directly to the target range instead of the default range-by-range method. This option is mutually exclusive of any other smuX.SETTLE_FAST_* commands.

smuX.SETTLE_SMOOTH_100NA is disabled by default in the 2601B, 2602B, 2604B, 2611B, 2612B, and 2614B. In the 2634B, 2635B, and 2636B, it is always enabled.

Example

smua.source.settling = smua.SETTLE_FAST_POLARITY

Selects fast polarity changing for SMU channel A.

Also see

Range

smuX.source.sink

This attribute turns sink mode on or off.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

SMU reset
Instrument reset
Recall setup

Saved setup

0 (smuX.DISABLE)

Usage

sinkMode = smuX.source.sink

smuX.source.sink = sinkMode

sinkMode

Sets the sink mode on or off; set to one of the following values:

  • 0 or smuX.DISABLE: Turns off sink mode
  • 1 or smuX.ENABLE: Turns on sink mode

X

Source‑measure unit (SMU) channel (for example, smua.source.sink applies to SMU channel A)

Details

This attribute enables or disables sink mode. When sink mode is enabled, it reduces the source limit inaccuracy that occurs when operating in quadrants II and IV (quadrants I and III show this source limit inaccuracy).

Example

smua.source.sink = smua.ENABLE

Enables sink mode for SMU channel A.

Also see

Operating boundaries

smuX.trigger.arm.count

This attribute sets the arm count in the trigger model.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

SMU reset
Instrument reset
Recall setup

Not saved

1

Usage

triggerArmCount = smuX.trigger.arm.count

smuX.trigger.arm.count = triggerArmCount

triggerArmCount

The arm count in the trigger model

X

Source‑measure unit (SMU) channel (for example, smua.trigger.arm.count applies to SMU channel A)

Details

During a sweep, the SMU iterates through the arm layer of the trigger model this many times. After performing this many iterations, the SMU returns to an idle state.

If this count is set to zero, the SMU stays in the trigger model indefinitely until aborted.

Example

smua.trigger.arm.count = 5

Sets the SMU channel A to iterate through the arm layer of the trigger model five times and then return to the idle state.

Also see

smuX.trigger.count

smuX.trigger.arm.set()

This function sets the arm event detector to the detected state.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

smuX.trigger.arm.set()

X

Source‑measure unit (SMU) channel (for example, smua.trigger.arm.set() applies to SMU channel A)

Details

The SMU automatically clears all the event detectors when the smuX.trigger.initiate() function is executed. Call this function after the sweep is initiated.

A typical example that uses this function is when you want the SMU to immediately perform an action the first time through the trigger model, even if a programmed trigger event does not occur.

This function start actions on the SMU if a trigger event is missed.

Example

smua.trigger.arm.set()

Sets the arm event detector to the detected state for SMU channel A.

Also see

smuX.trigger.initiate()

smuX.trigger.measure.set()

smuX.trigger.source.set()

smuX.trigger.arm.stimulus

This attribute selects the event that causes the arm event detector to enter the detected state.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

SMU reset
Instrument reset
Recall setup

Not saved

0

Usage

eventID = smuX.trigger.arm.stimulus

smuX.trigger.arm.stimulus = eventID

eventID

Event that triggers the arm detector

X

Source‑measure unit (SMU) channel (for example, smua.trigger.arm.stimulus applies to SMU channel A)

Details

Set this attribute to the event ID of any trigger event generator to wait for that event.

Set this attribute to zero to bypass waiting for events at the arm event detector (the SMU continues uninterrupted through the remote trigger model). Set eventID to one of the existing trigger event IDs shown in the following table.

Trigger event IDs*

Event ID

Event description

smuX.trigger.SWEEPING_EVENT_ID

Occurs when the source‑measure unit (SMU) transitions from the idle state to the arm layer of the trigger model

smuX.trigger.ARMED_EVENT_ID

Occurs when the SMU moves from the arm layer to the trigger layer of the trigger model

smuX.trigger.SOURCE_COMPLETE_EVENT_ID

Occurs when the SMU completes a source action

smuX.trigger.MEASURE_COMPLETE_EVENT_ID

Occurs when the SMU completes a measurement action

smuX.trigger.PULSE_COMPLETE_EVENT_ID

Occurs when the SMU completes a pulse

smuX.trigger.SWEEP_COMPLETE_EVENT_ID

Occurs when the SMU completes a sweep

smuX.trigger.IDLE_EVENT_ID

Occurs when the SMU returns to the idle state

digio.trigger[N].EVENT_ID

Occurs when an edge is detected on a digital I/O line

tsplink.trigger[N].EVENT_ID

Occurs when an edge is detected on a TSP‑Link line

lan.trigger[N].EVENT_ID

Occurs when the appropriate LXI trigger packet is received on LAN trigger object N

display.trigger.EVENT_ID

Occurs when the TRIG key on the front panel is pressed

trigger.EVENT_ID

Occurs when a *TRG command is received on the remote interface

GPIB only: Occurs when a GET bus command is received

USB only: Occurs when a USBTMC TRIGGER message is received

VXI-11 only: Occurs with the VXI-11 command device_trigger; reference the VXI-11 standard for additional details on the device trigger operation

trigger.blender[N].EVENT_ID

Occurs after a collection of events is detected

trigger.timer[N].EVENT_ID

Occurs when a delay expires

trigger.generator[N].EVENT_ID

Occurs when the trigger.generator[N].assert() function is executed

 

 

* Use the name of the trigger event ID to set the stimulus value rather than the numeric value. Using the name makes the code compatible for future upgrades (for example, if the numeric values must change when enhancements are added to the instrument).

Example

smua.trigger.arm.stimulus = trigger.timer[1].EVENT_ID

An event on trigger timer 1 causes the arm event detector to enter the detected state.

Also see

Triggering

smuX.trigger.ARMED_EVENT_ID

This constant contains the number of the armed event.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Constant

Yes

 

 

 

Usage

eventID = smuX.trigger.ARMED_EVENT_ID

eventID

The armed event number

X

Source‑measure unit (SMU) channel (for example, smua.trigger.ARMED_EVENT_ID applies to SMU channel A)

Details

Set the stimulus of any trigger object to the value of this constant to have the trigger object respond to armed events from this SMU.

Example

trigger.timer[1].stimulus = smua.trigger.ARMED_EVENT_ID

Trigger timer when the SMU passes through the arm layer.

Also see

Triggering

smuX.trigger.autoclear

This attribute turns automatic clearing of the event detectors on or off.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

SMU reset
Instrument reset
Recall setup

Not saved

0 (smuX.DISABLE)

Usage

autoClear = smuX.trigger.autoclear

smuX.trigger.autoclear = autoClear

autoClear

Autoclear setting; set to one of the following values:

  • 0 or smuX.DISABLE: Turns off automatic clearing of the event detectors
  • 1 or smuX.ENABLE: Turns on automatic clearing of the event detectors

X

Source‑measure unit (SMU) channel (for example, smua.trigger.autoclear applies to SMU channel A)

Details

This attribute enables or disables automatic clearing of the trigger model state machine event detectors when the SMU transitions from the arm layer to the trigger layer.

Only the detected states of the event detectors are cleared.

The overrun statuses of the event detectors are not automatically cleared when the SMU transitions from the arm layer to the trigger layer.

The event detectors are always cleared when a sweep is initiated.

Example

smua.trigger.autoclear = smua.ENABLE

Automatically clear the event detectors for the trigger mode state.

Also see

Triggering

smuX.trigger.count

This attribute sets the trigger count in the trigger model.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

SMU reset
Instrument reset
Recall setup

Not saved

1

Usage

triggerCount = smuX.trigger.count

smuX.trigger.count = triggerCount

triggerCount

The trigger count is the number of times the source‑measure unit (SMU) iterates in the trigger layer for any given sweep

X

SMU channel (for example, smua.trigger.count applies to SMU channel A)

Details

During a sweep, the SMU iterates through the trigger layer of the trigger model the number of times set by this attribute. After performing the iterations, the SMU returns to the arm layer.

If this count is set to zero (0), the SMU stays in the trigger model indefinitely until aborted.

Example

reset()

period_timer = trigger.timer[1]

pulse_timer = trigger.timer[2]

smua.trigger.source.listv( {5} )

smua.trigger.source.action = smua.ENABLE

smua.source.rangev = 5

smua.trigger.measure.action = smua.DISABLE

pulse_timer.delay = 0.0006

pulse_timer.stimulus = period_timer.EVENT_ID

pulse_timer.count = 1

period_timer.delay = 0.005

period_timer.count = 9

period_timer.stimulus = smua.trigger.SWEEPING_EVENT_ID

period_timer.passthrough = true

smua.trigger.source.stimulus = period_timer.EVENT_ID

smua.trigger.endpulse.action = smua.SOURCE_IDLE

smua.trigger.endpulse.stimulus = pulse_timer.EVENT_ID

smua.trigger.count = 1

smua.trigger.arm.count = 10

smua.source.output = smua.OUTPUT_ON

smua.trigger.initiate()

waitcomplete()

smua.source.output = smua.OUTPUT_OFF

Generate a 10-point pulse train where each pulse has a width of 600 µs and a pulse period of 5 ms.

Alias the trigger timers to use for pulse width and period.

Create a fixed level voltage sweep.

Set the pulse width and trigger the pulse width timer with a period timer.

Set the pulse period to output one pulse per period and the count to generate 10 pulses.

Trigger the pulse period timer when a sweep is initiated.

Configure the timer to output a trigger event when it starts the first delay.

Trigger the SMU source action using pulse period timer.

Trigger the SMU end pulse action using pulse width timer.

Set the trigger model counts.

Configure the SMU to execute a 10-point pulse train.

Start the trigger model.

Wait for the sweep to complete.

Also see

Triggering

smuX.trigger.endpulse.action

This attribute enables or disables pulse mode sweeps.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

SMU reset
Instrument reset
Recall setup

Not saved

1 (smuX.SOURCE_HOLD)

Usage

pulseAction = smuX.trigger.endpulse.action

smuX.trigger.endpulse.action = pulseAction

pulseAction

The pulse mode setting; set to one of the following values (see Details for definition):

  • 0 or smuX.SOURCE_IDLE
  • 1 or smuX.SOURCE_HOLD

X

Source‑measure unit (SMU) channel (for example, smua.trigger.endpulse.action applies to SMU channel A)

Details

When set to smuX.SOURCE_HOLD, this attribute disables pulse mode sweeps, holding the source level for the remainder of the step.

When set to smuX.SOURCE_IDLE, this attribute enables pulse mode sweeps, setting the source level to the programmed (idle) level at the end of the pulse.

Example

smua.trigger.endpulse.action = smua.SOURCE_IDLE

smua.trigger.endpulse.stimulus = trigger.timer[1].EVENT_ID

Configure the end pulse action to achieve a pulse and configure trigger timer 1 to control the end of pulse.

Also see

Triggering

smuX.trigger.endpulse.set()

This function sets the end pulse event detector to the detected state.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

smuX.trigger.endpulse.set()

X

Source‑measure unit (SMU) channel (for example, smua.trigger.endpulse.set() applies to SMU channel A)

Details

This function sets the end pulse event detector to the detected state.

The SMU automatically clears all the event detectors when the smuX.trigger.initiate() function is executed. Therefore, call smuX.trigger.endpulse.set() after the sweep is initiated. If the event detectors are configured to clear automatically because the smuX.trigger.autoclear attribute is set to smuX.ENABLE, make sure that smuX.trigger.endpulse.set() is issued after the SMU has entered the trigger layer.

Example

reset()

period_timer = trigger.timer[1]

pulse_timer = trigger.timer[2]

smua.trigger.source.listv( {5} )

smua.trigger.source.action = smua.ENABLE

smua.source.rangev = 5

smua.trigger.measure.action = smua.DISABLE

pulse_timer.delay = 0.0006

pulse_timer.stimulus = period_timer.EVENT_ID

pulse_timer.count = 1

period_timer.delay = 0.005

period_timer.count = 9

period_timer.stimulus = smua.trigger.SWEEPING_EVENT_ID

period_timer.passthrough = true

smua.trigger.source.stimulus = period_timer.EVENT_ID

smua.trigger.endpulse.action = smua.SOURCE_IDLE

smua.trigger.endpulse.stimulus = pulse_timer.EVENT_ID

smua.trigger.count = 1

smua.trigger.arm.count = 10

smua.source.output = smua.OUTPUT_ON

smua.trigger.initiate()

waitcomplete()

smua.source.output = smua.OUTPUT_OFF

Generate a 10-point pulse train where each pulse has a width of 600 µs and a pulse period of 5 ms.

Alias the trigger timers to use for pulse width and period.

Create a fixed level voltage sweep.

Set the pulse width and trigger the pulse width timer with a period timer.

Set the pulse period to output one pulse per period and the count to generate 10 pulses.

Trigger the pulse period timer when a sweep is initiated.

Configure the timer to output a trigger event when it starts the first delay.

Trigger the SMU source action using pulse period timer.

Trigger the SMU end pulse action using pulse width timer.

Set the trigger model counts.

Configure the SMU to execute a 10-point pulse train.

Start the trigger model.

Wait for the sweep to complete.

Also see

smuX.trigger.autoclear

smuX.trigger.initiate()

Triggering

smuX.trigger.endpulse.stimulus

This attribute defines which event causes the end pulse event detector to enter the detected state.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

SMU reset
Instrument reset
Recall setup

Not saved

0

Usage

eventID = smuX.trigger.endpulse.stimulus

smuX.trigger.endpulse.stimulus = eventID

eventID

Set to the event that triggers the end pulse action of the source

X

Source‑measure unit (SMU) channel (for example, smua.trigger.endpulse.stimulus applies to SMU channel A)

Details

Set this attribute to the event ID of any trigger event generator to wait for that event. To bypass waiting for an event, set the value of this attribute to 0. Set eventID to one of the existing trigger event IDs, which are shown in the following table.

Trigger event IDs*

Event ID

Event description

smuX.trigger.SWEEPING_EVENT_ID

Occurs when the source‑measure unit (SMU) transitions from the idle state to the arm layer of the trigger model

smuX.trigger.ARMED_EVENT_ID

Occurs when the SMU moves from the arm layer to the trigger layer of the trigger model

smuX.trigger.SOURCE_COMPLETE_EVENT_ID

Occurs when the SMU completes a source action

smuX.trigger.MEASURE_COMPLETE_EVENT_ID

Occurs when the SMU completes a measurement action

smuX.trigger.PULSE_COMPLETE_EVENT_ID

Occurs when the SMU completes a pulse

smuX.trigger.SWEEP_COMPLETE_EVENT_ID

Occurs when the SMU completes a sweep

smuX.trigger.IDLE_EVENT_ID

Occurs when the SMU returns to the idle state

digio.trigger[N].EVENT_ID

Occurs when an edge is detected on a digital I/O line

tsplink.trigger[N].EVENT_ID

Occurs when an edge is detected on a TSP‑Link line

lan.trigger[N].EVENT_ID

Occurs when the appropriate LXI trigger packet is received on LAN trigger object N

display.trigger.EVENT_ID

Occurs when the TRIG key on the front panel is pressed

trigger.EVENT_ID

Occurs when a *TRG command is received on the remote interface

GPIB only: Occurs when a GET bus command is received

USB only: Occurs when a USBTMC TRIGGER message is received

VXI-11 only: Occurs with the VXI-11 command device_trigger; reference the VXI-11 standard for additional details on the device trigger operation

trigger.blender[N].EVENT_ID

Occurs after a collection of events is detected

trigger.timer[N].EVENT_ID

Occurs when a delay expires

trigger.generator[N].EVENT_ID

Occurs when the trigger.generator[N].assert() function is executed

 

 

* Use the name of the trigger event ID to set the stimulus value rather than the numeric value. Using the name makes the code compatible for future upgrades (for example, if the numeric values must change when enhancements are added to the instrument).

Example

smua.trigger.endpulse.action = smua.SOURCE_IDLE

smua.trigger.endpulse.stimulus = trigger.timer[1].EVENT_ID

Configure the end pulse action to achieve a pulse and select the event, trigger.timer[1].EVENT_ID, that causes the arm event detector to enter the detected state.

Also see

Triggering

smuX.trigger.endsweep.action

This attribute sets the action of the source at the end of a sweep.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

SMU reset
Instrument reset
Recall setup

Not saved

0 (smuX.SOURCE_IDLE)

Usage

action = smuX.trigger.endsweep.action

smuX.trigger.endsweep.action = action

action

The source action at the end of a sweep; set to one of the following values:

  • 0 or smuX.SOURCE_IDLE: Sets the source level to the programmed (idle) level at the end of the sweep
  • 1 or smuX.SOURCE_HOLD: Sets the source level to stay at the level of the last step

X

Source‑measure unit (SMU) channel (for example, smua.trigger.endsweep.action applies to SMU channel A)

Details

Use this attribute to configure the source action at the end of the sweep. The SMU can be programmed to return to the idle source level or hold the last value of the sweep.

Example

smua.trigger.endsweep.action = smua.SOURCE_IDLE

Sets SMU channel A to return the source to the idle source level at the end of a sweep.

Also see

Triggering

smuX.trigger.IDLE_EVENT_ID

This constant contains the idle event number.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Constant

Yes

 

 

 

Usage

eventID = smuX.trigger.IDLE_EVENT_ID

eventID

The idle event number

X

Source-measure unit (SMU) channel (for example, smua.trigger.IDLE_EVENT_ID applies to SMU channel A)

Details

Set the stimulus of any trigger object to the value of this constant to have the trigger object respond to idle events from this SMU.

Example

trigger.timer[1].stimulus = smua.trigger.IDLE_EVENT_ID

Trigger timer 1 when the SMU returns to the idle layer.

Also see

Triggering

smuX.trigger.initiate()

This function initiates a sweep operation.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

smuX.trigger.initiate()

X

Source‑measure unit (SMU) channel (for example, smua.trigger.initiate() applies to SMU channel A)

Details

This function causes the SMU to clear the four trigger model event detectors and enter its trigger model (moves the SMU from the idle state into the arm layer).

To perform source actions during the sweep, before calling this function, it is necessary to configure and enable one of the following sweep source actions:

  • smuX.trigger.source.linearY()
  • smuX.trigger.source.listY()
  • smuX.trigger.source.logY()

To make measurements during the sweep, you must also configure and enable the measure action using smuX.trigger.measure.Y().

If you run this function more than once without reconfiguring the sweep measurements, the caches on the configured measurement reading buffers hold stale data. Use the bufferVar.clearcache() function to remove stale values from the reading buffer cache.

This function initiates an overlapped operation.

Example

smua.trigger.initiate()

Starts a preconfigured sweep and clears the event detectors for SMU channel A.

Also see

bufferVar.clearcache()

Configuring and running sweeps

smuX.trigger.measure.action

smuX.trigger.measure.Y()

smuX.trigger.source.action

smuX.trigger.source.linearY()

smuX.trigger.source.listY()

smuX.trigger.source.logY()

Triggering

smuX.trigger.measure.action

This attribute controls measurement actions during a sweep.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

SMU reset
Instrument reset
Recall setup

Not saved

0 (smuX.DISABLE)

Usage

action = smuX.trigger.measure.action

smuX.trigger.measure.action = action

action

The sweep measurement action; set to one of the following values:

  • 0 or smuX.DISABLE: Do not make measurements during the sweep
  • 1 or smuX.ENABLE: Make measurements during the sweep
  • 2 or smuX.ASYNC: Make measurements during the sweep, but asynchronously with the source area of the trigger model

X

Source‑measure unit (SMU) channel (for example, smua.trigger.measure.action applies to SMU channel A)

Details

With this attribute enabled (setting action to smuX.ENABLE or smuX.ASYNC), configure the measurement with one of the smuX.trigger.measure.Y() functions.

If this attribute is set to smuX.ASYNC:

  • Asynchronous sweep measurements can only be used with measure autoranging turned off. To turn measure autoranging off for all measurements during the sweep, set the smuX.measure.autorangeY attribute to smuX.AUTORANGE_OFF.
  • Autozero must also be turned off. To turn off autozero, set the smuX.measure.autozero attribute to smuX.AUTOZERO_OFF or smuX.AUTOZERO_ONCE.
  • The reading buffer used by smuX.trigger.measure.Y() must have bufferVar.collectsourcevalues set to 0.

If any of the above items is incorrectly configured, the smuX.trigger.initiate() function generates an error.

Example

smua.trigger.measure.v(smua.nvbuffer1)

smua.trigger.measure.action = smua.ENABLE

Configure sweep voltage measurements.

Enable voltage measurements during the sweep.

Also see

bufferVar.collectsourcevalues

smuX.trigger.autoclear

smuX.trigger.measure.Y()

Triggering

smuX.trigger.measure.set()

This function sets the measurement event detector to the detected state.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

smuX.trigger.measure.set()

X

Source‑measure unit (SMU) channel (for example, smua.trigger.measure.set() applies to SMU channel A)

Details

This function is useful whenever you want the SMU to continue operation without waiting for a programmed trigger event. When called, this function immediately satisfies the event detector, allowing the SMU to continue through the trigger model.

For example, you might use this function to have the SMU immediately perform an action the first time through the trigger model, even if a programmed trigger event does not occur.

If the event detectors are configured to clear automatically because the smuX.trigger.autoclear attribute is set to smuX.ENABLE, make sure that smuX.trigger.measure.set() is issued after the SMU has entered the trigger layer. This function can also be used to start actions on the SMU in case of a missed trigger event.

The SMU automatically clears all event detectors when the smuX.trigger.initiate() function is executed. Call this function after the sweep is initiated.

Example

smua.trigger.measure.set()

Sets the measure event detector of SMU channel A.

Also see

smuX.trigger.arm.set()

smuX.trigger.autoclear

smuX.trigger.endpulse.set()

smuX.trigger.source.set()

smuX.trigger.measure.stimulus

This attribute selects the event that causes the measure event detector to enter the detected state.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

SMU reset
Instrument reset
Recall setup

Not saved

0

Usage

eventID = smuX.trigger.measure.stimulus

smuX.trigger.measure.stimulus = eventID

eventID

Event that triggers the measurement detector

X

Source‑measure unit (SMU) channel (for example, smua.trigger.measure.stimulus applies to SMU channel A)

Details

Set this attribute to the event ID of any trigger event generator to wait for that event. When set, the SMU waits for the event at the measurement event detector portion of the trigger model.

Set this attribute to zero to bypass waiting for an event (the SMU continues uninterrupted through the remote trigger model). Set eventID to one of the existing trigger event IDs shown in the following table.

Trigger event IDs*

Event ID

Event description

smuX.trigger.SWEEPING_EVENT_ID

Occurs when the source‑measure unit (SMU) transitions from the idle state to the arm layer of the trigger model

smuX.trigger.ARMED_EVENT_ID

Occurs when the SMU moves from the arm layer to the trigger layer of the trigger model

smuX.trigger.SOURCE_COMPLETE_EVENT_ID

Occurs when the SMU completes a source action

smuX.trigger.MEASURE_COMPLETE_EVENT_ID

Occurs when the SMU completes a measurement action

smuX.trigger.PULSE_COMPLETE_EVENT_ID

Occurs when the SMU completes a pulse

smuX.trigger.SWEEP_COMPLETE_EVENT_ID

Occurs when the SMU completes a sweep

smuX.trigger.IDLE_EVENT_ID

Occurs when the SMU returns to the idle state

digio.trigger[N].EVENT_ID

Occurs when an edge is detected on a digital I/O line

tsplink.trigger[N].EVENT_ID

Occurs when an edge is detected on a TSP‑Link line

lan.trigger[N].EVENT_ID

Occurs when the appropriate LXI trigger packet is received on LAN trigger object N

display.trigger.EVENT_ID

Occurs when the TRIG key on the front panel is pressed

trigger.EVENT_ID

Occurs when a *TRG command is received on the remote interface

GPIB only: Occurs when a GET bus command is received

USB only: Occurs when a USBTMC TRIGGER message is received

VXI-11 only: Occurs with the VXI-11 command device_trigger; reference the VXI-11 standard for additional details on the device trigger operation

trigger.blender[N].EVENT_ID

Occurs after a collection of events is detected

trigger.timer[N].EVENT_ID

Occurs when a delay expires

trigger.generator[N].EVENT_ID

Occurs when the trigger.generator[N].assert() function is executed

 

 

* Use the name of the trigger event ID to set the stimulus value rather than the numeric value. Using the name makes the code compatible for future upgrades (for example, if the numeric values must change when enhancements are added to the instrument).

Example

smua.trigger.measure.stimulus = trigger.timer[1].EVENT_ID

Sets delay before measurement begins on SMU channel A.

Also see

Triggering

smuX.trigger.measure.Y()

This function configures the measurements that are to be made in a subsequent sweep.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

smuX.trigger.measure.Y(rbuffer)

smuX.trigger.measure.iv(ibuffer, vbuffer)

X

Source‑measure unit (SMU) channel (for example, smua.trigger.measure.v() applies to SMU channel A)

Y

SMU measurement type (v = voltage, i = current, r = resistance, p = power)

rbuffer

A reading buffer object where the readings are stored

ibuffer

A reading buffer object where current readings are stored

vbuffer

A reading buffer object where voltage readings are stored

Details

As measurements are made, they are stored in a reading buffer. If the instrument is configured to return multiple readings where one is requested, the readings are available as they are made. Measurements are in the following units of measure: v = volts, i = amperes, r = ohms, p = watts.

The smuX.trigger.measure.iv() function stores current readings in ibuffer and voltage readings in vbuffer.

If a given reading buffer contains any data, it is cleared before making any measurements, unless the reading buffer has been configured to append data.

The SMU only retains the last call to any one of these functions and only that measurement action is performed.

After configuring the measurements to make with this function, enable the measurement action.

Example

smua.trigger.measure.v(vbuffername)

smua.trigger.measure.action = smua.ENABLE

Stores voltage readings during the sweep for SMU channel A in buffer vbuffername.

Also see

Reading buffers

smuX.measure.Y()

smuX.nvbufferY

smuX.trigger.measure.action

Sweep Operation

Triggering

waitcomplete()

smuX.trigger.MEASURE_COMPLETE_EVENT_ID

This constant contains the measurement complete event number.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Constant

Yes

 

 

 

Usage

eventID = smuX.trigger.MEASURE_COMPLETE_EVENT_ID

eventID

The measurement complete event number

X

Source‑measure unit (SMU) channel (for example, smua.trigger.MEASURE_COMPLETE_EVENT_ID applies to SMU channel A)

Details

Set the stimulus of any trigger object to the value of this constant to have the trigger object respond to measure complete events from this SMU.

Example

trigger.timer[1].stimulus = smuX.trigger.MEASURE_COMPLETE_EVENT_ID

Trigger the timer when the SMU completes a measurement.

Also see

Triggering

smuX.trigger.PULSE_COMPLETE_EVENT_ID

This constant contains the pulse complete event number.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Constant

Yes

 

 

 

Usage

eventID = smuX.trigger.PULSE_COMPLETE_EVENT_ID

eventID

The pulse complete event number

X

Source‑measure unit (SMU) channel (for example, smua.trigger.PULSE_COMPLETE_EVENT_ID applies to SMU channel A)

Details

Set the stimulus of any trigger object to the value of this constant to have the trigger object respond to pulse complete events.

Example

trigger.timer[1].stimulus = smua.trigger.PULSE_COMPLETE_EVENT_ID

Trigger a timer when the SMU completes a pulse.

Also see

Triggering

smuX.trigger.source.action

This attribute enables or disables sweeping the source (on or off).

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

SMU reset
Instrument reset
Recall setup

Not saved

0 (smuX.DISABLE)

Usage

action = smuX.trigger.source.action

smuX.trigger.source.action = action

action

Sweep source action. Set to one of the following values:

  • 0 or smuX.DISABLE: Do not sweep the source
  • 1 or smuX.ENABLE: Sweep the source

X

Source‑measure unit (SMU) channel (for example, smua.trigger.source.action applies to SMU channel A)

Details

This attribute enables or disables source‑level changes during a sweep. In addition to enabling the action before initiating the sweep, make sure to configure it using smuX.trigger.source.linearY(), smuX.trigger.source.listY(), or smuX.trigger.source.logY().

Example

smua.trigger.source.listv({3, 1, 4, 5, 2})

smua.trigger.source.action = smua.ENABLE

Configure a list sweep for SMU channel A (sweep through 3 V, 1 V, 4 V, 5 V, and 2 V).

Enable the source action.

Also see

smuX.trigger.source.linearY()

smuX.trigger.source.listY()

smuX.trigger.source.logY()

Triggering

smuX.trigger.source.limitY

This attribute sets the sweep source limit.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

SMU reset
Instrument reset
Recall setup

Not saved

0 (smuX.LIMIT_AUTO)

Usage

sweepSourceLimit = smuX.trigger.source.limitY

smuX.trigger.source.limitY = sweepSourceLimit

sweepSourceLimit

The source limit that is used during triggered operation; set to:

  • A user-defined value
  • smuX.LIMIT_AUTO

X

Source‑measure unit (SMU) channel (for example, smua.trigger.source.limitv applies to SMU channel A)

Y

SMU output function (v = voltage, i = current)

Details

Use this attribute to perform extended operating area pulse mode sweeps.

If this attribute is set to smuX.LIMIT_AUTO (or 0), the SMU uses the normal limit setting during sweeping. If this attribute is set to any other numeric value, the SMU switches in this limit at the start of the source action and returns to the normal limit setting at the end of the end pulse action.

Normally, the limit range is automatically adjusted in accordance with the limit value. During sweeping, however, the limit range is fixed to avoid the delays associated with changing range. This fixed limit range is determined by the maximum limit value needed during the sweep; that is, the greater of either the normal limit value (as specified by smuX.source.limitY) or the sweep limit value (as specified by smuX.trigger.source.limitY). The minimum limit value that can be enforced during the sweep is equal to 10% of the full‑scale value of the fixed limit range. If the smaller limit value (normal or sweep) falls below this 10% threshold, the 10% value is enforced instead. Likewise, if the limit value falls below the 10% threshold as a result of power compliance, the 10% value is enforced instead.

When using the extended operating area, the SMU automatically starts the end pulse action if the SMU is not triggered before its maximum pulse width. It also delays the source action if necessary to limit the pulse duty cycle to stay within the capabilities of the SMU.

Example

smua.trigger.source.limitv = 10

Sets the voltage sweep limit to 10 V.

Also see

Configuring and running sweeps

smuX.source.limitY

Triggering

smuX.trigger.source.linearY()

This function configures a linear source sweep.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

smuX.trigger.source.linearY(startValue, endValue, points)

X

Source‑measure unit (SMU) channel (for example, smua.trigger.source.linearv(0, 10, 11) applies to SMU channel A)

Y

SMU source function (v = voltage, i = current)

startValue

Source value of the first point

endValue

Source value of the last point

points

The number of points used to calculate the step size

Details

This function configures the source action to be a linear source sweep in a subsequent sweep. During the sweep, the source generates a uniform series of ascending or descending voltage or current changes called steps. The number of source steps is one less than the number of sourced points.

The points parameter does not set the number of steps in a sweep. Instead, it is used to calculate source values within a subsequent sweep. If the subsequent sweep has more points than specified in points, the source restarts at the beginning. This means that if the trigger count is greater than the number of points in a sweep as configured, the SMU satisfies the trigger count by restarting the sweep values from the beginning.

If the subsequent sweep has fewer points than specified in points, endValue is not reached during the sweep. This means that if the trigger count is less than the number of source values configured, the SMU satisfies the trigger count and ignores the remaining source values.

In cases where the first sweep point is a nonzero value, it may be necessary to pre-charge the circuit so that the sweep returns a stable value for the first measured point without penalizing remaining points in the sweep.

With linear sweeps, it is acceptable to maintain a fixed source resolution over the entire sweep. To prevent source range changes during the sweep (especially when sweeping through 0.0), set the source range to a fixed range appropriate for the larger of either startValue or endValue.

The SMU only stores the most recent configured source action. The last call to smuX.trigger.source.linearY(), smuX.trigger.source.listY(), or smuX.trigger.source.logY() is used for the source action.

Source functions cannot be changed within a sweep.

After configuring the sweep source values, enable the source action by setting smuX.trigger.source.action.

Example

smua.trigger.source.linearv(0, 10, 11)

Sweeps from 0 V to 10 V in 1 V steps.

Also see

smuX.trigger.source.action

smuX.trigger.source.listY()

smuX.trigger.source.logY()

Sweep Operation

smuX.trigger.source.listY()

This function configures an array-based source sweep.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

smuX.trigger.source.listY(sweepList)

X

Source‑measure unit (SMU) channel (for example, smua.trigger.source.listv({5}) applies to SMU channel A)

Y

SMU source function (v = voltage, i = current)

sweepList

An array of source values

Details

This function configures the source action to be a list sweep in a subsequent sweep. During the sweep, the source outputs the sequence of source values given in the sweepList array.

If the subsequent sweep has more points than specified in sweepList, the source restarts at the beginning. This means that if the trigger count is greater than the number of points in a sweep as configured, the SMU satisfies the trigger count by restarting the sweep values from the beginning.

If the subsequent sweep has fewer points than specified in sweepList, the extra values are ignored. This means that if the trigger count is less than the number of source values configured, the SMU satisfies the trigger count and ignores the remaining source values.

In cases where the first sweep point is a nonzero value, it may be necessary to precharge the circuit so that the sweep returns a stable value for the first measured point without penalizing remaining points in the sweep.

The SMU only stores the most recent configured source action. The last call to smuX.trigger.source.linearY(), smuX.trigger.source.listY(), or smuX.trigger.source.logY() is used for the source action.

Source functions cannot be changed within a sweep.

After configuring the sweep source values, enable the source action by setting smuX.trigger.source.action.

Example

smua.trigger.source.listv({3, 1, 4, 5, 2})

Sweeps SMU channel A through 3 V, 1 V, 4 V, 5 V, and 2 V.

Also see

smuX.trigger.source.action

smuX.trigger.source.linearY()

smuX.trigger.source.logY()

Sweep operation

smuX.trigger.source.logY()

This function configures an exponential (geometric) source sweep.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

smuX.trigger.source.logY(startValue, endValue, points, asymptote)

X

Source-measure unit (SMU) channel (for example, smua.trigger.source.logv(1, 10, 11, 0) applies to SMU channel A)

Y

SMU source function (v = voltage, i = current)

startValue

Source value of the first point

endValue

Source value of the last point

points

The number of points used to calculate the step size

asymptote

The asymptotic offset value

Details

This function configures the source action to be a geometric source sweep in a subsequent sweep. During the sweep, the source generates a geometric series of ascending or descending voltage or current changes called steps. Each step is larger or smaller than the previous step by a fixed proportion. The constant of proportionality is determined by the starting value, the ending value, the asymptote, and the number of steps in the sweep. The number of source steps is one less than the number of sourced points.

The points parameter does not set the number of steps in a sweep, but rather is used to calculate source values within a subsequent sweep. If the subsequent sweep has more points than specified in points, the source restarts at the beginning. This means that if the trigger count is greater than the number of points in a sweep as configured, the SMU satisfies the trigger count by restarting the sweep values from the beginning.

If the subsequent sweep has fewer points than specified in points, endValue is not reached during the sweep. This means that if the trigger count is less than the number of source values configured, the SMU satisfies the trigger count and ignores the remaining source values.

In cases where the first sweep point is nonzero, it may be necessary to pre-charge the circuit so that the sweep returns a stable value for the first measured point without penalizing remaining points in the sweep.

With logarithmic sweeps, it is usually necessary to allow the source to autorange to maintain good source accuracy when sweeping over more than one decade or across range boundaries.

The asymptote parameter customizes the inflection and offset of the source value curve. This allows log sweeps to cross zero. Setting this parameter to zero provides a conventional logarithmic sweep. The asymptote value is the value that the curve has at either positive or negative infinity, depending on the direction of the sweep.

The asymptote value must not be equal to or between the starting and ending values. It must be outside the range defined by the starting and ending values.

The SMU stores only the most recent configured source action. The last call to smuX.trigger.source.linearY(), smuX.trigger.source.listY(), or smuX.trigger.source.logY() is used for the source action.

Source functions cannot be changed within a sweep.

After configuring the sweep source values, enable the source action by setting smuX.trigger.source.action.

Example

smua.trigger.source.logv(1, 10, 11, 0)

Sweeps SMU channel A from 1 V to 10 V in 10 steps with an asymptote of 0 V.

Also see

smuX.trigger.source.action

smuX.trigger.source.linearY()

smuX.trigger.source.listY()

Sweep operation

smuX.trigger.source.set()

This function sets the source event detector to the detected state.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

smuX.trigger.source.set()

X

Source‑measure unit (SMU) channel (for example, smua.trigger.source.set() applies to SMU channel A)

Details

This function sets the source event detector to the detected state.

The SMU automatically clears all event detectors when the smuX.trigger.initiate() function is executed. Call this function after the sweep is initiated. If the event detectors are configured to clear automatically because the smuX.trigger.autoclear attribute is set to smuX.ENABLE, make sure that smuX.trigger.source.set() is issued after the SMU has entered the trigger layer.

Example

reset()

smua.trigger.source.listv({5})

smua.trigger.source.stimulus = display.trigger.EVENT_ID

smua.source.output = smua.OUTPUT_ON

smua.trigger.initiate()

delay(1)

-- Continue even if the display trigger key was not pressed.

smua.trigger.source.set()

waitcomplete()

Sets the source event detector.

Also see

smuX.trigger.arm.set()

smuX.trigger.autoclear

smuX.trigger.endpulse.set()

smuX.trigger.initiate()

smuX.trigger.measure.set()

Triggering

smuX.trigger.source.stimulus

This attribute defines which event causes the source event detector to enter the detected state.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

SMU reset
Instrument reset
Recall setup

Not saved

0

Usage

eventID = smuX.trigger.source.stimulus

smuX.trigger.source.stimulus = eventID

eventID

Set to the event that triggers the end‑pulse source off action

X

Source‑measure (SMU) channel (for example, smua.trigger.source.stimulus applies to SMU channel A)

Details

Set this attribute to the event ID of any trigger event generator to wait for that event. When set, the SMU waits for the event at the source event detector portion of the trigger model. To bypass waiting for an event, set the value of this attribute to zero (0). Set eventID to one of the existing trigger event IDs shown in the following table.

Trigger event IDs*

Event ID

Event description

smuX.trigger.SWEEPING_EVENT_ID

Occurs when the source‑measure unit (SMU) transitions from the idle state to the arm layer of the trigger model

smuX.trigger.ARMED_EVENT_ID

Occurs when the SMU moves from the arm layer to the trigger layer of the trigger model

smuX.trigger.SOURCE_COMPLETE_EVENT_ID

Occurs when the SMU completes a source action

smuX.trigger.MEASURE_COMPLETE_EVENT_ID

Occurs when the SMU completes a measurement action

smuX.trigger.PULSE_COMPLETE_EVENT_ID

Occurs when the SMU completes a pulse

smuX.trigger.SWEEP_COMPLETE_EVENT_ID

Occurs when the SMU completes a sweep

smuX.trigger.IDLE_EVENT_ID

Occurs when the SMU returns to the idle state

digio.trigger[N].EVENT_ID

Occurs when an edge is detected on a digital I/O line

tsplink.trigger[N].EVENT_ID

Occurs when an edge is detected on a TSP‑Link line

lan.trigger[N].EVENT_ID

Occurs when the appropriate LXI trigger packet is received on LAN trigger object N

display.trigger.EVENT_ID

Occurs when the TRIG key on the front panel is pressed

trigger.EVENT_ID

Occurs when a *TRG command is received on the remote interface

GPIB only: Occurs when a GET bus command is received

USB only: Occurs when a USBTMC TRIGGER message is received

VXI-11 only: Occurs with the VXI-11 command device_trigger; reference the VXI-11 standard for additional details on the device trigger operation

trigger.blender[N].EVENT_ID

Occurs after a collection of events is detected

trigger.timer[N].EVENT_ID

Occurs when a delay expires

trigger.generator[N].EVENT_ID

Occurs when the trigger.generator[N].assert() function is executed

 

 

* Use the name of the trigger event ID to set the stimulus value rather than the numeric value. Using the name makes the code compatible for future upgrades (for example, if the numeric values must change when enhancements are added to the instrument).

Example

smua.trigger.source.stimulus = digio.trigger[2].EVENT_ID

Configure SMU channel A to start its source action when a trigger event occurs on digital I/O line 2.

Also see

Triggering

smuX.trigger.SOURCE_COMPLETE_EVENT_ID

This constant contains the source complete event number.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Constant

Yes

 

 

 

Usage

eventID = smuX.trigger.SOURCE_COMPLETE_EVENT_ID

eventID

The source action complete event number

X

Source‑measure unit (SMU) channel (for example, smua.trigger.SOURCE_COMPLETE_EVENT_ID applies to SMU channel A)

Details

Set the stimulus of any trigger object to the value of this constant to have the trigger object respond to source complete events from this source‑measure unit (SMU).

Example

trigger.timer[1].stimulus = smua.trigger.SOURCE_COMPLETE_EVENT_ID

Trigger the timer when the SMU updates the source level or starts a pulse.

Also see

Triggering

smuX.trigger.SWEEP_COMPLETE_EVENT_ID

This constant contains the sweep complete event number.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Constant

Yes

 

 

 

Usage

eventID = smuX.trigger.SWEEP_COMPLETE_EVENT_ID

eventID

The sweep complete event number

X

Source‑measure unit (SMU) channel (for example, smua.trigger.SWEEP_COMPLETE_EVENT_ID applies to SMU channel A)

Details

Set the stimulus of any trigger object to the value of this constant to have the trigger object respond to sweep complete events from this SMU.

Example

digio.trigger[2].mode = digio.TRIG_RISINGA

digio.trigger[2].clear()

smua.trigger.source.stimulus = digio.trigger[2].EVENT_ID

digio.trigger[4].mode = digio.TRIG_RISINGM

digio.trigger[4].pulsewidth = 0.001

digio.trigger[4].stimulus = smua.trigger.SWEEP_COMPLETE_EVENT_ID

Configure the 2600B to detect a rising edge on digital I/O line 2.

Configure SMU A to start its source action when a trigger event occurs on digital I/O line 2.

Configure digital I/O line 4 to output a 1 ms rising-edge trigger pulse at the completion of the SMU sweep.

Also see

Triggering

smuX.trigger.SWEEPING_EVENT_ID

This constant contains the sweeping event number.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Constant

Yes

 

 

 

Usage

eventID = smuX.trigger.SWEEPING_EVENT_ID

eventID

The sweeping event number

X

Source‑measure unit (SMU) channel (for example, smua.trigger.SWEEPING_EVENT_ID applies to SMU channel A)

Details

Set the stimulus of any trigger object to the value of this constant to have the trigger object respond to sweeping events from this SMU.

Example

reset()

period_timer = trigger.timer[1]

pulse_timer = trigger.timer[2]

smua.trigger.source.listv( {5} )

smua.trigger.source.action = smua.ENABLE

smua.source.rangev = 5

smua.trigger.measure.action = smua.DISABLE

pulse_timer.delay = 0.0006

pulse_timer.stimulus = period_timer.EVENT_ID

pulse_timer.count = 1

period_timer.delay = 0.005

period_timer.count = 9

period_timer.stimulus = smua.trigger.SWEEPING_EVENT_ID

period_timer.passthrough = true

smua.trigger.source.stimulus = period_timer.EVENT_ID

smua.trigger.endpulse.action = smua.SOURCE_IDLE

smua.trigger.endpulse.stimulus = pulse_timer.EVENT_ID

smua.trigger.count = 1

smua.trigger.arm.count = 10

smua.source.output = smua.OUTPUT_ON

smua.trigger.initiate()

waitcomplete()

smua.source.output = smua.OUTPUT_OFF

Generate a 10-point pulse train where each pulse has a width of 600 µs and a pulse period of 5 ms.

Alias the trigger timers to use for pulse width and period.

Create a fixed level voltage sweep.

Set the pulse width and trigger the pulse width timer with a period timer.

Set the pulse period to output one pulse per period and the count to generate 10 pulses.

Trigger the pulse period timer when a sweep is initiated.

Configure the timer to output a trigger event when it starts the first delay.

Trigger the SMU source action using pulse period timer.

Trigger the SMU end pulse action using pulse width timer.

Set the trigger model counts.

Configure the SMU to execute a 10-point pulse train.

Start the trigger model.

Wait for the sweep to complete.

Also see

Triggering

status.condition

This attribute stores the status byte condition register.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

Yes

Not applicable

Not saved

Not applicable

Usage

statusByte = status.condition

statusByte

The status byte; a zero (0) indicates no bits set; other values indicate various bit settings

Details

This attribute is used to read the status byte, which is returned as a numeric value. The binary equivalent of the value of this attribute indicates which register bits are set. In the binary equivalent, the least significant bit is bit B0, and the most significant bit is bit B7. For example, if a value of 1.29000e+02 (which is 129) is read as the value of this register, the binary equivalent is 1000 0001. This value indicates that bit B0 and bit B7 are set.

B7

B6

B5

B4

B3

B2

B1

B0

**

>

>

>

>

>

>

*

1

0

0

0

0

0

0

1

* Least significant bit
** Most significant bit

The returned value can indicate one or more status events occurred. When an enabled status event occurs, a summary bit is set in this register to indicate the event occurrence.

The individual bits of this register have the following meanings:

Bit

Value and description

B0

status.MEASUREMENT_SUMMARY_BIT

status.MSB

Set summary bit indicates that an enabled measurement event has occurred.

Bit B0 decimal value: 1

B1

status.SYSTEM_SUMMARY_BIT

status.SSB

This bit is only available on 2601B, 2602B, 2611B, 2612B, 2635B, and 2636B.

Set summary bit indicates that an enabled system event has occurred.

Bit B1 decimal value: 2

B2

status.ERROR_AVAILABLE

status.EAV

Set summary bit indicates that an error or status message is present in the Error Queue.

Bit B2 decimal value: 4

B3

************using this? Grayed-out on the status model diagram

status.QUESTIONABLE_SUMMARY_BIT

status.QSB

Set summary bit indicates that an enabled questionable event has occurred.

Bit B3 decimal value: 8

B4

status.MESSAGE_AVAILABLE

status.MAV

Set summary bit indicates that a response message is present in the Output Queue.

Bit B4 decimal value: 16

B5

status.EVENT_SUMMARY_BIT

status.ESB

Set summary bit indicates that an enabled standard event has occurred.

Bit B5 decimal value: 32

B6

status.MASTER_SUMMARY_STATUS

status.MSS

Request Service (RQS)/Master Summary Status (MSS). Depending on how it is used, bit B6 of the status byte register is either the Request for Service (RQS) bit or the Master Summary Status (MSS) bit:

  • When using the GPIB, USB, or VXI-11 serial poll sequence of the 2600B to obtain the status byte (serial poll byte), B6 is the RQS bit. The set bit indicates that the Request Service (RQS) bit of the status byte (serial poll byte) is set and a service request (SRQ) has occurred.
  • When using the status.condition register command or the *STB? common command to read the status byte, B6 is the MSS bit. Set bit indicates that an enabled summary bit of the status byte register is set.

    Bit B6 decimal value: 64

B7

status.OPERATION_SUMMARY_BIT

status.OSB

Set summary bit indicates that an enabled operation event has occurred.

Bit B7 decimal value: 128

In addition to the above constants, when more than one bit of the register is set, statusByte equals the sum of their decimal weights. For example, if 129 is returned, bits B0 and B7 are set (1 + 128).

Bit

B7

B6

B5

B4

B3

B2

B1

B0

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

128

64

32

16

8

4

2

1

Weights

(27)

(26)

(25)

(24)

(23)

(22)

(21)

(20)

Example

statusByte = status.condition

print(statusByte)

Returns statusByte.

Sample output:

1.29000e+02

Converting this output (129) to its binary equivalent yields 1000 0001

Therefore, this output indicates that the set bits of the status byte condition register are presently B0 (MSS) and B7 (OSB).

Also see

***add link to status model overview and status byte and service request for MP5000***

Status byte and service request (SRQ)

status.measurement.*

This attribute contains the measurement event register set.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute

- -

- -

- -

- -

.condition (R)

Yes

Not applicable

Not saved

Not applicable

.enable (RW)

Yes

Status reset

Not saved

0

.event (R)

Yes

Status reset

Not saved

0

.ntr (RW)

Yes

Status reset

Not saved

0

.ptr (RW)

Yes

Status reset

Not saved

10,627 (All bits set)

Usage

measurementRegister = status.measurement.condition

measurementRegister = status.measurement.enable

measurementRegister = status.measurement.event

measurementRegister = status.measurement.ntr

measurementRegister = status.measurement.ptr

status.measurement.enable = measurementRegister

status.measurement.ntr = measurementRegister

status.measurement.ptr = measurementRegister

measurementRegister

The status of the measurement event register; a zero (0) indicates no bits set (also send 0 to clear all bits); other values indicate various bit settings

Details

These attributes read or write the measurement event registers.

Reading a status register returns a value. The binary equivalent of the returned value indicates which register bits are set. The least significant bit of the binary number is bit B0, and the most significant bit is bit B15.

For example, assume value 257 is returned for the enable register. The binary equivalent is 0000 0001 0000 0001. This value indicates that bit B0 (VLMT) and bit B8 (BAV) are set.

B15

B14

B13

B12

B11

B10

B9

B8

B7

B6

B5

B4

B3

B2

B1

B0

**

>

>

>

>

>

>

>

>

>

>

>

>

>

>

*

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

1

* Least significant bit
** Most significant bit

For information about .condition, .enable, .event, .ntr, and .ptr registers, refer to Status register set contents and Enable and transition registers. The individual bits of this register are defined in the following table.

Bit

Value

Description

B0

status.measurement.VOLTAGE_LIMIT

status.measurement.VLMT

Set bit is a summary of the status.measurement.voltage_limit register.

Bit B0 decimal value: 1

B1

status.measurement.CURRENT_LIMIT

status.measurement.ILMT

Set bit is a summary of the status.measurement.current_limit register.

Bit B1 decimal value: 2

B2 to B6

Not used

Not applicable

B7

status.measurement.READING_OVERFLOW

status.measurement.ROF

Set bit is a summary of the status.measurement.reading_overflow register.

Bit B7 decimal value: 128

B8

status.measurement.BUFFER_AVAILABLE

status.measurement.BAV

Set bit is a summary of the status.measurement.buffer_available register.

Bit B8 decimal value: 256

B9 to B10

Not used

Not applicable

B11

status.measurement.OUTPUT_ENABLE

status.measurement.OE

2601B, 2602B, 2604B: output enable line. Set bit indicates that output enable has been asserted.

Bit B11 decimal value: 2,048

 

status.measurement.INTERLOCK

status.measurement.INT

2611B, 2612B, 2614B, 2634B, 2635B, 2636B: interlock line. Set bit indicates that interlock has been asserted.

Bit B11 decimal value: 2,048

B12

Not used

Not applicable

B13

status.measurement.INSTRUMENT_SUMMARY

status.measurement.INST

Set bit indicates that a bit in the measurement instrument summary register is set.

Bit B13 decimal value: 8,192

B14 to B15

Not used

Not applicable

As an example, to set bit B8 of the measurement event enable register, set status.measurement.enable = status.measurement.BAV.

In addition to the above constants, measurementRegister can be set to the decimal equivalent of the bit to set. To set more than one bit of the register, set measurementRegister to the sum of their decimal weights. For example, to set bits B1 and B8, set measurementRegister to 258 (which is the sum of 2 + 256).

Bit

B7

B6

B5

B4

B3

B2

B1

B0

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

128

64

32

16

8

4

2

1

Weights

(27)

(26)

(25)

(24)

(23)

(22)

(21)

(20)

Bit

B15

B14

B13

B12

B11

B10

B9

B8

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

32,768

16,384

8,192

4,096

2,048

1,024

512

256

Weights

(215)

(214)

(213)

(212)

(211)

(210)

(29)

(28)

Example

status.measurement.enable = status.measurement.BAV

Sets the BAV bit of the measurement event enable register.

Also see

Measurement event registers

status.measurement.buffer_available.*

This attribute contains the measurement event buffer available summary register set.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute

- -

- -

- -

- -

.condition (R)

Yes

Not applicable

Not saved

Not applicable

.enable (RW)

Yes

Status reset

Not saved

0

.event (R)

Yes

Status reset

Not saved

0

.ntr (RW)

Yes

Status reset

Not saved

0

.ptr (RW)

Yes

Status reset

Not saved

2601B, 2611B, 2635B: 2 (All bits set)

2602B, 2604B, 2612B, 2614B, 2634B, 2636B: 6 (All bits set)

Usage

measurementRegister = status.measurement.buffer_available.condition

measurementRegister = status.measurement.buffer_available.enable

measurementRegister = status.measurement.buffer_available.event

measurementRegister = status.measurement.buffer_available.ntr

measurementRegister = status.measurement.buffer_available.ptr

status.measurement.buffer_available.enable = measurementRegister

status.measurement.buffer_available.ntr = measurementRegister

status.measurement.buffer_available.ptr = measurementRegister

measurementRegister

The status of the measurement event register; a zero (0) indicates no bits set (also send 0 to clear all bits); other values indicate various bit settings

Details

These attributes are used to read or write to the measurement event buffer available summary registers. Reading a status register returns a value. The binary equivalent of the returned value indicates which register bits are set. The least significant bit of the binary number is bit B0, and the most significant bit is bit B15. For example, assume value 6 is returned for the enable register. The binary equivalent is 0000 0000 0000 0110. This value indicates that bit B1 (SMUA) and bit B2 (SMUB) are set.

For information about .condition, .enable, .event, .ntr, and .ptr registers, refer to Status register set contents and Enable and transition registers. The individual bits of this register are defined in the following table.

Bit

Value

Description

B0

Not used

Not applicable.

B1

status.measurement.buffer_available.SMUA

Set bit indicates that there is at least one reading stored in either or both of the dedicated reading buffers.

Bit B1 decimal value: 2

Binary value: 0000 0010

B2

status.measurement.buffer_available.SMUB

This bit is only available on 2602B, 2604B, 2612B, 2614B, 2634B, and 2636B. Set bit indicates that there is at least one reading stored in either or both dedicated reading buffers.

Bit B2 decimal value: 4

Binary value: 0000 0100

B3 to B15

Not used

Not applicable.

As an example, to set bit B1 of the measurement event buffer available summary enable register, set status.measurement.buffer_available.enable = status.measurement.buffer_available.SMUA.

In addition to the above constants, measurementRegister can be set to the decimal equivalent of the bit to set. To set more than one bit of the register, set measurementRegister to the sum of their decimal weights. For example, to set bits B1 and B2, set measurementRegister to 6 (which is the sum of 2 + 4).

Example

status.measurement.buffer_available.enable = status.measurement.buffer_available.SMUA

Sets the SMUA bit of the measurement event buffer available summary enable register.

Also see

Measurement event registers

status.measurement.current_limit.*

This attribute contains the measurement event current limit summary registers.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute

- -

- -

- -

- -

.condition (R)

Yes

Not applicable

Not saved

Not applicable

.enable (RW)

Yes

Status reset

Not saved

0

.event (R)

Yes

Status reset

Not saved

0

.ntr (RW)

Yes

Status reset

Not saved

0

.ptr (RW)

Yes

Status reset

Not saved

2601B, 2611B, 2635B: 2 (All bits set)

2602B, 2604B, 2612B, 2614B, 2634B, 2636B: 6 (All bits set)

Usage

measurementRegister = status.measurement.current_limit.condition

measurementRegister = status.measurement.current_limit.enable

measurementRegister = status.measurement.current_limit.event

measurementRegister = status.measurement.current_limit.ntr

measurementRegister = status.measurement.current_limit.ptr

status.measurement.current_limit.enable = measurementRegister

status.measurement.current_limit.ntr = measurementRegister

status.measurement.current_limit.ptr = measurementRegister

measurementRegister

The status of the measurement event current limit summary register; a zero (0) indicates no bits set (also send 0 to clear all bits); other values indicate various bit settings

Details

These attributes are used to read or write to the measurement event current limit summary registers. Reading a status register returns a value. The binary equivalent of the returned value indicates which register bits are set. The least significant bit of the binary number is bit B0, and the most significant bit is bit B15.

For example, assume value 6 is returned for the enable register. The binary equivalent is 0000 0000 0000 0110. This value indicates that bit B1 (SMUA) and bit B2 (SMUB) are set.

For information about .condition, .enable, .event, .ntr, and .ptr registers, refer to Status register set contents and Enable and transition registers. The individual bits of this register are defined in the following table.

Bit

Value

Description

B0

Not used

Not applicable.

B1

status.measurement.current_limit.SMUA

Set bit indicates that the SMU A current limit was exceeded.

Bit B1 decimal value: 2

Binary value: 0000 0010

B2

status.measurement.current_limit.SMUB

This bit is only available on the 2602B, 2604B, 2612B, 2614B, 2634B, and 2636B. Set bit indicates that the SMU B current limit was exceeded.

Bit B2 decimal value: 4

Binary value: 0000 0100

B3 to B15

Not used

Not applicable.

As an example, to set bit B1 of the measurement event current limit summary enable register, set status.measurement.current_limit.enable = status.measurement.current_limit.SMUA.

In addition to the above constants, measurementRegister can be set to the decimal equivalent of the bit to set. To set more than one bit of the register, set measurementRegister to the sum of their decimal weights. For example, to set bits B1 and B2, set measurementRegister to 6 (which is the sum of 2 + 4).

Example

status.measurement.current_limit.enable = status.measurement.current_limit.SMUA

Sets the SMUA bit of the Measurement Event Current Limit Summary Enable Register.

Also see

Measurement event registers

status.measurement.instrument.smuX.*

status.measurement.instrument.*

This attribute contains the registers of the measurement event instrument summary register set.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute

- -

- -

- -

- -

.condition (R)

Yes

Not applicable

Not saved

Not applicable

.enable (RW)

Yes

Status reset

Not saved

0

.event (R)

Yes

Status reset

Not saved

0

.ntr (RW)

Yes

Status reset

Not saved

0

.ptr (RW)

Yes

Status reset

Not saved

Models 2601B, 2611B, 2635B: 2 (All bits set)

Models 2602B, 2604B, 2612B, 2614B, 2634B, 2636B: 6 (All bits set)

Usage

measurementRegister = status.measurement.instrument.condition

measurementRegister = status.measurement.instrument.enable

measurementRegister = status.measurement.instrument.event

measurementRegister = status.measurement.instrument.ntr

measurementRegister = status.measurement.instrument.ptr

status.measurement.instrument.enable = measurementRegister

status.measurement.instrument.ntr = measurementRegister

status.measurement.instrument.ptr = measurementRegister

measurementRegister

The status of the measurement event instrument summary register; a zero (0) indicates no bits set (also send 0 to clear all bits); other values indicate various bit settings

Details

These attributes are used to read or write to the measurement event instrument summary registers. Reading a status register returns a value. The binary equivalent of the returned value indicates which register bits are set. The least significant bit of the binary number is bit B0, and the most significant bit is bit B15. For example, assume the value 6 is returned for the enable register. The binary equivalent is 0000 0000 0000 0110. This value indicates that bit B1 (SMUA) and bit B2 (SMUB) are set.

For information about .condition, .enable, .event, .ntr, and .ptr registers, refer to Status register set contents and Enable and transition registers. The individual bits of this register are defined in the following table.

Bit

Value

Description

B0

Not used

Not applicable.

B1

status.measurement.instrument.SMUA

Set bit indicates one or more enabled bits of the measurement event SMU A summary register is set.

Bit B1 decimal value: 2

Binary value: 0000 0010

B2

status.measurement.instrument.SMUB

This bit is only available on Models 2602B, 2604B, 2612B, 2614B, 2634B, 2636B. Set bit indicates one or more enabled bits of the measurement event SMU B summary register is set.

Bit B2 decimal value: 4

Binary value: 0000 0100

B3 to B15

Not used

Not applicable.

As an example, to set bit B1 of the measurement event instrument summary enable register, set status.measurement.instrument.enable = status.measurement.instrument.SMUA.

In addition to the above constants, measurementRegister can be set to the decimal equivalent of the bit to set. To set more than one bit of the register, set measurementRegister to the sum of their decimal weights. For example, to set bits B1 and B2, set measurementRegister to 6 (which is the sum of 2 + 4).

Example

status.measurement.instrument.enable = status.measurement.instrument.SMUA

Sets the SMU A bit of the measurement event instrument summary enable register using a constant.

Also see

Measurement event registers

status.measurement.instrument.smuX.*

This attribute contains the registers of the measurement event SMU X summary register set.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute

- -

- -

- -

- -

.condition (R)

Yes

Not applicable

Not saved

Not applicable

.enable (RW)

Yes

Status reset

Not saved

0

.event (R)

Yes

Status reset

Not saved

0

.ntr (RW)

Yes

Status reset

Not saved

0

.ptr (RW)

Yes

Status reset

Not saved

387 (All bits set)

Usage

measurementRegister = status.measurement.instrument.smuX.condition

measurementRegister = status.measurement.instrument.smuX.enable

measurementRegister = status.measurement.instrument.smuX.event

measurementRegister = status.measurement.instrument.smuX.ntr

measurementRegister = status.measurement.instrument.smuX.ptr

status.measurement.instrument.smuX.enable = measurementRegister

status.measurement.instrument.smuX.ntr = measurementRegister

status.measurement.instrument.smuX.ptr = measurementRegister

measurementRegister

The status of the instrument measurement status SMU X summary register; a zero (0) indicates no bits set (also send 0 to clear all bits); other values indicate various bit settings

X

Source-measure unit (SMU) channel (for example status.measurement.instrument.smua.enable applies to SMU channel A)

Details

These attributes are used to read or write to the measurement event SMU X summary registers. Reading a status register returns a value. The binary equivalent of the returned value indicates which register bits are set. The least significant bit of the binary number is bit B0, and the most significant bit is bit B15. For example, assume the value 257 is returned for the enable register. The binary equivalent is 0000 0001 0000 0001. This value indicates that bit B0 (VLMT) and bit B8 (BAV) are set.

B15

B14

B13

B12

B11

B10

B9

B8

B7

B6

B5

B4

B3

B2

B1

B0

**

>

>

>

>

>

>

>

>

>

>

>

>

>

>

*

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

1

* Least significant bit
** Most significant bit

For information about .condition, .enable, .event, .ntr, and .ptr registers, refer to Status register set contents and Enable and transition registers. The individual bits of this register are defined in the following table.

Bit

Value

Description

B0*

status.measurement.instrument.smuX.VOLTAGE_LIMIT

status.measurement.instrument.smuX.VLMT

Set bit indicates that the voltage limit was exceeded.

Bit B0 decimal value: 1

B1*

status.measurement.instrument.smuX.CURRENT_LIMIT

status.measurement.instrument.smuX.ILMT

Set bit indicates that the current limit was exceeded.

Bit B1 decimal value: 2

B2 to B6

Not used

Not applicable.

B7

status.measurement.instrument.smuX.READING_OVERFLOW

status.measurement.instrument.smuX.ROF

Set bit indicates that an overflow reading has been detected.

Bit B7 decimal value: 128

B8

status.measurement.instrument.smuX.BUFFER_AVAILABLE

status.measurement.instrument.smuX.BAV

Set bit indicates that there is at least one reading stored in either or both dedicated reading buffers.

Bit B8 decimal value: 256

B9 to B15

Not used

Not applicable.

* This bit is updated only when a measurement is made or smuX.source.compliance is invoked.

As an example, to set bit B0 of the measurement event SMU X summary enable register, set status.measurement.instrument.smua.enable = status.measurement.instrument.smua.VLMT.

In addition to the above constants, measurementRegister can be set to the decimal equivalent of the bit to set. To set more than one bit of the register, set measurementRegister to the sum of their decimal weights. For example, to set bits B1 and B8, set measurementRegister to 258 (which is the sum of 2 + 256).

Bit

B7

B6

B5

B4

B3

B2

B1

B0

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

128

64

32

16

8

4

2

1

Weights

(27)

(26)

(25)

(24)

(23)

(22)

(21)

(20)

Bit

B15

B14

B13

B12

B11

B10

B9

B8

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

32,768

16,384

8,192

4,096

2,048

1,024

512

256

Weights

(215)

(214)

(213)

(212)

(211)

(210)

(29)

(28)

Example

status.measurement.instrument.smua.enable = status.measurement.instrument.smua.VLMT

Sets the VLMT bit of the measurement event SMU A summary enable register using a constant.

Also see

Measurement event registers

status.measurement.reading_overflow.*

This attribute contains the measurement event reading overflow summary register set.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute

- -

- -

- -

- -

.condition (R)

Yes

Not applicable

Not saved

Not applicable

.enable (RW)

Yes

Status reset

Not saved

0

.event (R)

Yes

Status reset

Not saved

0

.ntr (RW)

Yes

Status reset

Not saved

0

.ptr (RW)

Yes

Status reset

Not saved

2601B, 2611B, 2635B: 2 (All bits set)

2602B, 2604B, 2612B, 2614B, 2634B, 2636B: 6 (All bits set)

Usage

measurementRegister = status.measurement.reading_overflow.condition

measurementRegister = status.measurement.reading_overflow.enable

measurementRegister = status.measurement.reading_overflow.event

measurementRegister = status.measurement.reading_overflow.ntr

measurementRegister = status.measurement.reading_overflow.ptr

status.measurement.reading_overflow.enable = measurementRegister

status.measurement.reading_overflow.ntr = measurementRegister

status.measurement.reading_overflow.ptr = measurementRegister

measurementRegister

The status of the measurement reading overflow summary register; a zero (0) indicates no bits set (also send 0 to clear all bits); other values indicate various bit settings

Details

These attributes are used to read or write to the measurement event reading overflow summary registers. Reading a status register returns a value. The binary equivalent of the returned value indicates which register bits are set. The least significant bit of the binary number is bit B0, and the most significant bit is bit B15. For example, assume the value 2 is returned for the enable register. The binary equivalent is 0000 0000 0000 0010. This value indicates that bit B1 (SMUA) is set.

For information about .condition, .enable, .event, .ntr, and .ptr registers, refer to Status register set contents and Enable and transition registers. The individual bits of this register are defined in the following table.

Bit

Value

Description

B0

Not used

Not applicable.

B1

status.measurement.reading_overflow.SMUA

Set bit indicates that an overflow reading has been detected for SMU A.

Bit B1 decimal value: 2

Binary value: 0000 0010

B2

status.measurement.reading_overflow.SMUB

This bit is only available on 2602B, 2604B, 2612B, 2614B, 2634B, and 2636B. Set bit indicates that an overflow reading has been detected for SMU B.

Bit B2 decimal value: 4

Binary value: 0000 0100

B3 to B15

Not used

Not applicable.

As an example, to set bit B1 of the measurement event reading overflow summary enable register, set status.measurement.reading_overflow.enable = status.measurement.reading_overflow.SMUA.

In addition to the above constants, measurementRegister can be set to the numeric equivalent of the bit to set. To set more than one bit of the register, set measurementRegister to the sum of their decimal weights. For example, to set bits B1 and B2, set measurementRegister to 6 (which is the sum of 2 + 4).

Example

status.measurement.reading_overflow.enable = status.measurement.reading_overflow.SMUA

Sets the SMU A bit of the measurement reading overflow summary enable register using a constant.

Also see

Measurement event registers

status.measurement.voltage_limit.*

This attribute contains the measurement event voltage limit summary register set.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute

- -

- -

- -

- -

.condition (R)

Yes

Not applicable

Not saved

Not applicable

.enable (RW)

Yes

Status reset

Not saved

0

.event (R)

Yes

Status reset

Not saved

0

.ntr (RW)

Yes

Status reset

Not saved

0

.ptr (RW)

Yes

Status reset

Not saved

2601B, 2611B, 2635B: 2 (All bits set) Models 2602B, 2604B, 2612B, 2614B, 2634B, 2636B: 6 (All bits set)

Usage

measurementRegister = status.measurement.voltage_limit.condition

measurementRegister = status.measurement.voltage_limit.enable

measurementRegister = status.measurement.voltage_limit.event

measurementRegister = status.measurement.voltage_limit.ntr

measurementRegister = status.measurement.voltage_limit.ptr

status.measurement.voltage_limit.enable = measurementRegister

status.measurement.voltage_limit.ntr = measurementRegister

status.measurement.voltage_limit.ptr = measurementRegister

measurementRegister

The status of the measurement voltage limit summary register; a zero (0) indicates no bits set (also send 0 to clear all bits); other decimal values indicate various bit settings

Details

These attributes read or write to the measurement event voltage limit summary registers. Reading a status register returns a value. The binary equivalent of the returned value indicates which register bits are set. The least significant bit of the binary number is bit B0, and the most significant bit is bit B15.

For information about .condition, .enable, .event, .ntr, and .ptr registers, refer to Status register set contents and Enable and transition registers. The individual bits of this register are defined in the following table.

Bit

Value

Description

B0

Not used

Not applicable.

B1

status.measurement.voltage_limit.SMUA

Set bit indicates the enabled VLMT bit for the SMU A measurement register is set.

Bit B1 decimal value: 2

Binary value: 0000 0010

B2

status.measurement.voltage_limit.SMUB

This bit is only available on 2602B, 2604B, 2612B, 2614B, 2634B, or 2636B. Set bit indicates the enabled VLMT bit for the SMU B measurement register is set.

Bit B2 decimal value: 4

Binary value: 0000 0100

B3 to B15

Not used

Not applicable.

As an example, to set bit B1 of the measurement event voltage limit summary enable register, set status.measurement.voltage_limit.enable = status.measurement.voltage_limit.SMUA.

In addition to the above constants, measurementRegister can be set to the decimal equivalent of the bit to set. To set more than one bit of the register, set measurementRegister to the sum of their decimal weights. For example, to set bits B1 and B2, set measurementRegister to 6 (which is the sum of 2 + 4).

Example

status.measurement.voltage_limit.enable = status.measurement.voltage_limit.SMUA

Sets the SMUA bit of the measurement event voltage limit summary enable register using a constant.

Also see

Measurement event registers

status.node_enable

This attribute stores the system node enable register. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Status reset

Not saved

0

Usage

nodeEnableRegister = status.node_enable

status.node_enable = nodeEnableRegister

nodeEnableRegister

The status of the system node enable register; a zero (0) indicates no bits set (also send 0 to clear all bits); other values indicate various bit settings

Details

This attribute is used to read or write to the system node enable register. Reading the system node enable register returns a value. The binary equivalent of the value of this attribute indicates which register bits are set. In the binary equivalent, the least significant bit is bit B0, and the most significant bit is bit B7. For example, if a value of 1.29000e+02 (which is 129) is read as the value of this register, the binary equivalent is 1000 0001. This value indicates that bit B0 and bit B7 are set.

B7

B6

B5

B4

B3

B2

B1

B0

**

>

>

>

>

>

>

*

1

0

0

0

0

0

0

1

* Least significant bit
** Most significant bit

Assigning a value to this attribute enables one or more status events. When an enabled status event occurs, a summary bit is set in the appropriate system summary register. The register and bit that is set depends on the TSP-Link node number assigned to this instrument.

For information about .condition, .enable, .event, .ntr, and .ptr registers, refer to Status register set contents and Enable and transition registers. The individual bits of this register are defined in the following table.

Bit

Value and description

B0

status.MEASUREMENT_SUMMARY_BIT

status.MSB

Set summary bit indicates that an enabled measurement event has occurred.

Bit B0 decimal value: 1

B1

Not used

B2

status.ERROR_AVAILABLE

status.EAV

Set summary bit indicates that an error or status message is present in the error queue.

Bit B2 decimal value: 4

B3

status.QUESTIONABLE_SUMMARY_BIT

status.QSB

Set summary bit indicates that an enabled questionable event has occurred.

Bit B3 decimal value: 8

B4

status.MESSAGE_AVAILABLE

status.MAV

Set summary bit indicates that a response message is present in the output queue.

Bit B4 decimal value: 16

B5

status.EVENT_SUMMARY_BIT

status.ESB

Set summary bit indicates that an enabled standard event has occurred.

Bit B5 decimal value: 32

B6

status.MASTER_SUMMARY_STATUS

status.MSS

Set bit indicates that an enabled Master Summary Status (MSS) bit of the Status Byte Register is set.

Bit B6 decimal value: 64

B7

status.OPERATION_SUMMARY_BIT

status.OSB

Set summary bit indicates that an enabled operation event has occurred.

Bit B7 decimal value: 128

As an example, to set the B0 bit of the system node enable register, set status.node_enable = status.MSB.

In addition to the above values, nodeEnableRegister can be set to the numeric equivalent of the bit to set. To set more than one bit of the register, set nodeEnableRegister to the sum of their decimal weights. For example, to set bits B0 and B7, set nodeEnableRegister to 129 (1 + 128).

Bit

B7

B6

B5

B4

B3

B2

B1

B0

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

128

64

32

16

8

4

2

1

Weights

(27)

(26)

(25)

(24)

(23)

(22)

(21)

(20)

Example 1

nodeEnableRegister = status.MSB + status.OSB

status.node_enable = nodeEnableRegister

Use constants to set the MSB and OSB bits of the system node enable register.

Example 2

-- decimal 129 = binary 10000001

nodeEnableRegister = 129

status.node_enable = nodeEnableRegister

Sets the MSB and OSB bits of the system node enable register using a decimal value.

Also see

status.condition

status.system.*

Status byte and service request (SRQ)

status.node_event

This attribute stores the status node event register.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

Yes

Not applicable

Not saved

0

Usage

nodeEventRegister = status.node_event

nodeEventRegister

The status of the node event register; a zero (0) indicates no bits set; other values indicate various bit settings

Details

This attribute is used to read the status node event register, which is returned as a numeric value (reading this register returns a value). The binary equivalent of the value of this attribute indicates which register bits are set. In the binary equivalent, the least significant bit is bit B0, and the most significant bit is bit B7. For example, if a value of 1.29000e+02 (which is 129) is read as the value of this register, the binary equivalent is 1000 0001. This value indicates that bit B0 and bit B7 are set.

B7

B6

B5

B4

B3

B2

B1

B0

**

>

>

>

>

>

>

*

1

0

0

0

0

0

0

1

* Least significant bit
** Most significant bit

The returned value can indicate one or more status events occurred.

Bit

Value and description

B0

status.MEASUREMENT_SUMMARY_BIT

status.MSB

Set summary bit indicates that an enabled measurement event has occurred.

Bit B0 decimal value: 1

B1

Not used

B2

status.ERROR_AVAILABLE

status.EAV

Set summary bit indicates that an error or status message is present in the error queue.

Bit B2 decimal value: 4

B3

status.QUESTIONABLE_SUMMARY_BIT

status.QSB

Set summary bit indicates that an enabled questionable event has occurred.

Bit B3 decimal value: 8

B4

status.MESSAGE_AVAILABLE

status.MAV

Set summary bit indicates that a response message is present in the output queue.

Bit B4 decimal value: 16

B5

status.EVENT_SUMMARY_BIT

status.ESB

Set summary bit indicates that an enabled standard event has occurred.

Bit B5 decimal value: 32

B6

status.MASTER_SUMMARY_STATUS

status.MSS

Set bit indicates that an enabled Master Summary Status (MSS) bit of the Status Byte register is set.

Bit B6 decimal value: 64

B7

status.OPERATION_SUMMARY_BIT

status.OSB

Set summary bit indicates that an enabled operation event has occurred.

Bit B7 decimal value: 128

In addition to the above constants, nodeEventRegister can be set to the decimal equivalent of the bits set. When more than one bit of the register is set, nodeEventRegister contains the sum of their decimal weights. For example, if 129 is returned, bits B0 and B7 are set (1 + 128).

Bit

B7

B6

B5

B4

B3

B2

B1

B0

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

128

64

32

16

8

4

2

1

Weights

(27)

(26)

(25)

(24)

(23)

(22)

(21)

(20)

Example

nodeEventRegister = status.node_event

print(nodeEventRegister)

Reads the status node event register.

Sample output:

1.29000e+02

Converting this output (129) to its binary equivalent yields 1000 0001. Therefore, this output indicates that the set bits of the status byte condition register are presently B0 (MSB) and B7 (OSB).

Also see

Status byte and service request (SRQ)

status.condition

status.system.*

status.operation.*

These attributes manage the Operation Status Register set of the status model.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute

- -

- -

- -

- -

.condition (R)

Yes

Not applicable

Not saved

Not applicable

.enable (RW)

Yes

Status reset

Not saved

0

.event (R)

Yes

Status reset

Not saved

0

.ntr (RW)

Yes

Status reset

Not saved

0

.ptr (RW)

Yes

Status reset

Not saved

31,769 (All bits set)

Usage

operationRegister = status.operation.condition

operationRegister = status.operation.enable

operationRegister = status.operation.event

operationRegister = status.operation.ntr

operationRegister = status.operation.ptr

status.operation.enable = operationRegister

status.operation.ntr = operationRegister

status.operation.ptr = operationRegister

operationRegister

The status of the operation status register; a zero (0) indicates no bits set (also send 0 to clear all bits); other values indicate specific bit settings

Details

These attributes read or write the Operation Status Registers.

Reading a status register returns a value. The binary equivalent of the returned value indicates which register bits are set. The least significant bit of the binary number is bit B0, and the most significant bit is bit B15. For example, if a value of 2.04800e+04 (which is 20,480) is read as the value of the condition register, the binary equivalent is 0101 0000 0000 0000. This value indicates that bit B14 (PROGRAM_RUNNING) and bit B12 (USER) are set.

B15

B14

B13

B12

B11

B10

B9

B8

B7

B6

B5

B4

B3

B2

B1

B0

**

>

>

>

>

>

>

>

>

>

>

>

>

>

>

*

0

1

0

1

0

0

0

0

0

0

0

0

0

0

0

0

* Least significant bit
** Most significant bit

For information about .condition, .enable, .event, .ntr, and .ptr registers, refer to Status register set contents and Enable and transition registers. The individual bits of this register are defined in the following table.

Bit

Value and description

B0

status.operation.CALIBRATING

status.operation.CAL

Set bit indicates that the summary bit of the status.operation.calibrating register has been set.

Bit B0 decimal value: 1

B1 to B2

Not used

B3

status.operation.SWEEPING

status.operation.SWE

Set bit indicates that the summary bit from the status.operation.sweeping register is set.

Bit B3 decimal value: 8

B4

status.operation.MEASURING

status.operation.MEAS

Set bit indicates that the summary bit of the status.operation.measuring register is set.

Bit B4 decimal value: 16

B5 to B9

Not used

B10

status.operation.TRIGGER_OVERRUN

status.operation.TRGOVR

Set bit indicates that the summary bit from the status.operation.trigger_overrun register is set.

Bit B10 decimal value: 1,024

B11

status.operation.REMOTE_SUMMARY

status.operation.REM

Set bit indicates that the summary bit of the status.operation.remote register is set.

Bit B11 decimal value: 2,048

B12

status.operation.USER

Set bit indicates that the summary bit from the status.operation.user register is set.

Bit B12 decimal value: 4,096

B13

status.operation.INSTRUMENT_SUMMARY

status.operation.INST

Set bit indicates that the summary bit from the status.operation.instrument register is set.

Bit B13 decimal value: 8,192

B14

status.operation.PROGRAM_RUNNING

status.operation.PROG

Set bit indicates that a command or program is running.

Bit B14 decimal value: 16,384

B15

Not used

As an example, to set bit B12 of the Operation Status Enable Register, set status.operation.enable = status.operation.USER.

In addition to the above constants, operationRegister can be set to the numeric equivalent of the bit to set. To set more than one bit of the register, set operationRegister to the sum of their decimal weights. For example, to set bits B12 and B14, set operationRegister to 20,480 (which is the sum of 4,096 + 16,384).

Bit

B7

B6

B5

B4

B3

B2

B1

B0

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

128

64

32

16

8

4

2

1

Weights

(27)

(26)

(25)

(24)

(23)

(22)

(21)

(20)

Bit

B15

B14

B13

B12

B11

B10

B9

B8

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

32,768

16,384

8,192

4,096

2,048

1,024

512

256

Weights

(215)

(214)

(213)

(212)

(211)

(210)

(29)

(28)

Example 1

operationRegister = status.operation.USER + status.operation.PROG

status.operation.enable = operationRegister

Uses constants to set the USER and PROG bits of the Operation Status Enable Register.

Example 2

-- decimal 20480 = binary 0101 0000 0000 0000

operationRegister = 20480

status.operation.enable = operationRegister

Uses a decimal value to set the USER and PROG bits of the Operation Status Enable Register.

Also see

Operation Status Registers

status.operation.calibrating.*

This attribute contains the operation status calibration summary register set.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute

- -

- -

- -

- -

.condition (R)

Yes

Not applicable

Not saved

Not applicable

.enable (RW)

Yes

Status reset

Not saved

0

.event (R)

Yes

Status reset

Not saved

0

.ntr (RW)

Yes

Status reset

Not saved

0

.ptr (RW)

Yes

Status reset

Not saved

2601B, 2611B, 2635V: 2 (All bits set)

Models 2602B, 2604B, 2612B, 2614B, 2634B, 2636B: 6 (All bits set)

Usage

operationRegister = status.operation.calibrating.condition

operationRegister = status.operation.calibrating.enable

operationRegister = status.operation.calibrating.event

operationRegister = status.operation.calibrating.ntr

operationRegister = status.operation.calibrating.ptr

status.operation.calibrating.enable = operationRegister

status.operation.calibrating.ntr = operationRegister

status.operation.calibrating.ptr = operationRegister

operationRegister

The status of the operation calibrating event register; a zero (0) indicates no bits set (also send 0 to clear all bits); other values indicate various bit settings

Details

These attributes are used to read or write to the operation status calibration summary registers. Reading a status register returns a value. The binary equivalent of the returned value indicates which register bits are set. The least significant bit of the binary number is bit B0, and the most significant bit is bit B15.

For information about .condition, .enable, .event, .ntr, and .ptr registers, refer to Status register set contents and Enable and transition registers. The individual bits of this register are defined in the following table.

Bit

Value

Description

B0

Not used

Not applicable.

B1

status.operation.calibrating.SMUA

Set bit indicates that SMU A is unlocked for calibration.

Bit B1 decimal value: 2

Binary value: 0000 0010

B2

status.operation.calibrating.SMUB

This bit is only available on 2602B, 2604B, 2612B, 2614B, 2634B, 2636B. Set bit indicates that SMU B is unlocked for calibration.

Bit B2 decimal value: 4

Binary value: 0000 0100

B3 to B15

Not used

Not applicable.

Example

status.operation.calibrating.enable = status.operation.calibrating.SMUA

Sets the SMUA bit of the operation status calibration summary enable register using a constant.

Also see

Operation Status Registers

status.operation.*

status.operation.instrument.*

This attribute contains the operation status instrument summary register set.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute

- -

- -

- -

- -

.condition (R)

Yes

Not applicable

Not saved

Not applicable

.enable (RW)

Yes

Status reset

Not saved

0

.event (R)

Yes

Status reset

Not saved

0

.ntr (RW)

Yes

Status reset

Not saved

0

.ptr (RW)

Yes

Status reset

Not saved

2601B, 2611B, 2635B:
31,746 (All bits set)

2602B, 2612B, 2636B:
31,750 (All bits set)

2604B, 2614B, 2634B:
19,462 (All bits set)

Usage

operationRegister = status.operation.instrument.condition

operationRegister = status.operation.instrument.enable

operationRegister = status.operation.instrument.event

operationRegister = status.operation.instrument.ntr

operationRegister = status.operation.instrument.ptr

status.operation.instrument.enable = operationRegister

status.operation.instrument.ntr = operationRegister

status.operation.instrument.ptr = operationRegister

operationRegister

The status of the operation event register; a zero (0) indicates no bits set (also send 0 to clear all bits); other values indicate various bit settings

Details

These attributes are used to read or write to the operation status instrument summary registers. Reading a status register returns a value. The binary equivalent of the returned value indicates which register bits are set. The least significant bit of the binary number is bit B0, and the most significant bit is bit B15. For example, if a value of 1.02600e+03 (which is 1,026) is read as the value of the condition register, the binary equivalent is 0000 0100 0000 0010. This value indicates that bit B1 and bit B10 are set.

B15

B14

B13

B12

B11

B10

B9

B8

B7

B6

B5

B4

B3

B2

B1

B0

**

>

>

>

>

>

>

>

>

>

>

>

>

>

>

*

0

0

0

0

0

1

0

0

0

0

0

0

0

0

1

0

* Least significant bit
** Most significant bit

For information about .condition, .enable, .event, .ntr, and .ptr registers, refer to Status register set contents and Enable and transition registers. The individual bits of this register are defined in the following table.

Bit

Value

Description

B0

Not used

Not applicable.

B1

status.operation.instrument.SMUA

Set bit indicates one or more enabled bits for the operation status SMU A summary register is set.

Bit B1 decimal value: 2

B2

status.operation.instrument.SMUB

This bit is only available on 2602B, 2604B, 2612B, 2614B, 2634B, 2636B. Set bit indicates one or more enabled bits for the operation status SMU B summary register is set.

Bit B2 decimal value: 4

B3 to B9

Not used

Not applicable.

B10

status.operation.instrument.TRIGGER_BLENDER

status.operation.instrument.TRGBLND

Set bit indicates one or more enabled bits for the operation status trigger blender summary register is set.

Bit B10 decimal value: 1,024.

B11

status.operation.instrument.TRIGGER_TIMER

status.operation.instrument.TRGTMR

Set bit indicates one or more enabled bits for the operation status trigger timer summary register is set.

Bit B11 decimal value: 2,048

B12

status.operation.instrument.DIGITAL_IO

status.operation.instrument.DIGIO

This bit is only available on 2601B, 2602B, 2611B, 2612B, 2635B, 2636B. Set bit indicates one or more enabled bits for the operation status digital I/O summary register is set.

Bit B12 decimal value: 4,096

B13

status.operation.instrument.TSPLINK

This bit is only available on 2601B, 2602B, 2611B, 2612B, 2635B, 2636B. Set bit indicates one or more enabled bits for the operation status TSP-Link summary register is set.

Bit B13 decimal value: 8,192

B14

status.operation.instrument.LAN

Set bit indicates one or more enabled bits for the operation status LAN summary register is set.

Bit B14 decimal value: 16,384

B15

Not used

Not applicable.

As an example, to set bit B1 of the operation status instrument summary enable register, set status.operation.instrument.enable = status.operation.instrument.SMUA.

In addition to the above constants, operationRegister can be set to the numeric equivalent of the bit to set. To set more than one bit of the register, set operationRegister to the sum of their decimal weights. For example, to set bits B1 and B10, set operationRegister to 1,026 (which is the sum of 2 + 1,024).

Bit

B7

B6

B5

B4

B3

B2

B1

B0

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

128

64

32

16

8

4

2

1

Weights

(27)

(26)

(25)

(24)

(23)

(22)

(21)

(20)

Bit

B15

B14

B13

B12

B11

B10

B9

B8

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

32,768

16,384

8,192

4,096

2,048

1,024

512

256

Weights

(215)

(214)

(213)

(212)

(211)

(210)

(29)

(28)

Example 1

operationRegister = status.operation.instrument.SMUA +

status.operation.instrument.TRGBLND

status.operation.instrument.enable = operationRegister

Sets bit B1 and bit B10 of the operation status instrument summary enable register using constants.

Example 2

-- 1026 = binary 0000 0100 0000 0010

operationRegister = 1026

status.operation.instrument.enable = operationRegister

Sets bit B1 and bit B10 of the operation status instrument summary enable register using a decimal value.

Also see

Operation Status Registers

status.operation.*

Condition register sets of:

• status.operation.instrument.digio.*

• status.operation.instrument.lan.*

• status.operation.instrument.trigger_blender.*

• status.operation.instrument.trigger_timer.*

• status.operation.instrument.tsplink.*

status.operation.instrument.digio.*

This attribute contains the operation status digital I/O summary register set. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute

- -

- -

- -

- -

.condition (R)

Yes

Not applicable

Not saved

Not applicable

.enable (RW)

Yes

Status reset

Not saved

0

.event (R)

Yes

Status reset

Not saved

0

.ntr (RW)

Yes

Status reset

Not saved

0

.ptr (RW)

Yes

Status reset

Not saved

1024 (All bits set)

Usage

operationRegister = status.operation.instrument.digio.condition

operationRegister = status.operation.instrument.digio.enable

operationRegister = status.operation.instrument.digio.event

operationRegister = status.operation.instrument.digio.ntr

operationRegister = status.operation.instrument.digio.ptr

status.operation.instrument.digio.enable = operationRegister

status.operation.instrument.digio.ntr = operationRegister

status.operation.instrument.digio.ptr = operationRegister

operationRegister

The status of the operation status digital I/O summary register; a zero (0) indicates no bits set (also send 0 to clear all bits); the only valid value other than 0 is 1024

Details

These attributes are used to read or write to the operation status digital I/O summary registers. Reading a status register returns a value. The binary equivalent of the returned value indicates which register bits are set. The least significant bit of the binary number is bit B0, and the most significant bit is bit B15.

For information about .condition, .enable, .event, .ntr, and .ptr registers, refer to Status register set contents and Enable and transition registers. The individual bits of this register are defined in the following table.

Bit

Value and description

B0 to B9

Not used

B10

status.operation.instrument.digio.TRIGGER_OVERRUN

status.operation.instrument.digio.TRGOVR

Set bit indicates an enabled bit in the Operation Status Digital I/O Overrun Register is set.

Bit B10 decimal value: 1,024

Binary value: 0100 0000 0010

B11 to B15

Not used

In addition to the above constant, operationRegister can be set to the decimal value of the bit to set.

Example 1

status.operation.instrument.digio.enable = status.operation.instrument.digio.TRGOVR

Uses a constant to set the TRGOVR bit of the operation status digital I/O summary enable register.

Example 2

status.operation.instrument.digio.enable = 1024

Uses the decimal value to set the TRGOVR bit of the operation status digital I/O summary enable register.

Also see

Operation Status Registers

status.operation.instrument.digio.trigger_overrun.*

status.operation.instrument.digio.trigger_overrun.*

This attribute contains the operation status digital I/O overrun register set. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute

- -

- -

- -

- -

.condition (R)

Yes

Not applicable

Not saved

Not applicable

.enable (RW)

Yes

Status reset

Not saved

0

.event (R)

Yes

Status reset

Not saved

0

.ntr (RW)

Yes

Status reset

Not saved

0

.ptr (RW)

Yes

Status reset

Not saved

32,766 (All bits set)

Usage

operationRegister = status.operation.instrument.digio.trigger_overrun.condition

operationRegister = status.operation.instrument.digio.trigger_overrun.enable

operationRegister = status.operation.instrument.digio.trigger_overrun.event

operationRegister = status.operation.instrument.digio.trigger_overrun.ntr

operationRegister = status.operation.instrument.digio.trigger_overrun.ptr

status.operation.instrument.digio.trigger_overrun.enable = operationRegister

status.operation.instrument.digio.trigger_overrun.ntr = operationRegister

status.operation.instrument.digio.trigger_overrun.ptr = operationRegister

operationRegister

The status of the operation status digio I/O overrun register; a zero (0) indicates no bits set (also send 0 to clear all bits); other values indicate various bit settings

Details

These attributes are used to read or write to the operation status digital I/O overrun registers. Reading a status register returns a value. The binary equivalent of the returned value indicates which register bits are set. The least significant bit of the binary number is bit B0, and the most significant bit is bit B15. For example, if a value of 1.02600e+03 (which is 1026) is read as the value of the condition register, the binary equivalent is 0000 0100 0000 0010. This value indicates that bit B1 and bit B10 are set.

B15

B14

B13

B12

B11

B10

B9

B8

B7

B6

B5

B4

B3

B2

B1

B0

**

>

>

>

>

>

>

>

>

>

>

>

>

>

>

*

0

0

0

0

0

1

0

0

0

0

0

0

0

0

1

0

* Least significant bit
** Most significant bit

A set bit indicates that the specified digital I/O line generated an action overrun when it was triggered to generate an output trigger.

For information about .condition, .enable, .event, .ntr, and .ptr registers, refer to Status register set contents and Enable and transition registers. The individual bits of this register are defined in the following table.

Bit

Value

Decimal value

B0

Not used

Not applicable

B1

status.operation.instrument.digio.trigger_overrun.LINE1

2

B2

status.operation.instrument.digio.trigger_overrun.LINE2

4

B3

status.operation.instrument.digio.trigger_overrun.LINE3

8

B4

status.operation.instrument.digio.trigger_overrun.LINE4

16

B5

status.operation.instrument.digio.trigger_overrun.LINE5

32

B6

status.operation.instrument.digio.trigger_overrun.LINE6

64

B7

status.operation.instrument.digio.trigger_overrun.LINE7

128

B8

status.operation.instrument.digio.trigger_overrun.LINE8

256

B9

status.operation.instrument.digio.trigger_overrun.LINE9

512

B10

status.operation.instrument.digio.trigger_overrun.LINE10

1,024

B11

status.operation.instrument.digio.trigger_overrun.LINE11

2,048

B12

status.operation.instrument.digio.trigger_overrun.LINE12

4,096

B13

status.operation.instrument.digio.trigger_overrun.LINE13

8,192

B14

status.operation.instrument.digio.trigger_overrun.LINE14

16,384

B15

Not used

Not applicable

As an example, to set bit B1 of the operation status digital I/O overrun enable register, set status.operation.instrument.digio.trigger_overrun.enable = status.operation.instrument.digio.trigger_overrun.LINE1.

In addition to the above constants, operationRegister can be set to the numeric equivalent of the bit to set. To set more than one bit of the register, set operationRegister to the sum of their decimal values. For example, to set bits B1 and B10, set operationRegister to 1,026 (which is the sum of 2 + 1,024).

Bit

B7

B6

B5

B4

B3

B2

B1

B0

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

128

64

32

16

8

4

2

1

Weights

(27)

(26)

(25)

(24)

(23)

(22)

(21)

(20)

Bit

B15

B14

B13

B12

B11

B10

B9

B8

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

32,768

16,384

8,192

4,096

2,048

1,024

512

256

Weights

(215)

(214)

(213)

(212)

(211)

(210)

(29)

(28)

Example 1

operationRegister = status.operation.instrument.digio.trigger_overrun.LINE1 +

status.operation.instrument.digio.trigger_overrun.LINE10

status.operation.instrument.digio.trigger_overrun.enable = operationRegister

Uses constants to set bit B1 and bit B10 of the operation status digital I/O overrun enable register.

Example 2

operationRegister = 1026

status.operation.instrument.digio.trigger_overrun.enable = operationRegister

Uses the decimal value to set bit B1 and bit B10 of the operation status digital I/O overrun enable register.

Also see

Operation Status Registers

status.operation.instrument.digio.*

status.operation.instrument.lan.*

This attribute contains the operation status LAN summary register set.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute

- -

- -

- -

- -

.condition (R)

Yes

Not applicable

Not saved

Not applicable

.enable (RW)

Yes

Status reset

Not saved

0

.event (R)

Yes

Status reset

Not saved

0

.ntr (RW)

Yes

Status reset

Not saved

0

.ptr (RW)

Yes

Status reset

Not saved

1027 (All bits set)

Usage

operationRegister = status.operation.instrument.lan.condition

operationRegister = status.operation.instrument.lan.enable

operationRegister = status.operation.instrument.lan.event

operationRegister = status.operation.instrument.lan.ntr

operationRegister = status.operation.instrument.lan.ptr

status.operation.instrument.lan.enable = operationRegister

status.operation.instrument.lan.ntr = operationRegister

status.operation.instrument.lan.ptr = operationRegister

operationRegister

The status of the operation status LAN summary register; a zero (0) indicates no bits set (also send 0 to clear all bits); other values indicate various bit settings

Details

These attributes are used to read or write to the operation status LAN summary registers. The binary equivalent of the value indicates which register bits are set. In the binary equivalent, the least significant bit is bit B0, and the most significant bit is bit B15. For example, if a value of 1.02600e+03 (which is 1026) is read as the value of the condition register, the binary equivalent is 0000 0100 0000 0010. This value indicates that bit B1 and bit B10 are set.

B15

B14

B13

B12

B11

B10

B9

B8

B7

B6

B5

B4

B3

B2

B1

B0

**

>

>

>

>

>

>

>

>

>

>

>

>

>

>

*

0

0

0

0

0

1

0

0

0

0

0

0

0

0

1

0

* Least significant bit
** Most significant bit

For information about .condition, .enable, .event, .ntr, and .ptr registers, refer to Status register set contents and Enable and transition registers. The individual bits of this register are defined in the following table.

Bit

Value and description

B0

status.operation.instrument.lan.CONNECTION

status.operation.instrument.lan.CON

Set bit indicates that the LAN cable is connected and a link has been detected.

Bit B0 decimal value: 1

B1

status.operation.instrument.lan.CONFIGURING

status.operation.instrument.lan.CONF

Set bit indicates the LAN is performing its configuration sequence.

Bit B1 decimal value: 2

B2 to B9

Not used

B10

status.operation.instrument.lan.TRIGGER_OVERRUN

status.operation.instrument.lan.TRGOVR

Set bit indicates one or more enabled bits for the operation status LAN trigger overrun register is set.

Bit B10 decimal value: 1,024

B11 to B15

Not used

As an example, to set bit B0 of the operation status LAN summary enable register, set status.operation.instrument.lan.enable = status.operation.instrument.lan.CON.

In addition to the above constants, operationRegister can be set to the numeric equivalent of the bit to set. To set more than one bit of the register, set operationRegister to the sum of their decimal weights. For example, to set bits B1 and B10, set operationRegister to 1,026 (which is the sum of 2 + 1024).

Bit

B7

B6

B5

B4

B3

B2

B1

B0

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

128

64

32

16

8

4

2

1

Weights

(27)

(26)

(25)

(24)

(23)

(22)

(21)

(20)

Bit

B15

B14

B13

B12

B11

B10

B9

B8

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

32,768

16,384

8,192

4,096

2,048

1,024

512

256

Weights

(215)

(214)

(213)

(212)

(211)

(210)

(29)

(28)

Example 1

operationRegister = status.operation.instrument.lan.CONF +

status.operation.instrument.lan.TRGOVR

status.operation.instrument.lan.enable = operationRegister

Use constants to set bit B1 and bit B10 of the operation status LAN summary enable register.

Example 2

operationRegister = 1026

status.operation.instrument.lan.enable = operationRegister

Use the decimal value to set bit B1 and bit B10 of the operation status LAN summary enable register.

Also see

Operation Status Registers

status.operation.instrument.lan.trigger_overrun.*

status.operation.instrument.lan.trigger_overrun.*

This attribute contains the operation status LAN trigger overrun register set.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute

- -

- -

- -

- -

.condition (R)

Yes

Not applicable

Not saved

Not applicable

.enable (RW)

Yes

Status reset

Not saved

0

.event (R)

Yes

Status reset

Not saved

0

.ntr (RW)

Yes

Status reset

Not saved

0

.ptr (RW)

Yes

Status reset

Not saved

510 (All bits set)

Usage

operationRegister = status.operation.instrument.lan.trigger_overrun.condition

operationRegister = status.operation.instrument.lan.trigger_overrun.enable

operationRegister = status.operation.instrument.lan.trigger_overrun.event

operationRegister = status.operation.instrument.lan.trigger_overrun.ntr

operationRegister = status.operation.instrument.lan.trigger_overrun.ptr

status.operation.instrument.lan.trigger_overrun.enable = operationRegister

status.operation.instrument.lan.trigger_overrun.ntr = operationRegister

status.operation.instrument.lan.trigger_overrun.ptr = operationRegister

operationRegister

The status of the operation status LAN trigger overrun register; a zero (0) indicates no bits set (also send 0 to clear all bits); other values indicate various bit settings

Details

These attributes are used to read or write to the operation status LAN trigger overrun registers. Reading a status register returns a value. The binary equivalent of the returned value indicates which register bits are set. The least significant bit of the binary number is bit B0, and the most significant bit is bit B15. For example, if a value of 2.58000e+02 (which is 258) is read as the value of the condition register, the binary equivalent is 0000 0001 0000 0010. This value indicates that bit B1 and bit B8 are set.

B15

B14

B13

B12

B11

B10

B9

B8

B7

B6

B5

B4

B3

B2

B1

B0

**

>

>

>

>

>

>

>

>

>

>

>

>

>

>

*

0

0

0

0

0

0

0

1

0

0

0

0

0

0

1

0

* Least significant bit
** Most significant bit

A set bit indicates that the specified LAN trigger generated an action overrun when triggered to generate a trigger packet.

For information about .condition, .enable, .event, .ntr, and .ptr registers, refer to Status register set contents and Enable and transition registers. The individual bits of this register are defined in the following table.

Bit

Value

Decimal value

B0

Not used

Not applicable

B1

status.operation.instrument.lan.trigger_overrun.LAN1

2

B2

status.operation.instrument.lan.trigger_overrun.LAN2

4

B3

status.operation.instrument.lan.trigger_overrun.LAN3

8

B4

status.operation.instrument.lan.trigger_overrun.LAN4

16

B5

status.operation.instrument.lan.trigger_overrun.LAN5

32

B6

status.operation.instrument.lan.trigger_overrun.LAN6

64

B7

status.operation.instrument.lan.trigger_overrun.LAN7

128

B8

status.operation.instrument.lan.trigger_overrun.LAN8

256

B9 to B15

Not used

Not applicable

As an example, to set bit B1 of the operation status LAN trigger overrun enable register, set status.operation.instrument.lan.trigger_overrun.enable = status.operation.instrument.lan.trigger_overrun.LAN1.

In addition to the above constants, operationRegister can be set to the numeric equivalent of the bit to set. To set more than one bit of the register, set operationRegister to the sum of their decimal weights. For example, to set bits B1 and B8, set operationRegister to 258 (which is the sum of 2 + 256).

Bit

B7

B6

B5

B4

B3

B2

B1

B0

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

128

64

32

16

8

4

2

1

Weights

(27)

(26)

(25)

(24)

(23)

(22)

(21)

(20)

Bit

B15

B14

B13

B12

B11

B10

B9

B8

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

32,768

16,384

8,192

4,096

2,048

1,024

512

256

Weights

(215)

(214)

(213)

(212)

(211)

(210)

(29)

(28)

Example 1

operationRegister = status.operation.instrument.lan.trigger_overrun.LAN1 +

status.operation.instrument.lan.trigger_overrun.LAN8

status.operation.instrument.lan.trigger_overrun.enable = operationRegister

Use constants to set bit B1 and bit B8 of the operation status LAN trigger overrun enable register.

Example 2

operationRegister = 258

status.operation.instrument.lan.trigger_overrun.enable = operationRegister

Use the decimal value to set bit B1 and bit B8 of the operation status LAN trigger overrun enable register.

Also see

Operation Status Registers

status.operation.instrument.lan.*

status.operation.instrument.smuX.*

This attribute contains the operation status SMU X summary register set.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute

- -

- -

- -

- -

.condition (R)

Yes

Not applicable

Not saved

Not applicable

.enable (RW)

Yes

Status reset

Not saved

0

.event (R)

Yes

Status reset

Not saved

0

.ntr (RW)

Yes

Status reset

Not saved

0

.ptr (RW)

Yes

Status reset

Not saved

1049 (All bits set)

Usage

operationRegister = status.operation.instrument.smuX.condition

operationRegister = status.operation.instrument.smuX.enable

operationRegister = status.operation.instrument.smuX.event

operationRegister = status.operation.instrument.smuX.ntr

operationRegister = status.operation.instrument.smuX.ptr

status.operation.instrument.smuX.enable = operationRegister

status.operation.instrument.smuX.ntr = operationRegister

status.operation.instrument.smuX.ptr = operationRegister

operationRegister

The status of the operation status SMU X summary register; a zero (0) indicates no bits set (also send 0 to clear all bits); other values indicate various bit settings

X

Source-measure unit (SMU) channel (for example status.operation.instrument.smua.enable applies to SMU channel A)

Details

These attributes are used to read or write to the operation status SMU X summary registers. Reading a status register returns a value. The binary equivalent of the returned value indicates which register bits are set. The least significant bit of the binary number is bit B0, and the most significant bit is bit B15. The binary equivalent of the value indicates which register bits are set. In the binary equivalent, the least significant bit is bit B0, and the most significant bit is bit B15. For example, if a value of 1.02500e+02 (which is 1,025) is read as the value of the condition register, the binary equivalent is 0000 0100 0000 0010. This value indicates that bit B0 and bit B10 are set.

B15

B14

B13

B12

B11

B10

B9

B8

B7

B6

B5

B4

B3

B2

B1

B0

**

>

>

>

>

>

>

>

>

>

>

>

>

>

>

*

0

0

0

0

0

1

0

0

0

0

0

0

0

0

1

0

* Least significant bit
** Most significant bit

For information about .condition, .enable, .event, .ntr, and .ptr registers, refer to Status register set contents and Enable and transition registers. The individual bits of this register are defined in the following table.

Bit

Value and description

B0

status.operation.instrument.smuX.CALIBRATING

status.operation.instrument.smuX.CAL

Set bit indicates that smuX is unlocked for calibration.

Bit B0 decimal value: 1

B1 to B2

Not used

B3

status.operation.instrument.smuX.SWEEPING

status.operation.instrument.smuX.SWE

Set bit indicates that smuX is sweeping.

Bit B3 decimal value: 8

B4

status.operation.instrument.smuX.MEASURING

status.operation.instrument.smuX.MEAS

Bit is set when making an overlapped measurement, but it is not set when making a normal synchronous measurement.

Bit B4 decimal value: 16

B5 to B9

Not used

B10

status.operation.instrument.smuX.TRIGGER_OVERRUN

status.operation.instrument.smuX.TRGOVR

Set bit indicates an enabled bit has been set in the operation status smuX trigger overrun event register.

Bit B10 decimal value: 1,024

B11 to B15

Not used

As an example, to set bit B0 of the operation status SMU A summary enable register, set status.operation.instrument.smua.enable = status.operation.instrument.smua.CAL.

In addition to the above constants, operationRegister can be set to the numeric equivalent of the bit to set. To set more than one bit of the register, set operationRegister to the sum of their decimal weights. For example, to set bits B0 and B10, set operationRegister to 1,025 (which is the sum of 1 + 1,024).

Bit

B7

B6

B5

B4

B3

B2

B1

B0

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

128

64

32

16

8

4

2

1

Weights

(27)

(26)

(25)

(24)

(23)

(22)

(21)

(20)

Bit

B15

B14

B13

B12

B11

B10

B9

B8

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

32,768

16,384

8,192

4,096

2,048

1,024

512

256

Weights

(215)

(214)

(213)

(212)

(211)

(210)

(29)

(28)

Example 1

status.operation.instrument.smua.enable = status.operation.instrument.smua.MEAS

Use a constant to set bit B4 of the operation status SMU A summary enable register.

Example 2

status.operation.instrument.smua.enable = 1025

Use the decimal value to set bits B0 and B10 of the operation status SMU A summary enable register.

Also see

Operation Status Registers

status.operation.instrument.smuX.trigger_overrrun.*

status.operation.instrument.smuX.trigger_overrrun.*

This attribute contains the operation status SMU X trigger overrun register set.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute

- -

- -

- -

- -

.condition (R)

Yes

Not applicable

Not saved

Not applicable

.enable (RW)

Yes

Status reset

Not saved

0

.event (R)

Yes

Status reset

Not saved

0

.ntr (RW)

Yes

Status reset

Not saved

0

.ptr (RW)

Yes

Status reset

Not saved

30 (All bits set)

Usage

operationRegister = status.operation.instrument.smuX.trigger_overrun.condition

operationRegister = status.operation.instrument.smuX.trigger_overrun.enable

operationRegister = status.operation.instrument.smuX.trigger_overrun.event

operationRegister = status.operation.instrument.smuX.trigger_overrun.ntr

operationRegister = status.operation.instrument.smuX.trigger_overrun.ptr

status.operation.instrument.smuX.trigger_overrun.enable = operationRegister

status.operation.instrument.smuX.trigger_overrun.ntr = operationRegister

status.operation.instrument.smuX.trigger_overrun.ptr = operationRegister

operationRegister

The status of the operation status SMU X trigger overrun register; a zero (0) indicates no bits set (also send 0 to clear all bits); other values indicate various bit settings

Details

These attributes are used to read or write to the operation status SMU X trigger overrun registers. Reading a status register returns a value. The binary equivalent of the returned value indicates which register bits are set. The least significant bit of the binary number is bit B0, and the most significant bit is bit B15. For example, if a value of 18 is read as the value of the condition register, the binary equivalent is 0000 0000 0001 0010. This value indicates that bit B1 and bit B4 are set.

B15

B14

B13

B12

B11

B10

B9

B8

B7

B6

B5

B4

B3

B2

B1

B0

**

>

>

>

>

>

>

>

>

>

>

>

>

>

>

*

0

0

0

0

0

0

0

0

0

0

0

1

0

0

1

0

* Least significant bit
** Most significant bit

For information about .condition, .enable, .event, .ntr, and .ptr registers, refer to Status register set contents and Enable and transition registers. The individual bits of this register are defined in the following table.

Bit

Value and description

B0

Not used

B1

status.operation.instrument.smuX.trigger_overrun.ARM

Set bit indicates that the arm event detector of the SMU was already in the detected state when a trigger was received.

Bit B1 decimal value: 2

B2

status.operation.instrument.smuX.trigger_overrun.SRC

Set bit indicates that the source event detector of the SMU was already in the detected state when a trigger was received.

Bit B2 decimal value: 4

B3

status.operation.instrument.smuX.trigger_overrun.MEAS

Set bit indicates that the measurement event detector of the SMU was already in the detected state when a trigger was received.

Bit B3 decimal value: 8

B4

status.operation.instrument.smuX.trigger_overrun.ENDP

Set bit indicates that the end pulse event detector of the SMU was already in the detected state when a trigger was received.

Bit B4 decimal value: 16

B5 to B15

Not used

As an example, to set bit B1 of the operation status SMU A trigger overrun enable register, set status.operation.instrument.smua.trigger_overrun.enable = 
status.operation.instrument.smua.trigger_overrun.ARM.

In addition to the above constants, operationRegister can be set to the numeric equivalent of the bit to set. To set more than one bit of the register, set operationRegister to the sum of their decimal weights. For example, to set bits B1 and B4, set operationRegister to 18 (which is the sum of 2 + 16).

Bit

B7

B6

B5

B4

B3

B2

B1

B0

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

128

64

32

16

8

4

2

1

Weights

(27)

(26)

(25)

(24)

(23)

(22)

(21)

(20)

Bit

B15

B14

B13

B12

B11

B10

B9

B8

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

32,768

16,384

8,192

4,096

2,048

1,024

512

256

Weights

(215)

(214)

(213)

(212)

(211)

(210)

(29)

(28)

Example 1

status.operation.instrument.smua.trigger_overrun.enable =

status.operation.instrument.smua.trigger_overrun.ARM

Uses a constant to sets the ARM bit of the operation status SMU A trigger overrun enable register.

Example 2

status.operation.instrument.smua.trigger_overrun.enable = 18

Uses the decimal value to set bits B1 and B4 of the operation status SMU A trigger overrun enable register.

Also see

Operation Status Registers

status.operation.instrument.smuX.*

status.operation.instrument.trigger_blender.*

This attribute contains the operation status trigger blender summary register set.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute

- -

- -

- -

- -

.condition (R)

Yes

Not applicable

Not saved

Not applicable

.enable (RW)

Yes

Status reset

Not saved

0

.event (R)

Yes

Status reset

Not saved

0

.ntr (RW)

Yes

Status reset

Not saved

0

.ptr (RW)

Yes

Status reset

Not saved

1024 (All bits set)

Usage

operationRegister = status.operation.instrument.trigger_blender.condition

operationRegister = status.operation.instrument.trigger_blender.enable

operationRegister = status.operation.instrument.trigger_blender.event

operationRegister = status.operation.instrument.trigger_blender.ntr

operationRegister = status.operation.instrument.trigger_blender.ptr

status.operation.instrument.trigger_blender.enable = operationRegister

status.operation.instrument.trigger_blender.ntr = operationRegister

status.operation.instrument.trigger_blender.ptr = operationRegister

operationRegister

The status of the operation status trigger blender summary register; a zero (0) indicates no bits set (also send 0 to clear all bits); the only valid value other than 0 is 1024

Details

These attributes are used to read or write to the operation status trigger blender summary registers. Reading a status register returns a value. The binary equivalent of the returned value indicates which register bits are set. The least significant bit of the binary number is bit B0, and the most significant bit is bit B15.

For information about .condition, .enable, .event, .ntr, and .ptr registers, refer to Status register set contents and Enable and transition registers. The individual bits of this register are defined in the following table.

Bit

Value and description

B0 to B9

Not used

B10

status.operation.instrument.trigger_blender.TRIGGER_OVERRUN

status.operation.instrument.trigger_blender.TRGOVR

Set bit indicates one or more enabled bits for operation status trigger blender overrun register is set.

Bit B10 decimal value: 1,024

Binary value:
0100 0000 0000

B11 to B15

Not used

In addition to the above constants, operationRegister can be set to the numeric equivalent of the bit to set. For example, to set bit B10, set operationRegister to 1024.

Example

status.operation.instrument.trigger_blender.enable = 1024

Uses a decimal value to set the TRGOVR bit of the operation status trigger blender summary enable.

Also see

Operation Status Registers

status.operation.instrument.trigger_blender.trigger_overrun.*

status.operation.instrument.trigger_blender.trigger_overrun.*

This attribute contains the operation status trigger blender overrun register set.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute

- -

- -

- -

- -

.condition (R)

Yes

Not applicable

Not saved

Not applicable

.enable (RW)

Yes

Status reset

Not saved

0

.event (R)

Yes

Status reset

Not saved

0

.ntr (RW)

Yes

Status reset

Not saved

0

.ptr (RW)

Yes

Status reset

Not saved

126 (All bits set)

Usage

operationRegister =

status.operation.instrument.trigger_blender.trigger_overrun.condition

operationRegister =

status.operation.instrument.trigger_blender.trigger_overrun.enable

operationRegister =

status.operation.instrument.trigger_blender.trigger_overrun.event

operationRegister =

status.operation.instrument.trigger_blender.trigger_overrun.ntr

operationRegister =

status.operation.instrument.trigger_blender.trigger_overrun.ptr

status.operation.instrument.trigger_blender.trigger_overrun.enable =

operationRegister

status.operation.instrument.trigger_blender.trigger_overrun.ntr =

operationRegister

status.operation.instrument.trigger_blender.trigger_overrun.ptr =

operationRegister

operationRegister

The status of the operation status trigger blender overrun register; a zero (0) indicates no bits set (also send 0 to clear all bits); other values indicate various bit settings

Details

These attributes are used to read or write to the operation status trigger blender overrun registers. Reading a status register returns a value. The binary equivalent of the returned value indicates which register bits are set. The least significant bit of the binary number is bit B0, and the most significant bit is bit B15. For example, if a value of 18 is read as the value of the condition register, the binary equivalent is 0000 0000 0001 0010. This value indicates that bit B1 and bit B4 are set.

B15

B14

B13

B12

B11

B10

B9

B8

B7

B6

B5

B4

B3

B2

B1

B0

**

>

>

>

>

>

>

>

>

>

>

>

>

>

>

*

0

0

0

0

0

0

0

0

0

0

0

1

0

0

1

0

* Least significant bit
** Most significant bit

A set bit value indicates that the specified trigger blender generated an action overrun.

For information about .condition, .enable, .event, .ntr, and .ptr registers, refer to Status register set contents and Enable and transition registers. The individual bits of this register are defined in the following table.

Bit

Value

Decimal value

B0

Not used

Not applicable

B1

status.operation.instrument.trigger_blender.trigger_overrun.BLND1

2

B2

status.operation.instrument.trigger_blender.trigger_overrun.BLND2

4

B3

status.operation.instrument.trigger_blender.trigger_overrun.BLND3

8

B4

status.operation.instrument.trigger_blender.trigger_overrun.BLND4

16

B5

status.operation.instrument.trigger_blender.trigger_overrun.BLND5

32

B6

status.operation.instrument.trigger_blender.trigger_overrun.BLND6

64

B7 to B15

Not used

Not applicable

As an example, to set bit B1 of the operation status trigger blender overrun enable register, set status.operation.instrument.trigger_blender.trigger_overrun.enable = status.operation.instrument.trigger_blender.trigger_overrun.BLND1.

In addition to the above constants, operationRegister can be set to the numeric equivalent of the bit to set. To set more than one bit of the register, set operationRegister to the sum of their decimal weights. For example, to set bits B1 and B4, set operationRegister to 18 (which is the sum of 2 + 16).

Bit

B7

B6

B5

B4

B3

B2

B1

B0

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

128

64

32

16

8

4

2

1

Weights

(27)

(26)

(25)

(24)

(23)

(22)

(21)

(20)

Bit

B15

B14

B13

B12

B11

B10

B9

B8

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

32,768

16,384

8,192

4,096

2,048

1,024

512

256

Weights

(215)

(214)

(213)

(212)

(211)

(210)

(29)

(28)

Example

status.operation.instrument.trigger_blender.trigger_overrun.enable

= status.operation.instrument.trigger_blender.trigger_overrun.BLND1

Uses the constant to set the bit for blender 1 of the operation status trigger blender overrun enable register.

Example

status.operation.instrument.trigger_blender.trigger_overrun.enable = 18

Uses the decimal value to set the bits for blenders 1 and 4 of the operation status trigger blender overrun enable register.

Also see

Operation Status Registers

status.operation.instrument.trigger_blender.*

status.operation.instrument.trigger_timer.*

This attribute contains the operation status trigger timer summary register set.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute

- -

- -

- -

- -

.condition (R)

Yes

Not applicable

Not saved

Not applicable

.enable (RW)

Yes

Status reset

Not saved

0

.event (R)

Yes

Status reset

Not saved

0

.ntr (RW)

Yes

Status reset

Not saved

0

.ptr (RW)

Yes

Status reset

Not saved

1024 (All bits set)

Usage

operationRegister = status.operation.instrument.trigger_timer.condition

operationRegister = status.operation.instrument.trigger_timer.enable

operationRegister = status.operation.instrument.trigger_timer.event

operationRegister = status.operation.instrument.trigger_timer.ntr

operationRegister = status.operation.instrument.trigger_timer.ptr

status.operation.instrument.trigger_timer.enable = operationRegister

status.operation.instrument.trigger_timer.ntr = operationRegister

status.operation.instrument.trigger_timer.ptr = operationRegister

operationRegister

The status of the operation status trigger timer summary register; a zero (0) indicates no bits set (also send 0 to clear all bits); the only valid value other than 0 is 1024

Details

These attributes are used to read or write to the operation status trigger timer summary registers. Reading a status register returns a value. The binary equivalent of the returned value indicates which register bits are set. The least significant bit of the binary number is bit B0, and the most significant bit is bit B15.

For information about .condition, .enable, .event, .ntr, and .ptr registers, refer to Status register set contents and Enable and transition registers. The individual bits of this register are defined in the following table.

Bit

Value and description

B0 to B9

Not used

B10

status.operation.instrument.trigger_timer.TRIGGER_OVERRUN

status.operation.instrument.trigger_timer.TRGOVR

Set bit indicates one or more enabled bits for the operation status trigger timer overrun register is set.

Bit B10 decimal value: 1,024

Binary value:
0100 0000 0000

B11 to B15

Not used

In addition to the above constants, operationRegister can be set to the numeric equivalent of the bit to set. For example, to set bit B10, set operationRegister to 1024.

Example

status.operation.instrument.trigger_timer.enable = 1024

Uses the decimal value to set the TRGOVR bit of the operation status trigger timer summary enable register.

Also see

Operation Status Registers

status.operation.instrument.trigger_timer.trigger_overrun.*

status.operation.instrument.trigger_timer.trigger_overrun.*

This attribute contains the operation status trigger timer overrun register set.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute

- -

- -

- -

- -

.condition (R)

Yes

Not applicable

Not saved

Not applicable

.enable (RW)

Yes

Status reset

Not saved

0

.event (R)

Yes

Status reset

Not saved

0

.ntr (RW)

Yes

Status reset

Not saved

0

.ptr (RW)

Yes

Status reset

Not saved

510 (All bits set)

Usage

operationRegister =

status.operation.instrument.trigger_timer.trigger_overrun.condition

operationRegister =

status.operation.instrument.trigger_timer.trigger_overrun.enable

operationRegister =

status.operation.instrument.trigger_timer.trigger_overrun.event

operationRegister =

status.operation.instrument.trigger_timer.trigger_overrun.ntr

operationRegister =

status.operation.instrument.trigger_timer.trigger_overrun.ptr

status.operation.instrument.trigger_timer.trigger_overrun.enable =

operationRegister

status.operation.instrument.trigger_timer.trigger_overrun.ntr =

operationRegister

status.operation.instrument.trigger_timer.trigger_overrun.ptr =

operationRegister

operationRegister

The status of the operation status trigger timer trigger overrun register; a zero (0) indicates no bits set (also send 0 to clear all bits); other values indicate various bit settings

Details

These attributes are used to read or write to the operation status trigger timer overrun registers. Reading a status register returns a value. The binary equivalent of the returned value indicates which register bits are set. The least significant bit of the binary number is bit B0, and the most significant bit is bit B15. For example, if a value of 18 is read as the value of the condition register, the binary equivalent is 0000 0000 0001 0010. This value indicates that bit B1 and bit B4 are set.

B15

B14

B13

B12

B11

B10

B9

B8

B7

B6

B5

B4

B3

B2

B1

B0

**

>

>

>

>

>

>

>

>

>

>

>

>

>

>

*

0

0

0

0

0

0

0

0

0

0

0

1

0

0

1

0

* Least significant bit
** Most significant bit

A set bit indicates the specified timer generated an action overrun because it was still processing a delay from a previous trigger when a new trigger was received.

For information about .condition, .enable, .event, .ntr, and .ptr registers, refer to Status register set contents and Enable and transition registers. The individual bits of this register are defined in the following table.

Bit

Value

Decimal value

B0

Not used

Not applicable

B1

status.operation.instrument.trigger_timer.trigger_overrun.TMR1

2

B2

status.operation.instrument.trigger_timer.trigger_overrun.TMR2

4

B3

status.operation.instrument.trigger_timer.trigger_overrun.TMR3

8

B4

status.operation.instrument.trigger_timer.trigger_overrun.TMR4

16

B5

status.operation.instrument.trigger_timer.trigger_overrun.TMR5

32

B6

status.operation.instrument.trigger_timer.trigger_overrun.TMR6

64

B7

status.operation.instrument.trigger_timer.trigger_overrun.TMR7

128

B8

status.operation.instrument.trigger_timer.trigger_overrun.TMR8

256

B9 to B15

Not used

Not applicable

As an example, to set bit B1 of the operation status trigger timer trigger overrun enable register, set status.operation.instrument.trigger_timer.trigger_overrun.enable = status.operation.instrument.trigger_timer.trigger_overrun.TMR1.

In addition to the above constants, operationRegister can be set to the numeric equivalent of the bit to set. To set more than one bit of the register, set operationRegister to the sum of their decimal weights. For example, to set bits B1 and B4, set operationRegister to 18 (which is the sum of 2 + 16).

Bit

B7

B6

B5

B4

B3

B2

B1

B0

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

128

64

32

16

8

4

2

1

Weights

(27)

(26)

(25)

(24)

(23)

(22)

(21)

(20)

Bit

B15

B14

B13

B12

B11

B10

B9

B8

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

32,768

16,384

8,192

4,096

2,048

1,024

512

256

Weights

(215)

(214)

(213)

(212)

(211)

(210)

(29)

(28)

Example 1

status.operation.instrument.trigger_timer.trigger_overrun.enable =

status.operation.instrument.trigger_timer.trigger_overrun.TMR3

Uses a constant to set the timer 3 bit of the operation status trigger timer overrun enable register.

Example 2

status.operation.instrument.trigger_timer.trigger_overrun.enable = 18

Uses a constant to set timer bits B1 and B4 of the operation status trigger timer overrun enable register.

Also see

Operation Status Registers

status.operation.instrument.trigger_timer.*

status.operation.instrument.tsplink.*

This attribute contains the operation status TSP-Link summary register set. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute

- -

- -

- -

- -

.condition (R)

Yes

Not applicable

Not saved

Not applicable

.enable (RW)

Yes

Status reset

Not saved

0

.event (R)

Yes

Status reset

Not saved

0

.ntr (RW)

Yes

Status reset

Not saved

0

.ptr (RW)

Yes

Status reset

Not saved

1024 (All bits set)

Usage

operationRegister = status.operation.instrument.tsplink.condition

operationRegister = status.operation.instrument.tsplink.enable

operationRegister = status.operation.instrument.tsplink.event

operationRegister = status.operation.instrument.tsplink.ntr

operationRegister = status.operation.instrument.tsplink.ptr

status.operation.instrument.tsplink.enable = operationRegister

status.operation.instrument.tsplink.ntr = operationRegister

status.operation.instrument.tsplink.ptr = operationRegister

operationRegister

The status of the operation status TSP-Link summary register; a zero (0) indicates no bits set (also send 0 to clear all bits); the only valid value other than 0 is 1024

Details

These attributes are used to read or write to the operation status TSP-Link summary registers. Reading a status register returns a value. The binary equivalent of the returned value indicates which register bits are set. The least significant bit of the binary number is bit B0, and the most significant bit is bit B15.

For information about .condition, .enable, .event, .ntr, and .ptr registers, refer to Status register set contents and Enable and transition registers. The individual bits of this register are defined in the following table.

Bit

Value and description

B0 to B9

Not used

B10

status.operation.instrument.tsplink.TRIGGER_OVERRUN

status.operation.instrument.tsplink.TRGOVR

Set bit indicates one or more enabled bits for the operation status TSP-Link overrun register is set.

Bit B10 decimal value: 1,024

Binary value:
0100 0000 0000

B11 to B15

Not used

In addition to the above constants, operationRegister can be set to the numeric equivalent of the bit to set. For example, to set bit B10, set operationRegister to 1024.

Example

status.operation.instrument.tsplink.enable = 1024

Uses the decimal value to set the trigger overrun bit of the operation status TSP-Link summary enable register.

Also see

Operation Status Registers

status.operation.instrument.tsplink.trigger_overrun.*

status.operation.instrument.tsplink.trigger_overrun.*

This attribute contains the operation status TSP-Link overrun register set. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute

- -

- -

- -

- -

.condition (R)

Yes

Not applicable

Not saved

Not applicable

.enable (RW)

Yes

Status reset

Not saved

0

.event (R)

Yes

Status reset

Not saved

0

.ntr (RW)

Yes

Status reset

Not saved

0

.ptr (RW)

Yes

Status reset

Not saved

14 (All bits set)

Usage

operationRegister =

status.operation.instrument.tsplink.trigger_overrun.condition

operationRegister = status.operation.instrument.tsplink.trigger_overrun.enable

operationRegister = status.operation.instrument.tsplink.trigger_overrun.event

operationRegister = status.operation.instrument.tsplink.trigger_overrun.ntr

operationRegister = status.operation.instrument.tsplink.trigger_overrun.ptr

status.operation.instrument.tsplink.trigger_overrun.enable = operationRegister

status.operation.instrument.tsplink.trigger_overrun.ntr = operationRegister

status.operation.instrument.tsplink.trigger_overrun.ptr = operationRegister

operationRegister

The status of the operation status TSP-Link overrun register; a zero (0) indicates no bits set (also send 0 to clear all bits); other values indicate various bit settings

Details

These attributes are used to read or write to the operation status TSP-Link overrun registers. Reading a status register returns a value. The binary equivalent of the returned value indicates which register bits are set. The least significant bit of the binary number is bit B0, and the most significant bit is bit B15. For example, if a value of 10 is read as the value of the condition register, the binary equivalent is 0000 0000 0000 1010. This value indicates that bit B1 and bit B3 are set.

B15

B14

B13

B12

B11

B10

B9

B8

B7

B6

B5

B4

B3

B2

B1

B0

**

>

>

>

>

>

>

>

>

>

>

>

>

>

>

*

0

0

0

0

0

0

0

0

0

0

0

0

1

0

1

0

* Least significant bit
** Most significant bit

A set bit indicates that the specified line generated an action overrun when triggered to generate an output trigger.

For information about .condition, .enable, .event, .ntr, and .ptr registers, refer to Status register set contents and Enable and transition registers. The individual bits of this register are defined in the following table.

Bit

Value

Decimal value

B0

Not used

Not applicable

B1

status.operation.instrument.tsplink.trigger_overrun.LINE1

2

B2

status.operation.instrument.tsplink.trigger_overrun.LINE2

4

B3

status.operation.instrument.tsplink.trigger_overrun.LINE3

8

B4 to B15

Not used

Not applicable

As an example, to set bit B1 of the operation status TSP-Link overrun enable register, set status.operation.instrument.tsplink.trigger_overrun.enable = status.operation.instrument.tsplink.trigger_overrun.LINE1.

In addition to the above constants, operationRegister can be set to the numeric equivalent of the bit to set. To set more than one bit of the register, set operationRegister to the sum of their decimal weights. For example, to set bits B1 and B3, set operationRegister to 10 (which is the sum of 2 + 8).

Bit

B7

B6

B5

B4

B3

B2

B1

B0

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

128

64

32

16

8

4

2

1

Weights

(27)

(26)

(25)

(24)

(23)

(22)

(21)

(20)

Bit

B15

B14

B13

B12

B11

B10

B9

B8

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

32,768

16,384

8,192

4,096

2,048

1,024

512

256

Weights

(215)

(214)

(213)

(212)

(211)

(210)

(29)

(28)

Example 1

status.operation.instrument.tsplink.trigger_overrun.enable =

status.operation.instrument.tsplink.trigger_overrun.LINE1

Uses a constant to set the line 1 bit of the operation status TSP-Link overrun enable register.

Example 2

status.operation.instrument.tsplink.trigger_overrun.enable = 10

Uses the decimal value to set bits for lines 1 and 3 of the operation status TSP-Link overrun enable register.

Also see

Operation Status Registers

status.operation.instrument.trigger_timer.*

status.operation.measuring.*

This attribute contains the operation status measuring summary register set.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute

- -

- -

- -

- -

.condition (R)

Yes

Not applicable

Not saved

Not applicable

.enable (RW)

Yes

Status reset

Not saved

0

.event (R)

Yes

Status reset

Not saved

0

.ntr (RW)

Yes

Status reset

Not saved

0

.ptr (RW)

Yes

Status reset

Not saved

2601B, 2611B, 2635B: 2 (All bits set)

2602B, 2604B, 2612B, 2614B, 2634B, 2636B:
6 (All bits set)

Usage

operationRegister = status.operation.measuring.condition

operationRegister = status.operation.measuring.enable

operationRegister = status.operation.measuring.event

operationRegister = status.operation.measuring.ntr

operationRegister = status.operation.measuring.ptr

status.operation.measuring.enable = operationRegister

status.operation.measuring.ntr = operationRegister

status.operation.measuring.ptr = operationRegister

operationRegister

The status of the operation status measuring summary register; a zero (0) indicates no bits set (also send 0 to clear all bits); other values indicate various bit settings

Details

These attributes are used to read or write to the operation status measuring summary registers. Reading a status register returns a value. The binary equivalent of the returned value indicates which register bits are set. The least significant bit of the binary number is bit B0, and the most significant bit is bit B15.

For information about .condition, .enable, .event, .ntr, and .ptr registers, refer to Status register set contents and Enable and transition registers. The individual bits of this register are defined in the following table.

Bit

Value

Description

B0

Not used

Not applicable.

B1

status.operation.measuring.SMUA

Bit is set when SMU A is making an overlapped measurement, but it is not set when making a normal synchronous measurement.

Bit B1 decimal value: 2

Binary value: 0000 0010

B2

status.operation.measuring.SMUB

This bit is only available on 2602B, 2604B, 2612B, 2614B, 2634B, 2636B. This bit is set when SMU B is making an overlapped measurement, but it is not set when making a normal synchronous measurement.

Bit B2 decimal value: 4

Binary value: 0000 0100

B3 to B15

Not used

Not applicable.

As an example, to set bit B1 of the operation status measuring summary enable register, set status.operation.measuring.enable = status.operation.measuring.SMUA.

In addition to the above constants, operationRegister can be set to the numeric equivalent of the bit to set. To set more than one bit of the register, set operationRegister to the sum of their decimal weights. For example, to set bits B1 and B2, set operationRegister to 6 (which is the sum of 2 + 4).

Example

status.operation.measuring.enable = status.operation.measuring.SMUA

Uses a constant to set the SMUA bit of the operation status measuring summary enable register.

Also see

Operation Status Registers

status.operation.*

status.operation.remote.*

This attribute contains the operation status remote summary register set.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute

- -

- -

- -

- -

.condition (R)

Yes

Not applicable

Not saved

Not applicable

.enable (RW)

Yes

Status reset

Not saved

0

.event (R)

Yes

Status reset

Not saved

0

.ntr (RW)

Yes

Status reset

Not saved

0

.ptr (RW)

Yes

Status reset

Not saved

2050 (All bits set)

Usage

operationRegister = status.operation.remote.condition

operationRegister = status.operation.remote.enable

operationRegister = status.operation.remote.event

operationRegister = status.operation.remote.ntr

operationRegister = status.operation.remote.ptr

status.operation.remote.enable = operationRegister

status.operation.remote.ntr = operationRegister

status.operation.remote.ptr = operationRegister

operationRegister

The status of the operation status remote summary register; a zero (0) indicates no bits set (also send 0 to clear all bits); other values indicate various bit settings

Details

These attributes are used to read or write to the operation status remote summary registers. Reading a status register returns a value. The binary equivalent of the returned value indicates which register bits are set. The least significant bit of the binary number is bit B0, and the most significant bit is bit B15.

For information about .condition, .enable, .event, .ntr, and .ptr registers, refer to Status register set contents and Enable and transition registers. The individual bits of this register are defined in the following table.

Bit

Value and description

B0

Not used

B1

status.operation.remote.COMMAND_AVAILABLE

status.operation.remote.CAV

Set bit indicates there is a command available in the execution queue.

Bit B1 decimal value: 2

Binary value: 0000 0000 0000 0010

B2 to B10

Not used

B11

status.operation.remote.PROMPTS_ENABLED

status.operation.remote.PRMPT

Set bit indicates command prompts are enabled.

Bit B11 decimal value: 2,048

Binary value: 0000 0100 0000 0000

B12 to B15

Not used

As an example, to set bit B1 of the operation status remote summary enable register, set status.operation.remote.enable = status.operation.remote.CAV.

In addition to the above constants, operationRegister can be set to the decimal value of the bit to set. To set more than one bit of the register, set operationRegister to the sum of their decimal values. For example, to set bits B1 and B11, set operationRegister to 2,050 (which is the sum of 2 + 2,048).

Example 1

status.operation.remote.enable = status.operation.remote.CAV

Uses a constant to set the CAV bit, B1, of the operation status remote summary enable register.

Example 2

status.operation.remote.enable = 2050

Uses the decimal value to set bits B1 and B11 of the operation status remote summary enable register.

Also see

Operation Status Registers

status.operation.*

status.operation.sweeping.*

This attribute contains the operation status sweeping summary register set.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute

- -

- -

- -

- -

.condition (R)

Yes

Not applicable

Not saved

Not applicable

.enable (RW)

Yes

Status reset

Not saved

0

.event (R)

Yes

Status reset

Not saved

0

.ntr (RW)

Yes

Status reset

Not saved

0

.ptr (RW)

Yes

Status reset

Not saved

2601B, 2611B, 2635B:
2 (All bits set)

2602B, 2604B, 2612B, 2614B, 2634B, 2636B:
6 (All bits set)

Usage

operationRegister = status.operation.sweeping.condition

operationRegister = status.operation.sweeping.enable

operationRegister = status.operation.sweeping.event

operationRegister = status.operation.sweeping.ntr

operationRegister = status.operation.sweeping.ptr

status.operation.sweeping.enable = operationRegister

status.operation.sweeping.ntr = operationRegister

status.operation.sweeping.ptr = operationRegister

operationRegister

The status of the operation status sweeping summary register; a zero (0) indicates no bits set (also send 0 to clear all bits); other values indicate various bit settings

Details

These attributes are used to read or write to the operation status sweeping summary registers. Reading a status register returns a value. The binary equivalent of the returned value indicates which register bits are set. The least significant bit of the binary number is bit B0, and the most significant bit is bit B15.

For information about .condition, .enable, .event, .ntr, and .ptr registers, refer to Status register set contents and Enable and transition registers. The individual bits of this register are defined in the following table.

Bit

Value

Description

B0

Not used

Not applicable.

B1

status.operation.sweeping.SMUA

Set bit indicates that SMU A is sweeping.

Bit B1 decimal value: 2

Binary value: 0000 0010

B2

status.operation.sweeping.SMUB

This bit is only available on 2602B, 2604B, 2612B, 2614B, 2634B, 2636B. Set bit indicates SMU B is sweeping.

Bit B2 decimal value: 4

Binary value: 0000 0100

B3 to B15

Not used

Not applicable.

As an example, to set bit B1 of the operation status sweeping summary enable register, set status.operation.sweeping.enable = status.operation.sweeping.SMUA.

In addition to the above constants, operationRegister can be set to the numeric equivalent of the bit to set. To set more than one bit of the register, set operationRegister to the sum of their decimal weights. For example, to set bits B1 and B2, set operationRegister to 6 (the sum of 2 + 4).

Example

status.operation.sweeping.enable = status.operation.sweeping.SMUA

Uses a constant to set the SMUA bit of the operation status sweeping summary enable register.

Also see

Operation Status Registers

status.operation.*

status.operation.trigger_overrun.*

This attribute contains the operation status trigger overrun summary register set.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute

- -

- -

- -

- -

.condition (R)

Yes

Not applicable

Not saved

Not applicable

.enable (RW)

Yes

Status reset

Not saved

0

.event (R)

Yes

Status reset

Not saved

0

.ntr (RW)

Yes

Status reset

Not saved

0

.ptr (RW)

Yes

Status reset

Not saved

2601B, 2611B, 2635B:
31,746 (All bits set)

2602B, 2612B, 2636B:
31,750 (All bits set)

2604B, 2614B, 2634B:
19,462 (All bits set)

Usage

operationRegister = status.operation.trigger_overrun.condition

operationRegister = status.operation.trigger_overrun.enable

operationRegister = status.operation.trigger_overrun.event

operationRegister = status.operation.trigger_overrun.ntr

operationRegister = status.operation.trigger_overrun.ptr

status.operation.trigger_overrun.enable = operationRegister

status.operation.trigger_overrun.ntr = operationRegister

status.operation.trigger_overrun.ptr = operationRegister

operationRegister

The status of the operation status trigger overrun summary register; a zero (0) indicates no bits set (also send 0 to clear all bits); other values indicate various bit settings

Details

These attributes are used to read or write to the operation status trigger overrun summary registers. Reading a status register returns a value. The binary equivalent of the returned value indicates which register bits are set. The least significant bit of the binary number is bit B0, and the most significant bit is bit B15. For example, if a value of 1.02600e+03 (which is 1,026) is read as the value of the condition register, the binary equivalent is 0000 0100 0000 0010. This value indicates that bit B1 and bit B10 are set.

B15

B14

B13

B12

B11

B10

B9

B8

B7

B6

B5

B4

B3

B2

B1

B0

**

>

>

>

>

>

>

>

>

>

>

>

>

>

>

*

0

0

0

0

0

1

0

0

0

0

0

0

0

0

1

0

* Least significant bit
** Most significant bit

The bits in this register summarize events in other registers. A set bit in this summary register indicates that an enabled event in one of the summarized registers is set.

For information about .condition, .enable, .event, .ntr, and .ptr registers, refer to Status register set contents and Enable and transition registers. The individual bits of this register are defined in the following table.

Bit

Value

Description

B0

Not used

Not applicable.

B1

status.operation.trigger_overrun.SMUA

Set bit indicates one of the enabled bits in the operation status SMU A trigger overrun event register is set.

Bit B1 decimal value: 2

B2

status.operation.trigger_overrun.SMUB

This bit is only available on 2602B, 2604B, 2612B, 2614B, 2634B,
2636B. Set bit indicates one of the enabled bits in the operation status SMU B trigger overrun event register is set.

Bit B2 decimal value: 4

B3 to B9

Not used

Not applicable.

B10

status.operation.trigger_overrun.TRIGGER_BLENDER

status.operation.trigger_overrun.TRGBLND

Set bit indicates one of the enabled bits in the operation status trigger blender overrun event register is set.

Bit B10 decimal value: 1,024

B11

status.operation.trigger_overrun.TRIGGER_TIMER

status.operation.trigger_overrun.TRGTMR

Set bit indicates one of the enabled bits in the operation status trigger timer overrun event register is set.

Bit B11 decimal value: 2,048

B12

status.operation.trigger_overrun.DIGITAL_IO

status.operation.trigger_overrun.DIGIO

This bit is only available on 2601B, 2602B, 2611B, 2612B, 2635B, 2636B. Set bit indicates one of the enabled bits in the operation status digital I/O overrun event register is set.

Bit B12 decimal value: 4,096

B13

status.operation.trigger_overrun.TSPLINK

This bit is only available on 2601B, 2602B, 2611B, 2612B, 2635B, 2636B. Set bit indicates one of the enabled bits in the operation status TSP-Link overrun event register is set.

Bit B13 decimal value: 8,192

B14

status.operation.trigger_overrun.LAN

Set bit indicates one of the enabled bits in the operation status LAN trigger overrun event register is set.

Bit B14 decimal value: 16,384

B15

Not used

Not applicable.

As an example, to set bit B1 of the operation status trigger overrun summary enable register, set status.operation.trigger_overrun.enable = status.operation.trigger_overrun.SMUA.

In addition to the above constants, operationRegister can be set to the numeric equivalent of the bit to set. To set more than one bit of the register, set operationRegister to the sum of their decimal weights. For example, to set bits B1 and B10, set operationRegister to 1,026 (which is the sum of 2 + 1,024).

Bit

B7

B6

B5

B4

B3

B2

B1

B0

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

128

64

32

16

8

4

2

1

Weights

(27)

(26)

(25)

(24)

(23)

(22)

(21)

(20)

Bit

B15

B14

B13

B12

B11

B10

B9

B8

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

32,768

16,384

8,192

4,096

2,048

1,024

512

256

Weights

(215)

(214)

(213)

(212)

(211)

(210)

(29)

(28)

Example

operationRegister = status.operation.trigger_overrun.SMUA + status.operation.trigger_overrun.TRGBLND

status.operation.trigger_overrun.enable = operationRegister

Uses constants to set bit B1 and bit B10 of the operation status trigger overrun summary enable register.

Also see

Operation Status Registers

status.operation.*

status.operation.user.*

These attributes manage the operation status user register set of the status model.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute

- -

- -

- -

- -

.condition (RW)

Yes

Status reset

Not saved

0

.enable (RW)

Yes

Status reset

Not saved

0

.event (R)

Yes

Status reset

Not saved

0

.ntr (RW)

Yes

Status reset

Not saved

0

.ptr (RW)

Yes

Status reset

Not saved

32,767 (All bits set)

Usage

operationRegister = status.operation.user.condition

operationRegister = status.operation.user.enable

operationRegister = status.operation.user.event

operationRegister = status.operation.user.ntr

operationRegister = status.operation.user.ptr

status.operation.user.condition = operationRegister

status.operation.user.enable = operationRegister

status.operation.user.ntr = operationRegister

status.operation.user.ptr = operationRegister

operationRegister

The status of the operation status user register; a zero (0) indicates no bits set (also send 0 to clear all bits); other values indicate various bit settings

Details

These attributes are used to read or write to the operation status user registers. Reading a status register returns a value. The binary equivalent of the value indicates which register bits are set. In the binary equivalent, the least significant bit is bit B0, and the most significant bit is bit B15. For example, if a value of 1.29000e+02 (which is 129) is read as the value of the condition register, the binary equivalent is 0000 0000 1000 0001. This value indicates that bits B0 and B7 are set.

B15

B14

B13

B12

B11

B10

B9

B8

B7

B6

B5

B4

B3

B2

B1

B0

**

>

>

>

>

>

>

>

>

>

>

>

>

>

>

*

0

0

0

0

0

0

0

0

1

0

0

0

0

0

0

1

* Least significant bit
** Most significant bit

For information about .condition, .enable, .event, .ntr, and .ptr registers, refer to Status register set contents and Enable and transition registers. The individual bits of this register are defined in the following table.

Bit

Value

Decimal value

B0

status.operation.user.BIT0

1

B1

status.operation.user.BIT1

2

B2

status.operation.user.BIT2

4

B3

status.operation.user.BIT3

8

B4

status.operation.user.BIT4

16

B5

status.operation.user.BIT5

32

B6

status.operation.user.BIT6

64

B7

status.operation.user.BIT7

128

B8

status.operation.user.BIT8

256

B9

status.operation.user.BIT9

512

B10

status.operation.user.BIT10

1,024

B11

status.operation.user.BIT11

2,048

B12

status.operation.user.BIT12

4,096

B13

status.operation.user.BIT13

8,192

B14

status.operation.user.BIT14

16,384

B15

Not used

Not applicable

As an example, to set bit B0 of the operation status user enable register, set status.operation.user.enable = status.operation.user.BIT0.

In addition to the above constants, operationRegister can be set to the decimal value of the bit to set. To set more than one bit of the register, set operationRegister to the sum of their decimal values. For example, to set bits B11 and B14, set operationRegister to 18,432 (which is the sum of 2,048 + 16,384).

Bit

B7

B6

B5

B4

B3

B2

B1

B0

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

128

64

32

16

8

4

2

1

Weights

(27)

(26)

(25)

(24)

(23)

(22)

(21)

(20)

Bit

B15

B14

B13

B12

B11

B10

B9

B8

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

32,768

16,384

8,192

4,096

2,048

1,024

512

256

Weights

(215)

(214)

(213)

(212)

(211)

(210)

(29)

(28)

Example 1

operationRegister = status.operation.user.BIT11 + status.operation.user.BIT14

status.operation.user.enable = operationRegister

Uses constants to set bits B11 and B14 of the operation status user enable register.

Example 2

-- 18432 = binary 0100 1000 0000 0000

operationRegister = 18432

status.operation.enable = operationRegister

Uses the decimal value to set bits B11 and B14 of the operation status user enable register.

Also see

Operation Status Registers

status.operation.*

status.questionable.*

These attributes manage the questionable status register set of the status model.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute

- -

- -

- -

- -

.condition (R)

Yes

Not applicable

Not saved

Not applicable

.enable (RW)

Yes

Status reset

Not saved

0

.event (R)

Yes

Status reset

Not saved

0

.ntr (RW)

Yes

Status reset

Not saved

0

.ptr (RW)

Yes

Status reset

Not saved

13,056 (All bits set)

Usage

questionableRegister = status.questionable.condition

questionableRegister = status.questionable.enable

questionableRegister = status.questionable.event

questionableRegister = status.questionable.ntr

questionableRegister = status.questionable.ptr

status.questionable.enable = questionableRegister

status.questionable.ntr = questionableRegister

status.questionable.ptr = questionableRegister

questionableRegister

The status of the questionable status register; a zero (0) indicates no bits set (also send 0 to clear all bits); other values indicate various bit settings

Details

These attributes are used to read or write to the questionable status registers. Reading a status register returns a value. In the binary equivalent, the least significant bit is bit B0, and the most significant bit is bit B15. For example, if a value of 1.22880e+04 (which is 12,288) is read as the value of the condition register, the binary equivalent is 0011 0000 0000 0000. This value indicates that bits B12 and B13 are set.

B15

B14

B13

B12

B11

B10

B9

B8

B7

B6

B5

B4

B3

B2

B1

B0

**

>

>

>

>

>

>

>

>

>

>

>

>

>

>

*

0

0

1

1

0

0

0

0

0

0

0

0

0

0

0

0

* Least significant bit
** Most significant bit

For information about .condition, .enable, .event, .ntr, and .ptr registers, refer to Status register set contents and Enable and transition registers. The individual bits of this register are defined in the following table.

Bit

Value

Description

B0 to B7

Not used

Not available

B8

status.questionable.CALIBRATION

status.questionable.CAL

An enabled bit in the questionable status calibration summary event register is set.

Bit B6 decimal value: 256

B9

status.questionable.UNSTABLE_OUTPUT

status.questionable.UO

An enabled bit in the questionable status unstable output summary event register is set.

Bit B9 decimal value: 512

B10

status.questionable.HIGHV_NOT_READY

Only 2611B, 2612B, 2614B, 2634B, 2635B, 2636B: Either the interlock is not engaged or the interlock was engaged recently and the high voltage supply is still stabilizing. If the interlock is engaged and this bit is set, attempting to turn on the output on the 200 V range results in error code 5052, "Interlock engaged; system stabilizing."

Bit B10 decimal value: 1024

B11

Not used

Not available

B12

status.questionable.OVER_TEMPERATURE

status.questionable.OTEMP

An enabled bit in the questionable status over temperature summary event register is set.

Bit B12 decimal value: 4,096

B13

status.questionable.INSTRUMENT_SUMMARY

status.questionable.INST

An enabled bit in the questionable status instrument summary event register is set.

Bit B13 decimal value: 8,192

B14 to B15

Not used

Not available

As an example, to set bit B9 of the questionable status enable register, set status.questionable.enable = status.questionable.UO.

In addition to the above constants, questionableRegister can be set to the numeric equivalent of the bit to set. To set more than one bit of the register, set questionableRegister to the sum of their decimal weights. For example, to set bits B12 and B13, set questionableRegister to 12,288 (which is the sum of 4,096 + 8,192).

Bit

B7

B6

B5

B4

B3

B2

B1

B0

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

128

64

32

16

8

4

2

1

Weights

(27)

(26)

(25)

(24)

(23)

(22)

(21)

(20)

Bit

B15

B14

B13

B12

B11

B10

B9

B8

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

32,768

16,384

8,192

4,096

2,048

1,024

512

256

Weights

(215)

(214)

(213)

(212)

(211)

(210)

(29)

(28)

Example

status.questionable.enable = status.questionable.OTEMP

Uses a constant to set the OTEMP bit of the questionable status enable register.

Also see

Questionable Status Registers

status.questionable.calibration.*

This attribute contains the questionable status calibration summary register set.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute

- -

- -

- -

- -

.condition (R)

Yes

Not applicable

Not saved

Not applicable

.enable (RW)

Yes

Status reset

Not saved

0

.event (R)

Yes

Status reset

Not saved

0

.ntr (RW)

Yes

Status reset

Not saved

0

.ptr (RW)

Yes

Status reset

Not saved

2601B, 2611B, 2635B: 2 (All bits set)

Models 2602B, 2604B, 2612B, 2614B, 2634B, 2636B: 6 (All bits set)

Usage

questionableRegister = status.questionable.calibration.condition

questionableRegister = status.questionable.calibration.enable

questionableRegister = status.questionable.calibration.event

questionableRegister = status.questionable.calibration.ntr

questionableRegister = status.questionable.calibration.ptr

status.questionable.calibration.enable = questionableRegister

status.questionable.calibration.ntr = questionableRegister

status.questionable.calibration.ptr = questionableRegister

questionableRegister

The status of the questionable status calibration summary register; a zero (0) indicates no bits set (also send 0 to clear all bits); other values indicate various bit settings

Details

These attributes are used to read or write to the questionable status calibration summary registers. Reading a status register returns a value. The binary equivalent of the returned value indicates which register bits are set. The least significant bit of the binary number is bit B0, and the most significant bit is bit B15.

For information about .condition, .enable, .event, .ntr, and .ptr registers, refer to Status register set contents and Enable and transition registers. The individual bits of this register are defined in the following table.

Bit

Value and description

B0

Not used

B1

status.questionable.calibration.SMUA

Set bit indicates that the SMU A calibration constants stored in nonvolatile memory were corrupted and could not be loaded when the instrument powered up.

Bit B1 decimal value: 2

Binary value: 0000 0010

B2

status.questionable.calibration.SMUB

This bit is only available on 2602B, 2604B, 2612B, 2614B, 2634B, 2636B. Set bit indicates that the SMU B calibration constants stored in nonvolatile memory were corrupted and could not be loaded when the instrument powered up.

Bit B2 decimal value: 4

Binary value: 0000 0100

B3 to B15

Not used

As an example, to set bit B1 of the questionable status calibration summary enable register, set status.questionable.calibration.enable = status.questionable.calibration.SMUA.

In addition to the above constants, questionableRegister can be set to the numeric equivalent of the bit to set. To set more than one bit of the register, set questionableRegister to the sum of their decimal weights. For example, to set bits B1 and B2, set questionableRegister to 6 (which is the sum of 2 + 4).

Example

status.questionable.calibration.enable = status.questionable.calibration.SMUA

Uses a constant to set the SMUA bit of the questionable status calibration summary enable register.

Also see

Questionable Status Registers

status.questionable.*

status.questionable.instrument.*

This attribute contains the questionable status instrument summary register set.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute

- -

- -

- -

- -

.condition (R)

Yes

Not applicable

Not saved

Not applicable

.enable (RW)

Yes

Status reset

Not saved

0

.event (R)

Yes

Status reset

Not saved

0

.ntr (RW)

Yes

Status reset

Not saved

0

.ptr (RW)

Yes

Status reset

Not saved

2601B, 2611B, 2635B: 2 (All bits set)

2602B, 2604B, 2612B, 2614B, 2634B, 2636B: 6 (All bits set)

Usage

questionableRegister = status.questionable.instrument.condition

questionableRegister = status.questionable.instrument.enable

questionableRegister = status.questionable.instrument.event

questionableRegister = status.questionable.instrument.ntr

questionableRegister = status.questionable.instrument.ptr

status.questionable.instrument.enable = questionableRegister

status.questionable.instrument.ntr = questionableRegister

status.questionable.instrument.ptr = questionableRegister

questionableRegister

The status of the questionable status instrument summary register; a zero (0) indicates no bits set (also send 0 to clear all bits); other values indicate various bit settings

Details

These attributes are used to read or write to the questionable status instrument summary registers. Reading a status register returns a value. The binary equivalent of the returned value indicates which register bits are set. The least significant bit of the binary number is bit B0, and the most significant bit is bit B15.

For information about .condition, .enable, .event, .ntr, and .ptr registers, refer to Status register set contents and Enable and transition registers. The individual bits of this register are defined in the following table.

Bit

Value

Description

B0

Not used

Not applicable.

B1

status.questionable.instrument.SMUA

Set bit indicates one or more enabled bits for the SMU A questionable register are set.

Bit B1 decimal value: 2

Binary value: 0000 0010

B2

status.questionable.instrument.SMUB

This bit is only available on 2602B, 2604B, 2612B, 2614B, 2634B, 2636B. Set bit indicates one or more enabled bits for the SMU B questionable register are set.

Bit B2 decimal value: 4

Binary value: 0000 0100

B3 to B15

Not used

Not applicable.

As an example, to set bit B1 of the questionable status instrument summary enable register, set status.questionable.instrument.enable = status.questionable.instrument.SMUA.

In addition to the above constants, questionableRegister can be set to the numeric equivalent of the bit to set. To set more than one bit of the register, set operationRegister to the sum of their decimal weights. For example, to set bits B1 and B2, set questionableRegister to 6 (which is the sum of 2 + 4).

Example

status.questionable.instrument.enable = status.questionable.instrument.SMUA

Uses a constant to set the SMUA bit of the questionable status instrument summary enable register.

Also see

Questionable Status Registers

status.questionable.*

status.questionable.instrument.smuX.*

This attribute contains the questionable status SMU X summary register set.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute

- -

- -

- -

- -

.condition (R)

Yes

Not applicable

Not saved

Not applicable

.enable (RW)

Yes

Status reset

Not saved

0

.event (R)

Yes

Status reset

Not saved

0

.ntr (RW)

Yes

Status reset

Not saved

0

.ptr (RW)

Yes

Status reset

Not saved

4864 (All bits set)

Usage

questionableRegister = status.questionable.instrument.smuX.condition

questionableRegister = status.questionable.instrument.smuX.enable

questionableRegister = status.questionable.instrument.smuX.event

questionableRegister = status.questionable.instrument.smuX.ntr

questionableRegister = status.questionable.instrument.smuX.ptr

status.questionable.instrument.smuX.enable = questionableRegister

status.questionable.instrument.smuX.ntr = questionableRegister

status.questionable.instrument.smuX.ptr = questionableRegister

questionableRegister

The status of the questionable status SMU X summary register; a zero (0) indicates no bits set (also send 0 to clear all bits); other values indicate various bit settings

X

Source-measure unit (SMU) channel (for example status.questionable.instrument.smua.enable applies to SMU channel A)

Details

These attributes are used to read or write to the questionable status instrument SMU X summary registers. Reading a status register returns a value. The binary equivalent of the returned value indicates which register bits are set. The least significant bit of the binary number is bit B0, and the most significant bit is bit B15. For example, if a value of 7.68000e+02 (which is 768) is read as the value of the condition register, the binary equivalent is 0000 0011 0000 0000. This value indicates that bit B8 and bit B9 are set.

B15

B14

B13

B12

B11

B10

B9

B8

B7

B6

B5

B4

B3

B2

B1

B0

**

>

>

>

>

>

>

>

>

>

>

>

>

>

>

*

0

0

0

0

0

0

1

1

0

0

0

0

0

0

0

0

* Least significant bit
** Most significant bit

For information about .condition, .enable, .event, .ntr, and .ptr registers, refer to Status register set contents and Enable and transition registers. The individual bits of this register are defined in the following table.

Bit

Value

Description

B0 to B7

Not used

Not applicable.

B8

status.questionable.instrument.smuX.CALIBRATION

status.questionable.instrument.smuX.CAL

Set bit indicates that the calibration constants stored in nonvolatile memory were corrupted and could not be loaded when the instrument powered up.

Bit B8 decimal value: 256

B9

status.questionable.instrument.smuX.UNSTABLE_OUTPUT

status.questionable.instrument.smuX.UO

Set bit indicates that an unstable output condition was detected.

Bit B9 decimal value: 512

B10 to B11

Not used

Not applicable

B12

status.questionable.instrument.smuX.OVER_TEMPERATURE

status.questionable.instrument.smuX.OTEMP

Set bit indicates that an over temperature condition was detected.

Bit B12 decimal value: 4,096

B13 to B15

Not used

Not applicable.

As an example, to set bit B8 of the questionable status SMU A summary enable register, set status.questionable.instrument.smua.enable = status.questionable.instrument.smua.CAL.

In addition to the above constants, questionableRegister can be set to the numeric equivalent of the bit to set. To set more than one bit of the register, set questionableRegister to the sum of their decimal weights. For example, to set bits B8 and B9, set questionableRegister to 768 (which is the sum of 256 + 512).

Bit

B7

B6

B5

B4

B3

B2

B1

B0

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

128

64

32

16

8

4

2

1

Weights

(27)

(26)

(25)

(24)

(23)

(22)

(21)

(20)

Bit

B15

B14

B13

B12

B11

B10

B9

B8

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

32,768

16,384

8,192

4,096

2,048

1,024

512

256

Weights

(215)

(214)

(213)

(212)

(211)

(210)

(29)

(28)

Example

questionableRegister = status.questionable.instrument.smua.CAL +

status.questionable.instrument.smua.UO

status.questionable.instrument.smua.enable = questionableRegister

Uses constants to set bit B8 and bit B9 of the questionable status SMU A summary enable register.

Also see

Questionable Status Registers

status.operation.*

status.questionable.over_temperature.*

This attribute contains the questionable status over temperature summary register set.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute

- -

- -

- -

- -

.condition (R)

Yes

Not applicable

Not saved

Not applicable

.enable (RW)

Yes

Status reset

Not saved

0

.event (R)

Yes

Status reset

Not saved

0

.ntr (RW)

Yes

Status reset

Not saved

0

.ptr (RW)

Yes

Status reset

Not saved

2601B, 2611B, 2635B: 2 (All bits set)

2602B, 2604B, 2612B, 2614B, 2634B, 2636B: 6 (All bits set)

Usage

questionableRegister = status.questionable.over_temperature.condition

questionableRegister = status.questionable.over_temperature.enable

questionableRegister = status.questionable.over_temperature.event

questionableRegister = status.questionable.over_temperature.ntr

questionableRegister = status.questionable.over_temperature.ptr

status.questionable.over_temperature.enable = questionableRegister

status.questionable.over_temperature.ntr = questionableRegister

status.questionable.over_temperature.ptr = questionableRegister

operationRegister

The status of the questionable status over temperature summary register; a zero (0) indicates no bits set (also send 0 to clear all bits); other values indicate various bit settings

Details

These attributes are used to read or write to the questionable status over temperature summary registers. Reading a status register returns a value. The binary equivalent of the returned value indicates which register bits are set. The least significant bit of the binary number is bit B0, and the most significant bit is bit B15.

For information about .condition, .enable, .event, .ntr, and .ptr registers, refer to Status register set contents and Enable and transition registers. The individual bits of this register are defined in the following table.

Bit

Value

Description

B0

Not used

Not applicable.

B1

status.questionable.over_temperature.SMUA

Set bit indicates that an over temperature condition was detected on SMU A.

Bit B1 decimal value: 2

Binary value: 0000 0010

B2

status.questionable.over_temperature.SMUB

This bit is only available on 2602B, 2604B, 2612B, 2614B, 2634B, 2636B. Set bit indicates that an over temperature condition was detected on SMU B.

Bit B2 decimal value: 4

Binary value: 0000 0100

B3 to B15

Not used

Not applicable.

As an example, to set bit B1 of the questionable status over temperature summary enable register, set status.questionable.instrument.enable = status.questionable.instrument.SMUA.

In addition to the above constants, questionableRegister can be set to the numeric equivalent of the bit to set. To set more than one bit of the register, set operationRegister to the sum of their decimal weights. For example, to set bits B1 and B2, set questionableRegister to 6 (which is the sum of 2 + 4).

Example

status.questionable.over_temperature.enable = status.questionable.over_temperature.SMUA

Uses a constant to set the SMU A bit in the questionable status over temperature summary enable register.

Also see

Questionable Status Registers

status.questionable.*

status.questionable.unstable_output.*

This attribute contains the questionable status unstable output summary register set.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute

- -

- -

- -

- -

.condition (R)

Yes

Not applicable

Not saved

Not applicable

.enable (RW)

Yes

Status reset

Not saved

0

.event (R)

Yes

Status reset

Not saved

0

.ntr (RW)

Yes

Status reset

Not saved

0

.ptr (RW)

Yes

Status reset

Not saved

2601B, 2611B, 2635B: 2 (All bits set)

2602B, 2604B, 2612B, 2614B, 2634B, 2636B: 6 (All bits set)

Usage

questionableRegister = status.questionable.unstable_output.condition

questionableRegister = status.questionable.unstable_output.enable

questionableRegister = status.questionable.unstable_output.event

questionableRegister = status.questionable.unstable_output.ntr

questionableRegister = status.questionable.unstable_output.ptr

status.questionable.unstable_output.enable = questionableRegister

status.questionable.unstable_output.ntr = questionableRegister

status.questionable.unstable_output.ptr = questionableRegister

operationRegister

The status of the questionable status unstable output summary register; a zero (0) indicates no bits set (also send 0 to clear all bits); other values indicate various bit settings

Details

These attributes are used to read or write to the questionable status unstable output summary registers. Reading a status register returns a value. The binary equivalent of the returned value indicates which register bits are set. The least significant bit of the binary number is bit B0, and the most significant bit is bit B15.

For information about .condition, .enable, .event, .ntr, and .ptr registers, refer to Status register set contents and Enable and transition registers. The individual bits of this register are defined in the following table.

Bit

Value

Description

B0

Not used

Not applicable.

B1

status.questionable.unstable_output.SMUA

Set bit indicates that an unstable output condition was detected on SMU A.

Bit B1 decimal value: 2

Binary value: 0000 0010

B2

status.questionable.unstable_output.SMUB

This bit is only available on 2602B, 2604B, 2612B, 2614B, 2634B, 2636B. Set bit indicates that an unstable output condition was detected on SMU B.

Bit B2 decimal value: 4

Binary value: 0000 0100

B3 to B15

Not used

Not applicable.

As an example, to set bit B1 of the questionable status unstable output summary enable register, set status.questionable.instrument.enable = status.questionable.instrument.SMUA.

In addition to the above constants, questionableRegister can be set to the numeric equivalent of the bit to set. To set more than one bit of the register, set operationRegister to the sum of their decimal weights. For example, to set bits B1 and B2, set questionableRegister to 6 (which is the sum of 2 + 4).

Example

status.questionable.unstable_output.enable = status.questionable.unstable_output.SMUA

Uses a constant to set the SMU A bit in the questionable status unstable output summary enable register bit.

Also see

Questionable Status Registers

status.questionable.*

status.request_enable

This attribute stores the service request (SRQ) enable register.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Status reset

Not saved

0

Usage

requestSRQEnableRegister = status.request_enable

status.request_enable = requestSRQEnableRegister

requestSRQEnableRegister

The status of the service request (SRQ) enable register; a zero (0) indicates no bits set (also send 0 to clear all bits); other values indicate various bit settings

Details

This attribute is used to read or write to the service request enable register. Reading the service request enable register returns a value. The binary equivalent of the value of this attribute indicates which register bits are set. In the binary equivalent, the least significant bit is bit B0, and the most significant bit is bit B7. For example, if a value of 1.29000e+02 (which is 129) is read as the value of this register, the binary equivalent is 1000 0001. This value indicates that bit B0 and bit B7 are set.

B7

B6

B5

B4

B3

B2

B1

B0

**

>

>

>

>

>

>

*

1

0

0

0

0

0

0

1

* Least significant bit
** Most significant bit

For information about .condition, .enable, .event, .ntr, and .ptr registers, refer to Status register set contents and Enable and transition registers. The individual bits of this register are defined in the following table.

Bit

Value

B0

status.MEASUREMENT_SUMMARY_BIT

status.MSB

Set summary bit indicates that an enabled event in the Measurement Event Register has occurred.

Bit B0 decimal value: 1

B1

status.SYSTEM_SUMMARY_BIT

status.SSB

This bit is only available on 2601B, 2602B, 2611B, 2612B, 2635B, and 2636B. Set summary bit indicates that an enabled event in the System Summary Register has occurred.

Bit B1 decimal value: 2

B2

status.ERROR_AVAILABLE

status.EAV

Set summary bit indicates that an error or status message is present in the error queue.

Bit B2 decimal value: 4

B3

status.QUESTIONABLE_SUMMARY_BIT

status.QSB

Set summary bit indicates that an enabled event in the Questionable Status Register has occurred.

Bit B3 decimal value: 8

B4

status.MESSAGE_AVAILABLE

status.MAV

Set summary bit indicates that a response message is present in the output queue.

Bit B4 decimal value: 16

B5

status.EVENT_SUMMARY_BIT

status.ESB

Set summary bit indicates that an enabled event in the Standard Event Status Register has occurred.

Bit B5 decimal value: 32

B6

Not used

B7

status.OPERATION_SUMMARY_BIT

status.OSB

Set summary bit indicates that an enabled event in the Operation Status Register has occurred.

Bit B7 decimal value: 128

As an example, to set bit B0 of the service request enable register, set status.request_enable = status.MSB.

In addition to the above values, requestSRQEnableRegister can be set to the numeric equivalent of the bit to set. To set more than one bit of the register, set requestSRQEnableRegister to the sum of their decimal weights. For example, to set bits B0 and B7, set requestSRQEnableRegister to 129 (1 + 128).

Bit

B7

B6

B5

B4

B3

B2

B1

B0

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

128

64

32

16

8

4

2

1

Weights

(27)

(26)

(25)

(24)

(23)

(22)

(21)

(20)

Example 1

requestSRQEnableRegister = status.MSB + status.OSB

status.request_enable = requestSRQEnableRegister

Uses constants to set the MSB and OSB bits of the service request (SRQ) enable register.

Example 2

-- decimal 129 = binary 10000001

requestSRQEnableRegister = 129

status.request_enable = requestSRQEnableRegister

Uses a decimal value to set the MSB and OSB bits of the service request (SRQ) enable register.

Also see

Status byte and service request (SRQ)

status.condition

status.system.*

status.request_event

This attribute stores the service request (SRQ) event register.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

Yes

Not applicable

Not saved

0

Usage

requestSRQEventRegister = status.request_event

requestSRQEventRegister

The status of the request event register; a zero (0) indicates no bits set; other values indicate various bit settings

Details

This attribute is used to read the service request event register, which is returned as a numeric value. Reading this register returns a value. The binary equivalent of the value of this attribute indicates which register bits are set. In the binary equivalent, the least significant bit is bit B0, and the most significant bit is bit B7. For example, if a value of 1.29000e+02 (which is 129) is read as the value of this register, the binary equivalent is 1000 0001. This value indicates that bit B0 and bit B7 are set.

B7

B6

B5

B4

B3

B2

B1

B0

**

>

>

>

>

>

>

*

1

0

0

0

0

0

0

1

* Least significant bit
** Most significant bit

The returned value can indicate one or more status events occurred.

For information about .condition, .enable, .event, .ntr, and .ptr registers, refer to Status register set contents and Enable and transition registers. The individual bits of this register are defined in the following table.

Bit

Value and description

B0

status.MEASUREMENT_SUMMARY_BIT

status.MSB

Set summary bit indicates that an enabled event in the Measurement Event Register has occurred.

Bit B0 decimal value: 1

B1

status.SYSTEM_SUMMARY_BIT

status.SSB

This bit is only available on 2601B, 2602B, 2611B, 2612B, 2635B, and 2636B. Set summary bit indicates that an enabled event in the System Summary Register has occurred.

Bit B1 decimal value: 2

B2

status.ERROR_AVAILABLE

status.EAV

Set summary bit indicates that an error or status message is present in the error queue.

Bit B2 decimal value: 4

B3

status.QUESTIONABLE_SUMMARY_BIT

status.QSB

Set summary bit indicates that an enabled event in the Questionable Status Register has occurred.

Bit B3 decimal value: 8

B4

status.MESSAGE_AVAILABLE

status.MAV

Set summary bit indicates that a response message is present in the output queue.

Bit B4 decimal value: 16

B5

status.EVENT_SUMMARY_BIT

status.ESB

Set summary bit indicates that an enabled event in the Standard Event Status Register has occurred.

Bit B5 decimal value: 32

B6

Not used

B7

status.OPERATION_SUMMARY_BIT

status.OSB

Set summary bit indicates that an enabled event in the Operation Status Register has occurred.

Bit B7 decimal value: 128

In addition to the above constants, requestEventRegister can be set to the decimal equivalent of the bits set. When more than one bit of the register is set, requestEventRegister contains the sum of their decimal weights. For example, if 129 is returned, bits B0 and B7 are set (1 + 128).

Bit

B7

B6

B5

B4

B3

B2

B1

B0

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

128

64

32

16

8

4

2

1

Weights

(27)

(26)

(25)

(24)

(23)

(22)

(21)

(20)

Example

requestEventRegister = status.request_event

print(requestEventRegister)

Reads the status request event register.

Sample output:

1.29000e+02

Converting this output (129) to its binary equivalent yields 1000 0001.

Therefore, this output indicates that the set bits of the status request event register are presently B0 (MSB) and B7 (OSB).

Also see

status.condition

status.system.*

Status byte and service request (SRQ)

status.reset()

This function resets all bits in the status model.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

status.reset()

Details

This function clears all status data structure registers (enable, event, NTR, and PTR) to their default values. For information about .condition, .enable, .event, .ntr, and .ptr registers, refer to Status register set contents and Enable and transition registers.

Example

status.reset()

Resets the instrument status model.

Also see

Status model

status.standard.*

These attributes manage the standard event status register set of the status model.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute

- -

- -

- -

- -

.condition (R)

Yes

Not applicable

Not saved

Not applicable

.enable (RW)

Yes

Status reset

Not saved

0

.event (R)

Yes

Status reset

Not saved

0

.ntr (RW)

Yes

Status reset

Not saved

0

.ptr (RW)

Yes

Status reset

Not saved

253 (All bits set)

Usage

standardRegister = status.standard.condition

standardRegister = status.standard.enable

standardRegister = status.standard.event

standardRegister = status.standard.ntr

standardRegister = status.standard.ptr

status.standard.enable = standardRegister

status.standard.ntr = standardRegister

status.standard.ptr = standardRegister

standardRegister

The status of the standard event status register; a zero (0) indicates no bits set (also send 0 to clear all bits); other values indicate various bit settings

Details

These attributes are used to read or write to the standard event status registers. Reading a status register returns a value. The binary equivalent of the returned value indicates which register bits are set. The least significant bit of the binary number is bit B0, and the most significant bit is bit B15. For example, if a value of 1.29000e+02 (which is 129) is read as the value of the condition register, the binary equivalent is 0000 0000 1000 0001. This value indicates that bit B0 and bit B7 are set.

B15

B14

B13

B12

B11

B10

B9

B8

B7

B6

B5

B4

B3

B2

B1

B0

**

>

>

>

>

>

>

>

>

>

>

>

>

>

>

*

0

0

0

0

0

0

0

0

1

0

0

0

0

0

0

1

* Least significant bit
** Most significant bit

For information about .condition, .enable, .event, .ntr, and .ptr registers, refer to Status register set contents and Enable and transition registers. The individual bits of this register are defined in the following table.

Bit

Value

B0

status.standard.OPERATION_COMPLETE

status.standard.OPC

Set bit indicates that all pending selected instrument operations are completed and the instrument is ready to accept new commands. The bit is set in response to an *OPC command. The opc() function can be used in place of the *OPC command.

Bit B0 decimal value: 1

B1

Not used

B2

status.standard.QUERY_ERROR

status.standard.QYE

Set bit indicates that you attempted to read data from an empty Output Queue.

Bit B2 decimal value: 4

B3

status.standard.DEVICE_DEPENDENT_ERROR

status.standard.DDE

Set bit indicates that an instrument operation did not execute properly due to some internal condition.

Bit B3 decimal value: 8

B4

status.standard.EXECUTION_ERROR

status.standard.EXE

Set bit indicates that the instrument detected an error while trying to execute a command.

Bit B4 decimal value: 16

B5

status.standard.COMMAND_ERROR

status.standard.CME

Set bit indicates that a command error has occurred. Command errors include:

IEEE Std 488.2 syntax error: Instrument received a message that does not follow the defined syntax of the IEEE Std 488.2 standard.

Semantic error: Instrument received a command that was misspelled or received an optional IEEE Std 488.2 command that is not implemented.

GET error: The instrument received a Group Execute Trigger (GET) inside a program message.

Bit B5 decimal value: 32

B6

status.standard.USER_REQUEST

status.standard.URQ

Set bit indicates that the LOCAL key on the instrument front panel was pressed.

Bit B6 decimal value: 64

B7

status.standard.POWER_ON

status.standard.PON

Set bit indicates that the instrument has been turned off and turned back on since the last time this register has been read.

Bit B7 decimal value: 128

B8 to B15

Not used

As an example, to set bit B0 of the standard event status enable register, set status.standard.enable = status.standard.OPC.

In addition to the above constants, standardRegister can be set to the numeric equivalent of the bit to set. To set more than one bit of the register, set standardRegister to the sum of their decimal weights. For example, to set bits B0 and B4, set standardRegister to 17 (which is the sum of 1 + 16).

Bit

B7

B6

B5

B4

B3

B2

B1

B0

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

128

64

32

16

8

4

2

1

Weights

(27)

(26)

(25)

(24)

(23)

(22)

(21)

(20)

Example 1

standardRegister = status.standard.OPC + status.standard.EXE

status.standard.enable = standardRegister

Uses constants to set the OPC and EXE bits of the standard event status enable register.

Example 2

-- decimal 17 = binary 0001 0001

standardRegister = 17

status.standard.enable = standardRegister

Uses the decimal value to set the OPC and EXE bits of the standard event status enable register.

Also see

Standard Event Register

status.system.*

These attributes manage the TSP-LinkTM system summary register of the status model for nodes 1 through 14. These commands are not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute

- -

- -

- -

- -

.condition (R)

Yes

Not applicable

Not saved

Not applicable

.enable (RW)

Yes

Status reset

Not saved

0

.event (R)

Yes

Status reset

Not saved

0

.ntr (RW)

Yes

Status reset

Not saved

0

.ptr (RW)

Yes

Status reset

Not saved

32,767 (All bits set)

Usage

enableRegister = status.system.condition

enableRegister = status.system.enable

enableRegister = status.system.event

enableRegister = status.system.ntr

enableRegister = status.system.ptr

status.system.enable = enableRegister

status.system.ntr = enableRegister

status.system.ptr = enableRegister

enableRegister

The status of the system summary register; a zero (0) indicates no bits set; other values indicate various bit settings

Details

In an expanded system (TSP-Link), these attributes are used to read or write to the system summary registers. They are set using a constant or a numeric value but are returned as a numeric value. The binary equivalent of the value indicates which register bits are set. In the binary equivalent, the least significant bit is bit B0, and the most significant bit is bit B15. For example, if a value of 1.29000e+02 (which is 129) is read as the value of the condition register, the binary equivalent is 0000 0000 1000 0001. This value indicates that bit B0 and bit B7 are set.

B15

B14

B13

B12

B11

B10

B9

B8

B7

B6

B5

B4

B3

B2

B1

B0

**

>

>

>

>

>

>

>

>

>

>

>

>

>

>

*

0

0

0

0

0

0

0

0

1

0

0

0

0

0

0

1

* Least significant bit
** Most significant bit

For information about .condition, .enable, .event, .ntr, and .ptr registers, refer to Status register set contents and Enable and transition registers. The individual bits of this register are defined in the following table.

Bit

Value

Decimal value

B0

status.system.EXTENSION_BIT

status.system.EXT

1

B1

status.system.NODE1

2

B2

status.system.NODE2

4

B3

status.system.NODE3

8

B4

status.system.NODE4

16

B5

status.system.NODE5

32

B6

status.system.NODE6

64

B7

status.system.NODE7

128

B8

status.system.NODE8

256

B9

status.system.NODE9

512

B10

status.system.NODE10

1,024

B11

status.system.NODE11

2,048

B12

status.system.NODE12

4,096

B13

status.system.NODE13

8,192

B14

status.system.NODE14

16,384

B15

Not used

Not applicable

As an example, to set bit B0 of the system summary status enable register, set status.system.enable = status.system.enable.EXT.

In addition to the above constants, enableRegister can be set to the decimal value of the bit to set. To set more than one bit of the register, set enableRegister to the sum of their decimal values. For example, to set bits B11 and B14, set enableRegister to 18,432 (which is the sum of 2,048 + 16,384).

Bit

B7

B6

B5

B4

B3

B2

B1

B0

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

128

64

32

16

8

4

2

1

Weights

(27)

(26)

(25)

(24)

(23)

(22)

(21)

(20)

Bit

B15

B14

B13

B12

B11

B10

B9

B8

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

32,768

16,384

8,192

4,096

2,048

1,024

512

256

Weights

(215)

(214)

(213)

(212)

(211)

(210)

(29)

(28)

Example 1

enableRegister = status.system.NODE11 + status.system.NODE14

status.system.enable = enableRegister

Uses constants to set bits B11 and B14 of the system summary enable register.

Example 2

-- decimal 18432 = binary 0100 1000 0000 0000

enableRegister = 18432

status.system.enable = enableRegister

Uses the decimal value to set bits B11 and B14 of the system summary enable register.

Also see

status.system2.*

System summary and standard event registers

status.system2.*

These attributes manage the TSP-LinkTM system summary register of the status model for nodes 15 through 28. These commands are not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute

- -

- -

- -

- -

.condition (R)

Yes

Not applicable

Not saved

Not applicable

.enable (RW)

Yes

Status reset

Not saved

0

.event (R)

Yes

Status reset

Not saved

0

.ntr (RW)

Yes

Status reset

Not saved

0

.ptr (RW)

Yes

Status reset

Not saved

32,767 (All bits set)

Usage

enableRegister = status.system2.condition

enableRegister = status.system2.enable

enableRegister = status.system2.event

enableRegister = status.system2.ntr

enableRegister = status.system2.ptr

status.system2.enable = enableRegister

status.system2.ntr = enableRegister

status.system2.ptr = enableRegister

enableRegister

The status of the system summary 2 register; a zero (0) indicates no bits set; other values indicate various bit settings

Details

In an expanded system (TSP-Link), these attributes are used to read or write to the system summary registers. They are set using a constant or a numeric value but are returned as a numeric value. The binary equivalent of the value indicates which register bits are set. In the binary equivalent, the least significant bit is bit B0, and the most significant bit is bit B15. For example, if a value of 1.29000e+02 (which is 129) is read as the value of the condition register, the binary equivalent is 0000 0000 1000 0001. This value indicates that bit B0 and bit B7 are set.

B15

B14

B13

B12

B11

B10

B9

B8

B7

B6

B5

B4

B3

B2

B1

B0

**

>

>

>

>

>

>

>

>

>

>

>

>

>

>

*

0

0

0

0

0

0

0

0

1

0

0

0

0

0

0

1

* Least significant bit
** Most significant bit

For information about .condition, .enable, .event, .ntr, and .ptr registers, refer to Status register set contents and Enable and transition registers. The individual bits of this register are defined in the following table.

Bit

Value

Decimal value

B0

status.system2.EXTENSION_BIT

status.system2.EXT

1

B1

status.system2.NODE15

2

B2

status.system2.NODE16

4

B3

status.system2.NODE17

8

B4

status.system2.NODE18

16

B5

status.system2.NODE19

32

B6

status.system2.NODE20

64

B7

status.system2.NODE21

128

B8

status.system2.NODE22

256

B9

status.system2.NODE23

512

B10

status.system2.NODE24

1,024

B11

status.system2.NODE25

2,048

B12

status.system2.NODE26

4,096

B13

status.system2.NODE27

8,192

B14

status.system2.NODE28

16,384

B15

Not used

Not applicable

As an example, to set bit B0 of the system summary 2 enable register, set status.system2.enable = status.system2.EXT.

In addition to the above constants, enableRegister can be set to the decimal value of the bit to set. To set more than one bit of the register, set enableRegister to the sum of their decimal values. For example, to set bits B11 and B14, set enableRegister to 18,432 (which is the sum of 2,048 + 16,384).

Bit

B7

B6

B5

B4

B3

B2

B1

B0

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

128

64

32

16

8

4

2

1

Weights

(27)

(26)

(25)

(24)

(23)

(22)

(21)

(20)

Bit

B15

B14

B13

B12

B11

B10

B9

B8

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

32,768

16,384

8,192

4,096

2,048

1,024

512

256

Weights

(215)

(214)

(213)

(212)

(211)

(210)

(29)

(28)

Example 1

enableRegister = status.system2.NODE25 + status.system2.NODE28

status.system2.enable = enableRegister

Uses constants to set bits B11 and B14 of the system summary 2 enable register.

Example 2

-- decimal 18432 = binary 0100 1000 0000 0000

enableRegister = 18432

status.system2.enable = enableRegister

Uses the decimal value to set bits B11 and B14 of the system summary 2 enable register.

Also see

status.system.*

status.system3.*

System summary and standard event registers

status.system3.*

These attributes manage the TSP-LinkTM system summary register of the status model for nodes 29 through 42. These commands are not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute

- -

- -

- -

- -

.condition (R)

Yes

Not applicable

Not saved

Not applicable

.enable (RW)

Yes

Status reset

Not saved

0

.event (R)

Yes

Status reset

Not saved

0

.ntr (RW)

Yes

Status reset

Not saved

0

.ptr (RW)

Yes

Status reset

Not saved

32,767 (All bits set)

Usage

enableRegister = status.system3.condition

enableRegister = status.system3.enable

enableRegister = status.system3.event

enableRegister = status.system3.ntr

enableRegister = status.system3.ptr

status.system3.enable = enableRegister

status.system3.ntr = enableRegister

status.system3.ptr = enableRegister

enableRegister

The status of the system summary 3 register; a zero (0) indicates no bits set; other values indicate various bit settings

Details

In an expanded system (TSP-Link), these attributes are used to read or write to the system summary registers. They are set using a constant or a numeric value but are returned as a numeric value. The binary equivalent of the value indicates which register bits are set. In the binary equivalent, the least significant bit is bit B0 and the most significant bit is bit B15. For example, if a value of 1.29000e+02 (which is 129) is read as the value of the condition register, the binary equivalent is 0000 0000 1000 0001. This value indicates that bit B0 and bit B7 are set.

B15

B14

B13

B12

B11

B10

B9

B8

B7

B6

B5

B4

B3

B2

B1

B0

**

>

>

>

>

>

>

>

>

>

>

>

>

>

>

*

0

0

0

0

0

0

0

0

1

0

0

0

0

0

0

1

* Least significant bit
** Most significant bit

For information about .condition, .enable, .event, .ntr, and .ptr registers, refer to Status register set contents and Enable and transition registers. The individual bits of this register are defined in the following table.

Bit

Value

Decimal value

B0

status.system3.EXTENSION_BIT

status.system3.EXT

1

B1

status.system3.NODE29

2

B2

status.system3.NODE30

4

B3

status.system3.NODE31

8

B4

status.system3.NODE32

16

B5

status.system3.NODE33

32

B6

status.system3.NODE34

64

B7

status.system3.NODE35

128

B8

status.system3.NODE36

256

B9

status.system3.NODE37

512

B10

status.system3.NODE38

1,024

B11

status.system3.NODE39

2,048

B12

status.system3.NODE40

4,096

B13

status.system3.NODE41

8,192

B14

status.system3.NODE42

16,384

B15

Not used

Not applicable

As an example, to set bit B0 of the system summary 3 enable register, set status.system3.enable = status.system3.EXT.

In addition to the above constants, enableRegister can be set to the decimal value of the bit to set. To set more than one bit of the register, set enableRegister to the sum of their decimal values. For example, to set bits B11 and B14, set enableRegister to 18,432 (which is the sum of 2,048 + 16,384).

Bit

B7

B6

B5

B4

B3

B2

B1

B0

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

128

64

32

16

8

4

2

1

Weights

(27)

(26)

(25)

(24)

(23)

(22)

(21)

(20)

Bit

B15

B14

B13

B12

B11

B10

B9

B8

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

32,768

16,384

8,192

4,096

2,048

1,024

512

256

Weights

(215)

(214)

(213)

(212)

(211)

(210)

(29)

(28)

Example 1

enableRegister = status.system3.NODE39 + status.system3.NODE42

status.system3.enable = enableRegister

Uses constants to set bits B11 and B14 of the system summary 3 enable register.

Example 2

-- decimal 18432 = binary 0100 1000 0000 0000

enableRegister = 18432

status.system3.enable = enableRegister

Uses the decimal value to set bits B11 and B14 of the system summary 3 enable register.

Also see

status.system2.*

status.system4.*

System summary and standard event registers

status.system4.*

These attributes manage the TSP-LinkTM system summary register of the status model for nodes 43 through 56. These commands are not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute

- -

- -

- -

- -

.condition (R)

Yes

Not applicable

Not saved

Not applicable

.enable (RW)

Yes

Status reset

Not saved

0

.event (R)

Yes

Status reset

Not saved

0

.ntr (RW)

Yes

Status reset

Not saved

0

.ptr (RW)

Yes

Status reset

Not saved

32,767 (All bits set)

Usage

enableRegister = status.system4.condition

enableRegister = status.system4.enable

enableRegister = status.system4.event

enableRegister = status.system4.ntr

enableRegister = status.system4.ptr

status.system4.enable = enableRegister

status.system4.ntr = enableRegister

status.system4.ptr = enableRegister

enableRegister

The status of the system summary 4 register; a zero (0) indicates no bits set; other values indicate various bit settings

Details

In an expanded system (TSP-Link), these attributes are used to read or write to the system summary registers. They are set using a constant or a numeric value but are returned as a numeric value. The binary equivalent of the value indicates which register bits are set. In the binary equivalent, the least significant bit is bit B0, and the most significant bit is bit B15. For example, if a value of 1.29000e+02 (which is 129) is read as the value of the condition register, the binary equivalent is 0000 0000 1000 0001. This value indicates that bit B0 and bit B7 are set.

B15

B14

B13

B12

B11

B10

B9

B8

B7

B6

B5

B4

B3

B2

B1

B0

**

>

>

>

>

>

>

>

>

>

>

>

>

>

>

*

0

0

0

0

0

0

0

0

1

0

0

0

0

0

0

1

* Least significant bit
** Most significant bit

For information about .condition, .enable, .event, .ntr, and .ptr registers, refer to Status register set contents and Enable and transition registers. The individual bits of this register are defined in the following table.

Bit

Value

Decimal value

B0

status.system4.EXTENSION_BIT

status.system4.EXT

1

B1

status.system4.NODE43

2

B2

status.system4.NODE44

4

B3

status.system4.NODE45

8

B4

status.system4.NODE46

16

B5

status.system4.NODE47

32

B6

status.system4.NODE48

64

B7

status.system4.NODE49

128

B8

status.system4.NODE50

256

B9

status.system4.NODE51

512

B10

status.system4.NODE52

1,024

B11

status.system4.NODE53

2,048

B12

status.system4.NODE54

4,096

B13

status.system4.NODE55

8,192

B14

status.system4.NODE56

16,384

B15

Not used

Not applicable

As an example, to set bit B0 of the system summary 4 enable register, set status.system4.enable = status.system4.enable.EXT.

In addition to the above constants, enableRegister can be set to the decimal value of the bit to set. To set more than one bit of the register, set enableRegister to the sum of their decimal values. For example, to set bits B11 and B14, set enableRegister to 18,432 (which is the sum of 2,048 + 16,384).

Bit

B7

B6

B5

B4

B3

B2

B1

B0

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

128

64

32

16

8

4

2

1

Weights

(27)

(26)

(25)

(24)

(23)

(22)

(21)

(20)

Bit

B15

B14

B13

B12

B11

B10

B9

B8

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

32,768

16,384

8,192

4,096

2,048

1,024

512

256

Weights

(215)

(214)

(213)

(212)

(211)

(210)

(29)

(28)

Example 1

enableRegister = status.system4.NODE53 + status.system4.NODE56

status.system2.enable = enableRegister

Uses constants to set bit B11 and bit B14 of the system summary 4 enable register.

Example 2

-- decimal 18432 = binary 0100 1000 0000 0000

enableRegister = 18432

status.system4.enable = enableRegister

Uses a decimal value to set bit B11 and bit B14 of the system summary 4 enable register.

Also see

status.system3.*

status.system5.*

System summary and standard event registers

status.system5.*

These attributes manage the TSP-LinkTM system summary register of the status model for nodes 57 through 64. These commands are not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute

- -

- -

- -

- -

.condition (R)

Yes

Not applicable

Not saved

Not applicable

.enable (RW)

Yes

Status reset

Not saved

0

.event (R)

Yes

Status reset

Not saved

0

.ntr (RW)

Yes

Status reset

Not saved

0

.ptr (RW)

Yes

Status reset

Not saved

510 (All bits set)

Usage

enableRegister = status.system5.condition

enableRegister = status.system5.enable

enableRegister = status.system5.event

enableRegister = status.system5.ntr

enableRegister = status.system5.ptr

status.system5.enable = enableRegister

status.system5.ntr = enableRegister

status.system5.ptr = enableRegister

enableRegister

The status of the system summary 5 register; a zero (0) indicates no bits set; other values indicate various bit settings

Details

In an expanded system (TSP-Link), these attributes are used to read or write to the system summary registers. They are set using a constant or a numeric value, but are returned as a numeric value. The binary equivalent of the value indicates which register bits are set. In the binary equivalent, the least significant bit is bit B0, and the most significant bit is bit B15. For example, if a value of 1.30000e+02 (which is 130) is read as the value of the condition register, the binary equivalent is 0000 0000 1000 0010. This value indicates that bit B1 and bit B7 are set.

B15

B14

B13

B12

B11

B10

B9

B8

B7

B6

B5

B4

B3

B2

B1

B0

**

>

>

>

>

>

>

>

>

>

>

>

>

>

>

*

0

0

0

0

0

0

0

0

1

0

0

0

0

0

1

0

* Least significant bit
** Most significant bit

For information about .condition, .enable, .event, .ntr, and .ptr registers, refer to Status register set contents and Enable and transition registers. The individual bits of this register are defined in the following table.

Bit

Value

Decimal value

B0

Not used

Not applicable

B1

status.system5.NODE57

2

B2

status.system5.NODE58

4

B3

status.system5.NODE59

8

B4

status.system5.NODE60

16

B5

status.system5.NODE61

32

B6

status.system5.NODE62

64

B7

status.system5.NODE63

128

B8

status.system5.NODE64

256

B9 to B15

Not used

Not applicable

As an example, to set bit B1 of the system summary 5 enable register, set status.system5.enable = status.system5.NODE57.

In addition to the above constants, enableRegister can be set to the numeric equivalent of the bit to set. To set more than one bit of the register, set enableRegister to the sum of their decimal weights. For example, to set bits B1 and B4, set enableRegister to 18 (which is the sum of 2 + 16).

Bit

B7

B6

B5

B4

B3

B2

B1

B0

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

128

64

32

16

8

4

2

1

Weights

(27)

(26)

(25)

(24)

(23)

(22)

(21)

(20)

Bit

B15

B14

B13

B12

B11

B10

B9

B8

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

32,768

16,384

8,192

4,096

2,048

1,024

512

256

Weights

(215)

(214)

(213)

(212)

(211)

(210)

(29)

(28)

Example 1

enableRegister = status.system5.NODE57 + status.system5.NODE60

status.system2.enable = enableRegister

Uses constants to set bits B1 and B4 of the system summary 5 enable register.

Example 2

-- decimal 18 = binary 0000 0000 0001 0010

enableRegister = 18

status.system5.enable = enableRegister

Uses the decimal value to set bits B1 and B4 of the system summary 5 enable register.

Also see

status.system4.*

System summary and standard event registers

SweepILinMeasureV()

This KISweep factory script function performs a linear current sweep with voltage measured at every step (point).

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

SweepILinMeasureV(smuX, starti, stopi, stime, points)

X

Source‑measure unit (SMU) channel (for example, smua refers to SMU channel A)

starti

Sweep start current in amperes

stopi

Sweep stop current in amperes

stime

Settling time in seconds; occurs after stepping the source and before making a measurement

points

Number of sweep points (must be = 2)

Details

Data for voltage measurements, current source values, and timestamps are stored in smuX.nvbuffer1.

If all parameters are omitted when this function is called, this function is executed with the parameters set to the default values.

Performs a linear current sweep with voltage measured at every step (point):

  1. Sets the SMU to output starti amperes, allows the source to settle for stime seconds, and then makes a voltage measurement.
  2. Sets the SMU to output the next amperes step, allows the source to settle for stime seconds, and then makes a voltage measurement.
  3. Repeats the above sequence until the voltage is measured on the stopi amperes step.

The linear step size is automatically calculated as follows:

step = (stopi – starti) / (points – 1)

SweepILinMeasureV()

Example

SweepILinMeasureV(smua, -1e-3, 1e-3, 0, 100)

This function performs a 100-point linear current sweep starting at -1 mA and stopping at +1 mA. Voltage is measured at every step (point) in the sweep. Because stime is set for 0 s, voltage is measured as quickly as possible after each current step.

Also see

KISweep factory script

SweepIListMeasureV()

This KISweep factory script function performs a current list sweep with voltage measured at every step (point).

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

SweepIListMeasureV(smuX, ilist, stime, points)

X

Source‑measure unit (SMU) channel (for example, smua refers to SMU channel A)

ilist

Arbitrary list of current source values; ilist = {value1, value2, ...valueN}

stime

Settling time in seconds; occurs after stepping the source and before making a measurement

points

Number of sweep points (must be = 2)

Details

Data for voltage measurements, current source values, and timestamps are stored in smuX.nvbuffer1.

If all parameters are omitted when this function is called, this function is executed with the parameters set to the default values.

Performs a current list sweep with voltage measured at every step (point):

  1. Sets the SMU to output ilist amperes value, allows the source to settle for stime seconds, and then performs a voltage measurement.
  2. Sets the SMU to output the next ilist step, allows the source to settle for stime seconds, and then performs a voltage measurement.
  3. Repeats the above sequence until the voltage is measured for the last amperes value. The last point in the list to be measured is points.

Example

testilist = {-100e-9, 100e-9, -1e-6, 1e-6, -1e-3, 1e-3}

 

SweepIListMeasureV(smua, testilist, 500e-3, 6)

This function performs a six‑point current list sweep starting at the first point in testilist. Voltage is measured at every step (point) in the sweep. The source is allowed to settle on each step for 500 ms before a measurement is performed.

Also see

KISweep factory script

SweepILogMeasureV()

This KISweep factory script function performs a logarithmic current sweep with voltage measured at every step (point).

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

SweepILogMeasureV(smuX, starti, stopi, stime, points)

X

Source‑measure unit (SMU) channel (for example, smua.reset() applies to SMU channel A)

starti

Sweep start current in amperes

stopi

Sweep stop current in amperes

stime

Settling time in seconds; occurs after stepping the source and before making a measurement

points

Number of sweep points (must be = 2)

Details

Data for voltage measurements, current source values, and timestamps are stored in smuX.nvbuffer1.

If all parameters are omitted when this function is called, this function is executed with the parameters set to the default values.

Performs a logarithmic current sweep with voltage measured at every step (point):

  1. Sets the SMU to output starti amperes value, allows the source to settle for stime seconds, and then performs a voltage measurement.
  2. Sets the SMU to output the next amperes step, allows the source to settle for stime seconds, and then performs a voltage measurement.
  3. Repeats the above sequence until the voltage is measured on the stopi amperes step.

The source level at each step (SourceStepLevel) is automatically calculated as follows:

MeasurePoint = The step point number for a measurement

For example, for a five-point sweep (points = 5), a measurement is performed at MeasurePoint 1, 2, 3, 4, and 5.

LogStepSize = (log10(stopi) – log10(starti)) / (points – 1)

LogStep = (MeasurePoint – 1) * (LogStepSize)

SourceStepLevel = antilog(LogStep) * starti

SweepILogMeasureV()

Example

SweepILogMeasureV(smua, 0.01, 0.1, 0.001, 5)

This function performs a five‑point linear current sweep starting at 10 mA and stopping at 100 mA. Voltage is measured at every step (point) in the sweep. The source is allowed to settle on each step for 1 ms before a measurement is made.

 

The following table contains log values and corresponding source levels for the five‑point logarithmic sweep:

MeasurePoint

LogStepSize

LogStep

SourceStepLevel

1

0.25

0.0

0.01 A

2

0.25

0.25

0.017783 A

3

0.25

0.5

0.031623 A

4

0.25

0.75

0.056234 A

5

0.25

1.0

0.1 A

 

Also see

KISweep factory script

SweepVLinMeasureI()

This KISweep factory script function performs a linear voltage sweep with current measured at every step (point).

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

SweepVLinMeasureI(smuX, startv, stopv, stime, points)

X

Source‑measure unit (SMU) channel (for example, smua.reset() applies to SMU channel A)

startv

Sweep start voltage in volts

stopv

Sweep stop voltage in volts

stime

Settling time in seconds; occurs after stepping the source and before making a measurement

points

Number of sweep points (must be = 2)

Details

Data for current measurements, voltage source values, and timestamps are stored in smuX.nvbuffer1.

If all parameters are omitted when this function is called, this function is executed with the parameters set to the default values.

Performs a linear voltage sweep with current measured at every step (point):

  1. Sets the SMU to output startv amperes, allows the source to settle for stime seconds, and then makes a current measurement.
  2. Sets the SMU to output the next amperes step, allows the source to settle for stime seconds, and then makes a voltage measurement.
  3. Repeats the above sequence until the voltage is measured on the stopv amperes step.

The linear step size is automatically calculated as follows:

step = (stopv – startv) / (points – 1)

SweepVLinMeasureI()

Example

SweepVLinMeasureI(smua, -1, 1, 1e-3, 1000)

This function performs a 1000-point linear voltage sweep starting at -1 V and stopping at +1 V. Current is measured at every step (point) in the sweep after a 1 ms source settling period.

Also see

KISweep factory script

SweepVListMeasureI()

This KISweep factory script function performs a voltage list sweep with current measured at every step (point).

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

SweepVListMeasureI(smuX, vlist, stime, points)

X

Source‑measure unit (SMU) channel (for example, smua.reset() applies to SMU channel A)

vlist

Arbitrary list of voltage source values; vlist = {value1, value2, ... valueN}

stime

Settling time in seconds; occurs after stepping the source and before making a measurement

points

Number of sweep points (must be = 2)

Details

Data for current measurements, voltage source values, and timestamps are stored in smuX.nvbuffer1.

If all parameters are omitted when this function is called, this function is executed with the parameters set to the default values.

Performs a voltage list sweep with current measured at every step (point):

  1. Sets the SMU to output vlist volts value, allows the source to settle for stime seconds, and then performs a current measurement.
  2. Sets the SMU to output the next vlist volts value, allows the source to settle for stime seconds, and then performs a current measurement.
  3. Repeats the above sequence until the current is measured for the last volts value. The last point in the list to be measured is points.

Example

myvlist = {-0.1, 0.1, -1, 1, -6, 6, -40, 40, 0, 0}

SweepVListMeasureI(smua, myvlist, 500E-3, 10)

This function performs a 10‑point voltage list sweep starting at the first point in myvlist. Current is measured at every step (point) in the sweep. The source is allowed to settle on each step for 500 ms before a measurement is performed.

Also see

KISweep factory script

SweepVLogMeasureI()

This KISweep factory script function performs a logarithmic voltage sweep with current measured at every step (point).

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

SweepVLogMeasureI(smuX, startv, stopv, stime, points)

X

Source‑measure unit (SMU) channel (for example, smua applies to SMU channel A)

startv

Sweep start voltage in volts

stopv

Sweep stop voltage in volts

stime

Settling time in seconds; occurs after stepping the source and before making a measurement

points

Number of sweep points (must be = 2)

Details

Data for current measurements, voltage source values, and timestamps are stored in smuX.nvbuffer1.

If all parameters are omitted when this function is called, this function is executed with the parameters set to the default values.

Performs a logarithmic voltage sweep with current measured at every step (point):

  1. Sets the SMU to output startv amperes, allows the source to settle for stime seconds, and then makes a current measurement.
  2. Sets the SMU to output the next volts step, allows the source to settle for stime seconds, and then makes a current measurement.
  3. Repeats the above sequence until the voltage is measured on the stopv volts step.

The source level at each step (SourceStepLevel) is automatically calculated as follows:

MeasurePoint = The step point number for a measurement

For example, for a five-point sweep (points = 5), a measurement is made at MeasurePoint 1, 2, 3, 4, and 5.

LogStepSize = (log10(stopi) – log10(starti)) / (points – 1)

LogStep = (MeasurePoint – 1) * (LogStepSize)

SourceStepLevel = antilog(LogStep) * startv

SweepVLogMeasureI()

Example

SweepVLogMeasureI(smua, 1, 10, 0.001, 5)

This function performs a five‑point logarithmic voltage sweep starting at 1 V and stopping at 10 V. Current is measured at every step (point) in the sweep after a 1 ms source settling period.

 

The following table contains log values and corresponding source levels for the five‑point logarithmic sweep:

 

MeasurePoint

LogStepSize

LogStep

SourceStepLevel

1

0.25

0.0

1.0000 V

2

0.25

0.25

1.7783 V

3

0.25

0.5

3.1623 V

4

0.25

0.75

5.6234 V

5

0.25

1.0

10.000 V

 

 

Also see

KISweep factory script

timer.measure.t()

This function measures the elapsed time since the timer was last reset.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

time = timer.measure.t()

time

The elapsed time in seconds (1 µs resolution)

Example 1

timer.reset()

-- (intervening code)

time = timer.measure.t()

print(time)

This example resets the timer and measures the time since the reset.

Output:

1.469077e+01

The output varies. The above output indicates that timer.measure.t() was executed 14.69077 seconds after timer.reset().

Example 2

beeper.enable = beeper.ON

beeper.beep(0.5, 2400)

print("reset timer")

timer.reset()

delay(0.5)

dt = timer.measure.t()

print("timer after delay:", dt)

beeper.beep(0.5, 2400)

Enable the beeper.

Emit a beep and set the beeper.

Reset the timer.

Set a delay.

Verify the duration of the delay before emitting another beep.

Output:

reset timer

timer after delay: 5.00e-01

Also see

timer.reset()

timer.reset()

This function resets the timer to zero (0) seconds.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

timer.reset()

Example

timer.reset()

-- (intervening code)

time = timer.measure.t()

print(time)

Resets the timer and then measures the time since the reset.

Output:

1.469077e+01

The above output indicates that timer.measure.t() was executed 14.69077 seconds after timer.reset().

Also see

timer.measure.t()

trigger.blender[N].clear()

This function clears the blender event detector and resets the overrun indicator of blender N.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

trigger.blender[N].clear()

N

The blender number: up to six

Details

This command sets the blender event detector to the undetected state and resets the overrun indicator of the event detector.

Example

trigger.blender[2].clear()

Clears the event detector for blender 2.

Also see

None

trigger.blender[N].EVENT_ID

This constant contains the trigger blender event number.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Constant

Yes

 

 

 

Usage

eventID = trigger.blender[N].EVENT_ID

eventID

Trigger event number

N

The blender number: up to six

Details

Set the stimulus of any trigger object to the value of this constant to have the trigger object respond to trigger events from this trigger blender.

Example

digio.trigger[1].stimulus = trigger.blender[2].EVENT_ID

Set the trigger stimulus of digital I/O trigger 1 to be controlled by the trigger blender 2 event.

Also see

None

trigger.blender[N].orenable

This attribute selects whether the blender performs OR operations or AND operations.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Instrument reset
Trigger blender N reset
Recall setup

Not saved

false (AND mode)

Usage

orenable = trigger.blender[N].orenable

trigger.blender[N].orenable = orenable

orenable

The type of operation:

  • OR operation: true
  • AND operation: false

N

The blender number: up to six

Details

This command selects whether the blender waits for any one event (OR) or waits for all selected events (AND) before signaling an output event.

Example

trigger.blender[1].orenable = true

trigger.blender[1].stimulus[1] = digio.trigger[3].EVENT_ID

trigger.blender[1].stimulus[2] = digio.trigger[5].EVENT_ID

Generate a trigger blender 1 event when a digital I/O trigger happens on line 3 or 5.

Also see

trigger.blender[N].reset()

trigger.blender[N].overrun

This attribute indicates whether or not an event was ignored because of the event detector state.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

Yes

Instrument reset
Trigger blender N clear
Trigger blender N reset

Not applicable

Not applicable

Usage

overrun = trigger.blender[N].overrun

overrun

Trigger blender overrun state: true or false

N

The blender number: up to six

Details

Indicates if an event was ignored because the event detector was already in the detected state when the event occurred. This is an indication of the state of the event detector that is built into the event blender itself.

This command does not indicate if an overrun occurred in any other part of the trigger model or in any other trigger object that is monitoring the event. It also is not an indication of an action overrun.

Example

print(trigger.blender[1].overrun)

If an event was ignored, the output is true.

If an event was not ignored, the output is false.

Also see

trigger.blender[N].reset()

trigger.blender[N].reset()

This function resets some of the trigger blender settings to their factory defaults.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

trigger.blender[N].reset()

N

The trigger event blender: up to six

Details

The trigger.blender[N].reset() function resets the following attributes to their factory defaults:

  • trigger.blender[N].orenable
  • trigger.blender[N].stimulus[M]

It also clears trigger.blender[N].overrun.

Example

trigger.blender[1].reset()

Resets the trigger blender 1 settings to factory defaults.

Also see

trigger.blender[N].orenable

trigger.blender[N].overrun

trigger.blender[N].stimulus[M]

trigger.blender[N].stimulus[M]

This attribute specifies the events that trigger the blender.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Trigger blender N reset

Not applicable

trigger.EVENT_NONE

Usage

eventID = trigger.blender[N].stimulus[M]

trigger.blender[N].stimulus[M] = eventID

eventID

The event that triggers the blender action; see Details

N

An integer representing the trigger event blender (up to six)

M

An integer representing the stimulus index (1 to 4)

Details

There are four stimulus inputs that can each select a different event. The eventID parameter can be the event ID of any trigger event.

Use zero to disable the blender input.

The eventID parameter may be one of the existing trigger event IDs shown in the following table.

Trigger event IDs*

Event ID

Event description

smuX.trigger.SWEEPING_EVENT_ID

Occurs when the source‑measure unit (SMU) transitions from the idle state to the arm layer of the trigger model

smuX.trigger.ARMED_EVENT_ID

Occurs when the SMU moves from the arm layer to the trigger layer of the trigger model

smuX.trigger.SOURCE_COMPLETE_EVENT_ID

Occurs when the SMU completes a source action

smuX.trigger.MEASURE_COMPLETE_EVENT_ID

Occurs when the SMU completes a measurement action

smuX.trigger.PULSE_COMPLETE_EVENT_ID

Occurs when the SMU completes a pulse

smuX.trigger.SWEEP_COMPLETE_EVENT_ID

Occurs when the SMU completes a sweep

smuX.trigger.IDLE_EVENT_ID

Occurs when the SMU returns to the idle state

digio.trigger[N].EVENT_ID

Occurs when an edge is detected on a digital I/O line

tsplink.trigger[N].EVENT_ID

Occurs when an edge is detected on a TSP‑Link line

lan.trigger[N].EVENT_ID

Occurs when the appropriate LXI trigger packet is received on LAN trigger object N

display.trigger.EVENT_ID

Occurs when the TRIG key on the front panel is pressed

trigger.EVENT_ID

Occurs when a *TRG command is received on the remote interface

GPIB only: Occurs when a GET bus command is received

USB only: Occurs when a USBTMC TRIGGER message is received

VXI-11 only: Occurs with the VXI-11 command device_trigger; reference the VXI-11 standard for additional details on the device trigger operation

trigger.blender[N].EVENT_ID

Occurs after a collection of events is detected

trigger.timer[N].EVENT_ID

Occurs when a delay expires

trigger.generator[N].EVENT_ID

Occurs when the trigger.generator[N].assert() function is executed

 

 

* Use the name of the trigger event ID to set the stimulus value rather than the numeric value. Using the name makes the code compatible for future upgrades (for example, if the numeric values must change when enhancements are added to the instrument).

Example

digio.trigger[3].mode = digio.TRIG_FALLING

digio.trigger[5].mode = digio.TRIG_FALLING

trigger.blender[1].orenable = true

trigger.blender[1].stimulus[1] = digio.trigger[3].EVENT_ID

trigger.blender[1].stimulus[2] = digio.trigger[5].EVENT_ID

Generate a trigger blender 1 event when a digital I/O trigger happens on line 3 or 5.

Also see

trigger.blender[N].reset()

trigger.blender[N].wait()

This function waits for a blender trigger event to occur.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

triggered = trigger.blender[N].wait(timeout)

triggered

Trigger detection indication for blender

N

The trigger blender on which to wait: up to six

timeout

Maximum amount of time in seconds to wait for the trigger blender event

Details

This function waits for an event blender trigger event. If one or more trigger events were detected since the last time trigger.blender[N].wait() or trigger.blender[N].clear() was called, this function returns immediately.

After detecting a trigger with this function, the event detector automatically resets and rearms. This is true regardless of the number of events detected.

Example

digio.trigger[3].mode = digio.TRIG_FALLING

digio.trigger[5].mode = digio.TRIG_FALLING

trigger.blender[1].orenable = true

trigger.blender[1].stimulus[1] = digio.trigger[3].EVENT_ID

trigger.blender[1].stimulus[2] = digio.trigger[5].EVENT_ID

print(trigger.blender[1].wait(3))

Generate a trigger blender 1 event when a digital I/O trigger happens either on line 3 or 5.

Wait three seconds while checking if trigger blender 1 event has occurred.

If the blender trigger event has happened, then true is output. If the trigger event has not happened, then false is output after the timeout expires.

Also see

trigger.blender[N].clear()

trigger.clear()

This function clears the command interface trigger event detector.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

trigger.clear()

Details

The trigger event detector indicates if a trigger event has been detected since the last trigger.wait() call. trigger.clear() clears the trigger event detector and discards the history of command interface trigger events.

Also see

trigger.wait()

trigger.EVENT_ID

This constant contains the command interface trigger event number.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Constant

Yes

 

 

 

Usage

eventID = trigger.EVENT_ID

eventID

The event ID for the command interface triggers

Details

You can set the stimulus of any trigger object to the value of this constant to have the trigger object respond to command interface trigger events.

Example

trigger.timer[1].stimulus = trigger.EVENT_ID

Sets the trigger stimulus of trigger timer 1 to the command interface trigger event.

Also see

None

trigger.generator[N].assert()

This function generates a trigger event.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

trigger.generator[N].assert()

N

The generator number (***Set variable***)

Details

Use this function to directly trigger events from the command interface or a script. For example, you can trigger a sweep while the instrument is under script control.

Example

trigger.generator[2].assert()

Generates a trigger event on generator 2

Also see

trigger.generator[N].EVENT_ID

trigger.generator[N].EVENT_ID

This constant identifies the trigger event generated by the trigger event generator.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Constant

Yes

 

 

 

Usage

eventID = trigger.generator[N].EVENT_ID

eventID

The trigger event number

N

The generator number (***Set variable***)

Details

This constant is an identification number that identifies events generated by this generator.

To have another trigger object respond to trigger events generated by this generator, set the other object's stimulus attribute to the value of this constant.

Example

digio.trigger[5].stimulus = trigger.generator[2].EVENT_ID

Uses a trigger event on generator 2 to be the stimulus for digital I/O trigger line 5.

Also see

trigger.generator[N].assert()

trigger.timer[N].clear()

This function clears the timer event detector and overrun indicator for the specified trigger timer number.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

trigger.timer[N].clear()

N

Trigger timer number: 1 to 8

Details

This command sets the timer event detector to the undetected state and resets the overrun indicator.

Example

trigger.timer[1].clear()

Clears trigger timer 1.

Also see

trigger.timer[N].count

trigger.timer[N].count

This attribute sets the number of events to generate each time the timer generates a trigger event.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Instrument reset
Recall setup
Trigger timer N reset

Not saved

1

Usage

count = trigger.timer[N].count

trigger.timer[N].count = count

count

Number of times to repeat the trigger: 0 to 1,048,575

N

Trigger timer number: 1 to 8

Details

If the count is set to a number greater than 1, the timer automatically starts the next trigger timer delay at the expiration of the previous delay.

Set the count to zero (0) to cause the timer to generate trigger events indefinitely.

If you use the trigger timer with a trigger model, make sure the count value is the same or more than any count values expected in the trigger model.

Example

print(trigger.timer[1].count)

Read trigger count for timer number 1.

Also see

trigger.timer[N].clear()

trigger.timer[N].delay

trigger.timer[N].reset()

trigger.timer[N].delay

This attribute sets and reads the timer delay.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Instrument reset
Recall setup
Trigger timer N reset

Not saved

10e-6 (10 µs)

Usage

interval = trigger.timer[N].delay

trigger.timer[N].delay = interval

interval

Delay interval in seconds: 0.5 µs to 100 ks

N

Trigger timer number: 1 to 8

Details

Once the timer is enabled, each time the timer is triggered, it uses this delay period.

Assigning a value to this attribute is equivalent to:

trigger.timer[N].delaylist = {interval}

This creates a delay list of one value.

Reading this attribute returns the delay interval that is used the next time the timer is triggered.

Example

trigger.timer[1].delay = 50e-6

Set the trigger timer 1 to delay for 50 µs.

Also see

trigger.timer[N].reset()

trigger.timer[N].delaylist

This attribute sets an array of timer intervals.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Instrument reset
Recall setup
Trigger timer N reset

Not saved

10e-6 (10 µs)

Usage

intervals = trigger.timer[N].delaylist

trigger.timer[N].delaylist = intervals

intervals

Table of delay intervals in seconds

N

Trigger timer number: 1 to 8

Details

Each time the timer is triggered after it is enabled, it uses the next delay period from the array. The default value is an array with one value of 10 µs.

After all elements in the array have been used, the delays restart at the beginning of the list.

If the array contains more than one element, the average of the delay intervals in the list must be = 50 µs.

Example

trigger.timer[3].delaylist = {50e-6, 100e-6, 150e-6}

DelayList = trigger.timer[3].delaylist

for x = 1, table.getn(DelayList) do

print(DelayList[x])

end

Set a delay list on trigger timer 3 with three delays (50 µs, 100 µs, and 150 µs).

Read the delay list on trigger timer 3.

Output:

5e-05

0.0001

0.00015

Also see

trigger.timer[N].reset()

trigger.timer[N].EVENT_ID

This constant specifies the trigger timer event number.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Constant

Yes

 

 

 

Usage

eventID = trigger.timer[N].EVENT_ID

eventID

The trigger event number

N

Trigger timer number: 1 to 8

Details

This constant is an identification number that identifies events generated by this timer.

Set the stimulus of any trigger object to the value of this constant to have the trigger object respond to events from this timer.

Example

trigger.timer[1].stimulus = tsplink.trigger[2].EVENT_ID

Sets the trigger stimulus of trigger timer 1 to the TSP-Link trigger 2 event.

Also see

None

trigger.timer[N].overrun

This attribute indicates if an event was ignored because of the event detector state.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

Yes

Instrument reset
Recall setup
Trigger timer N clear
Trigger timer N reset

Not applicable

false

Usage

overrun = trigger.timer[N].overrun

overrun

Trigger overrun state: true or false

N

Trigger timer number: 1 to 8

Details

This command indicates if an event was ignored because the event detector was already in the detected state when the event occurred.

This is an indication of the state of the event detector built into the timer itself. It does not indicate if an overrun occurred in any other part of the trigger model or in any other construct that is monitoring the delay completion event. It also is not an indication of a delay overrun.

Delay overrun indications are provided in the status model.

Example

print(trigger.timer[1].overrun)

If an event was ignored, the output is true.

If the event was not ignored, the output is false.

Also see

trigger.timer[N].reset()

trigger.timer[N].passthrough

This attribute enables or disables the timer trigger pass‑through mode.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Instrument reset
Recall setup
Trigger timer N reset

Not saved

false (disabled)

Usage

passthrough = trigger.timer[N].passthrough

trigger.timer[N].passthrough = passthrough

passthrough

The state of pass-through mode; set to one of the following values:

  • Enabled: true
  • Disabled: false

N

Trigger timer number: 1 to 8

Details

When pass-through mode is enabled, triggers are passed through immediately and initiate the delay. When disabled, a trigger only initiates a delay.

Example

trigger.timer[1].passthrough = true

Enables pass‑through mode on trigger timer 1.

Also see

trigger.timer[N].reset()

trigger.timer[N].reset()

This function resets some of the trigger timer settings to their factory defaults.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

trigger.timer[N].reset()

N

Trigger timer number: 1 to 8

Details

The trigger.timer[N].reset() function resets the following attributes to their factory defaults:

  • trigger.timer[N].count
  • trigger.timer[N].delay
  • trigger.timer[N].delaylist
  • trigger.timer[N].passthrough
  • trigger.timer[N].stimulus

It also clears trigger.timer[N].overrun.

Example

trigger.timer[1].reset()

Resets the attributes associated with timer 1 to factory default values.

Also see

trigger.timer[N].count

trigger.timer[N].delay

trigger.timer[N].delaylist

trigger.timer[N].overrun

trigger.timer[N].passthrough

trigger.timer[N].stimulus

trigger.timer[N].stimulus

This attribute specifies which event starts the timer.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Instrument reset
Recall setup
Trigger timer N reset

Not saved

0

Usage

eventID = trigger.timer[N].stimulus

trigger.timer[N].stimulus = eventID

eventID

The event that triggers the timer delay

N

Trigger timer number (1 to 8)

Details

The eventID parameter may be one of the trigger event IDs shown in the following table.

Trigger event IDs*

Event ID

Event description

smuX.trigger.SWEEPING_EVENT_ID

Occurs when the source‑measure unit (SMU) transitions from the idle state to the arm layer of the trigger model

smuX.trigger.ARMED_EVENT_ID

Occurs when the SMU moves from the arm layer to the trigger layer of the trigger model

smuX.trigger.SOURCE_COMPLETE_EVENT_ID

Occurs when the SMU completes a source action

smuX.trigger.MEASURE_COMPLETE_EVENT_ID

Occurs when the SMU completes a measurement action

smuX.trigger.PULSE_COMPLETE_EVENT_ID

Occurs when the SMU completes a pulse

smuX.trigger.SWEEP_COMPLETE_EVENT_ID

Occurs when the SMU completes a sweep

smuX.trigger.IDLE_EVENT_ID

Occurs when the SMU returns to the idle state

digio.trigger[N].EVENT_ID

Occurs when an edge is detected on a digital I/O line

tsplink.trigger[N].EVENT_ID

Occurs when an edge is detected on a TSP‑Link line

lan.trigger[N].EVENT_ID

Occurs when the appropriate LXI trigger packet is received on LAN trigger object N

display.trigger.EVENT_ID

Occurs when the TRIG key on the front panel is pressed

trigger.EVENT_ID

Occurs when a *TRG command is received on the remote interface

GPIB only: Occurs when a GET bus command is received

USB only: Occurs when a USBTMC TRIGGER message is received

VXI-11 only: Occurs with the VXI-11 command device_trigger; reference the VXI-11 standard for additional details on the device trigger operation

trigger.blender[N].EVENT_ID

Occurs after a collection of events is detected

trigger.timer[N].EVENT_ID

Occurs when a delay expires

trigger.generator[N].EVENT_ID

Occurs when the trigger.generator[N].assert() function is executed

 

 

* Use the name of the trigger event ID to set the stimulus value rather than the numeric value. Using the name makes the code compatible for future upgrades (for example, if the numeric values must change when enhancements are added to the instrument).

Set this attribute to the eventID of any trigger event to cause the timer to start when that event occurs.

Set this attribute to zero (0) to disable event processing.

Example

print(trigger.timer[1].stimulus)

Prints the event that starts a trigger 1 timer action.

Also see

trigger.timer[N].reset()

trigger.timer[N].wait()

This function waits for a trigger.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

triggered = trigger.timer[N].wait(timeout)

triggered

Trigger detection indication

N

Trigger timer number: 1 to 8

timeout

Maximum amount of time in seconds to wait for the trigger

Details

If one or more trigger events were detected since the last time trigger.timer[N].wait() or trigger.timer[N].clear() was called, this function returns immediately.

After waiting for a trigger with this function, the event detector is automatically reset and rearmed. This is true regardless of the number of events detected.

Example

triggered = trigger.timer[3].wait(10)

print(triggered)

Waits up to 10 s for a trigger on timer 3.

If false is returned, no trigger was detected during the 10 s timeout.

If true is returned, a trigger was detected.

Also see

trigger.timer[N].clear()

trigger.wait()

This function waits for a command interface trigger event.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

triggered = trigger.wait(timeout)

triggered

A trigger was detected during the timeout period: true

No triggers were detected during the timeout period: false

timeout

Maximum amount of time in seconds to wait for the trigger

Details

This function waits up to timeout seconds for a trigger on the active command interface. A command interface trigger occurs when:

  • A GPIB GET command is detected (GPIB only)
  • A USBTMC TRIGGER message is received (USB only)
  • A VXI-11 device_trigger method is invoked (VXI-11 only)
  • A *TRG message is received

If one or more of these trigger events were previously detected, this function returns immediately.

After waiting for a trigger with this function, the event detector is automatically reset and rearmed. This is true regardless of the number of events detected.

Example

triggered = trigger.wait(10)

print(triggered)

Waits up to 10 seconds for a trigger.

If false is returned, no trigger was detected during the 10‑second timeout.

If true is returned, a trigger was detected.

Also see

trigger.clear()

tsplink.group

This attribute contains the group number of a TSP‑Link node. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Power cycle

Not applicable

0

Usage

groupNumber = tsplink.group

tsplink.group = groupNumber

groupNumber

The group number of the TSP-Link node: 0 to 64

Details

To remove the node from all groups, set the attribute value to 0.

When the node is turned off, the group number for that node changes to 0.

The master node can be assigned to any group. You can also include other nodes in the group that includes the master. Any nodes that are set to 0 are automatically included in the group that contains the master node, regardless of the group that is assigned to the master node.

Example

tsplink.group = 3

Assign the instrument to TSP-Link group number 3.

Also see

Using groups to manage nodes on a TSP-Link system

Using groups to manage nodes on a TSP-Link system

tsplink.master

This attribute reads the node number assigned to the master node. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

Yes

Not applicable

Not applicable

Not applicable

Usage

masterNodeNumber = tsplink.master

masterNodeNumber

The node number of the master node

Details

After doing a TSP-Link reset (tsplink.reset()), use this attribute to access the node number of the master in a set of instruments connected over TSP-Link.

Example

LinkMaster = tsplink.master

Store the TSP-Link master node number in a variable called LinkMaster.

Also see

tsplink.reset()

tsplink.node

This attribute defines the node number. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Not applicable

Nonvolatile memory

1

Usage

nodeNumber = tsplink.node

tsplink.node = nodeNumber

nodeNumber

The node number of the instrument or enclosure: 1 to 64

Details

This command sets the TSP‑Link node number and saves the value in nonvolatile memory.

Changes to the node number do not take effect until tsplink.reset() from an earlier TSP‑Link instrument is executed on any node in the system.

Each node connected to the TSP-Link system must be assigned a different node number.

Example

tsplink.node = 3

Sets the TSP‑Link node for this instrument to number 3.

Also see

tsplink.reset()

tsplink.state

tsplink.readbit()

This function reads the state of a TSP-Link synchronization line. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

data = tsplink.readbit(N)

data

The state of the synchronization line

  • Low: 0
  • High: 1

N

The trigger line: 1 to 3

Example

data = tsplink.readbit(3)

print(data)

Assume line 3 is set high and is then read.

Output:

1.000000e+00

Also see

tsplink.readport()

tsplink.writebit()

tsplink.readport()

This function reads the TSP-Link trigger lines as a digital I/O port. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

data = tsplink.readport()

data

Numeric value that indicates which lines are set

Details

The binary equivalent of the returned value indicates the input pattern on the I/O port. The least significant bit of the binary number corresponds to line 1 and the value of bit 3 corresponds to line 3. For example, a returned value of 2 has a binary equivalent of 010. This indicates that line 2 is high (1), and that the other two lines are low (0).

Example

data = tsplink.readport()

print(data)

Reads state of all three TSP-Link lines.

Assuming line 2 is set high, the output is:

2.000000e+00

(binary 010)

The format of the output may vary depending on the ASCII precision setting.

Also see

TSP-Link trigger lines

tsplink.readbit()

tsplink.writebit()

tsplink.reset()

This function initializes (resets) all nodes (instruments) in the TSP‑Link system. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

nodesFound = tsplink.reset()

nodesFound = tsplink.reset(expectedNodes)

nodesFound

The number of nodes actually found on the system

expectedNodes

The number of nodes expected on the system (1 to 64)

Details

This function erases all information regarding other nodes connected on the TSP-Link system and regenerates the system configuration. This function must be called at least once before any remote nodes can be accessed. If the node number for any instrument is changed, the TSP-Link must be reset again.

If expectedNodes is not given, this function generates an error if no other nodes are found on the TSP‑Link network.

If nodesFound is less than expectedNodes, an error is generated. Note that the node on which the command is running is counted as a node. For example, giving an expected node count of 1 does not generate any errors, even if there are no other nodes on the TSP-Link network.

Also returns the number of nodes found.

Example

nodesFound = tsplink.reset(2)

print("Nodes found = " .. nodesFound)

Perform a TSP-Link reset and indicate how many nodes are found.

Sample output if two nodes are found:
Nodes found = 2

Sample output if fewer nodes are found and if localnode.showerrors = 1:
1219, TSP-Link found fewer nodes than expected
Nodes found = 1

Also see

localnode.showerrors

tsplink.node

tsplink.state

tsplink.state

This attribute describes the TSP‑Link online state. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

Yes

Not applicable

Not applicable

Not applicable

Usage

state = tsplink.state

state

TSP-Link state: online or offline

Details

When the instrument power is first turned on, the state is offline. After tsplink.reset() is successful, the state is online.

Example

state = tsplink.state

print(state)

Read the state of the TSP‑Link system. If it is online, the output is:

online

Also see

tsplink.node

tsplink.reset()

tsplink.trigger[N].assert()

This function simulates the occurrence of the trigger and generates the corresponding event ID. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

tsplink.trigger[N].assert()

N

The trigger line: 1 to 3

Details

The set pulse width determines how long the trigger is asserted.

Example

tsplink.trigger[2].assert()

Asserts trigger on trigger line 2.

Also see

tsplink.trigger[N].clear()

tsplink.trigger[N].mode

tsplink.trigger[N].overrun

tsplink.trigger[N].pulsewidth

tsplink.trigger[N].release()

tsplink.trigger[N].stimulus

tsplink.trigger[N].wait()

tsplink.trigger[N].clear()

This function clears the event detector for a LAN trigger. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

tsplink.trigger[N].clear()

N

The trigger line: 1 to 3

Details

The trigger event detector enters the detected state when an event is detected. tsplink.trigger[N].clear() clears a trigger event detector, discards the history of the trigger line, and clears the tsplink.trigger[N].overrun attribute.

Example

tsplink.trigger[2].clear()

Clears trigger event on synchronization line 2.

Also see

tsplink.trigger[N].mode

tsplink.trigger[N].overrun

tsplink.trigger[N].release()

tsplink.trigger[N].stimulus

tsplink.trigger[N].wait()

tsplink.trigger[N].EVENT_ID

This constant identifies the number that is used for the trigger events. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Constant

Yes

 

 

 

Usage

eventID = tsplink.trigger[N].EVENT_ID

eventID

The trigger event number

N

The trigger line: 1 to 3

Details

This number is used by the TSP-Link trigger line when it detects an input trigger.

Set the stimulus of any trigger object to the value of this constant to have the trigger object respond to trigger events from this line.

Example

trigger.timer[1].stimulus = tsplink.trigger[2].EVENT_ID

Sets the trigger stimulus of trigger timer 1 to the TSP-Link trigger 2 event.

Also see

None

tsplink.trigger[N].mode

This attribute defines the trigger operation and detection mode. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Instrument reset
Recall setup
TSP-Link trigger N reset

Not saved

0 (tsplink.TRIG_BYPASS)

Usage

mode = tsplink.trigger[N].mode

tsplink.trigger[N].mode = mode

mode

The trigger mode

N

The trigger line: 1 to 3

Details

This attribute controls the mode in which the trigger event detector and the output trigger generator operate on the given trigger line.

The setting for the mode parameter can be one of the values shown in the following table.

Mode

Number value

Description

tsplink.TRIG_BYPASS

0

Allows direct control of the line as a digital I/O line.

tsplink.TRIG_FALLING

1

Detects falling‑edge triggers as input. Asserts a TTL-low pulse for output.

tsplink.TRIG_RISING

2

If the programmed state of the line is high, the tsplink.TRIG_RISING mode behaves similarly to tsplink.TRIG_RISINGA.

If the programmed state of the line is low, the tsplink.TRIG_RISING mode behaves similarly to tsplink.TRIG_RISINGM.

Use tsplink.TRIG_RISINGA if the line is in the high output state.

Use tsplink.TRIG_RISINGM if the line is in the low output state.

tsplink.TRIG_EITHER

3

Detects rising‑ or falling‑edge triggers as input. Asserts a TTL‑low pulse for output.

tsplink.TRIG_SYNCHRONOUSA

4

Detects the falling‑edge input triggers and automatically latches and drives the trigger line low.

tsplink.TRIG_SYNCHRONOUS

5

Detects the falling‑edge input triggers and automatically latches and drives the trigger line low. Asserts a TTL-low pulse as an output trigger.

tsplink.TRIG_SYNCHRONOUSM

6

Detects rising‑edge triggers as an input. Asserts a TTL‑low pulse for output.

tsplink.TRIG_RISINGA

7

Detects rising‑edge triggers as input. Asserts a TTL‑low pulse for output.

tsplink.TRIG_RISINGM

8

Edge detection as an input is not available. Generates a TTL‑high pulse as an output trigger.

When programmed to any mode except tsplink.TRIG_BYPASS, the output state of the I/O line is controlled by the trigger logic and the user-specified output state of the line is ignored.

When the trigger mode is set to tsplink.TRIG_RISING, the user‑specified output state of the line is examined. If the output state selected when the mode is changed is high, the actual mode that is used is tsplink.TRIG_RISINGA. If the output state selected when the mode is changed is low, the actual mode that is used is tsplink.TRIG_RISINGM.

The mode parameter stores the trigger mode as a numeric value when the attribute is read.

To control the line state, use the tsplink.TRIG_BYPASS mode with the tsplink.writebit() and the tsplink.writeport() commands.

Example

tsplink.trigger[3].mode = tsplink.TRIG_RISINGM

Sets the trigger mode for synchronization line 3 to tsplink.TRIG_RISINGM.

Also see

digio.writebit()

digio.writeport()

tsplink.trigger[N].assert()

tsplink.trigger[N].clear()

tsplink.trigger[N].overrun

tsplink.trigger[N].release()

tsplink.trigger[N].reset()

tsplink.trigger[N].stimulus

tsplink.trigger[N].wait()

tsplink.trigger[N].overrun

This attribute indicates if the event detector ignored an event while in the detected state. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (R)

Yes

Instrument reset
Recall setup
TSP-Link trigger N clear
TSP-Link trigger N reset

Not applicable

Not applicable

Usage

overrun = tsplink.trigger[N].overrun

overrun

Trigger overrun state

N

The trigger line: 1 to 3

Details

This command indicates whether an event has been ignored because the event detector was already in the detected state when the event occurred.

This is an indication of the state of the event detector built into the synchronization line itself.

It does not indicate if an overrun occurred in any other part of the trigger model, or in any other construct that is monitoring the event. It also is not an indication of an output trigger overrun. Output trigger overrun indications are provided in the status model.

Example

print(tsplink.trigger[1].overrun)

If an event was ignored, displays true; if an event was not ignored, displays false.

Also see

tsplink.trigger[N].assert()

tsplink.trigger[N].clear()

tsplink.trigger[N].mode

tsplink.trigger[N].release()

tsplink.trigger[N].reset()

tsplink.trigger[N].stimulus

tsplink.trigger[N].wait()

tsplink.trigger[N].pulsewidth

This attribute sets the length of time that the trigger line is asserted for output triggers. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Instrument reset
TSP-Link trigger N reset
Recall setup

Not saved

10e-6 (10 µs)

Usage

width = tsplink.trigger[N].pulsewidth

tsplink.trigger[N].pulsewidth = width

width

The pulse width in seconds

N

The trigger line: 1 to 3

Details

Setting the pulse width to 0 (seconds) asserts the trigger indefinitely.

Example

tsplink.trigger[3].pulsewidth = 20e-6

Sets pulse width for trigger line 3 to 20 µs.

Also see

tsplink.trigger[N].release()

tsplink.trigger[N].release()

This function releases a latched trigger on the given TSP‑Link trigger line. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

tsplink.trigger[N].release()

N

The trigger line: 1 to 3

Details

Releases a trigger that was asserted with an indefinite pulse width. It also releases a trigger that was latched in response to receiving a synchronous mode trigger.

Example

tsplink.trigger[3].release()

Releases trigger line 3.

Also see

tsplink.trigger[N].assert()

tsplink.trigger[N].clear()

tsplink.trigger[N].mode

tsplink.trigger[N].overrun

tsplink.trigger[N].pulsewidth

tsplink.trigger[N].stimulus

tsplink.trigger[N].wait()

tsplink.trigger[N].reset()

This function resets some of the TSP-Link trigger attributes to their factory defaults. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

tsplink.trigger[N].reset()

N

The trigger line: 1 to 3

Details

The tsplink.trigger[N].reset() function resets the following attributes to their factory defaults:

  • tsplink.trigger[N].mode
  • tsplink.trigger[N].stimulus
  • tsplink.trigger[N].pulsewidth

This also clears tsplink.trigger[N].overrun.

Example

tsplink.trigger[3].reset()

Resets TSP-Link trigger line 3 attributes to factory default values.

Also see

tsplink.trigger[N].mode

tsplink.trigger[N].overrun

tsplink.trigger[N].pulsewidth

tsplink.trigger[N].stimulus

tsplink.trigger[N].stimulus

This attribute specifies the event that causes the synchronization line to assert a trigger. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Instrument reset
Recall setup
TSP-Link trigger N reset

Not saved

0

Usage

eventID = tsplink.trigger[N].stimulus

tsplink.trigger[N].stimulus = eventID

eventID

The event identifier for the triggering event

N

The trigger line (1 to 3)

Details

To disable automatic trigger assertion on the synchronization line, set this attribute to zero (0).

Do not use this attribute when triggering under script control. Use tsplink.trigger[N].assert() instead.

The eventID parameter may be one of the existing trigger event IDs shown in the following table.

Trigger event IDs*

Event ID

Event description

smuX.trigger.SWEEPING_EVENT_ID

Occurs when the source‑measure unit (SMU) transitions from the idle state to the arm layer of the trigger model

smuX.trigger.ARMED_EVENT_ID

Occurs when the SMU moves from the arm layer to the trigger layer of the trigger model

smuX.trigger.SOURCE_COMPLETE_EVENT_ID

Occurs when the SMU completes a source action

smuX.trigger.MEASURE_COMPLETE_EVENT_ID

Occurs when the SMU completes a measurement action

smuX.trigger.PULSE_COMPLETE_EVENT_ID

Occurs when the SMU completes a pulse

smuX.trigger.SWEEP_COMPLETE_EVENT_ID

Occurs when the SMU completes a sweep

smuX.trigger.IDLE_EVENT_ID

Occurs when the SMU returns to the idle state

digio.trigger[N].EVENT_ID

Occurs when an edge is detected on a digital I/O line

tsplink.trigger[N].EVENT_ID

Occurs when an edge is detected on a TSP‑Link line

lan.trigger[N].EVENT_ID

Occurs when the appropriate LXI trigger packet is received on LAN trigger object N

display.trigger.EVENT_ID

Occurs when the TRIG key on the front panel is pressed

trigger.EVENT_ID

Occurs when a *TRG command is received on the remote interface

GPIB only: Occurs when a GET bus command is received

USB only: Occurs when a USBTMC TRIGGER message is received

VXI-11 only: Occurs with the VXI-11 command device_trigger; reference the VXI-11 standard for additional details on the device trigger operation

trigger.blender[N].EVENT_ID

Occurs after a collection of events is detected

trigger.timer[N].EVENT_ID

Occurs when a delay expires

trigger.generator[N].EVENT_ID

Occurs when the trigger.generator[N].assert() function is executed

 

 

* Use the name of the trigger event ID to set the stimulus value rather than the numeric value. Using the name makes the code compatible for future upgrades (for example, if the numeric values must change when enhancements are added to the instrument).

Example

print(tsplink.trigger[3].stimulus)

Prints the event that starts TSP-Link trigger line 3 action.

Also see

tsplink.trigger[N].assert()

tsplink.trigger[N].reset()

tsplink.trigger[N].wait()

This function waits for a trigger. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

triggered = tsplink.trigger[N].wait(timeout)

triggered

Trigger detection indication; set to one of the following values:

  • A trigger is detected during the timeout period: true
  • A trigger is not detected during the timeout period: false

N

The trigger line: 1 to 3

timeout

The timeout value in seconds

Details

This function waits up to the timeout value for an input trigger. If one or more trigger events were detected since the last time tsplink.trigger[N].wait() or tsplink.trigger[N].clear() was called, this function returns immediately.

After waiting for a trigger with this function, the event detector is automatically reset and rearmed. This is true regardless of the number of events detected.

Example

triggered = tsplink.trigger[3].wait(10)

print(triggered)

Waits up to 10 seconds for a trigger on TSP-Link line 3.

If false is returned, no trigger was detected during the 10-second timeout.

If true is returned, a trigger was detected.

Also see

tsplink.trigger[N].clear()

tsplink.writebit()

This function sets a TSP-Link trigger line high or low. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

tsplink.writebit(N, data)

N

The trigger line: 1 to 3

data

The value to write to the bit:

  • Low: 0
  • High: 1

Details

Use tsplink.writebit() and tsplink.writeport() to control the output state of the trigger line when trigger operation is set to tsplink.TRIG_BYPASS.

If the output line is write‑protected by the tsplink.writeprotect attribute, this command is ignored.

The reset function does not affect the present states of the TSP-Link trigger lines.

Example

tsplink.writebit(3, 0)

Sets trigger line 3 low (0).

Also see

tsplink.readbit()

tsplink.readport()

tsplink.writeport()

tsplink.writeprotect

tsplink.writeport()

This function writes to all TSP‑Link synchronization lines. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

tsplink.writeport(data)

data

Value to write to the port: 0 to 7

Details

The binary representation of data indicates the output pattern that is written to the I/O port. For example, a data value of 2 has a binary equivalent of 010. Line 2 is set high (1) and the other two lines are set low (0).

Write‑protected lines are not changed.

Use the tsplink.writebit() and tsplink.writeport() commands to control the output state of the synchronization line when trigger operation is set to tsplink.TRIG_BYPASS.

The reset() function does not affect the present states of the trigger lines.

Example

tsplink.writeport(3)

Sets the synchronization lines 1 and 2 high (binary 011).

Also see

tsplink.readbit()

tsplink.readport()

tsplink.writebit()

tsplink.writeprotect

tsplink.writeprotect

This attribute contains the write‑protect mask that protects bits from changes by the tsplink.writebit() and tsplink.writeport() functions. This command is not available on the 2604B, 2614B, or 2634B.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

Yes

Instrument reset
Recall setup

Saved setup

0

Usage

mask = tsplink.writeprotect

tsplink.writeprotect = mask

mask

An integer that specifies the value of the bit pattern for write‑protect; set bits to 1 to write‑protect the corresponding TSP-Link trigger line

Details

The binary equivalent of mask indicates the mask to be set for the TSP-Link trigger line. For example, a mask value of 5 has a binary equivalent of 101. This mask write‑protects TSP-Link trigger lines 1 and 3.

Example

tsplink.writeprotect = 5

Write‑protects TSP-Link trigger lines 1 and 3.

Also see

Controlling digital I/O lines

tsplink.readbit()

tsplink.readport()

tsplink.writebit()

tsplink.writeport()

tspnet.clear()

This function clears any pending output data from the instrument.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

tspnet.clear(connectionID)

connectionID

The connection ID returned from tspnet.connect()

Details

This function clears any pending output data from the device. No data is returned to the caller and no data is processed.

Example

tspnet.write(testdevice, "print([[hello]])")

print(tspnet.readavailable(testdevice))

tspnet.clear(testdevice)

print(tspnet.readavailable(testdevice))

Write data to a device, then print how much is available.

Output:

6.00000e+00

 

Clear data and print how much data is available again.

Output:

0.00000e+00

Also see

tspnet.connect()

tspnet.readavailable()

tspnet.write()

tspnet.connect()

This function establishes a network connection with another LAN instrument or device through the LAN interface.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

connectionID = tspnet.connect("ipAddress")

connectionID = tspnet.connect("ipAddress", portNumber, "initString")

connectionID

The connection ID to be used as a handle in all other tspnet function calls

ipAddress

A string that contains the IP address to which to connect; accepts IP address or host name when trying to connect

portNumber

Port number (default 5025)

initString

Initialization string to send to ipAddress

Details

This command connects a device to another device through the LAN interface. If the portNumber is 23, the interface uses the telnet protocol and sets appropriate termination characters to communicate with the device.

If a portNumber and initString are provided, it is assumed that the remote device is not TSP‑enabled. The 2600B does not perform any extra processing, prompt handling, error handling, or sending of commands. In addition, the tspnet.tsp.* commands cannot be used on devices that are not TSP‑enabled.

If neither a portNumber nor an initString is provided, the remote device is assumed to be a Keithley TSP‑enabled device. Depending on the state of the tspnet.tsp.abortonconnect attribute, the 2600B sends an abort command to the remote device on connection.

The 2600B also enables TSP prompts on the remote device and error management. The 2600B places remote errors from the TSP‑enabled device in its own error queue and prefaces these errors with Remote Error, followed by an error description.

Do not manually change either the prompt functionality (localnode.prompts) or show errors by changing localnode.showerrors on the remote TSP-enabled device. If you do this, subsequent tspnet.tsp.* commands using the connection may fail.

You can simultaneously connect to a maximum of 32 remote devices.

Example 1

instrumentID = tspnet.connect("192.0.2.1")

if instrumentID then

-- Use instrumentID as needed here

tspnet.disconnect(instrumentID)

end

Connect to a TSP-enabled device.

Example 2

instrumentID = tspnet.connect("192.0.2.1", 1394, "*rst\r\n")

if instrumentID then

-- Use instrumentID as needed here

tspnet.disconnect(instrumentID)

end

Connect to a device that is not TSP‑enabled.

Also see

localnode.prompts

localnode.showerrors

tspnet.tsp.abortonconnect

tspnet.disconnect()

tspnet.disconnect()

This function disconnects a specified TSP-Net session.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

tspnet.disconnect(connectionID)

connectionID

The connection ID returned from tspnet.connect()

Details

This function disconnects the two devices by closing the connection. The connectionID is the session handle returned by tspnet.connect().

For TSP-enabled devices, this aborts any remotely running commands or scripts.

Example

testID = tspnet.connect("192.0.2.0")

-- Use the connection

tspnet.disconnect(testID)

Create a TSP‑Net session.

Close the session.

Also see

tspnet.connect()

tspnet.execute()

This function sends a command string to the remote device.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

tspnet.execute("connectionID", "commandString")

value1 = tspnet.execute("connectionID", "commandString", formatString)

value1, value2 = tspnet.execute("connectionID", "commandString", formatString)

value1, ..., valueN = tspnet.execute("connectionID", "commandString", formatString)

connectionID

The connection ID returned from tspnet.connect()

commandString

The command to send to the remote device

value1

The first value decoded from the response message

value2

The second value decoded from the response message

valueN

The th value decoded from the response message; there is one return value for each format specifier in the format string

...

One or more values separated with commas

formatString

Format string for the output

Details

This command sends a command string to the remote instrument. A termination is added to the command string when it is sent to the remote instrument (tspnet.termination()). You can also specify a format string, which causes the command to wait for a response from the remote instrument. The 2600B decodes the response message according to the format specified in the format string and returns the message as return values from the function (see tspnet.read() for format specifiers).

When this command is sent to a TSP-enabled instrument, the 2600B suspends operation until a timeout error is generated or until the instrument responds. The TSP prompt from the remote instrument is read and discarded. The 2600B places any remotely generated errors into its error queue. When the optional format string is not specified, this command is equivalent to tspnet.write(), except that a termination is automatically added to the end of the command.

Example 1

tspnet.execute(instrumentID, "runScript()")

Command the remote device to run a script named runScript.

Example 2

tspnet.timeout = 5

id_instr = tspnet.connect("192.0.2.23", 23, "*rst\r\n")

tspnet.termination(id_instr, tspnet.TERM_CRLF)

tspnet.execute(id_instr, "*idn?")

print("tspnet.execute returns:", tspnet.read(id_instr))

Print the *idn? string from the remote device.

Also see

tspnet.connect()

tspnet.read()

tspnet.termination()

tspnet.write()

tspnet.idn()

This function retrieves the response of the remote device to *IDN?.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

idnString = tspnet.idn(connectionID)

idnString

The returned *IDN? string

connectionID

The connection ID returned from tspnet.connect()

Details

This function retrieves the response of the remote device to *IDN?.

Example

deviceID = tspnet.connect("192.0.2.1")

print(tspnet.idn(deviceID))

tspnet.disconnect(deviceID)

Assume the instrument is at IP address 192.0.2.1.

The output that is produced when you connect to the instrument and read the identification string may appear as:

Keithley Instruments,Model 2600B, 1398687, 1.0.0

Also see

tspnet.connect()

tspnet.read()

This function reads data from a remote device.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

value1 = tspnet.read(connectionID)

value1 = tspnet.read(connectionID, formatString)

value1, value2 = tspnet.read(connectionID, formatString)

value1, ..., valueN = tspnet.read(connectionID, formatString)

value1

The first value decoded from the response message

value2

The second value decoded from the response message

valueN

The N th value decoded from the response message; there is one return value for each format specifier in the format string

...

One or more values separated with commas

connectionID

The connection ID returned from tspnet.connect()

formatString

Format string for the output, maximum of 10 specifiers

Details

This command reads available data from the remote instrument and returns responses for the specified number of arguments.

The format string can contain the following specifiers:

%[width]s

Read data until the specified length

%[max width]t

Read data until the specified length or until punctuation is found, whichever comes first

%[max width]n

Read data until a newline or carriage return

%d

Read a number (delimited by punctuation)

A maximum of 10 format specifiers can be used for a maximum of 10 return values.

If formatString is not provided, the command returns a string that contains the data until a new line is reached. If no data is available, the 2600B pauses operation until the requested data is available or until a timeout error is generated. Use tspnet.timeout to specify the timeout period.

When the 2600B reads from a TSP-enabled remote instrument, the 2600B removes Test Script Processor (TSPTM) prompts and places any errors it receives from the remote instrument into its own error queue. The 2600B prefaces errors from the remote device with "Remote Error," followed by the error number and error description.

Example

tspnet.write(deviceID, "*idn?\r\n")

 

print("write/read returns:", tspnet.read(deviceID))

Send the "*idn?\r\n" message to the instrument connected as deviceID.

Display the response that is read from deviceID (based on the *idn? message).

Also see

tspnet.connect()

tspnet.readavailable()

tspnet.timeout

tspnet.write()

tspnet.readavailable()

This function checks if output data is available from the remote device.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

bytesAvailable = tspnet.readavailable(connectionID)

bytesAvailable

The number of bytes available to be read from the connection

connectionID

The connection ID returned from tspnet.connect()

Details

No data is read from the instrument. This allows TSP scripts to continue to run without waiting on a remote command to finish.

Example

ID = tspnet.connect("192.0.2.1")

tspnet.write(ID, "*idn?\r\n")

repeat bytes = tspnet.readavailable(ID) until bytes > 0

print(tspnet.read(ID))

tspnet.disconnect(ID)

Send commands that create data.

Wait for data to be available.

Also see

tspnet.connect()

tspnet.read()

tspnet.reset()

This function disconnects all TSP‑Net sessions.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

tspnet.reset()

Details

This command disconnects all remote instruments connected through TSP‑Net. For TSP‑enabled devices, this causes any commands or scripts running remotely to be terminated.

Also see

None

tspnet.termination()

This function sets the device line termination sequence.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

type = tspnet.termination(connectionID)

type = tspnet.termination(connectionID, termSequence)

type

An enumerated value indicating the termination type:

  • 1 or tspnet.TERM_LF
  • 4 or tspnet.TERM_CR
  • 2 or tspnet.TERM_CRLF
  • 3 or tspnet.TERM_LFCR

connectionID

The connection ID returned from tspnet.connect()

termSequence

The termination sequence

Details

This function sets and gets the termination character sequence that is used to indicate the end of a line for a TSP-Net connection.

Using the termSequence parameter sets the termination sequence. The present termination sequence is always returned.

For the termSequence parameter, use the same values as type. There are four possible combinations, all of which are made up of line feeds (LF or 0x10) and carriage returns (CR or 0x13). For TSP-enabled devices, the default is tspnet.TERM_LF. For devices that are not TSP‑enabled, the default is tspnet.TERM_CRLF.

Example

deviceID = tspnet.connect("192.0.2.1")

if deviceID then

tspnet.termination(deviceID, tspnet.TERM_LF)

end

Sets termination type for IP address 192.0.2.1 to TERM_LF.

Also see

tspnet.connect()

tspnet.disconnect()

tspnet.timeout

This attribute sets the timeout value for the tspnet.connect(), tspnet.execute(), and tspnet.read() commands.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

No

Instrument reset
Recall setup

Not saved

20.0 (20 s)

Usage

value = tspnet.timeout

tspnet.timeout = value

value

The timeout duration in seconds: 0.001 to 30.0

Details

This attribute sets the amount of time the tspnet.connect(), tspnet.execute(), and tspnet.read() commands wait for a response.

The time is specified in seconds. The timeout may be specified to millisecond resolution but is only accurate to the nearest 10 ms.

Example

tspnet.timeout = 2.0

Sets the timeout duration to 2 s.

Also see

tspnet.connect()

tspnet.execute()

tspnet.read()

tspnet.tsp.abort()

This function causes the TSP-enabled instrument to stop executing any of the commands that were sent to it.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

tspnet.tsp.abort(connectionID)

connectionID

Integer value used as a handle for other tspnet commands

Details

This function is appropriate only for TSP-enabled instruments.

Sends an abort command to the remote instrument.

Example

tspnet.tsp.abort(testConnection)

Stops remote instrument execution on testConnection.

Also see

None

tspnet.tsp.abortonconnect

This attribute contains the setting for abort on connect to a TSP-enabled instrument.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Attribute (RW)

No

Instrument reset
Recall setup

Not saved

1 (enable)

Usage

tspnet.tsp.abortonconnect = value

value = tspnet.tsp.abortonconnect

value

  • Enable: 1
  • Disable: 0

Details

This setting determines if the instrument sends an abort message when it attempts to connect to a TSP‑enabled instrument using the tspnet.connect() function.

When you send the abort command on an interface, it causes any other active interface on that instrument to close. If you do not send an abort command (or if tspnet.tsp.abortonconnect is set to 0) and another interface is active, connecting to a TSP‑enabled remote instrument results in a connection. However, the instrument does not respond to subsequent reads or executes because control of the instrument is not obtained until an abort command has been sent.

Example

tspnet.tsp.abortonconnect = 0

Configure the instrument so that it does not send an abort command when connecting to a TSP‑enabled instrument.

Also see

tspnet.connect()

tspnet.tsp.rbtablecopy()

This function copies a reading buffer synchronous table from a remote instrument to a TSP-enabled instrument.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

table = tspnet.tsp.rbtablecopy(connectionID, "name")

table = tspnet.tsp.rbtablecopy(connectionID, "name", startIndex, endIndex)

table

A copy of the synchronous table or a string

connectionID

Integer value used as a handle for other tspnet commands

name

The full name of the reading buffer name and synchronous table to copy

startIndex

Integer start value

endIndex

Integer end value

Details

This function is only appropriate for TSP-enabled instruments.

This function reads the data from a reading buffer on a remote instrument and returns an array of numbers or a string representing the data. The startIndex and endIndex parameters specify the portion of the reading buffer to read. If no index is specified, the entire buffer is copied.

The function returns a table if the table is an array of numbers; otherwise, a comma‑delimited string is returned.

This command is limited to transferring 50,000 readings at a time.

Example

t = tspnet.tsp.rbtablecopy(testConnection, "testRemotebuffername.readings", 1, 3)

print(t[1], t[2], t[3])

Copy the specified readings table for buffer items 1 through 3, then display the first three readings.

Example output:

4.56534e-01

4.52675e-01

4.57535e-01

Also see

None

tspnet.tsp.runscript()

This function loads and runs a script on a remote TSP-enabled instrument.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

Yes

 

 

 

Usage

tspnet.tsp.runscript(connectionID, "script")

tspnet.tsp.runscript(connectionID, "name", "script")

connectionID

Integer value used as an identifier for other tspnet commands

name

The name that is assigned to the script

script

The body of the script as a string

Details

This function is appropriate only for TSP-enabled instruments.

This function downloads a script to a remote instrument and runs it. It automatically adds the appropriate loadscript and endscript commands around the script, captures any errors, and reads back any prompts. No additional substitutions are done on the text.

The script is automatically loaded, compiled, and run.

Any output from previous commands is discarded.

This command does not wait for the script to complete.

If you do not want the script to do anything immediately, make sure the script only defines functions for later use. Use the tspnet.execute() function to execute those functions later.

If no name is specified, the script is loaded as the anonymous script.

Example

tspnet.tsp.runscript(myconnection, "mytest",

"print([[start]]) for d = 1, 10 do print([[work]]) end print([[end]])")

Load and run a script entitled mytest on the TSP‑enabled instrument connected with myconnection.

Also see

tspnet.execute()

tspnet.write()

This function writes a string to the remote instrument.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

tspnet.write(connectionID, "inputString")

connectionID

The connection ID returned from tspnet.connect()

inputString

The string to be written

Details

The tspnet.write() function sends inputString to the remote instrument. It does not wait for command completion on the remote instrument.

The 2600B sends inputString to the remote instrument exactly as indicated. The inputString must contain any necessary new lines, termination, or other syntax elements needed to complete properly.

Because tspnet.write() does not process output from the remote instrument, do not send commands that generate too much output without processing the output. This command can stop executing if there is too much unprocessed output from previous commands.

Example

tspnet.write(myID, "runscript()\r\n")

Commands the remote instrument to execute a command or script named runscript() on a remote device identified in the system as myID.

Also see

tspnet.connect()

tspnet.read()

userstring.add()

This function adds a user-defined string to nonvolatile memory.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

userstring.add("name", "value")

name

The name of the string; the key of the key-value pair

value

The string to associate with name; the value of the key-value pair

Details

This function associates the string value with the string name and stores this key-value pair in nonvolatile memory.

Use the userstring.get() function to retrieve the value associated with the specified name.

You can use the userstring functions to store custom, instrument-specific information in the instrument, such as department number, asset number, or manufacturing plant location.

Example

userstring.add("assetnumber", "236")

userstring.add("product", "Widgets")

userstring.add("contact", "John Doe")

for name in userstring.catalog() do

print(name .. " = " ..

userstring.get(name))

end

Stores user-defined strings in nonvolatile memory and recalls them from the instrument using a for loop.

Example output:

assetnumber = 236

contact = John Doe

product = Widgets

Also see

userstring.catalog()

userstring.delete()

userstring.get()

userstring.catalog()

This function creates an iterator for the user‑defined string catalog.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

for name in userstring.catalog() do body end

name

The name of the string; the key of the key-value pair

body

Code to execute in the body of the for loop

Details

The catalog provides access for user‑defined string pairs, allowing you to manipulate all the key-value pairs in nonvolatile memory. The entries are enumerated in no particular order.

Example 1

for name in userstring.catalog() do

userstring.delete(name)

end

Deletes all user‑defined strings in nonvolatile memory.

Example 2

userstring.add("assetnumber", "236")

userstring.add("product", "Widgets")

userstring.add("contact", "John Doe")

for name in userstring.catalog() do

print(name .. " = " ..

userstring.get(name))

end

Prints all userstring key‑value pairs.

Output:

product = Widgets

assetnumber = 236

contact = John Doe

Notice the key-value pairs are not listed in the order they were added.

Also see

userstring.add()

userstring.delete()

userstring.get()

userstring.delete()

This function deletes a user-defined string from nonvolatile memory.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

userstring.delete("name")

name

The name (key) of the key-value pair of the user‑defined string to delete

Details

This function deletes the string that is associated with name from nonvolatile memory.

Example

userstring.delete("assetnumber")

userstring.delete("product")

userstring.delete("contact")

Deletes the user-defined strings associated with the assetnumber, product, and contact names.

Also see

userstring.add()

userstring.catalog()

userstring.get()

userstring.get()

This function retrieves a user-defined string from nonvolatile memory.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

value = userstring.get("name")

value

The value of the user‑defined string key-value pair

name

The name (key) of the user‑defined string

Details

This function retrieves the string that is associated with name from nonvolatile memory.

Example

userstring.add("assetnumber", "236")

value = userstring.get("assetnumber")

print(value)

Create the user-defined string assetnumber, set to a value of 236.

Read the value associated with the user-defined string named assetnumber.

Store it in a variable called value, then print the variable value.

Output:

236

Also see

userstring.add()

userstring.catalog()

userstring.delete()

waitcomplete()

This function waits for all previously started overlapped commands to complete.

Type

TSP-Link accessible

Affected by

Where saved

Default value

Function

No

 

 

 

Usage

waitcomplete()

waitcomplete(group)

group

Specifies which TSP-Link group on which to wait

Details

There are two types of instrument commands:

  • Overlapped commands: Commands that allow the execution of subsequent commands while instrument operations of the overlapped command are still in progress.
  • Sequential commands: Commands whose operations must finish before the next command is executed.

The waitcomplete() command suspends the execution of commands until the instrument operations of all previous overlapped commands are finished. This command is not needed for sequential commands.

A group number may only be specified when this node is the master node.

If no group is specified, the local group is used.

If zero (0) is specified for the group, this function waits for all nodes in the system.

VARIABLE - NOTE Any nodes that are not assigned to a group (group number is 0) are part of the master node group.

Example 1

waitcomplete()

Waits for all nodes in the local group.

Example 2

waitcomplete(G)

Waits for all nodes in group G.

Example 3

waitcomplete(0)

Waits for all nodes on the TSP-Link network.

Also see

None

Calibration

Verification

VARIABLE - WARNING The information in this section is intended for qualified service personnel only, as described by the types of product users in the Safety precautions pages, provided at the beginning of this document. Do not attempt these procedures unless you are qualified to do so.

Some of these procedures may expose you to hazardous voltages, that if contacted, could cause personal injury or death. Use appropriate safety precautions when working with hazardous voltages.

Use the procedures in this section to verify that the 2600B accuracy is within the limits stated in the instrument’s one-year accuracy specifications. Perform the verification procedures:

  • When you first receive the instrument to make sure that it was not damaged during shipment.
  • To verify that the instrument meets factory specifications.
  • To determine if calibration is required.
  • After performing a calibration adjustment to make sure the instrument was adjusted properly.

The 2600B contains two independent SMU modules. Each module requires separate verification and adjustment. The instructions in this section use the front panel. You can also use remote programming commands. Refer to Instrument programming for information on using commands to control the instrument.

VARIABLE - NOTE If the instrument is still under warranty and its performance is outside specified limits, contact your Keithley Instruments representative or the factory to determine the correct course of action.

Calibration test requirements

Be sure that you perform the calibration tests:

  • Under the proper environmental conditions.
  • After the specified warmup period.
  • Using the correct line voltage.
  • Using the proper test equipment.
  • Using the specified output signal and reading limits.

VARIABLE - NOTE Product specifications are subject to change. Listed uncertainties and test limits are provided only as examples. Always verify values against the most recent product specifications.

Environmental conditions

Conduct your performance calibration procedures in a test environment with:

  • An ambient temperature of 18 °C to 28 °C.
  • A relative humidity of less than 70 percent unless otherwise noted.

VARIABLE - NOTE Product specifications that are listed as 18 °C to 28 °C assume adjustment has been done at 23 °C. If the 2600B is adjusted at a different temperature, the specifications apply to ±5 °C of that adjustment temperature.

Line power

The 2600B requires a line voltage of 100 V to 240 V and a line frequency of 50 Hz or 60 Hz. Perform calibration tests in this range.

Warmup period

Allow the 2600B to warm up for at least two hours before conducting the calibration procedures.

If the instrument has been subjected to temperature extremes (those outside the ranges stated above), allow additional time for the internal temperature of the instrument to stabilize. Typically, allow one extra hour to stabilize an instrument that is 10 °C outside the specified temperature range.

Also allow test equipment to warm up for the minimum time specified by the manufacturer.

Recommended verification equipment

The following table summarizes recommended maximum allowable test equipment uncertainty for verification points. Total test equipment measurement uncertainty should meet or be less than the listed values at each test point. Generally, test equipment uncertainty should be at least four times better than corresponding 2600B specifications.

Recommended verification equipment

Description

Manufacturer/model

Accuracy

Digital multimeter

Keithley Instruments Model 2002
or
Agilent 3458A

DC voltage1
(2601B, 2602B, 2604B)



DC voltage2
(2611B, 2612B, 2614B, 2634B, 2635B, 2636B)


DC current3

90 mV:
0.9 V:
5.4 V:
36 V:

190 mV:
1.8 V:
18 V:
180 V:

90 nA:
0.9 mA:
9 µA:
90 µA:
0.9 mA:
9 mA:
90 mA:
0.9 A:

±8 ppm
±5 ppm
±4 ppm
±6 ppm

±5 ppm
±4 ppm
±6 ppm
±6 ppm

±430 ppm
±45 ppm
±25 ppm
±23 ppm
±20 ppm
±20 ppm
±35 ppm
±110 ppm

0.5 O, 250 W, 0.1%
precision resistor

Isotek

RUG-Z-R500-0.1-TK3

Resistance4

0.5 O:

±125 ppm

1 GO, 200 V, 1% standard

Keithley Instruments Model 2600-STD-RES

Resistance5

1 GO:

±250 ppm

1. Ninety-day specifications show full-range accuracy of recommended model used for specified measurement point.

2. Id.

3. Id.

4. Resistor used to test 2601B, 2602B, 2604B 3 A range and 2611B, 2612B, 2614B, 2634B, 2635B, and 2636B 1.5 A range only should be characterized to uncertainty shown using resistance function of digital multimeter before use.

5. Standard is a guarded and characterized 1 GO resistor that is used to test 2634B, 2635B, and 2636B 100 pA to 100 nA current ranges.

Calibration limits

The calibration limits stated in this section have been calculated using only the 2600B one-year accuracy specifications. They do not include test equipment uncertainty. If a particular measurement falls outside the allowable range, recalculate new limits based both on the 2600B specifications and corresponding test equipment specifications.

Source limit calculations

As an example of how verification limits are calculated, assume you are testing the 2601B, 2602B, or 2604B 6 V DC output range using a 5.4 V output value. Using the one‑year accuracy specification for 5.4 V DC output of ± (0.02% of output + 1.8 mV offset), the calculated output limits are:

Output limits = 5.4 V ± [(5.4 V × 0.02%) + 1.8 mV]
Output limits = 5.4 V ± (0.00108 V + 0.0018 V)
Output limits = 5.4 V ± 0.00288 V
Output limits = 5.39712 V to 5.40288 V

Similarly, assume you are testing the Model 2611B, 2612B, 2614B, 2634B, 2635B, or 2636B 20 V DC output range using an 18 V output value. Using the one-year accuracy specification for 18 V DC output of ± (0.02% of output + 5 mV offset), the calculated output limits are:

Output limits = 18 V ± [(18 V × 0.02%) + 5 mV]
Output limits = 18 V ± (0.0036 V + 0.005 V)
Output limits = 18 V ± 0.0086 V
Output limits = 17.9914 V to 18.0086 V

Measurement limit calculations

Measurement limits are calculated in the same way as the source limits, except that the limits are calculated with respect to the measurement of the external reference instrument.

Restoring factory defaults

Before performing the calibration procedures, restore the instrument to its factory defaults.

To restore the factory defaults:

  1. Press the MENU key.
  2. Scroll to the SETUP menu item, and then press the ENTER key.
  3. Scroll to the RECALL menu item, and then press the ENTER key.
  4. Scroll to the INTERNAL menu item, and then press the ENTER key.
  5. Scroll to the FACTORY menu item.
  6. Press the ENTER key to restore defaults.

Performing the calibration test procedures

Perform the following calibration tests to make sure the instrument is operating within specifications:

If the 2600B is not within specifications and not under warranty, see the procedures in Adjustment for information on adjusting the instrument.

Test considerations

When performing the calibration procedures:

  • Be sure to restore factory front panel defaults as described in Restoring factory defaults.
  • Make sure that the test equipment is properly warmed up and connected to the 2600B output terminals. Use 4-wire sensing for voltage.
  • Make sure the 2600B SMU is set to the correct source range.
  • Be sure the 2600B SMU output is turned on before making measurements.
  • Be sure the test equipment is set up for the proper function and range.
  • Allow the 2600B SMU output signal to settle before making a measurement.
  • Do not connect test equipment to the 2600B through a scanner, multiplexer, or other switching equipment.

VARIABLE - WARNING The maximum common-mode voltage (voltage between LO and chassis ground) is 250 V DC. Exceeding this value may cause a breakdown in insulation, creating a shock hazard that could result in personal injury or death.

VARIABLE - WARNING The FORCE and SENSE connectors of the 2600B are rated for connection to circuits rated Measurement Category I only, with transients rated less than 1500 VPEAK. Do not connect the 2600B terminals to CAT II, CAT III, or CAT IV circuits. Connections of the input/output connectors to circuits higher than CAT I can cause damage to the equipment or expose the operator to hazardous voltages.

VARIABLE - WARNING Hazardous voltages may be present on all output and guard terminals. To prevent electrical shock that could cause injury or death, never make or break connections to the 2600B while the instrument is powered on. Turn off the equipment from the front panel or disconnect the main power cord from the rear of the 2600B before handling cables. Putting the equipment into standby does not guarantee that the outputs are powered off if a hardware or software fault occurs.

Setting the source range and output value

Before testing each calibration point, you must properly set the source range and output value.

To set the source range and output value:

  1. Press the SRC key to select the appropriate source function.
  2. Press the navigation wheel to enable the edit mode (EDIT indicator on).
  3. When the cursor in the source display field is flashing, set the source range to the range being calibrated. Use the up or down RANGE keys to select the range.
  4. Use the navigation wheel and CURSOR keys to set the source value to the required value.
  5. Press the navigation wheel to complete editing.

Setting the measurement range

When simultaneously sourcing and measuring either voltage or current, the measure range is coupled to the source range, and you cannot independently control the measure range. Thus, it is not necessary for you to set the range when testing voltage or current measurement accuracy.

Current source accuracy

Follow the steps below to verify that the 2600B output current accuracy is within specified limits.

VARIABLE - NOTE An alternate procedure for 100 nA current accuracy is shown in the 1 nA to 100 nA Output current accuracy procedure for the 2634B, 2635B, or 2636B.

  1. With the power off, connect the digital multimeter to the 2600B terminals as shown in the figure titled "Connections for 100 nA to 1 A current ranges" located at the end of this procedure.
  2. Select the multimeter DC current measuring function.
  3. Select the Model 2602B, 2604B, 2612B, 2614B, 2634B, or 2636B single-channel display mode.
  4. Press the SRC key to source current, and make sure the source output is turned on.
  5. Verify output current accuracy for each of the currents for the 100 nA to 1 A ranges (for 2634B, 2635B, or 2636B, verify currents for the 1 µA to 1 A ranges) using the values listed in the following table for your model number. For each test point:
    • Select the correct source range.
    • Set the 2600B output current to the correct value.
    • Verify that the multimeter reading is within the limits given in the table below.

      2601B, 2602B, 2604B output current accuracy limits

      Source range

      Output current setting

      Output current limits
      (1 year, 18 °C to 28 °C)

      100 nA

      1 µA

      10 µA

      100 µA

      1 mA

      10 mA

      100 mA

      1 A

      90.000 nA

      0.90000 µA

      9.0000 µA

      90.000 µA

      0.90000 mA

      9.0000 mA

      90.000 mA

      0.90000 A

      89.846 nA to 90.154 nA

      0.89893 µA to 0.90107 µA

      8.9923 µA to 9.0077 µA

      89.913 µA to 90.087 µA

      0.89943 mA to 0.90057 mA

      8.9913 mA to 9.0087 mA

      89.943 mA to 90.057 mA

      0.89775 A to 0.90225 A

      3 A

      2.40000 A

      2.39456 A to 2.40544 A

       

      2611B, 2612B, 2614B output current accuracy limits

      Source range

      Output current setting

      Output current limits
      (1 year, 18 °C to 28 °C)

      100 nA

      1 µA

      10 µA

      100 µA

      1 mA

      10 mA

      100 mA

      1 A

      90.000 nA

      0.90000 µA

      9.0000 µA

      90.000 µA

      0.90000 mA

      9.0000 mA

      90.000 mA

      0.90000 A

      89.846 nA to 90.154 nA

      0.89893 µA to 0.90107µA

      8.9923 µA to 9.0077µA

      89.913 µA to 90.087 µA

      0.89943 mA to 0.90057 mA

      8.9913 mA to 9.0087 mA

      89.943 mA to 90.057mA

      0.89775 A to 0.90225 A

      1.5 A

      1.35000 A

      1.34519 A to 1.35481 A

      2634B, 2635B, 2636B output current accuracy limits

      Source range

      Output current setting

      Output current limits
      (1 year 18 °C to 28 °C)

      1 nA

      10 nA

      100 nA

      0.90000 nA

      9.0000 nA

      90.000 nA

      0.89665 nA to 0.90335 nA

      8.9815 nA to 9.0185 nA

      89.896 nA to 90.014 nA

      1 µA

      10 µA

      100 µA

      1 mA

      10 mA

      100 mA

      1 A

      0.90000 µA

      9.0000 µA

      90.000 µA

      0.90000 mA

      9.0000 mA

      90.000 mA

      0.90000 A

      0.89903 µA to 0.90097 µA

      8.9923 µA to 9.0077 µA

      89.913 µA to 90.087 µA

      0.89943 mA to 0.90057 mA

      8.9913 mA to 9.0087 mA

      89.943 mA to 90.057 mA

      0.89775 A to 0.90225 A

      1.5 A

      1.35000 A

      1.34519 A to 1.35481 A

  6. Repeat the procedure for negative output currents with the same magnitudes as those listed.
  7. Turn the output off, and change connections as shown in the figure titled "Connections for 1.5 A and 3 A current ranges" in Current source accuracy.
  8. Select the DMM DC voltage function.
  9. Repeat steps 4 through 6 for the 3 A range (Model 2601B, 2602B, or 2604B) or the 1.5 A range (Model 2611B, 2612B, 2614B, 2634B, 2635B, or 2636B). Calculate the current from the DMM voltage reading and the characterized 0.5 O resistance value: I=V/R.
  10. For the Model 2602B, 2604B, 2612B, 2614B, 2634B, or 2636B, repeat the above procedure for the other channel.

Model 2634B, 2635B, or 2636B current source accuracy 1 nA to 100 nA ranges

A suitably guarded and characterized 1 GO resistance standard, such as the Keithley Instruments Model 2600-STD-RES is necessary for the following measurements. Step-by-step procedures and connection diagrams for verifying the output current accuracy for the low current ranges are included with the Model 2600-STD-RES. The general process entails (for each current range) measuring the voltage across the characterized 1 GO resistor for a given output current and comparing the derived current to the current accuracy listed in the table titled "Model 2634B, 2635B, or 2636B output current accuracy limits."

  1. Connect the guarded resistance standard to the 2634B, 2635B, or 2636B and the DMM.
  2. Source the appropriate current for ± full-scale reading.
  3. Wait 30 seconds for stable measurement.
  4. Capture the reported voltage measurement.
  5. Calculate the current from measured voltage and characterized resistance.
  6. Verify output current accuracy for each of the currents for the 1 nA to 100 nA ranges listed in the table titled "Model 2634B, 2635B, or 2636B output current accuracy limits."

    Connections for 100 nA to 1 A current ranges

    Connections for 1.5 A and 3 A current ranges

Current measurement accuracy

Follow the steps below to verify that 2600B current measurement accuracy is within specified limits. The procedure involves applying accurate currents from the 2600B current source and then verifying that 2600B current measurements are within required limits.

  1. With the power off, connect the digital multimeter to the 2600B terminals as shown in the figure titled "Connections for 100 nA to 1 A current ranges" in Current source accuracy.
  2. Select the multimeter DC current function.
  3. Power up the 2600B.
  4. 2602B, 2604B, 2612B, 2614B, 2634B, or 2636B only: Select the single-channel display mode.
  5. Set the 2600B SMU to both source and measure current by pressing the SRC and then the MEAS keys. Make sure the source output is turned on.
  6. Verify measure current accuracy for each of the currents listed using the values listed in the following table for your model number. For each measurement:
    • Select the correct source range.
    • Set the 2600B output current such that the digital multimeter reading is the value indicated in the source current column of the table below. It may not be possible to set the current source to get exactly the required reading on the digital multimeter. Use the closest possible setting and modify the reading limits accordingly.
    • If necessary, press the TRIG key to display readings.
    • Verify that the 2600B current reading is within the limits given in the table below.
  7. Repeat the procedure for negative calibrator currents with the same magnitudes as those listed.

     

    2601B, 2602B, and 2604B current measurement accuracy limits

    Source and measure range1

    Source current2

    Current reading limits (1 year, 18° C to 28° C)

    100 nA

    90.000 nA

    89.855 nA to 90.145 nA

    1 µA

    0.9000 µA

    0.89928 µA to 0.90073 µA

    10 µA

    9.0000 µA

    8.9963 µA to 9.0038 µA

    100 µA

    90.000 µA

    89.957 µA to 90.043 µA

    1 mA

    0.9000 mA

    0.89962 mA to 0.90038 mA

    10 mA

    9.0000 mA

    8.9957 mA to 9.0043 mA

    100 mA

    90.000 mA

    89.962 mA to 90.038 mA

    1 A

    0.90000 A

    0.89823 A to 0.90177 A

    3 A

    2.4000 A

    2.3953 A to 2.4047 A

    1. Measure range coupled to source range when simultaneously sourcing and measuring current.

    2. As measured by precision digital multimeter. Use closest possible value and modify reading limits accordingly if necessary. See Measurement limit calculations.

     

    2611B, 2612B, and 2614B current measurement accuracy limits

    Source and measure range1

    Source current2

    Current reading limits (1 year, 18° C to 28° C)

    100 nA

    90.000 nA

    89.846 nA to 90.154 nA

    1 µA

    0.9000 µA

    0.89928 µA to 0.90073 µA

    10 µA

    9.0000 µA

    8.9963 µA to 9.0038 µA

    100 µA

    90.000 µA

    89.957 µA to 90.043 µA

    1 mA

    0.9000 mA

    0.89962 mA to 0.90038 mA

    10 mA

    9.0000 mA

    8.9957 mA to 9.0043 mA

    100 mA

    90.000 mA

    89.962 mA to 90.038 mA

    1 A

    0.90000 A

    0.89823 A to 0.90177 A

    1.5 A

    1.3500 A

    1.34583 A to 1.35418 A

    1. Measure range coupled to source range when simultaneously sourcing and measuring current.

    2. As measured by precision digital multimeter. Use closest possible value and modify reading limits accordingly if necessary. See Measurement limit calculations.

     

    2634B, 2635B, and 2636B current measurement accuracy limits

    Source and measure range1

    Source current2

    Current reading limits (1 year, 18° C to 28° C)

    100 pA to 100 nA ranges

    See Model 2634B, 2635B, 2636B current measurement accuracy 100 pA to 100 nA ranges

    1 µA

    0.9000 µA

    0.89938 µA to 0.90063 µA

    10 µA

    9.0000 µA

    8.9963 µA to 9.0038 µA

    100 µA

    90.000 µA

    89.957 µA to 90.043 µA

    1 mA

    0.9000 mA

    0.89962 mA to 0.90038 mA

    10 mA

    9.0000 mA

    8.9957 mA to 9.0043 mA

    100 mA

    90.000 mA

    89.962 mA to 90.038 mA

    1 A

    0.90000 A

    0.89823 A to 0.90177 A

    1.5 A

    1.3500 A

    1.34583 A to 1.35418 A

    1. Measure range coupled to source range when simultaneously sourcing and measuring current.

    2. As measured by precision digital multimeter. Use closest possible value and modify reading limits accordingly if necessary. See Measurement limit calculations.

  8. Turn the output off and change connections as shown adding the 0.5 O 250 W resistor (see the figure titled "Connections for 1.5 A and 3 A current ranges" in Current source accuracy).
  9. Select the DMM voltage function.

    Repeat steps 4 through 6 for the 3 A range (2601B, 2602B, or 2604B) or 1.5 A range (2611B, 2612B, 2614B, 2634B, 2635B, or 2636B). Calculate the current from the DMM voltage reading and characterized 0.5 O resistance value.

  10. For the 2602B, 2604B, 2612B, 2614B, 2634B, or 2636B, repeat the above procedure for the other channel.

Model 2634B, 2635B, and 2636B current measurement accuracy 100 pA to 100 nA ranges

A suitably guarded and characterized 1 GO resistance standard, such as the Keithley Instruments Model 2600-STD-RES, is necessary for the following measurements. Step-by-step procedures and connection diagrams for verifying the current measurement accuracy for the low current ranges are included with the 2600-STD-RES. The general process entails forcing a characterized voltage across the 1 GO resistor and comparing the 2634B, 2635B, or 2636B measured results against the standard resistance and voltage derived current.

  1. Characterize the appropriate ±V source values with the DMM according to the following table.

     

    2634B, 2635B, and 2636B characterization of Voltage Source settings

    Low Current Range

    Voltage Source

    Compliance

    100 pA (not available on 2634B)

    ±90.000 mV

    1.5 A

    1 nA

    ±0.90000 V

    1.5 A

    10 nA

    ±9.0000 V

    1.5 A

    100 nA

    ±90.000 V

    100 mA

  2. Characterize the 2634B, 2635B, or 2636B current ranges.

    a. Connect guarded resistance standard.

    b. Source the appropriate voltage for ± full-scale reading.

    c. Wait 30 seconds for stable measurement.

    d. Capture the 2634B, 2635B, or 2636B reported current measurement.

    e. Verify output current accuracy for each of the currents for the 100 pA to 100 nA ranges listed in the following table.

    2634B, 2635B, and 2636B current measurement accuracy limits (100 pA to 100 nA)

    Measure range

    Source current1

    Current reading limits (1 year, 18 °C to 28 °C)

    100 pA (not available on 2634B)

    90.000 pA

    89.785 pA to 90.215 pA

    1 nA

    0.90000 nA

    0.89841 nA to 0.90159 nA

    10 nA

    9.0000 nA

    8.9835 nA to 9.0165 nA

    100 nA

    90.000 nA

    89.906 nA to 90.094 nA

    1. As measured by precision digital multimeter. Use closest possible value and modify reading limits accordingly if necessary. See Measurement limit calculations.

Voltage source accuracy

Follow the steps below to verify that the 2600B output voltage accuracy is within specified limits. To perform this test, you set the output voltage to each full-range value and measure the voltages with a precision digital multimeter.

  1. With the power off, connect the digital multimeter (DMM) to the 2600B output terminals using 4-wire connections, as shown below.

    Connections for voltage verification

  2. Set the multimeter measuring function to DC volts.
  3. On a two‑channel instrument (2602B, 2604B, 2612B, 2614B, 2634B, or 2636B), select the single-channel display mode.
  4. Press the SRC key to source voltage and make sure the source output is turned on.
  5. Enable the 2600B 4-wire (remote sense) mode:

    a. Press the CONFIG key and then the SRC key.

    b. Select V‑SOURCE > SENSE-MODE > 4-WIRE.

  6. Verify output voltage accuracy for each of the voltages listed in the following table for your model number. For each test point:
    • Select the correct source range.
    • Set the 2600B output voltage to the indicated value.
    • Verify that the multimeter reading is within the limits given in the table.

       

      2601B, 2602B, 2604B output voltage accuracy limits

      Source range

      Output voltage setting

      Output voltage limits

      (1 year, 18 °C to 28 °C)

      100 mV

      1 V

      6 V

      40 V

      90.000 mV

      0.90000 V

      5.4000 V

      36.000 V

      89.732 mV to 90.268 mV

      0.89942 V to 0.90058 V

      5.39712 V to 5.40288 V

      35.9808 V to 36.0192 V

      2611B, 2612B, 2614B, 2634B, 2635B, 2636B output voltage accuracy limits

      Source range

      Output voltage setting

      Output voltage limits

      (1 year, 18 °C to 28 °C)

      200 mV

      2 V

      20 V

      200 V

      180.000 mV

      1.80000 V

      18.000 V

      180.000 V

      179.589 mV to 180.411 mV

      1.79904 V to 1.80096 V

      17.9914 V to 18.0086 V

      179.914 V to 180.086 V

  7. Repeat the procedure for negative output voltages with the same magnitudes as those listed in the previous table, as applicable.
  8. For a two‑channel instrument (2602B, 2604B, 2612B, 2614B, 2634B, or 2636B), repeat the procedure for the other channel.

Voltage measurement accuracy

Follow the steps below to verify that the 2600B voltage measurement accuracy is within specified limits. To perform this test, you set the source voltage, as measured by a precision digital multimeter, and then verify that the 2600B voltage readings are within required limits.

  1. With the power off, connect the digital multimeter to the 2600B output terminals using 4‑wire connections (use the same connections as in the figure titled "Connections for voltage verification" in Voltage source accuracy).
  2. Select the multimeter DC voltage function.
  3. Select the 2602B, 2604B, 2612B, 2614B, 2634B, or 2636B single-channel display mode.
  4. Enable the 2600B 4-wire (remote sense) mode:

    a. Press the CONFIG key and then the MEAS key.

    b. Select V‑MEAS > SENSE-MODE > 4-WIRE.

  5. Set the 2600B SMU to both source and measure voltage by pressing the SRC and then the MEAS keys.
  6. Make sure the source output is turned on (if off, press the OUTPUT ON/OFF control).
  7. Verify voltage measurement accuracy for each of the voltages listed in the table (see below). For each test point:
    • Select the correct source range.
    • Set the 2600B output voltage such that the digital multimeter reading is the value indicated in the source voltage column of the table below. It may not be possible to set the voltage source to get exactly the required reading on the digital multimeter. Use the closest possible setting and modify the reading limits accordingly.
    • Verify that the 2600B voltage reading is within the limits given in the table.

      Repeat the procedure for negative source voltages with the same magnitudes as those listed in the table (see below).

  8. For the 2602B, 2604B, 2612B, 2614B, 2634B, or 2636B, repeat the above procedure for the other channel.

    2601B, 2602B, 2604B voltage measurement accuracy limits

    Source and measure range1

    Source voltage2

    Voltage reading limits

    (1 year, 18 °C to 28 °C)

    100 mV

    90.000 mV

    89.8365 to 90.1635 mV

    1 V

    0.90000 V

    0.899665 to 0.900335 V

    6 V

    5.4000 V

    5.39819 to 5.40181 V

    40 V

    36.000 V

    35.9866 to 36.0134 V

    1. Measure range coupled to source range when simultaneously sourcing and measuring voltage.
    2. As measured by precision digital multimeter. Use closest possible value and modify reading limits accordingly if necessary.

2611B, 2612B, 2614B, 2634B, 2635B, 2636B voltage measurement accuracy limits

Source and measure range1

Source voltage2

Voltage reading limits (1 year, 18 °C to 28 °C)

200 mV

180.000 mV

179.748 mV to 180.252 mV

2 V

1.80000 V

1.79929 V to 1.80071 V

20 V

18.0000 V

17.9923 V to 18.0077 V

200 V

180.000 V

179.923 V to 180.077 V

1. Measure range coupled to source range when simultaneously sourcing and measuring voltage.
2. As measured by precision digital multimeter. Use closest possible value and modify reading limits accordingly if necessary.

Adjustment

VARIABLE - WARNING The information in this section is intended for qualified service personnel only, as described by the types of product users in the Safety precautions pages, provided at the beginning of this document. Do not attempt these procedures unless you are qualified to do so.

Some of these procedures may expose you to hazardous voltages, that if contacted, could cause personal injury or death. Use appropriate safety precautions when working with hazardous voltages.

Use the procedures in this section to calibrate the 2600B.

These procedures require accurate test equipment to measure precise DC voltages and currents.

VARIABLE - NOTE Product specifications are subject to change. Listed uncertainties and test limits are provided only as an example. Always verify values against actual product specifications.

Environmental conditions

Temperature and relative humidity

Conduct the adjustment procedures at an ambient temperature of 18 °C to 28 °C, with relative humidity of less than 70 percent (unless otherwise noted).

VARIABLE - NOTE Product specifications that are listed as 18 °C to 28 °C assume adjustment has been done at 23 °C. If the 2600B is adjusted at a different temperature, the specifications apply to ±5 °C of that temperature.

Line power

The 2600B requires a line voltage of 100 V to 240 V at a line frequency of 50 Hz or 60 Hz. The instrument must be adjusted within this range.

Warmup period

Allow the 2600B to warm up for at least two hours before adjusting the instrument.

If the instrument has been subjected to temperature extremes (those outside the ranges stated above), allow additional time for the internal temperature of the instrument to stabilize. Typically, allow one extra hour to stabilize an instrument that is 10 °C outside the specified temperature range.

Allow the test equipment to warm up for the minimum time specified by the manufacturer.

Adjustment considerations

When performing the adjustment procedures:

  • Make sure that the test equipment is properly warmed up and connected to the correct 2600B terminals.
  • Always allow the source signal to settle before adjusting each point.
  • Do not connect test equipment to the 2600B through a scanner or other switching equipment.
  • If an error occurs during adjustment, the 2600B generates an appropriate error message. See the Error summary list for more information.

VARIABLE - WARNING The maximum common-mode voltage (voltage between LO and chassis ground) is 250 V DC. Exceeding this value may cause a breakdown in insulation, creating a shock hazard that could result in personal injury or death.

VARIABLE - WARNING The FORCE and SENSE connectors of the 2600B are rated for connection to circuits rated Measurement Category I only, with transients rated less than 1500 VPEAK. Do not connect the 2600B terminals to CAT II, CAT III, or CAT IV circuits. Connections of the input/output connectors to circuits higher than CAT I can cause damage to the equipment or expose the operator to hazardous voltages.

VARIABLE - WARNING Hazardous voltages may be present on all output and guard terminals. To prevent electrical shock that could cause injury or death, never make or break connections to the 2600B while the instrument is powered on. Turn off the equipment from the front panel or disconnect the main power cord from the rear of the 2600B before handling cables. Putting the equipment into standby does not guarantee that the outputs are powered off if a hardware or software fault occurs.

Adjustment cycle

Perform an adjustment at least once a year to make sure the instrument meets or exceeds its specifications.

Recommended calibration adjustment equipment

The table below contains the recommended equipment for the calibration adjustment procedures. You can use alternate equipment as long as that equipment has specifications equal to or greater than those listed in the table. When possible, test equipment specifications should be at least four times better than corresponding 2600B specifications.

 

Recommended calibration equipment

Description

Manufacturer/Model

Accuracy

 

 

Digital Multimeter

Keithley Instruments
Model 2002

or

Agilent 3458A

DC voltage1

(2601B, 2602B, 2604B)

 

 

 

DC voltage2

(2611B, 2612B, 2614B, 2634B, 2635B, 2636B)

 

 

 

DC current3

 

 

 

 

 

90 mV:

0.9 V:

5.4 V:

36 V:

 

190 mV:

1.8 V:

18 V:

180 V:

 

90 nA:

0.9 A:

9 A:

90 A:

0.9 mA:

9 mA:

90 mA:

0.9 A:

±8 ppm

±5 ppm

±4 ppm

±6 ppm

 

±5 ppm

±4 ppm

±6 ppm

±6 ppm

 

±430 ppm

±45 ppm

±25 ppm

±23 ppm

±20 ppm

±20 ppm

±35 ppm

±110 ppm

0.5 O, 250 W, 0.1%
Precision Resistor

Isotek

RUG-Z-R500-0.1-TK3

Resistance4

0.5 O:

±125 ppm

50 O Resistors (2)

Any suitable5

 

 

 

1 GO, 200V, 1%
standard

Keithley Instruments

Model 2600-STD-RES

Resistance6

1 GO:

±250 ppm

1. 90-day specifications show full-range accuracy of recommended model used for specified calibration point.

2. Id.

3. Id.

4. Resistor used to calibrate Model 2601B, 2602B, 2604B 3 A and 10 A ranges and Model 2611B, 2612B, 2614B, 2634B, 2635B, 2636B 1.5 A and 10 A ranges should be characterized to uncertainty shown using resistance function of a digital multimeter before use.

5. Used for contact check calibration. Characterize resistors using ohms function of digital multimeter before use.

6. Standard is a guarded and characterized 1 GO resistor used to test Model 2634B, 2635B, or 2636B 100 pA to 100 nA current ranges.

Calibration adjustment overview

The following topics contain an overview of the entire calibration adjustment procedure.

Parameter values

The full-scale parameters are 90 percent of full-scale as indicated (see the table in Step sequence). Note that you cannot send a value of 0 for the two zero parameters. Instead, you must send a very small value, such as 1e-30 or -1e-30.

Sense modes

The preceding table for your specific model lists the sense modes for the calibration steps. Note that each source and measure range is calibrated using the LOCAL sense mode.

In addition, for the 2601B, 2602B, and 2604B, the 100 mV source and measure range is also calibrated using the REMOTE sense mode, and the 1 V and 1 mA source ranges are also calibrated using the CALA sense mode.

For the Model 2611B, 2612B, 2614B, 2634B, 2635B, and 2636B, the 200 mV source and measure range is also calibrated using the REMOTE sense mode, and the 2 V and 1 mA source ranges are also calibrated using the CALA sense mode.

Step sequence

Adjustment steps must be performed in a specific sequence. See the following table for your model. All steps are performed using 2-wire (local sensing) except as noted. Adjustment of each range is performed as a four-point calibration:

  • + ZERO
  • + FULL SCALE
  • - ZERO
  • - FULL SCALE

VARIABLE - NOTE Before performing the adjustment steps, refer to Parameter values and Sense modes.

 

2601B, 2602B, or 2604B calibration steps

Function1

Calibration steps2

Calibration points4

Sense mode5

Voltage Source

and Measure

100 mV

100 mV

1 V

1 V

6 V

40 V

±1e-30, ±90 mV

±1e-30, ±90 mV

±1e-30, ±0.9 V

±1e-30, ±0.9 V

±1e-30, ±5.4 V

±1e-30, ±36 V

smuX.SENSE_LOCAL

smuX.SENSE_REMOTE

smuX.SENSE_LOCAL

smuX.SENSE_CALA

smuX.SENSE_LOCAL

smuX.SENSE_LOCAL

Current Source and Measure

100 nA

1 µA

10 µA

100 µA

1 mA

1 mA

10 mA

100 mA

1 A

3 A

10 A3

±1e-30, ±90 nA

±1e-30, ±0.9 µA

±1e-30, ±9 µA

±1e-30, ±90 µA

±1e-30, ±0.9 mA

±1e-30, ±0.9 mA

±1e-30, ±9 mA

±1e-30, ±90 mA

±1e-30, ±0.9 A

±1e-30, ±2.4 A

±1e-30, ±2.4 A

smuX.SENSE_LOCAL

smuX.SENSE_LOCAL

smuX.SENSE_LOCAL

smuX.SENSE_LOCAL

smuX.SENSE_LOCAL

smuX.SENSE_CALA

smuX.SENSE_LOCAL

smuX.SENSE_LOCAL

smuX.SENSE_LOCAL

smuX.SENSE_LOCAL

smuX.SENSE_LOCAL

1. Calibrate only the source for the CALA sense steps.

2. Steps must be performed in the order shown.

3. 10 A range for changing calibration of range only and is not available for normal use.

4. Do not use actual 0 values for zero calibration points. Send very small values such as ±1e-30. Calibration polarities must also be set as shown in the procedures.

5. Output must be off before changing to the CALA sense mode.

2611B, 2612B, or 2614 calibration steps

Function1

Calibration steps2

Calibration points3

Sense mode4

Voltage Source

and Measure

200 mV

200 mV

2 V

2 V

20 V

200 V

±1e-30, ±180 mV

±1e-30, ±180 mV

±1e-30, ±1.8 V

±1e-30, ±1.8 V

±1e-30, ±18 V

±1e-30, ±180 V

smuX.SENSE_LOCAL

smuX.SENSE_REMOTE

smuX.SENSE_LOCAL

smuX.SENSE_CALA

smuX.SENSE_LOCAL

smuX.SENSE_LOCAL

Current Source and Measure

100 nA

1 µA

10 µA

100 µA

1 mA

1 mA

10 mA

100 mA

1 A

1.5 A

10 A

±1e-30, ±90 nA

±1e-30, ±0.9 µA

±1e-30, ±9 µA

±1e-30, ±90 µA

±1e-30, ±0.9 mA

±1e-30, ±0.9 mA

±1e-30, ±9 mA

±1e-30, ±90 mA

±1e-30, ±0.9 A

±1e-30, ±1.35 A

±1e-30, ±2.4 A

smuX.SENSE_LOCAL

smuX.SENSE_LOCAL

smuX.SENSE_LOCAL

smuX.SENSE_LOCAL

smuX.SENSE_LOCAL

smuX.SENSE_CALA

smuX.SENSE_LOCAL

smuX.SENSE_LOCAL

smuX.SENSE_LOCAL

smuX.SENSE_LOCAL

smuX.SENSE_LOCAL

1. Calibrate only the source for the CALA sense steps.

2. Steps must be performed in the order shown.

3. Do not use actual 0 values for zero calibration points. Send very small values such as ±1e-30. Calibration polarities must also be set as shown in the procedures.

4. Output must be off before changing to the CALA sense mode.

 

2634B, 2635B, 2636B calibration steps

Function1

Calibration steps2

Calibration points3

Sense mode4

Voltage Source

and Measure

200 mV

200 mV

2 V

2 V

20 V

200 V

±1e-30, ±180 mV

±1e-30, ±180 mV

±1e-30, ±1.8 V

±1e-30, ±1.8 V

±1e-30, ±18 V

±1e-30, ±180 V

smuX.SENSE_LOCAL

smuX.SENSE_REMOTE

smuX.SENSE_LOCAL

smuX.SENSE_CALA

smuX.SENSE_LOCAL

smuX.SENSE_LOCAL

Current Source and Measure

100 pA5, 6

1 nA

10 nA

100 nA

1 µA

10 µA

100 µA

1 mA

1 mA

10 mA

100 mA

1 A

1.5 A

±1e-30, ±90 pA

±1e-30, ±0.9 nA

±1e-30, ±9 nA

±1e-30, ±90 nA

±1e-30, ±0.9 µA

±1e-30, ±9 µA

±1e-30, ±90 µA

±1e-30, ±0.9 mA

±1e-30, ±0.9 mA

±1e-30, ±9 mA

±1e-30, ±90 mA

±1e-30, ±0.9 A

±1e-30, ±1.35 A

smuX.SENSE_LOCAL

smuX.SENSE_LOCAL

smuX.SENSE_LOCAL

smuX.SENSE_LOCAL

smuX.SENSE_LOCAL

smuX.SENSE_LOCAL

smuX.SENSE_LOCAL

smuX.SENSE_LOCAL

smuX.SENSE_CALA

smuX.SENSE_LOCAL

smuX.SENSE_LOCAL

smuX.SENSE_LOCAL

smuX.SENSE_LOCAL

1. Calibrate only the source for the CALA sense steps.

2. Steps must be performed in the order shown.

3. Do not use actual 0 values for zero calibration points. Send very small values such as ±1e-30. Calibration polarities must also be set as shown in the procedures.

4. Output must be off before changing to the CALA sense mode.

5. For Current Measure only.

6. This range is only available on the 2635B and 2636B.

Calibration commands quick reference

The following table summarizes remote calibration commands. For a more complete description of these commands, refer to the TSP command reference.

Calibration commands

 

Command**

Description

smuX.cal.adjustdate = adjustDate

Stores the date of the last calibration adjustment.

smuX.cal.date = calDate

Stores the calibration date of the active calibration set.

smuX.cal.due = calDue

Stores the calibration due date for the next calibration (calDue of 0 indicates date not set).

smuX.cal.lock()

Disables the commands that change calibration settings.

smuX.cal.password = "newPassword"

Stores the password required to enable calibration (newPassword is the new password).

smuX.cal.polarity = calPolarity

Controls which calibration constants are used for all subsequent measurements:

smuX.CAL_AUTO (automatic polarity).

smuX.CAL_NEGATIVE (negative polarity).

smuX.CAL_POSITIVE (positive polarity).

smuX.cal.restore(calset)

Loads a stored set of calibration constants:

smuX.CALSET_NOMINAL (nominal constants).

smuX.CALSET_FACTORY (factory constants).

smuX.CALSET_DEFAULT (normal constants).

smuX.CALSET_PREVIOUS (previous constants).

smuX.cal.save()

Stores the active calibration constants to nonvolatile memory as the DEFAULT calibration set.

calstate = smuX.cal.state

Returns the present calibration state:

smuX.CALSTATE_CALIBRATING

smuX.CALSTATE_LOCKED

smuX.CALSTATE_UNLOCKED

smuX.cal.unlock("password")

Unlocks calibration (default password: KI0026XX)

smuX.measure.calibratei(range,

cp1Measured, cp1Reference,

cp2Measured, cp2Reference)

Adjusts the current measurement range:*

±range (measurement range to adjust).

cp1Measured (2600B measured value for point 1).

cp1Reference (reference measurement for point 1).

cp2Measured (2600B measured value for point 2).

cp2Reference (reference measurement for point 2).

smuX.measure.calibratev(range,

cp1Measured, cp1Reference,

cp2Measured, cp2Reference)

Adjusts the voltage measurement range:*

±range (measurement range to adjust).

cp1Measured (2600B measured value for point 1).

cp1Reference (reference measurement for point 1).

cp2Measured (2600B measured value for point 2).

cp2Reference (reference measurement for point 2).

smuX.source.calibratei(range,

cp1Expected, cp1Reference,

cp2Expected, cp2Reference)

Adjusts the current source range:*

±range (source range to adjust).

cp1Expected (source value programmed for point 1).

cp1Reference (reference measurement for point 1).

cp2Expected (source value programmed for point 2).

cp2Reference (reference measurement for point 2).

smuX.source.calibratev(range,

cp1Expected, cp1Reference,

cp2Expected, cp2Reference)

Adjusts the voltage source range:*

±range (source range to adjust).

cp1Expected (source value programmed for point 1).

cp1Reference (reference measurement for point 1).

cp2Expected (source value programmed for point 2).

cp2Reference (reference measurement for point 2).

smuX.contact.calibratelo(

cp1Measured, cp1Reference,

cp2Measured, cp2Reference)

Adjusts the low/sense low contact check measurement.

cp1Measured (value measured by the SMU for point 1).

cp1Reference (the reference measurement for point 1).

cp2Measured (value measured by SMU for point 2).

cp2Reference (reference measurement for point 2).

smuX.contact.calibratehi(

cp1Measured, cp1Reference,

cp2Measured, cp2Reference)

Adjusts the high/sense high contact check measurement.

cp1Measured (value measured by SMU for point 1).

cp1Reference (reference measurement for point 1).

cp2Measured (value measured by SMU for point 2).

cp2Reference (reference measurement for point 2)

* Perform point 1 at approximately 0% of range; perform point 2 at approximately 90% of range. See Step sequence for points.

*** smuX can be smua for channel A or smub for channel B

Adjustment procedure

Use the following procedure to perform remote calibration adjustment by sending commands over a communications interface. The remote commands and appropriate parameters are separately summarized for each step.

Step 1. Prepare the 2600B for adjustment

  1. Connect the 2600B to the controller IEEE-488 interface, RS-232 port, USB interface, or LAN using an appropriate interface cable.
  2. Turn on the 2600B and the test equipment. Allow them to warm up for at least two hours before performing adjustment.
  3. Make sure the IEEE-488, RS-232, or LAN interface parameters are set up properly. To configure the interface, press the MENU key, and then select RS232, LAN, or GPIB, as applicable; configuration of the USB interface is not necessary so it is not available.

Step 2. Voltage calibration adjustment

  1. Connect the 2600B SMU to the digital multimeter using the 4-wire connections shown in the figure below. Select the multimeter DC voltage function.

    Connections for voltage calibration

  2. Send the following commands to initialize voltage calibration:

    smua.cal.unlock("KI0026XX")

    smua.reset()

    smua.source.func = smua.OUTPUT_DCVOLTS

VARIABLE - NOTE It is not necessary to set the measure range when following this procedure for calibration because the measure range is locked to the source range when measuring the source function.

  1. Perform each calibration adjustment for the voltage source and measure function step listed in Step sequence as follows:
    1. Select the range being calibrated with this command:

      smua.source.rangev = range

    2. Select the correct sense mode based on the calibration step for the voltage source and measure function from the Step sequence, for example:

      smua.sense = smua.SENSE_LOCAL

    3. Select positive polarity, and then set the source output to the positive zero value. For example:

      smua.cal.polarity = smua.CAL_POSITIVE
      smua.source.levelv = 1e‑30

    4. Turn on the output:

      smua.source.output = smua.OUTPUT_ON

    5. Allow the readings to settle, then get both the multimeter and 2600B voltage readings at the positive zero value (the 2600B measurement is not necessary if this calibration step is being done on the CALA sense mode). The two measurements should be made as close as possible in time. Use this command for the 2600B:

      Z_rdg = smua.measure.v()

    6. Turn off the output:

      smua.source.output = smua.OUTPUT_OFF

    7. Set the source output to the positive full-scale value for the present range, for example:

      smua.source.levelv = 0.9 (Model 2601B, 2602B, or 2604B)
      smua.source.levelv = 1.8 (Model 2611B, 2612B, 2614B, 2634B, 2635B, 2636B)

    8. Turn on the output:

      smua.source.output = smua.OUTPUT_ON

    9. Allow the readings to settle, then get both the multimeter and 2600B voltage readings at the positive full-scale output value (the 2600B measurement is not necessary if this calibration step is being done on the CALA sense mode). The two measurements should be made as close as possible in time. Use this command for the 2600B:

      FS_rdg = smua.measure.v()

    10. Turn off the output:

      smua.source.output = smua.OUTPUT_OFF

    11. Send the source calibration command using the range, +zero and +FS multimeter readings, and +zero and +FS source values for the parameters:

      smua.source.calibratev(range, src_Z, DMM_Z_rdg, src_FS, DMM_FS_rdg)

      Where:

      range

      = The present calibration range

      src_Z

      = The +zero 2600B programmed source output value

      DMM_Z_rdg

      = The +zero DMM measurement

      src_FS

      = The +FS 2600B programmed source output value

      DMM_FS_rdg

      = The +FS DMM measurement

      Typical values for the 2601B, 2602B, or 2604B 1 V range:

      smua.source.calibratev(1, 1e-30, 1e-5, 0.9, 0.903)

      Typical values for the 2611B, 2612B, 2614B, 2634B, 2635B, or 2636B 2 V range:

      smua.source.calibratev(2, 1e-30, 1e-5, 1.8, 1.802)

    12. If this step is not on the CALA sense mode, send the measure calibration command using the multimeter and 2600B readings, and the range setting for the parameters. For example:

      smua.measure.calibratev(range, Z_rdg, DMM_Z_rdg, FS_rdg, DMM_FS_rdg)

      Where:

      range

      = The present calibration range

      Z_rdg

      = The +zero 2600B measurement

      DMM_Z_rdg

      = The +zero DMM measurement

      FS_rdg

      = The +FS 2600B measurement

      DMM_FS_rdg

      = The +FS DMM measurement

      Typical 2601B, 2602B, or 2604B 1 V range values:

      smua.measure.calibratev(1, 1e-4, 1e-5, 0.92, 0.903)

      Typical 2611B, 2612B, 2614B, 2634B, 2635B, or 2636B 2 V range values:

      smua.measure.calibratev(2, 1e-4, 1e-5, 1.82, 1.802)

    13. Select negative polarity, then set the source output to the negative zero value, for example:

      smua.cal.polarity = smua.CAL_NEGATIVE
      smua.source.levelv = -1e-30

    14. Turn on the output:

      smua.source.output = smua.OUTPUT_ON

    15. Allow the readings to settle, then get both the multimeter and 2600B voltage readings at the negative zero value (the 2600B measurement is not necessary if this calibration step is being done on the CALA sense mode). The two measurements should be made as close as possible in time. Use this command for the 2600B:

      Z_rdg = smua.measure.v()

    16. Turn off the output:

      smua.source.output = smua.OUTPUT_OFF

    17. Set the source output to the negative full-scale value, for example:

      smua.source.levelv = -0.9 (Models 2601B, 2602B, or 2604B)
      smua.source.levelv = -1.8 (Models 2611B, 2612B, 2614B, 2634B, 2635B, or 2636B)

    18. Turn on the output:

      smua.source.output = smua.OUTPUT_ON

    19. Allow the readings to settle, then get both the multimeter and 2600B voltage readings at the negative full-scale output value (the 2600B measurement is not necessary if this calibration step is being done on the CALA sense mode). The two measurements should be made as close as possible in time. Use this command for the 2600B:

      FS_rdg = smua.measure.v()

    20. Turn off the output:

      smua.source.output = smua.OUTPUT_OFF

    21. Send the source calibration command using the range, -zero and -FS multimeter readings, and -zero and -FS source values for the parameters:

      smua.source.calibratev(-range, src_Z, DMM_Z_rdg, src_FS, DMM_FS_rdg)

      Where:

      -range

      = The negative of the present calibration range

      src_Z

      = The -zero 2600B programmed source output value

      DMM_Z_rdg

      = The -zero DMM measurement

      src_FS

      = The -FS 2600B programmed source output value

      DMM_FS_rdg

      = The -FS DMM measurement

      Typical values for the 2601B, 2602B, or 2604B 1 V range:

      smua.source.calibratev(-1, -1e-30, -1e-4, -0.9, -0.896)

      Typical values for the 2611B, 2612B, 2614B, 2634B, 2635B, or 2636B 2 V range:

      smua.source.calibratev(-2, -1e-30, -1e-4, -1.8, -1.805)

    22. If this step is not on the CALA sense mode, send the measure calibration command using the multimeter and 2600B readings and range setting for the parameters:

      smua.measure.calibratev(-range, Z_rdg, DMM_Z_rdg, FS_rdg, DMM_FS_rdg)

      Where:

      -range

      = The negative of the present calibration range

      Z_rdg

      = The -zero 2600B measurement

      DMM_Z_rdg

      = The -zero DMM measurement

      FS_rdg

      = The -FS 2600B measurement

      DMM_FS_rdg

      = The -FS DMM measurement

      Typical 2601B, 2602B, or 2604B 1 V range values:

      smua.measure.calibratev(-1, -1e-4, -1e-6, -0.89, -0.896)

      Typical 2611B, 2612B, 2614B, 2634B, 2635B, or 2636B 2 V range values:

      smua.measure.calibratev(-2, -1e-4, -1e-6, -1.81, -1.805)

  2. Be sure to complete each of the 22 steps of C for all six voltage steps in Step sequence before performing current calibration.
  3. Select automatic polarity mode:

    smua.cal.polarity = smua.CAL_AUTO

Step 3. Current calibration adjustment

  1. Connect the 2600B SMU to the digital multimeter (see the following figure), and then select the multimeter DC current function.
  2. Send this command to initialize current calibration:

    smua.source.func = smua.OUTPUT_DCAMPS

    Connections for 100 nA to 1 A current ranges

VARIABLE - NOTE It is not necessary to set the measure range when following this procedure for calibration because the measure range is locked to the source range when measuring the source function.

  1. Perform each calibration step listed in Model 2601B, 2602B, 2604B step sequence, Model 2611B, 2612B, 2614B step sequence, or Model 2634B, 2635B, 2636B step sequence for the 100 nA through 1 A ranges as follows:
    1. Select the range being calibrated:

      smua.source.rangei = range

    2. Select the correct sense mode based on the calibration step Model 2601B, 2602B, 2604B step sequence, Model 2611B, 2612B, 2614B step sequence, or Model 2634B, 2635B, 2636B step sequence, for example:

      smua.sense = smua.SENSE_LOCAL

    3. Select positive polarity, then set the source output to the positive zero value:

      smua.cal.polarity = smua.CAL_POSITIVE

      smua.source.leveli = 1e-30

    4. Turn on the output:

      smua.source.output = smua.OUTPUT_ON

    5. Allow the readings to settle, then get both the multimeter and 2600B current readings at the positive zero value (the 2600B measurement is not necessary if this calibration step is being done on the CALA sense mode). The two measurements should be made as close as possible in time. Use this command for the 2600B:

      Z_rdg = smua.measure.i()

    6. Turn off the output:

      smua.source.output = smua.OUTPUT_OFF

    7. Set the source output to the positive full-scale value for the present range, for example:

      smua.source.leveli = 90e-3

    8. Turn on the output:

      smua.source.output = smua.OUTPUT_ON

    9. Allow the readings to settle, then get both the multimeter and 2600B current readings at the positive full-scale output value (the 2600B measurement is not necessary if calibration is being done on the CALA sense mode). The two measurements should be made as close as possible in time. Use this command for the 2600B:

      FS_rdg = smua.measure.i()

    10. Turn off the output:

      smua.source.output = smua.OUTPUT_OFF

    11. Send the source calibration command using the range, zero and +FS multimeter readings, and zero and +FS source values for the parameters:

      smua.source.calibratei(range, src_Z, DMM_Z_rdg, src_FS, DMM_FS_rdg)

      Where:

      range

      = The present calibration range

      src_Z

      = The +zero 2600B source output value

      DMM_Z_rdg

      = The +zero DMM measurement

      src_FS

      = The +FS 2600B source output value

      DMM_FS_rdg

      = The +FS DMM measurement

      Typical values for the 100 mA range:

      smua.source.calibratei(100e-3, 1e-30, 1e-5, 90e-3, 88e-3)

    12. If this step is not on the CALA sense mode, send the measure calibration command using the multimeter and 2600B readings, and range setting for the parameters:

      smua.measure.calibratei(range, Z_rdg, DMM_Z_rdg, FS_rdg, DMM_FS_rdg)

      Where:

      range

      = The present calibration range

      Z_rdg

      = +zero 2600B measurement

      DMM_Z_rdg

      = The +zero DMM measurement

      FS_rdg

      = +FS 2600B measurement

      DMM_FS_rdg

      = The +FS DMM measurement

      Typical 100 mA range values:

      smua.measure.calibratei(100e-3, 1e-6, 1e-5, 0.089, 0.088)

    13. Select negative polarity, then set the source output to the negative zero value, for example:

      smua.cal.polarity = smua.CAL_NEGATIVE
      smua.source.leveli = -1e-30

    14. Turn on the output:

      smua.source.output = smua.OUTPUT_ON

    15. Allow the readings to settle, then get both the multimeter and 2600B current readings at the negative zero value (the 2600B measurement is not necessary if this calibration step is being done on the CALA sense). The two measurements should be made as close as possible in time. Use this command for the 2600B:

      Z_rdg = smua.measure.i()

    16. Turn off the output:

      smua.source.output = smua.OUTPUT_OFF

    17. Set the source output to the negative full-scale value, for example:

      smua.source.leveli = -90e-3

    18. Turn on the output:

      smua.source.output = smua.OUTPUT_ON

    19. Allow the readings to settle, then get both the multimeter and 2600B current readings at the negative full-scale output value (the 2600B measurement is not necessary if this calibration step is being done on the CALA sense mode). The two measurements should be made as close as possible in time. Use this command for the 2600B:

      FS_rdg = smua.measure.i()

    20. Turn off the output:

      smua.source.output = smua.OUTPUT_OFF

    21. Send the source calibration command using the -range, -zero and -FS multimeter readings, and -zero and -FS source values for the parameters:

      smua.source.calibratei(-range, src_Z, DMM_Z_rdg, src_FS, DMM_FS_rdg)

      Where:

      -range

      = The negative of the present calibration range

      src_Z

      = The zero 2600B source output value

      DMM_Z_rdg

      = The zero DMM measurement

      src_FS

      = The FS 2600B source output value

      DMM_FS_rdg

      = The FS DMM measurement

      Typical values for the 100 mA range:

      smua.source.calibratei(-100e-3, -1e-30, -1e-6, -90e-3, -89.2e-3)

    22. If this step is not on the CALA sense mode, send the measure calibration command using the multimeter and 2600B readings, and range setting for the parameters:

      smua.measure.calibratei(-range, Z_rdg, DMM_Z_rdg, FS_rdg, DMM_FS_rdg)

      Where:

      -range

      = The negative of the present calibration range

      Z_rdg

      = The zero 2600B measurement

      DMM_Z_rdg

      = The zero DMM measurement

      FS_rdg

      = The FS 2600B measurement

      DMM_FS_rdg

      = The FS DMM measurement

      Typical 100 mA range values:

      smua.measure.calibratei(-100e-3, -1e-5, -1e-6, -91e-3, -89.2e-3)

  2. Before continuing, be sure to complete steps 1 through 22 for the 100 nA to 1 A ranges before continuing with 3 A and 10 A range calibration (2601B, 2602B, 2604B) or 1.5 A and 10 A range calibration (2611B, 2612B, 2614B, 2634B, 2635B, 2636B).
  3. Change connections as shown in the following figure.

    Connections for 1.5 A and 3 A current ranges

  4. Select the DMM DC voltage function.
  5. Repeat the 22 steps of C for the 3 A and 10 A ranges (2601B, 2602B, 2604B) or 1.5 A and 10 A ranges (2611B, 2612B, 2614B, 2634B, 2635B, 2636B). Compute the current reading from the DMM voltage reading and characterized 0.5 O resistance value: I = V/R.
  6. Select automatic polarity mode:

    smua.cal.polarity = smua.CAL_AUTO

Models 2634B, 2635B, and 2636B:

  1. Connect the 2600B to the digital multimeter. Use the figure titled "Connections for current calibration (1.5 A through 10 A ranges)" as a guideline, but replace the 0.5 O resistor with the 1 GO resistor.
  2. Select the multimeter DC current function.
  3. Calibrate the low current ranges (100 pA, 1 nA, 10 nA, 100 nA, see Note) using a suitably guarded and characterized 1 GO resistance standard, such as the Keithley Instruments Model 2600-STD-RES (see Recommended calibration adjustment equipment). Step‑by‑step procedures, connection diagrams, and a factory script for calibrating the low current ranges are included with the Model 2600-STD-RES. The general process entails forcing a characterized voltage across the 1 GO resistor and comparing the 2634B, 2635B, or 2636B measured results against the standard resistance and voltage derived current.

VARIABLE - NOTE The 2601B, 2602B, 2604B, 2611B, 2612B, 2614B could be calibrated with this method for the 100 nA setting if desired.

  1. Characterize the appropriate ± V source values with the Digital Multimeter according to the 2634B, 2635B, or 2636B calibration Step sequence.
  2. Characterize the 2634B, 2635B, or 2636B current ranges.

    a. Connect the guarded resistance standard.

    b. Source the appropriate voltage for ± full-scale reading.

    c. Wait 30 seconds for stable measurement.

    d. Capture the 2634B, 2635B, or 2636B reported current measurement.

    e. Initiate HI-Z mode to open the resistor standard (source zero current) and the characterize offset.

    f. Repeat the above steps for each low current range.

Settings of Model 2634B, 2635B, and 2636B characterization of voltage source

Low current range

Voltage source

Compliance

100 pA*

±90.000 mV

1.5 A

1 nA

±0.90000 V

1.5 A

10 nA

±9.0000 V

1.5 A

100 nA

±90.000 V

100 mA

* Models 2635B and 2636B only.

Step 4. Contact check calibration adjustment

VARIABLE - NOTE Skip this step for the 2604B, 2614B, and 2634B. These models do not perform contact check measurements.

  1. As illustrated in the following figure:
    • Short the 2600B SENSE LO and LO terminals together.
    • Short the SENSE HI and HI terminals together.

      Connections for contact check 0 ohm calibration

  2. Allow the readings to settle, then get the 2600B readings:

    r0_hi, r0_lo = smua.contact.r()

  3. Characterize both 50 O resistors using the resistance function of the digital multimeter.
  4. As illustrated in the following figure:
    • Characterize both 50 O resistors using the resistance function of the digital multimeter.
    • Connect a 50 O resistor between the SENSE LO and LO terminals.
    • Connect the second 50 O resistor between the SENSE HI and HI terminals.

      Connections for contact check 50 ohm calibration

  5. Allow the readings to settle, then get the 2600B readings:

    r50_hi, r50_lo = smua.contact.r()

  6. Send the contact check low calibration adjustment command:

    smua.contact.calibratelo(r0_lo, Z_actual, r50_lo, 50_ohm_actual)

    Where:

    r0_lo

    =

    2600B 0 O low measurement

    Z_actual

    =

    Actual zero value; the resistance of the short between the SENSE LO and LO terminals

    r50_lo

    =

    2600B 50 O low measurement

    50_ohm_actual

    =

    Actual 50 O resistor value; the actual value of the resistor between the SENSE LO and LO terminals

    Typical values:

    smua.contact.calibratelo(r0_lo, 0, r50_lo, 50.15)

    Where r0_lo is the same value as measured in step B, and r50_lo is the same value as measured in step E.

  7. Send the contact check high calibration command:

    smua.contact.calibratehi(r0_hi, Z_actual, r50_hi, 50_ohm_actual)

    Where:

    r0_hi

    =

    2600B 0 O high measurement

    Z_actual

    =

    Actual zero value; the resistance of the short between the SENSE HI and HI terminals

    r50_hi

    =

    2600B 50 O high measurement

    50_ohm_actual

    =

    Actual 50 O resistor value; the value of the resistor between the SENSE HI and HI terminals

    Typical values:

    smua.contact.calibratehi(r0_hi, 0, r50_hi, 50.15)

    Where r0_hi is the same value as measured in step B, and r50_hi is the same value as measured in step E.

Step 6. Program calibration dates

Use the following command to set the calibration adjustment date:

smua.cal.adjustdate = os.time{year=2019, month=12, day=1}

Optionally, it is possible to set the calibration date and calibration due date with the following commands:

smua.cal.date = os.time{year=2019, month=12, day=1}

smua.cal.due = os.time{year=2020, month=12, day=1}

If you do not wish to set a calibration date or calibration due date and want to clear the previous values, use the following commands:

smua.cal.date = 0

smua.cal.due = 0

The actual year, month, day, and (optional) hour and minute should be used (seconds can be given but are essentially ignored due to the precision of the internal date storage format). The allowable range for the year is from 1970 to 2037, the month is from 1 to 12, and the day is from 1 to 31.

Step 7. Save calibration constants

Calibration adjustment is now complete, so you can store the calibration constants in nonvolatile memory by sending the following command:

smua.cal.save()

VARIABLE - NOTE Unless you send the save command, the calibration adjustment you just performed is temporary.

Step 8. Lock out calibration

To lock out further calibration adjustment, send the following command after completing the adjustment procedure:

smua.cal.lock()

Step 9. Repeat calibration procedure for Channel B

For the 2602B, 2604B, 2612B, 2614B, 2634B, or 2636B only, repeat the entire procedure above for Channel B. Be sure to:

  • Make test connections to Channel B terminals.
  • Substitute "smub" for "smua" in all commands.

Common commands

Common command summary

The IEEE Std 488.2 common commands that are supported by the 2600B are summarized in the following table. Although commands are shown in uppercase, common commands are not case sensitive, so you can use either uppercase or lowercase. Although these commands are essentially the same as those defined by the IEEE Std 488.2 standard, the 2600B does not strictly conform to that standard.

VARIABLE - NOTE Unlike other commands, like those listed in TSP commands, each common command must be sent in a separate message.

The common commands cannot be used in scripts.

Command

Name

Description

*CLS

Clear status

Clears all event registers and Error Queue. For detailed information, including status commands, see the Status model.

*ESE mask

Event enable command

Program the Standard Event Status Enable Register. For detailed information, including status commands, see the Status model.

*ESE?

Event enable query

Read the Standard Event Status Enable Register. For detailed information, including status commands, see the Status model.

*ESR?

Event status register query

Read/clear the Standard Event Enable Register. For detailed information, including status commands, see the Status model.

*IDN?

Identification query

Returns the manufacturer, model number, serial number, and firmware revision levels of the unit. For detailed information, see Identification query: *IDN?.

*OPC

Operation complete command

Set the Operation Complete bit in the Standard Event Register after all pending commands, including overlapped commands, have completed. For detailed information, see Operation complete and query: *OPC and *OPC?.

*OPC?

Operation complete query

Places an ASCII "1" into the output queue when all selected device operations have completed. For detailed information, see Operation complete and query: *OPC and *OPC?.

*RST

Reset command

Returns the 2600B to default conditions. For detailed information, see Reset: *RST.

 

*SRE mask

Service request enable command

Programs the Service Request Enable Register. For detailed information, including status commands, see the Status model.

*SRE?

Service request enable query

Reads the Service Request Enable Register. For detailed information, including status commands, see the Status model.

*STB?

Status byte query

Reads the status byte register. For detailed information, including status commands, see the Status model.

*TRG

Trigger command

Generates the trigger.EVENT_ID trigger event for use with the trigger model. For detailed information, see Trigger: *TRG.

*TST?

Self-test query

Returns a 0. For detailed information, see Self-test query: *TST?.

*WAI

Wait-to-continue command

Waits until all previous commands have completed. For detailed information, see Wait-to-continue: *WAI.

Script command equivalents

The TSP commands that can be included in scripts that are equivalent to the common commands are defined in the table below.

Common command

Script command equivalent

*CLS

status.reset()

*ESE?

print(tostring(status.standard.enable))

*ESE mask

status.standard.enable = mask

*ESR?

print(tostring(status.standard.event))

*IDN?

print([[Keithley Instruments, Model]]..localnode.model..[[, ]]..localnode.serialno.. [[, ]]..localnode.revision)

*OPC?

waitcomplete() print([[1]])

*OPC

opc()

*RST

reset()

*SRE?

print(tostring(status.request_enable))

*SRE mask

status.request_enable = mask

*STB?

print(tostring(status.condition))

*TRG

Not available

*TST?

print([[0]])

*WAI

waitcomplete()

Command reference

Details of all common commands (except those associated with the status model) are described below.

VARIABLE - NOTE Status command usage is in the Status model.

Identification query: *IDN?

Retrieves the identification string.

*IDN?

Command that reads ID information

The identification string includes the manufacturer, model number, serial number, and firmware revision levels. This string is sent in the following format:

Keithley Instruments, Model 2600B, xxxxxxx, yyyyy

Where:
xxxxxxx is the serial number
yyyyy is the firmware revision level

Operation complete and query: *OPC and *OPC?

Wait for pending overlapped commands to complete.

*OPC

Operation complete command that sets the OPC bit

*OPC?

Operation complete query that places a "1" in the output queue

When *OPC is sent, the OPC bit in the Standard Event Register (see Status model) is set when all overlapped commands complete. The *OPC? command places an ASCII "1" in the output queue when all previous overlapped commands complete.

Reset: *RST

Returns the instrument to default conditions.

*RST

Command that returns the instrument to default conditions

When the *RST command is sent, the instrument returns to the default conditions. This performs the same actions as reset().

Self-test query: *TST?

Requests self-test results.

*TST?

Places a zero (0) in the output queue

This command always places a zero (0) in the output queue. This command is included for common command compatibility only; the 2600B does not actually perform a self-test.

Trigger: *TRG

Generates a command interface trigger event for the trigger model.

*TRG

This command generates the trigger.EVENT_ID trigger event for the trigger model

The trigger.EVENT_ID is a constant that contains the command interface trigger event number. You can set the stimulus of any trigger object to the value of this constant to have the trigger object respond to the trigger events generated by this command. See trigger.EVENT_ID and Using the remote trigger model.

Wait-to-continue: *WAI

Suspends the execution of subsequent commands until all previous overlapped commands are finished.

*WAI

This pauses until overlapped commands are complete

Two types of device commands exist:

  • Overlapped commands. Commands that allow the execution of subsequent commands while instrument operations of the overlapped command are still in progress.
  • Sequential commands. Commands whose operations finish before the next command is executed.

The *WAI command suspends the execution of subsequent commands until the instrument operations of all previous overlapped commands are finished. The *WAI command is not needed for sequential commands.

General bus commands

General commands are commands that have the same general meaning, regardless of the instrument. The following table lists the general bus commands.

Command

Effect on 2600B

DCL

Device clear. Returns the 2600B and all devices on the GPIB to known conditions. See DCL for details.

GET

Group execute trigger. Initiates a trigger. See GET for details.

GTL

Go to local. Cancel remote; restore 2600B front-panel operation. See GTL for details.

IFC

Interface clear. Goes into talker and listener idle states. See IFC for details.

LLO

Local lockout. LOCAL key locked out. See LLO for details.

REN

Remote enable. Goes into remote operation when next addressed to listen. See REN for details.

SDC

Selective device clear. Returns the 2600B to known conditions. See SDC for details.

SPE, SPD

Serial polling. Serial polls the 2600B. See SPE, SPD for details.

REN

The remote enable (REN) command is sent to the 2600B by the controller to set up the instrument for remote operation. Generally, place the instrument in the remote mode before you attempt to program it over the bus. Setting REN to true does not place the instrument in the remote state. You must address the instrument to listen after setting REN to true before it goes into remote operation.

IFC

The controller sends the interface clear (IFC) command to place the 2600B in the talker idle state and the listener idle state. The instrument responds to the IFC command by canceling illumination of the front-panel TALK or LSTN lights if the instrument was previously placed in one of these states.

Transfer of command messages to the instrument and transfer of response messages from the instrument are not interrupted by the IFC command. If transfer of a response message from the instrument was suspended by IFC, transfer of the message resumes when the instrument is addressed to talk. If transfer of a command message to the instrument was suspended by the IFC command, the rest of the message can be sent when the instrument is addressed to listen.

This command does not affect the status of the instrument. Settings, data, and event registers are not changed.

To send the IFC command, the controller needs to set the IFC line true for a minimum of 100 µs.

LLO

The LLO command prevents local operation of the instrument. When the instrument is in remote operation, all front‑panel controls are disabled, except the LOCAL and OUTPUT OFF keys and the POWER switch. The local lockout (LLO) command disables the LOCAL key, but does not affect the OUTPUT OFF switch, which cannot be disabled.

GTL

Use the go to local (GTL) command to put an instrument that is in remote mode instrument into local mode. Leaving the remote state also restores operation of all front-panel controls.

DCL

Use the device clear (DCL) command to clear the GPIB interface and return it to a known state. The DCL command is not an addressed command, so all instruments equipped to implement DCL are returned to a known state simultaneously.

When the 2600B receives a DCL command, it:

  • Clears the input buffer, output queue, and command queue
  • Cancels deferred commands
  • Clears any command that prevents the processing of any other device command

The DCL command does not affect instrument settings and stored data.

SDC

The selective device clear (SDC) command is an addressed command that performs essentially the same function as the device clear (DCL) command. However, because each device must be individually addressed, the SDC command provides a method to clear only selected instruments, instead of clearing all instruments simultaneously with the DCL command.

When the 2600B receives an SDC command, it:

  • Clears the input buffer, output queue, and command queue
  • Cancels deferred commands
  • Clears any command that prevents the processing of any other device command

An SDC call does not affect instrument settings and stored data.

GET

The group execute trigger (GET) command is a GPIB trigger that triggers the instrument to make readings from a remote interface.

SPE, SPD

When the instrument detects the serial polling enable (SPE) and serial polling disable (SPD) events, it sends the status byte of the instrument. This contains the serial poll byte of the instrument.

The serial poll byte contains information about internal functions. Generally, the serial polling sequence is used by the controller to determine which of several instruments has requested service with the SRQ line.

The serial polling sequence may be performed at any time to obtain the status byte from the 2600B. Refer to the Status model for details.

Status model

Overview

Each Keithley 2600B provides status registers and queues that are collectively referred to as the status model. Through manipulation and monitoring of these registers and queues, you can view and control various instrument events. You can include commands in your test program that can determine if a service request (SRQ) event has occurred and the cause of the event.

The heart of the status model is the Status Byte Register. All status model registers and queues flow into the Status Byte Register.

The entire status model is shown in Status model diagrams.

Status register set contents

Typically, a status register set contains the following registers:

  • Condition (.condition): A read-only register that is constantly updated to reflect the present operating conditions of the instrument.
  • Enable Register (.enable): A read-write register that allows a summary bit to be set when an enabled event occurs.
  • Event Register (.event): A read-only register that sets a bit to 1 when the applicable event occurs. If the enable register bit for that event is also set, the summary bit of the register is set to 1.
  • Negative Transition Register (NTR) (.ntr): When a bit is set in this read-write register, it enables a 1 to 0 change in the corresponding bit of the condition register to cause the corresponding bit in the event register to be set.
  • Positive Transition Register (PTR) (.ptr): When a bit is set in this read-write register, it enables a 0 to 1 change in the corresponding bit of the condition register to cause the corresponding bit in the event register to be set.

An event is represented by a condition register bit changing from a 1 to 0 or 0 to 1. When an event occurs and the appropriate NTR or PTR bit is set, the corresponding event register bit is set to 1. The event bit remains latched to 1 until the event register is read or the status model is reset. When an event register bit is set and its corresponding enable bit is set, the summary bit of the register is set to 1. This, in turn, sets a bit in a higher‑level condition register, potentially cascading to the associated summary bit of the Status Byte Register.

Queues

The 2600B uses queues to store messages. The queues include:

  • Command queue: Holds commands that are available for execution.
  • Output queue: Holds response messages.
  • Error queue: Holds error and status messages.

When a queue contains data, it sets the condition bit for that queue in one of the registers. The condition bits are:

  • Command queue: CAV in the Operation Status Remote Summary Register.
  • Output queue: MAV in the Status Byte Register.
  • Error queue: EAV in the Status Byte Register.

The CAV, MAV, and EAV bits in the registers are cleared when the queue is empty. Queues empty when:

  • Commands are executed.
  • Errors are read from the error queue.
  • Response messages are read from the instrument.

All 2600B queues are first-in, first-out (FIFO).

The Status model diagrams shows how the queues are structured with the other registers.

Command queue

The command queue holds commands that have been received from a remote interface that are available for execution. This allows the 2600B to accept multiple commands and queue them for execution.

When a command is received from a remote interface, the command available (CAV) bit in the Operation Status Remote Summary Register is set. For additional detail, see status.operation.remote.*.

Output queue

Response messages, such as those generated from print commands, are placed in the output queue. All remote command interfaces share the same output queue.

The output queue sets the message available (MAV) bit in the status model.

The data in the output queue is cleared by the *CLS command.

Error queue

The error queue holds error and status messages. As programming errors and status messages occur, a message that defines the error or status is placed in the error queue.

An error or status message is cleared from the error queue when it is read. You can also clear the error queue by sending the command errorqueue.clear(). An empty error queue clears the error available (EAV) bit in the Status Byte Register.

Messages in the error queue include a code number, message text, severity, and TSP-LinkTM node number. See Error summary list for a list of the messages.

When you read a single message from the error queue, the oldest message is read. If you attempt to read the error queue when it is empty, the error number 0 and “No Error” is returned.

The commands used to control the error queue are listed in the following table.

Error queue commands

Error queue command

Description

errorqueue.clear()

Clear error queue of all errors.

errorqueue.count

Number of messages in the error/event queue.

errorCode, message,

severity, errorNode =

errorqueue.next()

Request error code, text message, severity, and TSP-Link node number.

Status function summary

The following functions and attributes control and read the various registers. Additional information for the various register sets is included later in this section. Also, refer to the specific command as listed in TSP commands.

Status function summary

Type

Function or attribute

Status summary

status.condition

status.node_enable

status.node_event

status.request_enable

status.request_event

status.reset

Measurement event

status.measurement.*

status.measurement.buffer_available.*

status.measurement.current_limit.*

status.measurement.instrument.*

status.measurement.instrument.smuX.*

status.measurement.protection.*

status.measurement.reading_overflow.*

status.measurement.voltage_limit.*

Operation status

status.operation.*

status.operation.calibrating.*

status.operation.instrument.*

status.operation.instrument.digio.*

status.operation.instrument.digio.trigger_overrun.*

status.operation.instrument.lan.*

status.operation.instrument.lan.trigger_overrun.*

status.operation.instrument.smuX.*

status.operation.instrument.smuX.trigger_overrun.*

status.operation.instrument.trigger_blender.*

status.operation.instrument.trigger_blender.trigger_overrun.*

status.operation.instrument.trigger_timer.*

status.operation.instrument.trigger_timer.trigger_overrun.*

status.operation.instrument.tsplink.*

status.operation.instrument.tsplink.trigger_overrun.*

status.operation.measuring.*

status.operation.remote.*

status.operation.sweeping.*

status.operation.trigger_overrun.*

status.operation.user.*

Questionable status

status.questionable.*

status.questionable.calibration.*

status.questionable.instrument.*

status.questionable.instrument.smuX.*

status.questionable.over_temperature.*

status.questionable.unstable_output.*

Standard event

status.standard.*

System summary

status.system.*

status.system2.*

status.system3.*

status.system4.*

status.system5.*

* = .condition, .event, .ntr, .ptr and .enable

smuX: For Models 2601B, 2611B, and 2635B, this value is smua (SMU Channel A); for Models 2602B, 2604B, 2612B, 2614B, 2634B, and 2636B, this value can be smua (for SMU Channel A) or smub (for SMU Channel B).

Status model diagrams

The following figures graphically describe the status model:

Status byte and service request enable register

Status byte and service request enable register

System summary and standard event registers

System summary and standard event registers

Measurement event registers

Measurement event registers

Operation status registers ***2600B***

Operation status registers

Operation status trigger overrun registers ***2600B***

Operation status trigger overrun registers

Operation status trigger timer, trigger blender, and remote registers ***2600B***

Operation status trigger timer, trigger blender, and remote registers

Reset and clear registers

You can use commands to reset the status registers.

*CLS resets the bits of the event and NTR registers to 0 and sets all PTR register bits on. This command also clears the output queue.

status.reset() resets bits of the event and NTR registers to 0 and sets all PTR register bits on. Refer to status.reset() for additional information.

In addition to these commands, you can reset the enable registers and the NTR to 0. To do this, send the individual command to program the register with a 0 as its parameter value. The PTR registers can be reset to their defaults by programming them with all bits on. The event registers are not programmable but you can clear them by reading them.

Program enable and transition registers

The only registers that you can program are the enable and transition registers. All other registers in the status structure are read-only. The following explains how to determine the parameter values for the commands that are used to program enable registers. The commands are summarized in Common commands and Status function summary.

A command to program an event enable or transition register is sent with a parameter value that determines the state (0 or 1) of each bit in the appropriate register. The bit positions of the register (see the following tables) indicate the binary parameter value and decimal equivalent. To program one of the registers, send the decimal value for the bits to be set. The registers are discussed further in Enable and transition registers.

Bit

B7

B6

B5

B4

B3

B2

B1

B0

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

128

64

32

16

8

4

2

1

Weights

(27)

(26)

(25)

(24)

(23)

(22)

(21)

(20)

Bit

B15

B14

B13

B12

B11

B10

B9

B8

Binary value

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

Decimal

32,768

16,384

8,192

4,096

2,048

1,024

512

256

Weights

(215)

(214)

(213)

(212)

(211)

(210)

(29)

(28)

When using a numeric parameter, registers are programmed by including the appropriate mask value. For example:

*ese 1169

status.standard.enable = 1169

To convert from decimal to binary, use the information shown in the previous table. For example, to set bits B0, B4, B7, and B10, use a decimal value of 1169 for the mask parameter (1169 = 1 + 16 + 128 + 1024).

Read registers

You can read any register in the status structure either by sending the common command query (where applicable), or by including the script command for that register in the print() or print(tostring()) command. The print() command outputs a numeric value; the print(tostring()) command outputs the string equivalent. For example, any of the following commands requests the Service Request Enable Register value:

*SRE?

print(tostring(status.request_enable))

print(status.request_enable)

The response message is a decimal value that indicates which bits in the register are set. That value can be converted to its binary equivalent using the information in Program enable and transition registers. For example, for a decimal value of 37 (binary value of 100101), bits B5, B2, and B0 are set.

Status byte and service request (SRQ)

Service requests (SRQs) allow an instrument to indicate that it needs attention or that some event has occurred. When the controller receives an SRQ, it allows the controller to interrupt tasks to perform other tasks in order to address the request for service.

For example, you might program your instrument to send an SRQ when:

  • All instrument operations are complete
  • An instrument error occurs
  • A specific operation has occurred

Two 8-bit registers control service requests: The Status Byte Register and the Service Request Enable Register. See Status Byte Register for a description of the structure of these registers.

Service requests affect GPIB, USB, and VXI‑11 connections. On a GPIB connection, the SRQ line is asserted. On a VXI‑11 or USB connection, an SRQ event is generated.

Status Byte Register

The Status Byte Register receives summary bits from the other status register sets and queues. The summary messages from the status registers and queues are used to set or clear the appropriate bits (B0, B1, B2, B3, B4, B5, and B7) of the Status Byte Register. These summary bits do not latch, and their states (0 or 1) are dependent upon the summary messages (0 or 1). For example, if the Standard Event Register is read, its register is cleared. As a result, its summary message resets to 0, which then resets the ESB bit in the Status Byte Register.

The Status Byte Register also receives summary bits from itself, which sets the Master Summary Status, or MSS, bit.

Status byte and service request (SRQ)

The bits of the Status Byte Register are described as follows:

  • Bit B0, Measurement Summary Bit (MSB): Set summary bit indicates that an enabled measurement event has occurred.
  • Bit B1, System Summary Bit (SSB): Set summary bit indicates that an enabled system event has occurred.
  • Bit B2, Error Available (EAV): Set bit indicates that an error or status message is present in the error queue.
  • Bit B3, Questionable Summary Bit (QSB): Set summary bit indicates that an enabled questionable event has occurred.
  • Bit B4, Message Available (MAV): Set bit indicates that a response message is present in the output queue.
  • Bit B5, Event Summary Bit (ESB): Set summary bit indicates that an enabled standard event has occurred.
  • Bit B6, Request Service (RQS)/Master Summary Status (MSS): Set bit indicates that an enabled summary bit of the Status Byte Register is set. Depending on how it is used, bit B6 of the Status Byte Register is either the Request for Service (RQS) bit or the Master Summary Status (MSS) bit:
    • When using the GPIB, USB, or VXI-11 serial poll sequence of the 2600B to obtain the status byte (serial poll byte), B6 is the RQS bit. See Serial polling and SRQ for details on using the serial poll sequence.
    • When using the *STB? common command or status.condition Status byte and service request commands to read the status byte, B6 is the MSS bit.
  • Bit B7, Operation Summary (OSB): Set summary bit indicates that an enabled operation event has occurred.

Service Request Enable Register

The Service Request Enable Register controls the generation of a service request. This register is programmed by the user and is used to enable or disable the setting of bit B6 (RQS/MSS) by the Status Summary Message bits (B0, B1, B2, B3, B4, B5, and B7) of the Status Byte Register. As shown in Status Byte Register, a logical AND operation is performed on the summary bits (&) with the corresponding enable bits of the Service Request Enable Register. When a logical AND operation is performed with a set summary bit (1) and with an enabled bit (1) of the enable register, the logic “1” output is applied to the input of the logical OR gate and, therefore, sets the MSS/RQS bit in the Status Byte Register.

You can set or clear the individual bits of the Service Request Enable Register by using the *SRE common command or status.request_enable. To read the Service Request Enable Register, use the *SRE? query or print(status.request_enable). The Service Request Enable Register clears when power is cycled or a parameter value of 0 is sent with a status request enable command (for example, a *SRE 0 or status.request_enable = 0 is sent). The commands to program and read the SRQ Enable Register are listed in Status byte and service request commands.

Serial polling and SRQ

Any enabled event summary bit that goes from 0 to 1 sets bit B6 and generates a service request (SRQ).

In your test program, you can periodically read the Status Byte to check if an SRQ occurred and what caused it. If an SRQ occurred, the program can, for example, branch to an appropriate subroutine that services the request.

SRQs can be managed by the serial poll sequence of the instrument. If an SRQ does not occur, bit B6 (RQS) of the Status Byte Register remains cleared, and the program proceeds normally after the serial poll is performed. If an SRQ does occur, bit B6 of the Status Byte Register is set, and the program can branch to a service subroutine when the SRQ is detected by the serial poll.

The serial poll automatically resets RQS of the Status Byte Register. This allows subsequent serial polls to monitor bit B6 for an SRQ occurrence that is generated by other event types.

The serial poll does not clear the low-level registers that caused the SRQ to occur. You must clear the low‑level registers explicitly. Refer to Reset and clear registers.

For common commands and TSP commands, B6 is the MSS (Message Summary Status) bit. The serial poll does not clear the MSS bit. The MSS bit remains set until all enabled Status Byte Register summary bits are reset.

Serial polling and SPE and SPD

For the GPIB interface only, the SPE and SPD general bus commands are used to serial poll the System SourceMeter® instrument. Serial polling obtains the serial poll byte (status byte). Typically, serial polling is used by the controller to determine which of several instruments has requested service with the SRQ line.

Status byte and service request commands

The commands to program and read the Status Byte Register and Service Request Enable Register are listed in the following table. The table includes both common commands and their script command equivalents. For details on programming and reading registers, see Program enable and transition registers and Read registers.

To reset the bits of the Service Request Enable Register to 0, use 0 as the parameter value for the command (for example, *SRE 0 or status.request_enable = 0).

Status Byte and Service Request Enable Register commands

Command

Description

*STB?

or

print(status.condition)

Read the Status Byte Register.

*SRE mask

or

status.request_enable = mask

Program the Service Request Enable Register where mask = 0 to 255.

*SRE?

or

print(status.request_enable)

Read the Service Request Enable Register.

Enable and transition registers

In general, there are three types of user-writable registers that are used to configure which bits feed the register summary bit and when it occurs. The registers are identified in each applicable command (as listed in TSP commands) as follows:

  • Enable register (identified as .enable in the command listing of each attribute): Allows associated events to be included in the summary bit for the register.
  • Negative-transition register (identified as .ntr in the command listing of each attribute): A particular bit in the event register is set when the corresponding bit in the NTR is set, and the corresponding bit in the condition register transitions from 1 to 0.
  • Positive-transition register (identified as .ptr in the command listing of each attribute): A particular bit in the event register is set when the corresponding bit in the PTR is set, and the corresponding bit in the condition register transitions from 0 to 1.

Control node and SRQ enable registers

Attributes to control system node and service request (SRQ) enable bits and read associated registers are summarized in the Status byte and service request enable registers. For example, either of the following commands set the system node QSB enable bit:

status.node_enable = status.QSB

status.node_enable = 8

Status register sets

There are five status register sets in the status structure of a System SourceMeter® instrument:

  • System Summary
  • Standard Event Status
  • Operation Status
  • Questionable Status
  • Measurement Event

System Summary Registers

As shown in Status model diagrams, there are five register sets associated with system status events. These registers summarize the system status for various nodes connected to the TSP‑LinkTM network (see TSP-Link system expansion interface). Note that all nodes on the TSP‑Link network share a copy of the system summary registers once the TSP‑Link system has been initialized. This feature allows all nodes to access the status models of other nodes, including service request (SRQ).

In a TSP‑Link system, you can configure the status model so that a status event in any node in the system can set the RQS (request for service) bit of the Master Node Status Byte. See TSP-Link system status for details on using the status model in a TSP‑Link system.

Commands for the system summary registers are summarized in the Status function summary table.

For example, either of the following commands sets the EXT enable bit:

status.system.enable = status.system.EXT

status.system.enable = 1

When reading a register, a numeric value is returned. The binary equivalent of this value indicates which bits in the register are set. For details, see Read registers. For example, the following command reads the System Enable Register:

print(status.system.enable)

The used bits of the system event registers are described as follows:

  • Bit B0, Extension Bit (EXT): Set bit indicates that an extension bit from another system status register is set.
  • Bits B1 to B14 NODEn: Indicates a bit on TSP-Link node n has been set (n = 1 to 64) (note that status.system5 does not use bits B9 through B15).

Standard Event Register

The bits used in the Standard Event Register are described as follows:

  • Bit B0, Operation Complete (OPC): Set bit indicates that all pending selected device operations are completed and the 2600B instrument is ready to accept new commands. The bit is set in response to an *OPC command. The opc() function can be used in place of the *OPC command. See Common commands for details on the *OPC command.
  • Bit B1: Not used.
  • Bit B2, Query Error (QYE): Set bit indicates that you attempted to read data from an empty output queue.
  • Bit B3, Device-Dependent Error (DDE): Set bit indicates that an instrument operation did not execute properly due to some internal condition.
  • Bit B4, Execution Error (EXE): Set bit indicates that the 2600B instrument detected an error while trying to execute a command.
  • Bit B5, Command Error (CME): Set bit indicates that a command error has occurred. Command errors include:
    • IEEE Std 488.2 syntax error: The 2600B instrument received a message that does not follow the defined syntax of IEEE Std 488.2.
    • Semantic error: 2600B instrument received a command that was misspelled or received an optional IEEE Std 488.2 command that is not implemented.
    • The instrument received a Group Execute Trigger (GET) inside a program message.
  • Bit B6, User Request (URQ): Set bit indicates that the LOCAL key on the 2600B instrument front panel was pressed.
  • Bit B7, Power ON (PON): Set bit indicates that the 2600B instrument has been turned off and turned back on since the last time this register was read.

Commands to program and read the register are summarized below and also in the Status function summary table.

Standard Event Register

Standard event commands

Command

Description

*ESR?

or

print(status.standard.event)

Read Standard Event Status Register.

*ESE mask

or

status.standard.enable = mask

Program the Event Status Enable Register:

mask = 0 to 255
See Status register set contents.

*ESE?

or

print(status.standard.enable)

Read Event Status Enable Register.

Operation Status Registers

As shown in the Operation status registers diagram of the status model, there are 22 register sets associated with operation status. Commands are summarized in Status register set contents. You can also set bits using numeric parameter values. For details, see Program enable and transition registers.

For example, either of the following commands sets the CAL enable bit (B0):

status.operation.enable = status.operation.CAL

status.operation.enable = 1

When reading a register, a numeric value is returned. The binary equivalent of this value indicates which bits in the register are set. For details, see Read registers. For example, the following command reads the Operation Status Enable Register:

print(status.operation.enable)

Commands to program and read the register are summarized in the table in Status function summary.

This register set feeds to bit B7 (OSB) of the Status Byte. The bits used in the Operation Status Register set are described as follows:

  • Bit B0, Calibrating (CAL): Set bit indicates that one or more channels are calibrating.
  • Bit B3, Sweeping (SWE): Set bit indicates that one or more channels are sweeping.
  • Bit B4, Measuring (MEAS): Bit is set when making an overlapped measurement, but it is not set when making a normal synchronous measurement.
  • Bit B10, Trigger Overrun (TRGOVR): Set bit indicates that an enabled bit in the Operation Status Trigger Overrun Summary Register is set.
  • Bit B11, Remote Summary (REM): Set bit indicates that an enabled bit in the Operation Status Remote Summary Register is set.
  • Bit B12, User (USER): Set bit indicates that an enabled bit in the Operation Status User Register is set.
  • Bit B13, Instrument Summary (INST): Set bit indicates that an enabled bit in the Operation Status Instrument Summary Register is set.
  • Bit B14, Program Running (PROG): Set bit indicates that a program is running.

For more information on the Operation Status Registers, refer to Status register set contents and the figures in this section.

Questionable Status Registers

This register set feeds to bit B3 (QSB) of the Status Byte. The bits used in the Questionable Status Register set are described as follows:

  • Bit B8, Calibration (CAL): Set bit indicates that calibration is questionable.
  • Bit B9, Unstable Output (UO): Set bit indicates that an unstable output condition was detected.
  • Bit B12, Over Temperature (OTEMP): Set bit indicates that an over temperature condition was detected.
  • Bit B13, Instrument Summary (INST): Set bit indicates that a bit in the Questionable Status Instrument Summary Register is set.

Questionable Status Registers

As shown in the Operation event, I/O, and TSP-Link registers of the status model, there are seven register sets associated with Questionable Status. Commands are summarized in Status byte and service request (SRQ). You can also set bits by using numeric parameter values. For details, see Program enable and transition registers.

For example, either of the following commands sets the CAL enable bit (B8):

status.questionable.enable = status.questionable.CAL

status.questionable.enable = 256

When reading a register, a numeric value is returned. The binary equivalent of this value indicates which bits in the register are set. For details, see Read registers. For example, the following command reads the Questionable Status Enable Register:

print(status.questionable.enable)

For more information about the Questionable Status Registers, refer to Status register set contents and the figures in this section.

Measurement Event Registers

As shown in the Measurement event registers of the status model, there are eight register sets associated with measurement event status. Commands are summarized in Status register set contents. Note that bits can also be set by using numeric parameter values. For details, see Program enable and transition registers.

For example, either of the following commands sets the VOLTAGE_LIMIT enable bit:

status.measurement.enable = status.measurement.VOLTAGE_LIMIT

status.measurement.enable = 1

When reading a register, a numeric value is returned. The binary equivalent of this value indicates which bits in the register are set. For details, see Read registers. For example, the following command reads the Measurement Event Enable Register:

print(status.measurement.enable)

This register set feeds to bit B0 (MSB) of the Status Byte. The bits used in the Measurement Event Registers are:

  • Bit B0, Voltage Limit (VLMT): Set bit indicates that the voltage limit was exceeded. This bit is updated only when either a measurement is made or the smuX.source.compliance attribute is read.
  • Bit B1, Current Limit (ILMT): Set bit indicates that the current limit was exceeded. This bit is updated only when either a measurement is made or the smuX.source.compliance attribute is read.
  • Bit B7, Reading Overflow (ROF): Set bit indicates that an overflow reading has been detected.
  • Bit B8, Buffer Available (BAV): Set bit indicates that there is at least one reading stored in either or both nonvolatile reading buffers.
  • Bit B11, Output Enable (OE): (2601B, 2602B, 2604B) Set bit indicates that output enable was asserted.
    Bit B11, Interlock (INT): (2611B, 2612B, 2614B, 2634B, 2635B, 2636B) Set bit indicates that interlock was asserted.
  • Bit B13, Instrument Summary (INST): Set bit indicates that a bit in the Measurement Instrument Summary Register is set.

Commands to program and read the register are summarized in the Status function summary table. For more information about the Measurement Event Registers, refer to Status register set contents and the figures in this section.

Register programming example

The following command sequence programs the instrument to generate a service request (SRQ) and set the system summary bit in all TSP‑Link nodes when the current limit on channel A is exceeded.

-- Clear all registers.

status.reset()

-- Enable current limit bit in current limit register.

status.measurement.current_limit.enable = status.measurement.current_limit.SMUA

-- Enable status measure current limit bit.

status.measurement.enable = status.measurement.ILMT

-- Set system summary; enable MSB.

status.node_enable = status.MSB

-- Enable status SRQ MSB.

status.request_enable = status.MSB

TSP-Link system status

VARIABLE - NOTE TSP-LinkTM is not available on the 2604B, 2614B, or 2634B.

The TSP-LinkTM expansion interface allows instruments to communicate with each other. The test system can be expanded to include up to 32 TSP-enabled instruments. In a TSP-Link system, one node (instrument) is the master and the other nodes are the subordinates. The master can control the other nodes (subordinates) in the system. See TSP-Link system expansion interface for details about the TSP‑Link system.

The system summary registers, shown in the Status byte and service request enable register and the System summary and standard event registers, are shared by all nodes in the TSP‑Link system. A status event that occurs at a subordinate node can generate an SRQ (service request) in the master node. After detecting the service request, your program can then branch to an appropriate subroutine that services the request. See Status byte and service request (SRQ) for details.

Status model configuration example

In this example, a current limit (compliance) event in SMU A or B of node 15 sets the RQS bit of the Status Byte of the master node. The commands to configure the status model for this example are provided in Status configuration (enable) commands.

When a current limit (compliance) condition occurs in SMU A or B of node 15, the following sequence of events occurs:

  • Node 15: Bit B1 or B2 of the Measurement Event Current Limit Summary Register sets when the current limit (compliance) event occurs.
  • Node 15: Bit B1 (ILMT) of the Measurement Event Register sets.
  • Node 15: Bit B0 (MSB) of the Status Byte sets.
  • System Summary Registers: Bit B1 (node 15) of the System Summary Register 2 sets.

VARIABLE - NOTE The System Summary Registers are shared by all nodes in the TSP-Link system. When a bit in a system register of node 15 sets, the same bit in the master node system register also sets.

  • System Summary Registers: Bit B0 (Extension) of the System Summary Register sets.
  • Master Node: Bit B0 (MSB) of the Status Byte sets.
  • Master Node: With service request enabled, bit B6 (RQS) of the Status Byte sets. When your program performs the next serial poll of the master node, it detects the current limit event and can branch to a routine to service the request.

The figure in Status configuration (enable) commands demonstrates the flow of information through the status model of node 15 and the master node.

Status configuration (enable) commands

For the following registers, the commands listed, which are sent from the master node, enable the appropriate register bits for the status model configuration example.

Node 15 status registers: The following commands enable the current limit events for SMU A and B of node 15:

node[15].status.measurement.current_limit.enable = 6
node[15].status.measurement.enable = 2
node[15].status.node_enable = 1

The affected status registers for the above commands are indicated by labels A, B and C (see the following figure).

Master node system summary registers: The following commands enable the required system summary bits for node 15:

status.system2.enable = 2
status.system.enable = 1

The affected system summary registers for the above commands are indicated by labels D and E (see the following figure).

Master node service request: The following command enables the service request for the measurement event:

status.request_enable = 1

The affected status register for the above command is indicated by label E (see the following figure).

TSP-Link status model configuration example

Display character codes

2600B display character codes

The following tables contain the decimal values of the display character codes and the corresponding displays.

Display character codes (decimal 0 to 39)

Decimal

Display

Decimal

Display

Decimal

Display

000

 

reserved

012

reserved

026

?

001

 

reserved

013

reserved

027

?

002

reserved

014

reserved

 

028

?

003

 

reserved

015

reserved

029

?

004

reserved

016

µ

030

2600A selftest1 display character code

005

reserved

017

±

031

2600A selftest2 display character code

006

 

reserved

018

O

032

(space)

007

 

reserved

019

°

033

!

008

reserved

020

2600A leftflagbar display character code

034

"

009

reserved

021

2600A rightflagbar display character code

035

#

010

reserved

022

2600A fullflagbar display character code

036

$

011

reserved

023

2600A leftbar display character code

037

%

012

reserved

024

2600A rightbar display character code

038

&

013

reserved

025

2600A fullbar display character code

039

' (apostrophe)

Display character codes (decimal 40 to 102)

Decimal

Display

Decimal

Display

Decimal

Display

040

 

(

061

=

082

R

041

 

)

062

>

083

S

042

 

*

063

?

084

T

043

 

+

064

@

085

U

044

 

, (comma)

065

A

086

V

045

 

-

066

B

087

W

046

 

.

067

C

088

X

047

 

/

068

D

089

Y

048

 

0

069

E

090

Z

049

 

1

070

F

091

[

050

 

2

071

G

092

\

051

 

3

072

H

093

]

052

 

4

073

I

094

^

053

5

074

 

J

095

_

054

 

6

075

K

096

' (open single quote)

055

 

7

076

L

097

a

056

 

8

077

M

098

b

057

 

9

078

N

099

c

058

 

:

079

O

100

d

059

 

;

080

P

101

e

060

 

<

081

Q

102

f

Display character codes (decimal 103 to 165)

Decimal

Display

Decimal

Display

Decimal

Display

103

 

g

124

|

145

2600A selftest4 display character code

104

 

h

125

}

146

2600A selftest5 display character code

105

 

i

126

~

147

2600A selftest6 display character code

106

 

j

127

127 Display character

148

2600A selftest7 display character code

107

 

k

128

(space)

149

2600A selftest8 display character code

108

 

l

129

2600A dot1 display character code

150

2600A selftest9 display character code

109

 

m

130

2600A dot2 display character code

151

2600A selftest10 display character code

110

 

n

131

2600A dot12 display character code

152

2600A selftest11 display character code

111

 

o

132

2600A dot3 display character code

153

2600A selftest12 display character code

112

 

p

133

2600A dot13 display character code

154

2600A selftest13display character code

113

 

q

134

2600A dot23 display character code

155

2600A selftest14 display character code

114

 

r

135

2600A dot123 display character code

156

2600A box1 display character code

115

 

s

136

2600A dot4 display character code

157

2600A box2 display character code

116

t

137

 

2600A dot14 display character code

158

2600A one-half display character code

117

 

u

138

2600A dot24 display character code

159

¼

118

 

v

139

2600A dot124 display character code

160

0

119

 

w

140

2600A dot34 display character code

161

1

120

 

x

141

2600A dot134 display character code

162

2

121

 

y

142

2600A dot234 display character code

163

3

122

 

z

143

2600A selftest3 display character code

164

4

123

 

{

144

2600A selftest3 display character code

165

5

Display character codes (decimal 166 to 228)

Decimal

Display

Decimal

Display

Decimal

Display

166

 

6

187

?

208

æ

167

 

7

188

?

209

Æ

168

 

8

189

?

210

â

169

 

9

190

¸

211

ä

170

 

a

191

=

212

á

171

 

ß

192

=

213

à

172

 

g

193

?

214

å

173

 

?

194

?

215

Display character codes (decimal 186-255) (1)

174

 

?

195

?

216

Ä

175

 

?

196

?

217

Å

176

 

?

197

>>

218

ê

177

 

?

198

<<

219

ë

178

 

?

199

¿

220

é

179

?

200

 

i

221

è

180

 

s

201

¢

222

É

181

 

t

202

£

223

î

182

 

f

203

¥

224

ï

183

 

?

204

P†

225

í

184

 

G

205

ƒ

226

ì

185

 

?

206

Ç

227

ô

186

 

?

207

ç

228

ö

Display character codes (decimal 229 to 255)

Decimal

Display

Decimal

Display

Decimal

Display

229

 

ó

238

ñ

247

2600A box7 display character code

230

 

ò

239

Ñ

248

2600A box8 display character code

231

 

male ordinal character 231

240

ÿ

249

2600A box9 display character code

232

 

Ö

241

2600A lightning bolt display character code

250

2600A tombstone display character code

233

 

û

242

2600A KI display character code

251

†

234

 

ü

243

2600A box3 display character code

252

?

235

 

ú

244

2600A box4 display character code

253

?

236

 

ù

245

2600A box5 display character code

254

?

237

 

Ü

246

2600A box6 display character code

255

?

Model 2400 emulation

Model 2400 emulation

The 2600B provides for emulation of the Model 2400 command set using a personality script named Persona2400. When run, this script takes control of the remote command interfaces and interprets any commands received.

Downloading the 2400 Software Emulation script

The Model 2400 software emulation personality script is available for download from tek.com/keithley. Search for “TSP Script for Series 2600B SMUs to Emulate Model 2400 SMUs.”

Loading the 2400 Software Emulation script

VARIABLE - NOTE Before running or configuring the script, it must be loaded into internal memory. Also, you cannot run or load a script while a script is already running.

VARIABLE - NOTE If the Persona2400 script has been deleted from the 2600B without using the script's DeleteScript menu item (which is in the Configure2400 user test), you must execute the userstring.delete("AutoRun2400") command before reloading the Persona2400 script.

To copy the script to the 2600B, you can use a flash drive or any remote command interface. If you use a flash drive, it must be formatted as a FAT or FAT32 drive.

The script name is 2600B-800A.tsp.

To use a flash drive to load the script to the instrument, refer to Load a script from the instrument front panel.

To use a remote command interface to load the script to the instrument, refer to Load a script by sending commands over the remote interface.

Start and configure Model 2400 emulation

To start Model 2400 emulation:

  1. Press the LOAD key and then select USER from the menu.
  2. Select Run2400 and press the ENTER key (if this test is not loaded, you must load the script into internal nonvolatile memory).
  3. Press the RUN key. The remote (REM) indicator lights (the script places the instrument in remote).

To configure options for the Model 2400 emulation:

  1. If a script is running, press the EXIT key to abort.
  2. Press the LOAD key, then select USER from the menu and then press the ENTER key.
  3. Select Configure2400 and then press the ENTER key.
  4. Press the RUN key.
  5. Select a menu item to configure the emulation. The available menu items are:
    • RunAtPowerON: Select ENABLE to configure the 2600B so it automatically starts in Model 2400 emulation mode after the next power cycle. Select DISABLE to disable this option (disables the autorun for the next power cycle). This option does not place the 2600B into Model 2400 emulation immediately.
    • DisplayErrors: Select YES to display error messages on the front panel as they occur; select NO to disable this option. This setting is not retained through power cycles. This option (when enabled) delays the script execution by approximately 2 seconds when there is an error.
    • DeleteScript: To delete the Persona2400 script from 2600B, select YES and then turn the instrument off and back on. This step must be performed before reloading the Persona2400 script. Select NO to cancel.
    • Version: Select this menu item to display the Persona2400 script version.

Operating the 2600B as a Model 2400

When the script is loaded and running, the 2600B is ready to accept Model 2400 SCPI commands.

To exit out of Model 2400 emulation mode and return to 2600B normal operation, send the DIAG:EXIT command. You can also press the EXIT key to abort the script.

Execute SCPI commands when not in Model 2400 emulation mode

You can execute SCPI commands when not in Model 2400 emulation mode. To accomplish this, send the Initialize2400() command once and then send the Execute2400() command with the SCPI command as a parameter in quotes. For example, to execute the SCPI command :SOURCE:VOLTAGE 1, send Execute2400(":SOURCE:VOLTAGE 1"). If quotes are needed in the SCPI command, use single quotes or use '\' as an escape character. For example, send one of the following commands to execute the SCPI command :SENSE:FUNCTION "VOLT:DC":

Execute2400(":sens:func 'VOLT:DC'")

Execute2400(":sens:func \"VOLT:DC\"")

To return to the Model 2400 emulation mode, send the Engine2400() command. After returning to the Model 2400 emulation mode, you must execute a *RST before running any further commands.

Model 2400 compatibility

This section provides information on programming the 2600B in Model 2400 emulation mode. The information provided includes details of general compatibility and tables that contain listings of the not supported, partially supported, and fully supported commands.

General compatibility

Observe the following details when operating the 2600B in Model 2400 emulation mode.

Busy signal

As in a nonemulated Model 2400, the BUSY signal is active from the point that a start-of-test (SOT) signal is received until all measurements, limit testing, and digital I/O operations have completed. To use a BUSY signal in a nonemulated Model 2400, the binning control must be set to END. If the trigger count is set to a value less than the number of points in the source memory sweep, the BUSY signal indefinitely stays in the busy state. When the 2600B is in Model 2400 emulation mode, the BUSY signal works in either binning control modes (END or IMM) if one or more of the Calculate2 limit tests are enabled and is not in the busy state indefinitely.

Source autodelay

While in Model 2400 emulation mode, when the source auto delay feature is enabled, the 2600B source delay is used and is set to automatic delay (smua.source.delay = smua.DELAY_AUTO).

Timestamps

When the automatic timestamp reset feature is enabled, the timestamp is automatically reset when the first measurement is made. This differs from the operation of an actual Model 2400, where the timestamp is automatically reset when exiting the idle layer of the trigger model. This difference can be observed when the Arm or Trigger layer event detectors are enabled.

Status word

While in Model 2400 emulation mode, the following bits of the status word are always set to zero (0):

  • Bit 2 (Front/Rear)
  • Bit 4 (OVP)
  • Bit 10 (Auto-ohms)
  • Bit 16 (Range Compliance)
  • Bit 17 (Offset Compensation)
  • Bit 18 (Contact check failure)
  • Bit 23 (Pulse Mode)

Status model

While in Model 2400 emulation mode, the following bits in the status model are always set to 0 (not supported):

Operation Condition Register:

  • Bit 0 (Cal), bit 5 (Trig), bit 6 (Arm)

Measurement Condition Register:

  • Bit 10 (CC), bit 13 (OVP)

Questionable Condition Register:

  • Bit 14 (Warn)

Standard Event Status Register:

  • Bit 2 (QYE)

Overrange

When running a sweep while in Model 2400 emulation mode, the instrument cannot source more than the selected source range value.

Logarithmic sweep

While in Model 2400 emulation mode, when the start and stop points of a logarithmic sweep are not of same polarity or one of them is a zero (0), the script generates a "900" error; a nonemulated Model 2400 does not generate this error.

Digital I/O mapping

VARIABLE - NOTE The 2604B, 2614B, and 2634B do not have digital input/output lines.

When in Model 2400 emulation mode, digital I/O lines 1 through 9 are used to emulate different Model 2400 lines through the digital I/O port (see Digital I/O port). The following table shows the mapping.

Model 2400 line

DB-25 connector pin

TLink1

1

TLink2

2

TLink3

3

TLink4

4

Digital output 1

5

Digital output 2

6

Digital output 3

7

Digital output 4 (or EOT, /EOT, BUSY, /BUSY)

8

SOT

9

Ground

15 to 21*

+5 V

22*

+5 V

23*

Output enable (OE) or Interlock (INT)**

24*

+5 V

25*

* Same as 2600B.

** See Port configuration for information on pin 24.

Model 2400 SCPI command support

The following table provides a listing of Model 2400 commands and emulation support for the 2600B. In the supported column: Yes indicates the command is fully supported; No indicates the command is not supported; Partially indicates the command is supported, but with stipulations as noted in Model 2400 SCPI command compatibility.

Subsystem

Command

Supported

 :CALCulate

:CALCulate[1]:DATA:LATest?

Yes

 :CALCulate

:CALCulate[1]:DATA?

Yes

 :CALCulate

:CALCulate[1]:MATH[:EXPRession]

Yes

 :CALCulate

:CALCulate[1]:MATH[:EXPRession]?

Yes

 :CALCulate

:CALCulate[1]:MATH[:EXPRession]:CATalog?

Yes

 :CALCulate

:CALCulate[1]:MATH[:EXPRession][:DEFine] <form>

Yes

 :CALCulate

:CALCulate[1]:MATH[:EXPRession][:DEFine]?

Yes

 :CALCulate

:CALCulate[1]:MATH[:EXPRession]:DELete:ALL

Yes

 :CALCulate

:CALCulate[1]:MATH[:EXPRession]:DELete[:SELected] <SPD>

Yes

 :CALCulate

:CALCulate[1]:MATH[:EXPRession]:NAME <SPD>

Yes

 :CALCulate

:CALCulate[1]:MATH[:EXPRession]:NAME?

Yes

 :CALCulate

:CALCulate[1]:MATH:UNITs <name>

Yes

 :CALCulate

:CALCulate[1]:MATH:UNITs?

Yes

 :CALCulate

:CALCulate[1]:STATe <Bool>

Yes

 :CALCulate

:CALCulate[1]:STATe?

Yes

 :CALCulate

:CALCulate2:CLIMits:BCONtrol IMMediate|END

Yes

 :CALCulate

:CALCulate2:CLIMits:BCONtrol?

Yes

 :CALCulate

:CALCulate2:CLIMits:CLEar:AUTO <Bool>

Yes

 :CALCulate

:CALCulate2:CLIMits:CLEar:AUTO?

Yes

 :CALCulate

:CALCulate2:CLIMits:CLEar[:IMMediate]

Yes

 :CALCulate

:CALCulate2:CLIMits:FAIL:SMLocation <NRf>|NEXT

Yes

 :CALCulate

:CALCulate2:CLIMits:FAIL:SMLocation?

Yes

 :CALCulate

:CALCulate2:CLIMits:FAIL:SOURce2 <NRf>|<NDN>

Yes

 :CALCulate

:CALCulate2:CLIMits:FAIL:SOURce2?

Yes

 :CALCulate

:CALCulate2:CLIMits:MODE GRADing|SORTing

Yes

 :CALCulate

:CALCulate2:CLIMits:MODE?

Yes

 :CALCulate

:CALCulate2:CLIMits:PASS:SMLocation <NRf>|NEXT

Yes

 :CALCulate

:CALCulate2:CLIMits:PASS:SMLocation?

Yes

 :CALCulate

:CALCulate2:CLIMits:PASS:SOURce2 <NRf>|<NDN>

Yes

 :CALCulate

:CALCulate2:CLIMits:PASS:SOURce2?

Yes

 :CALCulate

:CALCulate2:DATA?

Yes

 :CALCulate

:CALCulate2:DATA:LATest?

Yes

 :CALCulate

:CALCulate2:FEED CALCulate[1]|VOLTage|CURRent|RESistance

Yes

 :CALCulate

:CALCulate2:FEED?

Yes

 :CALCulate

:CALCulate2:LIMit[1]:COMPliance:FAIL IN|OUT

Yes

 :CALCulate

:CALCulate2:LIMit[1]:COMPliance:FAIL?

Yes

 :CALCulate

:CALCulate2:LIMit[1]:COMPliance:SOURce2 <NRf>|<NDN>

Yes

 :CALCulate

:CALCulate2:LIMit[1]:COMPliance:SOURce2?

Yes

 :CALCulate

:CALCulate2:LIMit[1]:FAIL?

Yes

 :CALCulate

:CALCulate2:LIMit[1]:STATe <Bool>

Yes

 :CALCulate

:CALCulate2:LIMit[1]:STATe?

Yes

 :CALCulate

:CALCulate2:LIMit[2|3|5-12]:FAIL?

Yes

 :CALCulate

:CALCulate2:LIMit[2|3|5-12]:LOWer[:DATA] <NRf>

Yes

 :CALCulate

:CALCulate2:LIMit[2|3|5-12]:LOWer[:DATA]? [DEFault|MINimum|MAXimum]

Yes

 :CALCulate

:CALCulate2:LIMit[2|3|5-12]:LOWer:SOURce2 <NRf>|<NDN>

Yes

 :CALCulate

:CALCulate2:LIMit[2|3|5-12]:LOWer:SOURce2?

Yes

 :CALCulate

:CALCulate2:LIMit[2|3|5-12]:PASS:SOURce2 <NRf>|<NDN>

Yes

 :CALCulate

:CALCulate2:LIMit[2|3|5-12]:PASS:SOURce2?

Yes

 :CALCulate

:CALCulate2:LIMit[2|3|5-12]:STATe <Bool>

Yes

 :CALCulate

:CALCulate2:LIMit[2|3|5-12]:STATe?

Yes

 :CALCulate

:CALCulate2:LIMit[2|3|5-12]:UPPer[:DATA] <NRf>|DEFault|MINimum|MAXimum

Yes

 :CALCulate

:CALCulate2:LIMit[2|3|5-12]:UPPer[:DATA]? [DEFault|MINimum|MAXimum]

Yes

 :CALCulate

:CALCulate2:LIMit[2|3|5-12]:UPPer:SOURce2 <NRf>|<NDN>

Yes

 :CALCulate

:CALCulate2:LIMit[2|3|5-12]:UPPer:SOURce2?

Yes

 :CALCulate

:CALCulate2:LIMit4:FAIL?

No

 :CALCulate

:CALCulate2:LIMit4:SOURce2 <NRf>

No

 :CALCulate

:CALCulate2:LIMit4:SOURce2?

No

 :CALCulate

:CALCulate2:LIMit4:STATe <Bool>

No

 :CALCulate

:CALCulate2:LIMit4:STATe?

No

 :CALCulate

:CALCulate2:NULL:ACQuire

Partially

 :CALCulate

:CALCulate2:NULL:OFFSet <NRf>|DEFault|MINimum|MAXimum

Yes

 :CALCulate

:CALCulate2:NULL:OFFSet? [DEFault|MINimum|MAXimum]

Yes

 :CALCulate

:CALCulate2:NULL:STATe <Bool>

Yes

 :CALCulate

:CALCulate2:NULL:STATe?

Yes

 :CALCulate

:CALCulate3:DATA?

Yes

 :CALCulate

:CALCulate3:FORMat MEAN|SDEViation|MAXimum|MINimum|PKPK

Yes

 :CALCulate

:CALCulate3:FORMat?

Yes

 :DISPlay

:DISPlay:CNDisplay

Yes

 :DISPlay

:DISPlay:DIGits 4|5|6|7|DEFault|MINimum|MAXimum

Partially

 :DISPlay

:DISPlay:DIGits? [DEFault|MINimum|MAXimum]

Partially

 :DISPlay

:DISPlay:ENABle <Bool>

Partially

 :DISPlay

:DISPlay:ENABle?

Yes

 :DISPlay

:DISPlay[:WINDow[1]]:ATTRibutes?

Partially

 :DISPlay

:DISPlay[:WINDow[1]]:DATA?

Yes

 :DISPlay

:DISPlay[:WINDow[1]]:TEXT:DATA <SPD>

Yes

 :DISPlay

:DISPlay[:WINDow[1]]:TEXT:DATA?

Yes

 :DISPlay

:DISPlay[:WINDow[1]]:TEXT:STATe <Bool>

Partially

 :DISPlay

:DISPlay[:WINDow[1]]:TEXT:STATe?

Yes

 :DISPlay

:DISPlay:WINDow2:ATTRibutes?

Partially

 :DISPlay

:DISPlay:WINDow2:DATA?

Yes

 :DISPlay

:DISPlay:WINDow2:TEXT:DATA <SPD>

Yes

 :DISPlay

:DISPlay:WINDow2:TEXT:DATA?

Yes

 :DISPlay

:DISPlay:WINDow2:TEXT:STATe <Bool>

Partial

 :DISPlay

:DISPlay:WINDow2:TEXT:STATe?

Yes

 :FORMat

:FORMat:BORDer NORMal|SWAPped

Yes

 :FORMat

:FORMat:BORDer?

Yes

 :FORMat

:FORMat[:DATA] ASCii|REAL|SREal[,<NRf>]

Yes

 :FORMat

:FORMat[:DATA]?

Yes

 :FORMat

:FORMat:ELEMents:CALCulate CALC|TIME|STATus

Yes

 :FORMat

:FORMat:ELEMents:CALCulate?

Yes

 :FORMat

:FORMat:ELEMents[:SENSe[1]] VOLTage|CURRent|RESistance|TIME|STATus

Yes

 :FORMat

:FORMat:ELEMents[:SENSe[1]]?

Yes

 :FORMat

:FORMat:SOURce2 ASCii|HEXadecimal|OCTal|BINary

Yes

 :FORMat

:FORMat:SOURce2?

Yes

 :FORMat

:FORMat:SREGister ASCii|HEXadecimal|OCTal|BINary

Yes

 :FORMat

:FORMat:SREGister?

Yes

 :MEASure

:CONFigure?

Yes

 :MEASure

:CONFigure:CURRent[:DC]

Yes

 :MEASure

:CONFigure:RESistance

Yes

 :MEASure

:CONFigure:VOLTage[:DC]

Yes

 :MEASure

:FETCh?

Yes

 :MEASure

:MEASure?

Yes

 :MEASure

:MEASure:CURRent[:DC]?

Yes

 :MEASure

:MEASure:RESistance?

Yes

 :MEASure

:MEASure:VOLTage[:DC]?

Yes

 :OUTPut

:OUTPut[1]:ENABle:STATe <Bool>

Yes

 :OUTPut

:OUTPut[1]:ENABle:STATe?

Yes

 :OUTPut

:OUTPut[1]:ENABle:TRIPped?

Yes

 :OUTPut

:OUTPut[1]:SMODe HIMPedance|NORMal|ZERO|GUARd

Yes

 :OUTPut

:OUTPut[1]:SMODe?

Yes

 :OUTPut

:OUTPut[1][:STATe] <Bool>

Yes

 :OUTPut

:OUTPut[1][:STATe]?

Yes

 :ROUte

:ROUTe:TERMinals FRONt|REAR

Partially

 :ROUte

:ROUTe:TERMinals?

Partially

 :SENSe[1]

[:SENSe[1]]:AVERage:COUNt <NRf>|DEFault|MINimum|MAXimum

Yes

 :SENSe[1]

[:SENSe[1]]:AVERage:COUNt? [DEFault|MINimum|MAXimum]

Yes

 :SENSe[1]

[:SENSe[1]]:AVERage[:STATe] <Bool>

Yes

:SENSe[1]

[:SENSe[1]]:AVERage[:STATe]?

Yes

 :SENSe[1]

[:SENSe[1]]:AVERage:TCONtrol REPeat|MOVing

Yes

 :SENSe[1]

[:SENSe[1]]:AVERage:TCONtrol?

Yes

 :SENSe[1]

[:SENSe[1]]:CURRent[:DC]:NPLCycles <NRf>|DEFault|MINimum|MAXimum

Yes

 :SENSe[1]

[:SENSe[1]]:CURRent[:DC]:NPLCycles? [DEFault|MINimum|MAXimum]

Yes

 :SENSe[1]

[:SENSe[1]]:CURRent[:DC]:PROTection[:LEVel]
<NRf>|DEFault|MINimum|MAXimum

Yes

 :SENSe[1]

[:SENSe[1]]:CURRent[:DC]:PROTection[:LEVel]?
DEFault|MINimum|MAXimum

Yes

 :SENSe[1]

[:SENSe[1]]:CURRent[:DC]:PROTection:RSYNchronize <Bool>

Partially

 :SENSe[1]

[:SENSe[1]]:CURRent[:DC]:PROTection:RSYNchronize?

Yes

 :SENSe[1]

[:SENSe[1]]:CURRent[:DC]:PROTection:TRIPped?

Yes

 :SENSe[1]

[:SENSe[1]]:CURRent[:DC]:RANGe:AUTO <Bool>

Yes

 :SENSe[1]

[:SENSe[1]]:CURRent[:DC]:RANGe:AUTO?

Yes

 :SENSe[1]

[:SENSe[1]]:CURRent[:DC]:RANGe:AUTO:LLIMit <NRf>

Yes

 :SENSe[1]

[:SENSe[1]]:CURRent[:DC]:RANGe:AUTO:LLIMit?

Yes

 :SENSe[1]

[:SENSe[1]]:CURRent[:DC]:RANGe:AUTO:ULIMit?

Yes

 :SENSe[1]

[:SENSe[1]]:CURRent[:DC]:RANGe[:UPPer]
<NRf>|DEFault|MINimum|MAXimum|UP|DOWN

Yes

 :SENSe[1]

[:SENSe[1]]:CURRent[:DC]:RANGe[:UPPer]?
[DEFault|MINimum|MAXimum]

Yes

 :SENSe[1]

[:SENSe[1]]:DATA[:LATest]?

Yes

 :SENSe[1]

[:SENSe[1]]:FUNCtion:CONCurrent <Bool>

Yes

 :SENSe[1]

[:SENSe[1]]:FUNCtion:CONCurrent?

Yes

 :SENSe[1]

[:SENSe[1]]:FUNCtion:OFF "CURRent[:DC]"|"VOLTage[:DC]"|"RESistance",...

Yes

 :SENSe[1]

[:SENSe[1]]:FUNCtion:OFF?

Yes

 :SENSe[1]

[:SENSe[1]]:FUNCtion:OFF:ALL

Partially

 :SENSe[1]

[:SENSe[1]]:FUNCtion:OFF:COUNt?

Yes

 :SENSe[1]

[:SENSe[1]]:FUNCtion[:ON] "CURRent[:DC]"|"VOLTage[:DC]"|"RESistance",...

Yes

 :SENSe[1]

[:SENSe[1]]:FUNCtion[:ON]?

Yes

 :SENSe[1]

[:SENSe[1]]:FUNCtion[:ON]:ALL

Yes

 :SENSe[1]

[:SENSe[1]]:FUNCtion[:ON]:COUNt?

Yes

 :SENSe[1]

[:SENSe[1]]:FUNCtion:STATe? "CURRent[:DC]"|"VOLTage[:DC]"|"RESistance"

Yes

 :SENSe[1]

[:SENSe[1]]:RESistance:MODE MANual|AUTO

Partially

 :SENSe[1]

[:SENSe[1]]:RESistance:MODE?

Yes

 :SENSe[1]

[:SENSe[1]]:RESistance:NPLCycles <NRf>|DEFault|MINimum|MAXimum

Yes

 :SENSe[1]

[:SENSe[1]]:RESistance:NPLCycles? [DEFault|MINimum|MAXimum]

Yes

 :SENSe[1]

[:SENSe[1]]:RESistance:OCOMpensated <Bool>

No

 :SENSe[1]

[:SENSe[1]]:RESistance:OCOMpensated?

No

 :SENSe[1]

[:SENSe[1]]:RESistance:RANGe:AUTO <Bool>

Partially

 :SENSe[1]

[:SENSe[1]]:RESistance:RANGe:AUTO?

No

 :SENSe[1]

[:SENSe[1]]:RESistance:RANGe:AUTO:LLIMit <NRf>

No

 :SENSe[1]

[:SENSe[1]]:RESistance:RANGe:AUTO:LLIMit?

No

 :SENSe[1]

[:SENSe[1]]:RESistance:RANGe:AUTO:ULIMit <NRf>

No

 :SENSe[1]

[:SENSe[1]]:RESistance:RANGe:AUTO:ULIMit?

No

 :SENSe[1]

[:SENSe[1]]:RESistance:RANGe[:UPPer]
<NRf>|DEFault|MINimum|MAXimum|UP|DOWN

Yes

 :SENSe[1]

[:SENSe[1]]:RESistance:RANGe[:UPPer]? [DEFault|MINimum|MAXimum]

Yes

 :SENSe[1]

[:SENSe[1]]:VOLTage[:DC]:NPLCycles <NRf>|DEFault|MINimum|MAXimum

Yes

 :SENSe[1]

[:SENSe[1]]:VOLTage[:DC]:NPLCycles? [DEFault|MINimum|MAXimum]

Yes

 :SENSe[1]

[:SENSe[1]]:VOLTage[:DC]:PROTection[:LEVel]
<NRf>|DEFault|MINimum|MAXimum

Yes

 :SENSe[1]

[:SENSe[1]]:VOLTage[:DC]:PROTection[:LEVel]? [DEFault|MINimum|MAXimum]

Yes

 :SENSe[1]

[:SENSe[1]]:VOLTage[:DC]:PROTection:RSYNchronize <Bool>

Partially

 :SENSe[1]

[:SENSe[1]]:VOLTage[:DC]:PROTection:RSYNchronize?

Yes

 :SENSe[1]

[:SENSe[1]]:VOLTage[:DC]:PROTection:TRIPped?

Yes

 :SENSe[1]

[:SENSe[1]]:VOLTage[:DC]:RANGe:AUTO <Bool>

Yes

 :SENSe[1]

[:SENSe[1]]:VOLTage[:DC]:RANGe:AUTO?

Yes

 :SENSe[1]

[:SENSe[1]]:VOLTage[:DC]:RANGe:AUTO:LLIMit <NRf>

Yes

 :SENSe[1]

[:SENSe[1]]:VOLTage[:DC]:RANGe:AUTO:LLIMit?

Yes

 :SENSe[1]

[:SENSe[1]]:VOLTage[:DC]:RANGe:AUTO:ULIMit?

Yes

 :SENSe[1]

[:SENSe[1]]:VOLTage[:DC]:RANGe[:UPPer]
<NRf>|DEFault|MINimum|MAXimum|UP|DOWN

Yes

 :SENSe[1]

[:SENSe[1]]:VOLTage[:DC]:RANGe[:UPPer]? [DEFault|MINimum|MAXimum]

Yes

 :SOURce

:SOURce[1]:CLEar:AUTO <Bool>

Yes

 :SOURce

:SOURce[1]:CLEar:AUTO?

Yes

 :SOURce

:SOURce[1]:CLEar:AUTO:MODE ALWays|TCOunt

Partially

 :SOURce

:SOURce[1]:CLEar:AUTO:MODE?

Yes

 :SOURce

:SOURce[1]:CLEar[:IMMediate]

Yes

 :SOURce

:SOURce[1]:CURRent:CENTer <NRf>|DEFault|MINimum|MAXimum

Yes

 :SOURce

:SOURce[1]:CURRent:CENTer? [DEFault|MINimum|MAXimum]

Yes

 :SOURce

:SOURce[1]:CURRent[:LEVel][:IMMediate][:AMPLitude]
<NRf>|DEFault|MINimum|MAXimum

Yes

 :SOURce

:SOURce[1]:CURRent[:LEVel][:IMMediate][:AMPLitude]?
[DEFault|MINimum|MAXimum]

Yes

 :SOURce

:SOURce[1]:CURRent[:LEVel]:TRIGgered[:AMPLitude]
<NRf>|DEFault|MINimum|MAXimum

Yes

 :SOURce

:SOURce[1]:CURRent[:LEVel]:TRIGgered[:AMPLitude]?
[DEFault|MINimum|MAXimum]

Yes

 :SOURce

:SOURce[1]:CURRent[:LEVel]:TRIGgered:SFACtor <NRf>

Yes

 :SOURce

:SOURce[1]:CURRent[:LEVel]:TRIGgered:SFACtor?

Yes

 :SOURce

:SOURce[1]:CURRent[:LEVel]:TRIGgered:SFACtor:STATe <Bool>

Yes

 :SOURce

:SOURce[1]:CURRent[:LEVel]:TRIGgered:SFACtor:STATe?

Yes

 :SOURce

:SOURce[1]:CURRent:MODE FIXed|LIST|SWEep

Yes

 :SOURce

:SOURce[1]:CURRent:MODE?

Yes

 :SOURce

:SOURce[1]:CURRent:RANGe <NRf>|DEFault|MINimum|MAXimum|UP|DOWN

Yes

 :SOURce

:SOURce[1]:CURRent:RANGe? [DEFault|MINimum|MAXimum]

Yes

 :SOURce

:SOURce[1]:CURRent:RANGe:AUTO <Bool>

Yes

 :SOURce

:SOURce[1]:CURRent:RANGe:AUTO?

Yes

 :SOURce

:SOURce[1]:CURRent:SPAN <NRf>|DEFault|MINimum|MAXimum

Yes

 :SOURce

:SOURce[1]:CURRent:SPAN? [DEFault|MINimum|MAXimum]

Yes

 :SOURce

:SOURce[1]:CURRent:STARt <NRf>|DEFault|MINimum|MAXimum

Yes

 :SOURce

:SOURce[1]:CURRent:STARt? [DEFault|MINimum|MAXimum]

Yes

 :SOURce

:SOURce[1]:CURRent:STEP <NRf>|DEFault|MINimum|MAXimum

Yes

 :SOURce

:SOURce[1]:CURRent:STEP? [DEFault|MINimum|MAXimum]

Yes

 :SOURce

:SOURce[1]:CURRent:STOP <NRf>|DEFault|MINimum|MAXimum

Yes

 :SOURce

:SOURce[1]:CURRent:STOP? [DEFault|MINimum|MAXimum]

Yes

 :SOURce

:SOURce[1]:DELay <NRf>|DEFault|MINimum|MAXimum

Yes

 :SOURce

:SOURce[1]:DELay? [DEFault|MINimum|MAXimum]

Yes

 :SOURce

:SOURce[1]:DELay:AUTO <Bool>

Partially

 :SOURce

:SOURce[1]:DELay:AUTO?

Yes

 :SOURce

:SOURce[1]:FUNCtion[:MODE] VOLTage|CURRent|MEMory

Yes

 :SOURce

:SOURce[1]:FUNCtion[:MODE]?

Yes

 :SOURce

:SOURce[1]:FUNCtion:SHAPe DC|PULSe

Partially

 :SOURce

:SOURce[1]:FUNCtion:SHAPe?

Yes

 :SOURce

:SOURce[1]:LIST:CURRent <NRf list>

Yes

 :SOURce

:SOURce[1]:LIST:CURRent?

Yes

 :SOURce

:SOURce[1]:LIST:CURRent:APPend <NRf list>

Yes

 :SOURce

:SOURce[1]:LIST:CURRent:POINts?

Yes

 :SOURce

:SOURce[1]:LIST:CURRent:STARt <NRf>

Yes

 :SOURce

:SOURce[1]:LIST:CURRent:STARt?

Yes

 :SOURce

:SOURce[1]:LIST:VOLTage <NRf list>

Yes

 :SOURce

:SOURce[1]:LIST:VOLTage?

Yes

 :SOURce

:SOURce[1]:LIST:VOLTage:APPend <NRf list>

Yes

 :SOURce

:SOURce[1]:LIST:VOLTage:POINts?

Yes

 :SOURce

:SOURce[1]:LIST:VOLTage:STARt <NRf>

Yes

 :SOURce

:SOURce[1]:LIST:VOLTage:STARt?

Yes

 :SOURce

:SOURce[1]:MEMory:POINts <NRf>

Yes

 :SOURce

:SOURce[1]:MEMory:POINts?

Yes

 :SOURce

:SOURce[1]:MEMory:RECall <NRf>

Yes

 :SOURce

:SOURce[1]:MEMory:SAVE <NRf>

Yes

 :SOURce

:SOURce[1]:MEMory:STARt <NRf>

Yes

 :SOURce

:SOURce[1]:MEMory:STARt?

Yes

 :SOURce

:SOURce[1]:PULSe:DELay <NRf>

Yes

 :SOURce

:SOURce[1]:PULSe:DELay?

Yes

 :SOURce

:SOURce[1]:PULSe:WIDTh <NRf>

Yes

 :SOURce

:SOURce[1]:PULSe:WIDTh?

Yes

 :SOURce

:SOURce[1]:SOAK <NRf>

No

 :SOURce

:SOURce[1]:SOAK?

Partially

 :SOURce

:SOURce[1]:SWEep:CABort <name>

No

 :SOURce

:SOURce[1]:SWEep:CABort?

No

 :SOURce

:SOURce[1]:SWEep:DIRection UP|DOWN

Yes

 :SOURce

:SOURce[1]:SWEep:DIRection?

Yes

 :SOURce

:SOURce[1]:SWEep:POINts <NRf>|DEFault|MINimum|MAXimum

Yes

 :SOURce

:SOURce[1]:SWEep:POINts? [DEFault|MINimum|MAXimum]

Yes

 :SOURce

:SOURce[1]:SWEep:RANGing BEST|AUTO|FIXed

Partially

 :SOURce

:SOURce[1]:SWEep:RANGing?

Yes

 :SOURce

:SOURce[1]:SWEep:SPACing LINear|LOGarithmic

Yes

 :SOURce

:SOURce[1]:SWEep:SPACing?

Yes

 :SOURce

:SOURce[1]:VOLTage:CENTer <NRf>|DEFault|MINimum|MAXimum

Yes

 :SOURce

:SOURce[1]:VOLTage:CENTer? [DEFault|MINimum|MAXimum]

Yes

 :SOURce

:SOURce[1]:VOLTage[:LEVel][:IMMediate][:AMPLitude]
<NRf>|DEFault|MINimum|MAXimum

Yes

 :SOURce

:SOURce[1]:VOLTage[:LEVel][:IMMediate][:AMPLitude]?
[DEFault|MINimum|MAXimum]

Yes

 :SOURce

:SOURce[1]:VOLTage[:LEVel]:TRIGgered[:AMPLitude]
<NRf>|DEFault|MINimum|MAXimum

Yes

 :SOURce

:SOURce[1]:VOLTage[:LEVel]:TRIGgered[:AMPLitude]?
[DEFault|MINimum|MAXimum]

Yes

 :SOURce

:SOURce[1]:VOLTage[:LEVel]:TRIGgered:SFACtor <NRf>

Yes

 :SOURce

:SOURce[1]:VOLTage[:LEVel]:TRIGgered:SFACtor?

Yes

 :SOURce

:SOURce[1]:VOLTage[:LEVel]:TRIGgered:SFACtor:STATe <Bool>

Yes

 :SOURce

:SOURce[1]:VOLTage[:LEVel]:TRIGgered:SFACtor:STATe?

Yes

 :SOURce

:SOURce[1]:VOLTage:MODE FIXed|LIST|SWEep

Yes

 :SOURce

:SOURce[1]:VOLTage:MODE?

Yes

 :SOURce

:SOURce[1]:VOLTage:PROTection[:LEVel] <NRf>|NONE|DEFault|MINimum|MAXimum

No

 :SOURce

:SOURce[1]:VOLTage:PROTection[:LEVel]? [DEFault|MINimum|MAXimum]

No

 :SOURce

:SOURce[1]:VOLTage:PROTection:TRIPped?

No

 :SOURce

:SOURce[1]:VOLTage:RANGe <NRf>|DEFault|MINimum|MAXimum|UP|DOWN

Yes

 :SOURce

:SOURce[1]:VOLTage:RANGe? [DEFault|MINimum|MAXimum]

Yes

 :SOURce

:SOURce[1]:VOLTage:RANGe:AUTO <Bool>

Yes

 :SOURce

:SOURce[1]:VOLTage:RANGe:AUTO?

Yes

 :SOURce

:SOURce[1]:VOLTage:SPAN <NRf>|DEFault|MINimum|MAXimum

Yes

 :SOURce

:SOURce[1]:VOLTage:SPAN? [DEFault|MINimum|MAXimum]

Yes

 :SOURce

:SOURce[1]:VOLTage:STARt <NRf>|DEFault|MINimum|MAXimum

Yes

 :SOURce

:SOURce[1]:VOLTage:STARt? [DEFault|MINimum|MAXimum]

Yes

 :SOURce

:SOURce[1]:VOLTage:STEP <NRf>|DEFault|MINimum|MAXimum

Yes

 :SOURce

:SOURce[1]:VOLTage:STEP? [DEFault|MINimum|MAXimum]

Yes

 :SOURce

:SOURce[1]:VOLTage:STOP <NRf>|DEFault|MINimum|MAXimum

Yes

 :SOURce

:SOURce[1]:VOLTage:STOP? [DEFault|MINimum|MAXimum]

Yes

 :SOURce

:SOURce2:BSIZe 3|4

Partially

 :SOURce

:SOURce2:BSIZe?

Yes

 :SOURce

:SOURce2:CLEar:AUTO <Bool>

Yes

 :SOURce

:SOURce2:CLEar:AUTO?

Yes

 :SOURce

:SOURce2:CLEar:AUTO:DELay <NRf>|DEFault|MINimum|MAXimum

Yes

 :SOURce

:SOURce2:CLEar:AUTO:DELay? [DEFault|MINimum|MAXimum]

Yes

 :SOURce

:SOURce2:CLEar[:IMMEdiate]

Yes

 :SOURce

:SOURce2:TTL[:LEVel]:ACTual?

Yes

 :SOURce

:SOURce2:TTL[:LEVel][:DEFault] <NDN>|<NRf>

Yes

 :SOURce

:SOURce2:TTL[:LEVel][:DEFault]?

Yes

 :SOURce

:SOURce2:TTL4:BSTate <Bool>

Yes

 :SOURce

:SOURce2:TTL4:BSTate?

Yes

 :SOURce

:SOURce2:TTL4:MODE EOTest|BUSY

Yes

 :SOURce

:SOURce2:TTL4:MODE?

Yes

 :STATus

:STATus:MEASurement:CONDition?

Yes

 :STATus

:STATus:MEASurement:ENABle <NDN>|<NRf>

Yes

 :STATus

:STATus:MEASurement:ENABle?

Yes

 :STATus

:STATus:MEASurement[:EVENt]?

Yes

 :STATus

:STATus:OPERation:CONDition?

Yes

 :STATus

:STATus:OPERation:ENABle <NDN>|<NRf>

Yes

 :STATus

:STATus:OPERation:ENABle?

Yes

 :STATus

:STATus:OPERation[:EVENt]?

Yes

 :STATus

:STATus:PRESet

Yes

 :STATus

:STATus:QUEStionable:CONDition?

Yes

 :STATus

:STATus:QUEStionable:ENABle <NDN>|<NRf>

Yes

 :STATus

:STATus:QUEStionable:ENABle?

Yes

 :STATus

:STATus:QUEStionable[:EVENt]?

Yes

 :STATus

:STATus:QUEue:CLEar

Yes

 :STATus

:STATus:QUEue:DISable <list>

Yes

 :STATus

:STATus:QUEue:DISable?

Yes

 :STATus

:STATus:QUEue:ENABle <list>

Yes

 :STATus

:STATus:QUEue:ENABle?

Yes

 :STATus

:STATus:QUEue[:NEXT]?

Yes

 :SYSTem

:SYSTem:AZERo:CACHing:NPLCycles?

Partially

 :SYSTem

:SYSTem:AZERo:CACHing:REFResh

Partially

 :SYSTem

:SYSTem:AZERo:CACHing:RESet

Partially

 :SYSTem

:SYSTem:AZERo:CACHing[:STATe] <Bool>

Partially

 :SYSTem

:SYSTem:AZERo:CACHing[:STATe]?

Partially

 :SYSTem

:SYSTem:AZERo[:STATe] <Bool>

Partially

 :SYSTem

:SYSTem:AZERo[:STATe]?

Yes

 :SYSTem

:SYSTem:BEEPer[:IMMediate] <NRf>,<NRf>

Yes

 :SYSTem

:SYSTem:BEEPer:STATe <Bool>

Yes

 :SYSTem

:SYSTem:BEEPer:STATe?

Yes

 :SYSTem

:SYSTem:CCHeck ON|OFF

No

 :SYSTem

:SYSTem:CCHeck?

No

 :SYSTem

:SYSTem:CCHeck:RESistance <NRf>

No

 :SYSTem

:SYSTem:CCHeck:RESistance?

No

 :SYSTem

:SYSTem:CLEar

Yes

 :SYSTem

:SYSTem:ERRor:ALL?

Yes

 :SYSTem

:SYSTem:ERRor:CODE:ALL?

Yes

 :SYSTem

:SYSTem:ERRor:CODE[:NEXT]?

Yes

 :SYSTem

:SYSTem:ERRor:COUNt?

Yes

 :SYSTem

:SYSTem:ERRor[:NEXT]?

Yes

 :SYSTem

:SYSTem:GUARd OHMS|CABLe

No

 :SYSTem

:SYSTem:GUARd?

No

 :SYSTem

:SYSTem:KEY <NRf>

No

 :SYSTem

:SYSTem:KEY?

No

 :SYSTem

:SYSTem:LFRequency 50|60

Yes

 :SYSTem

:SYSTem:LFRequency?

Yes

 :SYSTem

:SYSTem:LFRequency:AUTO <Bool>

Yes

 :SYSTem

:SYSTem:LFRequency:AUTO?

Yes

 :SYSTem

:SYSTem:LOCal

No

 :SYSTem

:SYSTem:MEMory:INITialize

Yes

 :SYSTem

:SYSTem:MEP:HOLDoff

No

 :SYSTem

:SYSTem:MEP:HOLDoff?

No

 :SYSTem

:SYSTem:MEP[:STATe]?

Yes

 :SYSTem

:SYSTem:POSetup RST|PRESet|SAV0|SAV1|SAV2|SAV3|SAV4

Partially

 :SYSTem

:SYSTem:POSetup?

Yes

 :SYSTem

:SYSTem:PRESet

Yes

 :SYSTem

:SYSTem:RCMode SINGle|MULTiple

No

 :SYSTem

:SYSTem:RCMode?

No

 :SYSTem

:SYSTem:RSENse <Bool>

Yes

 :SYSTem

:SYSTem:RSENse?

Yes

 :SYSTem

:SYSTem:RWLock <Bool>

Yes

 :SYSTem

:SYSTem:RWLock?

Yes

 :SYSTem

:SYSTem:TIME?

Yes

 :SYSTem

:SYSTem:TIME:RESet

Yes

:SYSTem

:SYSTem:TIME:RESet:AUTO <Bool>

Yes

 :SYSTem

:SYSTem:TIME:RESet:AUTO?

Yes

 :SYSTem

:SYSTem:VERSion?

Yes

 :TRACe

:TRACe:CLEar

Yes

 :TRACe

:TRACe:DATA?

Yes

 :TRACe

:TRACe:FEED SENSe[1]|CALCulate[1]|CALCulate2

Yes

 :TRACe

:TRACe:FEED?

Yes

 :TRACe

:TRACe:FEED:CONTrol NEXT|NEVer

Yes

 :TRACe

:TRACe:FEED:CONTrol?

Yes

 :TRACe

:TRACe:FREE?

Yes

 :TRACe

:TRACe:POINts <NRf>|DEFault|MINimum|MAXimum

Yes

 :TRACe

:TRACe:POINts? [DEFault|MINimum|MAXimum]

Yes

 :TRACe

:TRACe:POINts:ACTual?

Yes

 :TRACe

:TRACe:TSTamp:FORMat ABSolute|DELTa

Yes

 :TRACe

:TRACe:TSTamp:FORMat?

Yes

 :TRIGger

:ABORt

Yes

 :TRIGger

:ARM[:SEQuence[1]][:LAYer[1]]:COUNt <NRf>|DEFault|MINimum|MAXimum

Yes

 :TRIGger

:ARM[:SEQuence[1]][:LAYer[1]]:COUNt?

Yes

 :TRIGger

:ARM[:SEQuence[1]][:LAYer[1]]:SOURce
IMMediate|TLINk|TIMer|MANual|BUS|NSTest|PSTest|BSTest

Yes

 :TRIGger

:ARM[:SEQuence[1]][:LAYer[1]]:SOURce?

Yes

 :TRIGger

:ARM[:SEQuence[1]][:LAYer[1]][:TCONfigure][:ASYNchronous]:ILINe 1|2|3|4

Partially

 :TRIGger

:ARM[:SEQuence[1]][:LAYer[1]][:TCONfigure][:ASYNchronous]:ILINe?

Yes

 :TRIGger

:ARM[:SEQuence[1]][:LAYer[1]][:TCONfigure][:ASYNchronous]:OLINe 1|2|3|4

Partially

 :TRIGger

:ARM[:SEQuence[1]][:LAYer[1]][:TCONfigure][:ASYNchronous]:OLINe?

Yes

 :TRIGger

:ARM[:SEQuence[1]][:LAYer[1]][:TCONfigure][:ASYNchronous]:OUTPut
TENTer|TEXit|NONE

Yes

 :TRIGger

:ARM[:SEQuence[1]][:LAYer[1]][:TCONfigure][:ASYNchronous]:OUTPut?

Yes

 :TRIGger

:ARM[:SEQuence[1]][:LAYer[1]][:TCONfigure]:DIRection SOURce|ACCeptor

Yes

 :TRIGger

:ARM[:SEQuence[1]][:LAYer[1]][:TCONfigure]:DIRection?

Yes

 :TRIGger

:ARM[:SEQuence[1]][:LAYer[1]]:TIMer <NRf>

Yes

 :TRIGger

:ARM[:SEQuence[1]][:LAYer[1]]:TIMer?

Yes

 :TRIGger

:INITiate[:IMMediate]

Yes

 :TRIGger

:READ?

Yes

 :TRIGger

:TRIGger:CLEAr

Yes

 :TRIGger

:TRIGger[:SEQuence[1]]:COUNt <NRf>|DEFault|MINimum|MAXimum

Yes

 :TRIGger

:TRIGger[:SEQuence[1]]:COUNt? [DEFault|MINimum|MAXimum]

Yes

 :TRIGger

:TRIGger[:SEQuence[1]]:DELay <NRf>|DEFault|MINimum|MAXimum

Yes

 :TRIGger

:TRIGger[:SEQuence[1]]:DELay? [DEFault|MINimum|MAXimum]

Yes

 :TRIGger

:TRIGger[:SEQuence[1]]:SOURce IMMediate|TLINk

Yes

 :TRIGger

:TRIGger[:SEQuence[1]]:SOURce?

Yes

 :TRIGger

:TRIGger[:SEQuence[1]][:TCONfigure][:ASYNchronous]:ILINe 1|2|3|4

Partially

 :TRIGger

:TRIGger[:SEQuence[1]][:TCONfigure][:ASYNchronous]:ILINe?

Yes

 :TRIGger

:TRIGger[:SEQuence[1]][:TCONfigure][:ASYNchronous]:INPut
SOURce|DELay|SENSe|NONE

Partially

 :TRIGger

:TRIGger[:SEQuence[1]][:TCONfigure][:ASYNchronous]:INPut?

Yes

 :TRIGger

:TRIGger[:SEQuence[1]][:TCONfigure][:ASYNchronous]:OLINe 1|2|3|4

Partially

 :TRIGger

:TRIGger[:SEQuence[1]][:TCONfigure][:ASYNchronous]:OLINe?

Yes

 :TRIGger

:TRIGger[:SEQuence[1]][:TCONfigure][:ASYNchronous]:OUTPut
SOURce|DELay|SENSe|NONE

Yes

 :TRIGger

:TRIGger[:SEQuence[1]][:TCONfigure][:ASYNchronous]:OUTPut?

Yes

 :TRIGger

:TRIGger[:SEQuence[1]][:TCONfigure]:DIRection SOURce|ACCeptor

Yes

 :TRIGger

:TRIGger[:SEQuence[1]][:TCONfigure]:DIRection?

Yes

 :TRIGger

:TRIGger:SEQuence2:SOURce <name>

No

 :TRIGger

:TRIGger:SEQuence2:SOURce?

No

 :TRIGger

:TRIGger:SEQuence2:TOUT <NRf>|DEFault|MINimum|MAXimum

No

 :TRIGger

:TRIGger:SEQuence2:TOUT? [DEFault|MINimum|MAXimum]

No

Model 2400 SCPI command compatibility

The following tables lists all the Model 2400 SCPI commands that are not fully supported by the Model 2400 personality script (Persona2400) and specific compatibility details for each command.

:CALCulate subsystem

:CALCulate2:NULL:ACQuire

Each time the personality script is run, the null offset value is reset to zero (0). Until a measurement is made, this command uses a zero (0) for the null offset value. After a measurement is made, this command uses latest measurement to set the null offset value (the same method used as a Model 2400).

:DISPlay subsystem

:DISPlay:DIGits 4|5|6|7|DEFault|MINimum|MAXimum

When 3.5 digits or MINimum is requested, the instrument sets the resolution to 4.5 digits.

:DISPlay:DIGits? [DEFault|MINimum|MAXimum]

When queried for the MINimum, the instrument returns 5.

:DISPlay:ENABle <Bool>

The Series 2600B performance is not degraded by display operation. The instrument accepts the command but no action is performed.

:DISPlay:WINDow2:ATTRibutes?

The instrument always returns 32 zeros.

:DISPlay:WINDow2:TEXT:STATe <Bool>

Changing this setting also changes the :DISPlay[:WINDow[1]]:TEXT:STATe setting to the same value.

DISPlay[:WINDow[1]]:ATTRibutes?

The instrument always returns 20 zeros.

DISPlay[:WINDow[1]]:TEXT:STATe <Bool>

Changing this setting also changes the :DISPlay:WINDow2:TEXT:STATe setting to the same value.

:ROUte subsystem

:ROUTe:TERMinals FRONt|REAR

The instrument accepts the command and ignores it.

:ROUTe:TERMinals?

The instrument always returns REAR.

:SENSe[1] subsystem

[:SENSe[1]]:CURRent[:DC]:PROTection:RSYNchronize <Bool>

The measurement range only tracks the limit range when the output is on.

[:SENSe[1]]:FUNCtion:OFF:ALL

Readings are not made when all the functions are turned off.

[:SENSe[1]]:RESistance:MODE MANual|AUTO

Only MANual is supported. The instrument generates an error if AUTO is selected.

[:SENSe[1]]:RESistance:RANGe:AUTO <Bool>

The instrument ignores this command. Resistance autorange is always OFF.

[:SENSe[1]]:VOLTage[:DC]:PROTection:RSYNchronize <Bool>

The measurement range only tracks the limit range when the output is on.

:SOURce subsystem

:SOURce[1]:CLEar:AUTO:MODE ALWays|TCOunt

Only ALWays is supported. The instrument generates an error if TCOunt is selected.

:SOURce[1]:DELay:AUTO <Bool>

This setting is not supported with source memory sweeps. Source memory sweeps do not use automatic delays.

:SOURce[1]:FUNCtion:SHAPe DC|PULSe

This setting is not supported with source memory sweeps. Source memory sweeps always use DC.

:SOURce[1]:SOAK?

Always returns 0.

:SOURce[1]:SWEep:RANGing BEST|AUTO|FIXed

When this setting is set to AUTO, a sweep leaves the corresponding source ranging set to AUTO. This is done each time the sweep is run.

:SOURce2:BSIZe 3|4

The 2499-DIGIO option is not supported. (16-bit size is not supported.)

:SYSTem subsystem

:SYSTem:AZERo:CACHing:NPLCycles?

Always returns 0.

:SYSTem:AZERo:CACHing:REFResh

This command is accepted and ignored. Causes no action or response.

:SYSTem:AZERo:CACHing:RESet

This command is accepted and ignored. Causes no action or response.

:SYSTem:AZERo:CACHing[:STATe] <Bool>

This command is accepted and ignored. The setting is always ON.

:SYSTem:AZERo:CACHing[:STATe]?

Always returns 1.

:SYSTem:AZERo[:STATe] <Bool>

When AZERO state is set to ON, reference and zero measurements are automatically made when they are out of date. If this happens, the time to make a measurement increases. This can cause sweep timing to be irregular when compared to a Model 2400 as the Model 2400 takes longer on every measurement.

:SYSTem:POSetup RST|PRESet|SAV0|SAV1|SAV2|SAV3|SAV4

SYSTem:POSetup command is accepted but has no effect, *SAV and *RCL are not supported.

:TRIGger subsystem

:ARM[:SEQuence[1]][:LAYer[1]][:TCONfigure][:ASYNchronous]:ILINe 1|2|3|4

The instrument does not allow the same TLink line to be used for an input trigger and an output trigger simultaneously. Also, it does not allow the same TLink line to be used as an input trigger for both the arm and trigger layer simultaneously. The instrument generates an error when attempting to leave the idle layer if these conditions are violated. The reset default for the arm layer input line (ARM:ILINe) is 1.

:ARM[:SEQuence[1]][:LAYer[1]][:TCONfigure][:ASYNchronous]:OLINe 1|2|3|4

The instrument does not allow the same TLink line to be used for an input trigger and an output trigger simultaneously. The instrument generates an error when attempting to leave the idle layer if this condition is violated. The reset default value for the arm layer output line (ARM:OLINe) is 3.

:TRIGger[:SEQuence[1]][:TCONfigure][:ASYNchronous]:ILINe 1|2|3|4

The instrument does not allow the same TLink line to be used for an input trigger and an output trigger simultaneously nor does it allow the same TLink line to be used as an input trigger for both the arm and trigger layer simultaneously. The instrument generates an error when attempting leave the idle layer if these conditions are violated. The reset default for the trigger layer input line (TRIGger:ILINe) is 2.

:TRIGger[:SEQuence[1]][:TCONfigure][:ASYNchronous]:INPut SOURce|DELay|SENSe|NONE

Only one of these options may be selected at a time.

:TRIGger[:SEQuence[1]][:TCONfigure][:ASYNchronous]:OLINe 1|2|3|4

The instrument does not allow the same TLink line to be used for an input trigger and an output trigger simultaneously. The instrument generates an error when attempting to leave the idle layer if this condition is violated. The reset default for the trigger layer output line (TRIGger:OLINe) is 4.

Frequently asked questions

How do I display the instrument's serial number?

The instrument serial number is on a label on the rear panel of the instrument. You can also access the serial number from the front panel using the front-panel keys and menus.

To display the serial number on the front panel:

  1. If the 2600B is in remote operation, press the EXIT (LOCAL) key once to place the instrument in local operation.
  2. Press the MENU key.
  3. Use the navigation wheel to scroll to the SYSTEM-INFO menu item.
  4. Press the ENTER key. The SYSTEM INFORMATION menu is displayed.
  5. Scroll to the SERIAL# menu item.
  6. Press the ENTER key. The 2600B serial number is displayed.

How do I optimize performance?

The primary factors that affect measurement accuracy and speed are:

  • Warm-up: For rated measurement accuracy, allow the 2600B to warm up for at least two hours before use.
  • Speed setting: The speed setting affects both speed and accuracy. For more information, see Speed.
  • Autozero: Autozero can be disabled to increase speed at the expense of accuracy (for more information, see Disabling autozero to increase speed).

Disabling autozero to increase speed

Disabling autozero (setting it to OFF) can increase measurement speed. If autozero is disabled, accuracy drifts with time and temperature.

VARIABLE - NOTE Turning autozero OFF disables the autozero function and possibly increases measurement speed. To minimize drift, setting autozero to ONCE performs an autozero operation one time (when it is selected), and then disables the autozero function. For a more detailed discussion of autozero, see Autozero.

To configure autozero from the front panel:

  1. Press the CONFIG key, and then select MEAS from the menu.
  2. Select AUTO-ZERO, and then press the ENTER key or the navigation wheel.
  3. Select the mode (OFF, ONCE, or AUTO), and then press the ENTER key or the navigation wheel.
  4. Press the EXIT (LOCAL) key to the normal display.

Refer to Remote command autozero for details about configuring autozero from a remote interface.

How do I upgrade the firmware?

For information on upgrading the firmware, see Upgrading the firmware.

How do I use the digital I/O port?

You can use the 2600B digital input/output with the trigger model or to control an external digital circuit, such as a device handler used to perform binning operations. To control or configure any of the six digital I/O lines, send commands to the 2600B over a remote interface.

Use a cable equipped with a DB‑25 plug (L-com part number CSMN25MF-5) to connect the digital I/O port to other Keithley models equipped with a Trigger Link (TLINK).

For more information about the 2600B digital I/O port, see Digital I/O.

How do I trigger other instruments?

You can use the 2600B digital input/output to control an external digital circuit, such as a device handler used to perform binning operations. For more information about the 2600B digital I/O port, see Digital I/O.

Another option is the Keithley TSP-LinkTM interface, a high‑speed trigger synchronization and communications bus that you can use to connect multiple instruments in a master and subordinate configuration. See TSP-Link System Expansion Interface for additional information.

Triggering a scanner

A typical test scenario might call for using the 2600B with a scanner to test a number of devices under test (DUTs) in sequence. A basic example of this uses the 2600B digital I/O port to trigger a scanner (shown in the figure below). In this example, line 1 of the digital I/O port is used as a trigger output and connected to the scanner mainframe trigger input, and line 2 of the digital I/O port is used as a trigger input.

Triggering a scanner

Interactive trigger programming

The programming example below illustrates how to set up interactive triggering. The example sets the output trigger pulse width on line 1, then programs both lines 1 and 2 for falling edge triggers. Digital I/O line 1 trigger asserts, and then line 2 waits for the input trigger up to the timeout period specified.

-- Set line 1 pulse width to 10 us.

digio.trigger[1].pulsewidth = 10e-6

-- Set line 1 mode to falling edge.

digio.trigger[1].mode = digio.TRIG_FALLING

-- Set line 2 mode to falling edge.

digio.trigger[2].mode = digio.TRIG_FALLING

-- Assert trigger on line 1.

digio.trigger[1].assert()

-- When complete, wait for trigger on line 2.

digio.trigger[2].wait(2)

More information about triggering

To obtain precise timing and synchronization between instruments, use the remote trigger model. For more information about the remote trigger model and interactive triggering using other trigger objects, see Triggering.

How do I generate a GPIB service request?

VARIABLE - NOTE For detailed information about this topic, see Status model.

Setting up a service request

The exact programming steps necessary to generate a GPIB service request (SRQ) vary depending on the events intended to generate the SRQ. In general, these steps are:

  1. Clear all status registers to prevent anomalous events from generating an SRQ.
  2. Set the appropriate bits in the appropriate status model enable registers.
  3. Set the proper bits in the service request enable register. At least one bit in this register must always be set, but the exact bits to be set depend on the SRQ events you want.

Service request programming example

The example below shows how to program the 2600B to generate a service request (SRQ) when the current limit on channel A is exceeded.

-- Clear all registers.

status.reset()

-- Enable the current limit bit in the current limit register.

status.measurement.current_limit.enable = status.measurement.current_limit.SMUA

-- Enable the status measure current limit bit.

status.measurement.enable = status.measurement.ILMT

-- Enable the status SRQ MSB.

status.request_enable = status.MSB

Polling for SRQs

To determine if the 2600B is the GPIB device that generated the service request (SRQ), serial poll the instrument for the status byte, and test to see if the corresponding summary bits are set.

How do I store measurements in nonvolatile memory?

After the measurements are complete, you can save the reading buffer data to the nonvolatile memory in the instrument.

To save the reading buffer data:

  1. From the front panel, press the STORE key, and then select SAVE.
  2. Select INTERNAL to save to internal nonvolatile memory.
  3. Select one of the following:
    • SMUA_BUFFER1
    • SMUA_BUFFER2
    • SMUB_BUFFER1 (2602B, 2604B, 2612B, 2614B, 2634B, and 2636B only)
    • SMUB_BUFFER2 (2602B, 2604B, 2612B, 2614B, 2634B, and 2636B only)
  4. The front panel displays Saving... This may take awhile.
  5. Press the EXIT (LOCAL) key to return to the main menu.

For additional information, see Saving reading buffers.

When should I change the output-off state?

VARIABLE - CAUTION Carefully consider and configure the appropriate output-off state, source function, and compliance limits before connecting the 2600B to a device that can deliver energy (for example, other voltage sources, batteries, capacitors, solar cells, or other 2600B instruments). Configure recommended instrument settings before making connections to the device. Failure to consider the output-off state, source, and compliance limits may result in damage to the instrument or to the device under test (DUT).

The 2600B instrument provides multiple output-off states. The multiple states are required because different types of connected devices (or loads) require different behaviors from the 2600B when its output is turned off. Therefore, careful selection of the proper output-off state is important to prevent damage to devices and instruments. This is especially true when the device can deliver energy to the 2600B, such as a battery or capacitor or when another SourceMeter instrument is connected across the output terminals. In these situations, you should use an output-off state that isolates the instrument from the device by either setting smuX.source.offfunc = smuX.OUTPUT_DCAMPS or smuX.source.offfunc = smuX.OUTPUT_DCVOLTS, as applicable.

For example, a passive device such as a diode is not affected by a 0 V source connected across its terminals when the output is turned off. However, connecting a 0 V source to the terminals of a battery causes the battery to discharge.

There are other guidelines to follow when connecting the output of multiple 2600B instruments to get a larger current or voltage. Refer to the following references for more information:

How do I make contact check measurements?

VARIABLE - NOTE The Models 2604B, 2614B, and 2634B do not perform contact check measurements.

For information about making contact check measurements, see Contact check measurements and Contact check.

How do I make low-current measurements?

Low-current measurements (<1 mA) are subject to errors caused by leakage currents and leakage resistances in the signal path. Model 2634B, 2635B, and 2636B instruments are equipped with triaxial connectors to minimize these problems. To assure accurate low-level measurements, the integrity of the signal path must be maintained to the device under test (DUT), including using both low-noise triaxial cables and a suitable test fixture.

Low-current connections

The figure below shows typical connections for low-current measurements. The DUT in this example could be a low-current semiconductor device, a high-megohm resistor, or any other passive or active electronic device requiring low-current measurements. Note that the DUT is enclosed in both a guard shield and a safety shield.

The inner shield (guard) of the HI triaxial cable is connected to the test fixture guard shield. The guard shield prevents leakage currents from affecting the measurements. The outer cable shield (chassis ground or protective earth (safety ground)) is connected to the safety shield.

VARIABLE - WARNING A safety shield must be used whenever hazardous voltages (>30 VRMS, 42 VPEAK) will be present in the test circuit. To prevent electrical shock that could cause injury or death, never use the 2600B in a test circuit that may contain hazardous voltages without a properly installed and configured safety shield.

Connect the enclosure of all metal test fixtures to protective earth (safety ground). Nonconductive test fixtures must be rated to double the maximum capability of the test equipment in the system. Failure to attach the ground wires to a known protective earth may result in electric shock.

Typical low-current connections

(1)

2600B interlock digital I/O. Pin 24 (INT) and pin 22 (5 V DC) are connected to the test fixture lid switch. The interlock switch is shown in the disengaged, or lid open, position.

(2)

Normally‑open (NO) interlock metal safety enclosure.

(3)

HI and LO connections using triaxial female panel mount connectors. LO is connected to the metal noise shield.

(4)

To protective earth (safety ground) from the test fixture or protection module. Additional connections for redundant protective earth may be required.

(5)

Triaxial cable assembly (Model 7078-TRX).

Low-current measurement programming example

Example code for a typical low-current measurement is shown below. This code assumes that a 100 GO resistor is being tested.

-- Restore defaults.

smua.reset()

-- Set source to DCV.

smua.source.func = smua.OUTPUT_DCVOLTS

-- Select 200 V source range.

smua.source.rangev = 200

-- Output 100 VDC.

smua.source.levelv = 100

-- Select 1 nA range.

smua.measure.rangei = 1e-9

-- Set current limit to 2 nA.

smua.source.limiti = 2e-9

-- Turn on output.

smua.source.output = smua.OUTPUT_ON

-- Delay 1 second to allow for source and measure settling.

smua.source.delay = 1

-- Returns current reading.

print(smua.measure.i())

-- Returns resistance reading.

print(smua.measure.r())

-- Turn off output.

smua.source.output = smua.OUTPUT_OFF

How can I change the line frequency or voltage?

The 2600B requires a line voltage of 100 V AC to 240 V AC (±10%) and a line frequency of 50 Hz or 60 Hz. The factory configures the 2600B to automatically detect and operate at the appropriate power line frequency each time the instrument power is turned on. In noisy environments, it may be necessary to manually configure the instrument to match the actual line frequency. For more information, see Line frequency configuration.

To configure the line frequency from the front panel:

  1. Press the MENU key, then turn the navigation wheel to select LINE-FREQ, and then press the ENTER key.
  2. Turn the navigation wheel to select the appropriate frequency and then press the ENTER key. To configure the instrument to automatically detect line frequency at each power-up, select AUTO.
  3. Press the EXIT (LOCAL) key to return to the main display.

To configure the line frequency from a remote interface:

Set the localnode.linefreq or the localnode.autolinefreq attribute. To set the line frequency to 60 Hz, send:

localnode.linefreq = 60

To configure the instrument to automatically detect line frequency at each power-up:

localnode.autolinefreq = true

Where can I get the LabVIEW driver?

The latest NITM LabVIEWTM driver is available on tek.com/keithley.

What should I do if I get an 802 interlock error?

You receive error code 802, "OUTPUT blocked by interlock," if you:

  • Disengage the interlock when the 2600B output is already on.
  • Attempt to turn on the 2600B output when the interlock is disengaged.

To recover from this error, properly engage the interlock using a safe test fixture, and then turn on the 2600B output.

Why is the reading value 9.91e37?

This value indicates that there is a measurement overflow error. This error occurs when:

  • A measurement performed on a fixed range has a measured value greater than the specified range
  • The measured value is larger than the maximum current or voltage range of the instrument (exceeds the instrument rating)

If the instrument displays the overflow message on a particular range, select a higher range until an on-range reading is displayed. To ensure the best accuracy and resolution, use the lowest range possible that does not cause an overflow.

Where can I find the Model 2400 emulation script?

The 2600B provides for emulation of the Model 2400 command set using an emulation script. When run, this script takes control of the remote command interfaces and interprets any commands received.

The Model 2400 software emulation personality script is available for download from tek.com/keithley. Search for “TSP Script for Series 2600B SMUs to Emulate Model 2400 SMUs.”

Refer to Model 2400 emulation for additional information about using the emulation script.

Help us improve our technical documentation. Provide feedback on our TekTalk documentation forum.

US
Current Language
×
English

Select a language:

Contact your local Tektronix office:

Contact Us
Toggle Menu
US
Current Language
×
English

Select a language:

Contact your local Tektronix office:

Contact Us

IsoVu™ Measurement System

Manual Topics

General Information

Introduction

Getting Started

Reference Information

Service

Remote Programming

Contact us

Live Chat with Tek representatives. Available 6:00 AM - 4:30 PM PST.

Downloads

Download Manuals, Datasheets, Software and more:

Media Type
MODEL or KEYWORD