Tektronix Technical Forums are maintained by community involvement. Feel free to post questions or respond to questions by other members. Should you require a time-sensitive answer, please contact your local Tektronix support center here.

Combining Keithley 7001 and Keithley 2002

Post Reply
ivan.salim
Posts: 1
Joined: August 19th, 2015, 1:28 pm
Country: United States

Combining Keithley 7001 and Keithley 2002

Post by ivan.salim » August 19th, 2015, 1:45 pm

Hi,

I have downloaded and modified labview drivers for keithley 7001 and keithley 2002 individually. However, I am having a hard time in combining the two drivers together. Can anybody please guide me on ways to combine the drivers together? Thank you. I have attached the necessary drivers to this mail.
Attachments
Keith 7001 7011 Perform Scan (1).vi
(15.8 KiB) Downloaded 959 times
ConfigureScanList7011 (1).vi
Driver for Perform Scan
(17.64 KiB) Downloaded 950 times
Ke2002 Measurement.vi
RTD measurement
(11.38 KiB) Downloaded 948 times

Dale C
Keithley Applications
Keithley Applications
Posts: 2827
Joined: June 10th, 2010, 6:22 am
Country: United States
Contact:

Re: Combining Keithley 7001 and Keithley 2002

Post by Dale C » August 31st, 2015, 12:36 pm

I was not able to open your VIs. Probably because you have changed them for the original driver.
Here is a crude quick basic program that kind of does what you need.
Just look at the SCPI command codes. They are what matter.
Maybe this will help?
Initialize GPIB.

'



cmd$ = "*RST;:INIT:CONT OFF"
GOSUB send2001
cmd$ = ":ABORT"
GOSUB send2001
cmd$ = "*RST;:INIT:CONT OFF"
GOSUB send7001
cmd$ = ":ABORT"
GOSUB send7001 '

'
Initialize 2001
cmd$ = ":SYSTEM:AZERO:STATE on"
GOSUB send2001
cmd$ = ":FORMAT:ELEM READ"
GOSUB send2001
cmd$ = ":SENSE:FUNC 'RES'"
GOSUB send2001
cmd$ = ":SENSE:res:AVER:STATE OFF"
GOSUB send2001
cmd$ = ":SENSE:res:NPLC 0.1"
GOSUB send2001
cmd$ = ":SENSE:res:RANGE 100"
GOSUB send2001
cmd$ = ":ARM:LAYER1:SOURCE IMM"
GOSUB send2001
cmd$ = ":ARM:LAYER2:SOURCE BUS"
GOSUB send2001
cmd$ = ":TRIG:SOURCE EXT"
GOSUB send2001
cmd$ = ":ARM:LAYER1:COUNT 1"
GOSUB send2001
cmd$ = ":ARM:LAYER2:COUNT 1"
GOSUB send2001
cmd$ = ":TRIG:COUNT 10"
GOSUB send2001
cmd$ = ":ARM:LAYER2:DELAY 0"
GOSUB send2001
cmd$ = ":TRIG:DELAY 0"
GOSUB send2001
cmd$ = ":TRIG:TCON:DIR SOUR"
GOSUB send2001
Initialize 7001.
cmd$ = ":ROUTE:OPEN ALL"
GOSUB send7001
cmd$ = ":ROUTE:SCAN (@1!1:1!10)"
GOSUB send7001
cmd$ = ":ARM:LAYER1:SOURCE IMM"
GOSUB send7001
cmd$ = ":ARM:LAYER2:SOURCE IMM"
GOSUB send7001
cmd$ = ":TRIG:SOURCE EXT"
GOSUB send7001
cmd$ = ":ARM:LAYER1:COUNT 1
GOSUB send7001
cmd$ = ":ARM:LAYER2:COUNT 1"
GOSUB send7001
cmd$ = ":TRIG:COUNT INF"
GOSUB send7001
cmd$ = ":ARM:LAYER2:DELAY 0"
GOSUB send7001
cmd$ = ":TRIG:DELAY 0"
GOSUB send7001
cmd$ = ":TRIG:TCON:DIR SOUR"
GOSUB send7001
cmd$ = ":INIT"
GOSUB send7001
cmd$ = ":INIT"
GOSUB send2001
Arm buffer
cmd$ = "*SRE 1"
GOSUB send2001
cmd$ = "STAT:MEAS:PTR 32767;NTR 0;ENAB 512"
GOSUB send2001
cmd$ = ":TRAC:FEED CALC"
GOSUB send2001
cmd$ = ":TRAC:POIN 10"
GOSUB send2001
cmd$ = ":TRAC:EGR COMP"
GOSUB send2001
cmd$ = ":FORM:DATA SREAL"
GOSUB send2001
cmd$ = ":TRAC:FEED:CONT NEXT;*OPC"
GOSUB send 2001
CALL Delay(1)
Start filling...
t1 = TIMER
CALL transmit("UNL LISTEN 16 GET", status%)
Wait for buffer to fill...
DO
DO
LOOP UNTIL srq%
CALL spoll(DmmAddr%, poll%, status%)
LOOP UNTIL (poll% AND 64)
cmd$ = ":STAT:MEAS:EVENT?"
GOSUB send2001
CALL enter(Sme$, length%, 16, status%) '
Go get buffer contents.
cmd$ = "TRACe:DATA?"
GOSUB send2001
DIM Readings!(1 TO 10), dummy!(1 TO 1) '
Setup CEC for LISTEN & 2001 for TALK
CALL transmit("UNT UNL MLA TALK 16", status% '
Read 2 bytes (#0)
r$ = SPACE$(2)
CALL receive(r$, l%, status%)
NumDataPoints% = 10 '
Get Data in 4 blocks since CEC can only handle up to 64kB '
per data transfer.
NumBytes% = NumDataPoints% * 4
CALL rarray(Readings!(1), NumBytes%, l%, status%)
get Terminator Character(s)
CALL settimeout(100)
CALL rarray(dummy!(1), 1, l%, status%)
CALL settimeout(10000)
CALL transmit("UNT UNL", status%) '
UNTalk and UNListen all devices
t2 = TIMER

t3 = t2 - t1
FOR i = 1 TO 10
PRINT "Rdg("; i; ") = ";
Readings!(i)
NEXT i
PRINT
PRINT "Total time = "; t3
PRINT
t4 = t3 / 10
PRINT "Seconds per channel = "; t4
END
send2001:
CALL send(DmmAddr%, cmd$, status%)
RETURN
send7001:
CALL send(ScanAddr%, cmd$, status%
RETURN
SUB Delay (tdelay)
tstart = TIMER
DO
tstop = TIMER
LOOP WHILE tstop - tstart <= tdelay
END SUB
SUB WaitForBuffer
CALL send(DmmAddr%, ":stat:meas:ptr 512", status%)
WHILE (TRUE)
CALL send(DmmAddr%, ":stat:meas:even?", status%)
CALL enter(Rdg$, length%, DmmAddr%, status%)
ser = VAL(Rdg$)
IF (ser AND 512) = 512 THEN
EXIT SUB
END IF
Delay (1)
WEND
END SUB

Post Reply

Return to “LabView Drivers”

Who is online

Users browsing this forum: No registered users and 6 guests