From cef16196bb76031eb6e434fdb50b92a301425887 Mon Sep 17 00:00:00 2001 From: Thierry Zamofing Date: Wed, 19 Mar 2025 14:41:55 +0100 Subject: [PATCH] SFELPHOTON-1398: fix lead/lag time --- Readme.md | 57 +++++++++++++++ src/triggerSync/Readme.md | 127 +++++++++++++++++++++++++++++++++- src/triggerSync/triggerSync | Bin 66906 -> 67264 bytes src/triggerSync/triggerSync.c | 28 +++++++- 4 files changed, 208 insertions(+), 4 deletions(-) diff --git a/Readme.md b/Readme.md index c2b14f5..dae64bc 100644 --- a/Readme.md +++ b/Readme.md @@ -201,6 +201,63 @@ sequenceDiagram deactivate py ``` +12.2.25: debugging motion code +----------------------------------------------------------- +``` +&1b2r +go to <&>coordsystem <1> eginning of program <2> and un + +s step one line +q quit program +a abort motion program +bpset set breakpoints + +list plc2,10,3 + list 3 lines strating from line 10 + +list pc + show program counter + &1b2r + +open prog 3 + linearabs + X2Y1 + dwell10 + X0Y3 + dwell10 + X3Y3 + dwell10 + X3Y0 + dwell10 + X0Y0 +close + +&1b3 + +cpx linearabs X1Y1 + +//return coordinate transcormation of all axes (in coordinate system 1) +&1 #1..8-> + +&1p // returns coordinate positions in 'wells' (in coordinate system 1) +X1.000208333333334 Y1.000104166666666 + +#1..2p + +//show were the program is: +list pc +list pc, // with line numbers + +Coord[1].ProgRunning +Coord[1].ProgActive +Coord[1].ProgProceeding +Coord[1].Program.Lsize +Coord[1].Program.Number +Coord[1].Program.Size +Coord[1].Program.Store +``` + + ------------------------------- Work log ======== diff --git a/src/triggerSync/Readme.md b/src/triggerSync/Readme.md index fbb8fed..bf4f679 100644 --- a/src/triggerSync/Readme.md +++ b/src/triggerSync/Readme.md @@ -1,8 +1,6 @@ triggerSync =========== - - ``` samples: root@:/opt/ppmac# /tmp/triggerSync 40 11 trigger all 40 ms, simulated start, use real frame triggers, verbose @@ -102,3 +100,128 @@ caput SAR-EXPMX-EVR0:FrontUnivOut4-Src-Pulse-SP 0 Gather.Enable=0 # end triggerSync ``` +19.3.25: Debug environment for real trigger +------------------------------------------- +``` +cmdt.py -tpbg -p EXPMX # select SAR-CPPM-EXPMX1 +``` + +## record user motion +``` +open prog 3 + linearabs + X0Y0 + dwell100 + L0=0 + pvt10abs + while(L0<50) + { + X1:0Y0:0 + X2:0Y0:0 + X3:0Y0:0 + X3:0Y1:0 + X2:0Y1:0 + X1:0Y1:0 + L0+=1 + } + dwell10 + linearabs + X10Y10 +close +PBGatherPlot -r2 --ssh_tunnel -p 'disp:2,scl:{pos1:[1,-2,0],pos2:[-1,-4,0],Chan0.UserFlag:[1,1],Chan1.UserFlag:[2,1]},time:10,acq_per:1,motId:[1,2],address:"Sys.ServoCount,Gate3[1].Chan[0].UserFlag,Gate3[1].Chan[1].UserFlag,Motor[1].MoveTimer,Coord[1].DesTimeBase,Motor[{motId[0]}].ActPos,Motor[{motId[0]}].DesPos,Motor[{motId[1]}].ActPos,Motor[{motId[1]}].DesPos"' +&1b3r +PBGatherPlot -r2 --ssh_tunnel -n +``` +## run triggerSync (sim start, real frame, adjust speed) +``` +// #define FLAG0 (gate3_1->Chan[0].Status&0x800) +// #define FLAG1 (gate3_1->Chan[1].Status&0x800) +// -> Gate3[1].Chan[0].UserFlag # acquire start event +// -> Gate3[1].Chan[1].UserFlag # frame trigger +Gather.Enable=1 // else triggerSync stops if value is 0 +Coord[1].Q[0]=0 // simulate motion not ready (!=-3) +LD_LIBRARY_PATH=/opt/ppmac/libppmac/ /tmp/triggerSync 11 10 0 # trigger all 10 ms, sim start real frame triggers, with sync, verbose +Coord[1].Q[0]=-3 // simulate motion ready +Coord[1].Q[10]=1 // simulate acquisition start +Gather.Enable=0 // end TriggerSync +``` +## record user motion with triggerSync (sim start, real frame, adjust speed) +``` +open prog 3 + linearabs + X0Y0 + dwell100 + Coord[1].TimeBaseSlew=1 + Coord[1].DesTimeBase=0 + Coord[1].Q[0]=-3 // simulate motion ready + + dwell100 + Coord[1].Q[10]=1 // simulate acquisition start + dwell100 + L0=0 + pvt10abs + while(L0<50) + { + X1:0Y0:0 + X2:0Y0:0 + X3:0Y0:0 + X3:0Y1:0 + X2:0Y1:0 + X1:0Y1:0 + L0+=1 + } + dwell10 + linearabs + X10Y10 + Gather.Enable=0 +close +Gather.Enable=1 // else triggerSync stops if value is 0 +Coord[1].Q[0]=0 // simulate motion not ready (!=-3) +LD_LIBRARY_PATH=/opt/ppmac/libppmac/ /tmp/triggerSync 11 10 0 # trigger all 10 ms, sim start real frame triggers, with sync, verbose +PBGatherPlot -r2 --ssh_tunnel -p 'exec:"&1b3r",disp:2,scl:{pos1:[1,0,0],pos2:[1,0,0],Chan0.UserFlag:[1,1],Chan1.UserFlag:[2,1],DesTimeBase:[100,0]},time:10,acq_per:1,motId:[1,2],address:"Sys.ServoCount,Gate3[1].Chan[0].UserFlag,Gate3[1].Chan[1].UserFlag,Motor[1].MoveTimer,Coord[1].DesTimeBase,Motor[{motId[0]}].ActPos,Motor[{motId[0]}].DesPos,Motor[{motId[1]}].ActPos,Motor[{motId[1]}].DesPos"' +``` + + +## other user motion code +``` +open prog 3 + Coord[1].DesTimeBase=Sys.ServoPeriod + linearabs + X1Y2 + dwell100 + Coord[1].TimeBaseSlew=1 + Coord[1].DesTimeBase=0 + Coord[1].Q[0]=-3 // simulate motion ready + dwell100 + Coord[1].Q[10]=1 // simulate acquisition start + dwell100 + L0=0 + while(L0<60) + { + pvt(10+int(L0/10)*10)abs + X1:0Y2:0 + X2:0Y2:0 + X3:0Y2:0 + X3:0Y3:0 + X2:0Y3:0 + X1:0Y3:0 + L0+=1 + } + dwell10 + linearabs + X10Y10 + Gather.Enable=0 +close + + + + + + + + +exec + + + +``` diff --git a/src/triggerSync/triggerSync b/src/triggerSync/triggerSync index 4c1e86130461b8073edfdca2efdb879d709406b7..2e60ea83e1daa42c77fef66c83a4ad3aa8693a00 100755 GIT binary patch delta 10129 zcmaJ{4^&%Kn!oSmB_tGRC=gNtNlJkRh?oL0SX)aK-PAHRW2vIzG_=ryf~AnUI76G% zKRf8wUGR3!R_$0kQ!72KQ`UCQbkFHHbdMeBY*lvshuSJ?Rcfh5w{w|F|;rgwpG{Pm$&}R;C?C6zNULIR5H7$Ar0gurTGJ8+M{?*VsVL4yMSEA;DT^kvxdRsvf! zzFZ4j1uPtr9)-MrMqUbAAkYqin2_xPc4LKN#nJ;%sESkA2aJ?Yhx9pMa+q0J>>I4K z7JJ(u#xH1njrK zW?+2*6p>NjS`mS#f#V#M(;**#qnf?dOlpPzg-rKw1q7Ngv8Vx7VP%O^;4>IZgd&Qx zxIRw43-So5tQtHrZ0wRv8~?teCDg>1o7?&C%xiOGY#MAE=`YZ-;&2=9JNzcjCTP9H z-4<8sABi*P!2&o&+em(u2Q04e8$?ZRX(1hKEBQT~8D`Iht#oZn)i*ay&<7Yx$q?f~ zY$JVq4D$MT2#e6i!;Gcs;}OQp`WWH!U>sH_8-u?(W1O*MeH=wV^zkHP`C{zF{6>9j zW^9o@#v-ix*v?pnK6W#ft&crey*~C~{&XEwGG^DuRgBHo$9~4H*2e+Hiu7?EV+Hy+ zh~A)&o3ZuuaXVuUecZ*EO¥Q}!3<^B8wGxM=Tlhd6M9+vkejRkB!&kIi-Q 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 Z??P2oe^;~eh8x$FmiYdl7^K_f{|CGfutxv@ delta 9991 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 QMDNT8ald#{ksg%)55XvAVgLXD diff --git a/src/triggerSync/triggerSync.c b/src/triggerSync/triggerSync.c index a3a0519..0c52fa3 100644 --- a/src/triggerSync/triggerSync.c +++ b/src/triggerSync/triggerSync.c @@ -165,7 +165,7 @@ void trigsync_func(void *arg) // rtDiff > mtPt2Pt -> increase srvPer // rtDiff < mtPt2Pt -> decrease srvPer mvTimer=pshm->Motor[1].MoveTimer; //time in current section - if(mvTimer>mtPt2Pt/2) //lagging + while(mvTimer>mtPt2Pt/2) //lagging mvTimer-=mtPt2Pt; //srvPer2*=(rtDiff/1E6-mvTimer)/mtPt2Pt; srvPer=pshm->ServoPeriod*(rtDiff/1E6-mvTimer)/mtPt2Pt; @@ -174,6 +174,22 @@ void trigsync_func(void *arg) pshm->Coord[1].Q[0]++; if(mode&8) { + + #define C_D "\033[0m" // default + #define C_R "\033[31m" // red + #define C_G "\033[32m" // green + #define C_Y "\033[33m" // yellow + #define C_RR "\033[91m" // red(bright) + #define C_GG "\033[92m" // green(bright) + #define C_YY "\033[93m" // yellow(bright) + #define C_B "\033[1m" // bold + #define C_U "\033[4m" // underline + #define C_RB "\033[1;31m" // bold, red + #define C_GB "\033[1;32m" // bold, green + #define C_YB "\033[1;33m" // bold, yellow + + + mxActPos=pshm->Motor[2].ActPos;mxDesPos=pshm->Motor[2].DesPos; myActPos=pshm->Motor[1].ActPos;myDesPos=pshm->Motor[1].DesPos; mxErr=mxDesPos-mxActPos; @@ -181,7 +197,15 @@ void trigsync_func(void *arg) //printf(" X,Y ActPos:(%.5g %.5g) DesPos:(%.5g %.5g) ", mxActPos-mxHomePos, myActPos-myHomePos, mxDesPos-mxHomePos, myDesPos-myHomePos); //printf(" X,Y Nsync:(%d) ", pshm->Coord[1].Nsync); //printf(" X,Y MoveTimer:(%.5g %.5g) ", pshm->Motor[1].MoveTimer,pshm->Motor[2].MoveTimer); - printf("Trigger count:%d, Nsync:%d, MoveTimer:%.5g srvPer:%.6f rtDiff:%.3fms scDiff:%d PosErrXY:(%.3f,%.3f)\n",i, pshm->Coord[1].Nsync,mvTimer,srvPer, rtDiff/1E6,scDiff,mxErr,myErr); + if (fabs(mvTimer)>mtPt2Pt*.05) + fputs(C_RR, stdout); + else if (mvTimer<0) + fputs(C_YY, stdout); + else + fputs(C_GG, stdout); + printf("Trigger count:%d, Nsync:%d, MoveTimer:% 10.4g srvPer:%.6f rtDiff:%6.3fms scDiff:%d PosErrXY:(% 5.3f,% 5.3f)\n",i, pshm->Coord[1].Nsync,mvTimer,srvPer, rtDiff/1E6,scDiff,mxErr,myErr); + fputs(C_D, stdout); + } rtLast=rtCur; scLast=scCur;