From fab5ecdc2bf01a113481b481cc0e95bc382af6d5 Mon Sep 17 00:00:00 2001 From: Thierry Zamofing Date: Thu, 6 Oct 2022 13:56:32 +0200 Subject: [PATCH] cleanup --- python/shapepath.py | 19 ++---------- src/triggerSync/triggerSync | Bin 67570 -> 66458 bytes src/triggerSync/triggerSync.c | 55 +++++++--------------------------- 3 files changed, 12 insertions(+), 62 deletions(-) diff --git a/python/shapepath.py b/python/shapepath.py index 90eb0ce..22e40dc 100755 --- a/python/shapepath.py +++ b/python/shapepath.py @@ -694,21 +694,6 @@ class ShapePath(MotionBase): ''' prg=['close all buffers','open prog %d'%(prgId)] - #Use EncTable 20 as Frame counter - #dont use Coord[1].DesTimeBase as the time base but use the virtual encoder: - # Coord[1].pDesTimeBase=Coord[1].DesTimeBase.a #(default) - prg.append('''\ -EncTable[20].type = 1 //32 Bit uint -EncTable[20].pEnc = Sys.Udata[0].a -EncTable[20].index1 = 0 -EncTable[20].index2 = 0 -EncTable[20].index3 = 0 -EncTable[20].index4 = 0 -EncTable[20].index5 = 0 -EncTable[20].index5 = 0 -EncTable[20].ScaleFactor=1E-3 -//Coord[1].pDesTimeBase=EncTable[20].DeltaPos.a -''') verb=self.verbose comm=self.comm if comm is not None: @@ -914,9 +899,9 @@ if __name__=='__main__': #sp.gen_grid_points(w=50,h=50,pitch=120,rnd=0,ofs=(0,+2000));sp.sort_points(False,50); sp.meta['pt2pt_time']=10 #sp.gen_grid_points(w=16,h=16,pitch=120,rnd=0,ofs=(0,+2000));sp.sort_points(False,16); sp.meta['pt2pt_time']=10 #12.5x12.5 - sp.gen_grid_points(w=78,h=78,pitch=120,rnd=0,ofs=(-10000,-12000));sp.sort_points(False,78); sp.meta['pt2pt_time']=10 + #sp.gen_grid_points(w=78,h=78,pitch=120,rnd=0,ofs=(-10000,-12000));sp.sort_points(False,78); sp.meta['pt2pt_time']=10 #23.0x23.0 -> only 3 data points from shot to shot: 6,9,12,14,17,20... - #sp.gen_grid_points(w=162,h=162,pitch=120,rnd=0,ofs=(-10000,-12000));sp.sort_points(False,162); sp.meta['pt2pt_time']=10 + sp.gen_grid_points(w=162,h=162,pitch=120,rnd=0,ofs=(-10000,-12000));sp.sort_points(False,162); sp.meta['pt2pt_time']=10 #sp.gen_grid_points(w=1,h=10,pitch=100,rnd=0,ofs=(0,0)) #sp.gen_spiral_points(rStart=100,rInc=20,numSeg=8,numCir=32, ofs=(0, 0)) diff --git a/src/triggerSync/triggerSync b/src/triggerSync/triggerSync index 7aa55cb25cbf6a9594550381e2edb750cae4b20c..c04b8cfb10380e596e8dbef9e83233dbdee57da9 100755 GIT binary patch delta 9382 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

PJPz!)es)X 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 Q_K&5>o}u3Uv3XPe4}4^Qq5uE@ delta 10469 zcmb_i0Z<%emj1h^8DEi8v>t`66juxmCO*JRCJ^fr4H6{~a)@1mQy>Jd#`vWXfLy+q?xQcL8%*Znus zq@vbU9aYf(_ul*8d;fdye}6Oo{QMuKFQ1UYZgCDRU&aK&4oUw7 ztY*yO1U;JbMesAh*M0|HD~`!N?_m1xVM&M)74Ip`lICm5*vk$nk2DPFSX>V51^)#d z3oQ=GTL)2T9%D&(<~x|%LsP+zgA;t0f*#+Va-4?p8o~;6?m3${;iO|g!v;nW|zQsf$!C^ z@T3BPAXh*uItKxAsD=xy0j>b<mQT zcSYm{#SVc%5V%1$2waI3@)Zl)F@Y3t1HxY5Py~xV2PTJ^gH2z=N^>!vBGS$sd;Y@RWmV$8j!hl*Zy?o3|cJR+QgsEo$?PeC`x~wE6RkT$dtagw8Zp!&hkU-^o+KnaVaV3%Q&kN ztb=@9hw(4e3vrLkPkS*~m)c#;tSf2O5P7yUJ}W-$^(kfx6Y03!TcI8y(m;gdLxke9 zl(c(HBv)@KbA{}Tk>>#^t)B1?vzcU~-A)>5`G&y}XumqlG)p6PpYv*HX6)j=wg)9k z_mtcmo+_&gPt~z-+0a#oR~$)tEZ<G|eXR`k(%ImE!os8JEPQpi*+aZhdv#8_yQDkQ*Bso8v}? zT`#KV90iH42d;)}VfgAY`>J~9rMbNolX0woN6c`uU@Dg7Ovx+^4RLDgyp)*K2g!(5 zXW@B?_sz033|ls;U{rK$KuUf6>adn+(zYLq=9*HU4*u+h?qEx5ch3#0yL&3uA%Lk` z)m_JT+9kR<$Na>cloJF)c3-Ss3Mp3zYtypX!Z)6EGhi||tX9oW+c?WREfO=4W30%~ zOchhjqWyf|yZm(w9;Ij%Wiqu5Rp&&?1d6<2Ry{sHMMPy!&UcH+6RKlDqIJn6CO4|y z1xuA->JuNF5o**kLUmXW8iJ*By2A>)%-tA9FBIz7W5ZCnDGYro&Fd|P>8GeBXGebe5%0Z+T78*66N3;ZLD^(;YF z0+bc!*Psh<>>ghBWuRTWZpCGbFZbEgwC&EDU_yzaH8>B-FF7y3Vg`+%m1Hy9sJ-^W z810!z{y!t75HRKX(DdWfb*E3w@Ok;yfO%wWjwZ;9 zM7(#@o|+FMbu+@*Gqf5QdEBVYfl?M8*ucnXbZJimcr7$XD}8xkN=nkzh>BUYH>3s< zZ%}02>!d%RY|5xnRkJ9MUSiYd15(n(U_Um&{i)sHhmnTCo>g^@p6vCG$fiho$+UsA zuECuN(w5YlRgz#h#mo31-NsrLii9rd2iLf&g&5HpGD2sPwSSu|mX)IrxXT91R0UbkVvN_abaVFGVJ;(}Z{s@jLIulBAS>l-8twqK-%1n(ZfR3Q_p||!2 zq=miTveLca57BBvudw#f4XkQZVS&*-tWGbNgx?|j)WL=V%-ToBO@?^s2&T$OI61RG zt-%(%zoT>#=q141jb~(0I&MWQ)3-!|wvQ;q;dG%4kstEgr>DQGy-l%Z4}zw3T?&?V zQib&MyqC_qZ1Jt$Y)_Cf6l8%alde(N(A%WK`y@pk(Jr`pfaSnn%H(m%#K~6#KgVNl zU`$(M&FQZm!Ki%|30X^;7uJal@d7$X@6WD-cGw^S%<%MP&t zJQWa$P(}rfRZ~+iZK7|mi3Hy27TiXG~-ktbSI6On^Dkbd@g_-?0_n)E{FOT6#U=9 zs7H}>X}t_OD2iGS<9#h)*tq&Q^F$m}v=`%99#W3*hM770Jf@d}bs^AbJ4(EHQrgZT zZJFGNwmr*t;lCyP+jxxwv{gOEd>-L@|5KSrr8o9&G{|5;a^#sCC_K(YRQ#0FtFO%N z%1~4jNfk?kT#eDCd#S_c(&<0*HZlwyIYb+?>!*OxU=>p8(Xql^^Aq)FezxW>{I2`bm5p>z(YI0B5L-_Zb zWc(S-aYu;3{R6cQ7H@N~^i2FF9PUorVpZC@$~Sc_U+gPvlH0l}8awr2XUF!c#tw{& zn_}>$!Q?wSAKbEO`QiqzeEZhzjnyq};CdGOey}-P)@2JcVHvX39W9$TH+IOIwr<-3 z&6v{BRngMaq-k#Jlsh-+r~wAczsIw;o(V?)!nEt}+qty>z& zHFeA4n`&;(ry*W;pD5Fw<>T6eRXhY5hC-_4Mm%uDGwby98IrD=p8jhUoS`gfrOh$CdKjt5oW}0zScjs3P_{m!*4GJAOB*OTI;Do?3vKl+ zTR`bnKRn^Ovl~{YFgdTjWAk>RGPZwI@o)%)JgR?Z?BJ$>VYF!xKw ze)VU|zy*!e+OnyUiNcp^!k=a3#tnBZE1b1ss;Z}373_DBPKUdD&*!NB30IR!f{U7 zPn4UtA?TbiOa$r=GnAnng`J!Da_@ldLCe4(k#s$r5+;hKhZB^3qUee^sSgybtucXW z>y%|6WKarbNSAvGwT{RH^ahf-Km_!~8NzuG>brH#YjuCl^%QQd?`kaEu#5@oD6W

*0x47aRkH%jmaDI$w!E0Oy;yh zLq>{M@UvDN_MagFiZkPv0T$Le)9w2|j_t6Seqy4%}OY;=QoT$M=i zx=3@e(HG)Vs8n=nYccN-@u?AFd$GQ|saM3OQ6=cYUFw;46N|mwoUOHscsarkat3c4 z@$Lv~r<(U(vf>SK3B7N`-w+Y#D{R}^(8vVL5gw&A`4W(_s;+`6)EVSfeXK3CqOc36 z)|w{79vxOE`kWf^=B+5e#WO_e@a$FUq2ehCw`Z2$IHJ*H9W3MM;bZR&TZDaw+unao z6y8z`PB*1IwWFzfX=%yrwo;3IcjfBsC5zYJRg#gnbMt!j`P0r@H{WGjIIY zgq6)1d5>n~eYR9An|rUD{?>`U1?w%2nx9mDWm{lNUcaZ==3YP0yyuq(ZFjAD{#HALLHBXJs<9JpE8Wy#STvC(;!#VFadjsid9r$7BFpN-)x^R5>ez%^{NN>Z3X~5IqEMSu z&!=wdS?X(h)v8b3;@Kl=*QZ(HCmYmVc${CZzJ|wthtx?tt{zttK6_u$ZzV0-tt1X; zEdFdg1f5wHZf=i~^d2$MXmeGBbn!18U4>-UHV7P)q91 z0&A<{W-d5buB6s|kyhX%vH&vri!cw?D}ZT}!MczP>!g-2@$oj~bE${E@G0IZkeMJd z#6nmP?b@Q?9;^xXU4wgoscK0c=7h(vbG?9mWCE)ZaDS@DTGq|(0e%N-3u&2R!Xe1h zYUsL>Ahd#D;{;r)%abO76~L!V3IZ?~0;U^cGVo)5=*M#01oc^t)$9fd4IHW4mC0Tl=jghhlwtkd{1f@LoF9@TMirDFchfTa!OVNBz8 zEDz8A4uYi@c4_%MAC||V_7c>Nz%Tq*hJlIS&+!Yh@2f4ZLjNxC4Y&S;? z{nBmt2qB{n1YV)i-vg6?F`*F?sDcgr0B|!fF9@jzm@1HGR{AM0Z2=xZ>7U>r=`$Qe zCCL52hP_*!17XZW_&rwO0;Uk-NBZ~KUm1|zgZz0gc!Z?C0v}KvU!^JLZxTes!fqGM zN3%lUq7ori4a_4Sx4T*1Rwmlv6NL0?zYHz|{pnQBh>03Oo{jR>59f+1kTq0b>-1j#N!lDICs0E=$pAbC{0+(h4So9*S zh*H2K6pioGcq!*RgwcOzyqM_@MX!cFN+A^~exf%(-#H9;3Zw6bzA!NDl{u>Ce-ah? zkKPDS^gm;Llfb;0M?ZtnWdvAk30?ZQ-{UPUL zPtezcqCcfQ&<_D#)6tjV0Ii>A+$O=_N?;yf+k9YWM4=7Q&!7PF_1Ul~Gsqzxa2rmm zj4t4S9v|B(I6w>F4%*h@8&{_9|1euK1VSbOl$0z3+qeRhR7L=pcPksd(3BShuG0f< z+YR{_fO%K2{Ra3rFpsG1Um;HpHgkF9PZ02cz(ZuiCiKa`JVdr}@cn>>f=TdWfoTPJ zaj|^^z68uG#2y0!h^WX7*i*ny0H3GOo&|gXm@h!F7l5!gLa?s{9t74(gfaUn;Bgbi z0WVWZJbFaz8-Xe3JVo{`h)@GCl{EUCJ&2T!0|z+n111Ob6e-M(cO>(7&g{R0!Vm;_ zBenl_cG1{hg#0c9;E*0dJKhM*Um3Ggk+ow!&$0a@=oxdRvBV5Xs8^Coord[1].Q[10]) #define SIMFLAG1 (pshm->Coord[1].Q[11]) -//EncTable[20].pEnc= Coord[1].Q[12].a does not work -//EncTable[20].pEnc= Sys.Udata[0].a works uint32 -//EncTable[20].pEnc= Sys.Idata[0].a works int32 -//EncTable[20].pEnc= Sys.Fdata[0].a works float32 -//EncTable[20].pEnc= Sys.Ddata[0].a works float64 -//#define ENCVAL (*((double *)pushm+0)) -#define ENCVAL (*((unsigned int *)pushm+0)) - - //#define SIMFLAG0 (pshm->P[10]) //#define SIMFLAG1 (pshm->P[11]) //Power PMAC Software Reference Manual.pdf Gate3[i].Chan[j].Status -> page 919 UserFlag @@ -76,8 +67,7 @@ void trigsync_func(void *arg) int i; RTIME rtStart,rtLast,rtCur,rtDiff; //rt* is real time of the rt-process unsigned int scStart,scLast,scCur,scDiff; //sc* are servo counts of the motion - double srvPer,srvPer2; - double mtAct,mtDes; //mt* motion time. Actual and desired. this is the accumulated time that controls motion speed + double srvPer; unsigned int maxDiff; struct GateArray3* gate3_1=GetGate3MemPtr(1); @@ -91,15 +81,14 @@ void trigsync_func(void *arg) //unsigned int lastQ12=0; //Q12 value for further sync double mvTimer; - double mxActPos,mxDesPos,mxHomePos=pshm->Motor[2].HomePos; - double myActPos,myDesPos,myHomePos=pshm->Motor[1].HomePos; + double mxActPos,mxDesPos,mxErr,mxHomePos=pshm->Motor[2].HomePos; + double myActPos,myDesPos,myErr,myHomePos=pshm->Motor[1].HomePos; printf("Wait motion program arrived at start position...\n"); while(pshm->Coord[1].Q[0]!=-3) rt_task_wait_period(NULL); pshm->Coord[1].Q[0]=-2; srvPer=pshm->ServoPeriod; - srvPer2=pshm->ServoPeriod; rtStart=rt_timer_read(); printf("Wait for 'arm' event...\n"); @@ -132,17 +121,14 @@ void trigsync_func(void *arg) //FEL shot arrived FLAG1 0->1: first frame trigger before first cristall pshm->Gather.Enable=2; //start gathering data pshm->Coord[1].Q[0]=-1; - ENCVAL=0; printf("Flag 1: %.5f ms\n", (rt_timer_read() - rtStart)/1E6); rtStart=rtLast=rt_timer_read(); scStart=scLast=pshm->ServoCount; - mtAct=0.f; pshm->Coord[1].Q[0]=0; - //pshm->Coord[1].DesTimeBase=srvPer; //start motion at default speed - pshm->Coord[1].DesTimeBase=srvPer*(mtPt2Pt+timeOfs)/mtPt2Pt; //start motion at default speed + pshm->Coord[1].DesTimeBase=srvPer; //start motion at default speed if(mode&8) - printf("Start: rtStart:%.3f ms scStart:%d mtAct:%.3f mtDes:%.3f srvPer:%.6f\n", i, rtLast/1E6,scLast, mtAct,mtDes,srvPer); + printf("Start: rtStart:%.3f ms scStart:%d srvPer:%.6f\n", i, rtLast/1E6,scLast, srvPer); for(i=1;pshm->Gather.Enable;i++) { @@ -159,43 +145,21 @@ void trigsync_func(void *arg) while(FLAG1) { rt_task_wait_period(NULL); - ENCVAL=( (i-1)*mtPt2Pt + (pshm->ServoCount-scLast)*srvPer )*1000; } while(!FLAG1) { rt_task_wait_period(NULL); - ENCVAL=( (i-1)*mtPt2Pt + (pshm->ServoCount-scLast)*srvPer )*1000; } } //FEL shot arrived FLAG1 0->1 - //ENCVAL+=mtPt2Pt*1000; //ENCVAL in us - ENCVAL=i*mtPt2Pt*1000; //ENCVAL in us rtCur = rt_timer_read(); scCur=pshm->ServoCount; - //if (lastQ12!=(unsigned int)pshm->Coord[1].Q[12]) - //{ - // //'Coord[1].Q[12]=Sys.ServoCount' - // //'Coord[1].Q[13]={idxOfPoint}' - // //type of pshm->Coord[1].Q[12] is double - // lastQ12=(unsigned int)pshm->Coord[1].Q[12]; //saved ServoCount in program code - - // //mxActPos=pshm->Motor[2].ActPos;mxDesPos=pshm->Motor[2].DesPos; - // //myActPos=pshm->Motor[1].ActPos;myDesPos=pshm->Motor[1].DesPos; - - // //printf("*** SYNC *** Trigger count:%d, ProgIdx:%d, ServoCount diff:%d-%d=%d", i, (unsigned int)pshm->Coord[1].Q[13], lastQ12,scCur, lastQ12-scCur); - // printf("*** SYNC *** Trigger count:%d, myDesPos:%.2f, ServoCount diff:%d-%d=%d\n", i, pshm->Coord[1].Q[13]-myHomePos, lastQ12,scCur, lastQ12-scCur); - // //printf(" X,Y ActPos:(%.5g %.5g) DesPos:(%.5g %.5g)\n", mxActPos-mxHomePos, myActPos-myHomePos, mxDesPos-mxHomePos, myDesPos-myHomePos); - //} rtDiff=rtCur-rtLast; scDiff=scCur-scLast; - mtAct+=scDiff*srvPer+timeCor; - mtDes=i*mtPt2Pt+timeOfs; - srvPer=(mtPt2Pt+mtDes-mtAct)/scDiff; //srvPer=pshm->ServoPeriod; //default speed - // mvTimer > 0 motion leading FEL -> decrease srvPer // mvTimer < 0 motion lagging FEL -> increase srvPer // rtDiff > mtPt2Pt -> increase srvPer @@ -204,19 +168,20 @@ void trigsync_func(void *arg) if(mvTimer>mtPt2Pt/2) //lagging mvTimer-=mtPt2Pt; //srvPer2*=(rtDiff/1E6-mvTimer)/mtPt2Pt; - srvPer2=pshm->ServoPeriod*(rtDiff/1E6-mvTimer)/mtPt2Pt; + srvPer=pshm->ServoPeriod*(rtDiff/1E6-mvTimer)/mtPt2Pt; - pshm->Coord[1].DesTimeBase=srvPer2; + pshm->Coord[1].DesTimeBase=srvPer; pshm->Coord[1].Q[0]++; if(mode&8) { mxActPos=pshm->Motor[2].ActPos;mxDesPos=pshm->Motor[2].DesPos; myActPos=pshm->Motor[1].ActPos;myDesPos=pshm->Motor[1].DesPos; + mxErr=mxDesPos-mxActPos; + myErr=myDesPos-myActPos; //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(" Nsync:%d, MoveTimer:(%.5g) srvPer2:%.6f ", pshm->Coord[1].Nsync,mvTimer,srvPer2); - printf("Trigger count:%d, rtDiff:%.3fms scDiff:%d mtAct:%.3f mtDes:%.3f srvPer:%.6f ENCVAL:%u \n", i, rtDiff/1E6,scDiff, mtAct,mtDes,srvPer,ENCVAL); + 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); } rtLast=rtCur; scLast=scCur;