Converting IV Sweep code from compatibility with Keithley 2400 to 2450 SMU
esmaras
Thu, 06/19/2014 - 06:53 am
I am very new to Igor Pro, but I am trying to modify code that performs a current voltage sweep by driving the Keithley 2400 source meter. I am in the process of ensuring that the SCPI commands that have changed from the 2400 model to the 2450 model are changed in my program. So far I have changed the code to allow the machine to 2450 to perform a sweep, but I am unable to read the data and display it on a graph because of a timeout (EABO) error from the GPIB to USB cable during an IBRD instruction. The original code for the 2400 could read and output an IV trace graph, but before initializing the sweep the SCPI command :TRAC:FEED:CONT NEXT was executed. This command no longer exists in the new 2450 SCPI library, but I was wondering if there is a replacement for it. My error occurs in Igor when I run the line GPIBReadWave2 responseString where responseString is declared earlier as follows:
Make/T/O/N=(numResponses) responseString
responseString=""
If anyone has any knowledge about how to read different data from a GPIB cable in this case, I would greatly appreciate it.
Thanks,
Eric
There are three likely possibilities:
I would start by making sure that I know what command I need to send to the instrument to get it to send data and what character or characters it sends after each data point. Consult the manual or Keithley support.
Next, for purposes of troubleshooting, I would enter this function in the Igor procedure window and execute it:
Variable numPointsExpected
GPIB2 InterfaceClear // Clear any garbage left from previous tests
Sleep/S 3 // Give the instrument time to clear itself
<<< Send the command that tells the 2450 to send the data here >>>
Make/O/N=(numPointsExpected) testOutput = NaN
CheckDisplayed testOutput
if (V_Flag == 0) // Create a table if it does not already exist
Edit testOutput
endif
GPIBReadWave2 /Q testOutput // /Q to suppress error in the event of a timeout
numDataPointsReceived = V_Flag // V_Flag is set even if there is an error
Printf "Number of data points received: %d\r", numDataPointsReceived
End
Now both the Printf output and the table should show you how many data points, if any, were received.
June 19, 2014 at 08:22 am - Permalink
June 20, 2014 at 08:01 am - Permalink