exponenta event banner

Создание и загрузка произвольной формы сигнала в генератор функций

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

Toolbox™ управления приборами поддерживает связь с приборами через интерфейсы и драйверы. Полный список поддерживаемых аппаратных средств можно найти на странице инструментария управления приборами по адресу www.mathworks.com/products/instrument.html

Введение

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

Требования

Для выполнения этого примера необходимо:

  • Генератор произвольной формы сигнала (в этом примере используется Tektronix ® AFG3022B).

  • На компьютере установлено программное обеспечение VISA (в этом примере используются библиотеки ввода-вывода Agilent ® версии 16.1).

  • Драйверы IVI-C для приборов, установленных на компьютере (в этом примере используется драйвер Tektronix ® tkafg3k IVI-C версии 3.2 из реестра драйверов IVI Foundation).

  • 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


Подключиться к генератору функций

Теперь, когда у вас есть ваш сигнал, вы должны загрузить его в генератор функций. Вы будете использовать генератор функций быстрого управления или fgen функции 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';

Теперь вы готовы загрузить ранее сгенерированный произвольный сигнал SaveformArray в генератор функций.

downloadWaveform (f, waveformArray);

Включите генерацию формы сигнала.

enableOutput(f);

Очистить

clear f;