tuning Servo Parameters of XY stage without load and horizontal on the table

This commit is contained in:
2017-02-03 11:40:31 +01:00
parent 3fafe53c39
commit ebad56c0d1
12 changed files with 1219 additions and 15 deletions

View File

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