Instrument Control (GPIB, Serial, VISA, IVI)

cancel
Showing results for 
Search instead for 
Did you mean: 

Error while using Buffer VIs of Keithley 2636A

Hi all, 

 

I am trying to initialize a measurement on the Keithley 2636A SMU, so that the measurement is done by the instrument and data points stored in the instrument SMU buffer. I only want to use LabView to download the data trace (i.e. multiple measurements saved in the SMU buffer)  via GPIB cable to my computer once the measurement is complete. 

I want the instrument to carry out the measurements (continuous sampling), instead of triggering for single measurements through LabView. This way, speed, sampling rate, and # of total measurements of my experiment are not limited by how fast the LabView trigger loop is run, or the buffer size of LabView/GPIB.

With this process flow: 1. initialize instrument and measurement parameters, 2. initialize buffer to store multiple measured data points (e.g. 100 measurements) 3. open SMU output, 4. trigger instrument to carry out the multiple measurements (100 samples) 5. print the buffer data range out to an excel file on the computer, this is the code that I wrote (at end of this note). 

After some troubleshooting on my end, I realize that there is no issue initializing the SMU & measurement (first half of code doing that is fine), but when I use the BUFFER VIs in the Keithley instrument driver lib, I get an error. I was running into errors using the CONFIG BUFFER MODE VI (which is why I am not using that VI anymore in the code). Instead I use the "CREATE READING BUFFER" VI to create a buffer of size 100. And then use "CONFIG READING BUFFER DATA CHARACTERISTICS" to define my buffer. 

This is the error I receive: 

lodhi33_0-1616374296562.png
(Error -1074000000)
I am not sure if this is because I am not using the BUFFER VIs incorrectly, or if the trigger VI I use to call and initiate measurements is not doing any measurements (hence, the "empty buffer").  How do I call a trigger VI so that the instrument knows how many samples to store in the buffer before stopping measurement? 



Please do share if you all have any thoughts on this! Whether I am using the buffer VIs incorrectly or the trigger VI is not filling up the buffer like I think? 

Thanks a lot! 

lodhi33_1-1616375241820.png

Snippet of trigger VI and buffer initialization. Complete VI attached. 

(P.S.) The issue is not that I am not allowing enough time for the measurement after triggering (and before calling the Print Buffer VI. I tried putting a 2 minute delay there, but that does not help

0 Kudos
Message 1 of 11
(2,982 Views)

Check your syntax according to the manual.

The command you issued is not correct.

greetings from the Netherlands
0 Kudos
Message 2 of 11
(2,940 Views)

Yes, you are right. 

I understand that the trigger VI is not initiating a measurement. This is why my buffer is probably empty. 


To initiate the measurement I use the following measurement VIs,  "CONFIG MEASUREMENT CHARACTERISTICS" followed by "READ MEASUREMENT (Voltage)" VI. 

lodhi33_1-1616436279875.png

 

 

But now, I get a different error:

lodhi33_0-1616435449329.png

It is a different error, but I think it is still because the measurement VIs are not doing what I think they are doing. Even though, in this program, I am trying to do a single point measurement and print it. 

 

 

(The start and end index of the "Print Buffer" VI are 1 by default. The measurement count of the Voltage Measurement VI is 1 by default. So if this VI takes 1 measurement (as I would expect), then the print buffer should be able to print that 1 value at least without issues. 

I feel like I am using the correct VI to do the measurement this time. So not sure what the issue is here. 


P.S. (As soon as I run the LabView program, an error is displayed across my physical 2636A instrument; "TSP syntax Error -285 at line 1, unexpected symbol near = sign".  This error, however, does not show on the LabView panel at all. Is this error preventing the measurement from executing? ) 

Edited VI using measurement VIs to initiate measurement attached to this message. 

 

0 Kudos
Message 3 of 11
(2,931 Views)

Hi

Did you look at 

C:\Program Files (x86)\National Instruments\LabVIEW 2020\instr.lib\Keithley 2600 Series\Examples\Keithley 2600 Series Read Pulsed Voltage Measurement.vi

 

That seems to work and is much easier to understand.

you can control this with e.g. a sinewave or a block.

 

PS I have LV2020 installed, your version uses probably the same path except where the LabVIEW version is placed.

greetings from the Netherlands
0 Kudos
Message 4 of 11
(2,926 Views)

Thanks Albert, 

 

I just ran this example (pulse I measure V) program on my 2636A instrument, it works great. 

My only concern is, 

1. Can I use this with DC current (supply DC current, but measure V in pulses) 

2. Again, I am not sure if the pulse V measurement VI is for higher speed sampling, with long durations. And my end goal here is a 0.1 second sampling interval, and at least 10 - 20 minutes of data. 0.1 s sampling interval, and sweep points >> 10 (given in the example) or 100. 

For this end goal, I am not sure how this VI works.. 
I have been doing experiments (for > 18 minutes) at high sampling rates on my instrument 2636A since forever. Just using the physical front panel of 2636 to set up the buffer and initiating a measurement in it. The idea here was to simply do the same thing with LabView on software instead of the front panel buttons. 
(Since I have been having issues downloading a saved & sampled buffer to my computer/USB) 

Do you think I should give up on the buffer VIs and voltage measurement VI? Is pulse V measurement still the way to go forward you think (given my sampling requirements). 

Thanks again! 

0 Kudos
Message 5 of 11
(2,921 Views)
Hi
I use a 2612 with simple read write commands and go faster.
I will make an example for you and you can try what speed you get. 0.1 second is not really high speed.
I need about 12 ms and also poll a tensile bench at the same time.
greetings from the Netherlands
0 Kudos
Message 6 of 11
(2,891 Views)

Hi Albert, 

 

You commented that the Vpulse function is probably the best function to use in my experiment program. And I use the example Vpulse program to read DV across my resistor as I pulse current through it. 

 

However, regardless of current bias or time on/off settings, my DV measurements always look this (exponentially decreasing). This is not a hardware issue of my set up (because DV measured with an external voltmeter across my R is always constant), but my guess is that the labview code (or the Vpulse function itself) is averaging DV readings to read gradually lower DV. 

lodhi33_0-1618171749840.png

 

 

Is this just how Vpulse works or is there sth I can edit in the program to read actual DV across many samples (1500 to 3000 samples)? If this is how Vpulse function inherently works then do I go back to trying to run a measurement on the 2636A and then downloading the buffer? 

Thanks again!

 

lodhi33_1-1618171817555.png

 

P.S. What I change in the 'Keithley 200 series read pulsed voltage' example VI, is that I am doing a four point kelvin resistance measurement instead of 2 wire resistance measurement. I am trying to use the HI - force to push pulse current through the resistor leads, and use HI-Sense and Low-Sense to measure DV. 

 

0 Kudos
Message 7 of 11
(2,850 Views)

I expect that the voltage is measured not in the pulse but gradually moving from pulse to a mix of pulse and low voltage.

 

re you sure that the measurement method does not influence the expected timing?

Make a picture with a scope of what the signal itself does.

And try to find a way to also measure the trigger moment of the measurement.

 

greetings from the Netherlands
0 Kudos
Message 8 of 11
(2,847 Views)

Dear Albert, 

 

It if is indeed measuring voltage with a gap (after the pulse), then this is not the function for my experiment, I am sure of that. 

 

I definitely want to measure V while the resistor is biased. 

Do you think I should now go back to trying to run a series of measurements using the labview code? Looking at the code in this post, I feel like it is more efficient at this point to just fix it. I only need a way to initiate the series of measurements using a VI (that is NOT a trigger VI). 

 

How do I execute the original approach I had in the beginning of the post (fix that original code attached to the post)? If you have any thoughts on that please let me know. 
Thanks again! 

0 Kudos
Message 9 of 11
(2,845 Views)

Hi

I promised to send an example but realised later my communication is quite complex allthough the base is presented here.

I have a vi that calculates a measurement command defined by a setting of the definition of two channels of the DMM.

You can select to measure 1 or two channels and which one.

Say A, B and A and B.

Both vi's are added tot this post in LV2018. Maybe you also need the initialization vi but that is the standard init vi from keithley.

Questions I can answer later. If you miss something just post.

I hope I delivered all type definitions.....

You still have to combine these vi's but defining the measurement cmd only needs to be done once.

Calling read values can be as fast as possible, 

 

greetings from the Netherlands
0 Kudos
Message 10 of 11
(2,830 Views)