diff --git a/site_ansto/instrument/reflectometer/DMC2280/controller1.txt b/site_ansto/instrument/reflectometer/DMC2280/controller1.txt index e116269b..04581987 100644 --- a/site_ansto/instrument/reflectometer/DMC2280/controller1.txt +++ b/site_ansto/instrument/reflectometer/DMC2280/controller1.txt @@ -1,21 +1,24 @@ -NO TE: PLATYPUS - CONTROLLER 1 -NO TE: -NO TE: $Revision: 1.10 $ -NO TE: $Date: 2008-02-03 23:41:32 $ -NO TE: Author: Dan Bartlett -NO TE: Last revision by: $Author: dcl $ -NO TE: -NO TE: A-BEAM SHADE RAISE -NO TE: B-COLLIMATOR TRANSLATE A=7350364, B=6529772, C=6941582 -NO TE: C-COLLIMATOR TILT, LEVEL=134660 -NO TE: D-BEAM ATTENUATOR, BEAM CENTRE=8375078 -NO TE: E-SLIT TOWER S3 RAISE -NO TE: F-SLIT TOWER S4 RAISE -NO TE: G-DETECTOR TRANSLATION Y (ALONG BEAM) -NO TE: H-SPARE -NO ---------------------------------------- +' PLATYPUS - CONTROLLER 1 +' +' $Revision: 1.11 $ +' $Date: 2008-04-30 01:57:55 $ +' Author: Dan Bartlett +' Last revision by: $Author: dcl $ +' +' A-BEAM SHADE RAISE +' B-COLLIMATOR TRANSLATE A=7350364, B=6529772, C=6941582 +' C-COLLIMATOR TILT, LEVEL=134660 +' D-BEAM ATTENUATOR, BEAM CENTRE=8375078 +' E-SLIT TOWER S3 RAISE +' F-SLIT TOWER S4 RAISE +' G-DETECTOR TRANSLATION Y (ALONG BEAM) +' H-SPARE +' +' +'----------------------------------------------------------------------- #AUTO -NO TE: THIS IS THE PROGRAM THAT RUNS AUTOMATICALLY ON CONTROLLER STARTUP +' 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 @@ -33,17 +36,144 @@ SIE=1,25,13,0<-2>2;'HEIDENHAIN ROQ425 SIF=1,25,13,0<-2>2;'HEIDENHAIN ROQ425 SIG=1,25,13,0<-2>2;'HEIDENHAIN ROQ425 SIH=0,25,13,0<-2>2;'SPARE -NO TE: FIRST TIME THROUGH BRAKE CONTROL NOT DONE +' FIRST TIME THROUGH BRAKE CONTROL NOT DONE REQA=0 RSPA=0 +' FIRST TIME THROUGH RESET HALT CONTROL +HLTA=0 +HLTB=0 +HLTC=0 +HLTD=0 +HLTE=0 +HLTF=0 +HLTG=0 +HLTH=0 +' FIRST TIME THROUGH RESET LIMIT CONTROL +LSAHIT=0 +LSBHIT=0 +LSCHIT=0 +LSDHIT=0 +LSEHIT=0 +LSFHIT=0 +LSGHIT=0 +LSHHIT=0 POS=0;' INITIAL BEAM ATTENUATOR FREQUENCY IS 0, PARKED IN THE BEAM XQ #ATTEN,1 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 +' MAIN THREAD +' THERE MUST BE A THREAD RUNNING FOR #LIMSWI, #TCPERR AND #ININT TO WORK +' +JS #CHKSPD +JS #CHKDCEL +JS #AIRPAD +JP #THREAD0 +EN +' +' +'----------------------------------------------------------------------- +#CHKDCEL +'ROUTINE TO RESET DECELERATION AFTER AN EMERGENCY STOP +' +IF (_BGA=0);'WHEN MOTION STOPS AFTER A LIMIT HIT +IF (LSAHIT=1);'WHEN MOTION STOPS AFTER A LIMIT HIT +DCA=OLDDCA;' RESET DECEL TO OLD VALUE +LSAHIT=0 +ENDIF +IF (HLTA=1) +HLTA=0 +ENDIF +ENDIF +' +IF (_BGB=0) +IF (LSBHIT=1) +DCB=OLDDCB +LSBHIT=0 +ENDIF +IF (HLTB=1) +HLTB=0 +ENDIF +ENDIF +' +IF (_BGC=0) +IF (LSCHIT=1) +DCC=OLDDCC +LSCHIT=0 +ENDIF +IF (HLTC=1) +HLTC=0 +ENDIF +ENDIF +' +IF (_BGD=0) +IF (LSDHIT=1) +DCD=OLDDCD +LSDHIT=0 +ENDIF +IF (HLTD=1) +HLTD=0 +ENDIF +ENDIF +' +IF (_BGE=0) +IF (LSEHIT=1) +DCE=OLDDCE +LSEHIT=0 +ENDIF +IF (HLTE=1) +HLTE=0 +ENDIF +ENDIF +' +IF (_BGF=0) +IF (LSFHIT=1) +DCF=OLDDCF +LSFHIT=0 +ENDIF +IF (HLTF=1) +HLTF=0 +ENDIF +ENDIF +' +IF (_BGG=0) +IF (LSGHIT=1) +DCG=OLDDCG +LSGHIT=0 +ENDIF +IF (HLTG=1) +HLTG=0 +ENDIF +ENDIF +' +IF (_BGH=0) +IF (LSHHIT=1) +DCH=OLDDCH +LSHHIT=0 +ENDIF +IF (HLTH=1) +HLTH=0 +ENDIF +ENDIF +' +JS #SETDCEL,((HLTA=1)&(LSAHIT=0)) +JS #SETDCEL,((HLTB=1)&(LSBHIT=0)) +JS #SETDCEL,((HLTC=1)&(LSCHIT=0)) +JS #SETDCEL,((HLTD=1)&(LSDHIT=0)) +JS #SETDCEL,((HLTE=1)&(LSEHIT=0)) +JS #SETDCEL,((HLTF=1)&(LSFHIT=0)) +JS #SETDCEL,((HLTG=1)&(LSGHIT=0)) +JS #SETDCEL,((HLTH=1)&(LSHHIT=0)) +EN +' +' +'----------------------------------------------------------------------- +#CHKSPD +' ROUTINE TO CHECK IF SPEEDS ARE ABOVE MAXIMUM ALLOWED +' IF (_SPA>50000) SPA=50000 ENDIF @@ -65,110 +195,187 @@ ENDIF IF (_SPG>50000) SPG=50000 ENDIF -NO IF (_SPH>50000) -NO SPH=50000 -NO ENDIF -NO TE: TO CONTROL THE BRAKE ON BEAM SHADE RAISE AXIS -IF (_MOA=0)&(RSPA=0);'BEAM SHADE RAISE MOTOR IS ON +IF (_SPH>50000) +SPH=50000 +ENDIF +EN +' +' +'----------------------------------------------------------------------- +#TCPERR +' EMPTY ROUTINE FOR A TCP ERROR +' +RE +' +' +'----------------------------------------------------------------------- +#CMDERR +'ROUTINE TO HANDLE COMMAND ERRORS +' +ZS0 +EN1 +' +' +'----------------------------------------------------------------------- +#ININT +' INTERUPT ROUTINE TO STOP ALL AXES +' WHEN SAFETY & INTERLOCK SYSTEM REQUESTS IT +' +STA,B,C,D,E,F,G,H +HLTA=1 +HLTB=1 +HLTC=1 +HLTD=1 +HLTE=1 +HLTF=1 +HLTG=1 +HLTH=1 +JS #SETDCEL +RI +' +' +'----------------------------------------------------------------------- +#LIMSWI +'ROUTINE TO HASTEN THE DECELERATION OF AN AXIS WHEN A LIMIT SWITCH IS HIT +' +JS #SETDCEL +RE +' +'----------------------------------------------------------------------- +#SETDCEL +'ROUTINE TO HASTEN THE DECELERATION OF AN AXIS +' +IF (_BGA=1) +IF (((_SCA=2)&(_LFA=0))|((_SCA=3)&(_LRA=0))|(HLTA=1)) +STA +IF (LSAHIT=0) +OLDDCA=_DCA +DCA=100000 +LSAHIT=1 +ENDIF +ENDIF +ENDIF +' +IF (_BGB=1) +IF (((_SCB=2)&(_LFB=0))|((_SCB=3)&(_LRB=0))|(HLTB=1)) +STB +IF (LSBHIT=0) +OLDDCB=_DCB +DCB=100000 +LSBHIT=1 +ENDIF +ENDIF +ENDIF +' +IF (_BGC=1) +IF (((_SCC=2)&(_LFC=0))|((_SCC=3)&(_LRC=0))|(HLTC=1)) +STC +IF (LSCHIT=0) +OLDDCC=_DCC +DCC=100000 +LSCHIT=1 +ENDIF +ENDIF +ENDIF +' +IF (_BGD=1) +IF (((_SCD=2)&(_LFD=0))|((_SCD=3)&(_LRD=0))|(HLTD=1)) +STD +IF (LSDHIT=0) +OLDDCD=_DCD +DCD=100000 +LSDHIT=1 +ENDIF +ENDIF +ENDIF +' +IF (_BGE=1) +IF (((_SCE=2)&(_LFE=0))|((_SCE=3)&(_LRE=0))|(HLTE=1)) +STE +IF (LSEHIT=0) +OLDDCE=_DCE +DCE=150000 +LSEHIT=1 +ENDIF +ENDIF +ENDIF +' +IF (_BGF=1) +IF (((_SCF=2)&(_LFF=0))|((_SCF=3)&(_LRF=0))|(HLTF=1)) +STF +IF (LSFHIT=0) +OLDDCF=_DCF +DCF=150000 +LSFHIT=1 +ENDIF +ENDIF +ENDIF +' +IF (_BGG=1) +IF (((_SCG=2)&(_LFG=0))|((_SCG=3)&(_LRG=0))|(HLTG=1)) +STG +IF (LSGHIT=0) +OLDDCG=_DCG +DCG=100000 +LSGHIT=1 +ENDIF +ENDIF +ENDIF +' +IF (_BGH=1) +IF (((_SCH=2)&(_LFH=0))|((_SCH=3)&(_LRH=0))|(HLTH=1)) +STH +IF (LSHHIT=0) +OLDDCH=_DCH +DCH=100000 +LSHHIT=1 +ENDIF +ENDIF +ENDIF +' +EN +' +' +'----------------------------------------------------------------------- +#AIRPAD +' ROUTINE TO CONTROL THE BRAKE ON BEAM SHADE RAISE AXIS +IF (_MOA=0)&(RSPA=0);'MOTOR IS ON REQA=1 ENDIF -IF (_MOA=1)&(RSPA=1);'BEAM SHADE RAISE MOTOR IS ON +IF (_MOA=1)&(RSPA=1);'MOTOR IS OFF REQA=0 ENDIF -IF (REQA=1)&(RSPA=0);'BEAM SHADE RAISE MOTOR IS REQUIRED +' +IF (REQA=1)&(RSPA=0);'MOTOR IS REQUIRED SHA -WT 200 +WT 200;' WAIT FOR MOTOR TO STABILISE CB 9;'RELAY ON = BRAKE COIL ENERGISED = BRAKE DISENGAGED WT 300 RSPA=1 ENDIF -IF (REQA=0)&(RSPA=1);'BEAM SHADE RAISE MOTOR IS NOT REQUIRED +IF (REQA=0)&(RSPA=1);'MOTOR IS NOT REQUIRED SB 9;'RELAY OFF = BRAKE COIL DE-ENERGISED = BRAKE ENGAGED WT 400 MOA WT 100 RSPA=0 ENDIF -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 ---------------------------------------- -#LIMSWI -NO TE: LIMIT SWITCH ROUTINE WHICH SHORTENS DECEL TIME WHEN A LIMIT IS HIT -OLDDCA=_DCA;' REMEMBERS CURRENT DECEL -OLDDCB=_DCB -OLDDCC=_DCC -OLDDCD=_DCD -OLDDCE=_DCE -OLDDCF=_DCF -OLDDCG=_DCG -NO OLDDCH=_DCH -IF (_LFA = 0) | (_LRA = 0) -DCA=100000;' DECEL FOR LIMIT HIT OCCURENCE -STA -ENDIF -IF (_LFB = 0) | (_LRB = 0) -DCB=100000;' DECEL FOR LIMIT HIT OCCURENCE -STB -ENDIF -IF (_LFC = 0) | (_LRC = 0) -DCC=100000;' DECEL FOR LIMIT HIT OCCURENCE -STC -ENDIF -IF (_LFD = 0) | (_LRD = 0) -DCD=100000;' DECEL FOR LIMIT HIT OCCURENCE -STD -ENDIF -IF (_LFE = 0) | (_LRE = 0) -DCE=150000;' DECEL FOR LIMIT HIT OCCURENCE -STE -ENDIF -IF (_LFF = 0) | (_LRF = 0) -DCF=150000;' DECEL FOR LIMIT HIT OCCURENCE -STF -ENDIF -IF (_LFG = 0) | (_LRG = 0) -DCG=100000;' DECEL FOR LIMIT HIT OCCURENCE -STG -ENDIF -NO IF (_LFH = 0) | (_LRH = 0) -NO DCH=100000;' DECEL FOR LIMIT HIT OCCURENCE -NO STH -NO ENDIF -AM ABCDEFGH;' AFTER ALL AXES STOPPED -DCA=OLDDCA;' RESET DECEL TO OLD VALUE -DCB=OLDDCB -DCC=OLDDCC -DCD=OLDDCD -DCE=OLDDCE -DCF=OLDDCF -DCG=OLDDCG -NO DCH=OLDDCH -RE -NO ---------------------------------------- +' +' +'----------------------------------------------------------------------- #ATTEN -NO TE: THIS IS A PROGRAM FOR CONTROLING THE BEAM ATTENUATOR -NO TE: ITS STATE IS SET BY THE VARIABLE POS -NO TE: IF POS=-1 THEN ITS OUT OF THE BEAM -NO TE: IF POS=0 THEN ITS IN THE BEAM, LIKE A SHUTTER -NO TE: IF POS=1 THEN ITS OSCILLATING +' THIS IS A PROGRAM FOR CONTROLING THE BEAM ATTENUATOR +' ITS STATE IS SET BY THE VARIABLE POS +' IF POS=-1 THEN ITS OUT OF THE BEAM +' IF POS=0 THEN ITS IN THE BEAM, LIKE A SHUTTER +' IF POS=1 THEN ITS OSCILLATING DEADBD=20 PARKPOS=8308518; 'PARKING ENCODER POSITION SHUTPOS=8359718; 'BEAM SHUT ENCODER POSITION STRTPOS=8395558; 'OSCILLATING START ENCODER POSITION IF (POS=-1)&(@ABS[_TPD - PARKPOS]>DEADBD) -NO TE: PARK ATTENUATOR OUT OF BEAM - NO ATTENUATION +' PARK ATTENUATOR OUT OF BEAM - NO ATTENUATION SPD=75000 ACD=50000 DCD=50000 @@ -179,7 +386,7 @@ AMD MOD ENDIF IF (POS=0)&(@ABS[_TPD - SHUTPOS]>DEADBD) -NO TE: PARK ATTENUATOR IN BEAM - LIKE A SHUTTER +' PARK ATTENUATOR IN BEAM - LIKE A SHUTTER SPD=75000 ACD=50000 DCD=50000 @@ -190,7 +397,7 @@ AMD MOD ENDIF IF (POS=1) -NO TE: OSCILLATE ATTENUATOR +' OSCILLATE ATTENUATOR SHD SPD=75000 ACD=50000 @@ -212,3 +419,6 @@ ENDIF JP #LOOP,(POS=1) JP #ATTEN EN +' +' +'----------------------------------------------------------------------- diff --git a/site_ansto/instrument/reflectometer/DMC2280/controller2.txt b/site_ansto/instrument/reflectometer/DMC2280/controller2.txt index ccbb340c..a217cc93 100644 --- a/site_ansto/instrument/reflectometer/DMC2280/controller2.txt +++ b/site_ansto/instrument/reflectometer/DMC2280/controller2.txt @@ -1,21 +1,24 @@ -NO TE: PLATYPUS - CONTROLLER 2 -NO TE: -NO TE: $Revision: 1.5 $ -NO TE: $Date: 2008-04-16 00:57:21 $ -NO TE: Author: Dan Bartlett -NO TE: Last revision by: $Author: dcl $ -NO TE: -NO TE: A-SAMPLE TILT 1 -NO TE: B-SAMPLE TILT 2 -NO TE: C-SAMPLE TRANSLATION - LINEAR -NO TE: D-ANALYSER 1 -NO TE: E-SAMPLE RAISE -NO TE: F-ANALYSER 2 -NO TE: G-DETECTOR RAISE -NO TE: H-SPARE -NO ---------------------------------------- +' PLATYPUS - CONTROLLER 2 +' +' $Revision: 1.6 $ +' $Date: 2008-04-30 01:57:55 $ +' Author: Dan Bartlett +' Last revision by: $Author: dcl $ +' +' A-SAMPLE TILT 1 +' B-SAMPLE TILT 2 +' C-SAMPLE TRANSLATION - LINEAR +' D-ANALYSER 1 +' E-SAMPLE RAISE +' F-ANALYSER 2 +' G-DETECTOR RAISE +' H-SPARE +' +' +'----------------------------------------------------------------------- #AUTO -NO TE: THIS IS THE PROGRAM THAT RUNS AUTOMATICALLY ON CONTROLLER STARTUP +' 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 @@ -33,15 +36,142 @@ SIE=1,25,13,0<-2>2;'HEIDENHAIN ROQ425 SIF=0,25,13,0<-2>2;'HEIDENHAIN ROQ425 SIG=1,25,13,0<-2>2;'HEIDENHAIN ROQ425 SIH=0,25,13,0<-2>2;'SPARE -NO TE: FIRST TIME THROUGH BRAKE CONTROL NOT DONE +' FIRST TIME THROUGH BRAKE CONTROL NOT DONE REQG=0 RSPG=0 +' FIRST TIME THROUGH RESET HALT CONTROL +HLTA=0 +HLTB=0 +HLTC=0 +HLTD=0 +HLTE=0 +HLTF=0 +HLTG=0 +HLTH=0 +' FIRST TIME THROUGH RESET LIMIT CONTROL +LSAHIT=0 +LSBHIT=0 +LSCHIT=0 +LSDHIT=0 +LSEHIT=0 +LSFHIT=0 +LSGHIT=0 +LSHHIT=0 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 +' MAIN THREAD +' THERE MUST BE A THREAD RUNNING FOR #LIMSWI, #TCPERR AND #ININT TO WORK +' +JS #CHKSPD +JS #CHKDCEL +JS #AIRPAD +JP #THREAD0 +EN +' +' +'----------------------------------------------------------------------- +#CHKDCEL +'ROUTINE TO RESET DECELERATION AFTER AN EMERGENCY STOP +' +IF (_BGA=0);'WHEN MOTION STOPS AFTER A LIMIT HIT +IF (LSAHIT=1);'WHEN MOTION STOPS AFTER A LIMIT HIT +DCA=OLDDCA;' RESET DECEL TO OLD VALUE +LSAHIT=0 +ENDIF +IF (HLTA=1) +HLTA=0 +ENDIF +ENDIF +' +IF (_BGB=0) +IF (LSBHIT=1) +DCB=OLDDCB +LSBHIT=0 +ENDIF +IF (HLTB=1) +HLTB=0 +ENDIF +ENDIF +' +IF (_BGC=0) +IF (LSCHIT=1) +DCC=OLDDCC +LSCHIT=0 +ENDIF +IF (HLTC=1) +HLTC=0 +ENDIF +ENDIF +' +IF (_BGD=0) +IF (LSDHIT=1) +DCD=OLDDCD +LSDHIT=0 +ENDIF +IF (HLTD=1) +HLTD=0 +ENDIF +ENDIF +' +IF (_BGE=0) +IF (LSEHIT=1) +DCE=OLDDCE +LSEHIT=0 +ENDIF +IF (HLTE=1) +HLTE=0 +ENDIF +ENDIF +' +IF (_BGF=0) +IF (LSFHIT=1) +DCF=OLDDCF +LSFHIT=0 +ENDIF +IF (HLTF=1) +HLTF=0 +ENDIF +ENDIF +' +IF (_BGG=0) +IF (LSGHIT=1) +DCG=OLDDCG +LSGHIT=0 +ENDIF +IF (HLTG=1) +HLTG=0 +ENDIF +ENDIF +' +IF (_BGH=0) +IF (LSHHIT=1) +DCH=OLDDCH +LSHHIT=0 +ENDIF +IF (HLTH=1) +HLTH=0 +ENDIF +ENDIF +' +JS #SETDCEL,((HLTA=1)&(LSAHIT=0)) +JS #SETDCEL,((HLTB=1)&(LSBHIT=0)) +JS #SETDCEL,((HLTC=1)&(LSCHIT=0)) +JS #SETDCEL,((HLTD=1)&(LSDHIT=0)) +JS #SETDCEL,((HLTE=1)&(LSEHIT=0)) +JS #SETDCEL,((HLTF=1)&(LSFHIT=0)) +JS #SETDCEL,((HLTG=1)&(LSGHIT=0)) +JS #SETDCEL,((HLTH=1)&(LSHHIT=0)) +EN +' +' +'----------------------------------------------------------------------- +#CHKSPD +' ROUTINE TO CHECK IF SPEEDS ARE ABOVE MAXIMUM ALLOWED +' IF (_SPA>50000) SPA=50000 ENDIF @@ -63,94 +193,172 @@ ENDIF IF (_SPG>150000) SPG=150000 ENDIF -NO IF (_SPH>50000) AXIS NOT USED, COMMENTED OUT -NO SPH=50000 -NO ENDIF -NO TE: TO CONTROL THE BRAKE ON DETECTOR RAISE AXIS -IF (_MOG=0)&(RSPG=0);'DETECTOR RAISE MOTOR IS ON +IF (_SPH>50000) +SPH=50000 +ENDIF +EN +' +' +'----------------------------------------------------------------------- +#TCPERR +' EMPTY ROUTINE FOR A TCP ERROR +' +RE +' +' +'----------------------------------------------------------------------- +#CMDERR +'ROUTINE TO HANDLE COMMAND ERRORS +' +ZS0 +EN1 +' +' +'----------------------------------------------------------------------- +#ININT +' INTERUPT ROUTINE TO STOP ALL AXES +' WHEN SAFETY & INTERLOCK SYSTEM REQUESTS IT +' +STA,B,C,D,E,F,G,H +HLTA=1 +HLTB=1 +HLTC=1 +HLTD=1 +HLTE=1 +HLTF=1 +HLTG=1 +HLTH=1 +JS #SETDCEL +RI +' +' +'----------------------------------------------------------------------- +#LIMSWI +'ROUTINE TO HASTEN THE DECELERATION OF AN AXIS WHEN A LIMIT SWITCH IS HIT +' +JS #SETDCEL +RE +' +'----------------------------------------------------------------------- +#SETDCEL +'ROUTINE TO HASTEN THE DECELERATION OF AN AXIS +' +IF (_BGA=1) +IF (((_SCA=2)&(_LFA=0))|((_SCA=3)&(_LRA=0))|(HLTA=1)) +STA +IF (LSAHIT=0) +OLDDCA=_DCA +DCA=100000 +LSAHIT=1 +ENDIF +ENDIF +ENDIF +' +IF (_BGB=1) +IF (((_SCB=2)&(_LFB=0))|((_SCB=3)&(_LRB=0))|(HLTB=1)) +STB +IF (LSBHIT=0) +OLDDCB=_DCB +DCB=100000 +LSBHIT=1 +ENDIF +ENDIF +ENDIF +' +IF (_BGC=1) +IF (((_SCC=2)&(_LFC=0))|((_SCC=3)&(_LRC=0))|(HLTC=1)) +STC +IF (LSCHIT=0) +OLDDCC=_DCC +DCC=100000 +LSCHIT=1 +ENDIF +ENDIF +ENDIF +' +IF (_BGD=1) +IF (((_SCD=2)&(_LFD=0))|((_SCD=3)&(_LRD=0))|(HLTD=1)) +STD +IF (LSDHIT=0) +OLDDCD=_DCD +DCD=100000 +LSDHIT=1 +ENDIF +ENDIF +ENDIF +' +IF (_BGE=1) +IF (((_SCE=2)&(_LFE=0))|((_SCE=3)&(_LRE=0))|(HLTE=1)) +STE +IF (LSEHIT=0) +OLDDCE=_DCE +DCE=150000 +LSEHIT=1 +ENDIF +ENDIF +ENDIF +' +IF (_BGF=1) +IF (((_SCF=2)&(_LFF=0))|((_SCF=3)&(_LRF=0))|(HLTF=1)) +STF +IF (LSFHIT=0) +OLDDCF=_DCF +DCF=150000 +LSFHIT=1 +ENDIF +ENDIF +ENDIF +' +IF (_BGG=1) +IF (((_SCG=2)&(_LFG=0))|((_SCG=3)&(_LRG=0))|(HLTG=1)) +STG +IF (LSGHIT=0) +OLDDCG=_DCG +DCG=100000 +LSGHIT=1 +ENDIF +ENDIF +ENDIF +' +IF (_BGH=1) +IF (((_SCH=2)&(_LFH=0))|((_SCH=3)&(_LRH=0))|(HLTH=1)) +STH +IF (LSHHIT=0) +OLDDCH=_DCH +DCH=100000 +LSHHIT=1 +ENDIF +ENDIF +ENDIF +' +EN +' +' +'----------------------------------------------------------------------- +#AIRPAD +' ROUTINE TO CONTROL THE BRAKE ON DETECTOR RAISE AXIS +IF (_MOG=0)&(RSPG=0);'MOTOR IS ON REQG=1 ENDIF -IF (_MOG=1)&(RSPG=1);'DETECTOR RAISE MOTOR IS ON +IF (_MOG=1)&(RSPG=1);'MOTOR IS OFF REQG=0 ENDIF -IF (REQG=1)&(RSPG=0);'DETECTOR RAISE MOTOR IS REQUIRED +' +IF (REQG=1)&(RSPG=0);'MOTOR IS REQUIRED SHG -WT 200 +WT 200;' WAIT FOR MOTOR TO STABILISE CB 15;'RELAY ON = BRAKE COIL ENERGISED = BRAKE DISENGAGED WT 300 RSPG=1 ENDIF -IF (REQG=0)&(RSPG=1);'DETECTOR RAISE MOTOR IS NOT REQUIRED +IF (REQG=0)&(RSPG=1);'MOTOR IS NOT REQUIRED SB 15;'RELAY OFF = BRAKE COIL DE-ENERGISED = BRAKE ENGAGED WT 400 MOG WT 100 RSPG=0 ENDIF -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 ---------------------------------------- -#LIMSWI -NO TE: LIMIT SWITCH ROUTINE WHICH SHORTENS DECEL TIME WHEN A LIMIT IS HIT -OLDDCA=_DCA;' REMEMBERS CURRENT DECEL -OLDDCB=_DCB -OLDDCC=_DCC -OLDDCD=_DCD -OLDDCE=_DCE -OLDDCF=_DCF -OLDDCG=_DCG -NO OLDDCH=_DCH AXIS NOT USED -IF (_LFA = 0) | (_LRA = 0) -DCA=100000;' DECEL FOR LIMIT HIT OCCURENCE -STA -ENDIF -IF (_LFB = 0) | (_LRB = 0) -DCB=100000;' DECEL FOR LIMIT HIT OCCURENCE -STB -ENDIF -IF (_LFC = 0) | (_LRC = 0) -DCC=100000;' DECEL FOR LIMIT HIT OCCURENCE -STC -ENDIF -IF (_LFD = 0) | (_LRD = 0) -DCD=100000;' DECEL FOR LIMIT HIT OCCURENCE -STD -ENDIF -IF (_LFE = 0) | (_LRE = 0) -DCE=150000;' DECEL FOR LIMIT HIT OCCURENCE -STE -ENDIF -IF (_LFF = 0) | (_LRF = 0) -DCF=150000;' DECEL FOR LIMIT HIT OCCURENCE -STF -ENDIF -IF (_LFG = 0) | (_LRG = 0) -DCG=100000;' DECEL FOR LIMIT HIT OCCURENCE -STG -ENDIF -NO IF (_LFH = 0) | (_LRH = 0) AXIS NOT USED, COMMENTED OUT -NO DCH=100000;' DECEL FOR LIMIT HIT OCCURENCE -NO STH -NO ENDIF -AM ABCDEFGH;' AFTER ALL AXES STOPPED -DCA=OLDDCA;' RESET DECEL TO OLD VALUE -DCB=OLDDCB -DCC=OLDDCC -DCD=OLDDCD -DCE=OLDDCE -DCF=OLDDCF -DCG=OLDDCG -NO DCH=OLDDCH AXIS NOT USED -RE +' +' +'----------------------------------------------------------------------- diff --git a/site_ansto/instrument/reflectometer/DMC2280/controller3.txt b/site_ansto/instrument/reflectometer/DMC2280/controller3.txt index e9e30a30..35ad8785 100644 --- a/site_ansto/instrument/reflectometer/DMC2280/controller3.txt +++ b/site_ansto/instrument/reflectometer/DMC2280/controller3.txt @@ -1,21 +1,24 @@ -NO TE: PLAYTPUS - CONTROLLER 3 -NO TE: -NO TE: $Revision: 1.5 $ -NO TE: $Date: 2007-02-01 23:54:38 $ -NO TE: Author: Dan Bartlett -NO TE: Last revision by: $Author: dbx $ -NO TE: -NO TE: A-SLIT S1 WEST BLADE -NO TE: B-SLIT S1 EAST BLADE -NO TE: C-SLIT S1 TOP BLADE -NO TE: D-SLIT S1 BOTTOM BLADE -NO TE: E-SLIT S2 WEST BLADE -NO TE: F-SLIT S2 EAST BLADE -NO TE: G-SLIT S2 TOP BLADE -NO TE: H-SLIT S2 BOTTOM BLADE -NO ---------------------------------------- +' PLATYPUS - CONTROLLER 3 +' +' $Revision: 1.6 $ +' $Date: 2008-04-30 01:57:55 $ +' Author: Dan Bartlett +' Last revision by: $Author: dcl $ +' +' A-SLIT S1 WEST BLADE +' B-SLIT S1 EAST BLADE +' C-SLIT S1 TOP BLADE +' D-SLIT S1 BOTTOM BLADE +' E-SLIT S2 WEST BLADE +' F-SLIT S2 EAST BLADE +' G-SLIT S2 TOP BLADE +' H-SLIT S2 BOTTOM BLADE +' +' +'----------------------------------------------------------------------- #AUTO -NO TE: THIS IS THE PROGRAM THAT RUNS AUTOMATICALLY ON CONTROLLER STARTUP +' 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 @@ -25,12 +28,138 @@ AC 60000,60000,60000,60000,60000,60000,60000,60000;' SET ACELERATION DC 60000,60000,60000,60000,60000,60000,60000,60000;' SET DECELERATION SP 30000,30000,30000,30000,30000,30000,30000,30000;' SET SPEED HOMERUN=0;' HOMING PROCEDURE HAS NOT BEEN RUN +' FIRST TIME THROUGH RESET HALT CONTROL +HLTA=0 +HLTB=0 +HLTC=0 +HLTD=0 +HLTE=0 +HLTF=0 +HLTG=0 +HLTH=0 +' FIRST TIME THROUGH RESET LIMIT CONTROL +LSAHIT=0 +LSBHIT=0 +LSCHIT=0 +LSDHIT=0 +LSEHIT=0 +LSFHIT=0 +LSGHIT=0 +LSHHIT=0 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 +' MAIN THREAD +' THERE MUST BE A THREAD RUNNING FOR #LIMSWI, #TCPERR AND #ININT TO WORK +' +JS #CHKSPD +JS #CHKDCEL +JP #THREAD0 +EN +' +' +'----------------------------------------------------------------------- +#CHKDCEL +'ROUTINE TO RESET DECELERATION AFTER AN EMERGENCY STOP +' +IF (_BGA=0);'WHEN MOTION STOPS AFTER A LIMIT HIT +IF (LSAHIT=1);'WHEN MOTION STOPS AFTER A LIMIT HIT +DCA=OLDDCA;' RESET DECEL TO OLD VALUE +LSAHIT=0 +ENDIF +IF (HLTA=1) +HLTA=0 +ENDIF +ENDIF +' +IF (_BGB=0) +IF (LSBHIT=1) +DCB=OLDDCB +LSBHIT=0 +ENDIF +IF (HLTB=1) +HLTB=0 +ENDIF +ENDIF +' +IF (_BGC=0) +IF (LSCHIT=1) +DCC=OLDDCC +LSCHIT=0 +ENDIF +IF (HLTC=1) +HLTC=0 +ENDIF +ENDIF +' +IF (_BGD=0) +IF (LSDHIT=1) +DCD=OLDDCD +LSDHIT=0 +ENDIF +IF (HLTD=1) +HLTD=0 +ENDIF +ENDIF +' +IF (_BGE=0) +IF (LSEHIT=1) +DCE=OLDDCE +LSEHIT=0 +ENDIF +IF (HLTE=1) +HLTE=0 +ENDIF +ENDIF +' +IF (_BGF=0) +IF (LSFHIT=1) +DCF=OLDDCF +LSFHIT=0 +ENDIF +IF (HLTF=1) +HLTF=0 +ENDIF +ENDIF +' +IF (_BGG=0) +IF (LSGHIT=1) +DCG=OLDDCG +LSGHIT=0 +ENDIF +IF (HLTG=1) +HLTG=0 +ENDIF +ENDIF +' +IF (_BGH=0) +IF (LSHHIT=1) +DCH=OLDDCH +LSHHIT=0 +ENDIF +IF (HLTH=1) +HLTH=0 +ENDIF +ENDIF +' +JS #SETDCEL,((HLTA=1)&(LSAHIT=0)) +JS #SETDCEL,((HLTB=1)&(LSBHIT=0)) +JS #SETDCEL,((HLTC=1)&(LSCHIT=0)) +JS #SETDCEL,((HLTD=1)&(LSDHIT=0)) +JS #SETDCEL,((HLTE=1)&(LSEHIT=0)) +JS #SETDCEL,((HLTF=1)&(LSFHIT=0)) +JS #SETDCEL,((HLTG=1)&(LSGHIT=0)) +JS #SETDCEL,((HLTH=1)&(LSHHIT=0)) +EN +' +' +'----------------------------------------------------------------------- +#CHKSPD +' ROUTINE TO CHECK IF SPEEDS ARE ABOVE MAXIMUM ALLOWED +' IF (_SPA>30000) SPA=30000 ENDIF @@ -55,79 +184,234 @@ ENDIF IF (_SPH>30000) SPH=30000 ENDIF -JP#THREAD0 EN -NO ---------------------------------------- +' +' +'----------------------------------------------------------------------- #TCPERR -NO TE: EMPTY ROUTINE FOR A TCP ERROR +' EMPTY ROUTINE FOR A TCP ERROR +' RE -NO ---------------------------------------- +' +' +'----------------------------------------------------------------------- +#CMDERR +'ROUTINE TO HANDLE COMMAND ERRORS +' +ZS0 +EN1 +' +' +'----------------------------------------------------------------------- #ININT -NO TE: INTERUPT ROUTINE TO STOP ALL AXES -NO TE: WHEN SAFETY & INTERLOCK SYSTEM REQUESTS IT +' INTERUPT ROUTINE TO STOP ALL AXES +' WHEN SAFETY & INTERLOCK SYSTEM REQUESTS IT +' STA,B,C,D,E,F,G,H -AM -MO +HLTA=1 +HLTB=1 +HLTC=1 +HLTD=1 +HLTE=1 +HLTF=1 +HLTG=1 +HLTH=1 +JS #SETDCEL RI -NO ---------------------------------------- +' +' +'----------------------------------------------------------------------- +#LIMSWI +'ROUTINE TO HASTEN THE DECELERATION OF AN AXIS WHEN A LIMIT SWITCH IS HIT +' +JS #SETDCEL +RE +' +'----------------------------------------------------------------------- +#SETDCEL +'ROUTINE TO HASTEN THE DECELERATION OF AN AXIS +' +IF (_BGA=1) +IF (((_SCA=2)&(_LFA=0))|((_SCA=3)&(_LRA=0))|(HLTA=1)) +STA +IF (LSAHIT=0) +OLDDCA=_DCA +DCA=100000 +LSAHIT=1 +ENDIF +ENDIF +ENDIF +' +IF (_BGB=1) +IF (((_SCB=2)&(_LFB=0))|((_SCB=3)&(_LRB=0))|(HLTB=1)) +STB +IF (LSBHIT=0) +OLDDCB=_DCB +DCB=100000 +LSBHIT=1 +ENDIF +ENDIF +ENDIF +' +IF (_BGC=1) +IF (((_SCC=2)&(_LFC=0))|((_SCC=3)&(_LRC=0))|(HLTC=1)) +STC +IF (LSCHIT=0) +OLDDCC=_DCC +DCC=100000 +LSCHIT=1 +ENDIF +ENDIF +ENDIF +' +IF (_BGD=1) +IF (((_SCD=2)&(_LFD=0))|((_SCD=3)&(_LRD=0))|(HLTD=1)) +STD +IF (LSDHIT=0) +OLDDCD=_DCD +DCD=100000 +LSDHIT=1 +ENDIF +ENDIF +ENDIF +' +IF (_BGE=1) +IF (((_SCE=2)&(_LFE=0))|((_SCE=3)&(_LRE=0))|(HLTE=1)) +STE +IF (LSEHIT=0) +OLDDCE=_DCE +DCE=100000 +LSEHIT=1 +ENDIF +ENDIF +ENDIF +' +IF (_BGF=1) +IF (((_SCF=2)&(_LFF=0))|((_SCF=3)&(_LRF=0))|(HLTF=1)) +STF +IF (LSFHIT=0) +OLDDCF=_DCF +DCF=100000 +LSFHIT=1 +ENDIF +ENDIF +ENDIF +' +IF (_BGG=1) +IF (((_SCG=2)&(_LFG=0))|((_SCG=3)&(_LRG=0))|(HLTG=1)) +STG +IF (LSGHIT=0) +OLDDCG=_DCG +DCG=100000 +LSGHIT=1 +ENDIF +ENDIF +ENDIF +' +IF (_BGH=1) +IF (((_SCH=2)&(_LFH=0))|((_SCH=3)&(_LRH=0))|(HLTH=1)) +STH +IF (LSHHIT=0) +OLDDCH=_DCH +DCH=100000 +LSHHIT=1 +ENDIF +ENDIF +ENDIF +' +EN +' +' +'----------------------------------------------------------------------- #HOME -NO TE: THIS ROUTINE HOMES THE SLITS. -NO TE: IT USES THE HIGH REPEATABILITY HOME LIMIT SWITCHES ON SLIT 2 -NO TE: SLIT 1 DOES NOT HAVE HOME LIMITS. ITS HOMED IN THE CONVENTIONAL WAY -NO TE: IT WILL NOT WORK WITH OTHER SLIT PACKAGES WITHOUT THE HOME LIMITS +' THIS ROUTINE HOMES THE SLITS. +' IT USES THE HIGH REPEATABILITY HOME LIMIT SWITCHES +' SLIT 1 DOES NOT HAVE HOME LIMITS. IT IS HOMED IN THE CONVENTIONAL WAY +' IT WILL NOT WORK WITH OTHER SLIT PACKAGES WITHOUT THE HOME LIMITS IF (HOMERUN = 1) JP #ENDHOME ENDIF -SH -IF (_LRA=0);' MOVE SLIT FORWARD 10MM IF IT IS AGAINST THE REVERSE LIMIT -PRA=201250 +SH ABCDEFGH +ST ABCDEFGH +MC ABCDEFGH +SP 30000,30000,30000,30000,30000,30000,30000,30000 +' MOVE SLIT FORWARD 10MM IF IT IS AGAINST THE REVERSE LIMIT SWITCH +IF (_LRA = 0) +PRA=200000 BGA ENDIF -IF (_LRB=0);' MOVE SLIT FORWARD 10MM IF IT IS AGAINST THE REVERSE LIMIT -PRB=201250 +' MOVE SLIT FORWARD 10MM IF IT IS AGAINST THE REVERSE LIMIT SWITCH +IF (_LRB = 0) +PRB=200000 BGB ENDIF -IF (_LRC=0);' MOVE SLIT FORWARD 10MM IF IT IS AGAINST THE REVERSE LIMIT -PRC=201250 +' MOVE SLIT FORWARD 10MM IF IT IS AGAINST THE REVERSE LIMIT SWITCH +IF (_LRC = 0) +PRC=200000 BGC ENDIF -IF (_LRD=0);' MOVE SLIT FORWARD 10MM IF IT IS AGAINST THE REVERSE LIMIT -PRD=201250 +' MOVE SLIT FORWARD 10MM IF IT IS AGAINST THE REVERSE LIMIT SWITCH +IF (_LRD = 0) +PRD=200000 BGD ENDIF -IF (_LRE=0);' MOVE SLIT FORWARD 10MM IF IT IS AGAINST THE REVERSE LIMIT -PRE=201250 +' MOVE SLIT FORWARD 10MM IF IT IS AGAINST THE REVERSE LIMIT SWITCH +IF (_LRE = 0) +PRE=200000 BGE ENDIF -IF (_LRF=0);' MOVE SLIT FORWARD 10MM IF IT IS AGAINST THE REVERSE LIMIT -PRF=201250 +' MOVE SLIT FORWARD 10MM IF IT IS AGAINST THE REVERSE LIMIT SWITCH +IF (_LRF = 0) +PRF=200000 BGF ENDIF -IF (_LRG=0);' MOVE SLIT FORWARD 10MM IF IT IS AGAINST THE REVERSE LIMIT -PRG=201250 +' MOVE SLIT FORWARD 10MM IF IT IS AGAINST THE REVERSE LIMIT SWITCH +IF (_LRG = 0) +PRG=200000 BGG ENDIF -IF (_LRH=0);' MOVE SLIT FORWARD 10MM IF IT IS AGAINST THE REVERSE LIMIT -PRH=201250 +' MOVE SLIT FORWARD 10MM IF IT IS AGAINST THE REVERSE LIMIT SWITCH +IF (_LRH = 0) +PRH=200000 BGH ENDIF -AM ABCDEFGH +MC ABCDEFGH +WT 100 +' DRIVE ALL SLITS INTO REVERSE LIMIT SWITCH JG -30000,-30000,-30000,-30000,-30000,-30000,-30000,-30000 -BG;' OPEN ALL SLITS TO LIMITS -AM ABCDEFGH -FE EFGH;' DRIVE SLIT 2 TO THE HOME LIMIT AT FULL SPEED +BG ABCDEFGH +MC ABCDEFGH +WT 100 +' DRIVE SLIT 2 TO THE HOME LIMIT AT FULL SPEED +FE EFGH BG EFGH -AM EFGH +MC EFGH +WT 100 +' MOVE AWAY FROM SWITCHES PR 100625,100625,100625,100625,-100625,-100625,-100625,-100625; -BG;' MOVE AWAY 5MM -AM ABCDEFGH -SP ,,,,7500,7500,7500,7500;' REDUCE SPEED -FE EFGH;' DRIVE TO LIMIT AT LOW SPEED -JG -7500,-7500,-7500,-7500 -BG -AM ABCDEFGH -DP 0,0,0,0,0,0,0,0;' DEFINE EACH AXIS POSTION AS ZERO -SP 30000,30000,30000,30000,30000,30000,30000,30000;' SPEED BACK TO NORMAL +BG ABCDEFGH +MC ABCDEFGH +WT 100 +' DRIVE BACK SLOWLY +SP 5000,5000,5000,5000,5000,5000,5000,5000 +JG -5000,-5000,-5000,-5000 +FE EFGH +BG ABCDEFGH +MC ABCDEFGH +WT 100 +' MOVE FORWARD FROM LIMIT SWITCH +PR 30000,30000,30000,30000 +BG ABCD +MC ABCD +WT 100 +' +' STOP MOTORS AND SET ZERO +MO ABCDEFGH +DP 0,0,0,0,0,0,0,0 +SP 30000,30000,30000,30000,30000,30000,30000,30000 HOMERUN=1;'HOMING PROCEDURE HAS BEEN RUN #ENDHOME EN +' +' +'----------------------------------------------------------------------- diff --git a/site_ansto/instrument/reflectometer/DMC2280/controller4.txt b/site_ansto/instrument/reflectometer/DMC2280/controller4.txt index 803cd05e..816b1b66 100644 --- a/site_ansto/instrument/reflectometer/DMC2280/controller4.txt +++ b/site_ansto/instrument/reflectometer/DMC2280/controller4.txt @@ -1,21 +1,24 @@ -NO TE: PLAYTPUS - CONTROLLER 4 -NO TE: -NO TE: $Revision: 1.5 $ -NO TE: $Date: 2008-04-16 00:57:40 $ -NO TE: Author: Dan Bartlett -NO TE: Last revision by: $Author: dcl $ -NO TE: -NO TE: A-SLIT S3 BOTTOM BLADE -NO TE: B-SLIT S3 TOP BLADE -NO TE: C-SLIT S3 WEST BLADE -NO TE: D-SLIT S3 EAST BLADE -NO TE: E-SLIT S4 BOTTOM BLADE -NO TE: F-SLIT S4 TOP BLADE -NO TE: G-SLIT S4 WEST BLADE -NO TE: H-SLIT S4 EAST BLADE -NO ---------------------------------------- +' PLATYPUS - CONTROLLER 4 +' +' $Revision: 1.6 $ +' $Date: 2008-04-30 01:57:55 $ +' Author: Dan Bartlett +' Last revision by: $Author: dcl $ +' +' A-SLIT S3 BOTTOM BLADE +' B-SLIT S3 TOP BLADE +' C-SLIT S3 WEST BLADE +' D-SLIT S3 EAST BLADE +' E-SLIT S4 BOTTOM BLADE +' F-SLIT S4 TOP BLADE +' G-SLIT S4 WEST BLADE +' H-SLIT S4 EAST BLADE +' +' +'----------------------------------------------------------------------- #AUTO -NO TE: THIS IS THE PROGRAM THAT RUNS AUTOMATICALLY ON CONTROLLER STARTUP +' 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 @@ -25,12 +28,138 @@ AC 60000,60000,60000,60000,60000,60000,60000,60000;' SET ACELERATION DC 60000,60000,60000,60000,60000,60000,60000,60000;' SET DECELERATION SP 30000,30000,30000,30000,30000,30000,30000,30000;' SET SPEED HOMERUN=0;' HOMING PROCEDURE HAS NOT BEEN RUN +' FIRST TIME THROUGH RESET HALT CONTROL +HLTA=0 +HLTB=0 +HLTC=0 +HLTD=0 +HLTE=0 +HLTF=0 +HLTG=0 +HLTH=0 +' FIRST TIME THROUGH RESET LIMIT CONTROL +LSAHIT=0 +LSBHIT=0 +LSCHIT=0 +LSDHIT=0 +LSEHIT=0 +LSFHIT=0 +LSGHIT=0 +LSHHIT=0 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 +' MAIN THREAD +' THERE MUST BE A THREAD RUNNING FOR #LIMSWI, #TCPERR AND #ININT TO WORK +' +JS #CHKSPD +JS #CHKDCEL +JP #THREAD0 +EN +' +' +'----------------------------------------------------------------------- +#CHKDCEL +'ROUTINE TO RESET DECELERATION AFTER AN EMERGENCY STOP +' +IF (_BGA=0);'WHEN MOTION STOPS AFTER A LIMIT HIT +IF (LSAHIT=1);'WHEN MOTION STOPS AFTER A LIMIT HIT +DCA=OLDDCA;' RESET DECEL TO OLD VALUE +LSAHIT=0 +ENDIF +IF (HLTA=1) +HLTA=0 +ENDIF +ENDIF +' +IF (_BGB=0) +IF (LSBHIT=1) +DCB=OLDDCB +LSBHIT=0 +ENDIF +IF (HLTB=1) +HLTB=0 +ENDIF +ENDIF +' +IF (_BGC=0) +IF (LSCHIT=1) +DCC=OLDDCC +LSCHIT=0 +ENDIF +IF (HLTC=1) +HLTC=0 +ENDIF +ENDIF +' +IF (_BGD=0) +IF (LSDHIT=1) +DCD=OLDDCD +LSDHIT=0 +ENDIF +IF (HLTD=1) +HLTD=0 +ENDIF +ENDIF +' +IF (_BGE=0) +IF (LSEHIT=1) +DCE=OLDDCE +LSEHIT=0 +ENDIF +IF (HLTE=1) +HLTE=0 +ENDIF +ENDIF +' +IF (_BGF=0) +IF (LSFHIT=1) +DCF=OLDDCF +LSFHIT=0 +ENDIF +IF (HLTF=1) +HLTF=0 +ENDIF +ENDIF +' +IF (_BGG=0) +IF (LSGHIT=1) +DCG=OLDDCG +LSGHIT=0 +ENDIF +IF (HLTG=1) +HLTG=0 +ENDIF +ENDIF +' +IF (_BGH=0) +IF (LSHHIT=1) +DCH=OLDDCH +LSHHIT=0 +ENDIF +IF (HLTH=1) +HLTH=0 +ENDIF +ENDIF +' +JS #SETDCEL,((HLTA=1)&(LSAHIT=0)) +JS #SETDCEL,((HLTB=1)&(LSBHIT=0)) +JS #SETDCEL,((HLTC=1)&(LSCHIT=0)) +JS #SETDCEL,((HLTD=1)&(LSDHIT=0)) +JS #SETDCEL,((HLTE=1)&(LSEHIT=0)) +JS #SETDCEL,((HLTF=1)&(LSFHIT=0)) +JS #SETDCEL,((HLTG=1)&(LSGHIT=0)) +JS #SETDCEL,((HLTH=1)&(LSHHIT=0)) +EN +' +' +'----------------------------------------------------------------------- +#CHKSPD +' ROUTINE TO CHECK IF SPEEDS ARE ABOVE MAXIMUM ALLOWED +' IF (_SPA>30000) SPA=30000 ENDIF @@ -55,77 +184,227 @@ ENDIF IF (_SPH>30000) SPH=30000 ENDIF -JP#THREAD0 EN -NO ---------------------------------------- +' +' +'----------------------------------------------------------------------- #TCPERR -NO TE: EMPTY ROUTINE FOR A TCP ERROR +' EMPTY ROUTINE FOR A TCP ERROR +' RE -NO ---------------------------------------- +' +' +'----------------------------------------------------------------------- +#CMDERR +'ROUTINE TO HANDLE COMMAND ERRORS +' +ZS0 +EN1 +' +' +'----------------------------------------------------------------------- #ININT -NO TE: INTERUPT ROUTINE TO STOP ALL AXES -NO TE: WHEN SAFETY & INTERLOCK SYSTEM REQUESTS IT +' INTERUPT ROUTINE TO STOP ALL AXES +' WHEN SAFETY & INTERLOCK SYSTEM REQUESTS IT +' STA,B,C,D,E,F,G,H -AM -MO +HLTA=1 +HLTB=1 +HLTC=1 +HLTD=1 +HLTE=1 +HLTF=1 +HLTG=1 +HLTH=1 +JS #SETDCEL RI -NO ---------------------------------------- +' +' +'----------------------------------------------------------------------- +#LIMSWI +'ROUTINE TO HASTEN THE DECELERATION OF AN AXIS WHEN A LIMIT SWITCH IS HIT +' +JS #SETDCEL +RE +' +'----------------------------------------------------------------------- +#SETDCEL +'ROUTINE TO HASTEN THE DECELERATION OF AN AXIS +' +IF (_BGA=1) +IF (((_SCA=2)&(_LFA=0))|((_SCA=3)&(_LRA=0))|(HLTA=1)) +STA +IF (LSAHIT=0) +OLDDCA=_DCA +DCA=100000 +LSAHIT=1 +ENDIF +ENDIF +ENDIF +' +IF (_BGB=1) +IF (((_SCB=2)&(_LFB=0))|((_SCB=3)&(_LRB=0))|(HLTB=1)) +STB +IF (LSBHIT=0) +OLDDCB=_DCB +DCB=100000 +LSBHIT=1 +ENDIF +ENDIF +ENDIF +' +IF (_BGC=1) +IF (((_SCC=2)&(_LFC=0))|((_SCC=3)&(_LRC=0))|(HLTC=1)) +STC +IF (LSCHIT=0) +OLDDCC=_DCC +DCC=100000 +LSCHIT=1 +ENDIF +ENDIF +ENDIF +' +IF (_BGD=1) +IF (((_SCD=2)&(_LFD=0))|((_SCD=3)&(_LRD=0))|(HLTD=1)) +STD +IF (LSDHIT=0) +OLDDCD=_DCD +DCD=100000 +LSDHIT=1 +ENDIF +ENDIF +ENDIF +' +IF (_BGE=1) +IF (((_SCE=2)&(_LFE=0))|((_SCE=3)&(_LRE=0))|(HLTE=1)) +STE +IF (LSEHIT=0) +OLDDCE=_DCE +DCE=100000 +LSEHIT=1 +ENDIF +ENDIF +ENDIF +' +IF (_BGF=1) +IF (((_SCF=2)&(_LFF=0))|((_SCF=3)&(_LRF=0))|(HLTF=1)) +STF +IF (LSFHIT=0) +OLDDCF=_DCF +DCF=100000 +LSFHIT=1 +ENDIF +ENDIF +ENDIF +' +IF (_BGG=1) +IF (((_SCG=2)&(_LFG=0))|((_SCG=3)&(_LRG=0))|(HLTG=1)) +STG +IF (LSGHIT=0) +OLDDCG=_DCG +DCG=100000 +LSGHIT=1 +ENDIF +ENDIF +ENDIF +' +IF (_BGH=1) +IF (((_SCH=2)&(_LFH=0))|((_SCH=3)&(_LRH=0))|(HLTH=1)) +STH +IF (LSHHIT=0) +OLDDCH=_DCH +DCH=100000 +LSHHIT=1 +ENDIF +ENDIF +ENDIF +' +EN +' +' +'----------------------------------------------------------------------- #HOME -NO TE: THIS ROUTINE HOMES THE SLITS. -NO TE: IT USES THE HIGH REPEATABILITY HOME LIMIT SWITCHES -NO TE: IT WILL NOT WORK WITH OTHER SLIT PACKAGES WITHOUT THE HOME LIMITS +' THIS ROUTINE HOMES THE SLITS. +' IT USES THE HIGH REPEATABILITY HOME LIMIT SWITCHES +' IT WILL NOT WORK WITH OTHER SLIT PACKAGES WITHOUT THE HOME LIMITS IF (HOMERUN = 1) JP #ENDHOME ENDIF -SH -IF (_LRA=0);' MOVE SLIT FORWARD 10MM IF IT IS AGAINST THE REVERSE LIMIT -PRA=201250 +SH ABCDEFGH +ST ABCDEFGH +MC ABCDEFGH +SP 30000,30000,30000,30000,30000,30000,30000,30000 +' MOVE SLIT FORWARD 10MM IF IT IS AGAINST THE REVERSE LIMIT SWITCH +IF (_LRA = 0) +PRA=200000 BGA ENDIF -IF (_LRB=0);' MOVE SLIT FORWARD 10MM IF IT IS AGAINST THE REVERSE LIMIT -PRB=201250 +' MOVE SLIT FORWARD 10MM IF IT IS AGAINST THE REVERSE LIMIT SWITCH +IF (_LRB = 0) +PRB=200000 BGB ENDIF -IF (_LRC=0);' MOVE SLIT FORWARD 10MM IF IT IS AGAINST THE REVERSE LIMIT -PRC=201250 +' MOVE SLIT FORWARD 10MM IF IT IS AGAINST THE REVERSE LIMIT SWITCH +IF (_LRC = 0) +PRC=200000 BGC ENDIF -IF (_LRD=0);' MOVE SLIT FORWARD 10MM IF IT IS AGAINST THE REVERSE LIMIT -PRD=201250 +' MOVE SLIT FORWARD 10MM IF IT IS AGAINST THE REVERSE LIMIT SWITCH +IF (_LRD = 0) +PRD=200000 BGD ENDIF -IF (_LRE=0);' MOVE SLIT FORWARD 10MM IF IT IS AGAINST THE REVERSE LIMIT -PRE=201250 +' MOVE SLIT FORWARD 10MM IF IT IS AGAINST THE REVERSE LIMIT SWITCH +IF (_LRE = 0) +PRE=200000 BGE ENDIF -IF (_LRF=0);' MOVE SLIT FORWARD 10MM IF IT IS AGAINST THE REVERSE LIMIT -PRF=201250 +' MOVE SLIT FORWARD 10MM IF IT IS AGAINST THE REVERSE LIMIT SWITCH +IF (_LRF = 0) +PRF=200000 BGF ENDIF -IF (_LRG=0);' MOVE SLIT FORWARD 10MM IF IT IS AGAINST THE REVERSE LIMIT -PRG=201250 +' MOVE SLIT FORWARD 10MM IF IT IS AGAINST THE REVERSE LIMIT SWITCH +IF (_LRG = 0) +PRG=200000 BGG ENDIF -IF (_LRH=0);' MOVE SLIT FORWARD 10MM IF IT IS AGAINST THE REVERSE LIMIT -PRH=201250 +' MOVE SLIT FORWARD 10MM IF IT IS AGAINST THE REVERSE LIMIT SWITCH +IF (_LRH = 0) +PRH=200000 BGH ENDIF -AM ABCDEFGH +MC ABCDEFGH +WT 100 +' DRIVE ALL SLITS INTO REVERSE LIMIT SWITCH JG -30000,-30000,-30000,-30000,-30000,-30000,-30000,-30000 -BG;' OPEN ALL SLITS TO LIMITS -AM ABCDEFGH -FE;' DRIVE TO THE HOME LIMIT AT FULL SPEED -BG -AM ABCDEFGH +BG ABCDEFGH +MC ABCDEFGH +WT 100 +' DRIVE SLITS TO THE HOME LIMIT AT FULL SPEED +FE ABCDEFGH +BG ABCDEFGH +MC ABCDEFGH +WT 100 +' MOVE AWAY FROM SWITCHES PR -100625,-100625,-100625,-100625,-100625,-100625,-100625,-100625; -BG;' MOVE AWAY 5MM -AM ABCDEFGH -SP 7500,7500,7500,7500,7500,7500,7500,7500;' REDUCE SPEED -FE;' DRIVE TO HOME LIMIT AT LOW SPEED -BG -AM ABCDEFGH -DP 0,0,0,0,0,0,0,0;' DEFINE EACH AXIS POSTION AS ZERO -SP 30000,30000,30000,30000,30000,30000,30000,30000;' SPEED BACK TO NORMAL +BG ABCDEFGH +MC ABCDEFGH +WT 100 +' DRIVE BACK SLOWLY +SP 5000,5000,5000,5000,5000,5000,5000,5000 +FE ABCDEFGH +BG ABCDEFGH +MC ABCDEFGH +WT 100 +' +' STOP MOTORS AND SET ZERO +MO ABCDEFGH +DP 0,0,0,0,0,0,0,0 +SP 30000,30000,30000,30000,30000,30000,30000,30000 HOMERUN=1;'HOMING PROCEDURE HAS BEEN RUN #ENDHOME EN +' +' +'-----------------------------------------------------------------------