Yokogawa 7651
10 !2020/05/04 Yokogawa 7651 DC Source로 출력 + HP3458A DMM으로 측정
20 ! DC 전압: 10mV +-12.0000mV 100mV +-120.000mV 1V +-1.20000V 10V +-12.0000V 30V +-32.000V
30 ! DC 전류: 1mA +-1.20000mA(10nA) 10mA +-12.0000mA 100mA +-120.000mA(1uA)
40 ! 기능: DCV F1, 범위 10mV:R2, 100mV:R3, 1V:R4, 10V:R5, 30V:R6
50 ! DCA F5, 범위 1mA:R4, 10mA:R5, 100mA:R6
60 ! 세팅: S+nn.nnEnn 또는 S-0.00001
70 ! 자동범위에서 세팅: SA
80 ! 출력 ON/OFF: O0 및 O1
90 ! 트리거: E - 기능,범위,출력값,출력ON/OFF 명령어 뒤에 반드시 사용해야 한다.
100 ! 출력값 확인: OD, 출력 헤더 H0, H1 - 헤더 없고 있고
110 ! xmin, xmax, nop 로그계산방법
120 ! k=(xmax/xmin)^(1/(nop-1))
130 ! x=xmin*k^(n-1) n=1,...,nop
140 DIM Str$[255]
150 INTEGER I,Nop,Count,Sign
160 GOSUB Fileopen
170 ASSIGN @Src TO 703 !Yokogawa 7651
180 ASSIGN @Dmm TO 722 !HP 3458A
190 T0=TIMEDATE
200 OUTPUT @Src;"H0" !출력데이터에서 헤더 off
210 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
220 GOSUB Measurement
230 ! GOSUB Calibration
240 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
250 STOP
260 Calibration: !
270 OUTPUT @Src;"F1E" !DCV
280 OUTPUT @Src;"R2E" !10mV range
290 GOSUB Cal
300 OUTPUT @Src;"R3E" !100mV range
310 GOSUB Cal
320 OUTPUT @Src;"R4E" !1V range
330 GOSUB Cal
340 OUTPUT @Src;"R5E" !10V range
350 GOSUB Cal
360 OUTPUT @Src;"R6E" !100V range
370 GOSUB Cal
380 Str$="전류 측정합니다. DMM을 전류측정으로 세팅하고 단자를 전류로 꼽으시요"
390 DIALOG "INFORMATION",Str$,Btn
400 OUTPUT @Src;"F5E" !DCI
410 OUTPUT @Src;"R4E" !1mA range
420 GOSUB Cal
430 OUTPUT @Src;"R5E" !10mA range
440 GOSUB Cal
450 OUTPUT @Src;"R6E" !100mA range
460 GOSUB Cal
470 RETURN
480 Measurement: !
490 Nop=101
500 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
510 Str$="전압 측정합니다. DMM을 전압측정으로 세팅하고 단자를 전압에 꼽으시요"
520 DIALOG "INFORMATION",Str$,Btn
530 OUTPUT @Src;"F1E" !func DCV
540 Min=1.E-6 ! min = 0.1uV이지만 의미있는 1uV부터
550 Max=32 !32V
560 OUTPUT @File;"No., Time[s], Yokogawa7651 set[V], HP3458A meas[V], Diff[ppm]"
570 OUTPUT @Src;"R2E" !range 1mA
580 GOSUB Discharge
590 Sign=-1
600 GOSUB Meas_loop
610 OUTPUT @Src;"R2E" !range 10mV
620 GOSUB Discharge
630 Sign=+1
640 GOSUB Meas_loop
650 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
660 Str$="전류 측정합니다. DMM을 전류측정으로 세팅하고 단자를 전류에 꼽으시요"
670 DIALOG "INFORMATION",Str$,Btn
680 OUTPUT @Src;"F5E"
690 Min=1.E-8 ! 10nA에서부터
700 Max=.12 ! 120mA까지
710 OUTPUT @File;"No., Time[s], Yokogawa7651 set[A], HP3458A meas[A], Diff[ppm]"
720 OUTPUT @Src;"R4E" !range 1mA
730 GOSUB Discharge
740 Sign=-1
750 GOSUB Meas_loop
760 OUTPUT @Src;"R4E" !range 1mA
770 GOSUB Discharge
780 Sign=+1
790 GOSUB Meas_loop
800 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
810 OUTPUT @Dmm;"TRIG AUTO"
820 STOP
830 Discharge: !
840 FOR I=1 TO 10 !Max 값으로 측정한 후 남은 전하를 방전하자.
850 OUTPUT @Src;"O1E" !output ON
860 OUTPUT @Src;"SA";1.E-7*Sign;"E"
870 WAIT .1
880 OUTPUT @Src;"O0E" !output OFF
890 WAIT .1
900 NEXT I
910 RETURN
920 Meas_loop: !
930 OUTPUT @Src;"O1E" !output ON
940 FOR I=1 TO Nop
950 Count=I
960 T1=TIMEDATE-T0
970 K=(Max/Min)^(1/(Nop-1))
980 V=Min*K^(I-1)
990 V=Sign*V !세팅값이 -인지 +인지
1000 V=DROUND(V,6) !입력 유효자리수 6
1010 OUTPUT @Src;"SA";V;"E"
1020 WAIT .1
1030 GOSUB Source_reading !V0 = 소스 세팅값을 읽는다.
1040 DISP "set error=";DROUND(ABS((V0-V)/V)*1.E+6,2);"ppm"
1050 OUTPUT @Dmm;"TRIG SGL"
1060 ENTER @Dmm;V1
1070 V2=DROUND(ABS((V1-V0)/V0)*1.E+6,2) ! ppm 오차
1080 PRINT "No.=";Count," Set=";V0," Meas=";V1," Diff=";V2;"ppm"
1090 OUTPUT @File;Count,T1,V0,V1,V2
1100 NEXT I
1110 OUTPUT @Src;"O0E" !output OFF
1120 RETURN
1130 Source_reading:!!
1140 OUTPUT 703;"OD"
1150 ENTER 703;V0
1160 RETURN
1170 Fileopen: !
1180 DIM Filename$[20],Dhms$[8]
1190 Time$=TIME$(TIMEDATE)
1200 Date$=DATE$(TIMEDATE)
1210 Dhms$=Date$[1;2]&Time$[1;2]&Time$[4;2]&Time$[7;2]
1220 Filename$=Dhms$&".txt"
1230 CREATE Filename$,1
1240 ASSIGN @File TO Filename$;FORMAT ON
1250 RETURN
1260 Dmm_reading: !
1270 OUTPUT @Dmm;"TRIG SGL"
1280 ENTER @Dmm;Rdg
1290 Rdg=DROUND(Rdg,7)
1300 RETURN
1310 Cal: ! 출력 ON하고 세팅하고, OFF하고 range 변경해야 한다.
1320 OUTPUT @Src;"O1E" !output ON
1330 ! +zero
1340 OUTPUT @Src;"YZP0"
1350 GOSUB Dmm_reading
1360 OUTPUT @Src;"YZS";Rdg
1370 ! +full
1380 OUTPUT @Src;"YZP1"
1390 GOSUB Dmm_reading
1400 OUTPUT @Src;"YZS";Rdg
1410 ! -zero
1420 OUTPUT @Src;"YZP2"
1430 GOSUB Dmm_reading
1440 OUTPUT @Src;"YZS";Rdg
1450 ! -full
1460 OUTPUT @Src;"YZP3"
1470 GOSUB Dmm_reading
1480 OUTPUT @Src;"YZS";Rdg
1490 ! end
1500 OUTPUT @Src;"YZW" !write
1510 OUTPUT @Src;"O0E" !output OFF
1520 RETURN
1530 END