Hi all I am playing arround with a Siglent SDG2042X and a DS1074Z.
I was trying to create a bode plot script in scilab, but was getting unexpected data.
So what I did was hookup the siggen on the Rigol and measure the response from 1..100MHz in 1Mhz steps:
![](https://thumb.ibb.co/jFiRaA/frequency-sweep1.png)
![](https://thumb.ibb.co/gc3ETV/frequency-sweep2.png)
![](https://thumb.ibb.co/cwgq2q/frequency-sweep3.png)
Cable 1 is the one included with the SDG2042X.
Cable 2 is from Batronix CFL200.
Drop down at the end is about -10db/decade arround the -3db point.
Both devices are unlocked to maximum bandwidth.
Is this because I didn't terminate (50ohm) at the scope end? I didn't expect this below 100MHz.
Or did unlock backfire and is the DS1074Z defaulting to 50Mhz (system info shows DS1104Z and option for bandwidth 100mhz offcial).
The SDG2042X normally has a bandwidth for sines of 40MHz, but is unlocked and shows SDG2122X and allows upto 120MHz.
Scilab script:
clear;
format("v",20);
// Cable 1 => Siglent SDG 2042X included cable, markings 3D-FB
// Cable 2 => Batronix BNC-Cable CLF200, 50 Ω, 1m, markings CLF-200 LOW LOSS 50 OHM COAXIAL CABLE
// 0 => SDG2042X:CH1->DS1074Z:CH1 (Cable 1), SDG2042X:CH2->DS1074Z:CH2 (Cable 2)
// 1 => SDG2042X:CH1->DS1074Z:CH2 (Cable 1), SDG2042X:CH2->DS1074Z:CH1 (Cable 2)
// 2 => SDG2042X:CH2->DS1074Z:CH1 (Cable 1), SDG2042X:CH1->DS1074Z:CH2 (Cable 2)
swap = 2;
[status, deviceAddrs] = findAllInstruments();
[status, defaultRM] = viOpenDefaultRM();
[status, wavegen_id] = viOpen( defaultRM, deviceAddrs(1), viGetDefinition("VI_NULL"), viGetDefinition("VI_NULL"));
[status, scope_id] = viOpen( defaultRM, deviceAddrs(2), viGetDefinition("VI_NULL"), viGetDefinition("VI_NULL"));
[status, count] = viWrite(wavegen_id, "*IDN?");
[status, wavegen_idn, count] = viRead(wavegen_id, 255);
[status, count] = viWrite(scope_id, "*IDN?");
[status, scope_idn, count] = viRead(scope_id, 255);
[status, count] = viWrite(wavegen_id, "C1:OUTP LOAD,HZ,PLRT,NOR,WVTP,SINE");
[status, count] = viWrite(wavegen_id, "C1:BSWV AMP,1V,OFST,0V,PHSE,0");
[status, count] = viWrite(wavegen_id, "C1:BSWV FRQ,10000000HZ");
[status, count] = viWrite(wavegen_id, "C1:OUTP ON");
[status, count] = viWrite(wavegen_id, "C2:OUTP ON");
[status, count] = viWrite(scope_id, ":ACQ:TYPE HRES");
[status, count] = viWrite(scope_id, ":CHAN1:BWL OFF");
[status, count] = viWrite(scope_id, ":CHAN1:COUP DC");
[status, count] = viWrite(scope_id, ":CHAN1:DISP ON");
[status, count] = viWrite(scope_id, ":CHAN1:PROB 1");
[status, count] = viWrite(scope_id, ":CHAN2:BWL OFF");
[status, count] = viWrite(scope_id, ":CHAN2:COUP DC");
[status, count] = viWrite(scope_id, ":CHAN2:DISP ON");
[status, count] = viWrite(scope_id, ":CHAN2:PROB 1");
[status, count] = viWrite(scope_id, ":MEAS:STAT:ITEM VPP,CHAN1");
[status, count] = viWrite(scope_id, ":MEAS:STAT:ITEM VPP,CHAN2");
[status, count] = viWrite(scope_id, ":MEAS:STAT:ITEM RPH,CHAN12");
function set_freq(f)
disp(string(f));
[status, count] = viWrite(wavegen_id, strcat(["C1:BSWV FRQ,",string(f),"HZ"]));
[status, count] = viWrite(scope_id, strcat([":TIM:MAIN:SCAL ",string(0.5/f)]));
sleep(2500);
[status, count] = viWrite(scope_id, ":MEAS:STAT:RES");
sleep(250);
endfunction
function value = get_vpp1()
[status, count] = viWrite(scope_id, ":MEAS:ITEM? VPP,CHAN1");
[status, value, count] = viRead(scope_id, 255);
value = strtod(value);
endfunction
function value = get_vpp2()
[status, count] = viWrite(scope_id, ":MEAS:ITEM? VPP,CHAN2");
[status, value, count] = viRead(scope_id, 255);
value = strtod(value);
endfunction
function value = get_phase12()
[status, count] = viWrite(scope_id, ":MEAS:ITEM? RPH,CHAN12");
[status, value, count] = viRead(scope_id, 255);
value = strtod(value);
endfunction
delta = 1000000;
n = 100;
freq_set = zeros(n,1);
amp1 = zeros(freq_set);
amp2 = zeros(freq_set);
amp1_db = zeros(freq_set);
amp2_db = zeros(freq_set);
phase = zeros(freq_set);
for k=1:n
freq_set(k) = delta*k;
set_freq(freq_set(k));
amp1(k) = mean([get_vpp1(),get_vpp1(),get_vpp1()]);
amp2(k) = mean([get_vpp2(),get_vpp2(),get_vpp2()]);
phase(k) = mean([get_phase12(),get_phase12(),get_phase12()]);
amp1_db(k) = 20.0*log10(amp1(k)/1);
amp2_db(k) = 20.0*log10(amp2(k)/1);
end
[status, count] = viWrite(wavegen_id, "C1:OUTP OFF");
[status, count] = viWrite(wavegen_id, "C2:OUTP OFF");
viClose(wavegen_id);
viClose(scope_id);
viClose(defaultRM);
if ( swap == 0 ) then
scf();
plot2d("ln",freq_set/1000000,amp1_db,2);
plot2d("ln",freq_set/1000000,amp2_db,5);
xlabel("Frequency [MHz]");
ylabel("Amplitude [db]");
title("Frequency sweep");
legend(["SDG2042X:CH1->DS1074Z:CH1 (Cable 1)";"SDG2042X:CH2->DS1074Z:CH2 (Cable 2)"],"in_lower_left");
set(gca(),"grid",[1 1]);
elseif ( swap == 1 ) then
scf();
plot2d("ln",freq_set/1000000,amp2_db,2);
plot2d("ln",freq_set/1000000,amp1_db,5);
xlabel("Frequency [MHz]");
ylabel("Amplitude [db]");
title("Frequency sweep");
legend(["SDG2042X:CH1->DS1074Z:CH2 (Cable 1)";"SDG2042X:CH2->DS1074Z:CH1 (Cable 2)"],"in_lower_left");
set(gca(),"grid",[1 1]);
elseif ( swap == 2 ) then
scf();
plot2d("ln",freq_set/1000000,amp1_db,2);
plot2d("ln",freq_set/1000000,amp2_db,5);
xlabel("Frequency [MHz]");
ylabel("Amplitude [db]");
title("Frequency sweep");
legend(["SDG2042X:CH2->DS1074Z:CH1 (Cable 1)";"SDG2042X:CH1->DS1074Z:CH2 (Cable 2)"],"in_lower_left");
set(gca(),"grid",[1 1]);
end