def setUp(self): #Run before each test self.FSW = VSA() try: self.FSW.jav_Open(host,prnt=0) #self.FSW.jav_Reset() self.FSW.jav_ClrErr() self.FSW.dLastErr = "" except: self.assertTrue(1) #FAIL
class VST(object): def __init__(self): self.Freq = 19e9 def jav_Open(self, SMW_IP, FSW_IP, OFile=''): self.SMW = VSG().jav_Open(SMW_IP, OFile) #Create SMW Object self.FSW = VSA().jav_Open(FSW_IP, OFile) #Create FSW Object return self def jav_Close(self): self.SMW.jav_Close() self.FSW.jav_Close() def jav_ClrErr(self): self.SMW.jav_ClrErr() self.FSW.jav_ClrErr() def Set_Freq(self, freq): self.SMW.Set_Freq(freq) self.FSW.Set_Freq(freq)
class VST(object): """ Rohde & Schwarz Vector Signal Transceiver Object """ def __init__(self): self.Freq = 19e9 def jav_Open(self,SMW_IP,FSW_IP,OFile=''): self.SMW = VSG().jav_Open(SMW_IP,OFile) #Create SMW Object self.FSW = VSA().jav_Open(FSW_IP,OFile) #Create FSW Object return self def jav_Close(self): self.SMW.jav_Close() self.FSW.jav_Close() def jav_ClrErr(self): self.SMW.jav_ClrErr() self.FSW.jav_ClrErr() def Set_Freq(self,freq): self.SMW.Set_Freq(freq) self.FSW.Set_Freq(freq)
meth = { 0: 'VSA.Set_AutoOpt_FSx_Level()', # 1:'VSA.Set_Autolevel()', 1: 'VSA.Set_Mkr_BandSetRef()' } ########################################################## ### Code Overhead ########################################################## from rssd.FSW_Common import VSA #pylint: disable=E0611,E0401 from rssd.yaVISA_socket import jaVisa #pylint: disable=E0611,E0401 from datetime import datetime from rssd.FileIO import FileIO #pylint: disable=E0611,E0401 OFile = FileIO().makeFile(__file__) VSA = VSA().jav_Open(VSA_IP, OFile) #Create VSA Object VSG = jaVisa().jav_Open(VSG_IP, OFile) #Create Object ########################################################## ### Code Start ########################################################## #VSA.jav_Reset() VSA.Init_IQ() #FSW ACLR Channel if 1: VSA.Set_Freq(Freq) VSA.Set_IQ_ACLR(ChBW, ChSpace) #VSA.Set_DisplayUpdate("OFF") VSA.Set_Param_Couple_All() VSA.Set_SweepTime(MeasTim) VSA.Set_Trace_Avg('LIN') VSA.Set_Trace_AvgCount(Avg)
def Get_Noise_CalCold(self): NCalCold = self.queryFloat('TRAC? TRACE1, CPC') return NCalCold def Get_Noise_CalHot(self): NCalHot = self.queryFloat('TRAC? TRACE1, CPH') return NCalHot def Get_Noise_PHot(self): NPHot = self.queryFloat('TRAC? TRACE1, PHOT') return NPHot def Get_Noise_PCold(self): NPCold = self.queryFloat('TRAC? TRACE1, PCOL') return NPCold def System_Preset(self): self.write('SYST:PRES:CHAN') ##################################################################### ### Run if Main ##################################################################### if __name__ == "__main__": ### this won't be run when imported FSW = VSA() FSW.jav_Open("192.168.1.109") FSW.Init_Noise() FSW.jav_ClrErr() del FSW
QRange = 'ALL' print(self.query('SENS:CHIR:FREQ:AVGF:AVER? %s'%QRange)) print(self.query('SENS:CHIR:FREQ:AVGF:SDEV? %s'%QRange)) print(self.query('SENS:CHIR:FREQ:AVGF:MAX? %s'%QRange)) print(self.query('SENS:CHIR:FREQ:AVGF:MIN? %s'%QRange)) print() def Get_TA_TestStuff(self): TATable = self.query('CALC:CHRD:STAT:DATA?').split(',') print(len(TATable)) #print(TATable) #self.write("MMEM:STOR6:TAB ALL,'C:\\R_S\\Instr\\asdf.data'") ##################################################################### ### Run if Main ##################################################################### if __name__ == "__main__": ### this won't be run when imported FSW = VSA() FSW.jav_Open("192.168.1.109") #FSW.Init_TranAna() FSW.Get_TA_ChirpStats_TimeBegin() FSW.Get_TA_ChirpStats_TimeLength() FSW.Get_TA_ChirpStats_Rate() FSW.Get_TA_ChirpStats_StateDev() FSW.Get_TA_ChirpStats_AvgFreq() FSW.Get_TA_ChirpStats_Bandwidth() FSW.Get_TA_ChirpStats_FreqDevAvg() FSW.Get_TA_TestStuff()
MeasTim = 500e-6 ########################################################## ### Code Overhead ########################################################## from rssd.SMW_Common import VSG from rssd.FSW_Common import VSA from rssd.VSE.K96 import VSE import rssd.FileIO import time f = rssd.FileIO.FileIO() DataFile = f.Init(OutFile) SMW = VSG() #Create SMW Object SMW.jav_Open(SMW_IP, f.sFName) #Connect to SMW FSW = VSA() #Create FSW Object FSW.jav_Open(FSW_IP, f.sFName) #Connect to FSW VSE = VSE() #Create VSE Object VSE.jav_Open(VSE_IP, f.sFName) #Connect to VSE if 0: SMW.jav_logSCPI() FSW.jav_logSCPI() VSE.jav_logSCPI() ########################################################## ### Setup Instruments ########################################################## VSE.jav_Reset() time.sleep(6) VSE.Init_K96() #VSE K96 OFDMVSA CH VSE.Set_DisplayUpdate("ON") #Display On
def SetReflvl(): VSA.Set_AttnAuto() VSA.write(':INIT:CONT OFF') # Single Sweep VSA.Set_InitImm() ChPwr = VSA.queryFloatArry(':CALC:MARK:FUNC:POW:RES? MCAC')[0] VSA.Set_RefLevel(ChPwr + 3) VSA.Set_InitImm() ChPwr = VSA.queryFloatArry(':CALC:MARK:FUNC:POW:RES? MCAC')[0] VSA.Set_RefLevel(ChPwr + 3) if ChPwr < -24: #FSVA:-17 FSW:-22 VSA.Set_Preamp('ON') else: VSA.Set_Preamp('OFF')
def AutoRBW(): VSA.Set_ResBW(0) VSA.query(':SENS:ADJ:LEV;*OPC?') # Auto-Tune VSA.Set_ResBW(RBW)
########################################################## FSW_IP = '192.168.1.109' Freq = 28e9 RFBW = 100e6 NumIQ = 2e6 NumMeas = 10 ########################################################## ### Code Overhead ########################################################## from rssd.FSW_Common import VSA #pylint: disable=E0611,E0401 from datetime import datetime from rssd.FileIO import FileIO #pylint: disable=E0611,E0401 OFile = FileIO().makeFile(__file__) FSW = VSA().jav_Open(FSW_IP, OFile) #Create FSW Object ########################################################## ### Code Start ########################################################## FSW.jav_Reset() FSW.Set_Freq(Freq) FSW.Init_CCDF() #FSW CCDF Channel FSW.Set_CCDF_BW(RFBW) FSW.Set_CCDF_Samples(NumIQ) FSW.Set_SweepCont(0) ########################################################## ### Measure Time ########################################################## #sDate = datetime.now().strftime("%y%m%d-%H:%M:%S.%f") #Date String
def Set_Adem_LPassStat(self, sState): self.write('SENSe:FILT:LPASS:STAT %s' % (sState)) def Set_Adem_LPassAbsolute(self, sBW): #Low Pass Filter Absolute Values: 3kHz; 15kHz; 150kHz self.write('SENSe:FILT:​LPASS:​FREQ:​ABS %s' % sBW) def Set_Adem_LPassRelative(self, sBW): #Low Pass Filter Relative Values:5PCT; 10PCT; 25PCT self.write('SENSe:FILT:LPASS:FREQ:REL %s' % sBW) def Set_Adem_LPassManual(self, fBW): self.write('SENSe:FILT:LPASS​:FREQ:MAN %s' % fBW) #0 to 3MHz ##################################################################### ### Run if Main ##################################################################### if __name__ == "__main__": ### this won't be run when imported if 0: import sys print(sys.version) VSA = VSA() VSA.jav_Open("192.168.1.109") VSA.Set_Channel("ADEM") VSA.Set_DisplayUpdate('ON') VSA.Set_Adem_dbw(50e6) VSA.Set_InitImm() VSA.jav_Close()
def jav_Open(self,SMW_IP,FSW_IP,OFile=''): self.SMW = VSG().jav_Open(SMW_IP,OFile) #Create SMW Object self.FSW = VSA().jav_Open(FSW_IP,OFile) #Create FSW Object return self
fSpan = 100e6 SWM_Out = -20 Mixer = 0 ########################################################## ### Code Start ########################################################## from rssd.FSW_Common import VSA #pylint:disable= from rssd.SMW_Common import VSG from rssd.FileIO import FileIO import time OFileCSV = FileIO().makeFile(__file__+'csv') OFileXML = FileIO().makeFile(__file__+'xml') SMW = VSG().jav_Open(SMW_IP,OFileCSV) #Create SMW Object FSW = VSA().jav_Open(FSW_IP,OFileCSV) #Create FSW Object ########################################################## ### Instrument Settings ########################################################## SMW.Set_RFPwr(SWM_Out) #Output Power SMW.Set_RFState('ON') #Turn RF Output on FSW.Set_SweepCont(0) #FSW.Set_SweepTime(200e-3) FSW.Set_Span(fSpan) if Mixer: #Mixer FSW.write('SENS:MIX:STAT ON') FSW.write('SENS:MIX:HARM:BAND V')
### Title : Measure VSA Noise Floor ### Creatd : mclim, 2019.06.11 ############################################################################### ### User Entry ############################################################################### instru_ip = '192.168.1.108' freq = 1.950 #GHz ############################################################################### ### Code Overhead: Import and create objects ############################################################################### from rssd.FSW_Common import VSA from rssd.FileIO import FileIO import timeit OFile = FileIO().makeFile(__file__) FSW = VSA().jav_Open(instru_ip,OFile) #Create Object ############################################################################### ### Code Start ############################################################################### OFile.write('Freq,ChPwr-dBm,2nd-dbc,3rd-dbc') FSW.Init_Harm() FSW.Set_Freq(freq * 1e9) FSW.Set_Harm_num(3) FSW.Set_Trace_Detector('RMS') FSW.Set_Harm_adjust() # FSW.Set_RefLevel(-100) # FSW.Set_ResBW(100) data = FSW.Get_Harm() OutStr = f'{freq},{data[0]},{data[1]},{data[2]}'
def TxChOnly(): VSA.Set_ACLR_NumAdj(0) VSA.query(':SENS:ADJ:LEV;*OPC?') # Auto-Tune VSA.Set_ACLR_NumAdj(2)
f":MMEM:STOR:DEM:CC1 'C:\\R_S\\Instr\\user\\NR5G\\AllocationFiles\\{sName}.allocation'" ) def Set_5GNR_SEM_Freq(self, fFreq, dSubBlock=1): self.write(':SENS:ESP%d:SCEN %f' % (dSubBlock, fFreq)) def Set_5GNR_SEM_SubBlockNum(self, dSubBlock): self.write(':SENS:ESP:SCO %d' % (dSubBlock)) def Set_5GNR_SubFrameCount(self, dSubFrame): self.write(':SENS:NR5G:FRAM:COUN:STAT OFF') self.write(':SENS:NR5G:FRAM:SCO %d' % dSubFrame) def Set_5GNR_TransPrecoding(self, sState): if self.sdir == 'UL': self.write(f':CONF:NR5G:UL:CC1:TPR {sState}') else: print('<DL TransPrecoding N/A>') ##################################################################### ### Run if Main ##################################################################### if __name__ == "__main__": ### this won't be run when imported FSW = VSA().jav_Open("192.168.1.109") print(FSW.Get_5GNR_EVMParams()) FSW.Set_5GNR_savesetting('asdf' + '1') FSW.jav_ClrErr() FSW.jav_Close()
def AvgOff(): VSA.Set_Trace_AvgCount(1) VSA.query(':SENS:ADJ:LEV;*OPC?') # Auto-Tune VSA.Set_Trace_AvgCount(Avg)
def Set_5GNR_Parameters(self, sDir): self.Set_5GNR_Direction(sDir) def Set_5GNR_SEM_Freq(self, fFreq, dSubBlock=1): self.write(':SENS:ESP%d:SCEN %f' % (dSubBlock, fFreq)) def Set_5GNR_SEM_SubBlockNum(self, dSubBlock): self.write(':SENS:ESP:SCO %d' % (dSubBlock)) def Set_5GNR_SubFrameCount(self, dSubFrame): self.write(':SENS:NR5G:FRAM:COUN:STAT OFF') self.write(':SENS:NR5G:FRAM:SCO %d' % dSubFrame) def Set_5GNR_TransPrecoding(self, sState): if self.sdir == 'UL': self.write(f':CONF:NR5G:UL:CC1:TPR {sState}') else: print('<DL TransPrecoding N/A>') ##################################################################### ### Run if Main ##################################################################### if __name__ == "__main__": ### this won't be run when imported FSW = VSA().jav_Open("192.168.1.109") print(FSW.Get_5GNR_EVMParams()) print(FSW.Get_5GNR_EVM()) FSW.jav_ClrErr() FSW.jav_Close()
def SwpTime(): VSA.Set_SweepTime(2e-3) VSA.query(':SENS:ADJ:LEV;*OPC?') # Auto-Tune VSA.Set_SweepTime(MeasTim)
SweType = 'NA' ### Loops Repeat = 10 PwrSweep = 59 ########################################################## ### Code Overhead ########################################################## from rssd.FSW_Common import VSA #pylint: disable=E0611,E0401 from rssd.yaVISA_socket import jaVisa #pylint: disable=E0611,E0401 from datetime import datetime from rssd.FileIO import FileIO #pylint: disable=E0611,E0401 OFile = FileIO().makeFile(__file__) VSA = VSA().jav_Open(VSA_IP, OFile) #Create VSA Object VSG = jaVisa().jav_Open(VSG_IP, OFile) #Create Object ########################################################## ### Code Start ########################################################## #VSA.jav_Reset() VSA.Init_IQ() #FSW ACLR Channel if 1: VSA.Set_Freq(Freq) VSA.Set_IQ_BW(5.1 * ChSpace) VSA.Set_IQ_SpectrumWindow() # Add Spectrum Trace VSA.Set_Trace_Detector('RMS', 2) # RMS detector VSA.Set_Mkr_Freq(Freq, 1, 2) # Tx Freq VSA.Set_Mkr_Band(ChBW, 1, 2) # Tx RFBW VSA.Set_Mkr_Freq(Freq - ChSpace, 2, 2) # Adj- Freq VSA.Set_Mkr_Band(ChBW, 2, 2) # Adj- RFBW
if iMCS == 0: self.write(f'SENS:DEM:FORM:MCS:MODE ALL') else: self.write(f'SENS:DEM:FORM:MCS:MODE MEAS') self.write(f'SENS:DEM:FORM:MCS {iMCS}') def Set_WLAN_Standard(self, sStd): #0:A 1:B 2/3:J 4:G 6:N 7:N-MIMO 8:AC 9:P 10:AX sStd.upper() if sStd == 'N': self.write(f':CONF:STAN 6') elif sStd == 'AC': self.write(f':CONF:STAN 8') elif sStd == 'AX': self.write(f':CONF:STAN 10') else: print(f'Set_WLAN_Standard {sStd} not supported') ##################################################################### ### Run if Main ##################################################################### if __name__ == "__main__": ### this won't be run when imported FSW = VSA() FSW.jav_Open("192.168.1.109") print(FSW.query(':TRAC:DATA? TRACE1')) #print(FSW.Get_WLAN_EVMParams()) #FSW.Set_WLAN_Autolvl() FSW.jav_Close()
VSE_IP = '127.0.0.1' #Get local machine name Fs = 1200e6 #Sampling Rate MeasTim = 500e-6 ########################################################## ### Code Overhead: Import and create objects ########################################################## from rssd.FSW_Common import VSA from rssd.SMW_Common import VSG from rssd.VSE_K96 import VSE from rssd.FileIO import FileIO from datetime import datetime OFile = FileIO().makeFile(__file__) SMW = VSG().jav_Open(SMW_IP, OFile) #Create SMW Object FSW = VSA().jav_Open(FSW_IP, OFile) #Create FSW Object VSE = VSE().jav_Open(VSE_IP, OFile) #Create FSW Object ########################################################## ### Code Start ########################################################## FSW.jav_Reset() FSW.Init_IQ() #FSW IQ Channel FSW.Set_DisplayUpdate("OFF") FSW.Set_SweepTime(MeasTim) FSW.Set_IQ_SamplingRate(Fs) ########################################################## ### Measure Time ########################################################## #sDate = datetime.now().strftime("%y%m%d-%H:%M:%S.%f") #Date String
class TestGeneral(unittest.TestCase): def setUp(self): #Run before each test self.FSW = VSA() try: self.FSW.jav_Open(host,prnt=0) #self.FSW.jav_Reset() self.FSW.jav_ClrErr() self.FSW.dLastErr = "" except: self.assertTrue(1) #FAIL def tearDown(self): #Run after each test self.FSW.jav_Close() ############################################################################### ### <Test> ############################################################################### def test_FSW_Connect(self): self.FSW.jav_IDN(prnt=0) self.assertEqual(self.FSW.Make,"Rohde&Schwarz") def test_FSW_CommonSettings(self): self.FSW.Init_ACLR() self.FSW.Set_Freq(1e6) self.FSW.Set_RefLevel(10) self.FSW.Set_ResBW(1e6) self.FSW.Set_VidBW(1e6) self.FSW.Set_Span(100e6) self.FSW.Get_AttnMech() self.FSW.Get_RefLevel() self.assertEqual(self.FSW.jav_Error()[0],'0') def test_FSW_Marker(self): self.FSW.Set_Mkr_Peak() asdf = self.FSW.Get_Mkr_Freq() self.assertEqual(self.FSW.jav_Error()[0],'0') def test_FSW_ACLR(self): self.FSW.Get_ACLR() #var = input("Please enter something: ") self.assertEqual(self.FSW.jav_Error()[0],'0')
SweType = 'AUTO' #AUTO | SWE | FFT ### Loops Repeat = 10 PwrSweep = 59 ########################################################## ### Code Overhead ########################################################## from rssd.FSW_Common import VSA #pylint: disable=E0611,E0401 from rssd.yaVISA_socket import jaVisa #pylint: disable=E0611,E0401 from datetime import datetime from rssd.FileIO import FileIO #pylint: disable=E0611,E0401 OFile = FileIO().makeFile(__file__) VSA = VSA().jav_Open(VSA_IP, OFile) #Create VSA Object VSG = jaVisa().jav_Open(VSG_IP, OFile) #Create Object meth = { 0: 'Autolvl()', 1: 'TxChOnly()', 2: 'AvgOff()', 3: 'AutoRBW()', 4: 'SwpTime()', 5: 'SetReflvl()', 6: 'K18()' } meth = { 1: 'SetReflvl()', 0: 'K18()', }
MeasTim = 500e-6 ########################################################## ### Code Overhead ########################################################## from rssd.SMW_Common import VSG from rssd.FSW_Common import VSA from rssd.VSE.K96 import VSE import rssd.FileIO import time f = rssd.FileIO.FileIO() DataFile = f.Init(OutFile) SMW = VSG() #Create SMW Object SMW.jav_Open(SMW_IP, f.sFName) #Connect to SMW FSW = VSA() #Create FSW Object FSW.jav_Open(FSW_IP, f.sFName) #Connect to FSW VSE = VSE() #Create VSE Object VSE.jav_Open(VSE_IP, f.sFName) #Connect to VSE if 0: SMW.jav_logSCPI() FSW.jav_logSCPI() VSE.jav_logSCPI() ########################################################## ### Setup Instruments ########################################################## VSE.jav_Reset() #time.sleep(6) VSE.Init_K96() #Change Channel VSE.Set_DisplayUpdate("ON") #Display On
def K18(): VSA.Set_Channel('AMPL') VSA.Set_Autolevel() # Auto-Tune
FSW_IP = '192.168.1.109' MeasTim = [0.1e-3, 0.2e-3, 0.3e-3, 0.5e-3, 1e-3, 2e-3, 3e-3] RFBW = 95e6 RFSp = 100e6 Freq = 28e9 NumIter = 20 ########################################################## ### Code Overhead: Import and create objects ########################################################## from rssd.FSW_Common import VSA from datetime import datetime from rssd.FileIO import FileIO OFile = FileIO().makeFile(__file__) FSW = VSA().jav_Open(FSW_IP, OFile) #Create FSW Object ########################################################## ### Code Start ########################################################## FSW.jav_Reset() FSW.Init_IQ() #FSW ACLR Channel if 1: FSW.Set_Freq(Freq) FSW.Set_IQ_BW(3.1 * RFSp) FSW.Set_IQ_SpectrumWindow() FSW.Set_Trace_Detector('RMS', 2) FSW.Set_Mkr_Freq(Freq, 1, 2) FSW.Set_Mkr_Band(RFBW, 1, 2) FSW.Set_Mkr_Freq(Freq - RFSp, 2, 2) FSW.Set_Mkr_Band(RFBW, 2, 2)
def Autolvl(): VSA.query(':SENS:ADJ:LEV;*OPC?') # Auto-Tune
### Title : Measure VSA Noise Floor ### Creatd : mclim, 2018.05.24 ############################################################################### ### User Entry ############################################################################### instru_ip = '192.168.1.108' ############################################################################### ### Code Overhead: Import and create objects ############################################################################### from rssd.FSW_Common import VSA from rssd.FileIO import FileIO import timeit OFile = FileIO().makeFile(__file__) FSVA = VSA().jav_Open(instru_ip, OFile) #Create Object ############################################################################### ### Code Start ############################################################################### OFile.write('Freq,LNA,NoiseCorr,MkrFreq,Noise,dBmHz') FSVA.Set_SweepCont(0) #FSVA.Set_SweepTime(100e-3) FSVA.Set_Span(1e6) FSVA.Set_RefLevel(-100) FSVA.Set_Trace_Detector('RMS') FSVA.Set_Trace_Avg('POW') FSVA.Set_Trace_AvgCount(30) FSVA.Set_AttnMech(0) FSVA.Set_ResBW(100)
########################################################## ### User Entry ########################################################## FSW_IP = '192.168.1.109' MeasTim = 1e-3 Freq = 28e9 ########################################################## ### Code Overhead ########################################################## from rssd.FSW_Common import VSA from datetime import datetime from rssd.FileIO import FileIO OFile = FileIO().makeFile(__file__) FSW = VSA().jav_Open(FSW_IP,OFile) #Create FSW Object ########################################################## ### Code Start ########################################################## FSW.jav_Reset() FSW.Set_Freq(Freq) FSW.Init_ACLR() #FSW ACLR Channel FSW.Set_Trace_Detector('RMS') FSW.Set_ACLR_CHBW(95e6) FSW.Set_ACLR_AdjBW(95e6) FSW.Set_ACLR_AdjSpace(100e6) #FSW.Set_ResBW(500e3) #FSW.Set_DisplayUpdate("OFF") FSW.Set_SweepCont(0)