tuning Servo Parameters of XY stage without load and horizontal on the table
This commit is contained in:
112
logbook.md
112
logbook.md
@@ -487,3 +487,115 @@ fn='/home/zamofing_t/Documents/prj/SwissFEL/epics_ioc_modules/ESB_MX/python/data
|
||||
fh=np.load(fn)
|
||||
scipy.io.savemat(fn[:-3]+'mat',mdict=dict(fh.iteritems()))
|
||||
|
||||
|
||||
compensate position depenmdent friction 1.2.2017
|
||||
------------------------------------------------
|
||||
|
||||
Git tag: 3fafe53
|
||||
gpasciiCommander --host SAROP11-CPPM-MOT6871 -i
|
||||
!mx-stage()
|
||||
&1 #1->0
|
||||
&1 #2->0
|
||||
#3$
|
||||
an anschlag (kabel) bewegen
|
||||
#3hmz
|
||||
Motor[3].PhasePos=1200
|
||||
#3j/
|
||||
|
||||
./move_record.py
|
||||
abs average pos Error 2.1890901307
|
||||
|
||||
Motor[3].Servo.Kp=10
|
||||
Motor[3].Servo.Kvfb=100
|
||||
Motor[3].Servo.Kvff=100
|
||||
abs average pos Error 1.89392140871
|
||||
|
||||
/home/zamofing_t/Documents/prj/SwissFEL/epics_ioc_modules/ESB_MX/src/usrServo/usrcode.c
|
||||
line 100: c=0.f; //no friction compensation at all
|
||||
abs average pos Error 1.82212631688
|
||||
|
||||
line 85: c=0.f; //do not use friction lut
|
||||
abs average pos Error 1.47794399154
|
||||
|
||||
using friction lut:
|
||||
abs average pos Error 0.893315213359
|
||||
|
||||
But if it is put vertically, the value becomes bad again.
|
||||
check friction on vertical stage
|
||||
|
||||
average PosError to P3000 2.2.2017
|
||||
----------------------------------
|
||||
|
||||
modify programm generated by ./move_record.py:
|
||||
|
||||
open prog 2
|
||||
N0:
|
||||
linearabs
|
||||
X505.488Y7.15189
|
||||
dwell10
|
||||
pvt10abs
|
||||
X505.488:2526.97Y7.15189:-85.15309999999999
|
||||
X556.028:4937.42Y5.44883:-34.6476
|
||||
...
|
||||
X508.588:0Y954.585:0
|
||||
X508.588Y954.585
|
||||
dwell10
|
||||
goto 0
|
||||
close
|
||||
|
||||
|
||||
|
||||
|
||||
modify user servo to average PosError to P3000 2.2.2017
|
||||
tweak parameters:
|
||||
Motor[3].Servo.Kp
|
||||
Motor[3].Servo.Kvfb
|
||||
Motor[3].Servo.Ki
|
||||
Motor[3].Servo.Kvff
|
||||
Motor[3].Servo.Kaff
|
||||
|
||||
Kp = 10 10 10 10 10 10 20
|
||||
Kvfb = 220 220 220 220 220 220 220
|
||||
Ki = 0.001 0.01 0.02 0.01 0 0 0.02
|
||||
Kvff = 240 240 240 240 240 240 240
|
||||
Kaff = 0 0 0 20 1500 1500 1500
|
||||
1.3 .53 .43 0.52 1.88 0.7 0.1
|
||||
A
|
||||
|
||||
A: Higher Ki than 0.02 do not help
|
||||
|
||||
Set Ki to 0 and seek optimal Kvff
|
||||
Kvff =240 local minimum
|
||||
Kvfb =220 local minimum
|
||||
Kaff =1500 Kaff does not change the error amount, but makes the error smoother at 1500
|
||||
Kp =20 average error becomes smaller
|
||||
|
||||
|
||||
Motor[3].Servo.Kvff
|
||||
|
||||
commit after: 3fafe53
|
||||
./move_record.py
|
||||
>>>>>>>> abs average pos Error 0.353193239442 <<<<<<<
|
||||
|
||||
./shapepath.py gen_rand_points(n=400, scale=1000)
|
||||
Random path at speed:
|
||||
%100 average error x 1.32075 um, y 0.940694 um, 1.84578 um
|
||||
%50 average error x 0.336186 um, y 0.259554 um, 0.478149 um
|
||||
%25 average error x 0.177138 um, y 0.077619 um, 0.209937 um
|
||||
|
||||
|
||||
./shapepath.py gen_grid_points(w=20,h=20,pitch=50,rnd=0.2)
|
||||
Grid path at speed:
|
||||
%100 average error x 0.363065 um, y 0.314149 um, 0.536246 um
|
||||
%50 average error x 0.246374 um, y 0.0985771 um, 0.283925 um
|
||||
%25 average error x 0.150303 um, y 0.0429124 um, 0.163468 um
|
||||
|
||||
|
||||
|
||||
>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user