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

В этом примере показано, как использовать 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;