'TAIPAN - CONTROLLER 4 ' '$Revision:$ '$Date:$ 'Author: Daniel Bartlett 'Last revision by: $author:$ ' 'A-ANALYSER TILT 1 'B-ANALYSER TILT 2 'C-ANALYSER TRANSLATE 'D-ANALYSER ROTATE LFD@24724763 LRD@25454179 'E-VIRTUAL SOURCE LEFT, +VE OPEN, 6mm/TURN 'F-VIRTUAL SOURCE RIGHT, -VE OPEN, 6mm/TURN 'G-FILTER ROTATE 'H-PRIMARY COLLIMATOR TRANSLATE ' ' '-------------------------------------------------------------------------- #AUTO 'THIS IS THE PROGRAM THAT RUNS AUTOMATICALLY ON CONTROLLER STARTUP ' MT-2,-2,-2,-2.5,-2,-2,-2,-2;'CONFIGURES ALL AXES AS STEPPER MO;'ALL MOTORS OFF CN 1;'CONFIGURES LIMIT SWITCHES TO ACCEPT NC CONTACTS II 8,,,0;'CONFIGURES THE 8TH INPUT TO ACTIVATE THE #ININT ROUTINE OP 65280;'SETS OUTPUTS 9-16 ON = RELAYS OFF IA 137,157,203,134;'CONFIGURES IP ADDRESS AC 25000,25000,25000,25000,25000,25000,25000,25000;'SET ACELERATION DC 25000,25000,25000,25000,25000,25000,25000,25000;'SET DECELERATION SP 25000,25000,25000,25000,12500,12500,25000,12500;'SET SPEED SIA=0;'TURN OFF CLOCK PULSES TO ALLOW ENCODER TO INITIALISE SIB=0 SIC=0 SID=0 SIE=0 SIF=0 SIG=0 SIH=0 WT1000;'WAIT FOR ENCODER TO INITIALISE SIA=1,25,13,0<-13>2;'HEIDENHAIN ROQ425 SIB=1,25,13,0<-13>2;'HEIDENHAIN ROQ425 SIC=1,25,13,0<-13>2;'HEIDENHAIN ROQ425 SID=1,25,13,0<-13>2;'HEIDENHAIN ROQ425 SIE=1,24,12,0<-10>1;'RESOLVER VIA VEGA 2790 BOARD SIF=1,24,12,0<-10>1;'RESOLVER VIA VEGA 2790 BOARD SIG=1,25,13,0<-13>2;'HEIDENHAIN ROQ425 SIH=1,24,12,0<-10>1;'RESOLVER VIA VEGA 2790 BOARD LSAHIT=0;'INITIALISE THE BIT SET AFTER A LIMIT IS HIT LSBHIT=0 LSCHIT=0 LSDHIT=0 LSEHIT=0 LSFHIT=0 LSGHIT=0 LSHHIT=0 JS #THREAD0 EN ' ' '-------------------------------------------------------------------------- #THREAD0 'THERE MUST BE A THREAD RUNNING FOR #LIMSWI, #TCPERR AND #ININT TO WORK ' JS #CHKDCEL JS #CHKSPD JP #THREAD0 EN ' ' '-------------------------------------------------------------------------- #VSLMOVE 'ROUTINE TO MOVE THE VIRTUAL SOURCE RIGHT USING A CLOSED LOOP SSI POSITION ' 'E AXIS 'TPE AT LIMIT 16752106 'TPE AT BEAM CL 16773946 ' DBAND1=2 PRE=-25000*((VSLPOS-_TPE)/4096);'CALC STEPS TO DESTINATION SHE BGE AME JP #VSLMOVE, (@ABS[VSLPOS-_TPE]>DBAND1) 'JUMP BACK FOR MORE TRIES IF OUTSIDE DEADBAND1 EN ' ' '----------------------------------------------------------------------------- #VSRMOVE 'ROUTINE TO MOVE THE VIRTUAL SOURCE RIGHT USING A CLOSED LOOP SSI POSITION ' 'F AXIS 'TPF AT LIMIT 16775162 'TPF AT BEAM CL 16756735 ' DBAND2=2 PRF=-25000*((VSRPOS-_TPF)/4096);'CALC STEPS TO DESTINATION SHF BGF AMF JP #VSRMOVE, (@ABS[VSRPOS-_TPF]>DBAND2) 'JUMP BACK FOR MORE TRIES IF OUTSIDE DEADBAND2 EN ' ' '----------------------------------------------------------------------------- #CHKDCEL 'ROUTINE TO RESET DECELERATIONS AFTER A LIMIT HIT ' IF ((LSAHIT=1)&(_BGA=0));'WHEN MOTION STOPS AFTER A LIMIT HIT DCA=OLDDCA;'RESET DECEL TO OLD VALUE LSAHIT=0 ENDIF ' IF ((LSBHIT=1)&(_BGB=0)) DCB=OLDDCB LSBHIT=0 ENDIF ' IF ((LSCHIT=1)&(_BGC=0)) DCC=OLDDCC LSCHIT=0 ENDIF ' IF ((LSDHIT=1)&(_BGD=0)) DCD=OLDDCD LSDHIT=0 ENDIF ' IF ((LSEHIT=1)&(_BGE=0)) DCE=OLDDCE LSEHIT=0 ENDIF ' IF ((LSFHIT=1)&(_BGF=0)) DCF=OLDDCF LSFHIT=0 ENDIF ' IF ((LSGHIT=1)&(_BGG=0)) DCG=OLDDCG LSGHIT=0 ENDIF ' IF ((LSHHIT=1)&(_BGH=0)) DCH=OLDDCH LSHHIT=0 ENDIF EN ' ' '-------------------------------------------------------------------------- #CHKSPD 'ROUTINE TO CHECK THE SPEED OF THE AXES IS NOT GREATER THAN MAX ALLOWED ' IF (_SPA>50000) SPA=50000 ENDIF ' IF (_SPB>50000) SPB=50000 ENDIF ' IF (_SPC>50000) SPC=50000 ENDIF ' IF (_SPD>100000) SPD=100000 ENDIF ' IF (_SPE>12500) SPE=12500 ENDIF ' IF (_SPF>12500) SPF=12500 ENDIF ' IF (_SPG>50000) SPG=50000 ENDIF ' IF (_SPH>12500) SPH=12500 ENDIF EN ' ' '-------------------------------------------------------------------------- #TCPERR 'EMPTY TCP ERROR ROUTINE ' RE ' ' '-------------------------------------------------------------------------- #ININT 'INTERUPT ROUTINE TO STOP ALL AXES 'WHEN SAFETY & INTERLOCK SYSTEM REQUESTS IT ' CN-1;'RECONFIGURES LIMITS. RESULT:ALL LIMITS SEEN AS HIT. WILL RUN #LIMSWI WT250 CN1;'SETS LIMITS BACK TO NORMAL RI ' ' '-------------------------------------------------------------------------- #CMDERR 'ROUTINE TO HANDLE COMMAND ERRORS ' ZS0 EN1 ' ' '-------------------------------------------------------------------------- #LIMSWI 'ROUTINE TO HASTEN THE DECELERATION OF AN AXIS WHEN A LIMIT SWITCH IS HIT ' IF ((_LFA=0)|(_LRA=0));'LIMIT HIT IF ((LSAHIT=0)&(_BGA=1));'STILL MOVING, FIRST TIME OLDDCA=_DCA;'REMEMBER OLD DECEL VALUE DCA=100000;'INCREASE DECEL VALUE FOR RAPID STOP LSAHIT=1 ENDIF ENDIF ' IF ((_LFB=0)|(_LRB=0)) IF ((LSÂHIT=0)&(_BGB=1)) OLDDCB=_DCB DCB=100000 LSBHIT=1 ENDIF ENDIF ' IF ((_LFC=0)|(_LRC=0)) IF ((LSCHIT=0)&(_BGC=1)) OLDDCC=_DCC DCC=100000 LSCHIT=1 ENDIF ENDIF ' IF ((_LFD=0)|(_LRD=0)) IF ((LSDHIT=0)&(_BGD=1)) OLDDCD=_DCD DCD=100000 LSDHIT=1 ENDIF ENDIF ' IF ((_LFE=0)|(_LRE=0)) IF ((LSEHIT=0)&(_BGE=1)) OLDDCE=_DCE DCE=50000 LSEHIT=1 ENDIF ENDIF ' IF ((_LFF=0)|(_LRF=0)) IF ((LSFHIT=0)&(_BGF=1)) OLDDCF=_DCF DCF=50000 LSFHIT=1 ENDIF ENDIF ' IF ((_LFG=0)|(_LRG=0)) IF ((LSGHIT=0)&(_BGG=1)) OLDDCG=_DCG DCG=100000 LSGHIT=1 ENDIF ENDIF ' IF ((_LFH=0)|(_LRH=0)) IF ((LSHHIT=0)&(_BGH=1)) OLDDCH=_DCH DCH=100000 LSHHIT=1 ENDIF ENDIF RE ' '