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