working so far. have to test helicalscan also on the real system

This commit is contained in:
2018-01-04 16:04:30 +01:00
parent 57b6ff3a2c
commit e58047f2b0
8 changed files with 483 additions and 146 deletions

View File

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

View File

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