Free Shipping logo FREE SHIPPING £75+
50 years of Telonic Instruments Ltd logo CELEBRATING 50+ YEARS
Price Match logo PRICE MATCH GUARANTEE

UltraView Data Trend

Posted on: December 15th, 2020 by Doug Lovell

Data Trend will not initialize with the default folder selected:

C:\Program Files (x86)\RIGOL\Ultra Sigma\

Changing the folder will fix this issue. For example changing the folder to “D:\Rigol” will allow Data Trend to initialize.

External USB Data Acquisition with the Rigol DM3068

Posted on: December 15th, 2020 by Doug Lovell

1.    Insert USB stick (FAT32 format) 
 
2.    Change the trigger source to single. This mode allows you manual control of the start of the data acquisition as well as allowing you to control the number of samples acquired.  
 
Press TRIG > SOURCE > SINGLE  
  
 
3.    Press DONE and the SINGLE button will become enabled 
 
4.    Press SET > SNO to set the number of samples.   
 
NOTE: Use the right and left arrows to move the cursor to the decimal place you wish to change and then use the up and down arrows to increment or decrement the value. In this example, we set the number of samples to 1000. 
 
 
5.    Press DONE to accept the changes. 
 
6.    Press TRIG to back out of the trigger menu and get back to the measurement display.  
 
NOTE: The display is no longer updating. The rotating indicator and digits are fixed. The meter is now waiting for manual input before it will begin updating.  

  
7.    Clear the memory data by changing functions. In this example, we switch from DCV to ACV and back to DCV.  
 
NOTE: The record number (in HISTORY) is set to 0 after the function change.   
 
 
8.    Select the function that you wish to use during the data acquisition process. 
 
9.    Press SINGLE to begin the data acquisition 
 
10.    The instrument display will continue to update until the data buffer is filled with the number of samples that were set earlier.  
  
      
11.    You can take a look at the statistics as well as the number of samples collected   by pressing HISTORY 
 
12.    To Save the data, press SAVE > Set Disk to A:\ > Set TYPE to Meas_CSV 
 
  
13.    Press SAVE to open the text entry field, name the file, and press DONE to  write the CSV data to the external USB drive.

Measuring Temperature with an RTD on a DM3068

Posted on: December 15th, 2020 by Doug Lovell

These steps will allow you to use your Rigol DM3068 to take temperature measurements with and RTD (Resistance Temperature Detector). You will need to know the R0 of your RTD, which is the resistance at 0 degrees Celsius, and the Alpha value, which is the rate at which the resistance scales over temperature. 

Note: The process for using a DM3058 is similar, but the menu items may have different names.

1. Select Sensor > Temp > New > RTD > R0
2. Input the R0 resistance for your temp probe 
3. Press Alpha and choose the correct alpha value for your temp probe
4. Press (back) > 2WR of 4WR depending on how many inputs your probe is using (2 or 4 wires)
5. Press (back) > (back) > Unit and choose desired temp unit
6. Press (back) > Done > Save
7. Name the save state if you want 
8. Press (back) > Done > Apply 
NOTE: This last step is a little unintuitive, but very important. If you don’t back up after saving and press apply, nothing will happen. 

Once You have create this sensor mode, the next time you want to switch into it you will just need to press Sensor > Load, then after making sure your desired setting file is highlighted, press Read.

How to create a list file with Excel

Posted on: December 15th, 2020 by Doug Lovell

The DSG800 series requires lists files to have the following format.  Note that it requires the correct units to be also added to cell as well as the space between the value and the units. Once you have created the file save it as a .CSV file.

SN Freq Level Time Freq Offset Level Offset
1 905 MHz -50.00 dBm
100.000 000 ms
0.00 Hz
0.00 dB
2 915 MHz -50.00 dBm
100.000 000 ms
0.00 Hz
0.00 dB
3 925 MHz -50.00 dBm
100.000 000 ms
0.00 Hz
0.00 dB
4 935 MHz -50.00 dBm
100.000 000 ms
0.00 Hz
0.00 dB
5 945 MHz -35.00 dBm
100.000 000 ms
0.00 Hz
0.00 dB
6 1.8 GHz -35.00 dBm
100.000 000 ms
0.00 Hz
0.00 dB
7 1.85 GHz -35.00 dBm
100.000 000 ms
0.00 Hz
0.00 dB
8 1.9 GHz -35.00 dBm
100.000 000 ms
0.00 Hz
0.00 dB
9 2.41 GHz -15.00 dBm
100.000 000 ms
0.00 Hz
0.00 dB
10 2.42 GHz -15.00 dBm
100.000 000 ms
0.00 Hz
0.00 dB
11 2.44 GHz -15.00 dBm
100.000 000 ms
0.00 Hz
0.00 dB

How to load a List file onto the DSG800 Series

Posted on: December 15th, 2020 by Doug Lovell

To load a list file onto the DSG800 series you first have to create a file in excel and then save it as a .CSV file.  See the article “How to Create a List File” for more information about how to format the file.  With the file saved now load the file into a fold on your flashdrive, note that the file is unable to be read if it is in the root directory in the flashdrive.  Then insert the flashdrive into the back of the instrument. 

Next press the Sweep button and then set the Sweep, this can either be frequency, level or frequency and level.  Then set the Type to be list and then set your Mode to either be continuous or single.  Next press the arrow down button on the instrument and press List Sweep and the Load. 

At this point you are presented with the instrument file navigation menu, you will first need to select you flashdrive, it is on the E directory, with this high lighted in blue use the arrows below the rotary encoder to move into the folder, by pressing the right arrow.  Then select your folder, this will also need to be highlighted in blue before pressing the right arrow and then select your file.  Finally to load the file press Recall.  This will cause the instrument to load your file and then start sweeping the list file.

What size Terminal Ring will fit on the DL3000 series loads?

Posted on: December 15th, 2020 by Doug Lovell

On occasion you may want to build up your own cabling to connect to the input terminals of the DL3000 series loads.  Item A in the figure below.

 








Here are the compatible dimensions for choosing a terminal ring:

Choosing between DL3000 load models

Posted on: December 15th, 2020 by Doug Lovell

There are 4 models in the DL3000 load family: DL3021, DL3021A, DL3031, DL3031A
There are differences in the power and current levels as well as the advanced capabilities. Use this table to identify the best configuration for your application.

DL3021 DL3021A DL3031 DL3031A
Total Power 200 W 200 W 350 W 350 W
Max Current 40 A 40 A 60 A 60 A
User Interface Monochrome Full Color Monochrome Full Color
Max Current Slew Rate 2.5 A/μs Standard; 3 A/μs Optional 3 A/μs Standard 2.5 A/μs Standard; 5 A/μs Optional 5 A/μs Standard
Max continuous mode Frequency 15 kHz Standard;
30 kHz Optional
30 kHz Standard 15 kHz Standard;
30 kHz Optional
30 kHz Standard
Readback Current Resolution 1 mA Standard;
0.1 mA Optional
0.1 mA Standard 1 mA Standard;
0.1 mA Optional
0.1 mA Standard
Digital I/O triggering Optional Standard Optional Standard
Ethernet Comm. Optional Standard Optional Standard


Here is an example of the monochrome vs full colour user interface. The DL3000A models have the full colour interface. The DL3000 (non-A) models use monochrome and can NOT be upgraded to full colour.


The options are available to add to the DL3000 (non-A) models. These are software licenses that can be field upgraded at a later date as your application needs change. This future proofs your investment in RIGOL with a product that can grow with your test requirements. The option model numbers are:

Optional Capability Model Number
Max Current Slew Rate SLEWRATE-DL3
Max continuous mode Frequency FREQ-DL3
Readback Current Resolution HIRES -DL3
Digital I/O triggering DIGITALIO-DL3
Ethernet Comm. LAN-DL3

Programming Example: Performing a series of measurements with an SDM and Scan Card

Posted on: December 15th, 2020 by Doug Lovell

Here are a list of recommended commands for programmatically executing a scan with a SIGLENT SDM3055 or SDM3065X with scan card option (formerly the SC1016 option)

NOTE: # indicates a comment. You may need to change this symbol, depending on which programming environment you choose to use.

The commands, shown in quotes, will need to be sent using the appropriate function call for the program environment and command type. More information on each command can be found in the Programming Guide for the SDM. For exact command syntax, please refer to your programming environment documentation.

“ROUT:SCAN ON” #Enable scan

“ROUT:FUNC STEP” #Select step type of scan

“ROUT:DCV:AZ OFF” #Turn off the Autozero. Scan will execute more quickly, but accuracy may suffer over time due to drift

“ROUT:CHAN 1,ON,DCV,AUTO,FAST” #Configure Channel 1

“ROUT:CHAN 2,ON,DCV,AUTO,FAST” #Configure Channel 2

“ROUT:CHAN 3,ON,DCV,AUTO,FAST” #Configure Channel 3

“ROUT:CHAN 4,ON,DCV,AUTO,FAST” #Configure Channel 4

“ROUT:CHAN 5,ON,DCV,AUTO,FAST” #Configure Channel 5

#The scan will start at the Low channel and step to the High, defined below

“ROUT:LIMI:HIGH 5” #This sets the highest channel value in the scan list

“ROUT:LIMI:LOW 1” #This sets the lowest channel value in the scan list

“ROUTe:COUN 1” #Perform a single scan

“ROUTe:START ON” #Begin scan

#Poll (loop, when response matches “OFF”, scan is finished)

“ROUT:START?” #Is the scan finished?

#Insert proper READ statement here to evaluate return string for poll

#Return data string from each channel individually

“ROUT:DATA? 1”

#Insert proper READ statement here to return the data string

“ROUT:DATA? 2”

#Insert proper READ statement here to return the data string

“ROUTe:DATA? 3”

#Insert proper READ statement here to return the data string

“ROUTe:DATA? 4”

#Insert proper READ statement here to return the data string

“ROUTe:DATA? 5”

#Insert proper READ statement here to return the data string

Measuring Power Supply Control Loop Response with Bode Plot II

Posted on: December 15th, 2020 by Doug Lovell

Stability is one of the most important characteristics in power supply design. Traditionally, stability measurements require expensive frequency response analyzers (FRA) which are not always available in a laboratory. Now, using a Siglent oscilloscope, like the SDS1204X-E with the newly released Bode Plot Ⅱ software, together with a Siglent arbitrary waveform generator (SDG or SAG) and a Picotest injection transformer, the measurement can be made.

In this application note, we will show you the basic principles for making this stability measurement and how to use these instruments to make the measurement.

Figure 1: Bode II setup

 

1. Basic Principle of Stability Measurement

 

1.1 Stability of The Feedback System

A regulated power supply is actually a feedback amplifier with a large amount of current sourcing capability. Any theory that applies to a basic feedback amplifier also applies to a regulated power supply.

In feedback theory, the stability of a feedback system can be determined by evaluating the loop transfer function. A more practical way is to measure the bode plot of the loop gain. Figure 2 shows a typical feedback system.

The closed loop transfer A is the mathematical relationship between input x and output y. The loop gain T, by its name, is defined as the gain of a signal traveling around the loop.

Figure 2: Typical Feedback Loop

Since α and β are complex variables, they have not only magnitude but also phase angle, as also does the loop gain T. If the phase angle of T reaches -180° while the magnitude is 1, the closed-loop transfer function A becomes infinity. In this situation, the system will maintain an output signal while there is no input. Thus, the system acts as an oscillator rather than as an amplifier, which means that the system is not stable.

If we plot the loop gain in a bode plot, we can evaluate the stability by finding the phase margin and gain margin. A phase margin is defined as how many degrees the phase can be decreased before reaching -180°while the magnitude is 1 (or 0 dB). The gain margin is defined as how many dB in magnitude can be added before reaching 1 (or 0 dB) while the phase is -180°.

Figure 3: Bode Plot, phase, and gain margin

 

1.2 Break the Loop

To get the desired loop gain, we simply break the loop. Figure 4 shows how to break the loop in a typical feedback system. Technically you can break the loop any place you like. We commonly choose to break the loop at the point between the amplifier output and the feedback network. Then we insert a test signal i to travel around the loop. The loop gain is the mathematical relationship between the output y and the test signal i.

Figure 4: Breaking the loop in a typical feedback system

1.3 Loop Injection

In reality, we can never really break the loop because the feedback loop serves to maintain the DC quiescent operation point of the circuits. Without the feedback loop, the device under test will become saturated because of the small input offset voltage, and then no useful result can be measured.

To overcome this, we should measure the open loop response inside a closed loop. Therefore, we just inject a signal to the loop rather than breaking the loop. Figure 5 shows a typical method of loop injection. The injection point is chosen so that the impedance looking in the direction of the loop is much higher than that looking backward. One possible point is between the output and the resistor divider feedback network. Other points that meet this requirement may be chosen.

Figure 5: Loop injection

To maintain the closed loop, a small injection resistor Ri is inserted at the injection point. The resistor should be small enough so that it will have little effect on the circuit and also the lower the resistor value the lower the frequency the transformer will operate. Picotest recommends a resistor value of 4.99 Ω for the J2100A, and larger value may be chosen depending on the circuits. The injection signal is then applied across the injection resistor.

The signal injected should have no effect on the DC operating point of the circuit. A method to solve the common ground connection problem is to use an injection transformer as shown in Figure 6.

Figure 6: Injection Transformer

The injection signal starts at one end of the injection resistor, travels through the resistor divider feedback network, the error amplifier and the pass element transistor and finally to the output, which is the other end of the injection resistor. The relationship between the injection signal i  and the output signal y is the loop gain that we wish to measure.

Be aware that we are measuring an open loop parameter inside a closed loop, the phase starts at 180°and decreases to 0°, rather than starting at 0°and decreasing to -180°. So the phase margin should be measured relative to 0°.

 

2. Measurement Setup and Result

 

2.1 Equipment

Oscilloscope: Siglent SDS1204X-E with firmware version higher than 6.1.27R1 (Bode Plot Ⅱ release)

Signal Source: Siglent SDG2042X

Power Supply: Siglent SPD3303X

Probe: Siglent PP215 passive probe switched to 1X

Injection Transformer: Picotest J2100A

Device-Under-Test: Picotest VRTS v1.51

 

2.2 Circuit Connection

The Picotest VRTS v1.51 is a demonstration board for voltage regulator testing. Technically it is a linear regulator built from the famous TL431 and a discrete transistor. The schematic is shown in Figure 7. Different output capacitors can be selected to see the impact on the control loop stability.

Figure 7: VRTS v1.51 schematic

For the propose of our power supply control loop response measurement, the injection point is TP3 and TP4. The circuit connection is shown in Figure 8.

The generator is connected to the oscilloscope through USB (connection through Ethernet is also supported).

The injection transformer is connected in parallel with the injection resistor so that the signal is injected to the loop while preventing the circuit DC operation point from being affected by the generator.

The TP3 and TP4 points are also connected to the oscilloscope, and the TP4 is defined as the DUT Input while the TP3 is the DUT Output in the Bode Plot Ⅱ.

Figure 8: Circuit connection

 

Figure 9: Probe and Transformer connections to the DUT

 

2.3 Instrument Configuration

In this section, we will show how the key configuration should be made in order to make the measurement correctly. For complete instructions to the Bode Plot Ⅱ, please refer to the user manual and the quick start guide.

Before entering the Bode Plot Ⅱ, it is recommended that you enable the oscilloscope’s 20 MHz bandwidth limit setting.

At this time, we want to measure the bode plot from 10 Hz all the way to 100 kHz. This frequency range should be enough for a circuit with an expected crossover frequency at about 10 kHz.

Enter the Config menu and set the Sweep Type to Simple, then enter Set Sweep to set the sweeping frequency. Set the Mode to Decade and Start to 10 Hz, Stop to 100 kHz. Set Points/dec to 20, enough for a typical sweep. Enter the Set Stimulus menu to set Amplitude to 50 mV. Enter the Set Channel menu to set DUT Input to CH1 and DUT Output to CH2.

Figure 10: Bode II scope configuration

2.4 Results and Data analysis

After the configuration is done, return to the main menu and press Run to start the sweep.

Wait to see the results as shown in Figure 11.

The result is somewhat confusing and suspect because of the trace at low frequency, especially the phase trace, alternating up and down. We will introduce a method called Vari-level to resolve this problem in the next section.

Figure 11: Measurement results

After the sweep has completed, press Run again to stop the sweep. Enter the Display menu and then enter the Cursors menu to turn on the cursors. Use the Adjust knob to move the cursors and set the phase margin as shown in Figure 12.

Figure 12: Cursor measurement on the Bode plot

You can also turn on the List feature in the Data menu to examine the measured data, or you can export the data to an external USB FLASH driver for further analysis on a computer.

Figure 13: Exporting data

2.5 Vari-level

In the previous section, we can see that the results are not ideal, for the bouncing trace at low frequency. This is because at low frequency the amplitude difference between the input and output channel is relatively large, and since we are using a relatively small stimulus signal (this time 50 mVpp), the signal presented at the DUT Input channel is extremely small so that a commercial general propose oscilloscope cannot measure it accurately.

But we cannot simply increase the stimulus’ signal amplitude. The result will be similar to what is shown in Figure 14. The large signal near the crossover frequency region causes serious distortion to the loop. The distorted signal in the time domain is shown in Figure 15.

Remember that a bode plot only makes sense in a linear system, and has no meaning in a heavily non-linear system. The result is useless.

Figure 14: Increased stimulus signal amplitude and distortion

Figure 15: Distortion in the time domain

One possible solution to the problem is Vari-level (other manufactures may call it “Shaped Level” or “Level Profile”). The Vari-level concept is simple: The stimulus signal amplitude is variable over the frequency. If we use a large signal at low frequencies, and decrease the amplitude to a fairly small level near the crossover region so that it causes little distortion to the loop, in theory, we can get an ideal result.

Under the Configure menu, set Sweep Type from Simple to Vari-level, and push Set Vari-level to enter the Vari-level profile editor.

Figure 16: Set Sweep Type to Vari-level

Figure 17 shows the Vari-level profile editor. The Profile option allows the user to select and save up to 4 profiles. The Nodes sets the number of nodes in the profile trace, the minimum allowed number of nodes is 2 because at least 2 points can determine a line, and always the first and the last node set the start and stop of the trace. Press Edit Table will enter the profile editor mode. The parameter under editing is highlighted by cursors, and next push Edit Table again to cycle the cursors between “Freq”, “Ampl” and the entire row, which allows the user to navigate through the entire table. Users can use the Adjust knob to set the highlighted parameter, and pushing the knob will call out a visual keypad which allows direct input to the parameter. The Set Sweep and Set Stimulus option is somewhat similar to that in the Simple type of sweep, but they are not correlated. This time we set the sweep Mode to Decade and a 40-point-per-decade is sufficient. The profile shown in Figure 17 is used in this measurement. It is not the optimum profile for this circuit but should be a good place to start.

Figure 17: Vari-level profile editor

In practice, one should always experiment with those parameters to find an optimum solution for a particular circuit.

One practical way to do this is to monitor the signal in the time domain, decrease the amplitude of the stimulus signal until no visible distortion can be observed, then decrease the amplitude by another 6 dB. Next, record the amplitude and frequency, jump to another frequency and repeat the process.

There is a better way to find the optimum profile if you already have a known good profile. Reduce the signal amplitude by 6 dB and run a sweep to see if the plot changes. If it does change, reduce the amplitude by another 6 dB and sweep again. Until the result doesn’t change, then you can increase the amplitude by 6 dB and that’s an optimum profile. This is time-consuming but necessary to get a meaningful result.

Once profile editing is completed, return to the main menu and push Run to start the sweep. Figure 18 shows the final result of the measurement with Vari-level. Changing the capacitor selection switch S1 on the VRTS v1.51 demo board will alter the loop response due to the impact of different capacitors.

Figure 18: Results with Vari-level

3. Summary

The Siglent oscilloscope with newly released Bode Plot Ⅱ together with a Siglent signal generator and a Picotest injection transformer offer a very flexible and easy-to-use power supply control loop measurement system.

Quick remote computer control using LXI Tools

Posted on: December 15th, 2020 by Doug Lovell

Introduction:

There are many options for people considering remote communication and control of test and measurement instrumentation. In most cases, a computer is used to communicate to test instrumentation using USB or LAN connections. The computer can configure the instruments, collect and organize data, and present it in a useful and flexible way.

Remote control provides:

  • Increased repeatability: The instrumentation is set up the same way, every time.
  • Efficient data collection: Data can be automatically filtered and stored.
  • Easily configure the test system parameters: Each command is executed in the same order and in the same timeframe.
  • Quickly visualize system performance: Graphical or tabular data formatting is easy.

There are numerous platforms (Windows, Linux, etc..) and software programs (LabVIEW, .NET, Python) available to build automated test systems. The right choice for your application is highly dependent on your needs and the available skills you have.

In this note, we are going to discuss how to use LXI Tools to communicate with SIGLENT instrumentation. LXI Tools is an open source software application that uses the local area network (LAN) connection to quickly control remote instrumentation. It is easy to install, has a small operating footprint, and is really powerful while being quite easy to use. Let’s start by looking at the basics.

You can also see the video version of this note here: https://siglentna.com/video/lxi-tools/

Why Open Source?

Open source coding is a community-based development style in which a group of contributors work together to build and maintain programs using shared code and components. In this way, a platform can be built and tested quickly and may cost significantly less than commercial programming environments. LXI Tools is free open source software and the project welcomes new contributors that would like to help improve the tools.

Here is a link to the LXI Tools website: https://lxi-tools.github.io

 

Why LXI Tools?

LXI-Tools is a collection of open source software tools that provide direct control of LXI compatible instruments such as modern oscilloscopes, power supplies, spectrum analyzers, and more.Simply install LXI Tools, connect your instrument, and start communicating.

It really is that easy.

 

LXI-Tools Provides:

  • Quickly discover the available instruments on the LAN
  • Retrieve copies of the displayed images (quickly see signals, data, and instrumentation setups) and convert image file types
  • Benchmark LAN performance
  • Send individual commands to an instrument to perform simple test actions. For example, you could return the measured data from a DMM.

To learn more about LXI-Tools, please see https://github.com/lxi-tools/lxi-tools

 

Instructions:

  1. Install the appropriate version of LXI-Tools for your operating system

 

2. Open a terminal. In this example, I am using Ubuntu (17.10) running on a virtual machine hosted by a Win 10/64 bit OS.

To learn more about the virtual machine used in this example:https://www.virtualbox.org/

The OS is Ubuntu: https://www.ubuntu.com/

 

3. Once loaded, startup Linux:

With Ubuntu, you can use Snap to install:

$ snap install lxi-tools

 

LXI Discover:

Quickly searches the LAN for instruments and lists their identification string and IP address.

Plug in and power on your instrumentation and make sure that they are connected to a working LAN connection. You can manually check the instrument IP address and save this info to compare to later steps.

Open up a terminal window.  At the “$” prompt, simply type lxi discover… LXI tools will search the LAN for connected instruments.

 

Here, we have three devices connected: an SDM3065X, SSA3032X, and an SDS1102X-E (which has been superseded by the SDS1202X-E series here in North America). It also includes the instrument serial number, firmware revision, and IP address.

NOTE: This has been tested with a large number of instruments, but may not be supported by some. There is a list of compatible instruments at the end of this note or you can check LXI-Tools support for the latest list of supported products.

 

Screenshot:

This function retrieves a copy of the instrument display and saves it to the local drive. This is ideal for adding information to reports and sharing events with colleagues.

Type “lxi screenshot – – address <device address>”

NOTE: There should be two “-” with no spaces before “address” for every command.

 

 

Image Edits using ImageMagicks

Use ImageMagick® to create, edit, compose, or convert bitmap images. It can read and write images in a variety of formats (over 200) including PNG, JPEG, JPEG-2000, GIF, TIFF, DPXEXR, WebP, Postscript, PDF, and SVG. Use ImageMagick to resize, flip, mirror, rotate, distort, shear and transform images, adjust image colors, apply various special effects, or draw text, lines, polygons, ellipses and Bézier curves.

For more information, visit… https://www.imagemagick.org/script/index.php

$ lxi screenshot –address <ip> – | convert – screenshot.jpg
$ lxi screenshot –address <ip> – | convert – screenshot.tiff
$ lxi screenshot –address <ip> – | convert – screenshot.bmp

 

Benchmark:

The benchmark command sends 100 requests via LAN and measures the average response time of the instrument. It can be used as a gauge for the health of the connection. Higher response rates = faster links.

$ lxi benchmark –address <ip>

 

Manual vs. Auto-load:

The commands can also be manually or auto-loaded:

Auto-load/detect:

$ lxi screenshot –address 10.0.0.42

Vs. manually specifying which screenshot plugin to use:

$ lxi screenshot –address 10.0.0.42 –plugin siglent-ssa3000x

The only advantage of manually specifying which plugin to use it that it is a bit faster because it does not go through the instrument auto detection steps (retrieve ID, parse regex rules to match correct plugin etc.).

 

Sending instrument specific commands:

You can also use the SCPI command to send any command to the instrument.

Note that if you have an SCPI command with spaces you must remember to send the specific command in quotes like so:

$ lxi scpi –address 192.168.55.113 “MEAS:VOLT? CH1”

This way the tool knows how to parse the full SCPI string.

In this example, we send the “READ?” command to an SDM and return a reading:

 

 

GUI

Another really great feature is the GUI for LXI Tools. This allows you easy access to discovery of instruments on the network as well as some powerful tools for data capture and instrument control.

$ lxi-tools.lxi-gui

This adds a very simple yet powerful graphical interface for the LXI tools program:

 

NOTE: Ignore the “Qt” error shown.

This opens a clean control window:

 

  • Search: Discover the instruments connected to the LAN. Here, we have three instruments connected:

 

  • SCPI command line: Send instrument specific commands. Click on the instrument you wish to communicate with and then enter the command. For queries (commands that require an instrument response, or read function), the returned string will be shown in the text box:

NOTE: The specific commands that can be used are available in the instrument programming guide. Check out the specific instrument documentation for more details.

This tool can be helpful when trying out specific sequences of commands. You can send them one-at-a-time and then observe the instrument functionality.

 

  • Screenshot:  Capture and save an image from the instrument. This also features a “live” button that will continuously poll the instrument.

 

After saving, you can recall the image:

 

  • Benchmark:  Checks the performance of the LAN  connection by sending a series of commands and measuring the response time. Larger “requests/second” = greater possible bus performance.

 

  • Data Recorder:  Sends the user-defined command a number of times/second and attempts to graph the data. Be aware that data can be returned in different formats and at different rates depending on device configuration. Going faster can make the system unstable and could cause a crash or hang-up.

 

And the data: 

 

  • Settings: Configure the timeouts and other controls.

 

  • About:  Version info.

 

 

 


*Here is a list of the latest compatible instruments tested with Lxi-Tools (03/13/2018)

SSA3000X Series:

SSA3000X (Latest 1.2.8.5a)

 

SDS1000X-E Series:

SDS1202X-E (Older 5.1.3.8R2)

SDS1202X-E (Latest 5.1.3.13)

SDS1204X-E (Latest/first production release 7.6.1.12)

 

SDS1000X/X+ Series:

SDS1202X+ (Latest 1.1.2.15E3)*

*LIMITED COMMAND SET AVAILABILITY

 

SDS2000X Series:

SDS2304X (Older 1.2.2.2)*

SDS2304X (Latest 1.2.2.2R10)*

*LIMITED COMMAND SET AVAILABILITY

 

SDS2000 Series (replaced by the SDS2000X):

SDS2204 (Latest 1.2.2.2)*

*LIMITED COMMAND SET AVAILABILITY

 

SDM3000 Series:

SDM3045X (Older rev 5.01.01.01)

SDM3045X (Latest rev 5.01.01.03)

SDM3055 (Latest rev 1.01.01.01.19)

SDM3065X (Older rev 3.01.01.02)

SDM3065X (Latest rev 3.01.01.03)

 

SDG1/2/6X Series:

SDG1032X (Latest 1.01.01.22R5)

SDG20122X (2.01.01.23R7)

SDG6052X (Latest 6.01.01.28R1): 405.3

Programming Example: Using Python to configure a basic waveform with an SDG X series generator via o

Posted on: December 15th, 2020 by Doug Lovell

#!/usr/bin/env python 2.7.13
#-*- coding:utf-8 –*-
#—————————————————————————–
# The short script is a example that open a socket, sends basic commands
# to set the waveform type, amplitude, and frequency and closes the socket.
#
#No warranties expressed or implied
#
#SIGLENT/JAC 11.2018
#
#—————————————————————————–
import socket # for sockets
import sys # for exit
import time # for sleep
#—————————————————————————–

remote_ip = “192.168.55.110” # should match the instrument’s IP address
port = 5024 # the port number of the instrument service

#Port 5024 is valid for the following:
#SIGLENT SDS1202X-E, SDG2X Series, SDG6X Series
#SDM3055, SDM3045X, and SDM3065X
#
#Port 5025 is valid for the following:
#SIGLENT SVA1000X series, SSA3000X Series, and SPD3303X/XE

count = 0

def SocketConnect():
try:
#create an AF_INET, STREAM socket (TCP)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except socket.error:
print (‘Failed to create socket.’)
sys.exit();
try:
#Connect to remote server
s.connect((remote_ip , port))
except socket.error:
print (‘failed to connect to ip ‘ + remote_ip)
return s

def SocketSend(Sock, cmd):
try :
#Send cmd string
Sock.sendall(cmd)
Sock.sendall(b’\n’)
time.sleep(1)
except socket.error:
#Send failed
print (‘Send failed’)
sys.exit()
#reply = Sock.recv(4096)
#return reply

def SocketClose(Sock):
#close the socket
Sock.close()
time.sleep(1)

def main():
global remote_ip
global port
global count

# Body: send the SCPI commands and print the return message
s = SocketConnect()
qStr = SocketSend(s, b’*RST’) #Reset to factory defaults
time.sleep(1)

qStr = SocketSend(s, b’C1:BSWV WVTP,SQUARE’) #Set CH1 Wavetype to Square
qStr = SocketSend(s, b’C1:BSWV FRQ,1000′) #Set CH1 Frequency
qStr = SocketSend(s, b’C1:BSWV AMP,1′) #Set CH1 amplitude

SocketClose(s) #Close socket
print(‘Query complete. Exiting program’)
sys.exit

if __name__ == ‘__main__’:
proc = main()

Python Example: Building an Arb with 16-bit steps (SDG2000X/SDG6000X)

Posted on: December 15th, 2020 by Doug Lovell

The SIGLENT SDG2000X and SDG6000X feature 16-bit voltage step resolution. This provides 65,535 discrete voltage steps that can cover the entire output range (20 Vpp into a High Z load) which can effectively be used to test A/D converters and other measurement systems by sourcing waveforms with very small changes.

In this example, we use Python 2.7 and PyVISA 1.8 to create a ramp waveform that is comprised of steps of the Least Significant Bit (LSB) from point 0 to 65535 on Channel 1.

We also implement the TrueArb function that allows you to specify the sample rate and also ensures that each sample is sourced.

NOTE: You will need to change the instrument ID to match your specific instrument. We also recommend setting the amplitude and other instrument parameters prior to enabling the output of the instrument.

Here is pic of the instrument after loading the waveform:

 

Here is a scope shot of the output:

Here is a link to a Zipped version of the .PY file: SiglentSDG16BBitSteps

Here is the text of the program:

##

#!/usr/bin/env python2.7
# -*- coding: utf-8 -*-
import visa #Uses PyVISA 1.8 and NI-VISA runtime Engine 15.5
import time
import binascii

#USB resource of Device
rm = visa.ResourceManager()
device = rm.open_resource(‘USB0::0xF4EC::0x1101::SDG6XBAQ1R0071::INSTR’)  #CHANGE TO MATCH YOUR INSTRUMENT ID

#Little endian, 16-bit 2’s complement
# create a waveform

wave_points = []
for pt in range(0x8000, 0xffff, 1):
wave_points.append(pt)
wave_points.append(0xffff)
for pt in range(0x0000, 0x7fff, 1):
wave_points.append(pt)

def create_wave_file():
#create a file
f = open(“wave1.bin”, “wb”)
for a in wave_points:
b = hex(a)
#print ‘wave_points: ‘,a,b
b = b[2:]
len_b = len(b)
if (0 == len_b):
b = ‘0000’
elif (1 == len_b):
b = ‘000’ + b
elif (2 == len_b):
b = ’00’ + b
elif (3 == len_b):
b = ‘0’ + b
b = b[2:4] + b[:2] #change big-endian to little-endian
c = binascii.a2b_hex(b) #Hexadecimal integer to ASCii encoded string
f.write(c)
f.close()

def send_wave_data(dev):
#send wave1.bin to the device
f = open(“wave1.bin”, “rb”) #wave1.bin is the waveform to be sent
data = f.read()
print (“write bytes:”,len(data))
dev.write_raw(“C1:WVDT WVNM,wave1,FREQ,2000.0,TYPE,8,AMPL,4.0,OFST,0.0,PHASE,0.0,WAVEDATA,%s” % (data))
#”X” series (SDG1000X/SDG2000X/SDG6000X/X-E)
dev.write(“C1:ARWV NAME,wave1”)
f.close()

if __name__ == ‘__main__’:

create_wave_file()
send_wave_data(device)
device.write(“C1:SRATE MODE,TARB,VALUE,333333,INTER,LINE”) #Use TrueArb and fixed sample rate to play every point

###