Other topics about Sample Programs
The program listed in this section is a sample program that demonstrates how to configure measurement conditions.
The sample program puts the instrument into the preset state, configures it as shown in table below, and saves the settings to a file named sample.sta.
See Setting up Analyzer for this programming.
Target settings
Item |
Setting |
||
Window Layout |
Channel 1 in the upper window (2/3 of the screen height) and channel 2 in the lower window (1/3 of the screen height) |
||
Channel 1 |
Sweep type |
Segment |
|
Sweep range |
See Segment table. |
||
Number of measurement points |
|||
IF bandwidth |
|||
Power |
|||
Number of traces |
4 |
||
Graph Layout |
Four graphs at upper left, upper right, lower left, and lower right. |
||
Trace 1 |
Measurement parameter |
S11 |
|
Data format |
Smith chart (Lin) |
||
Full-scale value |
2 |
||
Trace 2 |
Measurement parameter |
S21 |
|
Data format |
Log magnitude |
||
Reference division line number |
9 |
||
Reference division line value |
2 |
||
Scale per division |
10 dBm |
||
Trace 3 |
Measurement parameter |
S12 |
|
Data format |
Log magnitude |
||
Reference division line number |
9 |
||
Reference division line value |
2 |
||
Scale per division |
10 dBm |
||
Trace 4 |
Measurement parameter |
S22 |
|
Data format |
Smith chart (Lin) |
||
Full-scale value |
2 |
||
Channel 2 |
Sweep type |
Linear |
|
Sweep range |
Center value |
1.9 GHz |
|
Span value |
500 MHz |
||
Number of measurement points |
101 |
||
IF bandwidth |
70 kHz |
||
Power |
0 dBm |
||
Number of traces |
4 |
||
Graph Layout |
Two graphs at left and right |
||
Trace 1 |
Measurement parameter |
S21 |
|
Data format |
Log magnitude |
||
Reference division line number |
9 |
||
Reference division line value |
2 |
||
Scale per division |
10 dBm |
||
Trace 2 |
Measurement parameter |
S22 |
|
Data format |
Smith chart (Lin) |
||
Full-scale value |
2 |
Segment table for channel 1
Segment Number |
Start value |
Stop value |
Number of measurement points |
IF bandwidth |
Power |
1 |
1.7 GHz |
1.9 GHz |
21 |
50 kHz |
0 dBm |
2 |
1.9 GHz |
2 GHz |
101 |
10 kHz |
-10 dBm |
3 |
2 GHz |
2.2 GHz |
21 |
50 kHz |
0 dBm |
Sub Setup()
'
Dim defrm As Long
Dim vi As Long
Const TimeOutTime = 20000
Dim Allocate1 As String, Allocate2 As String, File As String
Dim Para1(4) As String, Para2(2) As String
Dim Fmt1(4) As String, Fmt2(2) As String
Dim Star1(3) As String, Stop1(3) As String
Dim IfBw1(3) As Double, IfBw2 As Double
Dim Power1(3) As Double, Power2 As Double
Dim Cent2 As Double, Span2 As Double
Dim RefLev1(4) As Double, RefLev2(2) As Double, Scale1(4) As Double, Scale2(2) As Double
Dim Segm As Integer, Nop1(3) As Integer, Nop2 As Integer
Dim NumOfTr1 As Integer, NumOfTr2 As Integer
Dim RefPos1(4) As Integer, RefPos2(2) As Integer
Dim SendData As String
'
Segm = 3 ' Number of Segment Ch.1 : 3
Star1(1) = "1.7E9" ' Start Frequency Ch.1 Segm.1: 1.7 GHz
Star1(2) = "1.9E9" ' Segm.2: 1.9 GHz
Star1(3) = "2E9" ' Segm.3: 2 GHz
Stop1(1) = "1.9E9" ' Stop Frequency Ch.1 Segm.1: 1.9 GHz
Stop1(2) = "2E9" ' Segm.2: 2 GHz
Stop1(3) = "2.2E9" ' Segm.3: 2.2 GHz
Cent2 = 1900000000# ' Center Frequency Ch.2 : 1.9 GHz
Span2 = 500000000# ' Span Ch.2 : 500 MHz
Nop1(1) = 21 ' Number of points Segm.1: 21
Nop1(2) = 101 ' Segm.2: 101
Nop1(3) = 21 ' Segm.3: 21
Nop2 = 101 ' Ch.2 : 101
IfBw1(1) = 50000# ' IFBW Ch.1 Segm.1: 50 kHz
IfBw1(2) = 10000# ' Segm.2: 10 kHz
IfBw1(3) = 50000# ' Segm.3: 50 kHz
IfBw2 = 70000# ' Ch.2 : 70 kHz
Power1(1) = 0 ' Power Ch.1 Segm.1: 0 dBm
Power1(2) = -10 ' Segm.2: -10 dBm
Power1(3) = 0 ' Segm.3: 0 dBm
Power2 = 0 ' Ch.2 : 0 dBm
NumOfTr1 = 4 ' Number of Trace Ch.1 : 4
NumOfTr2 = 2 ' Ch.2 : 2
Allocate1 = "D12_34" ' Allocate Traces Ch.1 : D12_34
Allocate2 = "D12" ' Ch.2 : D12
Para1(1) = "S11" ' Measurement Ch.1 Trace1: S11
Para1(2) = "S21" ' Parameter Trace2: S21
Para1(3) = "S12" ' Trace3: S12
Para1(4) = "S22" ' Trace4: S22
Para2(1) = "S31" ' Ch.2 Trace1: S31
Para2(2) = "S33" ' Trace2: S33
Fmt1(1) = "SLIN" ' Data Format Ch.1 Trace1: Smith(Lin/Phase)
Fmt1(2) = "MLOG" ' Trace2: Log Mag
Fmt1(3) = "MLOG" ' Trace3: Log Mag
Fmt1(4) = "SLIN" ' Trace4: Smith(Lin/Phase)
Fmt2(1) = "MLOG" ' Ch.2 Trace1: Log Mag
Fmt2(2) = "SLIN" ' Trace2: Smith(Lin/Phase)
RefPos1(1) = 9 ' Reference Ch.1 Trace2: 9
RefPos1(2) = 9 ' Position Trace3: 9
RefPos2(1) = 9 ' Ch.2 Trace1: 9
RefLev1(1) = 0 ' Reference Level Ch.1 Trace2: 0 dBm
RefLev1(2) = 0 ' Trace3: 0 dBm
RefLev2(1) = 0 ' Ch.2 Trace1: 0 dBm
Scale1(1) = 2 ' Scale Ch.1 Trace1: 2
Scale1(2) = 10 ' Trace2: 10 dBm
Scale1(3) = 10 ' Trace3: 10 dBm
Scale1(4) = 2 ' Trace4: 2
Scale2(1) = 10 ' Ch.2 Trace1: 10 dBm
Scale2(2) = 2 ' Trace2: 2
StaFileName = "sample.sta" ' Save File Name : sample.sta
'
' Assigns a GPIB address to the I/O pass.
Call viOpenDefaultRM(defrm)
Call viOpen(defrm, "GPIB0::17::INSTR", 0, 0, vi)
Call viSetAttribute(vi, VI_ATTR_TMO_VALUE, TimeOutTime) ' Set time out
'
Call viVPrintf(vi, ":SYST:PRES" + vbLf, 0)
Call viVPrintf(vi, ":DISP:SPL D1_1_2" + vbLf, 0) 'Allocate Channel
Call viVPrintf(vi, ":INIT1:CONT ON" + vbLf, 0) 'Turn on Continuous Activation mode for channel 1
Call viVPrintf(vi, ":INIT2:CONT ON" + vbLf, 0) 'Turn on Continuous Activation mode for channel 2
' ===============
' Setup Channel 1
' ===============
Call viVPrintf(vi, ":SENS1:SWE:TYPE SEGM" + vbLf, 0) 'Sets channel 1 sweep type to segment
'
' Create the data string for Segment Table
SendData = "5,0,1,1,0,0," & Str(Segm)
For i = 1 To Segm
SendData = SendData + "," & Star1(i) & "," + Stop1(i) & "," & CStr(Nop1(i)) & "," & CStr(IfBw1(i)) & "," & CStr(Power1(i))
Next i
Call viVPrintf(vi, ":SENS1:SEGM:DATA " + SendData + vbLf, 0)
'
Call viVPrintf(vi, ":CALC1:PAR:COUN " & CStr(NumOfTr1) & vbLf, 0) 'Set number of traces
Call viVPrintf(vi, ":DISP:WIND1:SPL " & Allocate1 & vbLf, 0) 'Set graph layout
For i = 1 To NumOfTr1
Call viVPrintf(vi, ":CALC1:PAR" & CStr(i) & ":DEF " & Para1(i) & vbLf, 0) 'Set measurement parameter
Call viVPrintf(vi, ":CALC1:PAR" & CStr(i) & ":SEL" & vbLf, 0) ' Make trace active
Call viVPrintf(vi, ":CALC1:FORM " & Fmt1(i) & vbLf, 0) ' Set data format
'
Select Case Fmt1(i)
Case "SLIN", "SLOG", "SCOM", "SMIT", "SADM", "PLIN", "PLOG", "POL"
' If data format is neither Smith chart nor polar, sets reference division line number and scale per division
Call viVPrintf(vi, ":DISP:WIND1:TRAC" & CStr(i) & ":Y:PDIV " + CStr(Scale1(i)) + vbLf, 0)
Case Else
' If data format is Smith chart or polar, set full-scale value
Call viVPrintf(vi, ":DISP:WIND1:TRAC" & CStr(i) & ":Y:RPOS " & CStr(RefPos1(i)) & vbLf, 0)
Call viVPrintf(vi, ":DISP:WIND1:TRAC" & CStr(i) & ":Y:RLEV " & CStr(RefLev1(i)) & vbLf, 0)
Call viVPrintf(vi, ":DISP:WIND1:TRAC" & CStr(i) & ":Y:PDIV " & CStr(Scale1(i)) & vbLf, 0)
End Select
Next i
' ===============
' Setup Channel 2
' ===============
Call viVPrintf(vi, ":SENS2:SWE:TYPE LIN " + vbLf, 0) ' Set sweep type to linear
Call viVPrintf(vi, ":SENS2:FREQ:CENT " + CStr(Cent2) + vbLf, 0) ' Set center frequency
Call viVPrintf(vi, ":SENS2:FREQ:SPAN " + CStr(Span2) + vbLf, 0) ' Set span frequency
Call viVPrintf(vi, ":SENS2:SWE:POIN " + CStr(Nop2) + vbLf, 0) ' Set number of points
Call viVPrintf(vi, ":SENS2:BAND " + CStr(IfBw2) + vbLf, 0) ' Set IFBW
Call viVPrintf(vi, ":SOUR2:POW " + CStr(Power2) + vbLf, 0) ' Set power level
Call viVPrintf(vi, ":CALC2:PAR:COUN " & CStr(NumOfTr2) & vbLf, 0) ' Set number of traces
Call viVPrintf(vi, ":DISP:WIND2:SPL " & Allocate2 & vbLf, 0) 'Set graph layout
For i = 1 To NumOfTr2
Call viVPrintf(vi, ":CALC2:PAR" & CStr(i) & ":DEF " & Para2(i) & vbLf, 0) 'Set measurement parameter
Call viVPrintf(vi, ":CALC2:PAR" & CStr(i) & ":SEL" & vbLf, 0) ' Make trace active
Call viVPrintf(vi, ":CALC2:FORM " & Fmt2(i) & vbLf, 0) ' Set data format
'
Select Case Fmt2(i)
Case "SLIN", "SLOG", "SCOM", "SMIT", "SADM", "PLIN", "PLOG", "POL"
' If data format is neither Smith chart nor polar, sets reference division line number and scale per division
Call viVPrintf(vi, ":DISP:WIND2:TRAC" & CStr(i) & ":Y:PDIV " + CStr(Scale2(i)) + vbLf, 0)
Case Else
' If data format is Smith chart or polar, set full-scale value
Call viVPrintf(vi, ":DISP:WIND2:TRAC" & CStr(i) & ":Y:RPOS " & CStr(RefPos2(i)) & vbLf, 0)
Call viVPrintf(vi, ":DISP:WIND2:TRAC" & CStr(i) & ":Y:RLEV " & CStr(RefLev2(i)) & vbLf, 0)
Call viVPrintf(vi, ":DISP:WIND2:TRAC" & CStr(i) & ":Y:PDIV " & CStr(Scale2(i)) & vbLf, 0)
End Select
Next i
'
Call viVPrintf(vi, ":MMEM:STOR """ & StaFileName & """" & vbLf, 0) ' Save ENA settings to file
' Close IO
Call viClose(vi)
Call viClose(defrm)
End Sub
10 DIM Allocate1$[9],Allocate2$[9],File$[20]
20 DIM Para1$(1:4)[9],Para2$(1:2)[9],Fmt1$(1:4)[9],Fmt2$(1:2)[9]
30 REAL Star1(1:3),Stop1(1:3),Pow1(1:3),Cent2,Span2,Pow2
40 REAL Ref_rev1(1:4),Ref_rev2(1:2),Scale1(1:4),Scale2(1:2)
50 INTEGER Segm,Nop1(1:3),Nop2,Num_of_tr1,Num_of_tr2
60 INTEGER Ref_pos1(1:4),Ref_pos2(1:2),I
70 ASSIGN @Agte507x TO 717
80 !
90 Segm=3 ! Number of Segment Ch.1 : 3
100 Star1(1)=1.7E+9 ! Start Frequency Ch.1 Segm.1: 1.7 GHz
110 Star1(2)=1.9E+9 ! Segm.2: 1.9 GHz
120 Star1(3)=2.E+9 ! Segm.3: 2 GHz
130 Stop1(1)=1.9E+9 ! Stop Frequency Ch.1 Segm.1: 1.9 GHz
140 Stop1(2)=2.E+9 ! Segm.2: 2 GHz
150 Stop1(3)=2.2E+9 ! Segm.3: 2.2 GHz
160 Cent2=1.9E+9 ! Center Frequency Ch.2 : 1.9 GHz
170 Span2=5.00E+8 ! Span Ch.2 : 500 MHz
180 Nop1(1)=21 ! Number Ch.1 Segm.1: 21
190 Nop1(2)=101 ! of Points Segm.2: 101
200 Nop1(3)=21 ! Segm.3: 21
210 Nop2=101 ! Ch.2 : 101
220 If_bw1(1)=5.0E+4 ! IF Bandwidth Ch.1 Segm.1: 50 kHz
230 If_bw1(2)=1.0E+4 ! Segm.2: 10 kHz
240 If_bw1(3)=5.0E+4 ! Segm.3: 50 kHz
250 If_bw2=7.0E+4 ! Ch.2 : 70 kHz
260 Pow1(1)=0 ! Power Ch.1 Segm.1: 0 dBm
270 Pow1(2)=-10 ! Segm.2: -10 dBm
280 Pow1(3)=0 ! Segm.3: 0 dBm
290 Pow2=0 ! Ch.2 : 0 dBm
300 Num_of_tr1=4 ! Number Ch.1 : 4
310 Num_of_tr2=2 ! of Traces Ch.2 : 2
320 Allocate1$="D12_34" ! Allocate Traces Ch.1 : D12_34
330 Allocate2$="D12" ! Ch.2 : D12
340 Para1$(1)="S11" ! Measurement Ch.1 Trace1: S11
350 Para1$(2)="S21" ! Parameter Trace2: S21
360 Para1$(3)="S12" ! Trace3: S12
370 Para1$(4)="S22" ! Trace4: S22
380 Para2$(1)="S31" ! Ch.2 Trace1: S31
390 Para2$(2)="S33" ! Trace2: S33
400 Fmt1$(1)="SLIN" ! Data Format Ch.1 Trace1: Smith(Lin/Phase)
410 Fmt1$(2)="MLOG" ! Trace2: Log Mag
420 Fmt1$(3)="MLOG" ! Trace3: Log Mag
430 Fmt1$(4)="SLIN" ! Trace4: Smith(Lin/Phase)
440 Fmt2$(1)="MLOG" ! Ch.2 Trace1: Log Mag
450 Fmt2$(2)="SLIN" ! Trace2: Smith(Lin/Phase)
460 Ref_pos1(2)=9 ! Reference Ch.1 Trace2: 9
470 Ref_pos1(3)=9 ! Position Trace3: 9
480 Ref_pos2(1)=9 ! Ch.2 Trace1: 9
490 Ref_lev1(2)=0 ! Reference Level Ch.1 Trace2: 0 dBm
500 Ref_lev1(3)=0 ! Trace3: 0 dBm
510 Ref_lev2(1)=0 ! Ch.2 Trace1: 0 dBm
520 Scale1(1)=2 ! Scale Ch.1 Trace1: 2
530 Scale1(2)=10 ! Trace2: 10 dBm
540 Scale1(3)=10 ! Trace3: 10 dBm
550 Scale1(4)=2 ! Trace4: 2
560 Scale2(1)=10 ! Ch.2 Trace1: 10 dBm
570 Scale2(2)=2 ! Trace2: 2
580 File$="sample.sta" ! Save File Name : sample.sta
590 !
600 OUTPUT @Agte507x;":SYST:PRES"
610 !
620 OUTPUT @Agte507x;":DISP:SPL D1_1_2"
630 OUTPUT @Agte507x;":INIT1:CONT ON"
640 OUTPUT @Agte507x;":INIT2:CONT ON"
650 !
660 ! Channel 1
670 !
680 OUTPUT @Agte507x;":SENS1:SWE:TYPE SEGM"
690 OUTPUT @Agte507x;":SENS1:SEGM:DATA 5,0,1,1,0,0,";Segm;",";
700 FOR I=1 TO Segm-1
710 OUTPUT @Agte507x;Star1(I);",";Stop1(I);",";Nop1(I);",";If_bw1 (I);",";Pow1(I);",";
720 NEXT I
730 OUTPUT @Agte507x;Star1(Segm);",";Stop1(Segm);",";Nop1(Segm);"," ;If_bw1(Segm);",";Pow(Segm)
740 !
750 OUTPUT @Agte507x;":CALC1:PAR:COUN ";Num_of_tr1
760 OUTPUT @Agte507x;":DISP:WIND1:SPL "&Allocate1$
770 FOR I=1 TO Num_of_tr1
780 OUTPUT @Agte507x;":CALC1:PAR"&VAL$(I)&":DEF "&Para1$(I)
790 OUTPUT @Agte507x;":CALC1:PAR"&VAL$(I)&":SEL"
800 OUTPUT @Agte507x;":CALC1:FORM "&Fmt1$(I)
810 SELECT Fmt1$(I)
820 CASE "SLIN","SLOG","SCOM","SMIT","SADM","PLIN","PLOG","POL"
830 OUTPUT @Agte507x;":DISP:WIND1:TRAC"&VAL$(I)&":Y:PDIV "; Scale1(I)
840 CASE ELSE
850 OUTPUT @Agte507x;":DISP:WIND1:TRAC"&VAL$(I)&":Y:RPOS "; Ref_pos1(I)
860 OUTPUT @Agte507x;":DISP:WIND1:TRAC"&VAL$(I)&":Y:RLEV "; Ref_rev1(I)
870 OUTPUT @Agte507x;":DISP:WIND1:TRAC"&VAL$(I)&":Y:PDIV "; Scale1(I)
880 END SELECT
890 NEXT I
900 !
910 ! Channel 2
920 !
930 OUTPUT @Agte507x;":SENS2:SWE:TYPE LIN"
940 OUTPUT @Agte507x;":SENS2:FREQ:CENT ";Cent2
950 OUTPUT @Agte507x;":SENS2:FREQ:SPAN ";Span2
960 OUTPUT @Agte507x;":SENS2:SWE:POIN ";Nop2
970 OUTPUT @Agte507x;":SENS2:BAND ";If_bw2
980 OUTPUT @Agte507x;":SOUR2:POW ";Pow2
990 !
1000 OUTPUT @Agte507x;":CALC2:PAR:COUN ";Num_of_tr2
1010 OUTPUT @Agte507x;":DISP:WIND2:SPL "&Allocate2$
1020 FOR I=1 TO Num_of_tr2
1030 OUTPUT @Agte507x;":CALC2:PAR"&VAL$(I)&":DEF "&Para2$(I)
1040 OUTPUT @Agte507x;":CALC2:PAR"&VAL$(I)&":SEL"
1050 OUTPUT @Agte507x;":CALC2:FORM "&Fmt2$(I)
1060 SELECT Fmt2$(I)
1070 CASE "SLIN","SLOG","SCOM","SMIT","SADM","PLIN","PLOG","POL"
1080 OUTPUT @Agte507x;":DISP:WIND2:TRAC"&VAL$(I)&":Y:PDIV "; Scale2(I)
1090 CASE ELSE
1100 OUTPUT @Agte507x;":DISP:WIND2:TRAC"&VAL$(I)&":Y:RPOS "; Ref_pos2(I)
1110 OUTPUT @Agte507x;":DISP:WIND2:TRAC"&VAL$(I)&":Y:RLEV "; Ref_rev2(I)
1120 OUTPUT @Agte507x;":DISP:WIND2:TRAC"&VAL$(I)&":Y:PDIV "; Scale2(I)
1130 END SELECT
1140 NEXT I
1150 !
1160 OUTPUT @Agte507x;":MMEM:STOR """&File$&""""
1170 END