66311B-0-bas.txt
10 ! 2018-10-10 measure1 !순간전류 측정
20 ! 2019-09-20 measure2 !전압상승에 따른 전류측정
30 ! 2019-12-24 measure3 !전류상승에 따른 전압측정
40 ! 2019-12-24 measure4 !시간에 따른 전류 전압 측정
50 OPTION BASE 1
60 ASSIGN @Ps TO 705
70 OUTPUT @Ps;"*RST"
80 OUTPUT @Ps;"*IDN?"
90 ENTER @Ps;Id$
100 DISP Id$
110 GOSUB Fileopen
120 GOSUB Measure1 !아니면 Measure2,3
130 ! GOSUB Measure2 !아니면 Measure1,3
140 ! GOSUB Measure4 !아니면 Measure1,2
150 GOSUB Fileclose
160 STOP
161 Measure1: !펄스 측정
162 !sec minimum sampling interval 15usec, x 4001 = 60msec
163 Volt=.6
164 INTEGER Nop,I
165 Nop=4001 !max buffer size = 4096
166 Time=10 !sec
167 Rate=Time/(Nop-1) !>15usec 이상이어야 한다.
168 ALLOCATE Yarray(Nop),Xarray(Nop)
169 DIM Id$[50]
171 OUTPUT @Ps;"VOLT 0.6"
172 OUTPUT @Ps;"CURR 1"
173 OUTPUT @Ps;"SENS:CURR:DET ACDC" ! Set meter to ACDC(펄스 측정에 최적화)
174 OUTPUT @Ps;"SENS:CURR:RANG MAX" !!!!! MIN=0.02A, MAX=3A !!!!!!!!!!!!
175 OUTPUT @Ps;"TRIG:ACQ:SOUR INT" ! Set to trigger on pulse
176 OUTPUT @Ps;"SENS:FUNC ""CURR""" ! Acquire current reading
177 OUTPUT @Ps;"TRIG:ACQ:LEV:CURR 0.01 " !!!!! Trigger at 10uA 최소 !!!!!!!!!!!!!
178 OUTPUT @Ps;"TRIG:ACQ:SLOPE:CURR POS" ! Trigger on positive slope
179 OUTPUT @Ps;"TRIG:ACQ:HYST:CURR .005" ! Set hysteresis of trigger !!!!!!!!!!!!!!!
180 OUTPUT @Ps;"SENS:SWE:TINT ";Rate ! Set sample time interval to (rate)
181 OUTPUT @Ps;"SENS:SWE:POIN ";Nop ! Set number of measurement samples in sweep
182 OUTPUT @Ps;"SENS:SWE:OFFS:POIN 100 " ! Number of sample points before trigger
184 OUTPUT @Ps;"INIT:NAME ACQ" ! Initiate the trigger system.
185 OUTPUT @Ps;"OUTP ON"
194 ! Controller now waits for trigger to occur.
204 OUTPUT @Ps;"FETCH:ARRAY:CURR?" ! Get the data after measurement completes.
214 ENTER @Ps;Yarray(*)
224 OUTPUT @Ps;"VOLT 0"
234 ! OUTPUT @Ps;"OUTP OFF"
244 GOSUB Reading1
254 Y_max=Curr_max !for chart
264 OUTPUT @File;"No.,Time[s],Volt[V],Curr[A]"
274 GOSUB Chart_var
284 GOSUB Init_chart
294 FOR I=1 TO Nop
304 Xarray(I)=(I-1)*Rate
314 Y(1)=Yarray(I)
324 CONTROL @Strip;SET("POINT LOCATION":Xarray(I),"VALUES":Y(*))
334 NEXT I
344 FOR I=1 TO Nop
354 OUTPUT @File;I,Xarray(I),Volt,Yarray(I)
364 NEXT I
374 RETURN
384 Measure4: ! 15V 3A wait 없다,
394 Max_power=1
404 Set_curr=1
414 Set_volt=.6
424 OUTPUT @Ps;"SOUR:VOLT ";Set_volt
434 OUTPUT @Ps;"CURR ";Set_curr
444 OUTPUT @Ps;"SENS:CURR:RANG 3" !0.02 low
454 OUTPUT @File;"No.,Time[s],Volt[V],Curr[A],Resi[ohm],Powe[W]"
464 OUTPUT @Ps;"OUTP ON"
474 I=0
484 T0=TIMEDATE
494 LOOP
504 I=I+1
514 Time=(TIMEDATE-T0)
524 GOSUB Reading2 !output=volt,curr
534 IF Curr=0 THEN
544 Curr=1.E-6
554 ELSE
564 END IF
574 Resi=Volt/Curr
584 Powe=Volt*Curr
594 ! PRINT "Count=";I;
604 ! PRINT ", T=";PROUND(Time,-1);
614 ! PRINT "s, V=";PROUND(Volt,-3);
624 ! PRINT "V, C=";PROUND(Curr,-3);
634 ! PRINT "A, R=";PROUND(Resi,-3);
644 ! PRINT "ohm, P=";PROUND(Powe,-3);
654 ! PRINT "W"
664 OUTPUT @File;I,Time,Volt,Curr,Resi,Powe
674 EXIT IF Powe>Max_power
684 EXIT IF Set_volt>15
694 EXIT IF Volt>15.1
704 EXIT IF Curr>.5
714 EXIT IF Time>100
724 END LOOP
734 OUTPUT @Ps;"VOLT 0"
744 OUTPUT @Ps;"OUTP OFF"
754 RETURN
764 Measure3: ! 15V 3A
774 Max_power=10 !2W 이상이면 종료
784 Set_curr=0
794 Set_curr_step=.005
804 OUTPUT @Ps;"SOUR:VOLT 15"
814 OUTPUT @Ps;"CURR 0"
824 OUTPUT @Ps;"SENS:CURR:RANG 3" !0.02 low
834 OUTPUT @File;"No.,Time[s],Volt[V],Curr[A],Resi[ohm],Powe[W]"
844 OUTPUT @Ps;"OUTP ON"
854 I=0
864 T0=TIMEDATE
874 LOOP
884 I=I+1
894 Set_curr=Set_curr+Set_curr_step
904 Time=(TIMEDATE-T0)
914 OUTPUT @Ps;"CURR ";Set_curr
924 GOSUB Reading2 !output=volt,curr
934 IF Curr=0 THEN
944 Curr=1.E-6
954 ELSE
964 END IF
974 Resi=Volt/Curr
984 Powe=Volt*Curr
994 PRINT "Count=";I;
1004 PRINT ", T=";PROUND(Time,-1);
1014 PRINT "s, V=";PROUND(Volt,-3);
1024 PRINT "V, C=";PROUND(Curr,-3);
1034 PRINT "A, R=";PROUND(Resi,-3);
1044 PRINT "ohm, P=";PROUND(Powe,-3);
1054 PRINT "W"
1064 OUTPUT @File;I,Time,Volt,Curr,Resi,Powe
1074 IF Curr>.02 THEN
1084 OUTPUT @Ps;"SENS:CURR:RANG 3"
1094 END IF
1104 WAIT 1
1114 EXIT IF Powe>Max_power
1124 EXIT IF Set_volt>15
1134 EXIT IF Volt>15
1144 EXIT IF Curr>3
1154 END LOOP
1164 OUTPUT @Ps;"VOLT 0"
1174 OUTPUT @Ps;"OUTP OFF"
1184 RETURN
1194 Measure2: ! 15V 3A
1204 Max_power=10 !2W 이상이면 종료
1214 Set_volt=0
1224 Set_volt_step=.01
1234 OUTPUT @Ps;"SOUR:CURR 3"
1244 OUTPUT @Ps;"SENS:CURR:RANG 3 " !0.02 low
1254 OUTPUT @File;"No.,Time[s],Volt[V],Curr[A],Resi[ohm],Powe[W]"
1264 OUTPUT @Ps;"OUTP ON"
1274 I=0
1284 T0=TIMEDATE
1294 LOOP
1304 I=I+1
1314 Set_volt=Set_volt+Set_volt_step
1324 Time=(TIMEDATE-T0)
1334 OUTPUT @Ps;"VOLT ";Set_volt
1344 GOSUB Reading2 !output=volt,curr
1354 IF Curr=0 THEN
1364 Curr=1.E-6
1374 ELSE
1384 END IF
1394 Resi=Volt/Curr
1404 Powe=Volt*Curr
1414 PRINT "Count=";I;
1424 PRINT ", T=";PROUND(Time,-1);
1434 PRINT "s, V=";PROUND(Volt,-3);
1444 PRINT "V, C=";PROUND(Curr,-3);
1454 PRINT "A, R=";PROUND(Resi,-3);
1464 PRINT "ohm, P=";PROUND(Powe,-3);
1474 PRINT "W"
1484 OUTPUT @File;I,Time,Volt,Curr,Resi,Powe
1494 IF Curr>.02 THEN
1504 OUTPUT @Ps;"SENS:CURR:RANG 3"
1514 END IF
1524 WAIT 1
1534 EXIT IF Powe>Max_power
1544 EXIT IF Set_volt>15
1554 EXIT IF Volt>15
1564 EXIT IF Curr>3
1574 END LOOP
1584 OUTPUT @Ps;"VOLT 0"
1594 OUTPUT @Ps;"OUTP OFF"
1604 RETURN
1614 Reading1: !
1624 OUTPUT @Ps;"FETCH:CURR:MAX?"
1634 ENTER @Ps;Curr_max
1644 OUTPUT @Ps;"FETCH:CURR:MIN?"
1654 ENTER @Ps;Curr_min
1664 OUTPUT @Ps;"FETCH:CURR:HIGH?"
1674 ENTER @Ps;Curr_high
1684 OUTPUT @Ps;"FETCH:CURR:LOW?"
1694 ENTER @Ps;Curr_low
1704 OUTPUT @File;"Max Curent = ";Curr_max
1714 OUTPUT @File;"Min Curent = ";Curr_min
1724 OUTPUT @File;"High Curent = ";Curr_high
1734 OUTPUT @File;"Low Curent = ";Curr_low
1744 RETURN
1754 Reading2: !
1764 OUTPUT @Ps;"MEAS:VOLT?"
1774 ENTER @Ps;Volt
1784 OUTPUT @Ps;"MEAS:CURR?"
1794 ENTER @Ps;Curr
1804 RETURN
1814 Fileopen: !
1824 DIM Filename$[20],Dhms$[8]
1834 Time$=TIME$(TIMEDATE)
1844 Date$=DATE$(TIMEDATE)
1854 Dhms$=Date$[1;2]&Time$[1;2]&Time$[4;2]&Time$[7;2]
1864 Filename$=Dhms$&".txt"
1874 CREATE Filename$,1
1884 ASSIGN @File TO Filename$;FORMAT ON
1894 RETURN
1904 Fileclose:!
1914 ASSIGN @File TO *
1924 RETURN
1934 Chart_var: !
1944 X_origin=0
1954 X_range=Rate*Nop
1964 X_axis_label$="Time [sec]"
1974 Y_origin=0
1984 Y_range=Y_max
1994 Y_axis_label$="Curr [A]"
2004 RETURN
2014 Init_chart: !
2024 DIM X_axis_label$[25],Y_axis_label$[25]
2034 INTEGER Trace_num
2044 INTEGER Screen_dims(1:2),Gwindow_dims(1:4)
2054 REAL Y(1:1) !챠트가 하나
2064 GESCAPE CRT,36;Screen_dims(*) ! Get screen width and height.
2074 !
2084 ! Set the dimensions of the graphics window using GESCAPE 33 so
2094 ! that it is centered on the screen.
2104 !
2114 Gwindow_dims(1)=Screen_dims(1)*.25 ! X of upper left.
2124 Gwindow_dims(2)=Screen_dims(2)*.2 ! Y of upper left.
2134 Gwindow_dims(3)=Screen_dims(1)*.7 ! Width.
2144 Gwindow_dims(4)=Screen_dims(2)*.6 ! Height.
2154 GESCAPE CRT,33;Gwindow_dims(*) ! Set graphics window geometry.
2164 !
2174 GESCAPE CRT,35 ! Move the graphics window to the top.
2184 !
2194 ! Create a stripchart. Make it invisible until all changes are made.
2204 !
2214 ASSIGN @Strip TO WIDGET "STRIPCHART";SET("VISIBLE":0)
2224 !
2234 ! Set the overall attributes.
2244 !
2254 CONTROL @Strip;SET("TITLE":"Data Logger")
2264 CONTROL @Strip;SET("MINIMUM SCROLL":2)
2274 CONTROL @Strip;SET("MOVABLE":0)
2284 CONTROL @Strip;SET("MAXIMIZABLE":0)
2294 CONTROL @Strip;SET("X":0,"Y":0)
2304 !
2314 ! Size the stripchart to exactly fill the graphics window.
2324 !
2334 Vert_borders=26
2344 Horiz_borders=8
2354 Height=Gwindow_dims(4)-Vert_borders
2364 Width=Gwindow_dims(3)-Horiz_borders
2374 CONTROL @Strip;SET("WIDTH":Width,"HEIGHT":Height)
2384 !
2394 CONTROL @Strip;SET("CURRENT AXIS":"X")
2404 CONTROL @Strip;SET("ORIGIN":X_origin,"RANGE":X_range)
2414 CONTROL @Strip;SET("AXIS LABEL":X_axis_label$)
2424 !CONTROL @Strip;SET("DIGITS":5)
2434 !
2444 CONTROL @Strip;SET("CURRENT AXIS":"Y")
2454 CONTROL @Strip;SET("ORIGIN":Y_origin,"RANGE":Y_range)
2464 CONTROL @Strip;SET("AXIS LABEL":Y_axis_label$)
2474 !
2484 CONTROL @Strip;SET("VISIBLE":1) ! Show the stripchart.
2494 !
2504 RETURN
2514 END