Bode plot with Siglent SDS1004X-E oscilloscopes and a non-siglent AWG.
At a certain point after getting the SDG1204X-E oscilloscope I started to wonder if it might be possible to use the Bode plot function with a non-Siglent waveform generator. After some hours of researching and reverse engineering I wrote this Python program which is a small server which emulates Siglent arbitrary waveform generator.
The oscilloscope connects using LAN to a PC running this program. The program makes the oscilloscope think that it communicates with a genuine Siglent signal generator. The program extracts the commands sent to the generator, parses them and translates to the command set, which can be understood by the connected to the PC non-Siglent generator.
The program is written in Python and uses sockets
library to connect to the oscilloscope and serial
library for connecting to AWG.
Current version of the program was tested under Linux only. Later, I'll test it under Windows too.
As of January 30, 2019 the program supports the following models:
-
BK Precision BK4075 One channel 25MHz AWG. Requires a RS-232 serial port for the connection to a PC. It is compatible with the SCPI 1992.0 standard.
-
RD JDS6600 Chinese generator which is widely sold on eBay and AliExpress. It connects to the PC as a USB serial port.
-
Feeltech FY6600 Another Chinese generator which is widely sold on eBay and AliExpress. It also connects to the PC as a USB serial port.
TBD
Before starting the program you have to tell the oscilloscope how to connect to the waveform generator. Connect your oscilloscope to the same network where your PC is connected. Then go to Configure => AWG I/O
in the Bode plot settings. Define LAN connection and the IP addres of your PC as the AWG IP. After starting the program you can press Test Connection
button to test the communication between the oscilloscope and the PC.
To run this program you must have Python 2.7 installed.
The source code is located in the sds1004x_bode
directory of this repository.
Python sockets
requires elevated privileges in Linux, therefore the program has to be run with su
or sudo
command.
The program must be run in Linux terminal. The file to be run is bode.py
. In order to run it, change current path to the directory where you downloaded the source code. Then write the following command:
sudo python bode.py <awg_name> <serial_port> <baud_rate>
where
-
<awg_name>
is the name of the AWG connected to your PC:bk4075
,jds6600
,fy6600
ordummy
. -
<serial_port>
is the serial port to which your AWG is connected. Usually it will be something like/dev/ttyUSB0
. If you use thedummy
generator, you don't have to specify the port. -
<baud_rate>
is the serial baud rate as defined in the AWG settings. Currently onlybk4075
supports it. If you don't provide this parameter,bk4075
will use the default baud rate of 19200 bps. Two other AWGs don't require it:jds6600
andfy6600
run always at 115200 bps and thedummy
generator doesn't use a serial port.
The dummy
generator was added for running this program without connecting a signal generator. The program will emulate a Siglent AWG and the oscilloscope will generate a Bode plot but no commands will be sent to the AWG.
If the program starts successfully, you'll see the following output:
Initializing AWG...
AWG: jds6600
Port: /dev/ttyUSB0
Starting AWG server...
Listening on 0.0.0.0
RPCBIND on port 111
VXI-11 on port 703
Creating sockets...
Waiting for connection request...
After starting the program, follow the usual procedure of creating Bode plot. After starting the plotting, the program output you'll see will be similar to the following:
Incoming connection from 192.168.14.27:55916.
VXI-11 CREATE_LINK, SCPI command: inst0
VXI-11 DEVICE_WRITE, SCPI command: IDN-SGLT-PRI?
VXI-11 DEVICE_READ, SCPI command: None
VXI-11 DESTROY_LINK, SCPI command: None
Waiting for connection request...
Incoming connection from 192.168.14.27:48446.
VXI-11 CREATE_LINK, SCPI command: inst0
VXI-11 DEVICE_WRITE, SCPI command: C1:OUTP LOAD,50;BSWV WVTP,SINE,PHSE,0,FRQ,510,AMP,1,OFST,0;OUTP ON
VXI-11 DESTROY_LINK, SCPI command: None
Waiting for connection request...
Incoming connection from 192.168.14.27:50264.
VXI-11 CREATE_LINK, SCPI command: inst0
VXI-11 DEVICE_WRITE, SCPI command: C1:BSWV?
VXI-11 DEVICE_READ, SCPI command: None
VXI-11 DESTROY_LINK, SCPI command: None
Waiting for connection request...
Incoming connection from 192.168.14.27:55976.
VXI-11 CREATE_LINK, SCPI command: inst0
VXI-11 DEVICE_WRITE, SCPI command: C1:BSWV FRQ,10
VXI-11 DESTROY_LINK, SCPI command: None
Waiting for connection request...
Incoming connection from 192.168.14.27:48088.
VXI-11 CREATE_LINK, SCPI command: inst0
VXI-11 DEVICE_WRITE, SCPI command: C1:BSWV FRQ,10
VXI-11 DESTROY_LINK, SCPI command: None
- The program supports Feeltech FY6600 AWG.
- The first version of the program was uploaded to GitHub.
I'd like to add here more AWGs but it's impossible to have them all at the home lab. If you'd like to write a driver for an AWG which isn't listed here, please contact me.
-
Dmitry Melnichansky @4x1md - Project idea and implementation.
-
Nick Bryant (Dundarave on EEVblog Forum) - Driver for Feeltech FY6600 AWG.
- Siglent SDS1104X-E and SDS1204X-E: Bode plot with non-Siglent AWG on EEVblog Forum.
- Running the script with SDS1204X-E and JDS6600 AWG on YouTube (best viewed in 1080p quality).
You are more than welcome to contact me with any questions, suggestions or propositions regarding this project. You can:
- Visit my QRZ.COM page
- Visit my Facebook profile
- 📧 Write me an email to iosaaris =at= gmail dot com
73 de 4X1MD