From 1bb2e24df85546e74ce330c70f506f7ea6b7712f Mon Sep 17 00:00:00 2001 From: Douglas Clowes Date: Mon, 28 Nov 2011 13:46:22 +1100 Subject: [PATCH] Version given before migration to SICS r3291 | dcl | 2011-11-28 13:46:22 +1100 (Mon, 28 Nov 2011) | 1 line --- .../instrument/tas/DMC2280/controller2.txt | 349 ++++++++++++++ .../instrument/tas/DMC2280/controller3.txt | 250 ++++++++++ .../instrument/tas/DMC2280/controller4.txt | 365 +++++++++++---- .../instrument/tas/DMC2280/controller5.txt | 142 +++--- .../instrument/tas/DMC2280/controller6.txt | 426 ++++++++++++++++++ 5 files changed, 1385 insertions(+), 147 deletions(-) create mode 100755 site_ansto/instrument/tas/DMC2280/controller2.txt create mode 100755 site_ansto/instrument/tas/DMC2280/controller3.txt create mode 100755 site_ansto/instrument/tas/DMC2280/controller6.txt diff --git a/site_ansto/instrument/tas/DMC2280/controller2.txt b/site_ansto/instrument/tas/DMC2280/controller2.txt new file mode 100755 index 00000000..11111f46 --- /dev/null +++ b/site_ansto/instrument/tas/DMC2280/controller2.txt @@ -0,0 +1,349 @@ +'TAIPAN - CONTROLLER 2 +' +'$Revision:$ +'$Date:$ +'Author: Daniel Bartlett +'Last revision by: $author:$ +' +'A-SAMPLE TRANSLATION - TILT 1 +'B-SAMPLE TRANSLATION - TILT 2 +'C-SAMPLE TRANSLATION - LINEAR 1 +'D-SAMPLE TRANSLATION - LINEAR 2 +'E-SAMPLE TRANSLATION - ROTATE +'F-DETECTOR + ANALYSER ROTATE _TPF=2771351 ON BEAM CL +'G-ANALYSER FOCUS 1 +'H-ANALYSER FOCUS 2 +' +' +'-------------------------------------------------------------------------- +#AUTO +'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;'ALL MOTORS OFF +CN 1;'CONFIGURES LIMIT SWITCHES TO ACCEPT NC CONTACTS +II 6,8,,0;' CONFIGURES THE 6TH, 7TH & 8TH INPUT TO ACTIVATE #ININT ROUTINE +OP 65281;' SETS OUTPUTS 9-16 ON = RELAYS OFF +IA 137,157,203,132;' CONFIGURES IP ADDRESS +AC 25000,25000,25000,25000,25000,25000,12500,12500;' SET ACELERATION +DC 25000,25000,25000,25000,25000,25000,12500,12500;' SET DECELERATION +SP 25000,25000,25000,25000,25000,100000,12500,12500;' SET SPEED +SIA=0;'TURN OFF CLOCK PULSES TO ALLOW ENCODER TO INITIALISE +SIB=0 +SIC=0 +SID=0 +SIE=0 +SIF=0 +SIG=0 +SIH=0 +WT1000;'WAIT FOR ENCODER TO INITIALISE +SIA=1,25,13,0<-13>2;'HEIDENHAIN ROQ425 - SAMPLE TILT 1 +SIB=1,25,13,0<-13>2;'HEIDENHAIN ROQ425 - SAMPLE TILT 2 +SIC=1,25,13,0<-13>2;'HEIDENHAIN ROQ425 - SAMPLE TRANS 1 +SID=1,25,13,0<-13>2;'HEIDENHAIN ROQ425 - SAMPLE TRANS 2 +SIE=1,25,13,0<-13>2;'HEIDENHAIN ROQ425 - SAMPLE ROTATE +SIF=1,25,25,0<-13>2;'HEIDENHAIN RCN226 - DETECTOR + ANALYSER ROTATE +SIG=1,25,13,0<-13>2;'HEIDENHAIN ROQ425 - ANALYSER FOCUS 1 +SIH=1,25,13,0<-13>2;'HEIDENHAIN ROQ425 - ANALYSER FOCUS 2 +LSAHIT=0;' INITIALISE THE BIT SET AFTER A LIMIT IS HIT +LSBHIT=0 +LSCHIT=0 +LSDHIT=0 +LSEHIT=0 +LSFHIT=0 +LSGHIT=0 +LSHHIT=0 +APFDONE=0;' INITIALISE THE BIT FOR AXIS F AIRPAD CONTROL +JS #THREAD0 +EN +' +' +'-------------------------------------------------------------------------- +#THREAD0 +'THERE MUST BE A THREAD RUNNING FOR #LIMSWI, #TCPERR AND #ININT TO WORK +' +JS #CHKDCEL +JS #AIRPAD +JS #CHKSPD +JS #BEAMSTP +JP #THREAD0 +EN +' +' +'-------------------------------------------------------------------------- +#CHKDCEL +'ROUTINE TO RESET DECELERATIONS AFTER A LIMIT HIT +' +IF (LSAHIT=1)&(_BGA=0);'WHEN MOTION STOPS AFTER A LIMIT HIT +DCA=OLDDCA;' RESET DECEL TO OLD VALUE +LSAHIT=0 +ENDIF +' +IF (LSBHIT=1)&(_BGB=0) +DCB=OLDDCB +LSBHIT=0 +ENDIF +' +IF (LSCHIT=1)&(_BGC=0) +DCC=OLDDCC +LSCHIT=0 +ENDIF +' +IF (LSDHIT=1)&(_BGD=0) +DCD=OLDDCD +LSDHIT=0 +ENDIF +' +IF (LSEHIT=1)&(_BGE=0) +DCE=OLDDCE +LSEHIT=0 +ENDIF +' +IF (LSFHIT=1)&(_BGF=0) +DCF=OLDDCF +LSFHIT=0 +ENDIF +' +IF (LSGHIT=1)&(_BGG=0) +DCG=OLDDCG +LSGHIT=0 +ENDIF +' +IF (LSHHIT=1)&(_BGH=0) +DCH=OLDDCH +LSHHIT=0 +ENDIF +EN +' +' +'-------------------------------------------------------------------------- +#AIRPAD +'ROUTINE TO CONTROL AIRPADS +' +'CONTROLS THE AIRPAD SOLENOID VALVES FOR ANALYSER STAGE +IF (_MOF=0);'ANALYSER MOTOR IS ON +SB 10;'ANALYSER AIR PAD OFF-SOLENOID OFF +CB 9;'ANALYSER AIR PAD ON-SOLENOID ON +APFDONE=0 +ENDIF +IF (_MOF=1)&(APFDONE=0);'ANALYSER MOTOR IS OFF +SB 9;'ANALYSER AIR PAD ON-SOLENOID OFF +CB 10;'ANALYSER AIR PAD OFF-SOLENOID ON +WT500;'WAIT 1/2 SEC +SB 10;'ANALYSER AIR PAD OFF-SOLENOID OFF +APFDONE=1 +ENDIF +' +' +'-------------------------------------------------------------------------- +#CHKSPD +'ROUTINE TO CHECK THE SPEED OF THE AXES IS NOT GREATER THAN MAX 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>25000) +SPG=25000 +ENDIF +' +IF (_SPH>25000) +SPH=25000 +ENDIF +EN +' +' +'-------------------------------------------------------------------------- +#BEAMSTP +' +'THIS ROUTINE CONTROLS THE POSITION OF THE BEAMSTOP +'IF THE ANALYSER IS WITHIN THE RANGE SPECIFIED THEN THE BEAMSTOP IS DOWN +'TO AVOID COLLISIONS WITH SLITS AND OTHER EQUIPMENT +' +IF (_XQ1=-1) +'#BSCHECK NOT RUNNING +XQ #BSCHECK,1 +ENDIF +IF (_TPF>9665152)&(_TPF<14370000) +'IF (_TPF>9665152)&(_TPF<13168731) +'IF (_TPF>12554353)&(_TPF<15923500) +'IF (_TPF>12554353)&(_TPF<15809209) +'ANALYSER WITHIN RANGE, BEAMSTOP NEEDS TO BE DOWN +SB11;'TURN OFF SOLENOID VALVE +ELSE +CB11;'TURN ON SOLENOID VALVE +ENDIF +EN +' +' +'-------------------------------------------------------------------------- +#BSCHECK +'THIS ROUTINE CHECKS THE POSITION OF THE BEAMSTOP AND REPORTS ERRORS +'TO THE SAFETY AND INTERLOCK SYSTEM +' +'IN[13]=1 TOP LIMIT ACTUATED +'IN[14]=1 BOTTOM LIMIT ACTUATED +IF ((_OP0&1024)=0) +'RELAY 11 HAS BEEN ENABLED THEREFORE THE BEAMSTOP SHOULD BE UP +WT1500;'DELAY TO ALLOW BEAMSTOP TO MOVE +IF ((@IN[13]=1)&(@IN[14]=0)) +'BEAMSTOP UP AND NOT DOWN +CB16;'SEND ALL-OK TO SIS +ELSE +SB16;'SEND ERROR BIT TO SIS +ENDIF +ENDIF +' +IF ((_OP0&1024)<>0) +'RELAY 11 HAS BEEN DISABLED THEREFORE THE BEAMSTOP SHOULD BE DOWN +WT1500;'DELAY TO ALLOW BEAMSTOP TO MOVE +IF ((@IN[13]=0)&(@IN[14]=1)) +'BEAMSTOP DOWN AND NOT UP +CB16;'SEND ALL-OK TO SIS +ELSE +SB16;'SEND ERROR BIT TO SIS +ENDIF +ENDIF +' +JP #BSCHECK +EN +' +'-------------------------------------------------------------------------- +#TCPERR +'EMPTY TCP ERROR ROUTINE +' +RE +' +' +'-------------------------------------------------------------------------- +#ININT +'INTERUPT ROUTINE +'TO STOP ALL AXES WHEN SAFETY & INTERLOCK SYSTEM REQUESTS IT +'TO STOP AXIS F WHEN LIGHT CURTAINS BROKEN BUT TO ALLOW MOVEMENT AWAY +' +IF @IN[8]=0 +'SAFETY INTERLOCK SYSTEM ALL AXES SLOWDOWN +CN-1;'RECONFIGURES LIMITS. RESULT:ALL LIMITS SEEN AS HIT. WILL RUN #LIMSWI +WT250 +CN1;'SETS LIMITS BACK TO NORMAL +JP #ENININT +ENDIF +' +IF @IN[6]=0 +'LOW ANGLE LIGHT CURTAIN BROKEN +IF _TVF>0 +'AXIS HEADING TOWARDS LIGHT CURTAIN +STF +ENDIF +ENDIF +' +IF @IN[7]=0 +'HIGH ANGLE LIGHT CURTAIN BROKEN +IF _TVF<0 +'AXIS HEADING TOWARDS LIGHT CURTAIN +STF +ENDIF +ENDIF +' +#ENININT +RI +' +' +'-------------------------------------------------------------------------- +#CMDERR +'ROUTINE TO HANDLE COMMAND ERRORS +' +ZS0 +EN1 +' +' +'-------------------------------------------------------------------------- +#LIMSWI +'ROUTINE TO HASTEN THE DECELERATION OF AN AXIS WHEN A LIMIT SWITCH IS HIT +' +IF (_LFA=0)|(_LRA=0);'LIMIT HIT +IF (LSAHIT=0)&(_BGA=1);'STILL MOVING, FIRST TIME +OLDDCA=_DCA;'REMEMBER OLD DECEL VALUE +DCA=100000;'INCREASE DECEL VALUE FOR RAPID STOP +LSAHIT=1 +ENDIF +ENDIF +' +IF (_LFB=0)|(_LRB=0) +IF (LSBHIT=0)&(_BGB=1) +OLDDCB=_DCB +DCB=100000 +LSBHIT=1 +ENDIF +ENDIF +' +IF (_LFC=0)|(_LRC=0) +IF (LSCHIT=0)&(_BGC=1) +OLDDCC=_DCC +DCC=100000 +LSCHIT=1 +ENDIF +ENDIF +' +IF (_LFD=0)|(_LRD=0) +IF (LSDHIT=0)&(_BGD=1) +OLDDCD=_DCD +DCD=100000 +LSDHIT=1 +ENDIF +ENDIF +' +IF (_LFE=0)|(_LRE=0) +IF (LSEHIT=0)&(_BGE=1) +OLDDCE=_DCE +DCE=200000 +LSEHIT=1 +ENDIF +ENDIF +' +IF (_LFF=0)|(_LRF=0) +IF (LSFHIT=0)&(_BGF=1) +OLDDCF=_DCF +DCF=100000 +LSFHIT=1 +ENDIF +ENDIF +' +IF (_LFG=0)|(_LRG=0) +IF (LSGHIT=0)&(_BGG=1) +OLDDCG=_DCG +DCG=200000 +LSGHIT=1 +ENDIF +ENDIF +' +IF (_LFH=0)|(_LRH=0) +IF (LSHHIT=0)&(_BGH=1) +OLDDCH=_DCH +DCH=200000 +LSHHIT=1 +ENDIF +ENDIF +RE +' +' diff --git a/site_ansto/instrument/tas/DMC2280/controller3.txt b/site_ansto/instrument/tas/DMC2280/controller3.txt new file mode 100755 index 00000000..51eb6fbd --- /dev/null +++ b/site_ansto/instrument/tas/DMC2280/controller3.txt @@ -0,0 +1,250 @@ +'TAIPAN - CONTROLLER 3 +' +'$Revision:$ +'$Date:$ +'Author: Daniel Bartlett +'Last revision by: $author:$ +' +'A-MONOCHROMATOR 1 HORIZONTAL FOCUS +'B-MONOCHROMATOR 1 VERTICAL FOCUS +'C-MONOCHROMATOR 2 HORIZONTAL FOCUS +'D-MONOCHROMATOR 2 VERTICAL FOCUS +'E-MONOCHROMATOR ROTATE +'F-SPARE +'G-SPARE +'H-SPARE +' +' +'4096 COUNTS / 2 DEGREES +'2048 COUNTS / DEGREE +'PG 00 DEGREES = 16034863 +'PG 45 DEGREES = 16127023 +'-------------------------------------------------------------------------- +#AUTO +'THIS IS THE PROGRAM THAT RUNS AUTOMATICALLY ON CONTROLLER STARTUP +' +MT-2,-2,-2,-2,-2.5,-2,-2,-2;'CONFIGURES ALL AXES AS STEPPER, E REVERSED +MO;'ALL MOTORS 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,203,133;' CONFIGURES IP ADDRESS +AC 6000,6000,6000,6000,25000,,,;' SET ACELERATION +DC 6000,6000,6000,6000,25000,,,;' SET DECELERATION +SP 12500,12500,50000,12500,100000,,,;' SET SPEED +SIA=0;'TURN OFF CLOCK PULSES TO ALLOW ENCODER TO INITIALISE +SIB=0 +SIC=0 +SID=0 +SIE=0 +SIF=0 +SIG=0 +SIH=0 +WT1000;'WAIT FOR ENCODER TO INITIALISE +SIA=1,24,12,0<-11>1;'RESOLVER VIA VEGA 2790 BOARD +SIB=1,24,12,0<-11>1;'RESOLVER VIA VEGA 2790 BOARD +SIC=1,24,12,0<-11>1;'RESOLVER VIA VEGA 2790 BOARD +SID=1,24,12,0<-11>1;'RESOLVER VIA VEGA 2790 BOARD +SIE=1,24,12,0<-11>1;'RESOLVER VIA VEGA 2790 BOARD +LSAHIT=0;' INITIALISE THE BIT SET AFTER A LIMIT IS HIT +LSBHIT=0 +LSCHIT=0 +LSDHIT=0 +LSEHIT=0 +'LSFHIT=0 +'LSGHIT=0 +'LSHHIT=0 +JS #THREAD0 +EN +' +' +'-------------------------------------------------------------------------- +#THREAD0 +'THERE MUST BE A THREAD RUNNING FOR #LIMSWI, #TCPERR AND #ININT TO WORK +' +JW #CHKDCEL +JS #CHKSPD +JP #THREAD0 +EN +' +' +'-------------------------------------------------------------------------- +#CHKDCEL +'ROUTINE TO RESET DECELERATIONS AFTER A LIMIT HIT +' +IF ((LSAHIT=1)&(_BGA=0));'WHEN MOTION STOPS AFTER A LIMIT HIT +DCA=OLDDCA;' RESET DECEL TO OLD VALUE +LSAHIT=0 +ENDIF +' +IF ((LSBHIT=1)&(_BGB=0)) +DCB=OLDDCB +LSBHIT=0 +ENDIF +' +IF ((LSCHIT=1)&(_BGC=0)) +DCC=OLDDCC +LSCHIT=0 +ENDIF +' +IF ((LSDHIT=1)&(_BGD=0)) +DCD=OLDDCD +LSDHIT=0 +ENDIF +' +IF ((LSEHIT=1)&(_BGE=0)) +DCE=OLDDCE +LSEHIT=0 +ENDIF +' +'IF ((LSFHIT=1)&(_BGF=0)) +'DCF=OLDDCF +'LSFHIT=0 +'ENDIF +' +'IF ((LSGHIT=1)&(_BGG=0)) +'DCG=OLDDCG +'LSGHIT=0 +'ENDIF +' +'IF ((LSHHIT=1)&(_BGH=0)) +'DCH=OLDDCH +'LSHHIT=0 +'ENDIF +'EN +' +' +'-------------------------------------------------------------------------- +#CHKSPD +'ROUTINE TO CHECK THE SPEED OF THE AXES IS NOT GREATER THAN MAX ALLOWED +' +IF (_SPA>25000) +SPA=25000 +ENDIF +' +IF (_SPB>25000) +SPB=25000 +ENDIF +' +IF (_SPC>25000) +SPC=25000 +ENDIF +' +IF (_SPD>25000) +SPD=25000 +ENDIF +' +IF (_SPE>100000) +SPE=100000 +ENDIF +' +'IF (_SPF>100000) +'SPF=100000 +'ENDIF +' +'IF (_SPG>50000) +'SPG=50000 +'ENDIF +' +'IF (_SPH>100000) +'SPH=100000 +'ENDIF +'EN +' +' +'-------------------------------------------------------------------------- +#TCPERR +'EMPTY TCP ERROR ROUTINE +' +RE +' +' +'-------------------------------------------------------------------------- +#ININT +'INTERUPT ROUTINE TO STOP ALL AXES +'WHEN SAFETY & INTERLOCK SYSTEM REQUESTS IT +' +CN-1;' RECONFIGURES LIMITS. RESULT:ALL LIMITS SEEN AS HIT. WILL RUN #LIMSWI +WT250 +CN1;' SETS LIMITS BACK TO NORMAL +RI +' +' +'-------------------------------------------------------------------------- +#CMDERR +'ROUTINE TO HANDLE COMMAND ERRORS +' +ZS0 +EN1 +' +' +'-------------------------------------------------------------------------- +#LIMSWI +'ROUTINE TO HASTEN THE DECELERATION OF AN AXIS WHEN A LIMIT SWITCH IS HIT +' +IF ((_LFA=0)|(_LRA=0));'LIMIT HIT +IF ((LSAHIT=0)&(_BGA=1));'STILL MOVING, FIRST TIME +OLDDCA=_DCA;'REMEMBER OLD DECEL VALUE +DCA=100000;'INCREASE DECEL VALUE FOR RAPID STOP +LSAHIT=1 +ENDIF +ENDIF +' +IF ((_LFB=0)|(_LRB=0)) +IF ((LSBHIT=0)&(_BGB=1)) +OLDDCB=_DCB +DCB=100000 +LSBHIT=1 +ENDIF +ENDIF +' +IF ((_LFC=0)|(_LRC=0)) +IF ((LSCHIT=0)&(_BGC=1)) +OLDDCC=_DCC +DCC=100000 +LSCHIT=1 +ENDIF +ENDIF +' +IF ((_LFD=0)|(_LRD=0)) +IF ((LSDHIT=0)&(_BGD=1)) +OLDDCD=_DCD +DCD=100000 +LSDHIT=1 +ENDIF +ENDIF +' +IF ((_LFE=0)|(_LRE=0)) +IF ((LSEHIT=0)&(_BGE=1)) +OLDDCE=_DCE +DCE=200000 +LSEHIT=1 +ENDIF +ENDIF +' +'IF ((_LFF=0)|(_LRF=0)) +'IF ((LSFHIT=0)&(_BGF=1)) +'OLDDCF=_DCF +'DCF=200000 +'LSFHIT=1 +'ENDIF +'ENDIF +' +'IF ((_LFG=0)|(_LRG=0)) +'IF ((LSGHIT=0)&(_BGG=1)) +'OLDDCG=_DCG +'DCG=200000 +'LSGHIT=1 +'ENDIF +'ENDIF +' +'IF ((_LFH=0)|(_LRH=0)) +'IF ((LSHHIT=0)&(_BGH=1)) +'OLDDCH=_DCH +'DCH=200000 +'LSHHIT=1 +'ENDIF +'ENDIF +RE +' +' diff --git a/site_ansto/instrument/tas/DMC2280/controller4.txt b/site_ansto/instrument/tas/DMC2280/controller4.txt index 9fdc0927..2a6ad0dd 100644 --- a/site_ansto/instrument/tas/DMC2280/controller4.txt +++ b/site_ansto/instrument/tas/DMC2280/controller4.txt @@ -1,80 +1,285 @@ -NO TE: TAIPAN - CONTROLLER 4 -NO TE: -NO TE: $Revision: 1.2 $ -NO TE: $Date: 2007-09-24 01:28:42 $ -NO TE: Author: Dan Bartlett -NO TE: Last revision by: $Author: dbx $ -NO TE: -NO TE: A-SPARE -NO TE: B-SPARE -NO TE: C-SPARE -NO TE: D-SPARE -NO TE: E-VIRTUAL SOURCE RIGHT, +VE OPEN, 6mm/TURN -NO TE: F-VIRTUAL SOURCE LEFT, -VE OPEN, 6mm/TURN -NO TE: G-SPARE -NO TE: H-SPARE -NO TE: 55mm GAP AT LIMITS, EQUAL ABOUT BEAM CL -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,203,134;' CONFIGURES IP ADDRESS -AC ,,,,25000,25000,,;' SET ACELERATION -DC ,,,,25000,25000,,;' SET DECELERATION -SP ,,,,12500,12500,,;' 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 -NO IF (_SPA>50000) -NO SPA=50000 -NO ENDIF -NO IF (_SPB>50000) -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<>12500) -SPE=12500 -ENDIF -IF (_SPF<>12500) -SPF=12500 -ENDIF -NO IF (_SPG>50000) -NO SPG=50000 -NO ENDIF -NO IF (_SPH>50000) -NO SPH=50000 -NO ENDIF -NO TE: CHECKS TO SEE IF DECELERATIONS OK -IF (_DCE<>25000) -DCE=25000 -ENDIF -IF (_DCF<>25000) -DCF=25000 -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 ---------------------------------------- +'TAIPAN - CONTROLLER 4 +' +'$Revision:$ +'$Date:$ +'Author: Daniel Bartlett +'Last revision by: $author:$ +' +'A-ANALYSER TILT 1 +'B-ANALYSER TILT 2 +'C-ANALYSER TRANSLATE +'D-ANALYSER ROTATE LFD@24724763 LRD@25454179 +'E-VIRTUAL SOURCE LEFT, +VE OPEN, 6mm/TURN +'F-VIRTUAL SOURCE RIGHT, -VE OPEN, 6mm/TURN +'G-FILTER ROTATE +'H-PRIMARY COLLIMATOR TRANSLATE +' +' +'-------------------------------------------------------------------------- +#AUTO +'THIS IS THE PROGRAM THAT RUNS AUTOMATICALLY ON CONTROLLER STARTUP +' +MT-2,-2,-2,-2.5,-2,-2,-2,-2;'CONFIGURES ALL AXES AS STEPPER +MO;'ALL MOTORS 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,203,134;'CONFIGURES IP ADDRESS +AC 25000,25000,25000,25000,25000,25000,25000,25000;'SET ACELERATION +DC 25000,25000,25000,25000,25000,25000,25000,25000;'SET DECELERATION +SP 25000,25000,25000,25000,12500,12500,25000,12500;'SET SPEED +SIA=0;'TURN OFF CLOCK PULSES TO ALLOW ENCODER TO INITIALISE +SIB=0 +SIC=0 +SID=0 +SIE=0 +SIF=0 +SIG=0 +SIH=0 +WT1000;'WAIT FOR ENCODER TO INITIALISE +SIA=1,25,13,0<-13>2;'HEIDENHAIN ROQ425 +SIB=1,25,13,0<-13>2;'HEIDENHAIN ROQ425 +SIC=1,25,13,0<-13>2;'HEIDENHAIN ROQ425 +SID=1,25,13,0<-13>2;'HEIDENHAIN ROQ425 +SIE=1,24,12,0<-10>1;'RESOLVER VIA VEGA 2790 BOARD +SIF=1,24,12,0<-10>1;'RESOLVER VIA VEGA 2790 BOARD +SIG=1,25,13,0<-13>2;'HEIDENHAIN ROQ425 +SIH=1,24,12,0<-10>1;'RESOLVER VIA VEGA 2790 BOARD +LSAHIT=0;'INITIALISE THE BIT SET AFTER A LIMIT IS HIT +LSBHIT=0 +LSCHIT=0 +LSDHIT=0 +LSEHIT=0 +LSFHIT=0 +LSGHIT=0 +LSHHIT=0 +JS #THREAD0 +EN +' +' +'-------------------------------------------------------------------------- +#THREAD0 +'THERE MUST BE A THREAD RUNNING FOR #LIMSWI, #TCPERR AND #ININT TO WORK +' +JS #CHKDCEL +JS #CHKSPD +JP #THREAD0 +EN +' +' +'-------------------------------------------------------------------------- +#VSLMOVE +'ROUTINE TO MOVE THE VIRTUAL SOURCE RIGHT USING A CLOSED LOOP SSI POSITION +' +'E AXIS +'TPE AT LIMIT 16752106 +'TPE AT BEAM CL 16773946 +' +DBAND1=2 +PRE=-25000*((VSLPOS-_TPE)/4096);'CALC STEPS TO DESTINATION +SHE +BGE +AME +JP #VSLMOVE, (@ABS[VSLPOS-_TPE]>DBAND1) +'JUMP BACK FOR MORE TRIES IF OUTSIDE DEADBAND1 +EN +' +' +'----------------------------------------------------------------------------- +#VSRMOVE +'ROUTINE TO MOVE THE VIRTUAL SOURCE RIGHT USING A CLOSED LOOP SSI POSITION +' +'F AXIS +'TPF AT LIMIT 16775162 +'TPF AT BEAM CL 16756735 +' +DBAND2=2 +PRF=-25000*((VSRPOS-_TPF)/4096);'CALC STEPS TO DESTINATION +SHF +BGF +AMF +JP #VSRMOVE, (@ABS[VSRPOS-_TPF]>DBAND2) +'JUMP BACK FOR MORE TRIES IF OUTSIDE DEADBAND2 +EN +' +' +'----------------------------------------------------------------------------- +#CHKDCEL +'ROUTINE TO RESET DECELERATIONS AFTER A LIMIT HIT +' +IF ((LSAHIT=1)&(_BGA=0));'WHEN MOTION STOPS AFTER A LIMIT HIT +DCA=OLDDCA;'RESET DECEL TO OLD VALUE +LSAHIT=0 +ENDIF +' +IF ((LSBHIT=1)&(_BGB=0)) +DCB=OLDDCB +LSBHIT=0 +ENDIF +' +IF ((LSCHIT=1)&(_BGC=0)) +DCC=OLDDCC +LSCHIT=0 +ENDIF +' +IF ((LSDHIT=1)&(_BGD=0)) +DCD=OLDDCD +LSDHIT=0 +ENDIF +' +IF ((LSEHIT=1)&(_BGE=0)) +DCE=OLDDCE +LSEHIT=0 +ENDIF +' +IF ((LSFHIT=1)&(_BGF=0)) +DCF=OLDDCF +LSFHIT=0 +ENDIF +' +IF ((LSGHIT=1)&(_BGG=0)) +DCG=OLDDCG +LSGHIT=0 +ENDIF +' +IF ((LSHHIT=1)&(_BGH=0)) +DCH=OLDDCH +LSHHIT=0 +ENDIF +EN +' +' +'-------------------------------------------------------------------------- +#CHKSPD +'ROUTINE TO CHECK THE SPEED OF THE AXES IS NOT GREATER THAN MAX ALLOWED +' +IF (_SPA>50000) +SPA=50000 +ENDIF +' +IF (_SPB>50000) +SPB=50000 +ENDIF +' +IF (_SPC>50000) +SPC=50000 +ENDIF +' +IF (_SPD>100000) +SPD=100000 +ENDIF +' +IF (_SPE>12500) +SPE=12500 +ENDIF +' +IF (_SPF>12500) +SPF=12500 +ENDIF +' +IF (_SPG>50000) +SPG=50000 +ENDIF +' +IF (_SPH>12500) +SPH=12500 +ENDIF +EN +' +' +'-------------------------------------------------------------------------- +#TCPERR +'EMPTY TCP ERROR ROUTINE +' +RE +' +' +'-------------------------------------------------------------------------- +#ININT +'INTERUPT ROUTINE TO STOP ALL AXES +'WHEN SAFETY & INTERLOCK SYSTEM REQUESTS IT +' +CN-1;'RECONFIGURES LIMITS. RESULT:ALL LIMITS SEEN AS HIT. WILL RUN #LIMSWI +WT250 +CN1;'SETS LIMITS BACK TO NORMAL +RI +' +' +'-------------------------------------------------------------------------- +#CMDERR +'ROUTINE TO HANDLE COMMAND ERRORS +' +ZS0 +EN1 +' +' +'-------------------------------------------------------------------------- +#LIMSWI +'ROUTINE TO HASTEN THE DECELERATION OF AN AXIS WHEN A LIMIT SWITCH IS HIT +' +IF ((_LFA=0)|(_LRA=0));'LIMIT HIT +IF ((LSAHIT=0)&(_BGA=1));'STILL MOVING, FIRST TIME +OLDDCA=_DCA;'REMEMBER OLD DECEL VALUE +DCA=100000;'INCREASE DECEL VALUE FOR RAPID STOP +LSAHIT=1 +ENDIF +ENDIF +' +IF ((_LFB=0)|(_LRB=0)) +IF ((LSBHIT=0)&(_BGB=1)) +OLDDCB=_DCB +DCB=100000 +LSBHIT=1 +ENDIF +ENDIF +' +IF ((_LFC=0)|(_LRC=0)) +IF ((LSCHIT=0)&(_BGC=1)) +OLDDCC=_DCC +DCC=100000 +LSCHIT=1 +ENDIF +ENDIF +' +IF ((_LFD=0)|(_LRD=0)) +IF ((LSDHIT=0)&(_BGD=1)) +OLDDCD=_DCD +DCD=100000 +LSDHIT=1 +ENDIF +ENDIF +' +IF ((_LFE=0)|(_LRE=0)) +IF ((LSEHIT=0)&(_BGE=1)) +OLDDCE=_DCE +DCE=50000 +LSEHIT=1 +ENDIF +ENDIF +' +IF ((_LFF=0)|(_LRF=0)) +IF ((LSFHIT=0)&(_BGF=1)) +OLDDCF=_DCF +DCF=50000 +LSFHIT=1 +ENDIF +ENDIF +' +IF ((_LFG=0)|(_LRG=0)) +IF ((LSGHIT=0)&(_BGG=1)) +OLDDCG=_DCG +DCG=100000 +LSGHIT=1 +ENDIF +ENDIF +' +IF ((_LFH=0)|(_LRH=0)) +IF ((LSHHIT=0)&(_BGH=1)) +OLDDCH=_DCH +DCH=100000 +LSHHIT=1 +ENDIF +ENDIF +RE +' +' diff --git a/site_ansto/instrument/tas/DMC2280/controller5.txt b/site_ansto/instrument/tas/DMC2280/controller5.txt index 52c2e079..cdaa55df 100644 --- a/site_ansto/instrument/tas/DMC2280/controller5.txt +++ b/site_ansto/instrument/tas/DMC2280/controller5.txt @@ -1,67 +1,75 @@ -NO TE: TAIPAN - CONTROLLER 5 -NO TE: -NO TE: $Revision: 1.2 $ -NO TE: $Date: 2007-09-24 01:29:31 $ -NO TE: Author: Dan Bartlett -NO TE: Last revision by: $Author: dbx $ -NO TE: -NO TE: A-SECONDARY SHUTTER, +VE OPEN, 6mm/TURN -NO TE: ONE AXIS CONTROLLER ONLY -NO ---------------------------------------- -#AUTO -NO TE: THIS IS THE PROGRAM THAT RUNS AUTOMATICALLY ON CONTROLLER STARTUP -SHA -MTA=-2;'CONFIGURES ALL AXES AS STEPPER -CN 1;' CONFIGURES LIMIT SWITCHES TO ACCEPT NC CONTACTS -IA 137,157,203,135;' CONFIGURES IP ADDRESS -ACA=100000;' SET ACELERATION -DCA=100000;' SET DECELERATION -SPA=50000;' SET SPEED -JS #THREAD0 -EN -NO ---------------------------------------- -#THREAD0 -NO TE: CONTROLS THE SECONDARY SHUTTER -NO TE: INPUT 5=SECONDARY SHUTTER CLOSE SIGNAL 1 -NO TE: INPUT 6=SECONDARY SHUTTER CLOSE SIGNAL 2 -NO TE: INPUT 7=SECONDARY SHUTTER OPEN SIGNAL 1 -NO TE: INPUT 8=SECONDARY SHUTTER OPEN SIGNAL 2 -IF ((_TI0&192)=0)&(_BGA=0)&(_LFA=1) -NO TE: INPUTS 7,8 EXCLUSIVELY ACTIVE(0) & NOT MOVING & NOT ALREADY OPEN -NO TE: SECONDARY SHUTTER COMMANDED TO OPEN -NO TE: INPUTS 1,2,3 AND 4 ARE MASKED OUT BY THE &192 -PRA=580000;'APROX 140mm -BGA -ENDIF -IF ((_TI0&192<>0)&(_LRA=1) -NO TE: INPUTS 7,8 NOT EXCLUSIVELY ACTIVE(0) & NOT ALREADY CLOSED -NO TE: SECONDARY SHUTTER COMMANDED TO CLOSE -NO TE: INPUTS 1,2,3 AND 4 ARE MASKED OUT BY THE &192 -STA;' STOP ANY MOTION -AMA;' AFTER MOTION IS STOPPED -PRA=-580000;' APROX 140mm -BGA;' DRIVE SHUTTER CLOSED TO LIMIT SWITCH -AMA -ENDIF -JP #THREAD0 -EN -NO ---------------------------------------- -#TCPERR -NO TE: EMPTY ROUTINE FOR A TCP ERROR -RE -NO ---------------------------------------- -#CMDERR -NO TE: THIS IS A ROUTINE TO HANDLE COMMAND ERRORS -ZS0;' ZERO STACK -EN1 -NO ---------------------------------------- -#MONSWI -NO TE: THIS IS A ROUTINE TO MONITOR THE POSITION -NO TE: OF THE SECONDARY SHUTTER -IF (_LFA=1)&(_LRA=1) -MG {EA}, "SS NOT OPEN, NOT CLOSED" -WT200 -ENDIF -JP #MONSWI -EN -NO ---------------------------------------- \ No newline at end of file +'TAIPAN - CONTROLLER 5 +' +'$Revision:$ +'$Date$ +'Author: Dan Bartlett +'Last revision by: $Author:$ +' +'A-SECONDARY SHUTTER, +VE OPEN, 6mm/TURN +'ONE AXIS CONTROLLER ONLY +' +' +'----------------------------------------------------------------------------- +#AUTO +NO TE: THIS IS THE PROGRAM THAT RUNS AUTOMATICALLY ON CONTROLLER STARTUP +' +MO;'MOTOR OFF +SIA=1,24,12,0<-2>1;'RESOLVER VIA VEGA 2790 BOARD +MTA=-2;'CONFIGURES AXIS AS STEPPER +CN 1;' CONFIGURES LIMIT SWITCH TO ACCEPT NC CONTACTS +IA 137,157,203,135;' CONFIGURES IP ADDRESS +ACA=100000;' SET ACELERATION +DCA=100000;' SET DECELERATION +SPA=50000;' SET SPEED +JS #THREAD0 +EN +' +' +'----------------------------------------------------------------------------- +#THREAD0 +'CONTROLS THE SECONDARY SHUTTER +' +'INPUT 5=SECONDARY SHUTTER CLOSE SIGNAL 1 +'INPUT 6=SECONDARY SHUTTER CLOSE SIGNAL 2 +'INPUT 7=SECONDARY SHUTTER OPEN SIGNAL 1 +'INPUT 8=SECONDARY SHUTTER OPEN SIGNAL 2 +IF ((@IN[5]=1)&(@IN[6]=1)&(@IN[7]=0)&(@IN[8]=0)&(_BGA=0)&(_LFA=1)) +'INPUTS 5&6 INACTIVE(1) & INPUT 7&8 ACTIVE(0) & NOT MOVING & NOT ALREADY OPEN +'SECONDARY SHUTTER COMMANDED TO OPEN +JGA=50000;' JOG OPEN AT 12mm/s +SHA;' TURN ON MOTOR +BGA;' DRIVE SHUTTER OPEN +ENDIF +IF (((@IN[7]=1)|(@IN[8]=1))&(_LRA=1)) +'EITHER OF INPUTS 7 OR 8 INACTIVE(1) & NOT ALREADY CLOSED +'SECONDARY SHUTTER COMMANDED TO CLOSE +STA;' STOP ANY MOTION +MCA;' AFTER MOTION IS STOPPED +JGA=-50000;' JOG CLOSED AT 12mm/s +SHA;' TURN ON MOTOR +BGA;' DRIVE SHUTTER CLOSED +MCA +ENDIF +IF (((_LFA=0)|(_LRA=0))&(_BGA=0)) +'AT EITHER LIMIT AND NOT MOVING +MOA;' TURN OFF MOTOR +ENDIF +JP #THREAD0 +EN +' +' +'----------------------------------------------------------------------------- +#TCPERR +'EMPTY TCP ERROR ROUTINE +' +RE +' +' +'----------------------------------------------------------------------------- +#CMDERR +'ROUTINE TO HANDLE COMMAND ERRORS +' +ZS0 +EN1 +' +' diff --git a/site_ansto/instrument/tas/DMC2280/controller6.txt b/site_ansto/instrument/tas/DMC2280/controller6.txt new file mode 100755 index 00000000..608f633b --- /dev/null +++ b/site_ansto/instrument/tas/DMC2280/controller6.txt @@ -0,0 +1,426 @@ +'TAIPAN - CONTROLLER 6 +' +'AUTHOR - DANIEL BARTLETT +'DATE - 23.02.2011 +' +'A-SLIT S1 LEFT BLADE +'B-SLIT S1 RIGHT BLADE +'C-SLIT S1 TOP BLADE +'D-SLIT S1 BOTTOM BLADE +'E-SLIT S2 LEFT BLADE +'F-SLIT S2 RIGHT BLADE +'G-SLIT S2 TOP BLADE +'H-SLIT S2 BOTTOM BLADE +' +' +'----------------------------------------------------------------------------- +#AUTO +'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;'ALL MOTORS OFF +CN1;'CONFIGURES LIMIT SWITCHES. NC CONTACTS USE CN1. NO CONTACT USE CN-1 +II 8,,,0;'CONFIGURES THE 8TH INPUT TO ACTIVATE THE #ININT ROUTINE +OP 65281;'SETS OUTPUTS 9-16 ON = RELAYS OFF +IA 137,157,203,136;'CONFIGURES IP ADDRESS +AC 60416,60416,60416,60416,60416,60416,60416,60416;' SET ACELERATION +DC 60416,60416,60416,60416,60416,60416,60416,60416;' SET DECELERATION +SP 30000,30000,30000,30000,30000,30000,30000,30000;' SET SPEED +SIA=0;'TURN OFF CLOCK PULSES TO ALLOW ENCODER TO INITIALISE +SIB=0 +SIC=0 +SID=0 +SIE=0 +SIF=0 +SIG=0 +SIH=0 +WT1000;'WAIT FOR ENCODER TO INITIALISE +'SIA=1,25,13,0<-26>2;'HEIDENHAIN ROQ425 +'SIA=1,25,25,0<-26>2;'HEIDENHAIN RCN226 +'SIA=1,25,12,-1<-26>1;'VEGA RESOLVER TO SSI CONVERTER +'SIA=1,25,13,0<-26>1;'IVO GXM2H +'SIA=1,25,13,0<-26>2;'KUEBLER 5863 +'SIA=1,31,13,0<26>2;'IVO STRING PULL, 31 BIT CONTROLLER REQUIRED +'SIA=1,24,18,6<-26>2;'IVO PLATYPUS COLLIMATION TILT +'SIA=1,15,15,0<-26>2;'GURLEY 15BIT +LSAHIT=0;'INITIALISE THE BIT SET AFTER A LIMIT IS HIT +LSBHIT=0 +LSCHIT=0 +LSDHIT=0 +LSEHIT=0 +LSFHIT=0 +LSGHIT=0 +LSHHIT=0 +S1HOMED=0;'SLIT S1 NOT HOMED +S2HOMED=0;'SLIT S2 NOT HOMED +JS #THREAD0 +EN +' +' +'----------------------------------------------------------------------------- +#THREAD0 +'THERE MUST BE A THREAD RUNNING FOR #LIMSWI, #TCPERR AND #ININT TO WORK +' +JS #CHKDCEL +JS #CHKSPD +JP #THREAD0 +EN +' +' +'----------------------------------------------------------------------------- +#CHKDCEL +'ROUTINE TO RESET DECELERATIONS AFTER A LIMIT HIT +' +IF (LSAHIT=1)&(_BGA=0);'WHEN MOTION STOPS AFTER A LIMIT HIT +DCA=OLDDCA;'RESET DECEL TO OLD VALUE +LSAHIT=0 +ENDIF +' +IF (LSBHIT=1)&(_BGB=0) +DCB=OLDDCB +LSBHIT=0 +ENDIF +' +IF (LSCHIT=1)&(_BGC=0) +DCC=OLDDCC +LSCHIT=0 +ENDIF +' +IF (LSDHIT=1)&(_BGD=0) +DCD=OLDDCD +LSDHIT=0 +ENDIF +' +IF (LSEHIT=1)&(_BGE=0) +DCE=OLDDCE +LSEHIT=0 +ENDIF +' +IF (LSFHIT=1)&(_BGF=0) +DCF=OLDDCF +LSFHIT=0 +ENDIF +' +IF (LSGHIT=1)&(_BGG=0) +DCG=OLDDCG +LSGHIT=0 +ENDIF +' +IF (LSHHIT=1)&(_BGH=0) +DCH=OLDDCH +LSHHIT=0 +ENDIF +EN +' +' +'----------------------------------------------------------------------------- +#CHKSPD +'ROUTINE TO CHECK THE SPEED OF THE AXES IS NOT GREATER THAN MAX ALLOWED +' +IF (_SPA>30000) +SPA=30000 +ENDIF +' +IF (_SPB>30000) +SPB=30000 +ENDIF +' +IF (_SPC>30000) +SPC=30000 +ENDIF +' +IF (_SPD>30000) +SPD=30000 +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 +EN +' +' +'----------------------------------------------------------------------------- +#TCPERR +'EMPTY TCP ERROR ROUTINE +' +RE +' +' +'----------------------------------------------------------------------------- +#ININT +'INTERUPT ROUTINE TO STOP ALL AXES +'WHEN SAFETY & INTERLOCK SYSTEM REQUESTS IT +CN-1;'RECONFIGURES LIMITS. RESULT:ALL LIMITS SEEN AS HIT. WILL RUN #LIMSWI +WT250 +CN1;'SETS LIMITS BACK TO NORMAL +RI +' +' +'----------------------------------------------------------------------------- +#CMDERR +'ROUTINE TO HANDLE COMMAND ERRORS +' +ZS0 +EN1 +' +' +'----------------------------------------------------------------------------- +#LIMSWI +'ROUTINE TO HASTEN THE DECELERATION OF AN AXIS WHEN A LIMIT SWITCH IS HIT +' +IF (_LFA=0)|(_LRA=0);'LIMIT HIT +IF (LSAHIT=0)&(_BGA=1);'STILL MOVING, FIRST TIME +OLDDCA=_DCA;'REMEMBER OLD DECEL VALUE +DCA=100000;'INCREASE DECEL VALUE FOR RAPID STOP +LSAHIT=1 +ENDIF +ENDIF +' +IF (_LFB=0)|(_LRB=0) +IF (LSBHIT=0)&(_BGB=1) +OLDDCB=_DCB +DCB=60000 +LSBHIT=1 +ENDIF +ENDIF +' +IF (_LFC=0)|(_LRC=0) +IF (LSCHIT=0)&(_BGC=1) +OLDDCC=_DCC +DCC=60000 +LSCHIT=1 +ENDIF +ENDIF +' +IF (_LFD=0)|(_LRD=0) +IF (LSDHIT=0)&(_BGD=1) +OLDDCD=_DCD +DCD=60000 +LSDHIT=1 +ENDIF +ENDIF +' +IF (_LFE=0)|(_LRE=0) +IF (LSEHIT=0)&(_BGE=1) +OLDDCE=_DCE +DCE=60000 +LSEHIT=1 +ENDIF +ENDIF +' +IF (_LFF=0)|(_LRF=0) +IF (LSFHIT=0)&(_BGF=1) +OLDDCF=_DCF +DCF=60000 +LSFHIT=1 +ENDIF +ENDIF +' +IF (_LFG=0)|(_LRG=0) +IF (LSGHIT=0)&(_BGG=1) +OLDDCG=_DCG +DCG=60000 +LSGHIT=1 +ENDIF +ENDIF +' +IF (_LFH=0)|(_LRH=0) +IF (LSHHIT=0)&(_BGH=1) +OLDDCH=_DCH +DCH=60000 +LSHHIT=1 +ENDIF +ENDIF +RE +' +' +'----------------------------------------------------------------------------- +#MOVE +'THIS ROUTINE IS USED TO MOVE AN AXIS WITH A SSI ENCODER +'USING A MOVE-CHECK-CORRECT METHOD +'THE FOLLOWING VARIABLES MUST BE INITIALISED FIRST +'~a=0 TO 7 SETS THE MOTOR, 0=A AXIS 1=B AXIS ETC +'~b=0 TO 7 SETS THE ENCODER, 0=1ST SSI CHANNEL 1=2ND CHANNEL ETC +'TRIES= MAXIMUM NUMBER OF TRIES +'POS=DESIRED ENCODER POSITION +' +'~a=0:~b=0:TRIES=5:POS=12345678:XQ #MOVE,1 +' +DBAND=3 +SH~a +WT500;'WAIT TO STABILISE +IF (_BG~a=1);'MOVING, FORCE STOP. PRA WHEN MOVING CAUSES THREAD CRASH +ST~a +MC~a +ENDIF +TEMP=_TP~b;'SET TEMPORARY VARIABLE +PR~a=2500 +IF (_LF~a=0);'ALREADY ON LIMIT +MG "Forward limit actuated" {EA} +MG "Ratio not calculated" {EA} +JP #MOVEEND +ENDIF +BG~a;'PERFORM A SMALL MOVE TO DETERMIN MOTOR:ENCODER RATIO +MC~a +WT500;'WAIT TO STABILISE +IF (TEMP=_TP~b);'FAILED TO MOVE +MG "No movement detected" {EA} +MG "Ratio not calculated" {EA} +JP #MOVEEND +ENDIF +RATIO=(TEMP-_TP~b)*10;'SETS ENCODER/MOTOR RATIO +' +#LOOP +IF (_BG~a=1);'MOVING, FORCE STOP. PRA WHEN MOVING CAUSES THREAD CRASH +ST~a +MC~a +ENDIF +PR~a=25000*((_TP~b-POS)/RATIO);'CALC STEPS TO DESTINATION +IF ((_PR~a>0)&(_LF~a=0));'IF POSITIVE MOVE AND ALREADY ON LIMIT +MG "Forward limit actuated" {EA} +MG "Positive move aborted" {EA} +JP #MOVEEND +ENDIF +IF ((_PR~a<0)&(_LR~a=0));'IF NEGATIVE MOVE AND ALREADY ON LIMIT +MG "Reverse limit actuated" {EA} +MG "Negative move aborted" {EA} +JP #MOVEEND +ENDIF +IF (_BG~a=1);'ALREADY MOVING +ST~a +MC~a +ENDIF +SH~a +BG~a +MC~a;'WAIT FOR MOTION TO COMPLETE +TRIES=TRIES-1;'INCREMENT ATTEMPT COUNTER +MG "Attempts to go: " {N} {EA} +MG TRIES {F1.0} {EA} +JP #LOOP, ((@ABS[_TP~b-POS]>DBAND)&(TRIES>0)) +'HAVE ANOTHER GO IF OUTSIDE DEAD BAND AND NOT TOO MANY ATTEMPTS +#MOVEEND +MG "TARGET :" {N} {EA} +MG POS {F8.0} {EA} +MG "POSITION :" {N} {EA} +MG _TP~b {F8.0} {EA} +MG "Program ends" {EA} +EN +' +' +'----------------------------------------------------------------------------- +#HOMES1 +'THIS ROUTINE HOMES THE S1 SLIT PACKAGE +' +IF (S1HOMED=1);'ALREADY HOMED +JP #ENDS1 +ENDIF +' +IF (_LFA=0)&(_LRA=0) +'BOTH LIMITS ACTUATED. SLIT PACKAGE PROBABLY NOT PLUGGED IN. +JP #ENDS1 +ENDIF +' +SHABCD;'TURN ON THE MOTORS +SP 30000,30000,30000,30000,,,,;'SET SPEED +IF (_LRA=0);'ON THE REVERSE LIMIT SWITCH +PRA=250*161/2*10;'MOVE AWAY 10mm +BGA +ENDIF +' +IF (_LRB=0);'ON THE REVERSE LIMIT SWITCH +PRB=250*161/2*10;'MOVE AWAY 10mm +BGB +ENDIF +' +IF (_LRC=0);'ON THE REVERSE LIMIT SWITCH +PRC=250*161/2*10;'MOVE AWAY 10mm +BGC +ENDIF +' +IF (_LRD=0);'ON THE REVERSE LIMIT SWITCH +PRD=250*161/2*10;'MOVE AWAY 10mm +BGD +ENDIF +' +MCABCD;'WAIT FOR MOTION TO BE COMPLETE +JG -30000,-30000,-30000,-30000,,,,;'JOG INTO REVERSE LIMIT +BGABCD +MCABCD +PR 80500,80500,80500,80500,,,,;'MOVE AWAY 4MM +BGABCD +MCABCD +JG -5000,-5000,-5000,-5000,,,,;'JOG SLOWLY INTO LIMITS +BGABCD +MCABCD +DP 0,0,0,0,,,,;'DEFINE HOME POSITION +SP 30000,30000,30000,30000,,,,;'SET SPEED BACK TO NORMAL +S1HOMED=1;'HOMING OF SLIT S1 COMPLETE +#ENDS1 +EN +' +' +'----------------------------------------------------------------------------- +#HOMES2 +'THIS ROUTINE HOMES THE S2 SLIT PACKAGE +' +IF (S2HOMED=1);'ALREADY HOMED +JP #ENDS2 +ENDIF +' +IF (_LFE=0)&(_LRE=0) +'BOTH LIMITS ACTUATED. SLIT PACKAGE PROBABLY NOT PLUGGED IN. +JP #ENDS2 +ENDIF +' +SHEFGH;'TURN ON THE MOTORS +SP ,,,,30000,30000,30000,30000;'SET SPEED +IF (_LRE=0);'ON THE REVERSE LIMIT SWITCH +PRE=250*161/2*10;'MOVE AWAY 10mm +BGE +ENDIF +' +IF (_LRF=0);'ON THE REVERSE LIMIT SWITCH +PRF=250*161/2*10;'MOVE AWAY 10mm +BGF +ENDIF +' +IF (_LRG=0);'ON THE REVERSE LIMIT SWITCH +PRG=250*161/2*10;'MOVE AWAY 10mm +BGG +ENDIF +' +IF (_LRH=0);'ON THE REVERSE LIMIT SWITCH +PRH=250*161/2*10;'MOVE AWAY 10mm +BGH +ENDIF +' +MCEFGH;'WAIT FOR MOTION TO BE COMPLETE +JG ,,,,-30000,-30000,-30000,-30000;'JOG INTO REVERSE LIMIT +BGEFGH +MCEFGH +PR ,,,,80500,80500,80500,80500;'MOVE AWAY 4MM +BGEFGH +MCEFGH +JG ,,,,-5000,-5000,-5000,-5000;'JOG SLOWLY INTO LIMITS +BGEFGH +MCEFGH +DP ,,,,0,0,0,0;'DEFINE HOME POSITION +SP ,,,,30000,30000,30000,30000;'SET SPEED BACK TO NORMAL +S2HOMED=1;'HOMING OF SLIT S1 COMPLETE +#ENDS2 +EN +' +' +'-----------------------------------------------------------------------------