cleanup (removing test servo motors) and add interferometer
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user