In order to measure the transfer curve of the transistor, two Keithley 2400 are connected via a Prologix GPIB USB controller. The port and values are correctly identified, and I confirmed that each device works individually during tests. However, when both are used simultaneously, the sweep does not proceed, and as shown in the first photo, it is stuck. An error appears (as seen in the second photo), and a 410 error is identified on one of the devices. Upon checking, I found a “Query Interrupted” error. So I putted delay module in between loop and SMU, but still doesn’t work. How can this issue be resolved?
First of all, you could try to migrate to SweepMe! 1.5.6, our latest version that can be installed in parallel to your currently used version SweepMe! 1.5.5, maybe the problem is already solved there.
It looks like the second SMU does not get any values back. Can you add your settings files so that I can see which port strings you are using for each SMU module? Or send a screenshot of each SMU module.
While both SMU modules need to use Prologix adapter with the same COM port, the number that indicates the GPIB port needs to be different and in accordance with the GPIB port set at the instrument. Further, the GPIB ports of both Keithley 2400 must differ, for example they should not be “24” at the same time. This could also explain why single instruments work but not if they are used together.
Query interrupted (error 410) can happen if you send a command to an instrument while it is still processing another one. So, if you accidentally send the command to read the results to the same instrument two times in a row, such an error could appear at the Keithley 2400 that is related to the given communication port.
I have attached the setting file and Prologix_error.set (6.5 KB)
debug results. I have used the correct ports and different GPIB numbers. I tried using the latest version of the software, but the same issue occurred.
Here is a screenshot from your debug.log. Thanks for activating the debug mode of the PortManager which is quite helpful here.
The debug log shows that both instruments are answering. For example, both instruments answer to the command “*OPC?”.
Howevern, one can further see that the command “Read?” is sent to both Keithley 2400 units. While the first unit answers with the typical measurement result, the second unit only responds with an empty string.
As a consequence, the measurement result cannot be parsed and you get a ValueError that stops the measurement.
Can you say which of the two SMUs shows the Query interrupted error 410. Is it the SMU1 related to GPIB port 24 or SMU2 related GPIB port 20?
One problem might be that for unknown reason the Prologix adapter does not change the GPIP port correctly and maybe sends “Read?” command two times to the same instrument, but I need to think about how to test it quickly.
Have you ever used two other instruments at the same time in SweepMe! using a Prologix adapter? Just to figure out whether your adapter works correctly in another scenario.
Thank you for the quick response.
The Query interrupted error occurs in the SMU that is placed last in the sequence, regardless of the port number.
I have never used two different instruments simultaneously with the Prologix adapter before. This is the first time I am using it for a new measurement station.
Unfortunately, I cannot tell you why this problem occurs. I know that people have used SweepMe! to control two Keithley 236 with a Prologix adapter, so basically it can work.
Probably one would need to perform a couple of tests to see whether commands are correctly. We can offer you some professional support to check the problem together in a video meeting. In this case, please write to contact@sweep-me.net.
One last test you could do is to check whether SMU1 is switching on at all. Can you see that the blue (or sometimes red) Output LED is switching on at the first Keithley 2400 in the sequencer or does this only happen for the second Keithley 2400 in the sequencer. If only the second switches on, it could mean that no command is sent to the first SMU at all and the Prologix is unable to handle the messages correctly.
What’s interesting is that while the first instrument on address 20 answers with values immediately, the empty answer of the second instrument on address 24 is received only after 10 seconds, which is the timeout value defined in the driver.
The driver mentions timing problems with multiple units when the 488.1 protocol is used, but obviously by the supplied log, the 2002 year of the firmware version on your devices is recognized correctly and SYST:MEP:STAT is already set to 1, indicating the use of the SCPI protocol.
I am not familiar with the use of the Prologix adapter but instead use HS-USB+ NI adapters in different enviroments. Supplied with the NI adapters is a tool called NI Trace, which monitors the bus traffic and shows the actual communication on the GPIB bus. If there is anything similar available in the Prologix software package, it would be helpful to see the actual traffic on the bus. Maybe there is a reason for the timeout that is observed, e.g. as mentioned by Axel, both READ commands are send to the same unit accidentally.
Thanks a lot Christian for taking a look at the debug.
As Christian wrote, using the GPIB adapters from NI would probably solve the problem and would also allow to use IO Trace from NI to check which commands are sent to a certain instrument.
On the other hand, the Prologix adapters are cheaper and can be a good replacement if no event handling is needed and speed is not a concern (because the GPIB address must be frequently switched).
The Prologix adapter comes with USB (virtual COM port) or a LAN/TCPIP connector. Thus, using IO Trace from NI cannot be used as we use pyserial internally to send commands to the Prologix adapter. So far, only the USB version is supported.
In case of interest, the source code for using a Prologix adapter can be found open-source in pysweepme
So far, I cannot say whether it is a problem of the Prologix adapter, a problem in our code or mis-configuration of the SMU.
Thank you for the good advice. I confirmed that it worked when I used the GPIB HS-USB+ to connect to the 2400 and controlled it with sweepme, and also when I connected the Prologix to the 2450, it worked. I’m not sure why, but I’m glad the issue is resolved.
Does it mean you have a Keithley 2400 and a Keithley 2450 at your setup?
The Keithley 2450 has an own driver that is different from the one for Keithley 2400. This could maybe also explain why the Keithley 2450 does not respond. However, it would not explain why the single SMUs worked with the Prologix adapter.
If you anyway use the NI GPIB adapter, then you can also connect both Keithley SMUs to the adapter from NI and not use the Prologix adapter at all. You only need a standard GPIB cable to forward the connection from one instrument to the other.
My explanation wasn’t clear. Basically, when I connected two Keithley 2400 units to the Prologix and controlled them, the issue mentioned above occurred. However, when I connected two Keithley 2450 units with the Prologix adapter and operated them simultaneously based on my settings, everything worked fine.
Thanks a lot for the clarification. Good to know that it works with two Keithley 2450. This basically means that the SweepMe! code for the Prologix adapter seems to be ok. And the problem is more on the hardware side.
In case you need to figure out why it doesn’t work with Keithley 2400, you can of course write to contact@sweep-me.net and we can help you with debugging. Otherwise, switching the adapter also seems to be a good solution.