NO TE: ECHIDNA - CONTROLLER 3 NO TE: NO TE: $Revision: 1.7 $ NO TE: $Date: 2007-01-31 03:38:33 $ NO TE: Author: Dan Bartlett NO TE: Limit switch HOME routine added by Ferdi Franceschini NO TE: Last revision by: $Author: dbx $ NO TE: NO TE: A-MONOCHROMATOR FOCUS NO TE: B-SPARE NO TE: C-SPARE NO TE: D-SPARE NO TE: E-SLIT 1 LEFT BLADE (ss1l) NO TE: F-SLIT 1 RIGHT BLADE (ss1r) NO TE: G-SLIT 1 TOP BLADE (ss1u) NO TE: H-SLIT 1 BOTTOM BLADE (ss1d) NO ---------------------------------------- #AUTO NO TE: THIS IS THE PROGRAM THAT RUNS AUTOMATICALLY ON CONTROLLER STARTUP MT-2,-2,-2,-2,-2,-2,-2,-2;'CONFIGURES ALL AXES AS STEPPER MO;' FIRST TIME MOTOR OFF CN 1;' CONFIGURES LIMIT SWITCHES TO ACCEPT NC CONTACTS II 8,,,0;' CONFIGURES THE 8TH INPUT TO ACTIVATE THE #ININT ROUTINE IA 137,157,201,5;' CONFIGURES IP ADDRESS AC 12500,,,,60000,60000,60000,60000;' SET ACELERATION DC 12500,,,,60000,60000,60000,60000;' SET DECELERATION SP 25000,,,,30000,30000,30000,30000;' SET SPEED HOMERUN=0;' HOMING PROCEDURE HAS NOT BEEN RUN JS #THREAD0 EN NO ---------------------------------------- #THREAD0 NO TE: THERE MUST BE A THREAD RUNNING FOR #LIMSWI, #TCPERR AND #ININT TO WORK NO TE: CHECKS IF SPEEDS ARE ABOVE MAXIMUM ALLOWED IF (_SPA>25000) SPA=25000 ENDIF NO IF (_SPB>50000) AXES NOT IN USE, COMMENTED OUT NO SPB=50000 NO ENDIF NO IF (_SPC>50000) NO SPC=50000 NO ENDIF NO IF (_SPD>50000) NO SPD=50000 NO ENDIF IF (_SPE>30000) SPE=30000 ENDIF IF (_SPF>30000) SPF=30000 ENDIF IF (_SPG>30000) SPG=30000 ENDIF IF (_SPH>30000) SPH=30000 ENDIF JP#THREAD0 EN NO ---------------------------------------- #RES NO TE: PROCEDURE TO UPDATE THE RESOLVER FEEDBACK. NO TE: MUST BE EXCUTED EACH TIME FOR AN UPDATE SB1 CB1;' OUTPUT WITH FALLING EDGE TO TRIGGER EMPIRE RESOLVER BOX AI31;' LOCK DATA IOBYTE1=_TI2;' LOAD FIRST WORD IOBYTE2=_TI3;' LOAD SECOND WORD IOBYTE2=(IOBYTE2&63);' MASK OUT XBUSY BIT IOBYTE2=(IOBYTE2*256);' SHIFT REMAINING BITS 8 POSITIONS TO RIGHT FOCUS=(IOBYTE1+IOBYTE2);' ADD WORDS TOGETHER, READ FOCUS VARIABLE FOR DATA SB1 EN NO ---------------------------------------- #TCPERR NO TE: EMPTY ROUTINE FOR A TCP ERROR RE NO ---------------------------------------- #ININT NO TE: INTERUPT ROUTINE TO STOP ALL AXES NO TE: WHEN SAFETY & INTERLOCK SYSTEM REQUESTS IT STA,B,C,D,E,F,G,H AM MO RI NO ---------------------------------------- #HOME IF (HOMERUN = 1) JP #ENDHOME ENDIF NO TE: MOVE SLIT FORWARD 10MM IF IT IS AGAINST THE REVERSE LIMIT SWITCH IF ((_TSE & 4) = 0) SHE PRE=200000 BGE ENDIF NO TE: MOVE SLIT FORWARD 10MM IF IT IS AGAINST THE REVERSE LIMIT SWITCH IF ((_TSF & 4) = 0) SHF PRF=200000 BGF ENDIF NO TE: MOVE SLIT FORWARD 10MM IF IT IS AGAINST THE REVERSE LIMIT SWITCH IF ((_TSG & 4) = 0) SHG PRG=200000 BGG ENDIF NO TE: MOVE SLIT FORWARD 10MM IF IT IS AGAINST THE REVERSE LIMIT SWITCH IF ((_TSH & 4) = 0) SHH PRH=200000 BGH ENDIF AMEFGH NO TE: DRIVE ALL SLITS INTO REVERSE LIMIT SWITCH SHEFGH JG ,,,,-25000,-25000,-25000,-25000 BGEFGH AMEFGH NO TE: MOVE AWAY FROM SWITCHES BY 2MM AND DRIVE BACK SLOWLY PR ,,,,80000,80000,80000,80000 BGEFGH AMEFGH JG,,,,-5000,-5000,-5000,-5000 BGEFGH AMEFGH NO TE: MOVE FORWARD FROM SWITCH BY 2MM AND SET ZERO PR ,,,,40000,40000,40000,40000 BGEFGH AMEFGH DP ,,,,0,0,0,0 SP ,,,,30000,30000,30000,30000 HOMERUN=1;'HOMING PROCEDURE HAS BEEN RUN #ENDHOME EN