'TAIPAN - CONTROLLER 3 ' '$Revision:$ '$Date:$ 'Author: Daniel Bartlett 'Last revision by: $author:$ ' 'A-MONOCHROMATOR 1 HORIZONTAL FOCUS 'B-MONOCHROMATOR 1 VERTICAL FOCUS 'C-MONOCHROMATOR 2 HORIZONTAL FOCUS 'D-MONOCHROMATOR 2 VERTICAL FOCUS 'E-MONOCHROMATOR ROTATE 'F-SPARE 'G-SPARE 'H-SPARE ' ' '4096 COUNTS / 2 DEGREES '2048 COUNTS / DEGREE 'PG 00 DEGREES = 16034863 'PG 45 DEGREES = 16127023 '-------------------------------------------------------------------------- #AUTO 'THIS IS THE PROGRAM THAT RUNS AUTOMATICALLY ON CONTROLLER STARTUP ' MT-2,-2,-2,-2,-2.5,-2,-2,-2;'CONFIGURES ALL AXES AS STEPPER, E REVERSED 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,133;' CONFIGURES IP ADDRESS AC 6000,6000,6000,6000,25000,,,;' SET ACELERATION DC 6000,6000,6000,6000,25000,,,;' SET DECELERATION SP 12500,12500,50000,12500,100000,,,;' 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,24,12,0<-11>1;'RESOLVER VIA VEGA 2790 BOARD SIB=1,24,12,0<-11>1;'RESOLVER VIA VEGA 2790 BOARD SIC=1,24,12,0<-11>1;'RESOLVER VIA VEGA 2790 BOARD SID=1,24,12,0<-11>1;'RESOLVER VIA VEGA 2790 BOARD SIE=1,24,12,0<-11>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 ' ' '-------------------------------------------------------------------------- #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>25000) SPA=25000 ENDIF ' IF (_SPB>25000) SPB=25000 ENDIF ' IF (_SPC>25000) SPC=25000 ENDIF ' IF (_SPD>25000) SPD=25000 ENDIF ' IF (_SPE>100000) SPE=100000 ENDIF ' 'IF (_SPF>100000) 'SPF=100000 'ENDIF ' 'IF (_SPG>50000) 'SPG=50000 'ENDIF ' 'IF (_SPH>100000) 'SPH=100000 '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 ((LSBHIT=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=200000 LSEHIT=1 ENDIF ENDIF ' 'IF ((_LFF=0)|(_LRF=0)) 'IF ((LSFHIT=0)&ยจ_BGF=1)) 'OLDDCF=_DCF 'DCF=200000 'LSFHIT=1 'ENDIF 'ENDIF ' 'IF ((_LFG=0)|(_LRG=0)) 'IF ((LSGHIT=0)&(_BGG=1)) 'OLDDCG=_DCG 'DCG=200000 'LSGHIT=1 'ENDIF 'ENDIF ' 'IF ((_LFH=0)|(_LRH=0)) 'IF ((LSHHIT=0)&(_BGH=1)) 'OLDDCH=_DCH 'DCH=200000 'LSHHIT=1 'ENDIF 'ENDIF RE ' '