Сгенерируйте стреловидный синусоид с помощью VISA и захвата волны с помощью быстроуправляемого осциллографа

Этот пример показывает, как использовать генератор функции для генерации стреловидной синусоидной формы волны, а также как захватить ее с помощью осциллографа.

Полный список поддерживаемого оборудования см. на странице продукта Instrument Control Toolbox.

Требования

Этот пример был протестирован с использованием генератора функций 33522B Keysight Technologies ® и осциллографа Tektronix ® TDS 1002. Адреса GPIB генератора функций и осциллографа GPIB0::5::INSTR и GPIB0::11::INSTR, соответственно. Генератор функции сконфигурирован, чтобы генерировать 2V p-p свит-синусоид (от 20 до 200 Гц) со смещением 1V каждые 100 мс в канале 1. Осциллограф выполнен с возможностью получения формы волны в канале 1.

Настройте осциллограф

Сконфигурируйте осциллограф с помощью Quick-Control (осциллограф).

scopeResource = "GPIB0::11::INSTR";
ch = "CH1";

Создайте объект осциллографа и откройте соединение с инструментом.

scope = oscilloscope;
scope.Resource = scopeResource;
connect(scope)

The autoSetup функция автоматически регулирует каналы, вертикальные, горизонтальные и триггерные элементы управления на основе связанных сигналов.

autoSetup(scope)

Включите и сконфигурируйте канал 1.

enableChannel(scope,ch);
configureChannel(scope,ch,"VerticalCoupling","DC")

Сконфигурируйте канал для отображения в 1 VOLTS/DIV.

configureChannel(scope,ch,"VerticalRange",1)

Установите ослабление зонда равным 1x (опции включают 1, 10, 100).

configureChannel(scope,ch,"ProbeAttenuation",1)

The AcquisitionTime свойство представляет длительность формы волны в секундах. Установка AcquisitionTime изменит SEC/DIV соответственно управление. AcquisitionTime обычно соответствует 10 делениям (или одному экрану данных).

scope.AcquisitionTime = 0.25;

scope.TriggerLevel = 2.56;
scope.TriggerSource = ch;
scope.TriggerSlope = "rising";
scope.TriggerMode = "normal";

disp(scope)
oscilloscope: TEKTRONIX,TDS 1002

   Instrument Settings:
      AcquisitionStartDelay: 'Not supported'
            AcquisitionTime: 0.25 s
               ChannelNames: 'CH1', 'CH2', 'MATH', 'REFA', 'REFB'
            ChannelsEnabled: 'CH1'
            SingleSweepMode: 'off'
                    Timeout: 10 s
             WaveformLength: 2500

   Trigger Settings:
               TriggerLevel: 2.56
              TriggerSource: 'CH1'
               TriggerSlope: 'rising'
                TriggerMode: 'normal'

   Communication Properties:
                     Status: 'open'
                   Resource: 'GPIB0::11::INSTR'

lists of methods

Сконфигурируйте генератор функций

Сконфигурируйте генератор функции, чтобы сгенерировать сигнал свип с помощью объекта VISA-GPIB.

fgenResource = "GPIB0::5::INSTR";
vfgen = visadev(fgenResource)
vfgen = 
  GPIB with properties:

         ResourceName: "GPIB0::5::INSTR"
                Alias: "FGEN_2CH"
               Vendor: "Agilent Technologies"
                Model: "33522B"
           BoardIndex: 0
       PrimaryAddress: 5
     SecondaryAddress: 65535
    NumBytesAvailable: 0

  Show all properties, functions

Сконфигурируйте амплитуду и смещение свипа.

writeline(vfgen,"SOUR1:VOLT +1.0")
writeline(vfgen,"SOUR1:VOLT:OFFS +1.0")

Включите режим сдвига.

writeline(vfgen,"SOUR1:FREQ:MODE SWE");
writeline(vfgen,"SOUR1:SWE:STAT ON");
writeline(vfgen,"SOUR1:SWE:SPAC LIN");

Сконфигурируйте начальную и стоповую частоты.

fstart = 20;
fstop = 200;

writeline(vfgen,compose("SOUR1:FREQ:STAR %d",fstart));
writeline(vfgen,compose("SOUR1:FREQ:STOP %d",fstop));

Сконфигурируйте время, необходимое для перехода от начальной частоты к частоте остановки следующим sweepTime.

sweepTime = 0.1;
holdTime = 0;
returnTime = 0;

writeline(vfgen,compose("SOUR1:SWE:TIME %0.1f",sweepTime));

Сконфигурируйте время, чтобы остаться на частоте остановки следующим holdTime.

writeline(vfgen,compose("SOUR1:SWE:HTIME %0.1f",holdTime));

Сконфигурируйте время, необходимое для возврата к начальной частоте, следующим returnTime.

writeline(vfgen,compose("SOUR1:SWE:RTIME %0.1f",returnTime));

Сконфигурируйте триггер.

writeline(vfgen,"TRIG1:SLOP POS"); 
writeline(vfgen,"TRIG1:SOUR IMM");

Получение формы волны

Получите данные формы волны с помощью осциллографа. The AcquisitionTime свойство представляет длительность формы волны в секундах. The WaveformLength свойство представляет число точек в данных формы волны.

y = readWaveform(scope);
t = linspace(0,scope.AcquisitionTime,scope.WaveformLength);

Постройте график формы волны

plot(t,y)
ylim([0.5,3.5]);
title("Acquired waveform (sweep)")
xlabel("Time (s)");
ylabel("Voltage (V)");

Очистка

Очистите рабочую область, когда вы закончите.

disconnect(scope)
clear scope vfgen