diff --git a/frappy_psi/network_analysers/ZVL/ZVLDriver.py b/frappy_psi/network_analysers/ZVL/ZVLDriver.py index 8290ec99..580eaf20 100644 --- a/frappy_psi/network_analysers/ZVL/ZVLDriver.py +++ b/frappy_psi/network_analysers/ZVL/ZVLDriver.py @@ -30,32 +30,50 @@ class ZVLNetAnalyzer(): self.base_data = np.array([]) self.base_data = self.get_data()[1] + self.min_freq = 0 + self.max_freq = 0 + def reset(self): - #self.instrument.write('*RST') - #self.instrument.write('SYST:PRES') # reloads current setup. - self.instrument.write('*CLS') + self.instrument.write('*RST') self.instrument.write('INST:NSEL 2') self.instrument.write('DISPlay:WINDow1:STATe ON') self.instrument.write(":CALC:PAR:MEAS 'Trc1', 'S11'") self.instrument.write('CALC:FORM MLOG') self.instrument.write('INIT:CONT OFF') self.instrument.write("SYST:USER:DISP:TITL 'Frappy connection'") - #self.instrument.write('INIT:SCOP OFF') - #self.instrument.write('DISPlay:WINDow2:STATe ON') + self.instrument.write('*ESE') + + self.min_freq, self.max_freq = self.get_freq_range() # default is largest. - def load_calibration(self, f): - self.instrument.write(f":MMEMORY:STORE:CORR 1, 'OSM1 {f}'") # put calibration in pool - self.instrument.write(f":MMEMORY:LOAD:CORR 1, 'OSM1 {f}'") # load from pool + def reload_calibration(self): + self.reset() + #self.instrument.write("DISP:MENU:KEY:SEL 'Correction Off'") + #self.instrument.write("DISP:MENU:KEY:EXEC 'Correction Off'") + self.instrument.write("DISP:MENU:KEY:EXEC 'Recall Last Cal Set'") + time.sleep(1) + self.min_freq, self.max_freq = self.get_freq_range() # default is largest. + + def get_freq_range(self): + start = float(self.instrument.ask('SENS1:FREQ:STAR?')) + stop = float(self.instrument.ask('SENS1:FREQ:STOP?')) + + return start, stop def set_freq_range(self, start, stop): '''In Hz''' - self.instrument.write(f'SENS1:FREQ:STAR {start}') - self.instrument.write(f'SENS1:FREQ:STOP {stop}') + if(start >= self.min_freq) and (stop <= self.max_freq): + + self.instrument.write(f'SENS1:FREQ:STAR {start}') + self.instrument.write(f'SENS1:FREQ:STOP {stop}') + self.start_freq = start + self.stop_freq = stop def set_freq_span(self, center, span): '''In Hz''' - self.instrument.write(f'SENS1:FREQ:CENT {center}') - self.instrument.write(f'SENS1:FREQ:SPAN {span}') + start = center - span/2 + stop = center + span/2 + + self.set_freq_range(start, stop) def set_averaging_passes(self,avgs): ''' @@ -101,6 +119,7 @@ class ZVLNetAnalyzer(): assert(averaging_passes<=999) assert(units in ['dB', 'unitless']) + self.instrument.write('INIT:CONT OFF') self.instrument.write(f'SWE:POIN {N}') self.instrument.write(f'SWE:COUN {averaging_passes}') diff --git a/frappy_psi/network_analysers/ZVL/test.py b/frappy_psi/network_analysers/ZVL/test.py new file mode 100644 index 00000000..922affb5 --- /dev/null +++ b/frappy_psi/network_analysers/ZVL/test.py @@ -0,0 +1,50 @@ +from ZVLDriver import * +import matplotlib.pyplot as plt + +# example code. profiles the per-point delay for reading data and +ip = '129.129.156.201' +ip = '169.254.83.53' +import matplotlib.pyplot as plt +print('start') +z = ZVLNetAnalyzer() +z.reset() + + +#mm, mmi, fr, frq = z.find_peak(50_000_000, 350_000_000, 20_000_000) +#plt.plot(frq, fr) +#plt.axvline(frq[mmi]) +#plt.axhline(mm) +#plt.show() + +#z.reset() +##z.set_freq_range(1_000_000, 2_000_000.5) +##z.set_freq_span(1_000_000, 10_000) +z.set_freq_range(25_750_000, 75_250_000) +plt.scatter(*(z.get_data())) + +z.reload_calibration() +#z.set_freq_span(220_000_000, 50_000_000) +plt.scatter(*(z.get_data())) +plt.show() + +#Ns = np.linspace(3, 1000, 100).astype(int) +#ts = [] +#for N in Ns: +# st = time.time() +# freqs, data = z.get_data(N) +# et = time.time() +# dt = (et-st) +# print(f'got data, {dt/N} ({dt})') +# ts += [dt] +# +#plt.scatter(Ns, ts) +#plt.show() +#plt.scatter(Ns, np.array(ts)/np.array(Ns)) +#plt.show() + +#input() +#plt.plot(*z.get_data(averaging_passes=1), alpha=0.3) +#plt.plot(*z.get_data(averaging_passes=64), alpha=0.3) +#plt.show() + +input() \ No newline at end of file