This VBScript program performs an Unguided Calibration simultaneously on two channels.
This could be used in the following cases:
If you need more than the current number of data points per trace, so the additional points must be added to a different channel.
If you need several channels with independent settings, but you want to calibrate all channels with a minimal number of standard connections. This would be especially critical for on wafer calibration.
The SCPI commands in this example are sent over a COM interface using the SCPIStringParser object. You do NOT need a GPIB connection to run this example.
This VBScript (*.vbs) program can be run as a macro in the PNA. To do this, copy the following code into a text editor file such as Notepad and save it on the PNA hard drive as Unguided.vbs. Learn how to setup and run the macro.
Dim app Dim scpi Dim NumberOfActiveChannels NumberOfActiveChannels = 2 ' Create / Get the PNA application. Set app = CreateObject("AgilentPNA835x.Application") Set scpi = app.ScpiStringParser ' Query the list of connectors that the PNA system recognizes scpi.Execute("SYST:PRES") 'Wait for successful preset before continuing done=scpi.Execute("*OPC?") 'The following section sets up 2 channels with different frequency ranges scpi.Execute("DISP:WIND1:STATE OFF") 'Reset Windows scpi.Execute("DISP:WIND1:STATE ON") scpi.Execute("DISP:WIND2:STATE ON") ' ' Assign a measurement to the first window scpi.Execute("CALC1:PAR:DEF:EXT 'Meas1', S21") scpi.Execute("DISP:WIND1:TRAC1:FEED 'Meas1'") 'Assign a measurement to the second window scpi.Execute("CALC2:PAR:DEF:EXT 'Meas2', S21") scpi.Execute("DISP:WIND2:TRAC1:FEED 'Meas2'") 'Set up two channels with independent parameters scpi.Execute("SENS1:FREQ:SPAN 1e9") scpi.Execute("SENS2:FREQ:SPAN 1e6") 'Wait for changes before continuing done=scpi.Execute("*OPC?") ' 'This section sets the calibration kits for channel 1 and channel 2 'Select a trace from channel 1 and set calibration type and cal kit scpi.Execute("CALC1:PAR:SEL 'Meas1'") scpi.Execute("SENS1:CORR:COLL:METH SPARSOLT") scpi.Execute("SENS1:CORR:COLL:CKIT 2") '85056D for default settings 'Same standards for forward and reverse direction scpi.Execute("SENS1:CORR:TST OFF") 'Select a trace from channel 2 and set calibration type and cal kit scpi.Execute("CALC2:PAR:SEL 'Meas2'") scpi.Execute("SENS2:CORR:COLL:METH SPARSOLT") scpi.Execute("SENS2:CORR:COLL:CKIT 2") '85056D for default settings 'Same standards for forward and reverse direction scpi.Execute("SENS2:CORR:TST OFF")
'Set both channels to manual triggering scpi.Execute("INIT1:CONT OFF") scpi.Execute("INIT2:CONT OFF") ' 'The following assumes female port connector on port 1 ' and male port connector on port 1 'Step through all active channels and calibrate and measure all standards. scpi.Execute("SENS1:CORR:SFOR ON") 'Set acquisition to forward scpi.Execute("SENS2:CORR:SFOR ON") 'Set acquisition to forward MsgBox("Connect OPEN standard to port 1") For CurrentChannel = 1 To NumberOfActiveChannels scpi.Execute("CALC" & CurrentChannel & ":PAR:SEL 'Meas" & CurrentChannel & "'") scpi.Execute("SENS" & CurrentChannel & ":CORR:COLL stan1") done= scpi.Execute("*OPC?") Next
MsgBox("Connect SHORT standard to port 1") For CurrentChannel = 1 To NumberOfActiveChannels scpi.Execute("CALC" & CurrentChannel & ":PAR:SEL 'Meas" & CurrentChannel & "'") scpi.Execute("SENS" & CurrentChannel & ":CORR:COLL stan2") done=scpi.Execute("*OPC?") Next
MsgBox("Connect LOAD standard to port 1") For CurrentChannel = 1 To NumberOfActiveChannels scpi.Execute("CALC" & CurrentChannel & ":PAR:SEL 'Meas" & CurrentChannel & "'") scpi.Execute("SENS" & CurrentChannel & ":CORR:COLL stan3") done=scpi.Execute("*OPC?") Next scpi.Execute("SENS1:CORR:SFOR OFF") 'Set acquisition to reverse scpi.Execute("SENS2:CORR:SFOR OFF") 'Set acquisition to forward
MsgBox("Connect OPEN standard to port 2") For CurrentChannel = 1 To NumberOfActiveChannels scpi.Execute("CALC" & CurrentChannel & ":PAR:SEL 'Meas" & CurrentChannel & "'") scpi.Execute("SENS" & CurrentChannel & ":CORR:COLL stan1") done=scpi.Execute("*OPC?") Next
MsgBox("Connect SHORT standard to port 2") For CurrentChannel = 1 To NumberOfActiveChannels scpi.Execute("CALC" & CurrentChannel & ":PAR:SEL 'Meas" & CurrentChannel & "'") scpi.Execute("SENS" & CurrentChannel & ":CORR:COLL stan2") done=scpi.Execute("*OPC?") Next
MsgBox("Connect LOAD standard to port 2") For CurrentChannel = 1 To NumberOfActiveChannels scpi.Execute("CALC" & CurrentChannel & ":PAR:SEL 'Meas" & CurrentChannel & "'") scpi.Execute("SENS" & CurrentChannel & ":CORR:COLL stan3") done=scpi.Execute("*OPC?") Next ' 'Measure thru standard for all channels in both forward and reverse direction MsgBox("Connect THRU between ports 1 and 2") scpi.Execute("SENS1:CORR:SFOR ON") 'Set acquisition to forward scpi.Execute("SENS2:CORR:SFOR ON") 'Set acquisition to forward For CurrentChannel = 1 To NumberOfActiveChannels scpi.Execute("CALC" & CurrentChannel & ":PAR:SEL 'Meas" & CurrentChannel & "'") scpi.Execute("SENS" & CurrentChannel & ":CORR:COLL stan4") done=scpi.Execute("*OPC?") Next scpi.Execute("SENS1:CORR:SFOR OFF") 'Set acquisition to reverse scpi.Execute("SENS2:CORR:SFOR OFF") 'Set acquisition to reverse For CurrentChannel = 1 To NumberOfActiveChannels scpi.Execute("CALC" & CurrentChannel & ":PAR:SEL 'Meas" & CurrentChannel & "'") scpi.Execute("SENS" & CurrentChannel & ":CORR:COLL stan4") done=scpi.Execute("*OPC?") Next
For CurrentChannel = 1 To NumberOfActiveChannels scpi.Execute("CALC" & CurrentChannel & ":PAR:SEL 'Meas" & CurrentChannel & "'") scpi.Execute("SENS" & CurrentChannel & ":CORR:COLL:SAVE") done=scpi.Execute("*OPC?") Next
'Set both channels to continuous triggering scpi.Execute("INIT1:CONT ON") scpi.Execute("INIT2:CONT ON")
|