NAME
Lab::Moose::Instrument::RS_RTB2000 - Rohde & Schwarz RTB 2000 oscilloscope (work in progress)
VERSION
version 3.902
SYNOPSIS
use Lab::Moose;
my $rtb = instrument(
type => 'RS_RTB2000',
connection_type => '...',
connection_options => {...}
);
$rtb->write(command => 'CHAN:TYPE HRES'); # set high-resolution mode
$rtb->write(command => 'ACQ:POIN 10000'); # record 10k points per waveform
$rtb->write(command => 'ACQ:TYPE AVER');
$rtb->write(command => 'ACQ:AVER:COUN 100'); # average over 100 waveforms
# vertical setup
$rtb->write(command => 'CHAN1:RANG 10'); # set 0 to 10V range
$rtb->write(command => 'CHAN1:POS -5');
$rtb->write(command => 'CHAN1:COUP DCLimit');
$rtb->write(command => 'CHAN1:BAND B20'); # 20MHz Bandwith
# horizontal setup
# set measurement time of 1ms, i.e. 1/12 ms per division
$rtb->write(command => 'TIM:RANG 1e-3');
$rtb->write(command => 'TIM:REF 50'); # reference point in the middle
# set trigger position at start of measurement time
$rtb->write(command => 'TIM:POS 0.5e-3');
$rtb->write(command => 'FORM REAL');
$rtb->write(command => 'FORM:BORD LSBF'); # little-endian data format
# trigger
$rtb->write(command => 'TRIG:A:MODE NORM');
$rtb->write(command => 'TRIG:A:SOUR CH1');
$rtb->write(command => 'TRIG:A:TYPE EDGE');
$rtb->write(command => 'TRIG:A:EDGE:SLOP NEG');
$rtb->write(command => 'TRIG:A:LEV1 10e-3');
$rtb->write(command => 'TRIG:A:EDGE:FILT:HFR ON'); # 5kHz filter
# output signal (option R&S RTB-B6)
$rtb->write(command => 'WGEN:OUTP ON');
$rtb->write(command => 'WGEN:FUNC RAMP');
$rtb->write(command => 'WGEN:FUNC:RAMP:POL POS');
$rtb->write(command => 'WGEN:VOLT 5');
$rtb->write(command => 'WGEN:VOLT:OFFS 2.5');
$rtb->write(command => 'WGEN:FREQ 100');
# burst setup
$rtb->write(command => 'WGEN:BURS ON');
$rtb->write(command => 'WGEN:BURS:NCYC 50'); # 50 ramps
$rtb->write(command => 'WGEN:BURS:TRIG SING');
# record single measurement
$rtb->write(command => 'ACQ:AVER:RESET'); # reset average calculation
$rtb->write(command => 'SING');
$rtb->write(command => 'WGEN:BURS:TRIG:SING'); # start output signal
$rtb->query(command => '*OPC?'); # wait until acquisiton is complete
# transfer data
my $header = $rtb->query(command => 'CHAN1:DATA:HEAD?');
my ($x_start, $x_stop, $samples, $vals_per_sample) = split(',', $header);
my $data = $rtb->query(command => 'CHAN:DATA?', read_length => '...');
# returns binary data #520000>??[>??[>??[>??[>??[>??...
my @points = $rtb->block_to_array($data, precision => 'single');
METHODS
Used roles:
COPYRIGHT AND LICENSE
This software is copyright (c) 2024 by the Lab::Measurement team; in detail:
Copyright 2022 Andreas K. Huettel, Erik Fabrizzi, 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.