From 069e7795e5bd89cdb27daf0bae3c22c57c4e6bcc Mon Sep 17 00:00:00 2001 From: Thierry Zamofing Date: Mon, 21 Jan 2019 15:42:16 +0100 Subject: [PATCH] fixing 5 CAM transformation, higher current for cryojet --- MX3_coordTrf.md | 212 ++++++++++++++++++++++++++++++++++++++++++++ cfg/MX2_setup.cfg | 2 +- cfg/MX3_coordTrf.py | 39 ++++---- cfg/SAR-EXPMX3.cfg | 4 +- 4 files changed, 240 insertions(+), 17 deletions(-) create mode 100644 MX3_coordTrf.md diff --git a/MX3_coordTrf.md b/MX3_coordTrf.md new file mode 100644 index 0000000..2ba408b --- /dev/null +++ b/MX3_coordTrf.md @@ -0,0 +1,212 @@ + + +``` + +telnet SAR-CPPM-EXPMX3 50001 + +zamofing_t@ganymede:~/Documents/prj/SwissFEL/epics_ioc_modules/ESB_MX$ PBInspect --host SAR-CPPM-EXPMX3 --cfg PBInspect3.pbi + + + +ssh root@SAR-CPPM-EXPMX3 +sendgetsends -1 + + +gpasciiCommander --host SAR-CPPM-EXPMX3 -i +//!MX3_coordTrf(exc=5000,height=118000,width=377500,length=600000,camSf=1.7453292519943296e-05) +!MX3_coordTrf(exc=5000,height=0,width=377500,length=600000,camSf=1.7453292519943296e-05) +!MX3_coordTrf(exc=5000,height=0,width=377500,length=600000,camSf=1.7453292519943296e-05,q=-.8) +Coord[1].Ta=10 +Coord[1].Td=10 +Coord[1].AltFeedRate=1000 +Coord[1].Tm=-10000 //1000um/FeedTime -> 1mm/sec +Coord[1].FeedTime=1000 //default value 1000um + + +list subProg10 +call15 +jog1=(L0) +call16 + +open prog 1 +call15 +abslinear +X(0) Y(0) U(0) V(0) w(0) +call16 +close +&1b1r + +open prog 1 +call15 +abslinear +X(2000) Y(0) U(0) V(0) w(0) +dwell 1000 +X(-2000) Y(0) U(0) V(0) w(0) +dwell 1000 +X(0) Y(0) U(0) V(0) w(0) +call16 +close + +open prog 2 +call15 +abslinear +X(0) Y(2000) U(0) V(0) w(0) +dwell 1000 +X(0) Y(-2000) U(0) V(0) w(0) +dwell 1000 +X(0) Y(0) U(0) V(0) w(0) +call16 +close + +open prog 3 +call15 +abslinear +X(0) Y(0) U(2000) V(0) w(0) +dwell 1000 +X(0) Y(0) U(-2000) V(0) w(0) +dwell 1000 +X(0) Y(0) U(0) V(0) w(0) +call16 +close + +open prog 4 +call15 +abslinear +X(0) Y(0) U(0) V(2000) w(0) +dwell 1000 +X(0) Y(0) U(0) V(-2000) w(0) +dwell 1000 +X(0) Y(0) U(0) V(0) w(0) +call16 +close + +open prog 5 +call15 +abslinear +X(0) Y(0) U(0) V(0) w(2000) +dwell 1000 +X(0) Y(0) U(0) V(0) w(-2000) +dwell 1000 +X(0) Y(0) U(0) V(0) w(0) +call16 +close + +&1b1r +&1b2r +&1b3r +&1b4r +&1b5r + + + + + + + + +open prog 2 +call15 +abslinear +X(2000) Y(0) U(0) V(0) w(0) +dwell 1000 +X(0) Y(0) U(0) V(0) w(0) +dwell 1000 +X(0) Y(2000) U(0) V(0) w(0) +dwell 1000 +X(0) Y(0) U(0) V(0) w(0) +dwell 1000 +X(0) Y(0) U(2000) V(0) w(0) +dwell 1000 +X(0) Y(0) U(0) V(0) w(0) +dwell 1000 +X(0) Y(0) U(0) V(2000) w(0) +dwell 1000 +X(0) Y(0) U(0) V(0) w(0) +dwell 1000 +X(0) Y(0) U(0) V(0) w(2000) +dwell 1000 +X(0) Y(0) U(0) V(0) w(0) +call16 +close +&1b2r + +cpx call 15 +#1..5j=90000 +cpx call 16 + + + +Koordinate U is wrong + + + +fwd_inp(0) 90000 90000 90000 90000 90000 +fwd_inp(0) 2.16489e-13 2.16489e-13 2.16489e-13 2.16489e-13 2.16489e-13 +fwd_res -3.17041e-14 4.01274e-13 1.26816e-13 6.34082e-14 -6.34082e-14 +inv_inp(0) 2000 0 0 0 0 +inv_res 73570.1 106430 73570.1 106430 90000 +inv_inp(0) 0 0 0 0 0 +inv_res 90000 90000 90000 90000 90000 +inv_inp(0) 0 2000 0 0 0 +inv_res 73570.1 73570.1 73570.1 73570.1 66421.8 +inv_inp(0) 0 0 0 0 0 +inv_res 90000 90000 90000 90000 90000 +inv_inp(0) 0 0 2000 0 0 +inv_res 81869.9 98130.1 81869.9 81869.9 101537 +inv_inp(0) 0 0 0 0 0 +inv_res 90000 90000 90000 90000 90000 +inv_inp(0) 0 0 0 2000 0 +inv_res 98130.1 81869.9 81869.9 98130.1 90000 +inv_inp(0) 0 0 0 0 0 +inv_res 90000 90000 90000 90000 90000 +inv_inp(0) 0 0 0 0 2000 +inv_res 98130.1 98130.1 81869.9 81869.9 78463 +inv_inp(0) 0 0 0 0 0 +inv_res 90000 90000 90000 90000 90000 + + + + + + + + + + + + + + +> list forward +list forward +L6=118000/377500 +L7=5000/1.4142135623700001 +L11=L7*cos(L2*0.0000174532925199) +L12=L7*cos(L1*0.0000174532925199) +L13=L7*cos(L4*0.0000174532925199) +L14=L7*cos(L5*0.0000174532925199) +L15=L7*cos(L3*0.0000174532925199) +C6=0.5*L11-0.5*L12+(L6+0.25)*L13+(L6-0.75)*L14+(0.25-L6)*1.4142135623700001*L15 +C7=0.5*L11+0.5*L12+0.25*L13+0.25*L14+0.25*1.4142135623700001*L15 +C3=1*L13+1*L14-1*1.4142135623700001*L15 +C4=-1*L11+1*L12+1.5*L13-0.5*L14-0.5*1.4142135623700001*L15 +C5=-1*L11-1*L12+0.5*L13+0.5*L14+0.5*1.4142135623700001*L15 +D0=248 +> list inverse +list inverse +L6=118000/377500 +L11=0.5*C6+0.5*C7+(0.25-0.5*L6)*C3-0.25*C4-0.25*C5 +L12=-0.5*C6+0.5*C7+(0.5*L6-0.25)*C3+0.25*C4-0.25*C5 +L13=0.5*C6+0.5*C7+(0.25-0.5*L6)*C3+0.25*C4+0.25*C5 +L14=-0.5*C6+0.5*C7+(0.25+0.5*L6)*C3-0.25*C4+0.25*C5 +L15=0.5*1.4142135623700001*C7-0.25*1.4142135623700001*C3+0.25*1.4142135623700001*C5 +L7=1.4142135623700001/5000 +L2=acos(L11*L7)/0.0000174532925199 +L1=acos(L12*L7)/0.0000174532925199 +L4=acos(L13*L7)/0.0000174532925199 +L5=acos(L14*L7)/0.0000174532925199 +L3=acos(L15*L7)/0.0000174532925199 +> + + +``` diff --git a/cfg/MX2_setup.cfg b/cfg/MX2_setup.cfg index 0a7c146..53546bf 100644 --- a/cfg/MX2_setup.cfg +++ b/cfg/MX2_setup.cfg @@ -53,4 +53,4 @@ !motor(mot=6,dirCur=1500,JogSpeed=10,invDir=False,servoSf=102.4) -!holding_current(m1=[0,1000],m2=[0,1000],m3=[0,1000],m4=[0,1000],m5=[1400,1800],m6=[0,500]) +!holding_current(m1=[0,1000],m2=[0,1000],m3=[0,1000],m4=[0,1000],m5=[1400,1800],m6=[0,1000]) diff --git a/cfg/MX3_coordTrf.py b/cfg/MX3_coordTrf.py index ab9c7ec..44a19fe 100644 --- a/cfg/MX3_coordTrf.py +++ b/cfg/MX3_coordTrf.py @@ -11,6 +11,7 @@ def MX3_coordTrf(fileParser,kwargs): ... Documentation: + /home/zamofing_t/Documents/doc-ext/SwissFEL/Devices/5CAM/cam_mov7.pdf 'Cam Movers for SLS undulators' (21.5.2013, Calvi, Bruegger, Zimoch) home/zamofing_t/Documents/doc-ext/DeltaTau/Training/TrainingSlides/22-Power PMAC Cam Tables 2014-04.ppt Ref Manual: 96-106,488, 527-528, 655 @@ -35,6 +36,10 @@ S=D*X ''' kw=kwargs + + if not kw.has_key('q'): + kw['q']=0. + kw['sqrt2']=sqrt(2.) fileParser.parse_txt(''' // ---------- Coordinate System/Transformation ---------- @@ -46,9 +51,11 @@ S=D*X #4->I #5->I -Coord[1].Ta=100 -Coord[1].Td=100 -Coord[1].AltFeedRate=1 +Coord[1].Ta=10 +Coord[1].Td=10 +Coord[1].AltFeedRate=1000 +Coord[1].Tm=-10000 //1000um/FeedTime -> 1mm/sec +Coord[1].FeedTime=1000 //default value 1000um Motor[1].MaxSpeed=Motor[1].JogSpeed Motor[2].MaxSpeed=Motor[2].JogSpeed Motor[3].MaxSpeed=Motor[3].JogSpeed @@ -59,10 +66,11 @@ open forward //define(AA1='L1',AA2='L2',AA3='L3',AA4='L4',AA5='L5') define(AA1='L2',AA2='L1',AA3='L4',AA4='L5',AA5='L3') - define(r='L6',scl='L7') + define(r='L6',scl='L7',q='L8') define(S1='L11',S2='L12',S3='L13',S4='L14',S5='L15') define(X='C6',Y='C7',U='C3',V='C4',W='C5') r=$height/$width + q=$q scl=$exc/$sqrt2 S1=scl*cos(AA1*$camSf) S2=scl*cos(AA2*$camSf) @@ -75,11 +83,11 @@ open forward //X=D^-1*S - X=+.5*S1 -.5*S2 +(r+.25)*S3 +(r-.75)*S4 +(.25-r)*$sqrt2*S5 - Y=+.5*S1 +.5*S2 +.25*S3 +.25*S4 +.25*$sqrt2*S5 - U= +1.*S3 +1.*S4 -1.*$sqrt2*S5 - V=-1.*S1 +1.*S2 +1.5*S3 -.5*S4 -.5*$sqrt2*S5 - W=-1.*S1 -1.*S2 +.5*S3 +.5*S4 +.5*$sqrt2*S5 + X= +.5*S1 -.5*S2 +(r+.75)*S3 +(r-.25)*S4 -(r+.25)*$sqrt2*S5 + Y=(1.+q)*.5*S1 +(1.+q)*.5*S2 +(1.-q)*.25*S3 +(1.-q)*.25*S4 +(1.-q)*.25*$sqrt2*S5 + U= +1.*S3 +1.*S4 -1.*$sqrt2*S5 + V= -1.*S1 +1.*S2 +.5*S3 -1.5*S4 +.5*$sqrt2*S5 + W= -1.*S1 -1.*S2 +.5*S3 +.5*S4 +.5*$sqrt2*S5 //send 1"fwd_res %f %f %f %f %f\\n",X,Y,U,V,W @@ -89,7 +97,7 @@ close open inverse //define(AA1='L1',AA2='L2',AA3='L3',AA4='L4',AA5='L5') define(AA1='L2',AA2='L1',AA3='L4',AA4='L5',AA5='L3') - define(r='L6',scl='L7') + define(r='L6',scl='L7',q='L8') define(S1='L11',S2='L12',S3='L13',S4='L14',S5='L15') define(X='C6',Y='C7',U='C3',V='C4',W='C5') @@ -99,12 +107,13 @@ open inverse //send 1"inv_inp(%f) %f %f %f %f %f\\n",D0,X,Y,U,V,W r=$height/$width + q=$q - S1=+.5*X +.5*Y +(.25-.5*r)*U -.25*V -.25*W - S2=-.5*X +.5*Y +(.5*r-.25)*U +.25*V -.25*W - S3=+.5*X +.5*Y +(.25-.5*r)*U +.25*V +.25*W - S4=-.5*X +.5*Y +(.25+.5*r)*U -.25*V +.25*W - S5= .5*$sqrt2*Y -.25*$sqrt2*U +.25*$sqrt2*W + S1=+.5*X +.5*Y -(.25+.5*r)*U -.25*V -.25*(1-q)*W + S2=-.5*X +.5*Y +(.25+.5*r)*U +.25*V -.25*(1-q)*W + S3=+.5*X +.5*Y +(.25-.5*r)*U +.25*V +.25*(1+q)*W + S4=-.5*X +.5*Y +(.25+.5*r)*U -.25*V +.25*(1+q)*W + S5= .5*$sqrt2*Y -.25*$sqrt2*U +.25*$sqrt2*(1+q)*W scl=$sqrt2/$exc AA1=acos(S1*scl)/$camSf diff --git a/cfg/SAR-EXPMX3.cfg b/cfg/SAR-EXPMX3.cfg index ed4ccf6..e0d1c6e 100644 --- a/cfg/SAR-EXPMX3.cfg +++ b/cfg/SAR-EXPMX3.cfg @@ -7,7 +7,9 @@ //height = 90+28mm = 118 //width = (450+305)/2=377.5 //length = 600mm -!MX3_coordTrf(exc=5000,height=118000,width=377500,length=600000,camSf=1.7453292519943296e-05) +//pivotpoint q= -.7 0= center 1=mover upstream -1=mover downstream ca. 100mm from downstream +//!MX3_coordTrf(exc=5000,height=118000,width=377500,length=600000,camSf=1.7453292519943296e-05) +!MX3_coordTrf(exc=5000,height=118000,width=377500,length=600000,camSf=1.7453292519943296e-05,q=-.7) //Motor 1 -> AA2 //Motor 2 -> AA1