В этом примере показано, как получить Данные IQ из анализатора сигнала по интерфейсу TCP/IP.
Instrument Control Toolbox™ поддерживает связь с инструментами через интерфейсы и драйверами.
Для полного списка поддерживаемого оборудования посетите страницу продукта Instrument Control Toolbox.
Этот пример получает Данные IQ из Keysight Technologies® (раньше Agilent Technologies®) X-ряд Signal Analyzer (N9030A, PXA Signal Analyzer) по интерфейсу TCP/IP.
Чтобы запустить этот пример, вам нужен X-серийный Сигнал анализатор с Ethernet (TCP/IP) связь. Можно также выполнить этот пример с MATLAB на X-ряде анализатор, или на PC в той же сети как X-ряд Анализатор.
Этот пример использует функции из 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.
Установите тайм-аут позволять достаточное количество времени для измерения и передачи данных.
Установите порядок байтов быть "обратным порядком байтов", чтобы считать данные с плавающей запятой в правильном формате от анализатора.
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");
Инициируйте инструмент, чтобы сделать измерение, ожидать операции измерения, чтобы быть завершенными и читать в форме волны. Прежде чем вы обработаете данные, разделите меня & компоненты 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
Постройте первые 1 000 точек полученных данных об области времени и аннотируйте фигуру.
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