fixing 5 CAM transformation, higher current for cryojet

This commit is contained in:
2019-01-21 15:42:16 +01:00
parent d19ea28d23
commit 069e7795e5
4 changed files with 240 additions and 17 deletions

212
MX3_coordTrf.md Normal file
View File

@@ -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
>
```

View File

@@ -53,4 +53,4 @@
!motor(mot=6,dirCur=1500,JogSpeed=10,invDir=False,servoSf=102.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])

View File

@@ -11,6 +11,7 @@ def MX3_coordTrf(fileParser,kwargs):
... ...
Documentation: Documentation:
/home/zamofing_t/Documents/doc-ext/SwissFEL/Devices/5CAM/cam_mov7.pdf
'Cam Movers for SLS undulators' (21.5.2013, Calvi, Bruegger, Zimoch) '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 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 Ref Manual: 96-106,488, 527-528, 655
@@ -35,6 +36,10 @@ S=D*X
''' '''
kw=kwargs kw=kwargs
if not kw.has_key('q'):
kw['q']=0.
kw['sqrt2']=sqrt(2.) kw['sqrt2']=sqrt(2.)
fileParser.parse_txt(''' fileParser.parse_txt('''
// ---------- Coordinate System/Transformation ---------- // ---------- Coordinate System/Transformation ----------
@@ -46,9 +51,11 @@ S=D*X
#4->I #4->I
#5->I #5->I
Coord[1].Ta=100 Coord[1].Ta=10
Coord[1].Td=100 Coord[1].Td=10
Coord[1].AltFeedRate=1 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[1].MaxSpeed=Motor[1].JogSpeed
Motor[2].MaxSpeed=Motor[2].JogSpeed Motor[2].MaxSpeed=Motor[2].JogSpeed
Motor[3].MaxSpeed=Motor[3].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='L1',AA2='L2',AA3='L3',AA4='L4',AA5='L5')
define(AA1='L2',AA2='L1',AA3='L4',AA4='L5',AA5='L3') 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(S1='L11',S2='L12',S3='L13',S4='L14',S5='L15')
define(X='C6',Y='C7',U='C3',V='C4',W='C5') define(X='C6',Y='C7',U='C3',V='C4',W='C5')
r=$height/$width r=$height/$width
q=$q
scl=$exc/$sqrt2 scl=$exc/$sqrt2
S1=scl*cos(AA1*$camSf) S1=scl*cos(AA1*$camSf)
S2=scl*cos(AA2*$camSf) S2=scl*cos(AA2*$camSf)
@@ -75,11 +83,11 @@ open forward
//X=D^-1*S //X=D^-1*S
X=+.5*S1 -.5*S2 +(r+.25)*S3 +(r-.75)*S4 +(.25-r)*$sqrt2*S5 X= +.5*S1 -.5*S2 +(r+.75)*S3 +(r-.25)*S4 -(r+.25)*$sqrt2*S5
Y=+.5*S1 +.5*S2 +.25*S3 +.25*S4 +.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 U= +1.*S3 +1.*S4 -1.*$sqrt2*S5
V=-1.*S1 +1.*S2 +1.5*S3 -.5*S4 -.5*$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 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 //send 1"fwd_res %f %f %f %f %f\\n",X,Y,U,V,W
@@ -89,7 +97,7 @@ close
open inverse open inverse
//define(AA1='L1',AA2='L2',AA3='L3',AA4='L4',AA5='L5') //define(AA1='L1',AA2='L2',AA3='L3',AA4='L4',AA5='L5')
define(AA1='L2',AA2='L1',AA3='L4',AA4='L5',AA5='L3') 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(S1='L11',S2='L12',S3='L13',S4='L14',S5='L15')
define(X='C6',Y='C7',U='C3',V='C4',W='C5') 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 //send 1"inv_inp(%f) %f %f %f %f %f\\n",D0,X,Y,U,V,W
r=$height/$width r=$height/$width
q=$q
S1=+.5*X +.5*Y +(.25-.5*r)*U -.25*V -.25*W S1=+.5*X +.5*Y -(.25+.5*r)*U -.25*V -.25*(1-q)*W
S2=-.5*X +.5*Y +(.5*r-.25)*U +.25*V -.25*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*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*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*W S5= .5*$sqrt2*Y -.25*$sqrt2*U +.25*$sqrt2*(1+q)*W
scl=$sqrt2/$exc scl=$sqrt2/$exc
AA1=acos(S1*scl)/$camSf AA1=acos(S1*scl)/$camSf

View File

@@ -7,7 +7,9 @@
//height = 90+28mm = 118 //height = 90+28mm = 118
//width = (450+305)/2=377.5 //width = (450+305)/2=377.5
//length = 600mm //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 1 -> AA2
//Motor 2 -> AA1 //Motor 2 -> AA1