exponenta event banner

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

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

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

Требования

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

Конфигурирование осциллографа

Настройте осциллограф с помощью функции быстрого управления (осциллограф).

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

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

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

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");

Получение формы сигнала

Получение данных формы сигнала с помощью осциллографа. AcquisitionTime свойство представляет длительность сигнала в секундах. 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