Merge branch 'tnmr' of https://gitea.psi.ch/linse/frappy into tnmr

This commit is contained in:
2025-08-05 10:34:02 +02:00
2 changed files with 81 additions and 12 deletions

View File

@@ -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}')

View File

@@ -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()