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