В этом примере показано, как использовать Quick-Control Function Generator для генерации произвольных осциллограмм.
Instrument Control Toolbox™ поддерживает связь с инструментами через интерфейсы и драйверы. Полный список поддерживаемого оборудования можно найти на странице продукта Instrument Control Toolbox по адресу www.mathworks.com/products/instrument.html
В этом примере мы создадим и загрузим произвольную форму волны на произвольный генератор формы волны с помощью Quick-Control Function Generator.
Чтобы запустить этот пример, вам нужно:
Произвольный генератор формы волны (Этот пример использует Tektronix ® AFG3022B).
Программное обеспечение VISA, установленное на вашем компьютере (Этот пример использует Agilent ® IO Libraries версии 16.1).
Драйверы IVI-C для инструментов, установленных на вашей машине (Этот пример использует драйвер Tektronix ® tkafg3k IVI-C версии 3.2 из реестра драйверов IVI Foundation).
Instrument Control Toolbox™.
Мы создадим произвольную форму волны, которая состоит из трех различных форм волны. Свойства каждой формы волны, включая амплитуду и частоту, будут заданы в приведенном ниже разделе. Для каждой формы волны амплитуда составляет volts
, в то время как частота находится в Hz
.
При генерации сигналов для генератора функций важно обеспечить непрерывность во временном интервале, чтобы не вводить непреднамеренное спектральное содержимое в сигнал, особенно если сигнал будет воспроизводиться повторно. Для обеспечения непрерывности можно задать временной вектор таким образом, чтобы он содержал интегральное число циклов каждого из трех тонов, которые составят синтезированную форму волны.
timeStep = 0.001; time = 0:timeStep:(1-timeStep);
Параметры для первой формы волны
amplitude1 = 0.2; frequency1 = 10;
Параметры для второй формы волны
amplitude2 = 0.8; frequency2 = 14;
Параметры для третьей формы волны
amplitude3 = 0.6; frequency3 = 18;
Мы создадим наши три индивидуальные формы волны с помощью sin
команда.
waveform1 = amplitude1*sin(2*pi*frequency1*time); waveform2 = amplitude2*sin(2*pi*frequency2*time); waveform3 = amplitude3*sin(2*pi*frequency3*time);
Произвольная форма волны будет комбинацией каждой из перечисленных выше форм волны.
waveform = waveform1 + waveform2 + waveform3;
Добавьте случайный шум к форме волны, созданной ранее.
waveform = waveform + 0.3*rand(1,size(waveform,2));
Некоторые генераторы функций требуют нормированной формы волны. В этом случае форма волны нормирована между -1 и + 1.
waveformArray = (waveform./max(waveform))'; plot(waveformArray); xlabel('Samples'); ylabel('Amplitude');
Узнайте все доступные ресурсы прибора (цели), к которым вы можете подключиться, используя resources
команда.
f = fgen; f.resources
ans = 1×211 char array ASRL1::INSTR ASRL3::INSTR ASRL::COM1 ASRL::COM3 GPIB0::INTFC PXI0::MEMACC TCPIP0::172.28.22.217::inst0::INSTR TCPIP0::172.28.23.55::inst0::INSTR TCPIP0::a-d6054l-000006.dhcp.mathworks.com::inst0::INSTR
Теперь, когда у вас есть сигнал, вам нужно скачать его на генератор функции. Вы будете использовать Quick-Control Function Generator или fgen
функция Instrument Control Toolbox™ для этого. Поскольку IP-адрес прибора равен 172.28.22.217, указанный ресурс будет TCPIP0::172.28.22.217::inst0::INSTR.
f = fgen('TCPIP0::172.28.22.217::inst0::INSTR','tkafg3k');
Укажите канал генератора функций, где будет сгенерирована форма волны. Здесь форма волны будет сгенерирована в канале номер 1.
selectChannel(f, '1');
Поскольку вы будете генерировать пользовательскую произвольную форму волны, установите Waveform
свойство Arb.
f.Waveform = 'Arb';
Теперь вы готовы загрузить ранее сгенерированный произвольный сигнал формы волныArray на генератор функции.
downloadWaveform (f, waveformArray);
Включите генерацию сигналов.
enableOutput(f);
clear f;