测量多端口器件
概述
apl_sys.vba 展示了详细说明如何测量一个(3端)双工器的样本程序(VBA程序)。该VBA程序由以下模块组成:
-
对于带有2端口S参数测试仪的E5071C,因为存在E5071C不能测量的参数,所以会出现运行时错误。
对象名
模块类型
说明
frmDupRes
用户表单
显示分析结果
mdlDupMeas
标准模块
进行双工器测量
程序概述
该程序使用85032F校准套件进行全3端口校准,测量一个(3端)双工器,计算并显示极限测试结果,插入损耗和带通波动。下图示出了(3端)双工器测量程序的简单流程:
双工器测量程序的流程
程序说明
当运行这个VBA程序时,要进行复位,设置测量条件,并显示消息"Perform the full 3-port calibration"(进行全3端口校准)。为了进行全3端口校准,点击 Yes(是);否则点击No(否)。
为了进行校准,遵循屏幕上的消息将Agilent 85032F校准套件的每个标准连接到指定的端口,然后点击OK,开始测量校准数据。点击Cancel(删除),返回校准开始。不能跳过隔离校准。当完成对所有标准的校准数据测量时,显示消息"All calibration data completion" (“所有的校准数据已完成”),并计算校准系数。
当您在完成必要的校准数据测量之前取消校准数据测量时,设置条件可能不能返回到它的原始状态。
然后,设置极限线,并进行极限测试判断所需的设置。
显示消息"Set the DUT between test cables."(“在测试电缆之间设置被测件。”)之后,在测试电缆之间连接被测件(双工器),然后点击Yes(是)。设置极限线并进行单次扫描。然后,对于迹线1(Tx: S13)和迹线(Rx: S21),显示极限测试的合格/不合格判断、通带内插入损耗和波动分析结果。
点击Exit(退出),显示分析结果。显示提示重新测量的消息。为了进行测量,点击Yes(是),否则点击No(否)以结束程序。用于显示分析结果(对象名称:frmDupRes)的用户表单中程序的详细信息在此不作介绍。
“apl_sys.vba”程序的执行结果显示
下面详细说明双工器的测量程序(对象名称:mdlDupMeas)。添加行号只用于说明,并不在实际的程序源代码中出现。
90行
将校准套件号(4: 85032F)存储到CalKit(校准套件)变量中。
110行
关闭显示更新。关断显示更新能缩短绘图时间和目标处理时间。
140行
将E5071C返回到预置状态。
170行到180行
对于通道1,这些行使连续触发启动模式接通,并将触发源设置为总线触发。
200行
调用Setup_Parameter程序(910到1140行)。如欲了解Setup_Parameter程序的信息,参见后面的说明。
220行
调用Setup_Segment程序(1160到1530行)。如欲了解Setup_Segment程序的信息,参见后面的说明。
250行
将通道1的校准套件号存储到CalKit(校准套件)变量中。
260行
将1、2和3存储到Port(端口),表示端口用于全3端口校准的变量中。
280行
调用Calib_Solt程序
310行
调用Setup_Limitline程序(2420到3180行)。如欲了解Setup_Limitline程序的信息,参见后面的说明。
330行
调用Setup_Register程序(3200到3260行)。如欲了解Setup_Register程序的信息,参见后面的说明。
380行
显示提示 “连接DUT(被测件)”的消息,连接完成之后等待点击OK按钮。
410行
清除有问题的极限状态事件寄存器和有问题的通道1状态事件寄存器。
420行到430行
产生用于起动单次扫描的触发脉冲,并等待测量完成(由= 4 && typeof(BSPSPopupOnMouseOver) == 'function') BSPSPopupOnMouseOver(event)" class=BSSCPopup onclick="BSSCPopup('../../Command_Reference/IEEE/SCPI_IEEE4882_OPC.htm');return false">SCPI.IEEE4882.OPC对象读出1)。
450行到460行
对于迹线1和迹线2,这些行进行自动定标,以设置最佳比例。
490行到500行
读出有问题的极限状态事件寄存器,并将读出值的AND和2(在该值中只有位1是1)存储到Test_Ch1变量中。
510行到530行
读出有问题的极限通道1状态事件寄存器的值,并将读出值的AND和2(在这个值中只有位1是1)存储到Test_Tr1变量中,并将读出值的AND和4(该值中只有位2是1)存储到Test_Tr2变量中。
560行到610行
将迹线1规定为工作迹线并设置分析范围(起点 :1.85 GHz和终点:1.91 GHz)。然后,这些行设置峰值搜索的归向(正峰值和负峰值)和峰值偏移值的下限(0)。
620行到640行
搜索分析范围内的最小值并将分析结果存储到IlossTx变量中。
650行
利用波动分析功能将分析范围内正峰值与负峰值之间响应差的最大值存储到RipTx变量中。
670行到720行
将迹线2规定为工作迹线并设置分析范围(起点:1.93 GHz和终点:1.99 GHz)。然后,这些行设置峰值搜索的归向(正峰值和负峰值)和峰值偏移值的下限(0)。
730行到750行
搜索分析范围内的最小值并将分析结果存储到IlossRx变量中。
760行
利用波动分析功能将分析范围内正峰值与负峰值之间响应差的最大值存储到RipRx变量中。
790行
调用Display_Update程序(3280行到3620行):如欲了解Display_Update程序的信息,参见后面的说明。
810行
在用来显示分析结果的屏幕上显示用户表单(对象名:frmDupRes)。
830行到870行
显示询问您是否想重新进行测量的消息。点击Yes(是)按键,以返回到被测件(DUT)连接部分。点击No(否)按键,以结束程序。
程序: Setup_Parameter (910行到1140行)
970行到1020行
将通道布局(“D1”:通道1显示),图形布局(“D1_2”:上/下两部分分离显示)、迹线1的测量参数(S13)、迹线2的测量参数(S21)、迹线1的数据格式(MLOG)和迹线2的数据格式(MLOG)分别存储到变量ChDisp、TracDisp、Par(0)、Par(1)、Fmt(0)和Fmt(1)中。
1040行到1060行
将通道1~2的迹线数、通道布局设置为ChDisp变量,以及将通道1的图形布局设置为TracDisp变量。
1080行到1120行
将迹线1的测量参数设置为Par(0)变量、迹线1的数据格式设置为Fmt(0)变量、迹线2的测量参数设置为Par(1)变量以及迹线2的数据格式设置为Fmt(1)变量。
程序:Setup_Segment (1160行到1530行)
1200行到1260行
将对进入SegmData(0)中的通道1的段表设置的条件存储到SegmData(6)变量中。设置情况如下:激励设置方式:起/止值。每段的中频(IF)带宽设置:断开。每段的功率设置:断开。每段的扫描延迟设置:断开。每段的扫描时间设置:断开。段数:5。
1280行到1470行
将进入SegmData(7)的通道1的1~5段的扫描起始值、扫描终止值和测量点数分别存储到SegmData(21)变量中。
1490行
将通道1的段表设定到SegmData变量。
1500行
将通道1的扫描类型设定到“segment”。
1510行
将通道1图形的水平轴显示方法设定到顺序基制(测量点数按测量顺序均匀处在轴线上)。
程序:Calib_Solt (1550行到2420行)
参见Calib_Solt的1200行到2130行。
程序:Setup_Limitline (2440行到3180行)
2490行
将迹线1极限表中的行数(5)存储到LimDataS13(0)变量中。
2500行到2790行
将进入LimDataS13(1)中的迹线1极限表内的设置存储到LimDataS13(25)变量中。
2820行
将迹线2极限表内的行数(4)存储到LimDataS21(0) 变量中。
2830行到3060行
将进入LimDataS21(1)的迹线2极限表内的设置存储到LimDataS21(20) 变量中。
3080行到3110行
将迹线1规定为工作迹线,将迹线1的极限线存储到LimDataS13变量中并加以显示。然后,这些行取决于迹线1的极限测试功能。
3130行到3160行
将迹线2规定为工作迹线,将迹线2的极限线存储到LimDataS21变量中并加以显示。然后,这些行取决于迹线2的极限测试功能。
程序:Setup_Register (3200行到3260行)
3220行到3230行
设定仪器,使只有当有问题的极限通道状态事件寄存器的1位和2位从0变化到1时(正向过渡),有问题的极限通道状态事件寄存器的1位和2位才设定到1。
3240行
启动有问题的极限通道状态事件寄存器的1位和2位。
程序:Display_Update (3280行到3620)
3300行
只一次更新LCD屏幕上的显示。
3320行到3380行
当迹线1的极限测试结果为不合格时(Test_Tr1=2),这些行以红色背景在用户表单(对象名:frmDupRes)上显示Tx(S13)“Limit test result: Fail”(极限测试结果:不合格),相反,当迹线1的极限测试结果为合格时(Test_Tr11?2),他们以蓝色背景在用户表单(对象名:frmDupRes)上显示Tx(S13)“Limit test result: Pass”(极限测试结果:合格)。
3400行到3460行
当迹线2的极限测试结果为不合格时(Test_Tr2 = 4),这些行以红色背景在用户表单(对象名:frmDupRes上显示Rx(S21) "Limit test result: Fail" (极限测试结果:不合格);相反,当迹线1的极限测试结果为合格时(Test_Tr2 ? 4),他们以蓝色背景在用户表单(对象名:frmDupRes) 上显示Rx(S21) "Limit test result: Pass" (极限测试结果:合格)。
3480行到3540行
当通道1的极限测试结果为不合格时(Test_Ch1 = 2),这些行以红色背景在用户表单(对象名:frmDupRes)上显示"Overall limit test result: Fail" (全面极限测试结果:不合格),相反,当通道1的极限测试结果为合格时 (Test_Ch1 ? 2),他们以蓝色背景在用户表单(对象名:frmDupRes) 上显示"Overall limit test result: Pass" (全面极限测试结果:合格)。
3560行到3600行
在用户表单(对象名:frmDupRes)上分别将对迹线1和2的分析结果(插入损耗和带通波动)显示为Tx(S13)和Rx(S21)。
样本程序
双工器测量(对象名:mdlDupMeas)
10| Sub Main()
20|
30| Dim CalKit As Long, Dmy As Long, Rgst As Long, I As Long, Buff As Long
40| Dim Test_Ch1 As Integer, Test_Tr1 As Integer, Test_Tr2 As Integer
50| Dim IlossTx As Variant, IlossRx As Variant
60| Dim RipTx As Double, RipRx As Double
70| Dim Port As Variant
80|
90| CalKit = 4 'Calibration kit :85032F
100|
110| SCPI.DISPlay.ENABle = False
120|
130| '''Presetting the E5071C
140| SCPI.SYSTem.PRESet
150|
160| '''Setting measurement conditions
170| SCPI.INITiate(1).CONTinuous = True
180| SCPI.TRIGger.SEQuence.Source = "BUS"
190|
200| Setup_Parameter
210|
220| Setup_Segment
230|
240| '''Full 3-port calibration
250| SCPI.SENSe(1).CORRection.COLLect.CKIT.Select = CalKit
260| Port = Array(1, 2, 3)
270|
280| Calib_Solt 1, 3, Port
290|
300| '''Setting analysis conditions
310| Setup_Limitline
320|
330| Setup_Register
340|
350| Meas_Start:
360|
370| '''Connecting DUT
380| MsgBox "Connect DUT between test cables."
390|
400| '''Performing single sweep
410| SCPI.IEEE4882.CLS
420| SCPI.TRIGger.SEQuence.SINGle
430| Dmy = SCPI.IEEE4882.OPC
440|
450| SCPI.DISPlay.WINDow(1).TRACe(1).Y.SCALe.AUTO
460| SCPI.DISPlay.WINDow(1).TRACe(2).Y.SCALe.AUTO
470|
480| '''Judging limit test
490| Rgst = SCPI.STATus.QUEStionable.LIMit.EVENt
500| Test_Ch1 = CInt(Rgst And 2)
510| Rgst = SCPI.STATus.QUEStionable.LIMit.CHANnel(1).EVENt
520| Test_Tr1 = CInt(Rgst And 2)
530| Test_Tr2 = CInt(Rgst And 4)
540|
550| '''Analyzing insertion loss/bandpass ripple
560| SCPI.CALCulate(1).PARameter(1).Select
570| SCPI.CALCulate(1).SELected.FUNCtion.DOMain.STARt = 1850000000#
580| SCPI.CALCulate(1).SELected.FUNCtion.DOMain.STOP = 1910000000#
590| SCPI.CALCulate(1).SELected.FUNCtion.DOMain.STATe = True
600| SCPI.CALCulate(1).SELected.FUNCtion.PPOLarity = "both"
610| SCPI.CALCulate(1).SELected.FUNCtion.PEXCursion = 0
620| SCPI.CALCulate(1).SELected.FUNCtion.TYPE = "MIN"
630| SCPI.CALCulate(1).SELected.FUNCtion.EXECute
640| IlossTx = SCPI.CALCulate(1).SELected.FUNCtion.DATA
650| RipTx = MaxPeakToPeak(1)
660|
670| SCPI.CALCulate(1).PARameter(2).Select
680| SCPI.CALCulate(1).SELected.FUNCtion.DOMain.STARt = 1930000000#
690| SCPI.CALCulate(1).SELected.FUNCtion.DOMain.STOP = 1990000000#
700| SCPI.CALCulate(1).SELected.FUNCtion.DOMain.STATe = True
710| SCPI.CALCulate(1).SELected.FUNCtion.PPOLarity = "both"
720| SCPI.CALCulate(1).SELected.FUNCtion.PEXCursion = 0
730| SCPI.CALCulate(1).SELected.FUNCtion.TYPE = "MIN"
740| SCPI.CALCulate(1).SELected.FUNCtion.EXECute
750| IlossRx = SCPI.CALCulate(1).SELected.FUNCtion.DATA
760| RipRx = MaxPeakToPeak(1)
770|
780| '''Displaying the results
790| Display_Update Test_Tr1, Test_Tr2, Test_Ch1, IlossTx, IlossRx, RipTx, RipRx
800|
810| frmDupRes.Show
820|
830| Buff = MsgBox("Do you make another measurement?", vbYesNo, "Duplexer Measurement")
840|
850| If Buff = vbYes Then
860| GoTo Meas_Start
870| End If
880|
890| End Sub
900|
910| Private Sub Setup_Parameter()
920|
930| Dim I As Long
940| Dim ChDisp As String, TracDisp As String
950| Dim Par(1) As String, Fmt(1) As String
960|
970| ChDisp = "D1"
980| TracDisp = "D1_2"
990| Par(0) = "S13"
1000| Par(1) = "S21"
1010| Fmt(0) = "MLOG"
1020| Fmt(1) = "MLOG"
1030|
1040| SCPI.CALCulate(1).PARameter.Count = 2
1050| SCPI.DISPlay.Split = ChDisp
1060| SCPI.DISPlay.WINDow(1).Split = TracDisp
1070|
1080| For I = 1 To 2
1090| SCPI.CALCulate(1).PARameter(I).DEFine = Par(I - 1)
1100| SCPI.CALCulate(1).PARameter(I).Select
1110| SCPI.CALCulate(1).SELected.Format = Fmt(I - 1)
1120| Next I
1130|
1140| End Sub
1150|
1160| Private Sub Setup_Segment()
1170|
1180| Dim SegmData(21) As Variant
1190|
1200| SegmData(0) = 5 'Anytime 5 is set at seg ment settings
1210| SegmData(1) = 0 'Allows stimulus range to be set using Start/Stop frequency
1220| SegmData(2) = 0 'Not allows IF bandwidth to be set
1230| SegmData(3) = 0 'Not allows power to be set
1240| SegmData(4) = 0 'Not allows delay time to be set
1250| SegmData(5) = 0 'Not allows sweep time to be set
1260| SegmData(6) = 5 'Number of segments
1270|
1280| '''Segment 1
1290| SegmData(7) = 1730000000# 'Start frequency
1300| SegmData(8) = 1830000000# 'Stop frequency
1310| SegmData(9) = 50 'Number of points
1320| '''Segment 2
1330| SegmData(10) = 1830000000# 'Start frequency
1340| SegmData(11) = 2030000000# 'Stop frequency
1350| SegmData(12) = 400 'Number of points
1360| '''Segment 3
1370| SegmData(13) = 2030000000# 'Start frequency
1380| SegmData(14) = 2130000000# 'Stop frequency
1390| SegmData(15) = 50 'Number of points
1400| '''Segment 4
1410| SegmData(16) = 3650000000# 'Start frequency
1420| SegmData(17) = 4030000000# 'Stop frequency
1430| SegmData(18) = 38 'Number of points
1440| '''Segment 5
1450| SegmData(19) = 5500000000# 'Start frequency
1460| SegmData(20) = 6020000000# 'Stop frequency
1470| SegmData(21) = 52 'Number of points
1480|
1490| SCPI.SENSe(1).SEGMent.DATA = SegmData
1500| SCPI.SENSe(1).SWEep.TYPE = "SEGM"
1510| SCPI.DISPlay.WINDow(1).X.SPACing = "OBAS"
1520|
1530| End Sub
1540|
1550| Private Sub Calib_Solt(Chan As Long, SoltType As Long, Port A s Variant)
1560|
1570| Dim Dmy As Long, I As Long, J As Long, Buff As Long
1580|
1590| Cal_Start:
1600|
1610| Buff = MsgBox("Perform the full " & SoltType & "-port calib ration.", vbOKCancel, "Full" & SoltType & "-port calibration")
1620| If Buff = vbCancel Then
1630| GoTo Cal_Skip
1640| End If
1650|
1660| Select Case SoltType
1670| Case 1
1680| SCPI.SENSe(Chan).CORRection.COLLect.METHod.SOLT1 = Port(0)
1690| Case 2
1700| SCPI.SENSe(Chan).CORRection.COLLect.METHod.SOLT2 = Port
1710| Case 3
1720| SCPI.SENSe(Chan).CORRection.COLLect.METHod.SOLT3 = Port
1730| Case 4
1740| SCPI.SENSe(Chan).CORRection.COLLect.METHod.SOLT4 = Port
1750| End Select
1760|
1770| For I = 1 To SoltType
1780|
1790| Buff = MsgBox("Connect the Open standard to Port " & CS tr(Port(I - 1)) & ".", vbOKCancel, "Full" & SoltType & "-port calibr ation")
1800| If Buff = vbOK Then
1810| SCPI.SENSe(Chan).CORRection.COLLect.ACQuire.OPEN = Port(I - 1)
1820| Dmy = SCPI.IEEE4882.OPC
1830| Else
1840| GoTo Cal_Start
1850| End If
1860|
1870| Buff = MsgBox("Connect the Short standard to Port " & C Str(Port(I - 1)) & ".", vbOKCancel, "Full" & SoltType & "-port calib ration")
1880| If Buff = vbOK Then
1890| SCPI.SENSe(Chan).CORRection.COLLect.ACQuire.Short = Port(I - 1)
1900| Dmy = SCPI.IEEE4882.OPC
1910| Else
1920| GoTo Cal_Start
1930| End If
1940|
1950| Buff = MsgBox("Connect the Load standard to Port " & CS tr(Port(I - 1)) & ".", vbOKCancel, "Full" & SoltType & "-port calibr ation")
1960| If Buff = vbOK Then
1970| SCPI.SENSe(Chan).CORRection.COLLect.ACQuire.Load = Port(I - 1)
1980| Dmy = SCPI.IEEE4882.OPC
1990| Else
2000| GoTo Cal_Start
2010| End If
2020| Next I
2030|
2040| For I = 1 To SoltType - 1
2050| For J = I + 1 To SoltType
2060| Buff = MsgBox("Connect the Thru standard between Por t " & CStr(Port(I - 1)) & " and Port " & CStr(Port(J - 1)) & ".", vb OKCancel, "Full" & SoltType & "-port calibration")
2070| If Buff = vbOK Then
2080| SCPI.SENSe(Chan).CORRection.COLLect.ACQuire.THRU = Array(Port(I - 1), Port(J - 1))
2090| Dmy = SCPI.IEEE4882.OPC
2100| SCPI.SENSe(Chan).CORRection.COLLect.ACQuire.THRU = Array(Port(J - 1), Port(I - 1))
2110| Dmy = SCPI.IEEE4882.OPC
2120| Else
2130| GoTo Cal_Start
2140| End If
2150| Next J
2160| Next I
2170|
2180| If SoltType <> 1 Then
2190| Buff = MsgBox("Do you measure the Isolation (Optional)? ", vbYesNo, "Full" & SoltType & "-port calibration")
2200| If Buff = vbYes Then
2210| For I = 1 To SoltType - 1
2220| For J = I + 1 To SoltType
2230| Buff = MsgBox("Connect the Load standard to Port " & Port(I - 1) & " and Port " & Port(J - 1) & ".", vbOKCancel, "Full" & SoltType & "-port calibration")
2240| If Buff = vbOK Then
2250| SCPI.SENSe(Chan).CORRection.COLLect.ACQuire.ISOLation = Array(Port( I - 1), Port(J - 1))
2260| Dmy = SCPI.IEEE4882.OPC
2270| SCPI.SENSe(Chan).CORRection.COLLect.ACQuire.ISOLation = Array(Port( J - 1), Port(I - 1))
2280| Dmy = SCPI.IEEE4882.OPC
2290| Else
2300| GoTo Cal_Start
2310| End If
2320| Next J
2330| Next I
2340| End If
2350| End If
2360|
2370| SCPI.SENSe(1).CORRection.COLLect.SAVE
2380| MsgBox "All calibration data completion."
2390|
2400| Cal_Skip:
2410|
2420| End Sub
2430|
2440| Private Sub Setup_Limitline()
2450|
2460| Dim LimDataS13(25) As Variant, LimDataS21(20) As Variant
2470|
2480| '''Limit line for S13
2490| LimDataS13(0) = 5 'Number of segment
2500| '''Limit_line 1
2510| LimDataS13(1) = 1 'Maximum
2520| LimDataS13(2) = 1730000000# 'Beginning of stimulus
2530| LimDataS13(3) = 1930000000# 'End of stimulus
2540| LimDataS13(4) = 0 'Beginning of response
2550| LimDataS13(5) = 0 'End of response
2560| '''Limit_line 2
2570| LimDataS13(6) = 2 'Minimum
2580| LimDataS13(7) = 1850000000# 'Beginning of stimulus
2590| LimDataS13(8) = 1910000000# 'End of stimulus
2600| LimDataS13(9) = -8 'Beginning of response
2610| LimDataS13(10) = -8 'End of response
2620| '''Limit_line 3
2630| LimDataS13(11) = 1 'Maximum
2640| LimDataS13(12) = 1930000000# 'Beginning of stimulus
2650| LimDataS13(13) = 1990000000# 'End of stimulus
2660| LimDataS13(14) = -35 'Beginning of response
2670| LimDataS13(15) = -35 'End of response
2680| '''Limit_line 4
2690| LimDataS13(16) = 1 'Maximum
2700| LimDataS13(17) = 1990000000# 'Beginning of stimulus
2710| LimDataS13(18) = 2130000000# 'End of stimulus
2720| LimDataS13(19) = -40 'Beginning of response
2730| LimDataS13(20) = -40 'End of response
2740| '''Limit_line 5
2750| LimDataS13(21) = 1 'Maximum
2760| LimDataS13(22) = 2130000000# 'Beginning of stimulus
2770| LimDataS13(23) = 6020000000# 'End of stimulus
2780| LimDataS13(24) = -20 'Beginning of response
2790| LimDataS13(25) = -20 'End of response
2800|
2810| '''Limit line for S21
2820| LimDataS21(0) = 4 'Number of segment
2830| '''Limit_line 1
2840| LimDataS21(1) = 1 'Maximum
2850| LimDataS21(2) = 1730000000# 'Beginning of stimulus
2860| LimDataS21(3) = 1850000000# 'End of stimulus
2870| LimDataS21(4) = -40 'Beginning of response
2880| LimDataS21(5) = -40 'End of response
2890| '''Limit_line 2
2900| LimDataS21(6) = 1 'Maximum
2910| LimDataS21(7) = 1850000000# 'Beginning of stimulus
2920| LimDataS21(8) = 1910000000# 'End of stimulus
2930| LimDataS21(9) = -40 'Beginning of response
2940| LimDataS21(10) = -40 'End of response
2950| '''Limit_line 3
2960| LimDataS21(11) = 1 'Maximum
2970| LimDataS21(12) = 1910000000# 'Beginning of stimulus
2980| LimDataS21(13) = 6020000000# 'End of stimulus
2990| LimDataS21(14) = 0 'Beginning of response
3000| LimDataS21(15) = 0 'End of response
3010| '''Limit_line 4
3020| LimDataS21(16) = 2 'Minimum
3030| LimDataS21(17) = 1930000000# 'Beginning of stimulus
3040| LimDataS21(18) = 1990000000# 'End of stimulus
3050| LimDataS21(19) = -10 'Beginning of response
3060| LimDataS21(20) = -10 'End of response
3070|
3080| SCPI.CALCulate(1).PARameter(1).Select
3090| SCPI.CALCulate(1).SELected.LIMit.DATA = LimDataS13
3100| SCPI.CALCulate(1).SELected.LIMit.DISPlay.STATe = True
3110| SCPI.CALCulate(1).SELected.LIMit.STATe = True
3120|
3130| SCPI.CALCulate(1).PARameter(2).Select
3140| SCPI.CALCulate(1).SELected.LIMit.DATA = LimDataS21
3150| SCPI.CALCulate(1).SELected.LIMit.DISPlay.STATe = True
3160| SCPI.CALCulate(1).SELected.LIMit.STATe = True
3170|
3180| End Sub
3190|
3200| Private Sub Setup_Register()
3210|
3220| SCPI.STATus.QUEStionable.LIMit.CHANnel(1).PTRansition = 6
3230| SCPI.STATus.QUEStionable.LIMit.CHANnel(1).NTRansition = 0
3240| SCPI.STATus.QUEStionable.LIMit.CHANnel(1).ENABle = 6
3250|
3260| End Sub
3270|
3280| Sub Display_Update(Test_Tr1 As Integer, Test_Tr2 As Integer, Test_Ch1 As Integer, IlossTx As Variant, IlossRx As Variant, RipTx As Variant, RipRx As Variant)
3290|
3300| SCPI.DISPlay.UPDate.IMMediate
3310|
3320| If Test_Tr1 = 2 Then
3330| frmDupRes.lblJudgeS13.BackColor = RGB(255, 0, 0)
3340| frmDupRes.lblJudgeS13.Caption = "Fail"
3350| Else
3360| frmDupRes.lblJudgeS13.BackColor = RGB(0, 0, 255)
3370| frmDupRes.lblJudgeS13.Caption = "Pass"
3380| End If
3390|
3400| If Test_Tr2 = 4 Then
3410| frmDupRes.lblJudgeS21.BackColor = RGB(255, 0, 0)
3420| frmDupRes.lblJudgeS21.Caption = "Fail"
3430| Else
3440| frmDupRes.lblJudgeS21.BackColor = RGB(0, 0, 255)
3450| frmDupRes.lblJudgeS21.Caption = "Pass"
3460| End If
3470|
3480| If Test_Ch1 = 2 Then
3490| frmDupRes.lblResult.BackColor = RGB(255, 0, 0)
3500| frmDupRes.lblResult.Caption = "Fail"
3510| Else
3520| frmDupRes.lblResult.BackColor = RGB(0, 0, 255)
3530| frmDupRes.lblResult.Caption = "Pass"
3540| End If
3550|
3560| frmDupRes.txtIlossS13.Text = Format(IlossTx(0), "0.#### ")
3570| frmDupRes.txtIlossS21.Text = Format(IlossRx(0), "0.#### ")
3580|
3590| frmDupRes.txtRipS13.Text = Format(RipTx, "0.####")
3600| frmDupRes.txtRipS21.Text = Format(RipRx, "0.####")
3610|
3620| End Sub