Этот пример показывает вам, как автоматизировать измерение измерений S-параметра с 2 портами от Keysight Technologies® (раньше Agilent Technologies®) сетевой анализатор с помощью MATLAB® и Instrument Control Toolbox™. Пример также визуализирует измерения в MATLAB и сохраняет измерения в файл данных Пробного камня с помощью функций от RF Toolbox™.
Рассеивание параметров или S-параметров, описывает поведение отдельных компонентов или сети компонентов в линейных электрических сетях. Измерения S-параметров для компонентов в электрической сети могут использоваться к производительности модели, симулировать поведение, сети соответствия проекта, и т.д. Этот пример MATLAB подключения к и конфигурируют Keysight (Agilent) PNA (N5222A), чтобы измерить S-параметры низкого шумового усилителя (LNA). Инструмент, используемый в этом примере, запускает версию микропрограммного обеспечения A.09.90.02. Стандартные Команды для Программируемых Инструментов (SCPI) для PNA в этом примере, возможно, должны быть изменены, если вы используете различный инструмент или встроенное программное обеспечение. Набор команд SCPI для большинства инструментов доступен в инструментальном руководстве программиста от вашего инструментального поставщика.
Чтобы выполнить этот пример, вам нужен Keysight (Agilent) PNA соединенный с вашим устройством под тестом. Параметры в этом примере характерны для измерений для малошумящего усилителя, который мы используем и должны будем, вероятно, быть изменены, чтобы сделать измерения на вашем устройстве под тестом.
Этот пример использует функции из Instrument Control Toolbox и RF Toolbox.
Задайте параметры, используемые, чтобы сконфигурировать инструмент, прежде чем вы сделаете измерение. В этом примере мы соединяем с Keysight (Agilent) PNA использование интерфейса VISA к инструменту в сети TCPIP. На основе вашего измерения интереса вы, возможно, должны изменить некоторые следующие параметры.
% Define instrument VISA address. The VISA address of the instrument % may be obtained from the instrument's user interface or your VISA % configuration utility instrumentVISAAddress = 'TCPIP0::127.0.0.1::inst0::INSTR'; % Define frequency range of 2.3GHz to 2.6GHz frequencyRange = [2.3e9 2.6e9]; % Number of points in measurement numPoints = 401; % Create a VISA connection to interface with instrument instrObj = visa('agilent',instrumentVISAAddress); % Set up connection parameters for transfer of measurement data from the % instrument instrObj.InputBufferSize = 10e6; instrObj.ByteOrder = 'littleEndian'; % Open connection to the instrument and clear hardware buffer of instrument fopen(instrObj); clrdevice(instrObj); % Display information about instrument IDNString = query(instrObj,'*IDN?'); fprintf('Connected to: %s\n',IDNString);
Connected to: Agilent Technologies,N5222A,US51220131,A.09.90.02
Настройте инструмент, чтобы сделать измерения S-параметра с 2 портами.
% Prompt user to ask if they want to calibrate the instrument doCalibration = questdlg('Do you want to calibrate your PNA?', 'ExampleMeasureSparameter','yes','no','no'); if strcmpi(doCalibration,'yes') % Launch wizard-guided calibration on the instrument and prompt user to confirm completion fprintf(instrObj,'SYSTem:CORR:WIZ MAIN'); hMsgBox = msgbox('Press OK when calibration is complete', 'ExampleMeasureSparameter','help','modal'); % Wait till user has confirmed that the calibration is complete uiwait(hMsgBox); end % Perform a System Preset fprintf(instrObj,'SYSTem:FPReset'); fprintf(instrObj,'*CLS'); % Wait till system is ready as Preset could take time opcStatus = 0; while(~opcStatus) opcStatus = str2double(query(instrObj, '*OPC?')); end % Define a measurement name and parameter fprintf(instrObj,'CALCulate:PARameter:DEFine:EXT ''SParamMeasurementS11'',S11'); fprintf(instrObj,'CALCulate:PARameter:DEFine:EXT ''SParamMeasurementS12'',S12'); fprintf(instrObj,'CALCulate:PARameter:DEFine:EXT ''SParamMeasurementS21'',S21'); fprintf(instrObj,'CALCulate:PARameter:DEFine:EXT ''SParamMeasurementS22'',S22'); % Create a new display window and turn it on fprintf(instrObj,'DISPlay:WINDow1:STATE ON'); % Associate the measurements to WINDow1 fprintf(instrObj,'DISPlay:WINDow1:TRACe1:FEED ''SParamMeasurementS11'''); fprintf(instrObj,'DISPlay:WINDow1:TRACe2:FEED ''SParamMeasurementS12'''); fprintf(instrObj,'DISPlay:WINDow1:TRACe3:FEED ''SParamMeasurementS21'''); fprintf(instrObj,'DISPlay:WINDow1:TRACe4:FEED ''SParamMeasurementS22'''); % Turn ON the Title, Frequency, and Trace Annotation to allow for % visualization of the measurements on the instrument display fprintf(instrObj,'DISPlay:WINDow1:TITLe:STATe ON'); fprintf(instrObj,'DISPlay:ANNotation:FREQuency ON'); fprintf(instrObj,'DISPlay:WINDow1:TRACe1:STATe ON'); fprintf(instrObj,'DISPlay:WINDow1:TRACe2:STATe ON'); fprintf(instrObj,'DISPlay:WINDow1:TRACe3:STATe ON'); fprintf(instrObj,'DISPlay:WINDow1:TRACe4:STATe ON'); % Turn OFF averaging fprintf(instrObj,'SENSe1:AVERage:STATe OFF'); % Set the number of points fprintf(instrObj, sprintf('SENSe:SWEep:POINts %s',num2str(numPoints))); % Set the frequency ranges fprintf(instrObj, sprintf('SENSe:FREQuency:STARt %sHz',num2str(frequencyRange(1)))); fprintf(instrObj, sprintf('SENSe:FREQuency:STOP %sHz',num2str(frequencyRange(2)))); % Select measurements and set measurement trigger to immediate fprintf(instrObj,'CALCulate:PARameter:SELect ''SParamMeasurementS11'''); fprintf(instrObj,'CALCulate:PARameter:SELect ''SParamMeasurementS12'''); fprintf(instrObj,'CALCulate:PARameter:SELect ''SParamMeasurementS21'''); fprintf(instrObj,'CALCulate:PARameter:SELect ''SParamMeasurementS22'''); fprintf(instrObj,'TRIG:SOURce IMMediate'); % Autoscale display fprintf(instrObj, 'DISPlay:WIND:Y:AUTO'); % Select a single sweep across the frequency range to trigger a measurement fprintf(instrObj,':SENSe:SWEep:MODE SINGLE'); % Since the instrument may take time to make the measurement, wait until it % is done before requesting measurement data opcStatus = 0; while(~opcStatus) opcStatus = str2double(query(instrObj, '*OPC?')); end
Инструмент может возвратить результаты измерений во множестве форматов. Самый эффективный способ передать измерения S-параметра использует формат блока IEEE 488.2.
% Set instrument to return the data back using binblock format fprintf(instrObj, 'FORMat REAL,64'); % Set byte order to swapped (little-endian) format. SWAPped is required % when using IBM compatible computers fprintf(instrObj, 'FORMat:BORDer SWAP'); % Request 2-port measurement data from instrument fprintf(instrObj, 'CALC:DATA:SNP:PORTs? ''1,2'''); % Read the measured data rawDataDB = binblockread(instrObj, 'double'); fread(instrObj,1); % Read back the number of points in the measurement and reshape the % measurement data numPoints = str2double(query(instrObj,' SENSe:SWEep:POINts?')); % Reshape measurement data to [frequency, real, imag] array rawDataDB = reshape(rawDataDB, numPoints, 9);
Отобразите инструментальные погрешности пользователю, если какая-либо из предыдущих команд SCPI вызвала инструментальную погрешность.
% Loop through the error queue and display all errors systemError = ''; while isempty(strfind(lower(systemError),'no error')) systemError = query(instrObj,'SYSTem:ERRor?'); fprintf('System Error(s): %s',systemError); end
System Error(s): +0,"No error"
Очистите любые связи с инструментом после того, как измерения будут завершены
% Close, delete, and clear instrument connections. fclose(instrObj); delete(instrObj); clear instrObj;
RF Toolbox имеет объекты, которые могут использоваться, чтобы сохранить измерения, такие как измерения S-параметра, полученные из инструмента. Объекты могут быть созданы путем чтения в измерениях из стандартных форматов файлов, или, путем инициализации объекта с данными об измерении.
% Store frequency range of the measurements freqRange = rawDataDB(:,1); % Convert retrieved magnitude info from dB sparamMag = 10.^((1/20).*rawDataDB(:,2:2:8)); % Convert retrieved phase info from degrees to radians sparamPhase = rawDataDB(:,3:2:9)*(pi/180); % Extract S-Parameter vectors rawDataRI = sparamMag.*(cos(sparamPhase)+1i*sin(sparamPhase)); S11 = reshape(rawDataRI(:,1),1,1,numPoints); S12 = reshape(rawDataRI(:,3),1,1,numPoints); S21 = reshape(rawDataRI(:,2),1,1,numPoints); S22 = reshape(rawDataRI(:,4),1,1,numPoints); % Assemble into a 3D matrix to be consumed by the RF Toolbox SParameter3Ddata = [S11 S12; S21 S22];
Файлы пробного камня являются стандартным форматом файла, используемым, чтобы хранить данные об измерении S-параметра. RF Toolbox обеспечивает стандартные функции, чтобы считать и записать файлы пробного камня из MATLAB. Измерения S-параметра могут использоваться непосредственно в MATLAB в целях проекта, таких как этот пример при разработке соответствия с сетями для малошумящего усилителя.
rfwrite(SParameter3Ddata,freqRange,'LNASParams.s2p');
MATLAB может использоваться, чтобы визуализировать данные различными способами. Для легкого сравнения с тем, что отображено на экране инструмента, постройте частоту по сравнению с комплексной амплитудой данных S-параметра.
% Create the sparameters object hSParamData = sparameters(SParameter3Ddata,freqRange); % Plot the magnitude v/s frequency plot for the S-parameters of the LNA rfplot(hSParamData); title('2-Port S-Parameter Measurement Values');
Этот пример показывает вам, как автоматизировать измерение данных S-параметра из Keysight Technologies® (раньше Agilent Technologies®) сетевое использование анализатора MATLAB и Instrument Control Toolbox. Используя Instrument Control Toolbox, возможно управлять широким спектром теста & оборудования измерения, такого как анализаторы сигнала, генераторы сигнала RF, осциллографы, и т.д. из MATLAB. MATLAB может использоваться, чтобы визуализировать данные об измерении или использовать измерения, чтобы анализировать и спроектировать цифровой и системы RF, пользующиеся библиотекой функций в Signal Processing Toolbox™, DSP System Toolbox™, Communications Toolbox™ и RF Toolbox.