working so far. have to test helicalscan also on the real system
This commit is contained in:
118
cfg/MX1_home.cfg
118
cfg/MX1_home.cfg
@@ -5,12 +5,11 @@ statusHoming=0
|
||||
//statusHoming:
|
||||
// 1: M1 phased
|
||||
// 2: M2 phased
|
||||
// 4: M1 homed
|
||||
// 8: M2 homed
|
||||
// 16: M1 neg limit
|
||||
// 32: M2 neg limit
|
||||
// 64: homing done
|
||||
// 128: homing failed
|
||||
// 4: M1 pos limit found
|
||||
// 8: M2 pos limit found
|
||||
// 16: M1 homed
|
||||
// 32: M2 homed
|
||||
// 256: homing failed
|
||||
|
||||
|
||||
open plc PLC_Homing
|
||||
@@ -33,46 +32,95 @@ open plc PLC_Homing
|
||||
|
||||
Motor[1].PhaseFindingStep=1
|
||||
Motor[2].PhaseFindingStep=1
|
||||
timer = Sys.RunTime + 1;while (Sys.RunTime < timer){} //wait 1 sec
|
||||
|
||||
Motor[1].HomeVel=2
|
||||
Motor[2].HomeVel=2
|
||||
|
||||
home1
|
||||
home2
|
||||
timer = Sys.RunTime + 1;while (Sys.RunTime < timer){} //wait 1 sec
|
||||
statusHoming|=1
|
||||
while(1)
|
||||
while(Motor[1].PhaseFindingStep>0 || Motor[2].PhaseFindingStep>0){}
|
||||
if (Motor[1].PhaseFound==1)
|
||||
{
|
||||
if(Motor[1].FeFatal && (statusHoming&2)==0)
|
||||
{
|
||||
statusHoming=statusHoming|2
|
||||
Motor[1].HomeVel=-Motor[1].HomeVel
|
||||
home1
|
||||
}
|
||||
if(Motor[2].HomeInProgress==0 && (statusHoming&4)==0)
|
||||
{
|
||||
statusHoming=statusHoming|4
|
||||
Motor[2].HomeVel=-Motor[2].HomeVel
|
||||
home2
|
||||
}
|
||||
if(Motor[1].HomeInProgress==0 && Motor[1].HomeInProgress==0)
|
||||
{
|
||||
statusHoming=statusHoming|8
|
||||
break
|
||||
}
|
||||
statusHoming|=1
|
||||
cmd "#1j/"
|
||||
send 1"phasing Y_Achse ok\n"
|
||||
}
|
||||
else
|
||||
{
|
||||
send 1"phasing Y Achsde error!\n"
|
||||
goto 0 //ERROR_END
|
||||
}
|
||||
if (Motor[2].PhaseFound==1)
|
||||
{
|
||||
statusHoming|=2
|
||||
cmd "#2j/"
|
||||
send 1"phasing X_Achse ok\n"
|
||||
}
|
||||
else
|
||||
{
|
||||
send 1"phasing X Achse error!\n"
|
||||
statusHoming|=256
|
||||
goto 0 //ERROR_END
|
||||
}
|
||||
|
||||
Motor[1].PhasePos=560 // 555 581 593 558
|
||||
Motor[2].PhasePos=1540 //1549 1531 1543 1537
|
||||
|
||||
//move until FeWarn
|
||||
Motor[1].JogSpeed=6
|
||||
Motor[2].JogSpeed=6
|
||||
timer = Sys.RunTime + .5;while (Sys.RunTime < timer){} //wait .5 sec
|
||||
jog+1
|
||||
jog+2
|
||||
while(1)
|
||||
{
|
||||
if(Motor[1].FeWarn && (statusHoming&4)==0)
|
||||
{
|
||||
cmd "#1j/"
|
||||
send 1"Y_Achse +limit\n"
|
||||
statusHoming|=4
|
||||
}
|
||||
if(Motor[2].FeWarn && (statusHoming&8)==0)
|
||||
{
|
||||
cmd "#2j/"
|
||||
send 1"X_Achse +limit\n"
|
||||
statusHoming|=8
|
||||
}
|
||||
if((statusHoming&12)==12)
|
||||
break
|
||||
}
|
||||
timer = Sys.RunTime + .5;while (Sys.RunTime < timer){} //wait .5 sec
|
||||
|
||||
Motor[1].HomeVel=-3
|
||||
Motor[2].HomeVel=-3
|
||||
home1
|
||||
home2
|
||||
timer = Sys.RunTime + .5;while (Sys.RunTime < timer){} //wait .5 sec
|
||||
while(Motor[1].HomeInProgress || Motor[2].HomeInProgress){}
|
||||
|
||||
if(Motor[1].HomeComplete)
|
||||
statusHoming=statusHoming|16
|
||||
else
|
||||
{
|
||||
statusHoming|=256
|
||||
send 1"Y_Achse home failed\n"
|
||||
}
|
||||
|
||||
if(Motor[2].HomeComplete)
|
||||
statusHoming=statusHoming|32
|
||||
else
|
||||
{
|
||||
statusHoming|=256
|
||||
send 1"X_Achse home failed\n"
|
||||
}
|
||||
|
||||
//Motor[1].PhasePos=560 // 555 581 593 558
|
||||
//Motor[2].PhasePos=1540 //1549 1531 1543 1537
|
||||
goto 1
|
||||
|
||||
N0: //ERROR_END
|
||||
statusHoming|=256
|
||||
|
||||
N1: //ENDPLC
|
||||
Motor[1].MaxDac=L10
|
||||
Motor[1].FatalFeLimit=L11
|
||||
Motor[1].JogSpeed=L12
|
||||
Motor[2].MaxDac=L20
|
||||
Motor[2].FatalFeLimit=L21
|
||||
Motor[2].JogSpeed=L22
|
||||
send 1"homeing done\n"
|
||||
|
||||
disable plc PLC_Homing
|
||||
close
|
||||
|
||||
@@ -1,32 +1,6 @@
|
||||
//simulated stage without real motors needed
|
||||
//simulated 8 motors without needing real ones
|
||||
$$$***
|
||||
!common()
|
||||
//!common(PhaseFreq=20000,PhasePerServo=4)
|
||||
//!common(PhaseFreq=20000,PhasePerServo=1)
|
||||
//!common(PhaseFreq=40000)
|
||||
|
||||
//Mot 1: Rotation stage LS Mecapion MDM-DC06DNC0H 32 poles = 1 rev = 16*2048=32768 phase_step
|
||||
//Enc 1: Rotation stage LS Mecapion 1 rev = 1048576 enc_steps
|
||||
|
||||
//Mot 2: Stage Y Parker MX80L D11 25mm one pole cycle = 13mm = 2048 phase_step
|
||||
//Enc 2: Stage Y Parker MX80L D11 inc_enc 20nm one pole cycle = 13mm = 650000 enc_step (20nm/enc_step)
|
||||
|
||||
//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/Enc 4: camera base plate X
|
||||
// OBSOLETE: Enc 4: Interferometer 1
|
||||
|
||||
//Mot/Enc 5: camera base plate Y
|
||||
// OBSOLETE Enc 5: Interferometer 2
|
||||
|
||||
//Mot 6: Backlight 2.3A
|
||||
|
||||
//Mot 7: Stada Stepper: 670mA 200 poles 1 rev = 100*2048 phase_step (2 stepper motor)
|
||||
//Enc 7: Renishaw absolute BiSS
|
||||
|
||||
//Mot 8: Stada Stepper: 670mA 200 poles 1 rev = 100*2048 phase_step (2 stepper motor)
|
||||
//Enc 8: Renishaw absolute BiSS
|
||||
|
||||
//use some step and direction lines to setup simulate motors
|
||||
// /afs/psi.ch/user/h/humar_t/public/Modules/XMI/cfg/xmi.cfg
|
||||
@@ -63,5 +37,6 @@ Motor[7].pLimits=0;Motor[7].AmpFaultLevel=0;Motor[7].pAmpEnable=0;Motor[7].pAmpF
|
||||
!motor(mot=8,dirCur=0,contCur=100,peakCur=1000,timeAtPeak=1,JogSpeed=8.,numPhase=3,invDir=True)
|
||||
Motor[8].pLimits=0;Motor[8].AmpFaultLevel=0;Motor[8].pAmpEnable=0;Motor[8].pAmpFault=0
|
||||
|
||||
|
||||
!coordTrf()
|
||||
Motor[3].JogSpeed=1000 # used for joging
|
||||
Motor[3].MaxSpeed=1000 # used for motion program
|
||||
#1..8j/
|
||||
|
||||
Reference in New Issue
Block a user