NO TE: WOMBAT - CONTROLLER 3 NO TE: NO TE: $Revision: 1.3 $ NO TE: $Date: 2007-02-22 07:36:59 $ 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-MONOCHROMATOR FOCUS NO TE: C-SPARE NO TE: D-SPARE NO TE: E-SLIT 1 LEFT BLADE NO TE: F-SLIT 1 RIGHT BLADE NO TE: G-SLIT 1 TOP BLADE NO TE: H-SLIT 1 BOTTOM BLADE 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 CO 0;' CONFIGURES EXTENDED IO AS INPUTS II 8,,,0;' CONFIGURES THE 8TH INPUT TO ACTIVATE THE #ININT ROUTINE IA 137,157,201,69;' CONFIGURES IP ADDRESS AC 1250,,,,60000,60000,60000,60000;' SET ACELERATION DC 1250,,,,60000,60000,60000,60000;' SET DECELERATION SP 2500,,,,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>50000) SPA=50000 ENDIF IF (_SPB>50000) SPB=50000 ENDIF NO IF (_SPC>50000) AXES NOT USED, COMMENTED OUT 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 NO TE: THIS FOLLOWING CODE UPDATES THE RESOLVER DATA NO TE: AND LOADS IT INTO TPA WITH THE DEA= COMMAND SB1;' DRIVE INHIBIT BIT HIGH CB1;' DRIVE INHIBIT BIT LOW TO LOCK DATA AI31;' WAIT FOR XBUSY BIT IOBYTE1=_TI2;' LOAD FIRST BYTE OF DATA IOBYTE2=_TI3;' LOAD SECOND BYTE OF DATA IOBYTE2=(IOBYTE2&63);' MASK OUT XBUSY AND UNUSED BITS IOBYTE2=(IOBYTE2*256);' SHIFT REMAINING BITS 8 BITS DEA=(IOBYTE1+IOBYTE2);' ADD BYTES TOGETHER AND LOAD INTO DEA SB1;' DRIVE INHIBIT HIGH JP#THREAD0 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