Discussion Forums are temporarily in read only mode. All forums are visible but posting is not possible. Please check back shortly.

Thread: Synchronizing of two 6812B; variegating transient list


Permlink Replies: 4 - Pages: 1 - Last Post: Mar 19, 2012 5:00 PM Last Post By: MattC Threads: [ Previous | Next ]
MartinKl

Posts: 3
Registered: 03/15/12
Synchronizing of two 6812B; variegating transient list
Posted: Mar 15, 2012 3:18 AM
Click to report abuse...   Click to reply to this thread Reply
Attachment Asynchron_start.tif (15.6 KB)
Attachment synchron.tif (15.5 KB)
Attachment Asynchron_end.tif (15.0 KB)
Hi there,
i´m trying to program a variegating transient list with two 6812B (i need two phases 120° phaseshift). Each variant to be applied 100 times
At the moment i´m not able to synchonize the two 6812B...
Both transient lists starts at almost the same time (delta is 1-3ms). But when i update the transient list with new parameters, the transient lists are not synchrone anymore. the values are the same, but theres a different timeshift after every transient update.
I think i have a failure with the trigger, but i can´t solve this problem.

Is there a easy way to synchronize two power supplies?

Thanks a lot for your help.

greets,
Martin

EDIT:

I found out, that sometimes the startpoint of my "Slave" 6812B is a bit earlyer than the "master"...
added some pictures

Edited by: MartinKl on Mar 15, 2012 3:40 AM
MartinKl

Posts: 3
Registered: 03/15/12
Re: Synchronizing of two 6812B; variegating transient list
Posted: Mar 15, 2012 5:08 AM   in response to: MartinKl in response to: MartinKl
Click to report abuse...   Click to reply to this thread Reply
Hi, me again.
Now the two transients are synchron, but the phaseshift is still changing.
Can anybody help me please with this problem?

Thanks a lot.
Martin
MattC


Posts: 186
Registered: 03/19/10
Re: Synchronizing of two 6812B; variegating transient list
Posted: Mar 15, 2012 1:37 PM   in response to: MartinKl in response to: MartinKl
Click to report abuse...   Click to reply to this thread Reply
Hi Martin,

The oscillator that controls the timing in the AC Source has an inherent inaccuracy to it. What you are seeing is this inaccuracy build up after a while and the waveforms are getting out of sync. Can you answer a few questions for me:

1. Do you have the trigger out from one connected to the trigger in of the other?
2. Can you provide the sequence of instrument commands that you use to generate your pulses?

I can't make any promises on a solution for this as I have never done it but I do have an idea that I would like to explore.

Matt
MartinKl

Posts: 3
Registered: 03/15/12
Re: Synchronizing of two 6812B; variegating transient list
Posted: Mar 16, 2012 1:37 AM   in response to: MattC in response to: MattC
Click to report abuse...   Click to reply to this thread Reply
Hi Matt,
to your questions:

1. Do you have the trigger out from one connected to the trigger in of the other?
  • Yes. Because of that i wrote "Master" and "Slave"

2. Can you provide the sequence of instrument commands that you use to generate your pulses?
  • sure. I´m very happy about your help and hopefully for your idea ;-)

"instr" is my Master Power-Supply; "instr2" my Slave (just a synonym)

//##################################################
// Trigger Settings
//##################################################

// this command enables or disables the ac source trigger out signal which is aviable atBNC
viPrintf(instr,"OUTPut:TTLTrg:STATe ON \n");
//SetCtrlVal (wndMain, WND_MAIN_Cmd_Viewer, "->OUTP:TTLT:STATe ON \n");
viPrintf(instr2,"OUTPut:TTLTrg:STATe ON \n");
//SetCtrlVal (wndMain, WND_MAIN_Cmd_Viewer, "->OUTP:TTLT:STATe ON \n");

// selects the signal source for the trig out signal
viPrintf(instr,"OUTP:TTLTrg:SOURce BOT \n"); //'B'eginging 'O'f 'T'ransient OUTPut
//SetCtrlVal (wndMain, WND_MAIN_Cmd_Viewer, "->OUTP:TTLT:SOURce BOT \n");
viPrintf(instr2,"OUTP:TTLTrg:SOURce LIST \n");
//SetCtrlVal (wndMain, WND_MAIN_Cmd_Viewer, "->OUTP:TTLT:SOURce LIST \n");

viPrintf(instr2,"TRIGger:TRANsient:SOURce EXTernal \n"); //Trigger IN is Trigger Source
//SetCtrlVal (wndMain, WND_MAIN_Cmd_Viewer, "->TRIG:TRAN:SOUR EXTernal \n");

// already set to BOT
//viPrintf(instr,"LIST:TTLT ON,OFF,OFF,OFF,OFF \n");
//SetCtrlVal (wndMain, WND_MAIN_Cmd_Viewer, "->LIST:TTLT ON,OFF,OFF,OFF,OFF,OFF \n");

viPrintf(instr2,"LIST:TTLT OFF,ON,OFF,OFF,OFF \n"); // Trigger OUT at second point of Transient
//SetCtrlVal (wndMain, WND_MAIN_Cmd_Viewer, "->LIST:TTLT OFF,ON,OFF,OFF,OFF,OFF \n");

viPrintf(instr,"TRIG:SYNC:SOUR PHASE \n");
//SetCtrlVal (wndMain, WND_MAIN_Cmd_Viewer, "->TRIG:SYNC:SOUR PHASE \n");
viPrintf(instr2,"TRIG:SYNC:SOUR PHASE \n");
//SetCtrlVal (wndMain, WND_MAIN_Cmd_Viewer, "->TRIG:SYNC:SOUR PHASE \n");

viPrintf(instr,"TRIG:SYNC:SOUR 0.0 \n");
//SetCtrlVal (wndMain, WND_MAIN_Cmd_Viewer, "->TRIG:SYNC:PHAS 0.0 \n");
viPrintf(instr2,"TRIG:SYNC:SOUR 0.0 \n");
//SetCtrlVal (wndMain, WND_MAIN_Cmd_Viewer, "->TRIG:SYNC:PHAS 0.0 \n");

viPrintf(instr,"TRIG:TRAN:DEL 0 \n"); // no DELay after Trigger
//SetCtrlVal (wndMain, WND_MAIN_Cmd_Viewer, "->TRIG:TRAN:DEL 0 \n");
viPrintf(instr2,"TRIG:TRAN:DEL 0 \n"); // no DELay after Trigger
//SetCtrlVal (wndMain, WND_MAIN_Cmd_Viewer, "->TRIG:TRAN:DEL 0 \n");

viPrintf(instr,"TRIG:TRAN:SOUR BUS \n");
//SetCtrlVal (wndMain, WND_MAIN_Cmd_Viewer, "->TRIG:TRAN:SOUR BUS \n");
viPrintf(instr2,"TRIG:TRAN:SOUR EXT \n");
//SetCtrlVal (wndMain, WND_MAIN_Cmd_Viewer, "->TRIG:TRAN:SOUR EXTernal \n");

//##################################################

to change the transient i send the following parameters:

for (float t1 = 0.08; t1<=0.1; t1+= 0.01)
{
for (float t2 = 0.03; t2 <= 0.05; t2 += 0.01)
{
for (float t3 = 0.03; t3 <= 0.05; t3+= 0.01)
{

char buf232768;

//###################################################################################################
t4 = (1.54-0.5-t1-t2-t3);
viPrintf(instr,"LIST:DWEL 0.5, %f, %f, %f, %f \n", t1, t2, t3, t4);
viPrintf(instr2,"LIST:DWEL 0.5, %f, %f, %f, %f \n", t1, t2, t3, t4);
//viQueryf(instr,"SYST:ERR? \n","%#t", &bufLength, buf);
//SetCtrlVal (wndMain, WND_MAIN_Cmd_Viewer, "->SYST:ERR? \n");
//SetCtrlVal (wndMain, WND_MAIN_Cmd_Viewer, buf);
//SetCtrlVal (wndMain, WND_MAIN_Cmd_Viewer, "\n");

//SetCtrlVal (wndMain, WND_MAIN_Cmd_Viewer, "->LIST:DWEL 0.1, t1 , 0.01, 0.01 , 0.74, 0.1 \n");

viPrintf(instr,"LIST:VOLT:SLEW 9.9e+037, %f, 9.9e+037, %f, 9.9e+037 \n", (115/t1), (115/t3));
viPrintf(instr2,"LIST:VOLT:SLEW 9.9e+037, %f, 9.9e+037, %f, 9.9e+037 \n", (115/t1), (115/t3));
//SetCtrlVal (wndMain, WND_MAIN_Cmd_Viewer, "->LIST:VOLT:SLEW 9.9e+037, 11500, 9.9e+037, 11500, 9.9e+037,9.9e+037 \n");
//###################################################################################################

viPrintf(instr,"INIT:IMM:SEQ1 \n");
viPrintf(instr2,"INIT:IMM:SEQ1 \n");
//SetCtrlVal (wndMain, WND_MAIN_Cmd_Viewer, "->INIT:IMM:SEQ1 \n");

viPrintf(instr,"INIT:IMM:SEQ3 \n");
viPrintf(instr2,"INIT:IMM:SEQ3 \n");
//SetCtrlVal (wndMain, WND_MAIN_Cmd_Viewer, "->INIT:IMM:SEQ3 \n");

Delay(1);
viPrintf(instr,"TRIG:IMM \n");

in LabCVI are tabstops, not like here. This is a copy paste problem...

greets,
Martin

MattC


Posts: 186
Registered: 03/19/10
Re: Synchronizing of two 6812B; variegating transient list
Posted: Mar 19, 2012 5:00 PM   in response to: MartinKl in response to: MartinKl
Click to report abuse...   Click to reply to this thread Reply
Your program looks good. The issue is that that transient system is not 100% accurate and is not the same between the two AC Sources. After every cycle the waveform loses a bit of the phase synchronization. We need to find a way to resync after each waveform and to send a trigger out to the slave unit.

One idea would be to set the slave unit to "LIST:STEP ONCE" and run it off triggers from the master unit. You would need to add in some dummy steps in order to keep the timing right but this might work.

One question: do you have the outputs of the two AC SOurces hooked together or are they hooked to different things?

Point your RSS reader here for a feed of the latest messages in all forums