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

Этот пример показывает, как использовать Генератор Быстрой Функции управления, чтобы сгенерировать произвольные формы волны.

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

Введение

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

Требования

Чтобы запустить этот пример, вам нужно:

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

  • Программное обеспечение VISA установило на вашей машине (Этот пример использует Agilent® IO Libraries Version 16.1).

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

  • 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


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

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

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

downloadWaveform (f, waveformArray);

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

enableOutput(f);

Очистка

clear f;