05-17-2012 10:34 PM
hello,
i am a new EE student and fairly new to labview. I am doing a project do output source current from a keithley 2400 sourcemeter and measure voltage drop with a 2182a nanovoltmeter across a DUT in delta mode. I downloaded the appropriate instrument drivers for these into labview. I have seen vis were they do not use these drivers rather use GPIB and some use VISA. can someone explain to me the difference of using VISA vs. GPIB vs. keithley instrument drivers?
my hardware connection is: GPIB and trigger cable between the 2 instruments and using a GPIB-USB into my laptop. using labview 2012.
thanks
05-18-2012 06:04 AM
USE the driver and you'l see that the 2400 driver is using visa. I don't know about the other one.
VISA is an architecture that uses direct calls to the gpib dll, just as the other driver does, but also offers possibilities to use other communication channels like serial (e.g. for the 2400).
So it is just as fast (in fact the 2400 is limiting the speed) and has much more features.
New drivers all use visa.
05-18-2012 11:32 AM
thanks for the reply,
let me see if i understand this and please correct me if i am wrong as i am pretty new to device communication. I have the 2182a and the 2400 instrument drivers as well as GPIB and VISA drivers that came with labVIEW. It looks like the GPIB read/write allows more features as you are able to directly communcate with SPCI commands. on the other hand the drivers from keithley have limitation as it is mainly just plug n play? am I correct?
05-18-2012 11:33 AM
thanks for the reply,
let me see if i understand this and please correct me if i am wrong as i am pretty new to device communication. I have the 2182a and the 2400 instrument drivers as well as GPIB and VISA drivers that came with labVIEW. It looks like the GPIB read/write allows more features as you are able to directly communcate with SPCI commands. on the other hand the drivers from keithley have limitation as it is mainly just plug n play? am I correct?
05-18-2012 12:50 PM
Not even close. There is no difference at all in using SCPI commands with either GPIB or VISA. A driver that comes with LabVIEW is the Agilent 34401 and if you were to look at the block diagram, you would see the SCPI commands there. There is very little that the GPIB functions can do that the VISA functions can't. I have been using VISA for many, many years and have only needed the low level GPIB functions a couple of times.
Both GPIB and VISA are hardware drivers. Don't confuse them with the instrument drivers you get from NI/Keithley/etc. An instrument driver is a LabVIEW program (usually) that calls VISA/GPIB functions to read and write to/from an instrument. As already mentioned, VISA is an API that abstracts some of the hardware details. A VISA driver is capable of communicating with GPIB, serial, Ethernet, USB, PXI, instruments with typically only minor differences for serial instruments. Because of this, VISA has become the standard communication protocol for instrument drivers from NI, Agilent, Tek, Keithley, and countless others.
You can, of course decide to write your own code and use either GPIB or VISA functions instead of the available instrument drivers. This would involve repeating a lot of the work already done by the developers of the instrument drivers and questions related to that are often answered with 'Why are you reinventing the wheel?'.
05-18-2012 01:05 PM
Hey Dennis
Thanks for clearing it up for me. I am slowly but surely understand the differences and implementations. The project I am working on is basic, I am trying to pick up voltage drops (in delta mode) across a sample using source current. I am definitely not starting from scratch as I am following an example from Kiethley. The example provided is all in GPIB vis rather than VISA. You mentioned that VISA is standard for communication protocol rather than GPIB, I guess my question is vague, but why would this example use GPIB rather than VISA?
Sorry for the noobness,
Danny
05-18-2012 01:55 PM
05-18-2012 02:14 PM - edited 05-18-2012 02:15 PM
Hey Albert,
Thanks, I have attached my vi (Attempt.vi) along with the one I am following from keithley (2182Delta_LV6.vi) along with the user manual's example (page 107) that I am trying out as well. I took the structure of 2182Delta_LV6.vi and performed adjusted SPCI commands from the manual's example. Within my vi I noted some concerns of certain sub-vis that I didn't understand quite.
Thank you so much,
Danny
05-20-2012 10:16 AM
Hi
Your attempt is better than the original but is not a driver.
Each frame of your sequence structure belongs in a subvi and should have error in/out connected.
The keitley 2400 driver from the NI instrumentdriver net (project style) has such a structure and could be used instead.
The triggering setup used in your seq (3rd frame) is not directly available in the 2400 driver but I can look tomorrow.
Study the tree vi of this driver and see why it helps you.
Making an hierarchy of subvi's gives you better understanding of what is happening instead of how it happens, but that also means your programming on a higher level.
And instead of gpib routines I would surely use visa because it also supports other busses.
05-22-2012 06:14 AM
Hi d.gelman & Albert and of course to one of the LV - Kings....Dennis
by accident I stumbled over NI - Discussion - Forum ...... some Versions ago I looked more often here around.
Unfortunately I can't open your vi's - my latest version is 8.2.1; but I used the KEITHLEY 2400 and DMMs in combination in the past.
I suspect - it is very close to that, what you want to do..... sweep a Voltage with K2400 and measure in addition with your second Instrument additional parameters.
What I can offer - have a look to the attached vi K2400_v_sweep+DMM - I think you can use this structure and maybe substitute the K2010-DMM sub.vi - but try it first with no changes - maybe it works already.....
The only thing I forgot to "reset" in the main.vi is the "append" - Button - you should switch it to "single" ( left from STOP Button)
The whole thing is not really complicated - there is an array of numbers - created by "sweep values".subvi - these values are the sweep-values - in a self-indexing loop ( there is an option of single-sweep or double-sweep - means up and down).
The "default" content of Graph shows a comparison of two IC's - self-explaining 🙂
Regards to the LabVIEW Community - unfortunately I am now very far to this Programming Language 😞
wha