From 4b17ca99da3fece420e438263f12ca28a6091bf9 Mon Sep 17 00:00:00 2001 From: Douglas Clowes Date: Mon, 14 Apr 2008 10:28:07 +1000 Subject: [PATCH] Bring into line with changes made on Echidna and Wombat r2432 | dcl | 2008-04-14 10:28:07 +1000 (Mon, 14 Apr 2008) | 2 lines --- .../instrument/rsd/DMC2280/controller1.txt | 429 +++++++++++++----- 1 file changed, 321 insertions(+), 108 deletions(-) diff --git a/site_ansto/instrument/rsd/DMC2280/controller1.txt b/site_ansto/instrument/rsd/DMC2280/controller1.txt index 6e61f73e..64bf62f1 100644 --- a/site_ansto/instrument/rsd/DMC2280/controller1.txt +++ b/site_ansto/instrument/rsd/DMC2280/controller1.txt @@ -1,21 +1,25 @@ -NO TE: KOWARI - CONTROLLER 1 -NO TE: -NO TE: $Revision: 1.5 $ -NO TE: $Date: 2007-09-24 01:20:08 $ -NO TE: Author: Dan Bartlett -NO TE: Last revision by: $Author: dbx $ -NO TE: -NO TE: A-MONOCHROMATOR UPPER TILT -NO TE: B-MONOCHROMATOR LOWER TILT -NO TE: C-MONOCHROMATOR UPPER TRANSLATION -NO TE: D-MONOCHROMATOR LOWER TRANSLATION -NO TE: E-MONOCHROMATOR ROTATION -NO TE: F-FLIGHT TUBE ROTATION -NO TE: G-SPARE -NO TE: H-SPARE -NO ---------------------------------------- +' KOWARI - CONTROLLER 1 +' +' $Revision: 1.6 $ +' $Date: 2008-04-14 00:28:07 $ +' Author: Dan Bartlett +' Airpad control added by Doug Clowes +' Last revision by: $Author: dcl $ +' +' A-MONOCHROMATOR UPPER TILT +' B-MONOCHROMATOR LOWER TILT +' C-MONOCHROMATOR UPPER TRANSLATION +' D-MONOCHROMATOR LOWER TRANSLATION +' E-MONOCHROMATOR ROTATION +' F-FLIGHT TUBE ROTATION +' G-SPARE +' 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 +37,142 @@ SIE=1,25,13,0<-2>2;'HEIDENHAIN ROQ425 SIF=1,25,25,0<-2>2;'HEIDENHAIN RCN226 SIG=0,25,13,0<-2>2;'NOT USED SIH=0,25,13,0<-2>2;'NOT USED -NO TE: FIRST TIME THROUGH AIRPAD CONTROL NOT DONE +' FIRST TIME THROUGH RESET AIRPAD CONTROL REQF=0 RSPF=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 @@ -60,40 +191,185 @@ ENDIF IF (_SPF>100000) SPF=100000 ENDIF -NO IF (_SPG>50000) AXIS NOT USED -NO SPG=50000 -NO ENDIF -NO IF (_SPH>50000) -NO SPH=50000 -NO ENDIF -NO TE: CONTROLS THE AIRPAD SOLENOID VALVES -NO TE: THIS BIT IS USED SO THAT THE CODE ONLY RUNS WHEN THE -NO TE: IN THE 2ND IF, THE OFF-SOLENOIDS ARENT HELD ENERGISED IN CASE THE -NO TE: VALVE MANUAL OVER RIDE IS NEEDED. -IF (_MOF=0)&(RSPF=0);'FLIGHT TUBE MOTOR IS ON +IF (_SPG>50000) +SPG=50000 +ENDIF +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=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=50000 +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 AIRPADS +' SET REQF=1 TO MAKE FLIGHT TUBE AVAILABLE FOR MOVE +' THE RSPF BIT IS USED SO THAT THE CODE ONLY RUNS WHEN THE +' STATE OF FTUBE CHANGES - THE DELAYS ARENT RUNNING EVERY CYCLE +' IN THE 2ND IF, THE OFF-SOLENOIDS ARENT HELD ENERGISED IN CASE THE +' VALVE MANUAL OVER RIDE IS NEEDED. +' +' FOLLOW SHF/MOF COMMANDS ENTERED MANUALLY +IF (_MOF=0)&(RSPF=0);'FLIGHT TUBE MOTOR IS ON BUT AIR IS OFF REQF=1 ENDIF -IF (_MOF=1)&(RSPF=1);'FLIGHT TUBE MOTOR IS OFF +IF (_MOF=1)&(RSPF=1);'FLIGHT TUBE MOTOR IS OFF BUT AIR IS ON +SHF;' FOLLOWING STEPS MUST BE RUN BEFORE MOTOR CAN BE TURNED OFF REQF=0 ENDIF +' IF (REQF=1)&(RSPF=0);'REQUESTING FLIGHT TUBE BE MOVABLE -SHF +SHF;' TURN MOTOR ON WT500;' WAIT FOR MOTOR TO STABILISE SB 12;' DRIVE WHEEL UP-SOLENOID OFF CB 11;' DRIVE WHEEL DOWN-SOLENOID ON WT1000;' WAIT FOR DRIVE WHEEL TO LOWER -SB 10;' SAMPLE STAGE AIR PAD OFF-SOLENOID OFF -CB 9;' SAMPLE STAGE AIR PAD ON-SOLENOID ON -WT500; +SB 10;' AIR PAD OFF-SOLENOID OFF +CB 9;' AIR PAD ON-SOLENOID ON +WT1000; RSPF=1 ENDIF -IF (REQF=0)&(RSPF=1);'FLIGHT TUBE MOTION FINISHED -SHF;' FOLLOWING STEPS MUST BE RUN BEFORE MOTOR CAN BE TURNED OFF +IF (REQF=0)&(RSPF=1)&(_BGF=0);'FLIGHT TUBE MOTION FINISHED WT1000;' WAIT FOR FLIGHT TUBE TO SETTLE -SB 9;' SAMPLE STAGE AIR PAD ON-SOLENOID OFF -CB 10;' SAMPLE STAGE AIR PAD OFF-SOLENOID ON +SB 9;' AIR PAD ON-SOLENOID OFF +CB 10;' AIR PAD OFF-SOLENOID ON WT500; -SB 10;' SAMPLE STAGE AIR PAD OFF-SOLENOID OFF +SB 10;' AIR PAD OFF-SOLENOID OFF SB 11;' DRIVE WHEEL DOWN-SOLENOID OFF CB 12;' DRIVE WHEEL UP-SOLENOID ON WT500;' WAIT 1/2 SEC @@ -101,70 +377,7 @@ SB 12;' DRIVE WHEEL UP-SOLENOID OFF MOF;' TURN MOTOR OFF RSPF=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 -NO OLDDCG=_DCG COMMENTED OUT, AXIS NOT IN USE -NO OLDDCH=_DCH COMMENTED OUT, AXIS NOT IN USE -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=100000;' DECEL FOR LIMIT HIT OCCURENCE -STE -ENDIF -IF (_LFF = 0) | (_LRF = 0) -DCF=50000;' DECEL FOR LIMIT HIT OCCURENCE -STF -ENDIF -NO IF (_LFG = 0) | (_LRG = 0) COMMENTED OUT, AXIS NOT IN USE -NO DCG=100000;' DECEL FOR LIMIT HIT OCCURENCE -NO STG -NO ENDIF -NO IF (_LFH = 0) | (_LRH = 0) -NO DCH=100000;' DECEL FOR LIMIT HIT OCCURENCE -NO STH -NO ENDIF -AM ABCDEF;' AFTER ALL AXES STOPPED -DCA=OLDDCA;' RESET DECEL TO OLD VALUE -DCB=OLDDCB -DCC=OLDDCC -DCD=OLDDCD -DCE=OLDDCE -DCF=OLDDCF -NO DCG=OLDDCG COMMENTED OUT, AXIS NOT IN USE -NO DCH=OLDDCH COMMENTED OUT, AXIS NOT IN USE -RE +' +' +'-----------------------------------------------------------------------