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