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