极限测试

E5071C

极限测试

有关极限测试的其他主题

概述

这个样本程序说明如何执行极限测试。

该样本程序创建如下两个表格所示的极限表,关闭极限测试功能,执行一次测量循环,然后显示测试结果。

编号

类型

开始激励

停止激励

开始响应

停止响应

1

最大

847.5 MHz

905.0 MHz

-55.0 dBm

-55.0 dBm

2

最大

935.0 MHz

960.0 MHz

-3.5 dBm

-3.5 dBm

3

最大

935.0 MHz

960.0 MHz

0 dBm

0 dBm

4

最大

980.0 MHz

1047.5 MHz

-25.0 dBm

-25.0 dBm

参见这个程序的极限测试

在HT Basic中的样本程序(lim_test.htb)

10 DIM Param1$[9],Param2$[9],Fmt1$[9],Fmt2$[9],Buff$[9]

20 REAL Cent,Span,Lim1(1:4,1:5),Lim2(1:3,1:5),Fail_data(1:1601)

30 INTEGER Num_of_seg1,Num_of_seg2,Segment,Column,Fail_point

40 !

50 ASSIGN @Agte507x TO 717

60 !

70 Cent=9.475E+8

80 Span=2.00E+8

90 Param1$="S21"

100 Param2$="S11"

110 Fmt1$="MLOG"

120 Fmt2$="MLOG"

130 !

140 ! == Trace 1 Limit Line ==

150 Num_of_seg1=4 ! Number of segments: 4

160 ! -- Segment 1 --

170 Lim1(1,1)=1 ! Type : Maximum

180 Lim1(1,2)=8.475E+8 ! Frequency Start: 847.5 MHz

190 Lim1(1,3)=9.050E+8 ! Stop : 905.0 MHz

200 Lim1(1,4)=-55 ! Response Start: -55 dBm

210 Lim1(1,5)=-55 ! Stop : -55 dBm

220 ! -- Segment 2 --

230 Lim1(2,1)=2 ! Type : Minimum

240 Lim1(2,2)=9.350E+8 ! Frequency Start: 935.0 MHz

250 Lim1(2,3)=9.600E+8 ! Stop : 960.0 MHz

260 Lim1(2,4)=-3.5 ! Response Start: -3.5 dBm

270 Lim1(2,5)=-3.5 ! Stop : -3.5 dBm

280 ! -- Segment 3 --

290 Lim1(3,1)=1 ! Type : Maximum

300 Lim1(3,2)=9.350E+8 ! Frequency Start: 935.0 MHz

310 Lim1(3,3)=9.600E+8 ! Stop : 960.0 MHz

320 Lim1(3,4)=0 ! Response Start: 0 dBm

330 Lim1(3,5)=0 ! Stop : 0 dBm

340 ! -- Segment 4 --

350 Lim1(4,1)=1 ! Type : Maximum

360 Lim1(4,2)=9.800E+8 ! Frequency Start: 980.0 MHz

370 Lim1(4,3)=1.0475E+9 ! Stop : 1047.5 MHz

380 Lim1(4,4)=-25 ! Response Start: -25 dBm

390 Lim1(4,5)=-25 ! Stop : -25 dBm

400 ! == Trace 2 Limit Line ==

410 Num_of_seg2=3 ! Number of segments: 3

420 ! -- Segment 1 --

430 Lim2(1,1)=1 ! Type : Maximum

440 Lim2(1,2)=8.475E+8 ! Frequency Start: 847.5 MHz

450 Lim2(1,3)=9.250E+8 ! Stop : 925.0 MHz

460 Lim2(1,4)=0 ! Response Start: 0 dBm

470 Lim2(1,5)=0 ! Stop : 0 dBm

480 ! -- Segment 2 --

490 Lim2(2,1)=1 ! Type : Maximum

500 Lim2(2,2)=9.350E+8 ! Frequency Start: 935.0 MHz

510 Lim2(2,3)=9.600E+8 ! Stop : 960.0 MHz

520 Lim2(2,4)=-9.5 ! Response Start: -9.5 dBm

530 Lim2(2,5)=-9.5 ! Stop : -9.5 dBm

540 ! -- Segment 3 --

550 Lim2(3,1)=1 ! Type : Maximum

560 Lim2(3,2)=9.700E+8 ! Frequency Start: 970.0 MHz

570 Lim2(3,3)=1.0475E+9 ! Stop : 1047.5 MHz

580 Lim2(3,4)=0 ! Response Start: 0 dBm

590 Lim2(3,5)=0 ! Stop : 0 dBm

600 !

610 OUTPUT @Agte507x;":SENS1:FREQ:CENT ";Cent

620 OUTPUT @Agte507x;":SENS1:FREQ:SPAN ";Span

630 OUTPUT @Agte507x;":CALC1:PAR1:COUN 2"

640 OUTPUT @Agte507x;":DISP:WIND1:SPL D1_2"

650 OUTPUT @Agte507x;":TRIG:SOUR BUS"

660 OUTPUT @Agte507x;":INIT1:CONT ON"

670 !

680 ! Trace 1

690 !

700 OUTPUT @Agte507x;":CALC1:PAR1:SEL"

710 !

720 OUTPUT @Agte507x;":CALC1:PAR1:DEF "&Param1$

730 OUTPUT @Agte507x;":CALC1:FORM "&Fmt1$

740 !

750 OUTPUT @Agte507x;":CALC1:LIM:DATA ";Num_of_seg1;

760 FOR Segment=1 TO Num_of_seg1

770 FOR Column=1 TO 5

780 OUTPUT @Agte507x;",";Lim1(Segment,Column);

790 NEXT Column

800 NEXT Segment

810 OUTPUT @Agte507x;""

820 OUTPUT @Agte507x;":CALC1:LIM:DISP ON"

830 OUTPUT @Agte507x;":CALC1:LIM ON"

840 !

850 ! Trace 2

860 !

870 OUTPUT @Agte507x;":CALC1:PAR2:SEL"

880 !

890 OUTPUT @Agte507x;":CALC1:PAR2:DEF "&Param2$

900 OUTPUT @Agte507x;":CALC1:FORM "&Fmt2$

910 !

920 OUTPUT @Agte507x;":CALC1:LIM:DATA ";Num_of_seg2;

930 FOR Segment=1 TO Num_of_seg2

940 FOR Column=1 TO 5

950 OUTPUT @Agte507x;",";Lim2(Segment,Column);

960 NEXT Column

970 NEXT Segment

980 OUTPUT @Agte507x;""

990 OUTPUT @Agte507x;":CALC1:LIM:DISP ON"

1000 OUTPUT @Agte507x;":CALC1:LIM ON"

1010 !

1020 ! Setting status registers

1030 !

1040 OUTPUT @Agte507x;":STAT:QUES:LIM:CHAN1:ENAB 6"

1050 OUTPUT @Agte507x;":STAT:QUES:LIM:CHAN1:PTR 6"

1060 OUTPUT @Agte507x;":STAT:QUES:LIM:CHAN1:NTR 0"

1070 OUTPUT @Agte507x;":STAT:QUES:LIM:PTR 2"

1080 OUTPUT @Agte507x;":STAT:QUES:LIM:NTR 0"

1090 OUTPUT @Agte507x;"*CLS"

1100 !

1110 OUTPUT @Agte507x;":TRIG:SING"

1120 OUTPUT @Agte507x;"*OPC?"

1130 ENTER @Agte507x;Buff$

1140 !

1150 ! Checking test results

1160 !

1170 OUTPUT @Agte507x;":STAT:QUES:LIM?"

1180 ENTER @Agte507x;Reg_val

1190 Ch1_judge=BIT(Reg_val,1)

1200 OUTPUT @Agte507x;":STAT:QUES:LIM:CHAN1?"

1210 ENTER @Agte507x;Reg_val

1220 Tr1_judge=BIT(Reg_val,1)

1230 Tr2_judge=BIT(Reg_val,2)

1240 !

1250 ! Displaying test results

1260 !

1270 IF Ch1_judge=0 THEN

1280 PRINT "## PASS! ##"

1290 ELSE

1300 PRINT "## FAIL! ##"

1310 IF Tr1_judge=0 THEN

1320 PRINT " Trace1(S21): PASS"

1330 ELSE

1340 PRINT " Trace1(S21): FAIL"

1350 !

1360 ! Reading and displaying frequency at failed points

1370 !

1380 OUTPUT @Agte507x;":CALC1:PAR1:SEL"

1390 OUTPUT @Agte507x;":CALC1:LIM:REP:POIN?"

1400 ENTER @Agte507x;Fail_point

1410 REDIM Fail_data(1:Fail_point)

1420 OUTPUT @Agte507x;":CALC1:LIM:REP?"

1430 ENTER @Agte507x;Fail_data(*)

1440 PRINT " Frequency:"

1450 FOR I=1 TO Fail_point

1460 PRINT USING "3X,MD.4DE";Fail_data(I)

1470 NEXT I

1480 END IF

1490 IF Tr2_judge=0 THEN

1500 PRINT " Trace2(S11): PASS"

1510 ELSE

1520 PRINT " Trace2(S11): FAIL"

1530 !

1540 ! Reading and displaying frequency at failed points

1550 !

1560 OUTPUT @Agte507x;":CALC1:PAR2:SEL"

1570 OUTPUT @Agte507x;":CALC1:LIM:REP:POIN?"

1580 ENTER @Agte507x;Fail_point

1590 REDIM Fail_data(1:Fail_point)

1600 OUTPUT @Agte507x;":CALC1:LIM:REP?"

1610 ENTER @Agte507x;Fail_data(*)

1620 PRINT " Frequency:"

1630 FOR I=1 TO Fail_point

1640 PRINT USING "3X,MD.4DE";Fail_data(I)

1650 NEXT I

1660 END IF

1670 END IF

1680 END

说明

50行

为I/O通道分配GPIB地址。

70行到120行

这些行将扫描中心值、扫描范围值、迹线1测量参数、迹线2测量参数、迹线1数据格式和迹线2数据格式分别储存到Cent、Span、Param1$、Param2$、Fmt1$和Fmt2$变量中。

150行

将迹线1极限表中的各个部分数量储存到Num_of_seg1变量。

160行到390行

这些行将迹线1极限表中的设置储存到Lim1(*)变量。

410行

将迹线2极限表中各个部分的数量储存到Num_of_seg2变量。

420行到590行

这些行将迹线2极限表中的设置储存到Lim2(*)变量。

610行到620行

这些行使用Cent与Span变量包含的中心与范围值为通道1的扫描范围设定扫描范围。

630行到660行

这些行对通道1进行设定,以使通道1包括2条迹线,能在两个水平窗口显示图形(即屏幕分成上、下两部分),使用总线触发源,并以连续的激活模式运行。

700行

设置通道1的激活迹线为迹线1。

720行到730行

这些行将迹线1的测量参数与数据格式分别储存到Param1$与Fmt1$变量中。

750行到810行

这些行为迹线1设置迹线表。

750行:发送极限表与Num_of_seg1变量(包括各部分数量)的设置命令。

770行到790行: 为每个部分发送五个数据项目(类型、起点激励值、终点激励值、起点响应值和终点响应值)。

820行到830行

这些行打开迹线1的极限显示功能与极限测试功能。

870行

设置通道1的激活迹线为迹线2。

890行到900行

这些行将迹线2的测量参数与数据格式分别设置为Param2$与Fmt2$。

920行到980行

这些行为迹线2设定迹线表。

990行到1000行

这些行打开迹线2的极限显示功能与极限测试功能。

1040行到1060行

这些行设置问题迹线通道1状态寄存器、启动寄存器与正过渡滤波器为6(以二进位表示为0000000000000110),同时设置负向过渡滤波器为0,以使问题迹线状态条件寄存器的位1在结合迹线1与迹线2结果的测试结果为“未通过”时设置为1。

该样本程序提供配置寄存器位的明确示例,以使其反映只包括迹线1和迹线2的测试结果。然而,因为只要启动了这些迹线的极限测试功能,迹线3到迹线9的结果就不会“未通过”,即使缺省设置不变,寄存器位反映的测试结果也限制为迹线1与迹线2。

1070行到1080行

这些行设置过渡滤波器,以使问题极限状态事件寄存器的位1在问题极限状态条件寄存器的位1从0变到1时设置为1。

1090行

清除问题极限状态事件寄存器和问题极限通道1状态事件寄存器。

1110行到1130行

这些行对仪器进行触发,并等待扫描周期完成。

1170行到1190行

这些行获取问题极限状态事件寄存器值,并将其值的位1设置保存到Ch1_judge。

1200行到1230行

这些行获取问题极限通道1状态事件寄存器的值,并将该值位1与位2的设置分别储存到Tr1_judge与Tr2_judge。

1280行

如果通道1的测试结果是“通过”(即如果Ch1_judge返回0),这行显示指示DUT通过极限测试的消息。

1300行到1660行

如果通道1的测试结果为“未通过”(即Ch1_judge返回1),则执行这些行。

1300行: 提醒用户极限测试结果“未通过”。

1320行: 如果迹线1的测试结果是“通过”(即如果Tr1_judge返回0),这行显示指示迹线1通过极限测试的消息。

1340行到1470行:如果迹线1的测试结果为“未通过”(即Tr1_judge返回1),则执行这些行。如果迹线1的测试结果为“未通过”(即Tr1_judge返回1),则执行这些行。

1340行: 提醒用户迹线1的极限测试结果“未通过”

1380行: 设置通道1的激活迹线为迹线2。

1390行到1410行:这些行获得迹线1上未通过的测量点数,并以点数为基础,调整包括获取频率的序列的大小。

1420行到1470行: 这些行获取并显示迹线1上未通过测量点的频率。

1500行: 如果迹线2的测试结果是“通过”(即如果Tr2_judge返回0),这行显示指示迹线2通过极限测试的消息。

1520行到1650行: 如果迹线2的测试结果是“未通过”(即如果Tr2_judge返回1),这些行提醒用户迹线1未通过极限测试,然后获取并显示迹线2上未通过的测量点频率。