diff --git a/Readme.md b/Readme.md
index 9d10df3..dc280c6 100644
--- a/Readme.md
+++ b/Readme.md
@@ -244,6 +244,7 @@ SAR-CPPM-EXPMX2: biss:n timing:n
3: wedge3
4: wedge4
5: backlight
+ 6: cryojet
SAR-CPPM-EXPMX3: biss:n timing:y
1: girder1
@@ -344,5 +345,21 @@ git@git.psi.ch:epics_ioc_modules/5CAM_SYSTEM.git
copied the coordTrf.py from /home/zamofing_t/Documents/doc-ext/SwissFEL/Devices/5CAM
to /cfg/MX3_coordTrf.py and modify it
+
+PPMAC=MOTTEST-CPPM-CRM0485
+cd /home/zamofing_t/Documents/prj/SwissFEL/epics_ioc_modules/ESB_MX
+PBInspect --host $PPMAC --cfg PBInspect3.pbi
+
+PPMAC=MOTTEST-CPPM-CRM0485
+ssh root@$PPMAC
+sendgetsends -1
+
+
+
+cd /home/zamofing_t/Documents/prj/SwissFEL/epics_ioc_modules/ESB_MX/cfg
+gpasciiCommander --host $PPMAC -i
+$$$***
+!common()
+!SAR-EXPMX3()
```
diff --git a/SAR-EXPMX2.subs b/SAR-EXPMX2.subs
index 8460b3f..0df5419 100644
--- a/SAR-EXPMX2.subs
+++ b/SAR-EXPMX2.subs
@@ -26,4 +26,5 @@ pattern{ DESC , P , M , PORT , ADDR, DIR, VELO, HVEL
{ "Wedge A" , "$(P_M)", "MOT_WEDGEA", "$(PORT_M)", 11 , 0 , 1. , .5 , 0.1 , 20 , -0.001, 3 , "mm" , 0 , 0 }
{ "Wedge B" , "$(P_M)", "MOT_WEDGEB", "$(PORT_M)", 12 , 0 , 1. , .5 , 0.1 , 20 , -0.001, 3 , "mm" , 0 , 0 }
{ "Backlight", "$(P_M)", "MOT_BLGT" , "$(PORT_M)", 5 , 1 , 40E3, 20E3, 0.1 , 20 , -1 , 0 , "usr", 0 , 0 }
+ { "Cryojet" , "$(P_M)", "MOT_CRYO" , "$(PORT_M)", 6 , 1 , 10., 5. , 0.1 , 20 , -0.001, 3 , "mm", 0 , 0 }
}
diff --git a/cfg/MX2_setup.cfg b/cfg/MX2_setup.cfg
index a66cbce..0a7c146 100644
--- a/cfg/MX2_setup.cfg
+++ b/cfg/MX2_setup.cfg
@@ -44,4 +44,13 @@
!motor(mot=5,dirCur=1800,JogSpeed=40,invDir=False)
-!holding_current(m1=[0,1000],m2=[0,1000],m3=[0,1000],m4=[0,1000],m5=[1400,1800])
+//Cryojet
+//---------
+//Max. 1.5A -1024000=-10mm
+//posSf = userUnits/encoder_steps =10000/1024000 =10./1024
+//servoSf=motor_u_steps/userUnits = 1024000/10000. = 102.4
+!encoder_sim(enc=6,posSf=10./1024)
+!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])
diff --git a/cfg/MX3_coordTrf.py b/cfg/MX3_coordTrf.py
index 3d5aa00..a8ee034 100644
--- a/cfg/MX3_coordTrf.py
+++ b/cfg/MX3_coordTrf.py
@@ -1,4 +1,4 @@
-def coordTrf(fileParser,kwargs):
+def MX3_coordTrf(fileParser,kwargs):
from math import sqrt
'''
--- mandatory ---
@@ -49,84 +49,69 @@ S=D*X
Coord[1].Ta=100
Coord[1].Td=100
Coord[1].AltFeedRate=1
-
-open forward
-define(AA1='L1',AA2='L2',AA3='L3',AA4='L4',AA5='L5')
-define(r='L6',scl='L7')
-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
-scl=$exc/$sqrt2
-S1=scl*sin(AA1*$camSf)
-S2=scl*sin(AA2*$camSf)
-S3=scl*sin(AA3*$camSf)
-S4=scl*sin(AA4*$camSf)
-S5=scl*sin(AA5*$camSf)
-
-//debug code
-P1=S1
-P2=S2
-P3=S3
-P4=S4
-P5=S5
-P6=P6+1
-
-//X=D^-1*S
-X=+.5*S1 -.5*S2 +(r+.5)*S3 +(r-.5)*S4 +(.5-r)*$sqrt2*S5
-Y=+.5*S1 +.5*S2 +.25*S3 +.25*S4 +.25*$sqrt2*S5
-U= -.5*S3 -.5*S4 +.5$sqrt2*S5
-V=-.5*S1 +1.*S2 +1.5*S3 -.5*S4 -.5*$sqrt2*S5
-W=-.5*S1 -1.*S2 +.5*S3 +.5*S4 +.5*$sqrt2*S5
-
-D0=$$000000f8; //U=$$8 V=$$10 W=$$20 X=$$40 Y=$$80 hex(8+int('10',16)+int('20',16)+int('40',16)+int('80',16)) -> '0xf8'
-close
-
-open inverse
-define(AA1='L1',AA2='L2',AA3='L3',AA4='L4',AA5='L5')
-define(r='L6',scl='L7')
-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
-
-S1=+.5*X +.5*Y +(0) *U -.5*V +.5*W
-S2=-.5*X +.5*Y +(0) *U +.5*V +.5*W
-S3=+.5*X +.5*Y -(.5) *U +.5*V -.5*W
-S4=-.5*X +.5*Y -(.5) *U -.5*V -.5*W
-S5= .5*$sqrt2*Y +.5*$sqrt2*U -.5*$sqrt2*W
-
-//debug code
-P11=S1
-P12=S2
-P13=S3
-P14=S4
-P15=S5
-P16=P16+1
-
-scl=$sqrt2/$exc
-AA1=asin(S1*scl)/$camSf
-AA2=asin(S2*scl)/$camSf
-AA3=asin(S3*scl)/$camSf
-AA4=asin(S4*scl)/$camSf
-AA5=asin(S5*scl)/$camSf
-
-//debug code
-P21=AA1
-P22=AA2
-P23=AA3
-P24=AA4
-P25=AA5
-
-close
-
-//#1..5j/
-//#1..5hmz
-&1
-
-
Motor[1].MaxSpeed=Motor[1].JogSpeed
Motor[2].MaxSpeed=Motor[2].JogSpeed
Motor[3].MaxSpeed=Motor[3].JogSpeed
Motor[4].MaxSpeed=Motor[4].JogSpeed
Motor[5].MaxSpeed=Motor[5].JogSpeed
+
+open forward
+ define(AA1='L1',AA2='L2',AA3='L3',AA4='L4',AA5='L5')
+ define(r='L6',scl='L7')
+ 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
+ scl=$exc/$sqrt2
+ S1=scl*sin(AA1*$camSf)
+ S2=scl*sin(AA2*$camSf)
+ S3=scl*sin(AA3*$camSf)
+ S4=scl*sin(AA4*$camSf)
+ S5=scl*sin(AA5*$camSf)
+
+ send 1"fwd_inp(%f) %f %f %f %f %f\\n",D0,AA1,AA2,AA3,AA4,AA5
+ send 1"fwd_inp(%f) %f %f %f %f %f\\n",D0,S1,S2,S3,S4,S5
+
+
+ //X=D^-1*S
+ X=+.5*S1 -.5*S2 +(r+.5)*S3 +(r-.5)*S4 +(.5-r)*$sqrt2*S5
+ Y=+.5*S1 +.5*S2 +.25*S3 +.25*S4 +.25*$sqrt2*S5
+ U= -.5*S3 -.5*S4 +.5*$sqrt2*S5
+ V=-.5*S1 +1.*S2 +1.5*S3 -.5*S4 -.5*$sqrt2*S5
+ W=-.5*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
+
+ D0=$$000000f8; //U=$$8 V=$$10 W=$$20 X=$$40 Y=$$80 hex(8+int('10',16)+int('20',16)+int('40',16)+int('80',16)) -> '0xf8'
+close
+
+open inverse
+ define(AA1='L1',AA2='L2',AA3='L3',AA4='L4',AA5='L5')
+ define(r='L6',scl='L7')
+ define(S1='L11',S2='L12',S3='L13',S4='L14',S5='L15')
+ define(X='C6',Y='C7',U='C3',V='C4',W='C5')
+
+ //if(D0>0)
+ // send 1"Velocity calculation NOT SUPPORTED\\n"
+
+ send 1"inv_inp(%f) %f %f %f %f %f\\n",D0,X,Y,U,V,W
+
+ r=$height/$width
+
+ S1=+.5*X +.5*Y +(0) *U -.5*V +.5*W
+ S2=-.5*X +.5*Y +(0) *U +.5*V +.5*W
+ S3=+.5*X +.5*Y -(.5) *U +.5*V -.5*W
+ S4=-.5*X +.5*Y -(.5) *U -.5*V -.5*W
+ S5= .5*$sqrt2*Y +.5*$sqrt2*U -.5*$sqrt2*W
+
+ scl=$sqrt2/$exc
+ AA1=asin(S1*scl)/$camSf
+ AA2=asin(S2*scl)/$camSf
+ AA3=asin(S3*scl)/$camSf
+ AA4=asin(S4*scl)/$camSf
+ AA5=asin(S5*scl)/$camSf
+
+ send 1"inv_res %f %f %f %f %f\\n",AA1,AA2,AA3,AA4,AA5
+
+close
+
''',kw)
diff --git a/cfg/MX3_setup.cfg b/cfg/MX3_setup.cfg
index 86d0258..f86580e 100644
--- a/cfg/MX3_setup.cfg
+++ b/cfg/MX3_setup.cfg
@@ -20,3 +20,31 @@ Motor[4].pLimits=0;Motor[4].AmpFaultLevel=0;Motor[4].pAmpEnable=0;Motor[4].pAmpF
!encoder_sim(enc=5,tbl=5,mot=5)
!motor(mot=5,dirCur=0,contCur=100,peakCur=1000,timeAtPeak=1,JogSpeed=8.,numPhase=3,invDir=True)
Motor[5].pLimits=0;Motor[5].AmpFaultLevel=0;Motor[5].pAmpEnable=0;Motor[5].pAmpFault=0
+
+
+// //NEW:
+// //the motor has 512*200*100 usteps per revolution (512 uystep/step, 200 steps/rev 1:100 gear)
+// //the ssi-encoder has 2**18=262144 steps per revolution
+// //motor_u_steps/inc_enc_step=39.0625
+// //JogSpeed=102.4 ustep/ms=102400ustep/s = 512*200= 1 rev/sec
+// posSf : position scale factor: encoder position to motor u-steps, 1 motor step is 512 motor u-steps
+// motor_u_steps=posSf*encoder_steps -> posSf = motor_u_steps/encoder_steps
+// default is 1.0 (1 motor_u_steps = 1 encoder_steps)
+
+// !encoder_ssi(enc=1,numBits=18,posSf=39.0625)
+// !encoder_ssi(enc=2,numBits=18,posSf=39.0625)
+// !encoder_ssi(enc=3,numBits=18,posSf=39.0625)
+// !encoder_ssi(enc=4,numBits=18,posSf=39.0625)
+// !encoder_ssi(enc=5,numBits=18,posSf=39.0625)
+
+// !motor(mot=1,dirCur=600,JogSpeed=102.4)
+// !motor(mot=2,dirCur=600,JogSpeed=102.4)
+// !motor(mot=3,dirCur=600,JogSpeed=102.4)
+// !motor(mot=4,dirCur=600,JogSpeed=102.4)
+// !motor(mot=5,dirCur=600,JogSpeed=102.4)
+
+// !cm_brake(mot=1,curOn=600,cs=1,delay=200,gpio=16)
+// !cm_brake(mot=2,curOn=600,cs=1,delay=200,gpio=17)
+// !cm_brake(mot=3,curOn=600,cs=1,delay=200,gpio=18)
+// !cm_brake(mot=4,curOn=600,cs=1,delay=200,gpio=19)
+// !cm_brake(mot=5,curOn=600,cs=1,delay=200,gpio=20)
diff --git a/cfg/SAR-EXPMX3.cfg b/cfg/SAR-EXPMX3.cfg
index 34f120f..e965fc6 100644
--- a/cfg/SAR-EXPMX3.cfg
+++ b/cfg/SAR-EXPMX3.cfg
@@ -1,4 +1,5 @@
!MX3_setup()
//!MX3_home()
-!MX3_coordTrf()
\ No newline at end of file
+//using 360000 for 1 rev. -> 1.7453292519943296e-05=np.pi/180000
+!MX3_coordTrf(exc=1000,height=2000,width=3000,length=4000,camSf=1.7453292519943296e-05)
\ No newline at end of file
diff --git a/qt/ESB_MX_exp.ui b/qt/ESB_MX_exp.ui
index 4250d32..abd0bca 100644
--- a/qt/ESB_MX_exp.ui
+++ b/qt/ESB_MX_exp.ui
@@ -7,7 +7,7 @@
0
0
776
- 643
+ 681
@@ -49,7 +49,7 @@
20
70
725
- 456
+ 480
@@ -68,6 +68,7 @@ P=$(P),M=MOT_WEDGEY;
P=$(P),M=MOT_WEDGEA;
P=$(P),M=MOT_WEDGEB;
P=$(P),M=MOT_BLGT;
+P=$(P),M=MOT_CRYO;
P=$(P),M=MOT_GIRDER1;
P=$(P),M=MOT_GIRDER2;
P=$(P),M=MOT_GIRDER3;
@@ -78,7 +79,7 @@ P=$(P),M=MOT_GIRDER5
ESB_MX_motor.ui
- 19
+ 20
@@ -213,8 +214,8 @@ P=$(P),M=MOT_GIRDER5
- 50
- 570
+ 20
+ 590
121
22
@@ -235,8 +236,8 @@ P=$(P),M=MOT_GIRDER5
- 190
- 570
+ 160
+ 590
121
24
@@ -264,8 +265,8 @@ P=$(P),M=MOT_GIRDER5
- 200
- 540
+ 170
+ 560
100
22
@@ -286,8 +287,8 @@ P=$(P),M=MOT_GIRDER5
- 60
- 600
+ 30
+ 620
100
22
@@ -305,8 +306,8 @@ P=$(P),M=MOT_GIRDER5
- 50
- 540
+ 20
+ 560
121
22
@@ -327,8 +328,8 @@ P=$(P),M=MOT_GIRDER5
- 190
- 600
+ 160
+ 620
151
30
diff --git a/qt/ESB_MX_motor.ui b/qt/ESB_MX_motor.ui
index e7c6941..b7c19d9 100644
--- a/qt/ESB_MX_motor.ui
+++ b/qt/ESB_MX_motor.ui
@@ -124,7 +124,10 @@
-
-
+
+
+ -$(M)
+
128
@@ -133,13 +136,16 @@
- $(M)
+ more;all
- motorx_all.ui
+ motorx_more.ui;motorx_all.ui
- P=$(P):,M=$(M)
+ P=$(P):,M=$(M);P=$(P):,M=$(M)
+
+
+ caRowColMenu::Menu