From 94f3ef8ce6840a2f2636a95036d33646a67761c6 Mon Sep 17 00:00:00 2001 From: Dan Bartlett Date: Tue, 20 Mar 2007 14:10:55 +1100 Subject: [PATCH] NEW CODE FOR KOWARI r1688 | dbx | 2007-03-20 14:10:55 +1100 (Tue, 20 Mar 2007) | 2 lines --- .../instrument/rsd/DMC2280/controller1.txt | 161 ++++++++++++++++++ .../instrument/rsd/DMC2280/controller2.txt | 146 ++++++++++++++++ .../instrument/rsd/DMC2280/controller3.txt | 89 ++++++++++ .../instrument/rsd/DMC2280/controller4.txt | 132 ++++++++++++++ 4 files changed, 528 insertions(+) create mode 100644 site_ansto/instrument/rsd/DMC2280/controller1.txt create mode 100644 site_ansto/instrument/rsd/DMC2280/controller2.txt create mode 100644 site_ansto/instrument/rsd/DMC2280/controller3.txt create mode 100644 site_ansto/instrument/rsd/DMC2280/controller4.txt diff --git a/site_ansto/instrument/rsd/DMC2280/controller1.txt b/site_ansto/instrument/rsd/DMC2280/controller1.txt new file mode 100644 index 00000000..c7fed817 --- /dev/null +++ b/site_ansto/instrument/rsd/DMC2280/controller1.txt @@ -0,0 +1,161 @@ +NO TE: KOWARI - CONTROLLER 1 +NO TE: +NO TE: $Revision: 1.1 $ +NO TE: $Date: 2007-03-20 03:10:55 $ +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 ---------------------------------------- +#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 +OP 65280;' SETS OUTPUTS 9-16 ON = RELAYS OFF +IA 137,157,201,195;' CONFIGURES IP ADDRESS +AC 25000,25000,25000,25000,25000,10000,,;' SET ACELERATION +DC 25000,25000,25000,25000,25000,10000,,;' SET DECELERATION +SP 25000,25000,25000,25000,50000,100000,,;' SET SPEED +SIA=1,25,13,0<-2>2;'HEIDENHAIN ROQ425 +SIB=1,25,13,0<-2>2;'HEIDENHAIN ROQ425 +SIC=1,25,13,0<-2>2;'HEIDENHAIN ROQ425 +SID=1,25,13,0<-2>2;'HEIDENHAIN ROQ425 +SIE=1,25,13,0<-2>2;'HEIDENHAIN ROQ425 +SIF=1,25,25,0<-2>2;'HEIDENHAIN RCN226 +SIG=O,25,13,0<-2>2;'NOT USED +SIH=O,25,13,0<-2>2;'NOT USED +APDONE=0;' FIRST TIME THROUGH AIRPAD CONTROL NOT DONE +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 +IF (_SPC>50000) +SPC=50000 +ENDIF +IF (_SPD>50000) +SPD=50000 +ENDIF +IF (_SPE>50000) +SPE=50000 +ENDIF +IF (_SPF>100000) +SPF=100000 +ENDIF +IF (_SPG>50000) +SPG=50000 +ENDIF +IF (_SPH>50000) +SPH=50000 +ENDIF +NO TE: CONTROLS THE AIRPAD SOLENOID VALVES +NO TE: THE APDONE BIT IS USED SO THAT THE CODE ONLY RUNS WHEN THE +NO TE: STATE OF FTUBE CHANGES - THE DELAYS ARENT RUNNING EVERY CYCLE +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)&(APDONE=0);'REQUESTING FLIGHT TUBE BE MOVABLE +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 +APDONE=1 +ENDIF +IF (_MOF=1)&(APDONE=1);'FLIGHT TUBE MOTION FINISHED +SHF;' FOLLOWING STEPS MUST BE RUN BEFORE MOTOR CAN BE TURNED OFF +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 +WT500; +SB 10;' SAMPLE STAGE AIR PAD OFF-SOLENOID OFF +SB 11;' DRIVE WHEEL DOWN-SOLENOID OFF +CB 12;' DRIVE WHEEL UP-SOLENOID ON +WT500;' WAIT 1/2 SEC +SB 12;' DRIVE WHEEL UP-SOLENOID OFF +MOF;' TURN MOTOR OFF +APDONE=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 \ No newline at end of file diff --git a/site_ansto/instrument/rsd/DMC2280/controller2.txt b/site_ansto/instrument/rsd/DMC2280/controller2.txt new file mode 100644 index 00000000..5a2c9d07 --- /dev/null +++ b/site_ansto/instrument/rsd/DMC2280/controller2.txt @@ -0,0 +1,146 @@ +NO TE: KOWARI - CONTROLLER 2 +NO TE: +NO TE: $Revision: 1.1 $ +NO TE: $Date: 2007-03-20 03:10:55 $ +NO TE: Author: Dan Bartlett +NO TE: Last revision by: $Author: dbx $ +NO TE: +NO TE: A-SAMPLE RAISE FIRST SECTION +NO TE: B-SAMPLE RAISE SECOND SECTION +NO TE: C-SAMPLE UPPER TRANSLATION +NO TE: D-SAMPLE LOWER TRANSLATION +NO TE: E-SAMPLE ROTATE +NO TE: F-DETECTOR ROTATE +NO TE: G-SPARE +NO TE: H-SPARE +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 +OP 65280;' SETS OUTPUTS 9-16 ON = RELAYS OFF +IA 137,157,201,196;' CONFIGURES IP ADDRESS +AC 25000,25000,25000,25000,25000,25000,,;' SET ACELERATION +DC 25000,25000,25000,25000,25000,25000,,;' SET DECELERATION +SP 25000,25000,25000,25000,25000,25000,,;' SET SPEED +SIA=1,25,13,0<-2>2;'HEIDENHAIN ROQ425 +SIB=1,25,13,0<-2>2;'HEIDENHAIN ROQ425 +SIC=1,25,13,0<-2>2;'HEIDENHAIN ROQ425 +SID=1,25,13,0<-2>2;'HEIDENHAIN ROQ425 +SIE=1,25,13,0<-2>2;'HEIDENHAIN ROQ425 +SIF=1,25,13,0<-2>2;'HEIDENHAIN ROQ425 +SIG=O,25,13,0<-2>2;'NOT USED +SIH=O,25,13,0<-2>2;'NOT USED +APDONE=0;' FIRST TIME THROUGH AIRPAD CONTROL NOT DONE +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 +IF (_SPC>50000) +SPC=50000 +ENDIF +IF (_SPD>50000) +SPD=50000 +ENDIF +IF (_SPE>50000) +SPE=50000 +ENDIF +IF (_SPF>100000) +SPF=100000 +ENDIF +IF (_SPG>50000) +SPG=50000 +ENDIF +IF (_SPH>50000) +SPH=50000 +ENDIF +NO TE: CONTROLS THE AIRPAD SOLENOID VALVES +IF (_MOF=0);'DETECTOR ROTATE MOTOR IS ON +SB 10;'DETECTOR AIR PAD OFF-SOLENOID OFF +CB 9;'DETECTOR AIR PAD ON-SOLENOID ON +APDONE=0 +ENDIF +IF (_MOF=1)&(APDONE=0);'DETECTOR ROTATE MOTOR IS OFF +SB 9;'DETECTOR AIR PAD ON-SOLENOID OFF +CB 10;'DETECTOR AIR PAD OFF-SOLENOID ON +WT500;'WAIT 1/2 SEC +SB 10;'DETECTOR AIR PAD OFF-SOLENOID OFF +APDONE=1 +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 \ No newline at end of file diff --git a/site_ansto/instrument/rsd/DMC2280/controller3.txt b/site_ansto/instrument/rsd/DMC2280/controller3.txt new file mode 100644 index 00000000..23dafe97 --- /dev/null +++ b/site_ansto/instrument/rsd/DMC2280/controller3.txt @@ -0,0 +1,89 @@ +NO TE: KOWARI - CONTROLLER 3 +NO TE: +NO TE: $Revision: 1.1 $ +NO TE: $Date: 2007-03-20 03:10:55 $ +NO TE: Author: Dan Bartlett +NO TE: Last revision by: $Author: dbx $ +NO TE: +NO TE: A-MONOCHROMATOR FOCUS 1 +NO TE: B-MONOCHROMATOR FOCUS 1 +NO TE: C-SPARE +NO TE: D-SPARE +NO TE: E-SPARE +NO TE: F-SPARE +NO TE: G-SPARE +NO TE: H-SPARE +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,197;' CONFIGURES IP ADDRESS +AC 12500,12500,,,,,,;' SET ACELERATION +DC 12500,12500,,,,,,;' SET DECELERATION +SP 25000,25000,,,,,,;' SET SPEED +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 +IF (_SPB>25000) AXES NOT IN USE, COMMENTED OUT +SPB=25000 +ENDIF +NO IF (_SPC>50000) +NO SPC=50000 +NO ENDIF +NO IF (_SPD>50000) +NO SPD=50000 +NO ENDIF +NO IF (_SPE>30000) +NO SPE=30000 +NO ENDIF +NO IF (_SPF>30000) +NO SPF=30000 +NO ENDIF +NO IF (_SPG>30000) +NO SPG=30000 +NO ENDIF +NO IF (_SPH>30000) +NO SPH=30000 +NO ENDIF +NO TE: PROCEDURE TO UPDATE THE RESOLVER FEEDBACK. +NO TE: RESOLVER NUMBER 1 +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 +DEA=(IOBYTE1+IOBYTE2);' ADD WORDS TOGETHER, LOAD INTO DEA, USE TPA FOR VALUE +NO TE: RESOLVER NUMBER 2 +CB2;' OUTPUT WITH FALLING EDGE TO TRIGGER EMPIRE RESOLVER BOX +AI32;' LOCK DATA +IOBYTE3=_TI4;' LOAD FIRST WORD +IOBYTE4=_TI5;' LOAD SECOND WORD +IOBYTE4=(IOBYTE4&63);' MASK OUT XBUSY BIT +IOBYTE4=(IOBYTE4*256);' SHIFT REMAINING BITS 8 POSITIONS TO RIGHT +DEB=(IOBYTE3+IOBYTE4);' ADD WORDS TOGETHER, LOAD INTO DEB, USE TPB FOR VALUE +SB1 +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 ---------------------------------------- \ No newline at end of file diff --git a/site_ansto/instrument/rsd/DMC2280/controller4.txt b/site_ansto/instrument/rsd/DMC2280/controller4.txt new file mode 100644 index 00000000..ff72274f --- /dev/null +++ b/site_ansto/instrument/rsd/DMC2280/controller4.txt @@ -0,0 +1,132 @@ +NO TE: KOWARI - CONTROLLER 4 +NO TE: +NO TE: $Revision: 1.1 $ +NO TE: $Date: 2007-03-20 03:10:55 $ +NO TE: Author: Dan Bartlett +NO TE: Last revision by: $Author: dbx $ +NO TE: +NO TE: A-PRE SAMPLE COLLIMATOR X TRANSLATION +NO TE: B-PRE SAMPLE COLLIMATOR Y TRANSLATION +NO TE: C-PRE SAMPLE COLLIMATOR WIDTH +NO TE: D-POST SAMPLE COLLIMATOR X TRANSLATION +NO TE: E-POST SAMPLE COLLIMATOR Y TRANSLATION +NO TE: F-POST SAMPLE COLLIMATOR WIDTH +NO TE: G-SPARE +NO TE: H-SPARE +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 +OP 65280;' SETS OUTPUTS 9-16 ON = RELAYS OFF +IA 137,157,201,198;' CONFIGURES IP ADDRESS +AC 25000,25000,25000,25000,25000,25000,,;' SET ACELERATION +DC 25000,25000,25000,25000,25000,25000,,;' SET DECELERATION +SP 25000,25000,25000,25000,25000,25000,,;' SET SPEED +SIA=1,25,13,0<-2>2;'HEIDENHAIN ROQ425 +SIB=1,25,13,0<-2>2;'HEIDENHAIN ROQ425 +SIC=1,25,13,0<-2>2;'HEIDENHAIN ROQ425 +SID=1,25,13,0<-2>2;'HEIDENHAIN ROQ425 +SIE=1,25,13,0<-2>2;'HEIDENHAIN ROQ425 +SIF=1,25,13,0<-2>2;'HEIDENHAIN ROQ425 +SIG=0,25,13,0<-2>2;'NOT USED +SIH=0,25,13,0<-2>2;'NOT USED +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 +IF (_SPC>50000) +SPC=50000 +ENDIF +IF (_SPD>50000) +SPD=50000 +ENDIF +IF (_SPE>50000) +SPE=50000 +ENDIF +IF (_SPF>50000) +SPF=50000 +ENDIF +NO IF (_SPG>50000) AXES NOT USED, COMMENTED OUT +NO SPG=50000 +NO ENDIF +NO IF (_SPH>50000) +NO SPH=50000 +NO 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 AXIS NOT USED +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=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) AXES NOT USED, COMMENTED OUT +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 ABCDEFGH;' AFTER ALL AXES STOPPED +DCA=OLDDCA;' RESET DECEL TO OLD VALUE +DCB=OLDDCB +DCC=OLDDCC +DCD=OLDDCD +DCE=OLDDCE +DCF=OLDDCF +NO DCG=OLDDCG AXIS NOT USED +NO DCH=OLDDCH AXIS NOT USED +RE