cleanup (removing test servo motors) and add interferometer

This commit is contained in:
2017-04-11 10:39:24 +02:00
parent ebad56c0d1
commit 0bf383e155
5 changed files with 144 additions and 88 deletions

View File

@@ -26,16 +26,6 @@
//Mot 3: Stage X Parker MX80L D11 25mm one pole cycle = 13mm = 2048 phase_step
//Enc 3: Stage X Parker MX80L D11 inc_enc 20nm one pole cycle = 13mm = 650000 enc_step (20nm/enc_step)
//Mot 4: Test Servo: Trinamic QBL 4208 motor 8 poles 1 rev = 4*2048=8192 phase_step
//Enc 4: Test Servo: Incremental encoder mounted with motor 1 1 rev = 2000 enc count (500 inc_ quadrature encoder)
//Enc 5: Test Servo: Trinamic QBL 4208 hall sensor 1 rev = 24 enc count (hall sensor encoder)
//Mot 6: Test Stepper: Vextra PK244M 200 poles 1 rev = 100*2048 phase_step (2 stepper motor)
//Enc 6: Test Stepper: inc_enc 1 rev = 1600 enc_step
//Mot 7: Test Stepper: Vextra PK244M 200 poles 1 rev = 100*2048 phase_step (2 stepper motor)
//Enc 7: Test Stepper: ssi_enc multiturn 1 rev = 4096 enc_step
//rot stage
//---------
//use 360'000 for 360 deg as motor unit
@@ -68,7 +58,7 @@ Motor[1].pPhaseEnc=Acc84B[0].Chan[0].SerialEncDataA.a
//Stage X Parker MX80L (top stage, mounted on Y stage)
//--------------------
//----------------------------------------------------
//Motor[3].pPhaseEnc -> PowerBrick[0].Chan[1].PhaseCapt.a
// 1 el_step = 13mm = 2048 phase_step = 166400000 PhaseCapt =256*650000 (256=scaling of encTable)
// -> PhasePosSf=(2048*el_cycle)/(256*enc_step) = 8*el_cycle/enc_step =2048*1/(256*650000)=8*1/650000=1./81250=1.23077e-05
@@ -80,59 +70,8 @@ Motor[1].pPhaseEnc=Acc84B[0].Chan[0].SerialEncDataA.a
//PhaseFreq=20000,PhasePerServo=1 -> Kvfb=220*4 Ki/=4,Kvff*=4,Kaff*=4*4
!motor(mot=3,dirCur=0,contCur=800,peakCur=2400,timeAtPeak=1,IiGain=1,IpfGain=0,IpbGain=2,JogSpeed=10.,numPhase=3,invDir=True,servo=None,PhasePosSf=1./81250,PhaseFindingDac=100,PhaseFindingTime=50,SlipGain=0,AdvGain=0,PwmSf=10000,FatalFeLimit=2000,WarnFeLimit=100,InPosBand=2)
//Test Servo: Trinamic QBL 4208 motor
//-----------------------------------
//use 360 for 360 deg as motor unit
//Motor[4].pPhaseEnc -> PowerBrick[0].Chan[3].PhaseCapt.a
// 1 rev = 8192 phase_step = 512000 PhaseCapt =256*2000 (256=scaling of encTable, 2000=enc_step/rev)
// -> PhasePosSf=8192/512000 = 0.016 = (2048*el_cycle)/(256*enc_step) = 8*el_cycle/enc_step
!encoder_sim(enc=4,tbl=12,mot=12,posSf=360./8192)
!encoder_inc(enc=4,tbl=4,mot=4,posSf=360./2000) // incremental encoder
!encoder_inc(enc=5,tbl=13,mot=13,encctrl=15,posSf=360./24) //Hall sensor encoder
//!motor_servo(mot=4,ctrl='ServoCtrl',Kp=40,Kvfb=715.17053,Kvff=715.17053,Kaff=63279.855,Ki=5.9003407e-5,MaxInt=1500,MaxPosErr=1333.356) //tweaked parameters from IDE
!motor_servo(mot=4,ctrl='ServoCtrl',Kp=30.8,Kvfb=461.,Kvff=461,Kaff=3522,Ki=0.0e-5,MaxInt=1500,MaxPosErr=1333.356) //tweaked parameters from IDE
!motor(mot=4,dirCur=0,contCur=1790,peakCur=5400,timeAtPeak=.5,JogSpeed=8.,numPhase=3,servo=None,PhasePosSf=0.016,SlipGain=0,PhaseFindingTime=50.0,PhaseFindingDac=90.0)
//Further tweaks to optimize positioning
//Motor[4].Servo.BreakPosErr=4
//Motor[4].Servo.Kbreak=5
//Motor[4].Servo.OutDbOn=.2
//Motor[4].Servo.OutDbOff=.3
//Motor[4].Servo.OutDbOn=0
//Motor[4].Servo.OutDbOff=.3
//#4j:360 -> moves 1 rev
//Test Stepper: Vextra PK244M inc_enc
//-----------------------------------
//use 360 for 360 deg as motor unit
// Motor[6].pPhaseEnc -> PowerBrick[1].Chan[1].PhaseCapt.a
//3.6deg=2048 phase_step -> 360 deg= 204800 phase_step
// 1 rev = 409600 = PhaseCapt =256*1600 (256=scaling of encTable, 1600=enc_step/rev)
// -> PhasePosSf=204800/409600 = 0.5 = (2048*el_cycle)/(256*enc_step) = 32*el_cycle/enc_step
!encoder_sim(enc=6,tbl=14,mot=14,posSf=360./204800)
!encoder_inc(enc=6,tbl=6,mot=6,posSf=360./1600)
!motor_servo(mot=6,ctrl='ServoCtrl',Kp=40,Kvfb=715.17053,Kvff=715.17053,Kaff=63279.855,Ki=5.9003407e-5,MaxInt=1500,MaxPosErr=1333.356)
!motor(mot=6,dirCur=0,contCur=800,peakCur=1000,timeAtPeak=1,numPhase=2,invDir=False,servo=None,PhasePosSf=0.5,SlipGain=0,PhaseFindingTime=50.0,PhaseFindingDac=400.0)
Motor[6].JogSpeed=0.32
Motor[6].FatalFeLimit=90
//!!!!! THIS WORKS (but needs slow speed to never get out of sync! if it gets out of sync it runs in the wrong direction until following error)
//Motor[6].PhaseFindingTime=50.0;Motor[6].PhaseFindingDac=400.0 //Four Guess Phasing Search
//#6$
//Motor[6].PhaseFindingTime=260.0;Motor[6].PhaseFindingDac=400.0 //stepper-motor phasing-search
//#6$
//#6j:360 -> moves 1 rev
//the phasing is very critical with stepper motors
//Test Stepper: Vextra PK244M abs_enc
//-----------------------------------
//use 360 for 360 deg as motor unit -> JogSpeed=2048./204800*360
!encoder_sim(enc=7,tbl=7,mot=7,posSf=360./204800)
!encoder_ssi(enc=7,tbl=15,mot=15,numBits=25,posSf=360./4096)
!motor(mot=7,dirCur=100,contCur=400,peakCur=600,timeAtPeak=1,numPhase=2,invDir=False,servoSf=204800/360.,JogSpeed=3.6)
//#7j:360 -> moves 1 rev
//Interferometer 1 Stage Y Parker MX80L (bottom stage)
//----------------------------------------------------
!encoder_inc(enc=4,tbl=4,mot=4)# ,posSf=13000./650000)
!encoder_inc(enc=5,tbl=5,mot=5)# ,posSf=13000./650000)