66311B-0-bas.txt

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