Beispiel #1
0
def main():
    parser = argparse.ArgumentParser(
        description='Connect to a Rohde & Schwarz VNA')
    parser.add_argument('--visa',
                        metavar='bus',
                        default=False,
                        help="use VISA with 'bus'")
    parser.add_argument('--address',
                        default='127.0.0.1',
                        help='instrument address')
    parser.add_argument('--timeout',
                        default=5000,
                        type=int,
                        help='default instrument timeout (ms)')
    parser.add_argument('--log', default='', help='SCPI command log filename')
    args = parser.parse_args()

    vna = Vna()
    try:
        if args.visa:
            vna.open(args.visa, args.address)
        else:
            vna.open_tcp(args.address)
        if args.timeout:
            vna.timeout_ms = args.timeout

        if vna.connected():
            print("connected: {0}".format(vna.id_string()))
            if args.log:
                vna.open_log(args.log)
                vna.log.write('{0}\n'.format(datetime.datetime.now()))
                vna.log.write('--------------------------\n\n')
                vna.print_info()
            sys.path.insert(0, os.getcwd())
            code.interact('', local=locals())
            sys.exit(0)
        else:
            raise Exception('Could not connect to instrument')
    except SystemExit:
        pass
    except:
        print('Error connecting to instrument\n')
        parser.print_help()
    finally:
        if vna.log:
            vna.close_log()
        if vna.connected():
            vna.close()
Beispiel #2
0
def connect_to_vna(address):
	vna = Vna()
	try:
		vna.open_tcp(address)
	except:
		print("\n\n* Error!\n*  Problem connecting to VNA at ip {0}".format(address))
		return None
	try:
		if not vna.connected():
			print("\n\n* Error!\n*  Problem connecting to VNA at ip {0}".format(address))
			return None
		if not vna.properties.is_known_model():
			print("\n\n* Error!\n*  Could not find R&S VNA at ip {0}".format(address))
			print("*   *IDN? response: {0}".format(vna.id_string()))
			return None;
	except:
		print("\n\n* Error!\n*  Problem connecting to VNA at ip {0}".format(address))
		return None
	# set long timeout,
	vna.timeout_ms = 60000
	return vna
Beispiel #3
0
#!/usr/bin/env python

from   lib.homepath import expand_home_path
from   lib.save     import create_save_action
from   lib          import schedule
from   pathlib      import Path
from   rohdeschwarz.instruments.vna import Vna
from   ruamel       import yaml

settings = {}
with open('settings.yaml', 'r') as f:
    settings = yaml.safe_load(f.read())

# Connect to VNA
vna = Vna()
vna.open_tcp(settings['vna address'])
vna.timeout_ms = 10*60*1000 # 10 mins

# Create lamdba function.
# Function will be called on interval
path   = expand_home_path(settings['path'])
action = create_save_action(vna, path)

# run
interval = settings['interval (mins)']
duration = settings['duration (hrs)']
schedule.run(interval, duration, action)
Beispiel #4
0
from   trace_history.timestamp    import timestamp
import os
from   rohdeschwarz.instruments.vna import Vna
from   si_prefix                  import si_format
import sys


# parse cli
args = parse_args()

# init connection
vna = Vna()
vna.open_tcp(args.ip_address)
vna.open_log(args.log_file)

vna.timeout_ms = args.timeout_ms

# clear previous scpi errors
vna.clear_status()

# current date and time?
now = timestamp()

# set file
args.set_file = args.set_file or vna.active_set
vna.open_set(args.set_file)
vna.active_set = args.set_file

# make data directory
data_path = args.data_path / f'{now}_{args.set_file}'
data_path.mkdir()
def main():
    parser = argparse.ArgumentParser(
        description='Connect to a Rohde & Schwarz VNA')
    parser.add_argument('--visa',
                        metavar='bus',
                        default=False,
                        help="use VISA with 'bus'")
    parser.add_argument('--address',
                        default='127.0.0.1',
                        help='instrument address')
    parser.add_argument('--port',
                        default=5025,
                        type=int,
                        help='port (TCP only)')
    parser.add_argument('--timeout',
                        default=5000,
                        type=int,
                        help='default instrument timeout (ms)')
    parser.add_argument('--log', help='SCPI command log filename')
    parser.add_argument(
        '--export-cal-data',
        action='store_true',
        help='Save corrections to numpy `savez` (*.pyz) data file')
    parser.add_argument('--outer-channel',
                        type=int,
                        help='channel with outer corrections')
    parser.add_argument('--outer-cal-group',
                        help='cal group containing outer corrections')
    parser.add_argument('--inner-channel',
                        type=int,
                        help='channel with inner corrections')
    parser.add_argument('--inner-cal-group',
                        help='cal group containing inner corrections')
    parser.add_argument('--filename',
                        default='Port {port}.s2p',
                        help="default: 'Port {port}.s2p'")
    parser.add_argument('ports',
                        type=int,
                        nargs='+',
                        help='VNA ports to extract DUTs from')
    args = parser.parse_args()

    if not args.inner_channel and not args.inner_cal_group:
        print('error: must include inner source, either channel or cal group')
        parser.print_help()
        sys.exit(-1)
    if not args.outer_channel and not args.outer_cal_group:
        print('error: must include outer source, either channel or cal group')
        parser.print_help()
        sys.exit(-1)

    vna = Vna()
    try:
        if args.visa:
            vna.open(args.visa, args.address)
        else:
            vna.open_tcp(args.address, args.port)
        if args.timeout:
            vna.timeout_ms = args.timeout

        if vna.connected():
            if args.log:
                vna.open_log(args.log)
                print_header(vna.log, 'R&S S2P Extractor', '1.0')
                vna.print_info()
        else:
            raise Exception('Could not connect to instrument')

        if args.outer_channel:
            outer_source = Source(Type.CHANNEL, args.outer_channel)
        else:
            outer_source = Source(Type.CAL_GROUP, args.outer_cal_group)
        if args.inner_channel:
            inner_source = Source(Type.CHANNEL, args.inner_channel)
        else:
            inner_source = Source(Type.CAL_GROUP, args.inner_cal_group)
        print(f"ports: {args.ports}")
        for port in args.ports:
            filename = args.filename.format(port=port)
            print(f'  {filename}')
            calculate(vna, outer_source, inner_source, port, filename,
                      args.export_cal_data)
    except Exception as err:
        parser.print_help()
        raise
    finally:
        if vna.connected():
            vna.errors
            vna.clear_status()
        if vna.log:
            vna.close_log()
        if vna.connected():
            vna.close()