FAQs from Rohde & Schwarz

Manejo remoto de los resultados de una medición del analizador de redes vectoriales (VNA) con comandos SCPI

Descripción

Se le pide al usuario que mueva los resultados de un analizador de redes a la PC controladora o a una unidad de red.

Solución

Mientras se ejecuta la automatización de las mediciones, normalmente es necesario guardar o procesar los resultados. En este contexto se puede hablar de dos opciones diferentes,

  • Transferencia de archivos, cuando un conjunto de resultados se mueven del VNA a una determinada unidad de red
  • Transferencia de datos, cuando los datos se mueven del VNA al entorno de programación o área de trabajo para su posterior procesamiento «in program» (en programa)

El ejemplo que Matlab propone a continuación, da una introducción para abordar dos casos con el analizador R&S®ZNB20. Para el enfoque de transferencia de archivos, un conjunto de parámetros-S o archivos referentes se guardan en una memoria USB que se conecta al VNA bajo D:\. Para el caso de transferencia de datos, una traza activa se mueve del VNA al Matlab y se grafica para su verificación.

+++Código+++

% Condiciones previas:
% - R&S VISA 5.11.0 instalado o posterior con R&S VISA.NET

%% Abrir la sesión
clc;
inst_handle = visa('rs','TCPIP0::10.205.0.51::hislip0::INSTR'); %conexión visa, se requiere caja de herramientas
inst_handle.OutputBufferSize = 1000000; %tamaño de búfer en bytes
inst_handle.InputBufferSize = 1000000;
fopen(inst_handle);
clc;

fprintf(inst_handle,'*IDN?'); %estado de verificación de instrumento
a=fscanf(inst_handle);
disp(a);

fprintf(inst_handle,"*RST"); %esta sección presenta cuatro trazas en pantalla
fprintf(inst_handle,"*CLS");
fprintf(inst_handle,'CONF:CHAN1:STAT ON');
fprintf(inst_handle,'SWEep:TYPE LIN');
points=201; %número de puntos, define resolución de la traza
fprintf(inst_handle, 'SENSE1:SWEEP:POINTS %d',points);
fcenter=1000000000;
fprintf(inst_handle,'FREQ:CENT %d',fcenter); %Define la frecuencia de central
fspan= 500000000;
fprintf(inst_handle,'FREQ:SPAN %d',fspan); %Configura la longitud
fprintf(inst_handle,'SOUR:POW -20');
fprintf(inst_handle,'BANDwidth 1000');
fprintf(inst_handle,'TRIG:SOUR IMM');
fprintf(inst_handle,'CALCulate:PARameter:DELete:ALL');
fprintf(inst_handle,'CALC1:PAR:SDEF "Ch1Trc1", "S21" ');
fprintf(inst_handle,'DISP:WIND1:TRAC1:FEED "Ch1Trc1"');
fprintf(inst_handle,'CALC1:PAR:SDEF "Ch1Trc2", "S11" ');
fprintf(inst_handle,'DISP:WIND1:TRAC2:FEED "Ch1Trc2"');
fprintf(inst_handle,'CALC1:PAR:SDEF "Ch1Trc3", "S12" ');
fprintf(inst_handle,'DISP:WIND1:TRAC3:FEED "Ch1Trc3"');
fprintf(inst_handle,'CALC1:PAR:SDEF "Ch1Trc4", "S22" ');
fprintf(inst_handle,'DISP:WIND1:TRAC4:FEED "Ch1Trc4"');

fprintf(inst_handle,'INIT:CONT:ALL OFF'); %Active modo de solo barrido para todos lo canales.
fprintf(inst_handle,'INIT:ALL;*WAI'); %Iniciar un solo barrido en todos los canales.

tiempo límite=30; %configurar tiempo límite en segundos
(inst_handle,'Timeout',tiempo límite; %tiempo límite incrementado antes de la adquisición para evitar errores de sincronización

fprintf(inst_handle,'MMEMory:CDIRectory "D:\"'); %defina directorio actual para una memoria USB que se muestra como D: en Windows
fprintf(inst_handle,'MMEMory:CDIRectory?'); %explorador de archivos, aquí es donde se guardaran los parámetros S
directory_path=fscanf(inst_handle); %concepto de «Transferencia de archivos»
X = 'Directorio de destino para guardar el archivo s2p=';
disp(X);
disp(directory_path);
fprintf(' Guardar archivos del parámetro S ...\n ');
fprintf(inst_handle,'MMEM:STOR:TRAC:CHAN 1,"vna_traces.s2p"');

% Transfiera una traza al área de trabajo de Matlab, concepto de transferencia de datos

fprintf(inst_handle,'INIT1:IMM;*WAI'); %ejecute solo barrido para el canal1
fprintf ('Buscando puntos de datos ...\n ');

fprintf(inst_handle,':FORM REAL,32');
fprintf(inst_handle,'CALC1:DATA:TRAC? "Ch1Trc4", FDAT');

datos = binblockread(inst_handle,'float32');
fread(inst_handle,1); %fread remueve el terminador extra en el búfer
tiempo límite=1; %el tiempo límite en segundos regresa a un valor normal
set(inst_handle,'Timeout',tiempo límite);

%--------------Presentación de la traza en un gráfico---------
fstart=fcenter-fspan/2;
fstop=fcenter+fspan/2;
resolución=fspan/points;
points_array=1:1:points;
for c = 1:points %escala del eje temporal y datos de potencia
points_array(1,c)=points_array(1,c)*resolución;
points_array(1,c)=points_array(1,c) + fstart;
fin del
gráfico(points_array,data);
fprintf(inst_handle,':SYST:ERR?\n'); %verificación de la cola de errores
a=fscanf(inst_handle);
disp(a);
fclose(inst_handle);

+++

Antes de ejecutar el código, la pantalla del analizador se veía como la que se indica a continuación. La traza que se obtuvo de Matlab se superpuso mientras que se añadieron de manera manual un par de marcadores como un control de los datos capturados,

Aquí también la salida de Matlab para propósitos de verificación en términos de errores y de versión FW en el R&S®ZNB20 junto con la ubicación de los parámetros-S guardados bajo D:\ en el VNA:

Como detalle adicional, puede también verificarse la transmisión de la traza seleccionada con el RS Visa Tester Trace Tool. Después de ejecutar el programa, se observó

El símbolo hash # introduce el bloque de datos. El número siguiente indica cuántos de los dígitos siguientes describen la longitud del bloque de datos. En este ejemplo, los tres siguientes dígitos indican que la longitud es de 804 byte. La cual coincide con el número de puntos seleccionados, 201 en este ejemplo. El comando FORM REAL,32 asigna cuatro bytes por punto de datos.

Referencias: