skrf.vi.vna.hp.HP8510C

class skrf.vi.vna.hp.HP8510C(address, backend='@py', **kwargs)[source]

HP 8510 driver that is capable of compound sweeps, segmented sweeps, and fast binary transfers. These features make this venerable old instrument much more pleasant to use in the 21st century. Likely works with “A” and “B” versions of the instrument as well.

Compound sweeps occur automatically when the user requests a sweep larger than what the instrument natively supports (51/101/201/401/801pts). This driver takes multiple shorter sweeps and stitches them together.

Segmented sweeps occur automatically when the user requests a short or irregularly spaced sweep (see “Advanced Example” below). The 8510 actually does support sweeps other than 51/101/201/401/801pts, but only in a separate mode (segmented sweep mode) and with significant restrictions. This driver knows how to handle segmented sweep mode to get what it wants.

Examples

Basic one-port:

vna = skrf.vi.vna.hp.HP8510C(address='TCPIP::ad007-right.lan::gpib0,16::INSTR', backend='@py')
vna.set_frequency_sweep(2e9,3e9,201)
vna.get_snp_network(ports=(1,))

Basic two-port:

vna = skrf.vi.vna.hp.HP8510C(address='TCPIP::ad007-right.lan::gpib0,16::INSTR', backend='@py')
vna.set_frequency_sweep(2e9,3e9,201)
vna.get_snp_network(ports=(1,2))

Intermediate example – note that 1001 point sweeps are not natively supported by the instrument; this driver takes multiple sweeps and stitches the results together.

vna = skrf.vi.vna.hp.HP8510C(address='TCPIP::ad007-right.lan::gpib0,16::INSTR', backend='@py')
vna.set_frequency_sweep(2e9,3e9,1001)
vna.get_snp_network(ports=(1,2))

Advanced example. The driver is handed a bucket of frequencies containing two separate bands mashed together. Behind the scenes it will construct a sweep plan consisting of one native sweep and one segmented sweep, perform both, and stitch the results together – but all the user need worry about is constructing the request and interpreting the results.

vna = skrf.vi.vna.hp.HP8510C(address='TCPIP::ad007-right.lan::gpib0,16::INSTR', backend='@py')
freq_block_1 = np.linspace(1e9,2e9,801)
freq_block_2 = [10e9,11e9,12e9]
freqs = np.concatenate((freq_block_1, freq_block_2))
vna.frequency = skrf.Frequency.from_f(freqs)
vna.get_snp_network(ports=(1,2))
Parameters:

Attributes

averaging

Averaging factor for AVERON

compound_sweep_plan

error

Error from OUTPERRO

freq_start

Start frequency [hz]

freq_stop

Stop frequency [hz]

frequency

Frequencies of compound sweep

id

Instrument ID string

is_continuous

True iff sweep mode is continuous.

max_hz

Maximum frequency supported by instrument

min_hz

Minimum frequency supported by instrument

npoints

Number of points in compound sweep (if programmed) or non-compound sweep

timeout

Methods

__init__

ask_for_cmplx

Like ask_for_values, but use FORM2 binary transfer, much faster than ASCII.

clear

command

Create a property for the instrument.

get_snp_network

MAIN METHOD for obtaining S parameters, like get_snp_network((1,)) or get_snp_network((1,2)).

get_switch_terms

Returns (forward_one_port,reverse_one_port) switch terms.

one_port

Performs a single sweep OR COMPOUND SWEEP and returns Network data.

query

query_values

read

read_values

reset

Preset instrument.

set_frequency_ramp

Ramp (fast, not synthesized) sweep.

set_frequency_step

Step (slow, synthesized) sweep + logic to handle lots of npoint.

set_frequency_sweep

Interprets units and calls set_frequency_step

switch_terms

Returns (forward_one_port,reverse_one_port) switch terms.

two_port

Performs a single sweep OR COMPOUND SWEEP and returns Network data.

wait_for_status

Fetches status bytes respecting max_wait_seconds even if it must tank a few timeouts along the way.

wait_until_finished

write

write_values