|
Question:
Do you have an example program that collects data direct to disk from a 3852A? Answer: The following program configures the high-speed DVM to make measurements as fast as possible. The readings are sent to an external LIF formatted disk drive via the 44788A card. Using a Agilent 7912A, a data rate of 8 KHZ was maintained for 10 minutes. |
30 ! The following program configures the high speed DVM 40 ! to make measurements as fast as possible. The readings 50 ! are sent to a external LIF FORMATTED disk drive via 60 ! a 44788A card. The disk drive I used was a model 7912. 70 ! The program is written in a CDA format. I achieved a 80 ! rate of 8 KHz for > 600 seconds 90 ! 100 ! The 3852S was configured as follows: 110 ! 120 ! slot module 130 ! 200 44788A HP-IB card 140 ! 500 44711A High speed fet mux 150 ! 600-700 44702B High speed DVM 160 ! 190 ! YOU CAN CHANGE THE NUMBER OF BYTES THAT ARE TRANSFERRED 200 ! IN A GROUP OF READINGS AND INPROVE THE RESULTS. FOR MY 210 ! DISK DRIVE, 5000 RDGS (OR 10000 BYTES) PER BLOCK WORKED WELL. 240 ! 250 ! ************************************************** 260 ! FASTEST RATE >25 kHZ 270 ! ************************************************** 280 ! 290 OPTION BASE 1 300 ! 310 ASSIGN @Dac TO 709 320 ASSIGN @Bin TO 709;FORMAT OFF 330 ASSIGN @Prn TO 701 340 ! 350 DIM A$[50] 360 INTEGER Int_d 370 ! 380 ! SET FREQ OF SCAN below 390 ! 400 Samp_rt=25000 410 Numcycls=950 420 Rec_size=5000 ! NUMBER OF READINGS TRANSFERRED PER CYCLE 430 File_size=(Numcycls*Rec_size*2) ! IN BYTES 440 Num_rec=40000 ! NUMBER OF REC IN FILE 450 Rec_siz=256 ! RECORD SIZE IN FILE 460 Req_rec=File_size/Rec_siz 470 ! 480 ! REPORT FILE SPECS 490 ! 500 OUTPUT @Prn 510 OUTPUT @Prn;"ATTEMPTED DATA ACQUISITION SPEED";Samp_rt 520 OUTPUT @Prn 530 OUTPUT @Prn;"NUMBER OF READINGS TRANSFERRED PER CYCLE";Rec_size 540 OUTPUT @Prn;"ATTEMPTED NUMBER OF CYCLES";Numcycls 550 OUTPUT @Prn;"ATTEMPTED NUMBER OF BYTES WRITTEN TO FILE";File_size 560 OUTPUT @Prn 570 OUTPUT @Prn;"FILE -- RECORD SIZE";Rec_siz 580 OUTPUT @Prn;"FILE -- NUMBER OF RECORDS";Num_rec 590 OUTPUT @Prn;"REQUIRED RECORDS TO STORE";Numcycls;"CYCLES IN THE DATA FILE";Req_rec 600 OUTPUT @Prn 640 ! 650 ! 660 CLEAR @Dac 670 OUTPUT @Dac;"RESET" 680 WAIT 1 690 ! 700 ! CAT DISK AND CREATE FILE 710 ! 720 OUTPUT @Dac;"CAT ':,203'" 730 REPEAT 740 IF BIT(SPOLL(@Dac),0) THEN 750 ENTER @Dac;A$ 760 PRINT A$ 770 END IF 780 UNTIL BINAND(SPOLL(@Dac),17)=16 790 PRINT 800 ! 810 INPUT "PURGE DATA FILE",Ddf$ 820 IF NOT (Ddf$="" OR Ddf$="NO") THEN OUTPUT @Dac;"PURGE 'DVM_DATA:,203'" 830 ! 840 INPUT "CREATE DATA FILE ",Ddf$ 850 IF NOT (Ddf$="" OR Ddf$="NO") THEN OUTPUT @Dac;"CREATE BDAT 'DVM_DATA:,203'";Num_rec;",";Rec_siz 860 OUTPUT @Dac;"ASSIGN @D TO 'DVM_DATA:,203' FORMAT OFF" 870 ! 880 ! MAINFRAME COMMANDS 890 ! 900 OUTPUT @Dac;"OUTBUF ON; INBUF ON" 910 OUTPUT @Dac;"DISABLE LABELS; DISP OFF" 920 OUTPUT @Dac;"PACKED A(";Rec_size*2-1;")" 930 OUTPUT @Dac;"INTEGER I,N" 940 OUTPUT @Dac;"N=0" 950 ! 960 ! Configure the voltmeter in slot 600: 970 ! 980 OUTPUT @Dac;"USE 600" 990 OUTPUT @Dac;"SCANMODE ON" 1000 OUTPUT @Dac;"SCTRIG HOLD" 1010 OUTPUT @Dac;"FUNC DCV" 1020 OUTPUT @Dac;"RANGE 10" 1030 OUTPUT @Dac;"TERM RIBBON" 1040 OUTPUT @Dac;"RDGSMODE BURST" 1050 OUTPUT @Dac;"NRDGS 1" 1060 OUTPUT @Dac;"SPER";1/Samp_rt ! Vary the scanning rate here 1070 OUTPUT @Dac;"SCDELAY 0,";1/Samp_rt 1080 OUTPUT @Dac;"ASCAN ON" 1090 OUTPUT @Dac;"TRIGOUT ON" 1100 OUTPUT @Dac;"CLWRITE SENSE 500-507" 1110 OUTPUT @Dac;"POSTSCAN 0" 1120 OUTPUT @Dac;"STTRIG HOLD" 1130 ! 1140 DISP "INTERRUPT SETUP" 1150 ! 1190 OUTPUT @Dac;"SUB MOVER2" 1200 OUTPUT @Dac;" WHILE N<";Numcycls 1210 OUTPUT @Dac;" XRDGS 600";Rec_size-1;"INTO A" 1220 OUTPUT @Dac;" OUTPUT @D A(*)" 1230 OUTPUT @Dac;" N=N+1" 1240 OUTPUT @Dac;" VREAD N PACK" 1250 OUTPUT @Dac;" INDEX A 0" 1260 OUTPUT @Dac;" END WHILE" 1270 OUTPUT @Dac;"SUBEND" 1280 ! 1290 OUTPUT @Dac;"ON INTR USE 600 CALL MOVER2" 1300 OUTPUT @Dac;"ENABLE INTR USE 600" 1310 OUTPUT @Dac;"ENABLE INTR SYS" 1320 ! 1330 DISP "TRIGGER DVM" 1340 ! 1350 OUTPUT @Dac;"SCTRIG SGL USE 600" ! Trigger voltmeter to 1360 ! begin taking readings 1370 ! 1380 ! GOTO Query_n 1390 ON TIMEOUT 7,25 GOTO Dead 1400 FOR N=1 TO Numcycls 1410 ENTER @Bin;Int_d 1420 OUTPUT 1;Int_d,N 1430 NEXT N 1440 OUTPUT @Prn;"TEST COMPLETED SUCCESSFULLY" 1450 OUTPUT @Prn;"NUMBER OF LOOPS COMPLETED";N 1460 OUTPUT @Prn;"TOTAL BYTES WRITTEN TO DISK :";N*Rec_size*2 1470 STOP 1480 ! 1490 ! 1500 Dead: ! 1510 OUTPUT @Prn;"44702A BUFFER FILLED -- DATA ACQUISITION STOPPED" 1520 OUTPUT @Prn;"NUMBER OF LOOPS COMPLETED";N 1530 OUTPUT @Prn;"TOTAL BYTES WRITTEN TO DISK :";N*Rec_size*2 1540 STOP 1550 Query_n: ! 1560 PAUSE 1570 CLEAR @Dac 1580 OUTPUT @Dac;"VREAD N" 1590 ENTER @Dac;N 1600 PRINT N 1610 STOP 1620 END