Этот пример показывает, как получить данные IQ от анализатора сигналов через интерфейс TCP/IP.
Instrument Control Toolbox™ поддерживает связь с инструментами через интерфейсы и драйверы.
Полный список поддерживаемого оборудования можно найти на странице продукта Instrument Control Toolbox по адресу www.mathworks.com/products/instrument/
Этот пример получает данные IQ от Keysight Technologies ® (ранее Agilent Technologies ®) анализатора сигналов X-серии (N9030A, PXA Signal Analyzer) по интерфейсу TCP/IP.
Чтобы запустить этот пример, вам нужен анализатор сигнала X-Series с соединением Ethernet (TCP/IP). Можно также выполнить этот пример с MATLAB на анализаторе X-Series или на ПК в той же сети, что и анализатор X-Series.
Этот пример использует функции из набора инструментов Instrument Control Toolbox и DSP System Toolbox™.
Определите параметры, используемые для настройки прибора, прежде чем выполнять измерение. На основе сигнала, который вы измеряете, вам, возможно, потребуется изменить некоторые из следующих параметров.
% 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 System Toolbox, чтобы построить график представления спектра. Вы можете получить ошибки, если требуемые функциональные возможности недоступны.
% Create a periodogram spectrum with a Hamming window figure(2) periodogram(IQData,hamming(length(IQData)),[],sampleRate,"centered")
Переключите прибор в режим спектрального анализатора и сравните представление спектра, сгенерированное в MATLAB, с видом на Signal Analyzer. Используйте дополнительные команды 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