wip 5cam mover
This commit is contained in:
@@ -1,50 +1,96 @@
|
||||
//5 simulated cam movers
|
||||
//the motor has 512*200*100 usteps per revolution (512 uystep/step, 200 steps/rev 1:100 gear)
|
||||
//the ssi-encoder has 2**18=262144 steps per revolution
|
||||
//calibration values such that 0 mdeg is the highest point (+5mm) and 180000mdeg = lowest point (-5mm)
|
||||
//#1: homeoffset: -20907.5928142
|
||||
//#2: homeoffset: 102320.329068
|
||||
//#3: homeoffset: 168946.772022
|
||||
//#4: homeoffset: -87830.7554146
|
||||
//#5: homeoffset: -47956.2759182
|
||||
|
||||
!encoder_ssi(enc=1,numBits=18,posSf=5625./4096.)
|
||||
!motor(mot=1,dirCur=1000,JogSpeed=40,servoSf=256./9.,InPosBand=0,FatalFeLimit=1000,HomeOffset=-20907.)
|
||||
|
||||
!encoder_ssi(enc=2,numBits=18,posSf=5625./4096.)
|
||||
!motor(mot=2,dirCur=1000,JogSpeed=40,servoSf=256./9.,InPosBand=0,FatalFeLimit=1000,HomeOffset=102320.)
|
||||
|
||||
!encoder_ssi(enc=3,numBits=18,posSf=5625./4096.)
|
||||
!motor(mot=3,dirCur=1000,JogSpeed=40,servoSf=256./9.,InPosBand=0,FatalFeLimit=1000,HomeOffset=168946.)
|
||||
|
||||
!encoder_ssi(enc=4,numBits=18,posSf=5625./4096.)
|
||||
!motor(mot=4,dirCur=1000,JogSpeed=40,servoSf=256./9.,InPosBand=0,FatalFeLimit=1000,HomeOffset=-87830.)
|
||||
|
||||
!encoder_ssi(enc=5,numBits=18,posSf=5625./4096.)
|
||||
!motor(mot=5,dirCur=1000,JogSpeed=40,servoSf=256./9.,InPosBand=0,FatalFeLimit=1000,HomeOffset=-47956.)
|
||||
|
||||
|
||||
!encoder_sim(enc=1,tbl=1,mot=1)
|
||||
!motor(mot=1,dirCur=0,contCur=100,peakCur=100,timeAtPeak=1,JogSpeed=8.,numPhase=3,invDir=True)
|
||||
Motor[1].pLimits=0;Motor[1].AmpFaultLevel=0;Motor[1].pAmpEnable=0;Motor[1].pAmpFault=0
|
||||
define(SP_RelBrk='15',SP_LockBrk='16')
|
||||
|
||||
!encoder_sim(enc=2,tbl=2,mot=2)
|
||||
!motor(mot=2,dirCur=0,contCur=100,peakCur=1000,timeAtPeak=1,JogSpeed=8.,numPhase=3,invDir=True)
|
||||
Motor[2].pLimits=0;Motor[2].AmpFaultLevel=0;Motor[2].pAmpEnable=0;Motor[2].pAmpFault=0
|
||||
// ---------- Custom Motion Programs ----------
|
||||
|
||||
!encoder_sim(enc=3,tbl=3,mot=3)
|
||||
!motor(mot=3,dirCur=0,contCur=100,peakCur=1000,timeAtPeak=1,JogSpeed=8.,numPhase=3,invDir=True)
|
||||
Motor[3].pLimits=0;Motor[3].AmpFaultLevel=0;Motor[3].pAmpEnable=0;Motor[3].pAmpFault=0
|
||||
!cm_prem_post(ax=1,prem=15,post=16) //generates subprog 10,11,12,13
|
||||
!cm_prem_post(ax=2,prem=15,post=16) //generates subprog 20,21,22,23
|
||||
!cm_prem_post(ax=3,prem=15,post=16) //generates subprog 30,31,32,33
|
||||
!cm_prem_post(ax=4,prem=15,post=16) //generates subprog 40,41,42,43
|
||||
!cm_prem_post(ax=5,prem=15,post=16) //generates subprog 40,41,42,43
|
||||
|
||||
!encoder_sim(enc=4,tbl=4,mot=4)
|
||||
!motor(mot=4,dirCur=0,contCur=100,peakCur=1000,timeAtPeak=1,JogSpeed=8.,numPhase=3,invDir=True)
|
||||
Motor[4].pLimits=0;Motor[4].AmpFaultLevel=0;Motor[4].pAmpEnable=0;Motor[4].pAmpFault=0
|
||||
!cm_prem_post(ax='X',axid=9,prem=15,post=16) //generates subprog 90,91,92,93
|
||||
!cm_prem_post(ax='Y',axid=10,prem=15,post=16) //generates subprog 100,101,102,103
|
||||
!cm_prem_post(ax='U',axid=11,prem=15,post=16) //generates subprog 110,111,112,113
|
||||
!cm_prem_post(ax='V',axid=12,prem=15,post=16) //generates subprog 120,121,122,123
|
||||
!cm_prem_post(ax='W',axid=13,prem=15,post=16) //generates subprog 120,121,122,123
|
||||
|
||||
!encoder_sim(enc=5,tbl=5,mot=5)
|
||||
!motor(mot=5,dirCur=0,contCur=100,peakCur=1000,timeAtPeak=1,JogSpeed=8.,numPhase=3,invDir=True)
|
||||
Motor[5].pLimits=0;Motor[5].AmpFaultLevel=0;Motor[5].pAmpEnable=0;Motor[5].pAmpFault=0
|
||||
// ---------- PREM POST Programs ----------
|
||||
|
||||
//prem
|
||||
open subprog SP_RelBrk
|
||||
define(EndTime='L1'); // Local variable
|
||||
Motor[1].IdCmd=1000;Motor[1].InPosBand=2
|
||||
Motor[2].IdCmd=1000;Motor[2].InPosBand=2
|
||||
Motor[3].IdCmd=1000;Motor[3].InPosBand=2
|
||||
Motor[4].IdCmd=1000;Motor[4].InPosBand=2
|
||||
Motor[5].IdCmd=1000;Motor[5].InPosBand=2
|
||||
PowerBrick[1].GpioData[0].16.5=$1f
|
||||
//send 1"wait\n"
|
||||
//EndTime = Sys.Time + .1; // time + 10 sec.
|
||||
//while (EndTime > Sys.Time){}
|
||||
//send 1"wait done\n"
|
||||
close
|
||||
|
||||
//post
|
||||
open subprog SP_LockBrk
|
||||
define(EndTime='L1'); // Local variable
|
||||
//wait until all motors are in pos
|
||||
EndTime = Sys.Time + 10; // time + 10 sec.
|
||||
//send 1"wait."
|
||||
while (EndTime > Sys.Time)
|
||||
{
|
||||
if(Coord[1].InPos)
|
||||
{
|
||||
send 1"inPos\n"
|
||||
break
|
||||
}
|
||||
//if(Motor[1].InPos && Motor[2].InPos&& Motor[3].InPos&& Motor[4].InPos&& Motor[5].InPos)
|
||||
// break
|
||||
//send 1"."
|
||||
}
|
||||
//send 1"done\n"
|
||||
|
||||
Motor[1].IdCmd=0;Motor[1].InPosBand=10
|
||||
Motor[2].IdCmd=0;Motor[2].InPosBand=10
|
||||
Motor[3].IdCmd=0;Motor[3].InPosBand=10
|
||||
Motor[4].IdCmd=0;Motor[4].InPosBand=10
|
||||
Motor[5].IdCmd=0;Motor[5].InPosBand=10
|
||||
PowerBrick[1].GpioData[0].16.5=$0
|
||||
close
|
||||
|
||||
|
||||
// //NEW:
|
||||
// //the motor has 512*200*100 usteps per revolution (512 uystep/step, 200 steps/rev 1:100 gear)
|
||||
// //the ssi-encoder has 2**18=262144 steps per revolution
|
||||
// //motor_u_steps/inc_enc_step=39.0625
|
||||
// //JogSpeed=102.4 ustep/ms=102400ustep/s = 512*200= 1 rev/sec
|
||||
// posSf : position scale factor: encoder position to motor u-steps, 1 motor step is 512 motor u-steps
|
||||
// motor_u_steps=posSf*encoder_steps -> posSf = motor_u_steps/encoder_steps
|
||||
// default is 1.0 (1 motor_u_steps = 1 encoder_steps)
|
||||
//for motor #2
|
||||
//PowerBrick[0].GpioData[0].17=1
|
||||
//#2j:360000
|
||||
//PowerBrick[0].GpioData[0].17=0
|
||||
//#2k
|
||||
//!cm_brake(mot=2,curOn=1000,cs=1,delay=200,gpio=17)
|
||||
|
||||
|
||||
// !encoder_ssi(enc=1,numBits=18,posSf=39.0625)
|
||||
// !encoder_ssi(enc=2,numBits=18,posSf=39.0625)
|
||||
// !encoder_ssi(enc=3,numBits=18,posSf=39.0625)
|
||||
// !encoder_ssi(enc=4,numBits=18,posSf=39.0625)
|
||||
// !encoder_ssi(enc=5,numBits=18,posSf=39.0625)
|
||||
|
||||
// !motor(mot=1,dirCur=600,JogSpeed=102.4)
|
||||
// !motor(mot=2,dirCur=600,JogSpeed=102.4)
|
||||
// !motor(mot=3,dirCur=600,JogSpeed=102.4)
|
||||
// !motor(mot=4,dirCur=600,JogSpeed=102.4)
|
||||
// !motor(mot=5,dirCur=600,JogSpeed=102.4)
|
||||
|
||||
// !cm_brake(mot=1,curOn=600,cs=1,delay=200,gpio=16)
|
||||
// !cm_brake(mot=2,curOn=600,cs=1,delay=200,gpio=17)
|
||||
// !cm_brake(mot=3,curOn=600,cs=1,delay=200,gpio=18)
|
||||
// !cm_brake(mot=4,curOn=600,cs=1,delay=200,gpio=19)
|
||||
// !cm_brake(mot=5,curOn=600,cs=1,delay=200,gpio=20)
|
||||
|
||||
19
cfg/MX3_setup_sim.cfg
Normal file
19
cfg/MX3_setup_sim.cfg
Normal file
@@ -0,0 +1,19 @@
|
||||
!encoder_sim(enc=1,tbl=1,mot=1)
|
||||
!motor(mot=1,dirCur=0,contCur=100,peakCur=100,timeAtPeak=1,JogSpeed=100.,numPhase=3,invDir=True)
|
||||
Motor[1].pLimits=0;Motor[1].AmpFaultLevel=0;Motor[1].pAmpEnable=0;Motor[1].pAmpFault=0
|
||||
|
||||
!encoder_sim(enc=2,tbl=2,mot=2)
|
||||
!motor(mot=2,dirCur=0,contCur=100,peakCur=1000,timeAtPeak=1,JogSpeed=100.,numPhase=3,invDir=True)
|
||||
Motor[2].pLimits=0;Motor[2].AmpFaultLevel=0;Motor[2].pAmpEnable=0;Motor[2].pAmpFault=0
|
||||
|
||||
!encoder_sim(enc=3,tbl=3,mot=3)
|
||||
!motor(mot=3,dirCur=0,contCur=100,peakCur=1000,timeAtPeak=1,JogSpeed=100.,numPhase=3,invDir=True)
|
||||
Motor[3].pLimits=0;Motor[3].AmpFaultLevel=0;Motor[3].pAmpEnable=0;Motor[3].pAmpFault=0
|
||||
|
||||
!encoder_sim(enc=4,tbl=4,mot=4)
|
||||
!motor(mot=4,dirCur=0,contCur=100,peakCur=1000,timeAtPeak=1,JogSpeed=100.,numPhase=3,invDir=True)
|
||||
Motor[4].pLimits=0;Motor[4].AmpFaultLevel=0;Motor[4].pAmpEnable=0;Motor[4].pAmpFault=0
|
||||
|
||||
!encoder_sim(enc=5,tbl=5,mot=5)
|
||||
!motor(mot=5,dirCur=0,contCur=100,peakCur=1000,timeAtPeak=1,JogSpeed=100.,numPhase=3,invDir=True)
|
||||
Motor[5].pLimits=0;Motor[5].AmpFaultLevel=0;Motor[5].pAmpEnable=0;Motor[5].pAmpFault=0
|
||||
@@ -1,5 +1,32 @@
|
||||
|
||||
!MX3_setup()
|
||||
//!MX3_setup_sim() // comment out !MX3_setup() when this is active
|
||||
//!MX3_home()
|
||||
//using 360000 for 1 rev. -> 1.7453292519943296e-05=np.pi/180000
|
||||
!MX3_coordTrf(exc=1000,height=2000,width=3000,length=4000,camSf=1.7453292519943296e-05)
|
||||
//excentricity= 5mm
|
||||
//height = 2mm ?
|
||||
//width = 50cm ?
|
||||
//length = 100cm ?
|
||||
!MX3_coordTrf(exc=5000,height=2000,width=500000,length=1000000,camSf=1.7453292519943296e-05)
|
||||
|
||||
|
||||
Coord[1].Ta=10
|
||||
Coord[1].Td=10
|
||||
Coord[1].AltFeedRate=1000
|
||||
Coord[1].Tm=-10000 //1000um/FeedTime -> 1mm/sec
|
||||
Coord[1].FeedTime=1000 //default value 1000um
|
||||
|
||||
|
||||
Motor[1].InPosBand=10
|
||||
Motor[2].InPosBand=10
|
||||
Motor[3].InPosBand=10
|
||||
Motor[4].InPosBand=10
|
||||
Motor[5].InPosBand=10
|
||||
|
||||
#1..5hmz
|
||||
#1..5j/
|
||||
&1
|
||||
cpx call 16 //lock brakes, motor current off
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//simulated 8 motors without needing real ones
|
||||
$$$***
|
||||
!common()
|
||||
//$$$***
|
||||
//!common()
|
||||
|
||||
//use some step and direction lines to setup simulate motors
|
||||
// /afs/psi.ch/user/h/humar_t/public/Modules/XMI/cfg/xmi.cfg
|
||||
|
||||
Reference in New Issue
Block a user