Author Topic: Siglent SDS1104X-E and SDS1204X-E: Bode plot with a non-Siglent AWG  (Read 86201 times)

0 Members and 2 Guests are viewing this topic.

Offline mario sanz

  • Newbie
  • Posts: 5
  • Country: de
Re: Siglent SDS1104X-E and SDS1204X-E: Bode plot with a non-Siglent AWG
« Reply #175 on: January 31, 2025, 04:02:43 pm »
hello everyone,

So, no one has any advise for my problem?
Nobody has these peaks in the Bode Plot?

Probably, I missunderstand how the Bode Plot works and it is normal, that I have to wait for several sweeps.
I have seen a few videos in youtube, doing the Bode Plot with original Siglent gear and it seems to me, they just do one sweep over the frequency range to get the plot.

Just a short advise would help.

Thank you very much
 

Offline 2N3055

  • Super Contributor
  • ***
  • Posts: 8743
  • Country: hr
Re: Siglent SDS1104X-E and SDS1204X-E: Bode plot with a non-Siglent AWG
« Reply #176 on: January 31, 2025, 06:00:51 pm »
hello everyone,

So, no one has any advise for my problem?
Nobody has these peaks in the Bode Plot?

Probably, I missunderstand how the Bode Plot works and it is normal, that I have to wait for several sweeps.
I have seen a few videos in youtube, doing the Bode Plot with original Siglent gear and it seems to me, they just do one sweep over the frequency range to get the plot.

Just a short advise would help.

Thank you very much

Since you compared to Bode plotting with original Siglent AWG, let me comment
With Siglent AWG there are no problems.

If I were to speculate, you probably have a timing problem with either code/CPU that does translation (provided it does translate commands properly) or AWG you are using is not responding to commands in timely fashion.
So after scope sends for a frequency step, output of AWG does not jump and settle it's signal in time before scope starts measuring data for that point.
This additional abstraction layer that does Siglent -> XYZ AWG command translation needs to be low latency, and AWG used has to have command response time low enough for this to work.
Combined latencies from:

Command sent by scope -> command received-> translated-> translated command sent to XYZ AWG -> XYZ AWG interprets command and sets new frequency -> Output of AWG settles to stable output


need to be less that wait time of the scope for that datapoint.
"Just hard work is not enough - it must be applied sensibly."
Dr. Richard W. Hamming
 
The following users thanked this post: mario sanz

Offline awakephd

  • Regular Contributor
  • *
  • Posts: 192
  • Country: us
Re: Siglent SDS1104X-E and SDS1204X-E: Bode plot with a non-Siglent AWG
« Reply #177 on: February 13, 2025, 11:01:50 pm »
Mario, I am so sorry that I have not responded before now. I have been buried in work for my real job, and have not been able to play with work on (or even look at) this.

I am not sure where the peaks are coming from; you are not doing a fast sweep, so I wouldn't think timing would be an issue. How secure are your connections - any chance that some noise is entering from the test setup?

With regard to what you got from the WMW command ... you mentioned that you have an FY6900, but did not indicate the specific model in terms of maximum frequency. That said, any of the models should be able to generate a 123kHz output. Have you tried some other variations in the command? For example, if you enter WMW1000, what do you get?
 

Offline mario sanz

  • Newbie
  • Posts: 5
  • Country: de
Re: Siglent SDS1104X-E and SDS1204X-E: Bode plot with a non-Siglent AWG
« Reply #178 on: February 23, 2025, 11:29:05 am »
hello @awakephd,
I understand that work often doesn't leave time for things like this, as you see, my response is late as well...

Regarding my FY6900 model, I have the 60MHz Version with Firmware Ver. 1.5.4. and it is Dominty branded.

I have tried the WMW1000 command, as you asked me for, but nothing happens, no change at all in the FY6900 Display.

Here more examples:
WMW123456.12345678 => waveform jumps to ARB29

WMF123456.12345678 => frequency change to 123.456´123´456KHz
RMF => 00123456.123456

WMF12345678.12345678 => frequency change to 12´345.678´123´456KHz
RMF => 12345678.123456

In the Telnet monitor I found the following meassages:
"VXI connection established on port 9011
CREATE LINK request from "inst0" on port 9011
WRITE DATA on port 9011 = C1:BSWV FRQ,2458.97959
Unable to verify FRQ
DESTROY LINK on port 9011
Closing VXI connection on port 9011"

I do not know if the "unable to verify FRQ" message could be an issue.


Regarding the possible noise in my setup, I have connected channel 1 of the AWG direct to channel 1 of my Siglent scope
and channel 2 of the AWG direct to channel 2 of the scope. So, no DUT in the setup.
For the connections, I took two Siglent scope probes (x10/100MHz).
Both channels of the FY6900 are set to sync waveform, frequency and amplitude.
I guess, this setup should not cause noise peaks of almost +/-20dB, as it appears in my Bode plot.
Then I startet the Bode plot and let it run for 10 full sweeps.

Even with this Setup I get these peaks!! Please see the attached pics for the first and second sweep.

If you take a look at the very first post of this thread, in which "4x1md" has posted a video. (https://youtu.be/7PvueUHAJ78)
In this video, it seems, he is getting these peaks as well with the Python code, for example at 1:56 or at 7:50.

@Awakephd, if I understand it right, can I assume you are not having these peaks at all?

Thank you very much for your help.

Br
Mario
 

Offline awakephd

  • Regular Contributor
  • *
  • Posts: 192
  • Country: us
Re: Siglent SDS1104X-E and SDS1204X-E: Bode plot with a non-Siglent AWG
« Reply #179 on: February 24, 2025, 04:18:21 pm »
Mario, this is puzzling to be sure! No, I am not seeing the peaks, but we may not yet have the software matched to the particular configuration of your FY6900. Let's unpack the reports you gave:

I have tried the WMW1000 command, as you asked me for, but nothing happens, no change at all in the FY6900 Display.

Here more examples:
WMW123456.12345678 => waveform jumps to ARB29

Oops - I completely blew it. I meant to say WMF1000, not WMW1000. As you have seen, WMW changes the wave form. The code only ever sets WMW to 0 to select a sine wave. (I guess to be extra sure, you might verify that you do get a sine wave when you issue WMW0.)

WMF123456.12345678 => frequency change to 123.456´123´456KHz
RMF => 00123456.123456

WMF12345678.12345678 => frequency change to 12´345.678´123´456KHz
RMF => 12345678.123456

This part seems to match the firmware that I have on my FY6900 and the code that I wrote. Variations of the FY6900 firmware handle the request and response differently; some requires the frequency to be given as an integer (representing microHertz); some sets it as a floating point, but reads it as an integer; and so on. If you look at the param_translator structure in the awg_fy6900.cpp file (and the corresponding structure description in awg_fy.h), you will see that for FRQ the parameters are as follows:

Code: [Select]
    { pt_DOUBLE, 0, 6, 0, pt_DOUBLE, 0 },  // FRQ
This says that the frequency setting command (WMF) should be provided as follows:

   pt_DOUBLE   ->  floating point format
   0                  -> no adjustment of magnitude (i.e., multiply by 10^0)
   6                  -> 6 decimal places
   0                  -> no need for a fixed width

and that the frequency reading command (RMF) should return the value as follows:

   pt_DOUBLE   ->  floating point format
   0                  -> no adjustment of magnitude (i.e., multiply by 10^0)

Fortunately, this is what your tests are showing. You are asking for a frequency of 123456.12345678; the display shows that it is set to 123.456 123 456 kHz - note the k, so this is equivalent to 123456.123456 Hz. Note also the limit of 6 decimal places (or to say it another way, it allows settings down to 1/100000 of a Hz).

Reading back, you are getting 00123456.123456 - the zero fill is ignored, but the value is the same as what was requested.

On to the next bit:

In the Telnet monitor I found the following meassages:
"VXI connection established on port 9011
CREATE LINK request from "inst0" on port 9011
WRITE DATA on port 9011 = C1:BSWV FRQ,2458.97959
Unable to verify FRQ
DESTROY LINK on port 9011
Closing VXI connection on port 9011"

Yes, the fact that it did not succeed in verifying the requested frequency may be a problem. Currently the code is set to do 2 retries (see line 132 in espBode.ino) precisely because it doesn't always "take" the first time. Can you capture more of the Telnet debug report, and see if it tries again to set the frequency and does succeed? Perhaps it is "mostly" succeeding within 2 retries, but once in a while it drops the ball and gives you the peak?? (Just guessing here ...) The way to determine this would, unfortunately, be to capture the complete Telnet debug and then go through it to try to match it with the peak frequency in your report. Tedious, but it would provide helpful information - specifically, whether the problem is indeed a matter of not getting the frequency setting, or whether something else is going on.

One possibility is that the amplitude, offset, or phase settings are not working as expected. Here is the param_translator in awg_fy6900.cpp as I wrote it:

Code: [Select]
    { pt_DOUBLE, 0, 4, 0, pt_INT, -4 },    // AMP
    { pt_DOUBLE, 0, 3, 0, pt_INT, -3 },    // OFST
    { pt_DOUBLE, 0, 3, 0, pt_INT, -3 }     // PHSE

What this is showing is that each of these values is sent as a floating point number for the exact amount, limited to either 4 decimal places (amplitude) or 3 decimal places (phase and offset); however the values are returned as integers, and have to be divided by 10,000 (amplitude) or 1,000 (phase and offset). Thus, for example, you send the offset in volts (e.g., WMO1.234) but you get the response back in millivolts (RMO returns 1234).

Try sending the following commands via the Telnet PASSTHROUGH and see if the scope settings and responses are as expected:

WMA1.2345
RMA should return 12345 and scope should show 1.2345V as the amplitude

WMO2.345
RMA should return 2345 and scope should show 2.345V as the offset

WMP54.321
RMA should return 54321 and scope should show 54.321° as the phase

I definitely want to get back to this. It may be that there are some optional timing delays that could help - i.e., in case the FY6900 is just getting overwhelmed with too much, too fast. I'm still buried in work responsibilities, but the end is in sight - I will partially retire at the end of May, so my time will be a good bit more flexible after that!

Andy
 

Offline mario sanz

  • Newbie
  • Posts: 5
  • Country: de
Re: Siglent SDS1104X-E and SDS1204X-E: Bode plot with a non-Siglent AWG
« Reply #180 on: February 27, 2025, 05:02:39 pm »
Thank you very much Andy for your detailed response and for helping me to get my problem sorted.

My programming skills are low level, therefore I have to get deeper in the topics you have explained.
But however, slowly but surely I will understand your code and get into it.

Here my responses to what you asked me for:
"...(I guess to be extra sure, you might verify that you do get a sine wave when you issue WMW0.)" => yes, I get a sine wave when I issue WMW0

"...Can you capture more of the Telnet debug report, and see if it tries again to set the frequency and does succeed?" => please see the attached file

"...The way to determine this would, unfortunately, be to capture the complete Telnet debug..." => the attached file is the Telnet for one full sweeps (10Hz-20KHz) and the corresponding screenshot.

"Try sending the following commands via the Telnet PASSTHROUGH":
WMA1.2345 => RMA return is 12345 and scope shows 1.26V (the scope shows only 2 decimals)
WMO2.345 => RMO return is 2345 and the scope shows 2.39V (again only 2 decimals)
WMP54.321 => RMP return 54321 and scope shows 54,32°

I noticed one thing, always when a peak appears, I hear directly afterwards a relay click but not on every relay click appears a peak.
I guess the relay clicks and the peaks seems to be related somehow.

I have also attached the serial communication protocol which was included in the documentation of my AWG.

I hope these is helpful

Mario
« Last Edit: February 27, 2025, 05:26:37 pm by mario sanz »
 

Offline Knutselaar

  • Newbie
  • Posts: 7
  • Country: nl
Re: Siglent SDS1104X-E and SDS1204X-E: Bode plot with a non-Siglent AWG
« Reply #181 on: March 18, 2025, 05:54:25 pm »
Hi awakephd, mario sanz,

When I was experimenting with my FY6900 I have send the frequenty setting to both channels.
If I used the channel that receives the setting last, the spikes occured in my plot.
The spikes disappear when the plot is done with the first channel that receives the frequenncy setting.
So I think that to late sending is maybe the origin of the spikes.

Greatings, Rik
 
The following users thanked this post: mario sanz, awakephd

Offline awakephd

  • Regular Contributor
  • *
  • Posts: 192
  • Country: us
Re: Siglent SDS1104X-E and SDS1204X-E: Bode plot with a non-Siglent AWG
« Reply #182 on: March 19, 2025, 08:16:36 pm »
Thanks, Rik, this is a helpful data point. I still have been buried in work, and it probably won't get better until June ... but I WILL get back to this when I am able!
 

Offline JohnKr

  • Contributor
  • Posts: 12
  • Country: us
Re: Siglent SDS1104X-E and SDS1204X-E: Bode plot with a non-Siglent AWG
« Reply #183 on: June 03, 2025, 02:25:34 pm »
The DG800 driver doesn't work with the DG800/900 Pro. A few changes to the script and the Pro work fine. When the script finishes it doesn't return to the command prompt. In Windows pressing Ctrl+Break returns to the prompt. I haven't looked to see why this happens.


]
 

Offline bateau020

  • Frequent Contributor
  • **
  • Posts: 447
  • Country: fr
Re: Siglent SDS1104X-E and SDS1204X-E: Bode plot with a non-Siglent AWG
« Reply #184 on: June 03, 2025, 03:18:34 pm »
Indeed, the script never finishes, as it can be used by multiple runs. Ctrl-C is indeed the best way to end it (for now). I can add a provision for "run-once" and "run-forever".

Can you share what you had to change for the DG Pro series? Then I'll add it. You can also go via a PR on github.
 

Offline JohnKr

  • Contributor
  • Posts: 12
  • Country: us
Re: Siglent SDS1104X-E and SDS1204X-E: Bode plot with a non-Siglent AWG
« Reply #185 on: June 03, 2025, 09:34:31 pm »
awg_factory.py - added "from awgdrivers.dg800P import RigolDG800P" and "RigolDG800P," entries.

Copied the dg800.py driver and renamed it dg800P.py - Renamed both instances of "DG800" to "DG800P". Renamed "class RigolDG800(BaseAWG):" to "class RigolDG800P(BaseAWG):" Changed "self._send_command(f":SOURCE{channel}:VOLT:AMPL {amplitude:.3f}")" to "self._send_command(f":SOURCE{channel}:VOLT {amplitude:.3f}")" and "self._send_command(f":OUTPUT{channel}:IMP {z}")" to "self._send_command(f":OUTPUT{channel}:LOAD {z}")".
 
The following users thanked this post: bateau020

Offline bateau020

  • Frequent Contributor
  • **
  • Posts: 447
  • Country: fr
Re: Siglent SDS1104X-E and SDS1204X-E: Bode plot with a non-Siglent AWG
« Reply #186 on: June 04, 2025, 05:31:26 am »
Integrated the DG800P driver. Will add the "Run Once" option soon.
Edit: added the "Run Once" option.
« Last Edit: June 04, 2025, 06:13:29 pm by bateau020 »
 

Offline JohnKr

  • Contributor
  • Posts: 12
  • Country: us
Re: Siglent SDS1104X-E and SDS1204X-E: Bode plot with a non-Siglent AWG
« Reply #187 on: June 04, 2025, 07:32:47 pm »
Integrated the DG800P driver. Will add the "Run Once" option soon.
Edit: added the "Run Once" option.

Works fine. Thanks
 

Offline noahmeu

  • Contributor
  • Posts: 11
  • Country: de
Re: Siglent SDS1104X-E and SDS1204X-E: Bode plot with a non-Siglent AWG
« Reply #188 on: August 05, 2025, 06:15:57 pm »
Hi everyone, I'm new here.

I'm trying to get espBode running on a d1 mini to use my PSG9080 AWG. It's protocol is quite similar to the JSG6600 and I just need some numbers swapped around.
That being said, I was too lazy to use awakephd's fork of the original EspBode and add my PSG9080 support there so I settled for the fork made by Switchleg1. Adding the PSG9080 was a matter of a few minutes, however my SDS814X is unable to connect.
I verified the ESP's presence in my network, used the correct IP, and so on. The serial monitor also indicates a succesfull connection to the WiFi.

This makes me wonder, if anyone tried espBode to work with the SDS800 Series.

What are steps I can now take to help/investigate this issue? Buying a Siglent AWG is unfortunately not in my budget.

Best regards
Noah
 

Offline bateau020

  • Frequent Contributor
  • **
  • Posts: 447
  • Country: fr
Re: Siglent SDS1104X-E and SDS1204X-E: Bode plot with a non-Siglent AWG
« Reply #189 on: August 05, 2025, 07:11:37 pm »
Had a quick look, and the answer is: no, Switchleg1's fork does not support the SDS800XHD series, as it does not open the port mapper on UDP (and lacks other things). You should use awakephd's fork if you want to use ESP. Or you can use a PC and use my script (link is repeated many times earlier in this thread).
 

Offline noahmeu

  • Contributor
  • Posts: 11
  • Country: de
Re: Siglent SDS1104X-E and SDS1204X-E: Bode plot with a non-Siglent AWG
« Reply #190 on: August 05, 2025, 08:18:44 pm »
Thanks for your fast reply. Well that seems to explain why it didn't work. So I guess I'll have to take another (and closer) look at awakephd's fork. Seemed a bit overwhelming at first, but I'm going to give it a try tomorrow.
Could anyone give me a nudge in the right direction on how to add support for my PSG9080?
Best regards
« Last Edit: August 05, 2025, 08:20:30 pm by noahmeu »
 

Offline bateau020

  • Frequent Contributor
  • **
  • Posts: 447
  • Country: fr
Re: Siglent SDS1104X-E and SDS1204X-E: Bode plot with a non-Siglent AWG
« Reply #191 on: August 05, 2025, 08:58:27 pm »
Well, indeed the work from awakephd is a bit tough to read at first.

The output to the AWG is done via the awg_* files.

The code supports 2 types of AWG now: FY general versions, and the newer FY6900 versions. The code is set up in such a way that you can simply define a new AWG and point the startup code to that new version.

The cleanest way for you would be to

1) create a new class, based on AWG_Server, just like AWG_FY and AWG_FY6900 do (up to you to decide which starting point is best, knowing that FY9600 uses FY underneath, as most stuff is identical)
2) then make the new one start up by adapting line 20 in the espBode.ino file:

Code: [Select]
AWG_FY6900      awg;                          ///< Use the FY6900 variant of the AWG_Server class

Also, use the arduino IDE. The code is not friendly to platformio.
« Last Edit: August 05, 2025, 09:01:50 pm by bateau020 »
 

Offline noahmeu

  • Contributor
  • Posts: 11
  • Country: de
Re: Siglent SDS1104X-E and SDS1204X-E: Bode plot with a non-Siglent AWG
« Reply #192 on: August 07, 2025, 10:43:21 am »
I unfortunately have to admit that I apparently lack the skills required to add my AWG. Perhaps the espBode project could really benefit from some practical documentation on how to add custom support. I'm sure that after explaining how to add support, a lot of other AWGs could be added quickly by other users.
 

Offline bateau020

  • Frequent Contributor
  • **
  • Posts: 447
  • Country: fr
Re: Siglent SDS1104X-E and SDS1204X-E: Bode plot with a non-Siglent AWG
« Reply #193 on: August 07, 2025, 11:12:39 am »
The project has documentation in the doc directory, where it explains how to set up arduino and how to adapt it. It might be improved, but it is a start.

You can either do a git clone to your PC and open the documentation locally, or you can see it online:
https://htmlpreview.github.io/?https://github.com/awakephd/espBode/blob/master/docs/html/index.html

But you will need to understand C++ (in the arduino flavour), and know how to handle the Arduino IDE.

If you do not, open an issue on github with an explanation of what the adaptation needs to be. Then either andy or I could give it a shot. But we'll need help from you for testing, as we don't have your AWG model.
 

Offline noahmeu

  • Contributor
  • Posts: 11
  • Country: de
Re: Siglent SDS1104X-E and SDS1204X-E: Bode plot with a non-Siglent AWG
« Reply #194 on: August 08, 2025, 07:48:09 am »
I understand C++ (with Arduino Flavor) and I'm able to write simple programs. However, when it comes to working with multiple files and classes I get confused quickly because I lack the routine and long term experience. I'm going to open an issue on the repo so we can further discuss this topic there. Give me some time tough so I can gather the necessary information for the PSG9080. (If we support the 9080, similar models like the JDS6600 will work with some adjustments, too)
 

Offline bateau020

  • Frequent Contributor
  • **
  • Posts: 447
  • Country: fr
Re: Siglent SDS1104X-E and SDS1204X-E: Bode plot with a non-Siglent AWG
« Reply #195 on: August 08, 2025, 08:50:42 am »
my python script already supports JDS6600, so I could go from there.

I need the commands and variations thereof (channel number, what values, what units) for:
* get_id
* set/get output on/off
* set/get frequency
* set/get phase
* set/get wave_type
* set/get amplitude
* set/get offset
* set/get load_impedance (not sure if that is supported though)

EDIT: oops, I see awakephd does not allow issues via github. I'll ping him. In the meantime, I don't mind you opening the issue on my repo. I'll just insert any changes into my code as well.
« Last Edit: August 08, 2025, 08:56:36 am by bateau020 »
 

Offline noahmeu

  • Contributor
  • Posts: 11
  • Country: de
Re: Siglent SDS1104X-E and SDS1204X-E: Bode plot with a non-Siglent AWG
« Reply #196 on: August 11, 2025, 06:18:45 pm »
I managed to add support for the PSG9080. I created a pull request with the necessary changes. Please go easy on me ;)
Also, the PSG9080 does not feature a button for sync on the device itself. Instead, syncing channels can be acomplished with the w25 command https://github.com/poehldaniel/PSG9080/blob/main/PSG%20Communication%20Protocol.pdf
Would it be possible to implement a "sync"-option? Not sure about the 1000 series but the 800 series requieres a "feedback-channel" from the AWG and using CH1 for testing and CH2 for measuring would be beneficial.


 

Offline bateau020

  • Frequent Contributor
  • **
  • Posts: 447
  • Country: fr
Re: Siglent SDS1104X-E and SDS1204X-E: Bode plot with a non-Siglent AWG
« Reply #197 on: August 11, 2025, 07:12:22 pm »
Added it. About sync: it may be best to just use the same channel to drive the device under test and the reference signal. There are quite some AWGs that do not handle sync very well, and either let them get out of sync after a few commands, or introduce phase differences between the channels.

You mention that it still requires some tests. Know that you can use the tests/awg_test.py file to test the correct workings.

Do you want that in espbode as well, and can you give me the go after tests?
 

Offline mawyatt

  • Super Contributor
  • ***
  • Posts: 6104
  • Country: us
Re: Siglent SDS1104X-E and SDS1204X-E: Bode plot with a non-Siglent AWG
« Reply #198 on: August 11, 2025, 07:38:22 pm »
Added it. About sync: it may be best to just use the same channel to drive the device under test and the reference signal. There are quite some AWGs that do not handle sync very well, and either let them get out of sync after a few commands, or introduce phase differences between the channels.

You mention that it still requires some tests. Know that you can use the tests/awg_test.py file to test the correct workings.

Do you want that in espbode as well, and can you give me the go after tests?
Another good reason to use the same AWG channel for driving the DUT and used as Reference is the amplitude of Reference may change wrt to another channel (or the other channel changes), either by impedance changes by the DUT and/or output variations from the AWG channel.

Using the signal that directly drives the DUT and also as the Reference allows some 1st order corrections for variations in the Bode Plot since the overall Bode Function is Vo/Vref, where Vref becomes Vi of the DUT. Of course this may not be easy as frequency increases due to cable delays/loss and such.

Best
Curiosity killed the cat, also depleted my wallet!
~Wyatt Labs by Mike~
 

Offline noahmeu

  • Contributor
  • Posts: 11
  • Country: de
Re: Siglent SDS1104X-E and SDS1204X-E: Bode plot with a non-Siglent AWG
« Reply #199 on: August 11, 2025, 07:50:39 pm »
Tests were succesfull! I had to correct the frequency since it was a 1/10th of the desired amount and fix a spelling mistake. Your awg_test script made it a lot easier, I enabled the stepped mode and verified every step. Not sure about the impedance though, no changes on the display.
EspBode is nice to have, but I'm also comfortable with setting up a computer (or maybe a Raspi Zero W?) if I need to create a bode plot.
I think I burried a BNC splitter somewhere in my drawer - I'm going to create a plot tomorrow and take a look at the end result.
Is there anything you'd like me to test in particular?
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf

 

-->