This VBScript example creates and calibrates a GCX measurement and performs Compression analysis.
This VBScript (*.vbs) program can be run as a macro in the VNA. To do this, copy the following code into a text editor file such as Notepad and save it on the VNA hard drive as GCX.vbs. Learn how to setup and run the macro.
See Gain Compression Object and Converter Object
option explicit dim CompLevel, Tolerance, StartFreq, StopFreq, LOFreq, NumFreqs, Scale, LinearPower dim AcqMode, BackOff, StartPower, StopPower, NumPowers, EnableInterp, CompAlg dim DwellTime, IFBandwidth, ShowIterations, host, app, parser CompLevel = 1 ' 1 dB compression level Tolerance = 0.05 ' SMART Sweep tolerance StartFreq = 2.5E9 StopFreq = 2.6E9 LOFreq = 1.7E9 NumFreqs = 21 Scale = 0.1 LinearPower = -10 BackOff = 10 ' Not used for Deviation from linear gain StartPower = -20 StopPower = 8 NumPowers = 60 ' Not used for SMART Sweep DwellTime = 0.0005 ' Allow some time for DUT bias/thermal effects IFBandwidth = 1000 ' Reasonable trace noise at -20 dBm EnableInterp = False ' Disable interpolation AcqMode = 0 ' Smart Sweep CompAlg = 0 ' Deviation from linear gain ShowIterations = False ' Configure SMART to not show iteration results dim objargs set objargs = wscript.Arguments if (objArgs.Count = 1) then host = objargs(0) '---------------------------------------------------------- ' Create and Configuration GCX Channel: '---------------------------------------------------------- set app = CreateObject("Agilentpna835x.application") call SetupGCAX( parser,_ StartFreq,_ StopFreq,_ LOFreq,_ NumFreqs,_ EnableInterp,_ Scale,_ CompLevel,_ LinearPower,_ AcqMode,_ BackOff,_ StartPower,_ StopPower,_ NumPowers,_ CompAlg,_ DwellTime,_ IFBAndwidth,_ ShowIterations ) call CalGCAX( parser ) '---------------------------------------------------------- ' GCAX Setup '---------------------------------------------------------- sub SetupGCAX( parser, StartFreq, StopFreq, LOFreq, NumFreqs, EnableInterp, Scale, CompLevel, LinearPower,_ AcqMode, BackOff, StartPower, StopPower, NumPowers, CompAlg, DwellTime, IFBAndwidth,_ ShowIterations ) dim chan, gca app.reset app.CreateCustomMeasurementEx 1, "Gain Compression Converters", "SC21", 1 set chan = app.channels(1) dim converter set converter = chan.Converter() chan.hold 1 app.CreateCustomMeasurementEx 1, "Gain Compression Converters", "CompIn21", 1 app.CreateCustomMeasurementEx 1, "Gain Compression Converters", "DeltaGain21", 1 app.nawindows(1).traces(3).YScale = Scale app.nawindows(1).traces(3).ReferenceValue = -CompLevel set gca = chan.CustomChannelConfiguration gca.InputLinearPowerLevel = LinearPower gca.AcquisitionMode = AcqMode gca.CompressionLevel = CompLevel gca.CompressionBackoff = BackOff gca.CompressionDeltaX = BackOff gca.CompressionDeltaY = BackOff - CompLevel gca.CompressionAlgorithm = CompAlg gca.NumberOfPowerPoints = NumPowers gca.CompressionInterpolation = EnableInterp gca.SmartSweepSettlingTime = DwellTime gca.SmartSweepShowIterations = ShowIterations chan.IFBandwidth = IFBandwidth chan.DwellTime = DwellTime chan.StartPower = StartPower chan.StopPower = StopPower chan.TestPortPower(1) = LinearPower chan.StartFrequency = StartFreq chan.StopFrequency = StopFreq chan.NumberOfPoints = NumFreqs 'set converter properties converter.InputRangeMode = 0 ' swept converter.LORangeMode(1) = 1 'fixed converter.OutputRangeMode = 0 'swept converter.InputStartFrequency = StartFreq converter.InputStopFrequency = StopFreq converter.LOFixedFrequency(1) = LOFreq converter.LOName(1) = "Port 3" converter.LOPower(1) = -10 converter.Calculate 2 'calculateOutput chan.Single 1 end sub '---------------------------------------------------------- ' GCAX Calibration '---------------------------------------------------------- sub CalGCAX( parser ) Dim CalMgr Set CalMgr = app.GetCalManager Dim SMC Set SMC = CalMgr.CreateCustomCal("SMC") SMC.Initialize 1, 1 SMC.Do2PortEcal = 1 'specify 0 for mechanical cal, 1 for ecal 'use Factory Characterization SMC.ECALCharacterization(1) = 0 SMC.OmitIsolation = 1 SMC.AutoOrient = 1 ' 1- forward, 2-reverse, or Both SMC.CalibrationPort = "1" Dim steps steps = SMC.GenerateSteps Dim i For i = 1 To steps MsgBox SMC.GetStepDescription(i) SMC.AcquireStep i Next Dim calset calset = SMC.GenerateErrorTerms Msgbox("SMC Cal Complete!") end sub |