The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Lab::Moose::Instrument::VNASweep - Role for network analyzer sweeps

VERSION

version 3.641

METHODS

sparam_sweep

 my $data = $vna->sparam_sweep(timeout => 10, average => 10, precision => 'double');

Perform a single sweep, and return the resulting data as a 2D PDL. The first dimension runs over the sweep points. E.g. if only the S11 parameter is measured, the resulting PDL has dimensions N x 5:

 [
  [freq1    , freq2    , ..., freqN    ],
  [Re(S11)_1, Re(S11)_2, ..., Re(S11)_N],
  [Im(S11)_1, Im(S11)_2, ..., Im(S11)_N],
  [Amp_1    , Amp_2    , ..., Amp_N    ],
  [phase_1  , phase_2  , ..., phase_N  ],
 ]

The row with the amplitudes (power in units of dB) is calculated from the S-params as

 10 * log10(Re(S11)**2 + Im(S11)**2)

The row with the phases is calculated as from the S-params as

 atan2(Im(S11), Re(S11))

Thus, each recorded S-param will create 4 subsequent rows in the output PDL.

This method accepts a hash with the following options:

timeout

timeout for the sweep operation. If this is not given, use the connection's default timeout.

average

Setting this to $N, the method will perform $N sweeps and the returned data will consist of the average values.

precision

floating point type. Has to be 'single' or 'double'. Defaults to 'single'.

set_frq

 # Prepare VNA for single point measurement at frequency 4GHz:
 $vna->set_frq(value => 4e9);

Set VNA to single point mode. That is only a single frequency is measured and one point of data is returned per measurement.

This high-level function make the VNA usable with Lab::Moose::Sweep::Step::Frequency.

Will croak if the VNA does not support single point mode.

get_frq

 my $frq = $vna->get_frq();

Get frequency of VNA in single point mode. Croak if the VNA is not configured for single point measurement.

REQUIRED METHODS

The following methods are required for role consumption.

sparam_catalog

 my $array_ref = $vna->sparam_catalog();

Return an arrayref of available S-parameter names. Example result: ['Re(s11)', 'Im(s11)', 'Re(s21)', 'Im(s21)'].

sparam_sweep_data

 my $binary_string = $vna->sparam_sweep_data(timeout => $timeout)

Return binary SCPI data block of S-parameter values. This string contains the sparam_catalog values of each frequency point. The floats must be in native byte order.

CONSUMED ROLES

Lab::Moose::Instrument::Common
Lab::Moose::Instrument::SCPI::Format
Lab::Moose::Instrument::SCPI::Instrument
Lab::Moose::Instrument::SCPI::Sense::Average
Lab::Moose::Instrument::SCPI::Sense::Bandwidth
Lab::Moose::Instrument::SCPI::Sense::Frequency
Lab::Moose::Instrument::SCPI::Sense::Sweep
Lab::Moose::Instrument::SCPI::Source::Power
Lab::Moose::Instrument::SCPI::Initiate
Lab::Moose::Instrument::SCPIBlock

COPYRIGHT AND LICENSE

This software is copyright (c) 2018 by the Lab::Measurement team; in detail:

  Copyright 2016       Simon Reinhardt
            2017       Andreas K. Huettel, Simon Reinhardt
            2018       Simon Reinhardt

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.