В этом примере показано, как получить IQ-данные от анализатора сигналов через интерфейс TCP/IP.
Toolbox™ управления приборами поддерживает связь с приборами через интерфейсы и драйверы.
Полный список поддерживаемых аппаратных средств можно найти на странице инструментария управления приборами по адресу www.mathworks.com/products/instrument/
В этом примере данные IQ извлекаются из анализатора сигналов серии X (N9030A, PXA Signal Analyzer) компании Keysight Technologies ® (ранее Agilent Technologies ®) через интерфейс TCP/IP.
Для запуска этого примера необходим анализатор сигнала серии X с подключением Ethernet (TCP/IP). Этот пример можно также выполнить с помощью MATLAB на анализаторе серии X или на ПК в той же сети, что и анализатор серии X.
В этом примере используются функции панели инструментов управления приборами и системного Toolbox™ DSP.
Перед выполнением измерения определите параметры, используемые для конфигурирования прибора. На основе измеряемого сигнала может потребоваться изменить некоторые из следующих параметров.
% Specify the IP address of the signal analyzer addressMXA = "172.28.16.61";
% Center frequency of the modulated waveform (Hz) centerFrequency = 2.14e9; % Bandwidth of the signal (Hz) bandwidth = 25e6; % Measurement time (s) measureTime = 8e-3; % Mechanical attenuation in the signal analyzer(dB) mechAttenuation = 0; % Start frequency for Spectrum Analyzer view startFrequency = 2.11e9; % Stop frequency for Spectrum Analyzer view stopFrequency = 2.17e9; % Resolution Bandwidth for Spectrum Analyzer view resolutionBandwidth = 200e3; % Video Bandwidth for Spectrum Analyzer view videoBandwidth = 300;
Настройка подключения КИП с использованием TCP/IP-соединения.
Установите время ожидания, достаточное для измерения и передачи данных.
Установите порядок байтов «big-endian» для считывания данных с плавающей запятой в правильном формате из анализатора.
signalAnalyzerObject = tcpclient(addressMXA, 5025);
signalAnalyzerObject.ByteOrder = "big-endian";
signalAnalyzerObject.Timeout = 20;
Сбросьте прибор в известное состояние с помощью соответствующей команды SCPI. Запросите идентификатор прибора, чтобы убедиться, что мы подключены к нужному прибору.
writeline(signalAnalyzerObject, "*RST"); instrumentInfo = writeread(signalAnalyzerObject, "*IDN?"); disp("Instrument identification information: " + instrumentInfo);
Instrument identification information: Agilent Technologies,N9030A,US00071181,A.14.16
Анализаторы сигналов и спектров серии X выполняют IQ-измерения, а также спектральные измерения. В этом примере выполняется сбор данных IQ временной области, их визуализация в MATLAB и анализ полученных данных. Команды SCPI используются для конфигурирования прибора для выполнения измерений и определения формата передачи данных после выполнения измерений.
% Set up signal analyzer mode to Basic/IQ mode writeline(signalAnalyzerObject,":INSTrument:SELect BASIC"); % Set the center frequency writeline(signalAnalyzerObject,":SENSe:FREQuency:CENTer " + num2str(centerFrequency)); % Set the resolution bandwidth writeline(signalAnalyzerObject,":SENSe:WAVEform:BANDwidth:RESolution " + num2str(bandwidth)); % Turn off averaging writeline(signalAnalyzerObject,":SENSe:WAVeform:AVER OFF"); % Set to take one single measurement once the trigger line goes high writeline(signalAnalyzerObject,":INIT:CONT OFF"); % Set the trigger to external source 1 with positive slope triggering writeline(signalAnalyzerObject,":TRIGger:WAVeform:SOURce IMMediate"); writeline(signalAnalyzerObject,":TRIGger:LINE:SLOPe POSitive"); % Set the time for which measurement needs to be made writeline(signalAnalyzerObject,":WAVeform:SWE:TIME " + num2str(measureTime)); % Turn off electrical attenuation. writeline(signalAnalyzerObject,":SENSe:POWer:RF:EATTenuation:STATe OFF"); % Set mechanical attenuation level writeline(signalAnalyzerObject,":SENSe:POWer:RF:ATTenuation " + num2str(mechAttenuation)); % Turn IQ signal ranging to auto writeline(signalAnalyzerObject,":SENSe:VOLTage:IQ:RANGe:AUTO ON"); % Set the endianness of returned data writeline(signalAnalyzerObject,":FORMat:BORDer NORMal"); % Set the format of the returned data writeline(signalAnalyzerObject,":FORMat:DATA REAL,32");
Запустите прибор для выполнения измерения, дождитесь завершения операции измерения и прочтите сигнал. Перед обработкой данных отделите компоненты I&Q от перемеженных данных, возвращаемых прибором, и создайте сложный вектор в MATLAB.
% Trigger the instrument and initiate measurement writeline(signalAnalyzerObject,"*TRG"); writeline(signalAnalyzerObject,":INITiate:WAVeform"); % Wait till measure operation is complete measureComplete = writeread(signalAnalyzerObject,"*OPC?"); % Read the IQ data writeline(signalAnalyzerObject,":READ:WAV0?"); data = readbinblock(signalAnalyzerObject,"single"); % Read the additional terminator character from the instrument read(signalAnalyzerObject,1); % Separate the data and build the complex IQ vector. inphase = data(1:2:end); quadrature = data(2:2:end); IQData = inphase+1i*quadrature;
Инструмент предоставляет информацию о последних полученных данных. Зафиксируйте эту информацию и отобразите ее.
writeline(signalAnalyzerObject,":FETCH:WAV1?"); signalSpec = readbinblock(signalAnalyzerObject,"single"); sampleRate = 1/signalSpec(1); disp("Sample Rate (Hz) = " + num2str(sampleRate)); disp("Number of points read = " + num2str(signalSpec(4))); disp("Max value of signal (dBm) = " + num2str(signalSpec(6))); disp("Min value of signal (dBm) = " + num2str(signalSpec(7)));
Sample Rate (Hz) = 31250000.8838 Number of points read = 250001 Max value of signal (dBm) = -8.211 Min value of signal (dBm) = -42.5689
Постройте первые 1000 точек полученных данных временной области и аннотируйте рисунок.
figure(1) plot(real(IQData(1:1000)),"b"); hold on plot(imag(IQData(1:1000)),"g"); legend("Inphase signal", "Quadrature signal"); title("IQ Data for the first 1000 points of acquired signal") xlabel("Sample number"); ylabel("Voltage");

Представление спектра может содержать больше информации, чем представление данных во временной области. Например, можно использовать представление спектра для идентификации основных полос частот, полосы пропускания сигнала и т.д. Для печати вида спектра требуется панель системных инструментов DSP. Если необходимые функциональные возможности недоступны, могут возникнуть ошибки.
% Create a periodogram spectrum with a Hamming window figure(2) periodogram(IQData,hamming(length(IQData)),[],sampleRate,"centered")

Переключите прибор в режим анализатора спектра и сравните вид спектра, сформированный в MATLAB, с видом на анализаторе сигналов. Дополнительные команды SCPI используются для настройки параметров измерения и отображения приборов.
% Switch back to the spectrum analyzer view writeline(signalAnalyzerObject,":INSTrument:SELect SA"); % Set mechanical attenuation level writeline(signalAnalyzerObject,":SENSe:POWer:RF:ATTenuation " + num2str(mechAttenuation)); % Set the center frequency, RBW and VBW and trigger writeline(signalAnalyzerObject,":SENSe:FREQuency:CENTer " + num2str(centerFrequency)); writeline(signalAnalyzerObject,":SENSe:FREQuency:STARt " + num2str(startFrequency)); writeline(signalAnalyzerObject,":SENSe:FREQuency:STOP " + num2str(stopFrequency)); writeline(signalAnalyzerObject,":SENSe:BANDwidth:RESolution " + num2str(resolutionBandwidth)); writeline(signalAnalyzerObject,":SENSe:BANDwidth:VIDeo " + num2str(videoBandwidth)); % Continuous measurement writeline(signalAnalyzerObject,":INIT:CONT ON"); % Trigger writeline(signalAnalyzerObject,"*TRG");
% Close and delete instrument connections clear signalAnalyzerObject