• RE: How to synchronize two 2460 SMUs and a Keysight DMM

    I solved my timeout issue by myself after adding an extra SCPI command ":AZER:OFF" to turn off the SMUs' Automatic reference measurements. Just check SMU 2460 ref manual page 4-43 for why this command matters for sequential testing. 
  • RE: How to synchronize two 2460 SMUs and a Keysight DMM


    Thanks for the reply. What I mean on synchronization is to synchronize the testing of two SMUs and one DMM on three individual devices. I do know the readback function. My need is more than a readback on SMU.

    Actually, after reading through the triggering section in the reference manual, now I am able to use the Keithley’s synchronous triggering mode to configure one SMU (let’s say SMU #1) as a synchronous master and the other as an acceptor (SMU#2). My first goal is to do synchronized IV sweeps on two difference devices with the two SMUs (the next goal is to add an extra Keysight DMM for measuring monitor device voltage at the same time, but we can leave it for now since I have not completed the first goal). For example, I would have SMU#1 measure one device's current at 10 different voltage bias levels (e.g., 0-0.9V with a 100mV step). Meanwhile, at each voltage sourcing level, I need SMU#2 to simultaneously run a IV sweep starting from 0 to 0.6V (e.g., with 50mV step). As you may know, this needs a source/measure loop on both SMUs. The following are my SCPI codes for the two SMUs (I also attached them below)
    #SMU 1 (master):
    *RST
    :DIG:LINE1:MODE TRIG, OUT
    :DIG:LINE2:MODE TRIG, IN
    :TRIG:DIG1:OUT:PULS 0.001
    :TRIG:DIG1:OUT:STIM NOT1
    :TRIG:DIG2:IN:EDGE EITH
    :SOUR:FUNC VOLT
    :SOUR:VOLT:ILIM 0.200000;
    :FUNC "CURR"
    :SOUR:VOLT:READ:BACK ON
    :CURR:RSEN ON

    :SENS:CONF:LIST:CRE "Masterbiaslevel";
    :SOUR:VOLT 0.100000;             **this voltage level changes in each loop when the slave SMU finish its IV sweep in the LabVIEW code
    :SENS:CONF:LIST:STOR "Masterbiaslevel"
    :TRIG:LOAD "Empty"
    :TRIG:BLOC:NOT 1, 1;  
    :TRIG:BLOC:SOUR:STAT 2, ON;
    :TRIG:BLOC:CONF:RECALL 3, "Masterbiaslevel"
    :TRIG:BLOC:DEL:CONS 4, 0.100000;
    :TRIG:BLOC:MDIG 5, "defbuffer1", 1;
    :TRIG:BLOC:BRAN:COUN 6, 7, 4;
    :TRIG:BLOC:WAIT 7, DIG2;
    :TRIG:BLOC:SOUR:STAT 8, OFF;
    INIT
    *WAI
    TRAC:DATA? 1,7,"defbuffer1", SOUR, READ, REL

    #SMU2 (slave):
    *RST
    :DIG:LINE2:MODE TRIG, OUT
    :DIG:LINE1:MODE TRIG, IN
    :TRIG:DIG2:OUT:PULS 0.001      
    :TRIG:DIG2:OUT:STIM NOT1
    :TRIG:DIG1:IN:EDGE EITH
    :SOUR:FUNC VOLT
    :SOUR:VOLT:ILIM 0.200000;
    :FUNC "CURR"
    :SOUR:VOLT:READ:BACK ON
    :CURR:RSEN ON

    :SOUR:CONF:LIST:CRE "MyConfigList";
    :SOUR:VOLT 0.000000;
    :SOUR:CONF:LIST:STOR "MyConfigList";
    :SOUR:VOLT 0.100000;
    :SOUR:CONF:LIST:STOR "MyConfigList";
    :SOUR:VOLT 0.200000;
    :SOUR:CONF:LIST:STOR "MyConfigList";
    :SOUR:VOLT 0.300000;
    :SOUR:CONF:LIST:STOR "MyConfigList";
    :SOUR:VOLT 0.350000;
    :SOUR:CONF:LIST:STOR "MyConfigList";
    :SOUR:VOLT 0.380000;
    :SOUR:CONF:LIST:STOR "MyConfigList";
    :SOUR:VOLT 0.400000;
    :SOUR:CONF:LIST:STOR "MyConfigList";
    :SOUR:VOLT 0.450000;
    :SOUR:CONF:LIST:STOR "MyConfigList";
    :SOUR:VOLT 0.500000;
    :SOUR:CONF:LIST:STOR "MyConfigList";

    :TRIG:LOAD "Empty";
    :TRIG:BLOC:WAIT 1, DIG1; 
    :TRIG:BLOC:SOUR:STAT 2, ON;
    :TRIG:BLOC:CONF:NEXT 3, "MyConfigList";
    :TRIG:BLOC:DEL:CONS 4,0.100000;
    :TRIG:BLOC:MDIG 5,"defbuffer1";
    :TRIG:BLOC:BRAN:COUN 6,9,4;
    :TRIG:BLOC:NOT 7, 1;
    :TRIG:BLOC:SOUR:STAT 8, OFF;
    INIT
    *WAI
    TRAC:DATA? 1,9,"defbuffer1", SOUR, READ, REL


    In short, the logic of the code above is that when SMU #1 does a voltage sourcing and sense, it will simultaneously send a trigger to SMU#2 via the digit I/O line 1 and tell SMU#1 run a I-V sweep. After this sweep is complete, SMU#2 will send a trigger back from I/O line 2 to SMU#1 to notify the sweep is complete and then have SMU #1 moves to the next voltage sourcing point. I loaded these commands into LabVIEW platform and used a For loop from LabVIEW to repeat the synchronizing process until all the voltage sourcing points from the master SMU#1 are done. Now the situation is I can run the code once (i.e., SMU#1 can measure at one voltage point while synchronizing SMU#2 to run a full IV sweep). When starting running the voltage bias loop with SMU#1, a timeout error came out. Attached are the two pictures of the trigger model screens I took when the two SMUs encountered a timeout. Additionally, my Labview code with the loop function appears to work fine when running in the highlight execution mode, but when running in the normal mode, a timeout error showed up right away again. I wonder if there is a good way to handle this SCPI command timeout/racing issue. Any suggestions or feedback would be appreciated.

    Thanks!
    T


     
  • How to synchronize two 2460 SMUs and a Keysight DMM

    Hi there,

    I am using two 2460 SMUs and one Keysight 34410 DMM to measure the I-V characteristics of 3 different photodiodes (two needs the source and sense from the SMUs for I-V curves, and one only needs current reading from the DMM. All the data points need to be measured simultaneously). I would like to do synchronized measurements on these 3 devices with SCPI commands on LabVIEW platform. My plan is to utilize the digital I/O lines to trigger the synchronization. I found an application note which describes a similar scenarios like mine (see attached), but it is based on SMU 2400 and the command sets are different from 2460. I wonder if anyone from Tektronix could help me convert those commands into 2460 SCPI format so that I can run it with my SMUs and learn from there? Meanwhile, could you share with me on some SMU 2460 synchronization examples for source/sense? A few SCPI examples based on LabVIEW platform would be great. 

    Thanks,
    Tao