远程控制网络分析仪,实现快速扫描速度和批量数据读取的方法

在使用网络分析仪搭建测试系统进行自动测量时,特别是天线测量系统,要多次连续扫描并获取所有数据,要求快的测量速度。矢量网络分析NSWEEP系列指令,多次扫描的数据保存在缓存,执行N次扫描后,远程批量读取,从而实现快的多次扫描测试和批量数据读取。如果N次扫描的数据量过大,例如超过100M,可以在测量的同时,读取缓存。

远程控制网络分析仪,实现快速扫描速度和批量数据读取的方法

本例程代码实现以下功能:

  • Matlab控制网络分析仪批量测试和读数,其它软件语言使用以下命令也可实现相同的功能。
  • 设置扫描次数nsweep,网络分析仪执行n次扫描,所有数据保存在内存。
  • 将nsweep次扫描的数据批量读取至计算机,存储为nsweep个数组。

%% # Read N times sweep data from R&S VNA
% *******************************************************
% # This script set N times sweep and read a batch of data 
%********************************************************

%% # Instrument connection via LAN 
IPofVNA = '192.168.0.11';  
strInstr=strcat('TCPIP0::',IPofVNA,'::hislip0::INSTR');
% # Create NI-VISA object 
VNA=visa('rs',strInstr);
% # IO buffer size of VNA
MAX_SWEEP_POINTS = 20001;
VNA.InputBufferSize = MAX_SWEEP_POINTS*8; 
% # Open object(VNA)
fopen(VNA);

%% # Read instrument setting
fprintf(VNA,'FORM:DATA ASC\n');
fprintf(VNA,'SWE:POIN?\n');
sweeppnts = str2double(fscanf(VNA));
fprintf(VNA,':SYST:FREQ? MIN\n');
Freq_start = str2double(fscanf(VNA));
fprintf(VNA,':SYST:FREQ? MAX\n');
Freq_stop = str2double(fscanf(VNA));

%% # Read trace1 - float32
fprintf(VNA,'FORM:DATA REAL,32\n');
% # sweep n times
nsweep = 100;
fprintf(VNA,sprintf('SWE:COUN %d\\n', nsweep));
% # Start sweep
fprintf(VNA,'INIT1:CONT OFF; :INIT1:IMMediate; *WAI\n');
% # Read n times trace1 totally
data = zeros(sweeppnts*2,nsweep);
S_Real = zeros(sweeppnts,nsweep);
S_imag = zeros(sweeppnts,nsweep);
S = zeros(sweeppnts,nsweep);
for i=1:nsweep
    fprintf(VNA,sprintf('CALC1:DATA:NSW:FIRS? SDAT, %d; *WAI\\n',i));
    header=fread(VNA,2,'char');
    digits=str2double(char(header(2)));    
    datalen = fread(VNA,digits,'char');
    LenOfData=str2double(char(datalen)); 
    data(:,i) = fread(VNA, LenOfData/4,'float32');
    eos = fscanf(VNA);
    % complex
    S_Real(:,i) = data(1:2:2*sweeppnts,i);
    S_imag(:,i) = data(2:2:2*sweeppnts,i);
    S(:,i) = S_Real(:,i)+1i*S_imag(:,i);
end
%% # close VNA
fclose(VNA);

相关新闻

在线咨询
分享本页
返回顶部