12-03-2012
11:13 AM
- last edited on
12-03-2012
12:45 PM
by
MaryH
Hello!
I'm an absolute beginner on GPIB-commands, but I want to write a program to write down measurements of an digital electrometer with an IEEE488-interface. The electrometer is Keithley 6514 with a National Instruments GPIB-USB-HS-adapter.
I installed all the drivers/programs provided by NI for this adapter and the "Measurement and Automation Explorer" was able to detect the adapter and electrometer! Then I followed the instruction to test the connection with the "Interactive control", sending traditional NI-488.2-Calls: ibdev 0 16 0 10 1 0 ibwrt "*IDN?" ibrd 100 ibclr ibonl 0 They do what they supposed to do, writing and reading the identification-information of the electrometer...
But when I try any other command to actually read the measured data (and even without a device connected to the electrometer, there should be plenty of ~0, right?) every time I get an error or another. just using ibrd again leads to timeout-errors EABO, while the electrometer's display show Error 420. I already tried to combine it with ibloc or using ibrda etc, getting error-codes like 411, 410, 210..
Do I need another String to send to get the data? Or am I using it totally wrong^^ I plan to connect to it with a C++-program (embarcadero/borland's version) later on... Are there problems using the C-commands listed in the help-file outside of microsoft's C++?
Regards, Julian
12-03-2012 01:29 PM
You need to provide a list of the commands you are sending and for which ones you are also doing a read. Instead of the low level GPIB, I would recomend you use VISA functions and the VISA Interactive Control.
12-03-2012 04:20 PM
Thank you very much for your fast answer!
(Also thanks to the moderator for cleaning my linebreaks!)
I listed some commands I sent, but after a bit of esearch, I really only needed different strings than "*IDN?"...
The strings are listed in the Keithley 6514 manual. e.g. to get the current displayed value:
ibdev 0 16 0 10 1 0
ibclr
ibwrt "read?"
ibrd 100
ibonl 0
Or "SENS:FUNC?" instead of "read?" to get the current kind of measurement.
A current problem woud be that the physikal interface is locked while in listening-mode (write/read)... I think, ibloc, ibrda and ibwrta would be sufficient to help this...
Thanks for your recommendation using VISA! will that make it easier? I don't think I will need more that these listed commands for my application...
Would it be easy to include VISA in embarcadero's C++-Builder?
Regards,
Julian