Added functionality for the TNMR module to write partial scans - useful for long experiments with many acquisitions, which might need to be terminated early. Also good for impatient people. Added functionality to the ZVL Network Analyser module to allow for use of inbuilt data correction (calibration).

This commit is contained in:
2025-07-29 14:31:24 +02:00
parent d5d9d70713
commit e77c48ace0
4 changed files with 122 additions and 26 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}')