def __init__(self, name, address): Instrument.__init__(self, name, tags=['physical']) self._address = address self._visainstrument = visa.instrument(self._address) self.min_freq = self.get_MIN_frequency() self.max_freq = self.get_MAX_frequency() self.min_ampl = self.get_MIN_amplitude() self.max_ampl = self.get_MAX_amplitude() self.min_offs = self.get_MIN_offset() self.max_offs = self.get_MAX_offset() self.set_default() #reset self.add_function('set_default') self.add_function('get_frequency') self.add_function('set_frequency') self.add_function('get_function') self.add_function('set_function') self.add_function('get_amplitude') self.add_function('set_amplitude') self.add_function('get_output') self.add_function('set_output') self.add_function('get_offset') self.add_function('set_offset') self.add_function('get_voltage_units') self.add_function('set_voltage_units') self.add_function('get_output_load') self.add_function('set_output_load')
def __init__(self, name, address, reset = False): ''' Initializes the HP 3245A source, and communicates with the wrapper. Input: name (string) : name of the instrument address (string) : GPIB address reset (bool) : resets to default values Output: None ''' # Initialize wrapper functions logging.info(__name__ + ' : Initializing instrument HP_3245A') Instrument.__init__(self, name, tags=['physical']) self._address = address self._visainstrument = visa.instrument(self._address) # Implement parameters self.add_parameter("current", type=float, units='A', flags=Instrument.FLAG_GETSET) self.add_parameter("voltage", type=float, units='V', flags=Instrument.FLAG_GETSET) self.add_function('reset') self.add_function('clear_memory') self.add_function('set_channel') self.add_function('set_terminal') self.add_function('set_output_type') self.add_function('set_impedance') self.add_function('set_resolution') self.add_function('set_autorange') #self.add_function('set_current') #self.add_function('set_voltage') self.reset()
def __init__(self, name, address, reset=False): ''' Initializes the Tektronix_PWS4205, and communicates with the wrapper. Input: name (string) : name of the instrument address (string) : GPIB or USB address reset (bool) : resets to default values, default=False ''' logging.info(__name__ + ' : Initializing instrument Tektronix_PWS4205') Instrument.__init__(self, name, tags=['physical']) # Add some global constants self._address = address self._visainstrument = visa.instrument(self._address) self._name = name self.add_parameter('voltage', flags=Instrument.FLAG_GETSET, units='V', minval=0, maxval=20, type=float) self.add_parameter('setvoltage', flags=Instrument.FLAG_GET, units='V', minval=0, maxval=20, type=float) self.add_parameter('current', flags=Instrument.FLAG_GETSET, units='A', minval=0, maxval=5, type=float) self.add_parameter('setcurrent', flags=Instrument.FLAG_GET, units='A', minval=0, maxval=5, type=float) self.add_parameter('status', flags=Instrument.FLAG_GETSET, type=bool) self.add_function('reset') self.add_function('on') self.add_function('off') self.add_function('ramp_current') # self.add_function('exec_tsl_script') # self.add_function('exec_tsl_script_with_return') # self.add_function('get_tsl_script_return') #self.add_function ('get_all') #self._visainstrument.write('beeper.beep(0.5,1000)') if (reset): self.reset() else: self.get_all()
def __init__(self, name, address, model='Anritsu'): ''' Initializes the Anritsu_MG37022, and communicates with the wrapper. Input: name (string) : name of the instrument address (string) : GPIB address ''' logging.info(__name__ + ' : Initializing instrument') Instrument.__init__(self, name, tags=['physical']) self._address = address self._model = model self._visainstrument = visa.instrument(self._address) self._slope = None #set _slope to True if frequency dependent power compensation is requested sleep(1) # Implement parameters self.add_parameter('frequency', type=float, flags=Instrument.FLAG_GETSET, minval=0, maxval=20e9, units='Hz', tags=['sweep']) if ("MG3692C" not in self.ask("*IDN?").split(",")): self.add_parameter('phase_offset', type=float, flags=Instrument.FLAG_GETSET, minval=-360, maxval=360, units='deg') self.add_parameter('slope', type=float, flags=Instrument.FLAG_GETSET, minval=0, maxval=100, units='dB@10GHz') self.add_parameter( 'power', type=float, flags=Instrument.FLAG_GETSET, minval=-130, maxval=29, #29dBm possible, this is security JB units='dBm', tags=['sweep']) self.add_parameter('status', type=bool, flags=Instrument.FLAG_GETSET) self.add_parameter('high_power', type=bool, flags=Instrument.FLAG_GETSET) # Implement functions self.add_function('get_all') self.get_all()
def __init__(self, name, address, reset=False): ''' Initializes the Keysight_E8267D, and communicates with the wrapper. Input: name (string) : name of the instrument address (string) : GPIB address reset (bool) : resets to default values, default=False ''' logging.info(__name__ + ' : Initializing instrument Keysight_E8267D') Instrument.__init__(self, name, tags=['physical']) # Add some global constants self._address = address self._visainstrument = visa.instrument(self._address) self.add_parameter('power', flags=Instrument.FLAG_GETSET, units='dBm', minval=-135, maxval=25, type=float) self.add_parameter('phase', flags=Instrument.FLAG_GETSET, units='rad', minval=-numpy.pi, maxval=numpy.pi, type=float) self.add_parameter('frequency', flags=Instrument.FLAG_GETSET, units='Hz', minval=1e5, maxval=13e9, type=float) self.add_parameter('status', flags=Instrument.FLAG_GETSET, type=bool) self.add_function('reset') self.add_function('get_all') if (reset): self.reset() else: self.get_all() print( 'this is a copy of the Agilent E8257D driver, thourough testing of this driver in combination with the Keysight E8267D has NOT been done! proceed with caution!' ) print( 'The max. output power and the frequency range depend on the order option of the Keysight E8267D! ' )
def __init__(self, name, address, reset=False): ''' Initializes the HP_81110A, and communicates with the wrapper. Input: name (string) : name of the instrument address (string) : GPIB address reset (bool) : resets to default values, default=false Output: None ''' Instrument.__init__(self, name, tags=['physical']) self._address = address self._visainstrument = visa.instrument(self._address) self._channels = self._get_number_of_channels() self.add_parameter('delay', type=float, flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, channels=(1, self._channels), minval=0.0, maxval=999, units='sec',channel_prefix='ch%d_') self.add_parameter('width', type=float, flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, channels=(1, self._channels), minval=-6.25e-9, maxval=999.5, units='sec',channel_prefix='ch%d_') self.add_parameter('high', type=float, flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, channels=(1, self._channels), minval=-9.90, maxval=10.0, units='Volts',channel_prefix='ch%d_') self.add_parameter('low', type=float, flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, channels=(1, self._channels), minval=-10.0, maxval=9.90, units='Volts',channel_prefix='ch%d_') self.add_parameter('status', type=str, channels=(1, self._channels), flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET,channel_prefix='ch%d_') self.add_parameter('add_channels', type=str, flags=Instrument.FLAG_GETSET)# | Instrument.FLAG_GET_AFTER_SET) self.add_parameter('display', type=str, flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET) self.add_parameter('frequency', type=float, flags=Instrument.FLAG_GETSET, units = 'Hz') self.add_function('reset') self.add_function('get_all') self.add_function('set_mode_triggered') self.add_function('set_mode_continuous') self.add_function('set_mode_gated') if reset: self.reset() else: self.get_all()
def __init__(self, name, address): """ Initializes VISA communication with the instrument Keithley 2636A. Parameters ---------- name: string Name of the instrument (driver). address: string IP address for the communication with the instrument. Returns ------- None Examples -------- >>> import qkit QKIT configuration initialized -> available as qkit.cfg[...] >>> qkit.start() Starting QKIT framework ... -> qkit.core.startup Loading module ... S10_logging.py Loading module ... S12_lockfile.py Loading module ... S14_setup_directories.py Loading module ... S20_check_for_updates.py Loading module ... S25_info_service.py Loading module ... S30_qkit_start.py Loading module ... S65_load_RI_service.py Loading module ... S70_load_visa.py Loading module ... S80_load_file_service.py Loading module ... S85_init_measurement.py Loading module ... S98_started.py Loading module ... S99_init_user.py >>> ITC503 = qkit.instruments.create('ITC503', 'Oxford_ITC503', address='ASRL1::INSTR') """ self.__name__ = __name__ # Start VISA communication logging.info( __name__ + ': Initializing instrument Oxford ITC 503 temperature control') Instrument.__init__(self, name, tags=['physical']) self._address = address self._visainstrument = visa.instrument(self._address) self._visainstrument.read_termination = '\r'
def __init__(self, name, address, reset=False): ''' Initializes the Agilent_E8257D, and communicates with the wrapper. Input: name (string) : name of the instrument address (string) : GPIB address reset (bool) : resets to default values, default=False ''' logging.info(__name__ + ' : Initializing instrument Agilent_E8257D') Instrument.__init__(self, name, tags=['physical']) # Add some global constants self._address = address self._visainstrument = visa.instrument(self._address) self.add_parameter('power', flags=Instrument.FLAG_GETSET, units='dBm', minval=-135, maxval=16, type=float) self.add_parameter('phase', flags=Instrument.FLAG_GETSET, units='rad', minval=-numpy.pi, maxval=numpy.pi, type=float) self.add_parameter('frequency', flags=Instrument.FLAG_GETSET, units='Hz', minval=1e5, maxval=40e9, type=float) self.add_parameter('status', flags=Instrument.FLAG_GETSET, type=bool) self.add_function('reset') self.add_function('get_all') if (reset): self.reset() else: self.get_all()
def __init__(self, name, address, reset=False): """ creates the "driver object" of the EA_PS9360 current source :param name: name of the device in qkit :param address: "TCPIP0::10.22.197.93::5028::SOCKET" :param reset: bool device reset """ self.__name__ = __name__ # Start VISA communication logging.info(__name__ + ': Initializing instrument EA_PS900') Instrument.__init__(self, name, tags=['physical']) self._address = address self._visainstrument = visa.instrument(self._address, read_termination='\n', write_termination='\n') self.add_parameter('bias_voltage', type=float, flags=Instrument.FLAG_GETSET) self.add_parameter('bias_current', type=float, flags=Instrument.FLAG_GETSET) self.add_parameter('power', type=float, flags=Instrument.FLAG_GETSET) self.add_parameter('output', type=bool, flags=Instrument.FLAG_GETSET) self.add_parameter('measure_voltage', type=float, flags=Instrument.FLAG_GET) self.add_parameter('measure_current', type=float, flags=Instrument.FLAG_GET) self.add_function('set_remote_control') self.add_function('reset') self.add_function('ramp_voltage') self.add_function('ramp_current') if reset: self.reset() else: self.set_remote_control(True)
def __init__(self, name, address, reset=False): ''' Initializes the Keysight_N5173B, and communicates with the wrapper. Input: name (string) : name of the instrument address (string) : GPIB address reset (bool) : resets to default values, default=False ''' logging.info(__name__ + ' : Initializing instrument Keysight_N5173B') Instrument.__init__(self, name, tags=['physical']) self._address = address self._visainstrument = visa.instrument(self._address) # Implement parameters self.add_parameter('power', flags=Instrument.FLAG_GETSET, units='dBm', minval=-20, maxval=30, type=float) #self.add_parameter('phase', # flags=Instrument.FLAG_GETSET, units='rad', minval=-numpy.pi, maxval=numpy.pi, type=types.FloatType) self.add_parameter('frequency', flags=Instrument.FLAG_GETSET, units='Hz', minval=9e3, maxval=20e9, type=float) self.add_parameter('status', flags=Instrument.FLAG_GETSET, type=bool) self.add_function('reset') self.add_function('get_all') if (reset): self.reset() else: self.get_all()
def __init__(self, name, address, reset=False): """ Initializes VISA communication with the instrument Yokogawa GS820. Parameters ---------- name: string Name of the instrument (driver). address: string Serial address for the communication with the instrument. reset: bool, optional Resets the instrument to default conditions. Default is False. Returns ------- None Examples -------- >>> import qkit QKIT configuration initialized -> available as qkit.cfg[...] >>> qkit.start() Starting QKIT framework ... -> qkit.core.startup Loading module ... S10_logging.py Loading module ... S12_lockfile.py Loading module ... S14_setup_directories.py Loading module ... S20_check_for_updates.py Loading module ... S25_info_service.py Loading module ... S30_qkit_start.py Loading module ... S65_load_RI_service.py Loading module ... S70_load_visa.py Loading module ... S80_load_file_service.py Loading module ... S85_init_measurement.py Loading module ... S98_started.py Loading module ... S99_init_user.py >>> TM = qkit.instruments.create('TM', 'Teslameter_FM302', address='ASRL1::INSTR') Initialized the file info database (qkit.fid) in 0.000 seconds. """ self.__name__ = __name__ # Start VISA communication Instrument.__init__(self, name, tags=['physical']) self._address = address self._visainstrument = visa.instrument(self._address) # Set termination characters (necessary for Ethernet communication) if LooseVersion( visa.__version__) < LooseVersion("1.5.0"): # pyvisa 1.4 self._visainstrument.term_chars = '\n' else: # pyvisa 1.5 self._visainstrument.write_termination = '\n' self._visainstrument.read_termination = '\r\n' if reset: self.reset() self.add_parameter('coupling', type=int, flags=Instrument.FLAG_GETSET, minval=0, maxval=1) self.add_parameter('filter', type=int, flags=Instrument.FLAG_GETSET, minval=1, maxval=64) self.add_parameter('integration_time', type=float, flags=Instrument.FLAG_GETSET, minval=100e-3, maxval=5, unit='s') self.add_parameter('gain', type=int, flags=Instrument.FLAG_GETSET, minval=1, maxval=100) self.add_parameter('relative', type=float, flags=Instrument.FLAG_GETSET, minval=-70, maxval=70, units='T') self.add_parameter('zero', type=int, flags=Instrument.FLAG_GETSET, minval=-39320, maxval=26213) self.add_parameter('value', type=float, flags=Instrument.FLAG_GET, minval=-1., maxval=1., units='T') self.add_function('reset')
def __init__(self, name, address, channel_index=1): ''' Initializes Input: name (string) : name of the instrument address (string) : GPIB address ''' logging.info(__name__ + ' : Initializing instrument') Instrument.__init__(self, name, tags=['physical']) self._address = address self._visainstrument = visa.instrument(self._address) if qkit.visa.qkit_visa_version > 1: # we have to define the read termination chars manually for the newer version idn = self._visainstrument.query('*IDN?') self._visainstrument.read_termination = idn[len(idn.strip()):] self._zerospan = False self._freqpoints = 0 self._ci = channel_index self._start = 0 self._stop = 0 self._nop = 0 # Implement parameters self.add_parameter('nop', type=int, flags=Instrument.FLAG_GETSET, minval=2, maxval=1601, tags=['sweep']) self.add_parameter('bandwidth', type=float, flags=Instrument.FLAG_GETSET, minval=0, maxval=1e9, units='Hz', tags=['sweep']) self.add_parameter('averages', type=int, flags=Instrument.FLAG_GETSET, minval=1, maxval=1024, tags=['sweep']) self.add_parameter('Average', type=bool, flags=Instrument.FLAG_GETSET) self.add_parameter('centerfreq', type=float, flags=Instrument.FLAG_GETSET, minval=0, maxval=8.5e9, units='Hz', tags=['sweep']) self.add_parameter('startfreq', type=float, flags=Instrument.FLAG_GETSET, minval=0, maxval=8.5e9, units='Hz', tags=['sweep']) self.add_parameter('stopfreq', type=float, flags=Instrument.FLAG_GETSET, minval=0, maxval=8.5e9, units='Hz', tags=['sweep']) self.add_parameter('span', type=float, flags=Instrument.FLAG_GETSET, minval=0, maxval=8.5e9, units='Hz', tags=['sweep']) self.add_parameter('power', type=float, flags=Instrument.FLAG_GETSET, minval=-55, maxval=10, units='dBm', tags=['sweep']) self.add_parameter('zerospan', type=bool, flags=Instrument.FLAG_GETSET) self.add_parameter('channel_index', type=int, flags=Instrument.FLAG_GETSET) self.add_parameter('edel', type=float, flags=Instrument.FLAG_GETSET, minval=0, maxval=1e-3, units='s', tags=['sweep']) self.add_parameter('sweeptime', type=float, flags=Instrument.FLAG_GET, minval=0, maxval=1e3, units='s', tags=['sweep']) self.add_parameter('sweeptime_averages', type=float, flags=Instrument.FLAG_GET, units='s', tags=['sweep']) self.add_parameter('sweep_mode', type=str, flags=Instrument.FLAG_GETSET, tags=['sweep']) #Triggering Stuff self.add_parameter('trigger_source', type=str, flags=Instrument.FLAG_GETSET) # Implement functions self.add_function('get_freqpoints') self.add_function('get_tracedata') self.add_function('init') self.add_function('avg_clear') #self.add_function('avg_status') self.add_function('def_trig') self.add_function('get_sweeptime') self.add_function('get_sweeptime_averages') self.add_function('ready') self.add_function('start_measurement') self.get_all()
def __init__(self, name, address, channel_index = 1): ''' Initializes Input: name (string) : name of the instrument address (string) : GPIB address ''' logging.info(__name__ + ' : Initializing instrument') Instrument.__init__(self, name, tags=['physical']) self._address = address self._visainstrument = visa.instrument(self._address) self._zerospan = False self._freqpoints = 0 self._ci = channel_index self._pi = 2 # port_index, similar to self._ci self._start = 0 self._stop = 0 self._nop = 0 # Implement parameters self.add_parameter('nop', type=int, flags=Instrument.FLAG_GETSET, minval=2, maxval=20001, tags=['sweep']) self.add_parameter('bandwidth', type=float, flags=Instrument.FLAG_GETSET, minval=0, maxval=1e9, units='Hz', tags=['sweep']) self.add_parameter('averages', type=int, flags=Instrument.FLAG_GETSET, minval=1, maxval=1024, tags=['sweep']) self.add_parameter('Average', type=bool, flags=Instrument.FLAG_GETSET) self.add_parameter('centerfreq', type=float, flags=Instrument.FLAG_GETSET, minval=0, maxval=20e9, units='Hz', tags=['sweep']) self.add_parameter('cwfreq', type=float, flags=Instrument.FLAG_GETSET, minval=0, maxval=20e9, units='Hz', tags=['sweep']) self.add_parameter('startfreq', type=float, flags=Instrument.FLAG_GETSET, minval=0, maxval=20e9, units='Hz', tags=['sweep']) self.add_parameter('stopfreq', type=float, flags=Instrument.FLAG_GETSET, minval=0, maxval=20e9, units='Hz', tags=['sweep']) self.add_parameter('span', type=float, flags=Instrument.FLAG_GETSET, minval=0, maxval=20e9, units='Hz', tags=['sweep']) self.add_parameter('power', type=float, flags=Instrument.FLAG_GETSET, minval=-85, maxval=10, units='dBm', tags=['sweep']) self.add_parameter('startpower', type=float, flags=Instrument.FLAG_GETSET, minval=-85, maxval=10, units='dBm') self.add_parameter('stoppower', type=float, flags=Instrument.FLAG_GETSET, minval=-85, maxval=10, units='dBm') self.add_parameter('cw', type=bool, flags=Instrument.FLAG_GETSET) self.add_parameter('zerospan', type=bool, flags=Instrument.FLAG_GETSET) self.add_parameter('channel_index', type=int, flags=Instrument.FLAG_GETSET) self.add_parameter('sweeptime', type=float, #added by MW flags=Instrument.FLAG_GET, minval=0, maxval=1e3, units='s', tags=['sweep']) self.add_parameter('sweeptime_averages', type=float, #JB flags=Instrument.FLAG_GET, minval=0, maxval=1e3, units='s', tags=['sweep']) self.add_parameter('edel', type=float, # legacy name for parameter. This corresponds to the VNA's port extension values. flags=Instrument.FLAG_GETSET, minval=-10, maxval=10, units='s', tags=['sweep'], channels=(1, self._pi), channel_prefix = 'port%d_') # the channel option for qtlab's Instument class is used here to easily address the two VNA ports self.add_parameter('edel_status', type=bool, # legacy name for parameter. This corresponds to the VNA's port extension values. flags=Instrument.FLAG_GETSET) self.add_parameter('sweep_mode', type=str, #JDB This parameter switches on/off hold. The hold function below does the same job, this is just for code compatibility to the agilent and anritsu drivers. flags=Instrument.FLAG_GETSET,tags=['sweep']) self.add_parameter('sweep_type', type=str, flags=Instrument.FLAG_GETSET,tags=['sweep']) self.add_parameter('active_trace', type=int, flags=Instrument.FLAG_GETSET) #Triggering Stuff self.add_parameter('trigger_source', type=str, flags=Instrument.FLAG_GETSET) # Implement functions self.add_function('get_freqpoints') self.add_function('get_tracedata') self.add_function('init') self.add_function('avg_clear') self.add_function('avg_status') self.add_function('def_trig') self.add_function('get_hold') self.add_function('hold') self.add_function('get_sweeptime') self.add_function('get_sweeptime_averages') self.add_function('pre_measurement') self.add_function('start_measurement') self.add_function('ready') self.add_function('post_measurement') self.get_all()
def __init__(self, name, address, reset=False, clock=1e9, numpoints=1000): ''' Initializes the AWG520. Input: name (string) : name of the instrument address (string) : GPIB address reset (bool) : resets to default values, default=false numpoints (int) : sets the number of datapoints Output: None ''' logging.debug(__name__ + ' : Initializing instrument') Instrument.__init__(self, name, tags=['physical']) self._address = address self._visainstrument = visa.instrument(self._address) self._values = {} self._values['files'] = {} self._clock = clock self._numpoints = numpoints # Add parameters self.add_parameter('trigger_mode', type=str, flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET) self.add_parameter('trigger_impedance', type=float, flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, minval=49, maxval=2e3, units='Ohm') self.add_parameter('trigger_level', type=float, flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, minval=-5, maxval=5, units='Volts') self.add_parameter('clock', type=float, flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, minval=1e6, maxval=1e9, units='Hz') self.add_parameter('numpoints', type=int, flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, minval=100, maxval=1e9, units='Int') self.add_parameter('filename', type=str, flags=Instrument.FLAG_SET, channels=(1, 2), channel_prefix='ch%d_') self.add_parameter('amplitude', type=float, flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, channels=(1, 2), minval=0, maxval=2, units='Volts', channel_prefix='ch%d_') self.add_parameter('offset', type=float, flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, channels=(1, 2), minval=-2, maxval=2, units='Volts', channel_prefix='ch%d_') self.add_parameter('marker1_low', type=float, flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, channels=(1, 2), minval=-2, maxval=2, units='Volts', channel_prefix='ch%d_') self.add_parameter('marker1_high', type=float, flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, channels=(1, 2), minval=-2, maxval=2, units='Volts', channel_prefix='ch%d_') self.add_parameter('marker2_low', type=float, flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, channels=(1, 2), minval=-2, maxval=2, units='Volts', channel_prefix='ch%d_') self.add_parameter('marker2_high', type=float, flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, channels=(1, 2), minval=-2, maxval=2, units='Volts', channel_prefix='ch%d_') self.add_parameter('status', type=bool, flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, channels=(1, 2), channel_prefix='ch%d_') # Add functions self.add_function('reset') self.add_function('get_all') self.add_function('clear_waveforms') self.add_function('set_trigger_mode_on') self.add_function('set_trigger_mode_off') self.add_function('set_trigger_impedance_1e3') self.add_function('set_trigger_impedance_50') if reset: self.reset() else: self.get_all()
def __init__(self, name, address, channel_index = 1): ''' Initializes Input: name (string) : name of the instrument address (string) : GPIB address ''' logging.info(__name__ + ' : Initializing instrument') Instrument.__init__(self, name, tags=['physical']) self._address = address self._visainstrument = visa.instrument(self._address) # Implement parameters self.add_parameter('averages', type=int, flags=Instrument.FLAG_GETSET, minval=0, maxval=32767, tags=['sweep']) self.add_parameter('centerfreq', type=float, flags=Instrument.FLAG_GETSET, minval=0, maxval=26.5e9, tags=['sweep']) self.add_parameter('nop', type=float, flags=Instrument.FLAG_GETSET, minval=155, maxval=30001, tags=['sweep']) self.add_parameter('freqspan', type=float, flags=Instrument.FLAG_GETSET,tags=['sweep']) self.add_parameter('powerunit', type=str, flags=Instrument.FLAG_GETSET,tags=['sweep']) self.add_parameter('startfreq', type=float, flags=Instrument.FLAG_GETSET,tags=['sweep']) self.add_parameter('stopfreq', type=float, flags=Instrument.FLAG_GETSET,tags=['sweep']) self.add_parameter('sweeptime', type=float, flags=Instrument.FLAG_GETSET,tags=['sweep']) self.add_parameter('resolutionBW', type=float, flags=Instrument.FLAG_GETSET,tags=['sweep']) self.add_parameter('videoBW', type=float, flags=Instrument.FLAG_GETSET,tags=['sweep']) self.add_parameter('sweeptime_averages', type=float, flags=Instrument.FLAG_GET,tags=['sweep']) self.add_parameter('sweeptime_auto', type=float, flags=Instrument.FLAG_GETSET,tags=['sweep']) self.add_parameter('freqpoints', type=float, flags=Instrument.FLAG_GET,tags=['sweep']) self.add_parameter('active_traces', type=int, flags=Instrument.FLAG_GET) # Implement functions self.add_function('set_continuous_sweep_mode') #self.add_function('set_freq_center') #self.add_function('set_freq_span') self.add_function('set_marker') self.add_function('start_measurement') self.add_function('ready') self.add_function('set_powerunit') self.add_function('get_marker_level') self.add_function('get_trace_name') self.add_function('get_y_unit') #self.add_function('avg_clear') #self.add_function('avg_status') self.get_all()
def __init__(self, name, address, channel_index=1): ''' Initializes Input: name (string) : name of the instrument address (string) : GPIB address ''' logging.info(__name__ + ' : Initializing instrument') Instrument.__init__(self, name, tags=['physical']) self._address = address self._visainstrument = visa.instrument(self._address) self._zerospan = False self._freqpoints = 0 self._ci = channel_index self._start = 0 self._stop = 0 self._nop = 0 # Implement parameters self.add_parameter('nop', type=int, flags=Instrument.FLAG_GETSET, minval=1, maxval=25000, tags=['sweep']) self.add_parameter('bandwidth', type=float, flags=Instrument.FLAG_GETSET, minval=0, maxval=1e9, units='Hz', tags=['sweep']) self.add_parameter('averages', type=int, flags=Instrument.FLAG_GETSET, minval=1, maxval=1024, tags=['sweep']) self.add_parameter('Average', type=bool, flags=Instrument.FLAG_GETSET) self.add_parameter('centerfreq', type=float, flags=Instrument.FLAG_GETSET, minval=0, maxval=20e9, units='Hz', tags=['sweep']) self.add_parameter('cwfreq', type=float, flags=Instrument.FLAG_GETSET, minval=0, maxval=20e9, units='Hz', tags=['sweep']) self.add_parameter('startfreq', type=float, flags=Instrument.FLAG_GETSET, minval=0, maxval=20e9, units='Hz', tags=['sweep']) self.add_parameter('stopfreq', type=float, flags=Instrument.FLAG_GETSET, minval=0, maxval=20e9, units='Hz', tags=['sweep']) self.add_parameter('span', type=float, flags=Instrument.FLAG_GETSET, minval=0, maxval=20e9, units='Hz', tags=['sweep']) self.add_parameter('power', type=float, flags=Instrument.FLAG_GETSET, minval=-30, maxval=15, units='dBm', tags=['sweep']) self.add_parameter('cw', type=bool, flags=Instrument.FLAG_GETSET) self.add_parameter('zerospan', type=bool, flags=Instrument.FLAG_GETSET) self.add_parameter('channel_index', type=int, flags=Instrument.FLAG_GETSET) self.add_parameter('source_attenuation', type=int, flags=Instrument.FLAG_GETSET, channels=(1, 2), minval=0, maxval=60, units='dB', tags=['sweep']) self.add_parameter('source_power_start', type=float, flags=Instrument.FLAG_GETSET, channels=(1, 2), minval=-2.9e1, maxval=3e1, units='dBm', tags=['sweep']) self.add_parameter('source_power_stop', type=float, flags=Instrument.FLAG_GETSET, channels=(1, 2), minval=-2.9e1, maxval=3e1, units='dBm', tags=['sweep']) self.add_parameter('calibration_state', type=bool, flags=Instrument.FLAG_GETSET) self.add_parameter('sweep_type', type=str, flags=Instrument.FLAG_GETSET, tags=['sweep']) self.add_parameter('power_nop', type=int, flags=Instrument.FLAG_GETSET, channels=(1, 2), minval=0, maxval=60, tags=['sweep']) self.add_parameter('avg_type', type=str, flags=Instrument.FLAG_GETSET, tags=['sweep']) self.add_parameter( 'edel', type=float, #added by MW flags=Instrument.FLAG_GETSET, minval=-1, maxval=1, units='s', tags=['sweep']) self.add_parameter( 'sweeptime', type=float, #JB flags=Instrument.FLAG_GET, minval=0, maxval=1e-3, units='s', tags=['sweep']) self.add_parameter( 'sweeptime_averages', type=float, #JB flags=Instrument.FLAG_GET, minval=0, maxval=1e-3, units='s', tags=['sweep']) self.add_parameter('sweep_mode', type=str, flags=Instrument.FLAG_GETSET, tags=['sweep']) #Triggering Stuff self.add_parameter('trigger_source', type=str, flags=Instrument.FLAG_GETSET) # Implement functions self.add_function('get_freqpoints') self.add_function('get_tracedata') self.add_function('init') self.add_function('returnToLocal') self.add_function('set_edel_auto') self.add_function('pre_measurement') self.add_function('start_measurement') self.add_function('ready') self.add_function('post_measurement') self.add_function('avg_clear') self.add_function('avg_status') #self._oldspan = self.get_span() #self._oldnop = self.get_nop() #if self._oldspan==0.002: # self.set_zerospan(True) self.get_all()
def __init__(self, name, address, comp_mode=False, channel_index=1): ''' Initializes Input: name (string) : name of the instrument address (string) : GPIB address ''' logging.info(__name__ + ' : Initializing instrument') Instrument.__init__(self, name, tags=['physical']) self._address = address self._comp_mode = comp_mode self._visainstrument = visa.instrument(self._address) # Implement parameters self.add_parameter('centerfreq', type=float, flags=Instrument.FLAG_GETSET, minval=0, maxval=26.5e9, tags=['sweep']) self.add_parameter('nop', type=float, flags=Instrument.FLAG_GETSET, minval=155, maxval=30001, tags=['sweep']) self.add_parameter('freqspan', type=float, flags=Instrument.FLAG_GETSET, tags=['sweep']) self.add_parameter('powerunit', type=str, flags=Instrument.FLAG_GETSET, tags=['sweep']) self.add_parameter('startfreq', type=float, flags=Instrument.FLAG_GETSET, tags=['sweep']) self.add_parameter('stopfreq', type=float, flags=Instrument.FLAG_GETSET, tags=['sweep']) self.add_parameter('sweeptime', type=float, flags=Instrument.FLAG_GET, tags=['sweep']) self.add_parameter('resolutionBW', type=float, flags=Instrument.FLAG_GETSET, tags=['sweep']) self.add_parameter('videoBW', type=float, flags=Instrument.FLAG_GETSET, tags=['sweep'])
def __init__(self, name, address, reset=False): ''' Initializes the Yokogawa GS200, and communicates with the wrapper. Input: name (string) : name of the instrument address (string) : GPIB address reset (bool) : resets to default values Output: None ''' # Initialize wrapper functions logging.info(__name__ + ' : Initializing instrument Yokogawa_GS200') Instrument.__init__(self, name, tags=['physical']) # Add some global constants self._address = address self._visainstrument = visa.instrument(self._address) # Set termination characters (nessecarry for Ethernet communication) if LooseVersion( visa.__version__) < LooseVersion("1.5.0"): # pyvisa 1.4 self._visainstrument.term_chars = '' else: # pyvisa 1.8 self._visainstrument.read_termination = '' self._visainstrument.write_termination = '' # Add parameters to wrapper # self.add_parameter('source_function', # flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, # type=str, units='') # # self.add_parameter('operation_mode', # flags=Instrument.FLAG_SET, # type=str, units='') self.add_parameter('source_mode', flags=Instrument.FLAG_GETSET, type=str, units='') # # self.add_parameter('source_range', # flags=Instrument.FLAG_GETSET , # units='', type=str) # self.add_parameter('output', flags=Instrument.FLAG_GETSET, units='', type=str) self.add_parameter('level', flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, type=float, units='') # self.add_parameter('voltage_protection', # flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, # type=float, units='V') # # self.add_parameter('current_protection', # flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, # type=float, units='A') # # self.add_parameter('4W', # flags=Instrument.FLAG_GETSET , # units='', type=str) # # self.add_parameter('ramp_wait_time', # flags=Instrument.FLAG_GET, # type=float, units = 's') # Add functions to wrapper self.add_function('reset') self.add_function('get_all') #self.add_function('set_range_auto') #self.add_function('set_defaults') self.add_function('ramp_current') #self.add_function('ramp_ch2_current') if reset: self.reset()
def reconnect(self): self._visainstrument = visa.instrument(self._address)
def __init__(self, name, address): ''' Input: name (string) address (string): VISA address of the device ''' Instrument.__init__(self, name, tags=['physical']) self._address = address self._visainstrument = visa.instrument(self._address) # number of channels self._numchs = 4 # initialize virtual instrument self.add_parameter('points', flags=Instrument.FLAG_GETSET, units='', type=int, minval=16, maxval=524288) self.add_parameter('segments', flags=Instrument.FLAG_GETSET, units='', type=int) self.add_parameter('averages', flags=Instrument.FLAG_GETSET, units='', type=int, minval=1, maxval=4096) self.add_parameter('average_enabled', flags=Instrument.FLAG_GETSET, units='', type=bool) self.add_parameter('samplerate', flags=Instrument.FLAG_GETSET, units='Hz', type=float) self.add_parameter('bandwidth', flags=Instrument.FLAG_GETSET, units='Hz', type=float) self.add_parameter('acqmode', flags=Instrument.FLAG_GET, type=str) self.add_function('acqmode_realtime') self.add_function('acqmode_peakdetect') self.add_function('acqmode_highres') self.add_function('acqmode_segmented') self.add_parameter('refclock', flags=Instrument.FLAG_GETSET, type=bool) self.add_parameter('xoffset', flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, units='s', type=float) self.add_parameter('xrange', flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, units='s', type=float) self.add_parameter('yoffset', flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, units='V', type=float, channels=(1, self._numchs), channel_prefix='ch%d_') self.add_parameter('yrange', flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, units='V', type=float, channels=(1, self._numchs), channel_prefix='ch%d_') self.add_function('reset') self.add_function('preset') self.add_function('clear_status') self.add_function('get_error') self.add_function('message') self.add_function('acq_digitize') self.add_function('acq_run') self.add_function('acq_single') self.add_function('acq_stop') self.add_function('get_triggered') self.add_function('get_done') self.add_function('get_completedpercent') self.add_function('get_averages_acquired') self.add_function('autoscale') self.add_function('get_data_old') self.add_function('get_data') self.add_function('restart_average') self.add_function('get_completed') self.add_function('get_meas_phase') self.add_function('get_meas_vamp') self.add_function('get_meas_vrms') self.add_function('get_meas_frequency') # to do: functions to setup maths on the oscilloscope # to do: histogram functions # to do: marker stuff # to do: measurements # to do: trigger setup functions # initialize physical instrument self._visainstrument.write(':SYST:HEAD OFF') self._visainstrument.write(':SYST:LONG OFF') self._visainstrument.write(':WAV:BYT LSBF') # faster
def __init__(self, name, address, reset=False): ''' Initializes the Yokogawa GS820, and communicates with the wrapper. Input: name (string) : name of the instrument address (string) : GPIB address reset (bool) : resets to default values Output: None ''' # Initialize wrapper functions logging.info(__name__ + ' : Initializing instrument Yokogawa_GS820') Instrument.__init__(self, name, tags=['physical']) # Add some global constants self._address = address self._numchs = 2 self._visainstrument = visa.instrument(self._address) # Add parameters to wrapper self.add_parameter('source_range', flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, channels=(1, self._numchs), channel_prefix='ch%d_', units='', type=str) self.add_parameter('sense_range', flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, channels=(1, self._numchs), channel_prefix='ch%d_', units='', type=str) self.add_parameter('source_mode', flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, channels=(1, self._numchs), channel_prefix='ch%d_', type=str, units='') self.add_parameter('sense_mode', flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, channels=(1, self._numchs), channel_prefix='ch%d_', type=str, units='') self.add_parameter('source_trig', flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, channels=(1, self._numchs), channel_prefix='ch%d_', type=str, units='') self.add_parameter('sense_trig', flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, channels=(1, self._numchs), channel_prefix='ch%d_', type=str, units='') self.add_parameter('source_delay', flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, channels=(1, self._numchs), channel_prefix='ch%d_', type=float, minval=15e-6, maxval=3600, units='s') self.add_parameter('sense_delay', flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, channels=(1, self._numchs), channel_prefix='ch%d_', type=float, minval=15e-6, maxval=3600, units='s') self.add_parameter('sweep_mode', flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, channels=(1, self._numchs), channel_prefix='ch%d_', type=str, units='') self.add_parameter('4W', flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, channels=(1, self._numchs), channel_prefix='ch%d_', type=str, units='') self.add_parameter('level', flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, channels=(1, self._numchs), channel_prefix='ch%d_', type=float, units='') self.add_parameter('value', flags=Instrument.FLAG_GET, channels=(1, self._numchs), channel_prefix='ch%d_', type=float, units='') self.add_parameter('output', flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, channels=(1, self._numchs), channel_prefix='ch%d_', type=str, units='') self.add_parameter('sync', flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, type=str, units='') # Add functions to wrapper self.add_function('reset') self.add_function('get_all') self.add_function('set_range_auto') self.add_function('set_defaults') self.add_function('ramp_ch1_current') self.add_function('ramp_ch2_current') if reset: self.reset() else: self.get_all() self.set_defaults()
def __init__(self, name, address, reset=False): ''' Initializes the Yokogawa GS200, and communicates with the wrapper. Input: name (string) : name of the instrument address (string) : GPIB address reset (bool) : resets to default values Output: None ''' # Initialize wrapper functions logging.info(__name__ + ' : Initializing instrument Yokogawa_GS200') Instrument.__init__(self, name, tags=['physical']) # Add some global constants self._address = address #self._numchs = 1 self.ramp_wait_time = 0.5 self._visainstrument = visa.instrument(self._address) #self._visainstrument.write(':SYST:REM') # Add parameters to wrapper self.add_parameter('operation_mode', flags=Instrument.FLAG_SET, type=str, units='') self.add_parameter('source_mode', flags=Instrument.FLAG_GETSET, type=str, units='') self.add_parameter('source_range', flags=Instrument.FLAG_GETSET , units='', type=str) self.add_parameter('output', flags=Instrument.FLAG_GETSET , units='', type=str) self.add_parameter('level', flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, type=float, units='') self.add_parameter('voltage_protection', flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, type=float, units='V') self.add_parameter('current_protection', flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, type=float, units='A') self.add_parameter('4W', flags=Instrument.FLAG_GETSET , units='', type=str) self.add_parameter('ramp_wait_time', flags=Instrument.FLAG_GET, type=float, units = 's') # Add functions to wrapper self.add_function('reset') self.add_function('get_all') self.add_function('set_defaults') if reset: self.reset() else: self.get_all() self.set_defaults()
def __init__(self, name, address, reset=False, clock=6e9, numpoints=1000, numchannels=2): ''' Initializes the AWG7062. Input: name (string) : name of the instrument address (string) : GPIB address reset (bool) : resets to default values, default=false numpoints (int) : sets the number of datapoints Output: None ''' logging.debug(__name__ + ' : Initializing instrument') Instrument.__init__(self, name, tags=['physical']) self._address = address self._visainstrument = visa.instrument(self._address) self._values = {} self._values['files'] = {} self._clock = clock self._numpoints = numpoints self._numchannels = numchannels # Add parameters self.add_parameter('waveform', type=str, flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, channels=(1, self._numchannels), channel_prefix='ch%d_') self.add_parameter('output', type=float, flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, channels=(1, self._numchannels), channel_prefix='ch%d_') self.add_parameter('wlist', type=str, flags=Instrument.FLAG_GET) self.add_parameter('trigger_mode', type=str, flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET) self.add_parameter('trigger_impedance', type=float, flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, minval=49, maxval=2e3, units='Ohm') self.add_parameter('trigger_level', type=float, flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, minval=-5, maxval=5, units='Volts') self.add_parameter('trigger_source', type=str, flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET) self.add_parameter('clock', type=float, flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, minval=1e6, maxval=6e9, units='Hz') self.add_parameter('clock_source', type=str, flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET) self.add_parameter('numpoints', type=int, flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, minval=100, maxval=1e9, units='Int') self.add_parameter('filename', type=str, flags=Instrument.FLAG_SET, channels=(1, self._numchannels), channel_prefix='ch%d_') self.add_parameter('direct_output', type=bool, flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, channels=(1, self._numchannels), channel_prefix='ch%d_') self.add_parameter('amplitude', type=float, flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, channels=(1, self._numchannels), minval=0, maxval=2, units='Volts', channel_prefix='ch%d_') self.add_parameter('offset', type=float, flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, channels=(1, self._numchannels), minval=-2, maxval=2, units='Volts', channel_prefix='ch%d_') self.add_parameter('marker1_low', type=float, flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, channels=(1, self._numchannels), minval=-2, maxval=2, units='Volts', channel_prefix='ch%d_') self.add_parameter('marker1_high', type=float, flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, channels=(1, self._numchannels), minval=-2, maxval=2, units='Volts', channel_prefix='ch%d_') self.add_parameter('marker2_low', type=float, flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, channels=(1, self._numchannels), minval=-2, maxval=2, units='Volts', channel_prefix='ch%d_') self.add_parameter('marker2_high', type=float, flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, channels=(1, self._numchannels), minval=-2, maxval=2, units='Volts', channel_prefix='ch%d_') self.add_parameter('status', type=bool, flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, channels=(1, self._numchannels), channel_prefix='ch%d_') self.add_parameter('runmode', type=str, flags=Instrument.FLAG_GETSET) self.add_parameter('seq_length', type=int, flags=Instrument.FLAG_GETSET) self.add_parameter('seq_position', type=int, flags=Instrument.FLAG_GET) # Add functions self.add_function('reset') self.add_function('wait') self.add_function('get_all') self.add_function('clear_waveforms') self.add_function('set_trigger_mode') self.add_function('set_sequence_mode') self.add_function('set_trigger_impedance_1e3') self.add_function('set_trigger_impedance_50') self.add_function('get_error') self.add_function('load_settings') self.add_function('save_settings') # sequence manipulation functions (do not display all waveforms in the user interface) self.add_function('wfm_send') self.add_function('wfm_import') self.add_function('get_seq_loop') self.add_function('set_seq_loop') self.add_function('get_seq_goto') self.add_function('set_seq_goto') self.add_function('get_seq_twait') self.add_function('set_seq_twait') self.add_function('wfm_assign') self.add_function('run') self.add_function('wait') self.add_function('force_event') self.add_function('force_trigger') self.add_function('set_seq_jump') self.add_function('read_queue') self.add_function('jump_to') # Make Load/Delete Waveform functions for each channel for ch in range(1, 5): self._add_load_waveform_func(ch) self._add_del_loaded_waveform_func(ch) if reset: self.reset() else: self.get_all()
def __init__(self, name, address, chpair=None, reset=False, numchannels=4): ''' Initializes the AWG WX1284C Input: name (string) : name of the instrument address (string) : GPIB address reset (bool) : resets to default values, default=false chpair (int) : number of channel pair (1 for channels 1&2, 2 for channels 3&4) Output: None ''' logging.debug(__name__ + ' : Initializing instrument at ' + address) Instrument.__init__(self, name, tags=['physical']) self._address = address if visa.qkit_visa_version == 1: self._visainstrument = visa.instrument(self._address, term_chars="\r\n") self._visainstrument.timeout = 2 else: self._visainstrument = visa.instrument(self._address) self._visainstrument.timeout = 2000 self._visainstrument.visalib.set_buffer( self._visainstrument.session, vc.VI_READ_BUF, 4000) self._visainstrument.visalib.set_buffer( self._visainstrument.session, vc.VI_WRITE_BUF, 32000) self._visainstrument.read_termination = '\n' self._visainstrument.write_termination = '\n' #intf_type = self._visainstrument.get_visa_attribute(vc.VI_ATTR_INTF_TYPE) if self._visainstrument.get_visa_attribute( vc.VI_ATTR_INTF_TYPE) in (vc.VI_INTF_USB, vc.VI_INTF_GPIB, vc.VI_INTF_TCPIP): self._visainstrument.set_visa_attribute( vc.VI_ATTR_WR_BUF_OPER_MODE, vc.VI_FLUSH_ON_ACCESS) self._visainstrument.set_visa_attribute( vc.VI_ATTR_RD_BUF_OPER_MODE, vc.VI_FLUSH_ON_ACCESS) if self._visainstrument.get_visa_attribute( vc.VI_ATTR_INTF_TYPE) == vc.VI_INTF_TCPIP: self._visainstrument.set_visa_attribute( vc.VI_ATTR_TERMCHAR_EN, vc.VI_TRUE) self._visainstrument.clear() self._ins_VISA_INSTR = False #(self._visainstrument.resource_class == "INSTR") #check whether we have INSTR or SOCKET type self._values = {} self._values['files'] = {} self._clock = 1e9 if chpair not in [None, 1, 2]: raise ValueError("chpair should be 1, 2 or None.") if chpair and numchannels != 2: raise ValueError("numchannels should be 2.") if chpair is None and numchannels != 4: raise ValueError("numchannels should be 4.") self._numchannels = numchannels self._choff = 0 if chpair == 2: self._choff = 2 if numchannels == 4: self.add_parameter('runmode', type=str, flags=Instrument.FLAG_GETSET, channels=(1, 2), channel_prefix='p%d_') else: self.add_parameter('runmode', type=str, flags=Instrument.FLAG_GETSET) self.add_parameter('output', type=bool, flags=Instrument.FLAG_GETSET, channels=(1, self._numchannels), channel_prefix='ch%d_') self.add_parameter('marker_output', type=bool, flags=Instrument.FLAG_GETSET, channels=(1, self._numchannels), channel_prefix='ch%d_') self.add_parameter( 'trigger_impedance', type=float, #changed, checked in manual flags=Instrument.FLAG_GETSET, minval=50, maxval=10e3, units='Ohm') self.add_parameter('trigger_level', type=float, flags=Instrument.FLAG_GETSET, minval=-5, maxval=5, units='Volts') self.add_parameter('clock', type=float, flags=Instrument.FLAG_GETSET, minval=1e6, maxval=1.25e9, units='Hz') self.add_parameter('reference_source', type=str, flags=Instrument.FLAG_GETSET) self.add_parameter('reference_source_freq', type=float, flags=Instrument.FLAG_GETSET, minval=10e6, maxval=100e6, units='Hz') self.add_parameter('common_clock', type=bool, flags=Instrument.FLAG_GETSET) self.add_parameter('amplitude', type=float, flags=Instrument.FLAG_GETSET, channels=(1, self._numchannels), minval=0, maxval=2, units='Volts', channel_prefix='ch%d_') self.add_parameter('offset', type=float, flags=Instrument.FLAG_GETSET, channels=(1, self._numchannels), minval=-2, maxval=2, units='Volts', channel_prefix='ch%d_') self.add_parameter('marker_high', type=float, flags=Instrument.FLAG_GETSET, channels=(1, self._numchannels), minval=-2, maxval=2, units='Volts', channel_prefix='ch%d_') self.add_parameter('status', type=bool, flags=Instrument.FLAG_GETSET, channels=(1, self._numchannels), channel_prefix='ch%d_') self.add_parameter('sync_position', type=float, flags=Instrument.FLAG_GETSET, units='s') if numchannels == 4: self.add_parameter('trigger_mode', type=str, flags=Instrument.FLAG_GETSET, channels=(1, 2), channel_prefix='p%d_') self.add_parameter('trigger_delay', type=float, flags=Instrument.FLAG_GETSET, channels=(1, 2), channel_prefix='p%d_') self.add_parameter('sequence_mode', type=str, flags=Instrument.FLAG_GETSET, channels=(1, 2), channel_prefix='p%d_') self.add_parameter('trigger_source', type=str, flags=Instrument.FLAG_GETSET, channels=(1, 2), channel_prefix='p%d_') self.add_parameter('trigger_time', type=float, flags=Instrument.FLAG_GETSET, channels=(1, 2), channel_prefix='p%d_') self.add_parameter('sync_output', type=bool, flags=Instrument.FLAG_GETSET, channels=(1, 2), channel_prefix='p%d_') self.add_parameter('trigger_slope', type=str, flags=Instrument.FLAG_GETSET, channels=(1, 2), channel_prefix='p%d_') else: self.add_parameter('trigger_mode', type=str, flags=Instrument.FLAG_GETSET) self.add_parameter('trigger_delay', type=float, flags=Instrument.FLAG_GETSET) self.add_parameter('sequence_mode', type=str, flags=Instrument.FLAG_GETSET) self.add_parameter('trigger_source', type=str, flags=Instrument.FLAG_GETSET) self.add_parameter('trigger_time', type=float, flags=Instrument.FLAG_GETSET) self.add_parameter('sync_output', type=bool, flags=Instrument.FLAG_GETSET) self.add_parameter('trigger_slope', type=str, flags=Instrument.FLAG_GETSET) # Add functions self.add_function('reset') self.add_function('fix') self.add_function('wait') self.add_function('get_all') self.add_function('set_seq_length') self.add_function('clear_waveforms') self.add_function('ask') #for debug self.add_function('write') #for debug self.add_function('define_sequence') self.add_function('close') if numchannels == 2: self.add_function('preset_readout') self.add_function('preset_manipulation') self.add_function('wfm_send') self.add_function('wfm_send2') if reset: self.reset() else: self.get_all() self.write(":INST1;:MARK:SOUR USER;:INST3;:MARK:SOUR USER") print( "The device is set up with %i channels. You use the channels %s" % (numchannels, str(range(self._choff + 1, numchannels + self._choff + 1))))
def __init__(self, name, address, model='Windfreaktech'): ''' Initializes the Windfreaktech_SynthHD, and communicates with the wrapper. Input: name (string) : name of the instrument address (string) : address ''' logging.info(__name__ + ' : Initializing instrument') Instrument.__init__(self, name, tags=['physical']) self._address = address self._model = model self._visainstrument = visa.instrument(self._address) if LooseVersion(visa.__version__) < LooseVersion("1.5.0"): self._visainstrument.term_chars = '\n' else: self._visainstrument.write_termination = '\n' self._visainstrument.read_termination = '\n' self._numchannels = 2 self._frequency = [None, None, None] self._power = [None, None, None] # Implement parameters self.add_parameter('frequency', type=float, flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, channels=(1, self._numchannels), minval=0, maxval=13.6e9, units='Hz', channel_prefix='ch%d_') self.add_parameter('power_level', type=float, flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET, channels=(1, self._numchannels), minval=0, maxval=45000, units='arbu', channel_prefix='ch%d_') self.add_parameter('power', type=float, flags=Instrument.FLAG_GETSET, channels=(1, self._numchannels), minval=-70, maxval=20, units='dBm', channel_prefix='ch%d_') self.add_parameter('status', type=bool, flags=Instrument.FLAG_GETSET, channels=(1, self._numchannels), channel_prefix='ch%d_') self.add_function('get_all') self.add_function('reload_calibration') # self.add_function('set_PLL_frequency') # self.add_function('get_PLL_frequency') self.reload_calibration() self.get_all() self.set_PLL_frequency(10e6)