远程控制网络分析仪,实现快速扫描速度和批量数据读取的方法
在使用网络分析仪搭建测试系统进行自动测量时,特别是天线测量系统,要多次连续扫描并获取所有数据,要求快的测量速度。矢量网络分析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);