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