2420-01.txt

Keithley 2420

50     OPTION BASE 1
60     DIM Id$[81]
70     INTEGER I,Count,Nop
80     Nop=1001
90     ALLOCATE D(Nop,3)
100    ASSIGN @Src TO 724
110    OUTPUT @Src;"*RST"
120    WAIT 1
130    OUTPUT @Src;"*IDN?"
140    ENTER @Src;Id$
150    CLEAR SCREEN
160    DISP LEN(Id$),Id$
170    GOSUB Fileopen
180    GOSUB Measure0  !ASCII
190 !  GOSUB Measure1  !REAL,64  !안된다.
200    GOSUB Fileclose
210    STOP
220 Measure0: !
230    OUTPUT @Src;"FORM:DATA ASC "
240    OUTPUT @Src;"FORM:ELEM VOLT,CURR,TIME"
250 ! xxx = VOLT : CURR
260    Source$="CURR"
270    Sense$="VOLT"
280    OUTPUT @Src;"SOUR:FUNC CURR"
290    OUTPUT @Src;"SOUR:CURR:MODE SWE"     !Select sweep sourcing mode
300    OUTPUT @Src;"SOUR:DEL 0"          !Set source delay 0sec
310 !  OUTPUT @Src;"SOUR:DEL:AUTO ON"       !Enable/disable auto delay
320 ! logarithmic sweeps
330    OUTPUT @Src;"SOUR:SWE:SPAC LOG"      !Select sweep scale LIN | LOG
340 !  OUTPUT @Src;"SOUR:SWE:RANG BEST"     !Select source ranging BEST ! AUTO ! FIXed
350    OUTPUT @Src;"SOUR:CURR:STAR 0.00001" !Specify sweep start level  min = 10uA
360    OUTPUT @Src;"SOUR:CURR:STOP 0.1"     !Specify sweep stop level
370    OUTPUT @Src;"SOUR:SWE:POIN ";Nop     !Set number of sweep points 2~2500
380    OUTPUT @Src;"SENS:FUNC ""VOLT"""     !Sense$ !Select measure function
390    OUTPUT @Src;"SENS:VOLT:NPLC 0.01"    !
400    OUTPUT @Src;"SENS:VOLT:RANG:AUTO ON" !
410    OUTPUT @Src;"TRIG:COUN ";Nop         !Set trigger count to 5.
420    OUTPUT @Src;"*OPC?"
430    ENTER @Src;Tmp
440    OUTPUT @Src;"SYST:TIME:RES"          !Reset timestamp to zero seconds 실행해야 시간 정밀도 높아짐
450    OUTPUT @Src;"OUTP ON"                !Turn output on. BEEP
460    OUTPUT @Src;"READ?"                  !Trigger sweep and acquire data.
470    ENTER @Src;D(*)
480    OUTPUT @Src;"OUTP OFF"               !Turn output off.
490    OUTPUT @File;"No.,Time[s],Volt[V],Curr[A]"
500    FOR I=1 TO Nop
510      PRINT I,D(I,3),D(I,1),D(I,2)
520      OUTPUT @File;I,D(I,3),D(I,1),D(I,2)
530    NEXT I
540    RETURN
550 Measure1:  !REAL,64
560    ASSIGN @Src1 TO 724;FORMAT OFF,SWAP ON  !???????????
570 !  DIM H$[2]
580    OUTPUT @Src;"FORM:DATA REAL,64"
590    OUTPUT @Src;"FORM:ELEM VOLT,CURR,TIME"
600 ! xxx = VOLT : CURR
610    Source$="CURR"
620    Sense$="VOLT"
630    OUTPUT @Src;"SOUR:FUNC CURR"
640    OUTPUT @Src;"SOUR:CURR:MODE SWE"     !Select sweep sourcing mode
650    OUTPUT @Src;"SOUR:DEL 0"          !Set source delay 0sec
660 !  OUTPUT @Src;"SOUR:DEL:AUTO ON"       !Enable/disable auto delay
670 ! logarithmic sweeps
680    OUTPUT @Src;"SOUR:SWE:SPAC LOG"      !Select sweep scale LIN | LOG
690 !  OUTPUT @Src;"SOUR:SWE:RANG BEST"     !Select source ranging BEST ! AUTO ! FIXed
700    OUTPUT @Src;"SOUR:CURR:STAR 0.00001" !Specify sweep start level  min = 10uA
710    OUTPUT @Src;"SOUR:CURR:STOP 0.1"     !Specify sweep stop level
720    OUTPUT @Src;"SOUR:SWE:POIN ";Nop     !Set number of sweep points 2~2500
730    OUTPUT @Src;"SENS:FUNC ""VOLT"""     !Sense$ !Select measure function
740    OUTPUT @Src;"SENS:VOLT:NPLC 0.01"    !
750    OUTPUT @Src;"SENS:VOLT:RANG:AUTO ON" !
760    OUTPUT @Src;"TRIG:COUN ";Nop         !Set trigger count to 5.
770    OUTPUT @Src;"*OPC?"
780    ENTER @Src;Tmp
790    OUTPUT @Src;"OUTP ON"                !Turn output on. BEEP
800    OUTPUT @Src;"READ?"                  !Trigger sweep and acquire data.
810    ENTER @Src1 USING "%,1A";H1$           !#
820    ENTER @Src1 USING "%,1A";H2$           !0
830    DISP H1$,H2$
840    ENTER @Src1;D(*)
850    ENTER @Src1 USING "%,1A";H1$           !#
860    OUTPUT @Src;"OUTP OFF"               !Turn output off.
870    OUTPUT @File;"No.,Time[s],Volt[V],Curr[A]"
880    FOR I=1 TO Nop
890      PRINT I,D(I,3)-D(1,3),D(I,1),D(I,2)
900      OUTPUT @File;I,D(I,3)-D(1,3),D(I,1),D(I,2)
910    NEXT I
920    RETURN
930 Fileopen:  !
940    DIM Filename$[20],Dhms$[8]
950    Time$=TIME$(TIMEDATE)
960    Date$=DATE$(TIMEDATE)
970    Dhms$=Date$[1;2]&Time$[1;2]&Time$[4;2]&Time$[7;2]
980    Filename$=Dhms$&".txt"
990    CREATE Filename$,1
1000   ASSIGN @File TO Filename$;FORMAT ON
1010   RETURN
1020 Fileclose:!
1030   ASSIGN @File TO *
1040   RETURN
1050 Chart_var:   !
1060   X_origin=0
1070   X_range=Rate*Nop
1080   X_axis_label$="Time [sec]"
1090   Y_origin=0
1100   Y_range=Y_max
1110   Y_axis_label$="Curr [A]"
1120   RETURN
1130 Init_chart:   !
1140   DIM X_axis_label$[25],Y_axis_label$[25]
1150   INTEGER Trace_num
1160   INTEGER Screen_dims(1:2),Gwindow_dims(1:4)
1170   REAL Y(1:1)  !챠트가 하나
1180   GESCAPE CRT,36;Screen_dims(*) ! Get screen width and height.
1190  !
1200  ! Set the dimensions of the graphics window using GESCAPE 33 so
1210  ! that it is centered on the screen.
1220  !
1230   Gwindow_dims(1)=Screen_dims(1)*.25 ! X of upper left.
1240   Gwindow_dims(2)=Screen_dims(2)*.2  ! Y of upper left.
1250   Gwindow_dims(3)=Screen_dims(1)*.7  ! Width.
1260   Gwindow_dims(4)=Screen_dims(2)*.6  ! Height.
1270   GESCAPE CRT,33;Gwindow_dims(*)     ! Set graphics window geometry.
1280  !
1290   GESCAPE CRT,35 ! Move the graphics window to the top.
1300  !
1310  ! Create a stripchart.  Make it invisible until all changes are made.
1320  !
1330   ASSIGN @Strip TO WIDGET "STRIPCHART";SET("VISIBLE":0)
1340  !
1350  ! Set the overall attributes.
1360  !
1370   CONTROL @Strip;SET("TITLE":"Data Logger")
1380   CONTROL @Strip;SET("MINIMUM SCROLL":2)
1390   CONTROL @Strip;SET("MOVABLE":0)
1400   CONTROL @Strip;SET("MAXIMIZABLE":0)
1410   CONTROL @Strip;SET("X":0,"Y":0)
1420  !
1430  ! Size the stripchart to exactly fill the graphics window.
1440  !
1450   Vert_borders=26
1460   Horiz_borders=8
1470   Height=Gwindow_dims(4)-Vert_borders
1480   Width=Gwindow_dims(3)-Horiz_borders
1490   CONTROL @Strip;SET("WIDTH":Width,"HEIGHT":Height)
1500  !
1510   CONTROL @Strip;SET("CURRENT AXIS":"X")
1520   CONTROL @Strip;SET("ORIGIN":X_origin,"RANGE":X_range)
1530   CONTROL @Strip;SET("AXIS LABEL":X_axis_label$)
1540  !CONTROL @Strip;SET("DIGITS":5)
1550  !
1560   CONTROL @Strip;SET("CURRENT AXIS":"Y")
1570   CONTROL @Strip;SET("ORIGIN":Y_origin,"RANGE":Y_range)
1580   CONTROL @Strip;SET("AXIS LABEL":Y_axis_label$)
1590  !
1600   CONTROL @Strip;SET("VISIBLE":1) ! Show the stripchart.
1610  !
1620   RETURN
1630   END