Content downloaded from GALIL controllers before conversion to SICS

r3292 | dcl | 2011-11-28 14:23:41 +1100 (Mon, 28 Nov 2011) | 1 line
This commit is contained in:
Douglas Clowes
2011-11-28 14:23:41 +11:00
parent 1bb2e24df8
commit baf2206efe
6 changed files with 2018 additions and 2016 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -1,349 +1,351 @@
'TAIPAN - CONTROLLER 2 'TAIPAN - CONTROLLER 2
' '
'$Revision:$ '$Revision:$
'$Date:$ '$Date:$
'Author: Daniel Bartlett 'Author: Daniel Bartlett
'Last revision by: $author:$ 'Last revision by: $author:$
' '
'A-SAMPLE TRANSLATION - TILT 1 'A-SAMPLE TRANSLATION - TILT 1
'B-SAMPLE TRANSLATION - TILT 2 'B-SAMPLE TRANSLATION - TILT 2
'C-SAMPLE TRANSLATION - LINEAR 1 'C-SAMPLE TRANSLATION - LINEAR 1
'D-SAMPLE TRANSLATION - LINEAR 2 'D-SAMPLE TRANSLATION - LINEAR 2
'E-SAMPLE TRANSLATION - ROTATE 'E-SAMPLE TRANSLATION - ROTATE
'F-DETECTOR + ANALYSER ROTATE _TPF=2771351 ON BEAM CL 'F-DETECTOR + ANALYSER ROTATE _TPF=2771351 ON BEAM CL
'G-ANALYSER FOCUS 1 'G-ANALYSER FOCUS 1
'H-ANALYSER FOCUS 2 'H-ANALYSER FOCUS 2
' '
' '
'-------------------------------------------------------------------------- '--------------------------------------------------------------------------
#AUTO #AUTO
'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 MT-2,-2,-2,-2,-2,-2,-2,-2;'CONFIGURES ALL AXES AS STEPPER
MO;'ALL MOTORS OFF MO;'ALL MOTORS OFF
CN 1;'CONFIGURES LIMIT SWITCHES TO ACCEPT NC CONTACTS CN 1;'CONFIGURES LIMIT SWITCHES TO ACCEPT NC CONTACTS
II 6,8,,0;' CONFIGURES THE 6TH, 7TH & 8TH INPUT TO ACTIVATE #ININT ROUTINE II 6,8,,0;' CONFIGURES THE 6TH, 7TH & 8TH INPUT TO ACTIVATE #ININT ROUTINE
OP 65281;' SETS OUTPUTS 9-16 ON = RELAYS OFF OP 65281;' SETS OUTPUTS 9-16 ON = RELAYS OFF
IA 137,157,203,132;' CONFIGURES IP ADDRESS IA 137,157,203,132;' CONFIGURES IP ADDRESS
AC 25000,25000,25000,25000,25000,25000,12500,12500;' SET ACELERATION AC 25000,25000,25000,25000,25000,25000,12500,12500;' SET ACELERATION
DC 25000,25000,25000,25000,25000,25000,12500,12500;' SET DECELERATION DC 25000,25000,25000,25000,25000,25000,12500,12500;' SET DECELERATION
SP 25000,25000,25000,25000,25000,100000,12500,12500;' SET SPEED SP 25000,25000,25000,25000,25000,100000,12500,12500;' SET SPEED
SIA=0;'TURN OFF CLOCK PULSES TO ALLOW ENCODER TO INITIALISE SIA=0;'TURN OFF CLOCK PULSES TO ALLOW ENCODER TO INITIALISE
SIB=0 SIB=0
SIC=0 SIC=0
SID=0 SID=0
SIE=0 SIE=0
SIF=0 SIF=0
SIG=0 SIG=0
SIH=0 SIH=0
WT1000;'WAIT FOR ENCODER TO INITIALISE WT1000;'WAIT FOR ENCODER TO INITIALISE
SIA=1,25,13,0<-13>2;'HEIDENHAIN ROQ425 - SAMPLE TILT 1 SIA=1,25,13,0<-13>2;'HEIDENHAIN ROQ425 - SAMPLE TILT 1
SIB=1,25,13,0<-13>2;'HEIDENHAIN ROQ425 - SAMPLE TILT 2 SIB=1,25,13,0<-13>2;'HEIDENHAIN ROQ425 - SAMPLE TILT 2
SIC=1,25,13,0<-13>2;'HEIDENHAIN ROQ425 - SAMPLE TRANS 1 SIC=1,25,13,0<-13>2;'HEIDENHAIN ROQ425 - SAMPLE TRANS 1
SID=1,25,13,0<-13>2;'HEIDENHAIN ROQ425 - SAMPLE TRANS 2 SID=1,25,13,0<-13>2;'HEIDENHAIN ROQ425 - SAMPLE TRANS 2
SIE=1,25,13,0<-13>2;'HEIDENHAIN ROQ425 - SAMPLE ROTATE SIE=1,25,13,0<-13>2;'HEIDENHAIN ROQ425 - SAMPLE ROTATE
SIF=1,25,25,0<-13>2;'HEIDENHAIN RCN226 - DETECTOR + ANALYSER 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 SIG=1,25,13,0<-13>2;'HEIDENHAIN ROQ425 - ANALYSER FOCUS 1
SIH=1,25,13,0<-13>2;'HEIDENHAIN ROQ425 - ANALYSER FOCUS 2 SIH=1,25,13,0<-13>2;'HEIDENHAIN ROQ425 - ANALYSER FOCUS 2
LSAHIT=0;' INITIALISE THE BIT SET AFTER A LIMIT IS HIT LSAHIT=0;' INITIALISE THE BIT SET AFTER A LIMIT IS HIT
LSBHIT=0 LSBHIT=0
LSCHIT=0 LSCHIT=0
LSDHIT=0 LSDHIT=0
LSEHIT=0 LSEHIT=0
LSFHIT=0 LSFHIT=0
LSGHIT=0 LSGHIT=0
LSHHIT=0 LSHHIT=0
APFDONE=0;' INITIALISE THE BIT FOR AXIS F AIRPAD CONTROL APFDONE=0;' INITIALISE THE BIT FOR AXIS F AIRPAD CONTROL
JS #THREAD0 JS #THREAD0
EN EN
' '
' '
'-------------------------------------------------------------------------- '--------------------------------------------------------------------------
#THREAD0 #THREAD0
'THERE MUST BE A THREAD RUNNING FOR #LIMSWI, #TCPERR AND #ININT TO WORK 'THERE MUST BE A THREAD RUNNING FOR #LIMSWI, #TCPERR AND #ININT TO WORK
' '
JS #CHKDCEL JS #CHKDCEL
JS #AIRPAD JS #AIRPAD
JS #CHKSPD JS #CHKSPD
JS #BEAMSTP JS #BEAMSTP
JP #THREAD0 JP #THREAD0
EN EN
' '
' '
'-------------------------------------------------------------------------- '--------------------------------------------------------------------------
#CHKDCEL #CHKDCEL
'ROUTINE TO RESET DECELERATIONS AFTER A LIMIT HIT 'ROUTINE TO RESET DECELERATIONS AFTER A LIMIT HIT
' '
IF (LSAHIT=1)&(_BGA=0);'WHEN MOTION STOPS AFTER A LIMIT HIT IF (LSAHIT=1)&(_BGA=0);'WHEN MOTION STOPS AFTER A LIMIT HIT
DCA=OLDDCA;' RESET DECEL TO OLD VALUE DCA=OLDDCA;' RESET DECEL TO OLD VALUE
LSAHIT=0 LSAHIT=0
ENDIF ENDIF
' '
IF (LSBHIT=1)&(_BGB=0) IF (LSBHIT=1)&(_BGB=0)
DCB=OLDDCB DCB=OLDDCB
LSBHIT=0 LSBHIT=0
ENDIF ENDIF
' '
IF (LSCHIT=1)&(_BGC=0) IF (LSCHIT=1)&(_BGC=0)
DCC=OLDDCC DCC=OLDDCC
LSCHIT=0 LSCHIT=0
ENDIF ENDIF
' '
IF (LSDHIT=1)&(_BGD=0) IF (LSDHIT=1)&(_BGD=0)
DCD=OLDDCD DCD=OLDDCD
LSDHIT=0 LSDHIT=0
ENDIF ENDIF
' '
IF (LSEHIT=1)&(_BGE=0) IF (LSEHIT=1)&(_BGE=0)
DCE=OLDDCE DCE=OLDDCE
LSEHIT=0 LSEHIT=0
ENDIF ENDIF
' '
IF (LSFHIT=1)&(_BGF=0) IF (LSFHIT=1)&(_BGF=0)
DCF=OLDDCF DCF=OLDDCF
LSFHIT=0 LSFHIT=0
ENDIF ENDIF
' '
IF (LSGHIT=1)&(_BGG=0) IF (LSGHIT=1)&(_BGG=0)
DCG=OLDDCG DCG=OLDDCG
LSGHIT=0 LSGHIT=0
ENDIF ENDIF
' '
IF (LSHHIT=1)&(_BGH=0) IF (LSHHIT=1)&(_BGH=0)
DCH=OLDDCH DCH=OLDDCH
LSHHIT=0 LSHHIT=0
ENDIF ENDIF
EN EN
' '
' '
'-------------------------------------------------------------------------- '--------------------------------------------------------------------------
#AIRPAD #AIRPAD
'ROUTINE TO CONTROL AIRPADS 'ROUTINE TO CONTROL AIRPADS
' '
'CONTROLS THE AIRPAD SOLENOID VALVES FOR ANALYSER STAGE 'CONTROLS THE AIRPAD SOLENOID VALVES FOR ANALYSER STAGE
IF (_MOF=0);'ANALYSER MOTOR IS ON IF (_MOF=0);'ANALYSER MOTOR IS ON
SB 10;'ANALYSER AIR PAD OFF-SOLENOID OFF SB 10;'ANALYSER AIR PAD OFF-SOLENOID OFF
CB 9;'ANALYSER AIR PAD ON-SOLENOID ON CB 9;'ANALYSER AIR PAD ON-SOLENOID ON
APFDONE=0 APFDONE=0
ENDIF ENDIF
IF (_MOF=1)&(APFDONE=0);'ANALYSER MOTOR IS OFF IF (_MOF=1)&(APFDONE=0);'ANALYSER MOTOR IS OFF
SB 9;'ANALYSER AIR PAD ON-SOLENOID OFF SB 9;'ANALYSER AIR PAD ON-SOLENOID OFF
CB 10;'ANALYSER AIR PAD OFF-SOLENOID ON CB 10;'ANALYSER AIR PAD OFF-SOLENOID ON
WT500;'WAIT 1/2 SEC WT500;'WAIT 1/2 SEC
SB 10;'ANALYSER AIR PAD OFF-SOLENOID OFF SB 10;'ANALYSER AIR PAD OFF-SOLENOID OFF
APFDONE=1 APFDONE=1
ENDIF ENDIF
' '
' '
'-------------------------------------------------------------------------- '--------------------------------------------------------------------------
#CHKSPD #CHKSPD
'ROUTINE TO CHECK THE SPEED OF THE AXES IS NOT GREATER THAN MAX ALLOWED 'ROUTINE TO CHECK THE SPEED OF THE AXES IS NOT GREATER THAN MAX ALLOWED
' '
IF (_SPA>50000) IF (_SPA>50000)
SPA=50000 SPA=50000
ENDIF ENDIF
' '
IF (_SPB>50000) IF (_SPB>50000)
SPB=50000 SPB=50000
ENDIF ENDIF
' '
IF (_SPC>50000) IF (_SPC>50000)
SPC=50000 SPC=50000
ENDIF ENDIF
' '
IF (_SPD>50000) IF (_SPD>50000)
SPD=50000 SPD=50000
ENDIF ENDIF
' '
IF (_SPE>50000) IF (_SPE>50000)
SPE=50000 SPE=50000
ENDIF ENDIF
' '
IF (_SPF>100000) IF (_SPF>100000)
SPF=100000 SPF=100000
ENDIF ENDIF
' '
IF (_SPG>25000) IF (_SPG>25000)
SPG=25000 SPG=25000
ENDIF ENDIF
' '
IF (_SPH>25000) IF (_SPH>25000)
SPH=25000 SPH=25000
ENDIF ENDIF
EN EN
' '
' '
'-------------------------------------------------------------------------- '--------------------------------------------------------------------------
#BEAMSTP #BEAMSTP
' '
'THIS ROUTINE CONTROLS THE POSITION OF THE BEAMSTOP 'THIS ROUTINE CONTROLS THE POSITION OF THE BEAMSTOP
'IF THE ANALYSER IS WITHIN THE RANGE SPECIFIED THEN THE BEAMSTOP IS DOWN 'IF THE ANALYSER IS WITHIN THE RANGE SPECIFIED THEN THE BEAMSTOP IS DOWN
'TO AVOID COLLISIONS WITH SLITS AND OTHER EQUIPMENT 'TO AVOID COLLISIONS WITH SLITS AND OTHER EQUIPMENT
' '
IF (_XQ1=-1) IF (_XQ1=-1)
'#BSCHECK NOT RUNNING '#BSCHECK NOT RUNNING
XQ #BSCHECK,1 XQ #BSCHECK,1
ENDIF ENDIF
IF (_TPF>9665152)&(_TPF<14370000) IF (_TPF>9800000)&(_TPF<13300000)
'IF (_TPF>9665152)&(_TPF<13168731) 'IF (_TPF>9800000)&(_TPF<14123000)
'IF (_TPF>12554353)&(_TPF<15923500) 'IF (_TPF>9665152)&(_TPF<14123000)
'IF (_TPF>12554353)&(_TPF<15809209) 'IF (_TPF>9665152)&(_TPF<13168731)
'ANALYSER WITHIN RANGE, BEAMSTOP NEEDS TO BE DOWN 'IF (_TPF>12554353)&(_TPF<15923500)
SB11;'TURN OFF SOLENOID VALVE 'IF (_TPF>12554353)&(_TPF<15809209)
ELSE 'ANALYSER WITHIN RANGE, BEAMSTOP NEEDS TO BE DOWN
CB11;'TURN ON SOLENOID VALVE SB11;'TURN OFF SOLENOID VALVE
ENDIF ELSE
EN 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 #BSCHECK
' 'THIS ROUTINE CHECKS THE POSITION OF THE BEAMSTOP AND REPORTS ERRORS
'IN[13]=1 TOP LIMIT ACTUATED 'TO THE SAFETY AND INTERLOCK SYSTEM
'IN[14]=1 BOTTOM LIMIT ACTUATED '
IF ((_OP0&1024)=0) 'IN[13]=1 TOP LIMIT ACTUATED
'RELAY 11 HAS BEEN ENABLED THEREFORE THE BEAMSTOP SHOULD BE UP 'IN[14]=1 BOTTOM LIMIT ACTUATED
WT1500;'DELAY TO ALLOW BEAMSTOP TO MOVE IF ((_OP0&1024)=0)
IF ((@IN[13]=1)&(@IN[14]=0)) 'RELAY 11 HAS BEEN ENABLED THEREFORE THE BEAMSTOP SHOULD BE UP
'BEAMSTOP UP AND NOT DOWN WT1500;'DELAY TO ALLOW BEAMSTOP TO MOVE
CB16;'SEND ALL-OK TO SIS IF ((@IN[13]=1)&(@IN[14]=0))
ELSE 'BEAMSTOP UP AND NOT DOWN
SB16;'SEND ERROR BIT TO SIS CB16;'SEND ALL-OK TO SIS
ENDIF ELSE
ENDIF SB16;'SEND ERROR BIT TO SIS
' ENDIF
IF ((_OP0&1024)<>0) ENDIF
'RELAY 11 HAS BEEN DISABLED THEREFORE THE BEAMSTOP SHOULD BE DOWN '
WT1500;'DELAY TO ALLOW BEAMSTOP TO MOVE IF ((_OP0&1024)<>0)
IF ((@IN[13]=0)&(@IN[14]=1)) 'RELAY 11 HAS BEEN DISABLED THEREFORE THE BEAMSTOP SHOULD BE DOWN
'BEAMSTOP DOWN AND NOT UP WT1500;'DELAY TO ALLOW BEAMSTOP TO MOVE
CB16;'SEND ALL-OK TO SIS IF ((@IN[13]=0)&(@IN[14]=1))
ELSE 'BEAMSTOP DOWN AND NOT UP
SB16;'SEND ERROR BIT TO SIS CB16;'SEND ALL-OK TO SIS
ENDIF ELSE
ENDIF SB16;'SEND ERROR BIT TO SIS
' ENDIF
JP #BSCHECK ENDIF
EN '
' JP #BSCHECK
'-------------------------------------------------------------------------- EN
#TCPERR '
'EMPTY TCP ERROR ROUTINE '--------------------------------------------------------------------------
' #TCPERR
RE 'EMPTY TCP ERROR ROUTINE
' '
' RE
'-------------------------------------------------------------------------- '
#ININT '
'INTERUPT ROUTINE '--------------------------------------------------------------------------
'TO STOP ALL AXES WHEN SAFETY & INTERLOCK SYSTEM REQUESTS IT #ININT
'TO STOP AXIS F WHEN LIGHT CURTAINS BROKEN BUT TO ALLOW MOVEMENT AWAY 'INTERUPT ROUTINE
' 'TO STOP ALL AXES WHEN SAFETY & INTERLOCK SYSTEM REQUESTS IT
IF @IN[8]=0 'TO STOP AXIS F WHEN LIGHT CURTAINS BROKEN BUT TO ALLOW MOVEMENT AWAY
'SAFETY INTERLOCK SYSTEM ALL AXES SLOWDOWN '
CN-1;'RECONFIGURES LIMITS. RESULT:ALL LIMITS SEEN AS HIT. WILL RUN #LIMSWI IF @IN[8]=0
WT250 'SAFETY INTERLOCK SYSTEM ALL AXES SLOWDOWN
CN1;'SETS LIMITS BACK TO NORMAL CN-1;'RECONFIGURES LIMITS. RESULT:ALL LIMITS SEEN AS HIT. WILL RUN #LIMSWI
JP #ENININT WT250
ENDIF CN1;'SETS LIMITS BACK TO NORMAL
' JP #ENININT
IF @IN[6]=0 ENDIF
'LOW ANGLE LIGHT CURTAIN BROKEN '
IF _TVF>0 IF @IN[6]=0
'AXIS HEADING TOWARDS LIGHT CURTAIN 'LOW ANGLE LIGHT CURTAIN BROKEN
STF IF _TVF>0
ENDIF 'AXIS HEADING TOWARDS LIGHT CURTAIN
ENDIF STF
' ENDIF
IF @IN[7]=0 ENDIF
'HIGH ANGLE LIGHT CURTAIN BROKEN '
IF _TVF<0 IF @IN[7]=0
'AXIS HEADING TOWARDS LIGHT CURTAIN 'HIGH ANGLE LIGHT CURTAIN BROKEN
STF IF _TVF<0
ENDIF 'AXIS HEADING TOWARDS LIGHT CURTAIN
ENDIF STF
' ENDIF
#ENININT ENDIF
RI '
' #ENININT
' RI
'-------------------------------------------------------------------------- '
#CMDERR '
'ROUTINE TO HANDLE COMMAND ERRORS '--------------------------------------------------------------------------
' #CMDERR
ZS0 'ROUTINE TO HANDLE COMMAND ERRORS
EN1 '
' ZS0
' EN1
'-------------------------------------------------------------------------- '
#LIMSWI '
'ROUTINE TO HASTEN THE DECELERATION OF AN AXIS WHEN A LIMIT SWITCH IS HIT '--------------------------------------------------------------------------
' #LIMSWI
IF (_LFA=0)|(_LRA=0);'LIMIT HIT 'ROUTINE TO HASTEN THE DECELERATION OF AN AXIS WHEN A LIMIT SWITCH IS HIT
IF (LSAHIT=0)&(_BGA=1);'STILL MOVING, FIRST TIME '
OLDDCA=_DCA;'REMEMBER OLD DECEL VALUE IF (_LFA=0)|(_LRA=0);'LIMIT HIT
DCA=100000;'INCREASE DECEL VALUE FOR RAPID STOP IF (LSAHIT=0)&(_BGA=1);'STILL MOVING, FIRST TIME
LSAHIT=1 OLDDCA=_DCA;'REMEMBER OLD DECEL VALUE
ENDIF DCA=100000;'INCREASE DECEL VALUE FOR RAPID STOP
ENDIF LSAHIT=1
' ENDIF
IF (_LFB=0)|(_LRB=0) ENDIF
IF (LSBHIT=0)&(_BGB=1) '
OLDDCB=_DCB IF (_LFB=0)|(_LRB=0)
DCB=100000 IF (LSBHIT=0)&(_BGB=1)
LSBHIT=1 OLDDCB=_DCB
ENDIF DCB=100000
ENDIF LSBHIT=1
' ENDIF
IF (_LFC=0)|(_LRC=0) ENDIF
IF (LSCHIT=0)&(_BGC=1) '
OLDDCC=_DCC IF (_LFC=0)|(_LRC=0)
DCC=100000 IF (LSCHIT=0)&(_BGC=1)
LSCHIT=1 OLDDCC=_DCC
ENDIF DCC=100000
ENDIF LSCHIT=1
' ENDIF
IF (_LFD=0)|(_LRD=0) ENDIF
IF (LSDHIT=0)&(_BGD=1) '
OLDDCD=_DCD IF (_LFD=0)|(_LRD=0)
DCD=100000 IF (LSDHIT=0)&(_BGD=1)
LSDHIT=1 OLDDCD=_DCD
ENDIF DCD=100000
ENDIF LSDHIT=1
' ENDIF
IF (_LFE=0)|(_LRE=0) ENDIF
IF (LSEHIT=0)&(_BGE=1) '
OLDDCE=_DCE IF (_LFE=0)|(_LRE=0)
DCE=200000 IF (LSEHIT=0)&(_BGE=1)
LSEHIT=1 OLDDCE=_DCE
ENDIF DCE=200000
ENDIF LSEHIT=1
' ENDIF
IF (_LFF=0)|(_LRF=0) ENDIF
IF (LSFHIT=0)&(_BGF=1) '
OLDDCF=_DCF IF (_LFF=0)|(_LRF=0)
DCF=100000 IF (LSFHIT=0)&(_BGF=1)
LSFHIT=1 OLDDCF=_DCF
ENDIF DCF=100000
ENDIF LSFHIT=1
' ENDIF
IF (_LFG=0)|(_LRG=0) ENDIF
IF (LSGHIT=0)&(_BGG=1) '
OLDDCG=_DCG IF (_LFG=0)|(_LRG=0)
DCG=200000 IF (LSGHIT=0)&(_BGG=1)
LSGHIT=1 OLDDCG=_DCG
ENDIF DCG=200000
ENDIF LSGHIT=1
' ENDIF
IF (_LFH=0)|(_LRH=0) ENDIF
IF (LSHHIT=0)&(_BGH=1) '
OLDDCH=_DCH IF (_LFH=0)|(_LRH=0)
DCH=200000 IF (LSHHIT=0)&(_BGH=1)
LSHHIT=1 OLDDCH=_DCH
ENDIF DCH=200000
ENDIF LSHHIT=1
RE ENDIF
' ENDIF
' RE
'
'

View File

@@ -1,250 +1,250 @@
'TAIPAN - CONTROLLER 3 'TAIPAN - CONTROLLER 3
' '
'$Revision:$ '$Revision:$
'$Date:$ '$Date:$
'Author: Daniel Bartlett 'Author: Daniel Bartlett
'Last revision by: $author:$ 'Last revision by: $author:$
' '
'A-MONOCHROMATOR 1 HORIZONTAL FOCUS 'A-MONOCHROMATOR 1 HORIZONTAL FOCUS
'B-MONOCHROMATOR 1 VERTICAL FOCUS 'B-MONOCHROMATOR 1 VERTICAL FOCUS
'C-MONOCHROMATOR 2 HORIZONTAL FOCUS 'C-MONOCHROMATOR 2 HORIZONTAL FOCUS
'D-MONOCHROMATOR 2 VERTICAL FOCUS 'D-MONOCHROMATOR 2 VERTICAL FOCUS
'E-MONOCHROMATOR ROTATE 'E-MONOCHROMATOR ROTATE
'F-SPARE 'F-SPARE
'G-SPARE 'G-SPARE
'H-SPARE 'H-SPARE
' '
' '
'4096 COUNTS / 2 DEGREES '4096 COUNTS / 2 DEGREES
'2048 COUNTS / DEGREE '2048 COUNTS / DEGREE
'PG 00 DEGREES = 16034863 'PG 00 DEGREES = 16034863
'PG 45 DEGREES = 16127023 'PG 45 DEGREES = 16127023
'-------------------------------------------------------------------------- '--------------------------------------------------------------------------
#AUTO #AUTO
'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.5,-2,-2,-2;'CONFIGURES ALL AXES AS STEPPER, E REVERSED MT-2,-2,-2,-2,-2.5,-2,-2,-2;'CONFIGURES ALL AXES AS STEPPER, E REVERSED
MO;'ALL MOTORS OFF MO;'ALL MOTORS OFF
CN 1;'CONFIGURES LIMIT SWITCHES TO ACCEPT NC CONTACTS CN 1;'CONFIGURES LIMIT SWITCHES TO ACCEPT NC CONTACTS
II 8,,,0;' CONFIGURES THE 8TH INPUT TO ACTIVATE THE #ININT ROUTINE II 8,,,0;' CONFIGURES THE 8TH INPUT TO ACTIVATE THE #ININT ROUTINE
OP 65280;' SETS OUTPUTS 9-16 ON = RELAYS OFF OP 65280;' SETS OUTPUTS 9-16 ON = RELAYS OFF
IA 137,157,203,133;' CONFIGURES IP ADDRESS IA 137,157,203,133;' CONFIGURES IP ADDRESS
AC 6000,6000,6000,6000,25000,,,;' SET ACELERATION AC 6000,6000,6000,6000,25000,,,;' SET ACELERATION
DC 6000,6000,6000,6000,25000,,,;' SET DECELERATION DC 6000,6000,6000,6000,25000,,,;' SET DECELERATION
SP 12500,12500,50000,12500,100000,,,;' SET SPEED SP 12500,12500,50000,12500,100000,,,;' SET SPEED
SIA=0;'TURN OFF CLOCK PULSES TO ALLOW ENCODER TO INITIALISE SIA=0;'TURN OFF CLOCK PULSES TO ALLOW ENCODER TO INITIALISE
SIB=0 SIB=0
SIC=0 SIC=0
SID=0 SID=0
SIE=0 SIE=0
SIF=0 SIF=0
SIG=0 SIG=0
SIH=0 SIH=0
WT1000;'WAIT FOR ENCODER TO INITIALISE WT1000;'WAIT FOR ENCODER TO INITIALISE
SIA=1,24,12,0<-11>1;'RESOLVER VIA VEGA 2790 BOARD SIA=1,24,12,0<-11>1;'RESOLVER VIA VEGA 2790 BOARD
SIB=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 SIC=1,24,12,0<-11>1;'RESOLVER VIA VEGA 2790 BOARD
SID=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 SIE=1,24,12,0<-11>1;'RESOLVER VIA VEGA 2790 BOARD
LSAHIT=0;' INITIALISE THE BIT SET AFTER A LIMIT IS HIT LSAHIT=0;' INITIALISE THE BIT SET AFTER A LIMIT IS HIT
LSBHIT=0 LSBHIT=0
LSCHIT=0 LSCHIT=0
LSDHIT=0 LSDHIT=0
LSEHIT=0 LSEHIT=0
'LSFHIT=0 'LSFHIT=0
'LSGHIT=0 'LSGHIT=0
'LSHHIT=0 'LSHHIT=0
JS #THREAD0 JS #THREAD0
EN EN
' '
' '
'-------------------------------------------------------------------------- '--------------------------------------------------------------------------
#THREAD0 #THREAD0
'THERE MUST BE A THREAD RUNNING FOR #LIMSWI, #TCPERR AND #ININT TO WORK 'THERE MUST BE A THREAD RUNNING FOR #LIMSWI, #TCPERR AND #ININT TO WORK
' '
JW #CHKDCEL JS #CHKDCEL
JS #CHKSPD JS #CHKSPD
JP #THREAD0 JP #THREAD0
EN EN
' '
' '
'-------------------------------------------------------------------------- '--------------------------------------------------------------------------
#CHKDCEL #CHKDCEL
'ROUTINE TO RESET DECELERATIONS AFTER A LIMIT HIT 'ROUTINE TO RESET DECELERATIONS AFTER A LIMIT HIT
' '
IF ((LSAHIT=1)&(_BGA=0));'WHEN MOTION STOPS AFTER A LIMIT HIT IF ((LSAHIT=1)&(_BGA=0));'WHEN MOTION STOPS AFTER A LIMIT HIT
DCA=OLDDCA;' RESET DECEL TO OLD VALUE DCA=OLDDCA;' RESET DECEL TO OLD VALUE
LSAHIT=0 LSAHIT=0
ENDIF ENDIF
' '
IF ((LSBHIT=1)&(_BGB=0)) IF ((LSBHIT=1)&(_BGB=0))
DCB=OLDDCB DCB=OLDDCB
LSBHIT=0 LSBHIT=0
ENDIF ENDIF
' '
IF ((LSCHIT=1)&(_BGC=0)) IF ((LSCHIT=1)&(_BGC=0))
DCC=OLDDCC DCC=OLDDCC
LSCHIT=0 LSCHIT=0
ENDIF ENDIF
' '
IF ((LSDHIT=1)&(_BGD=0)) IF ((LSDHIT=1)&(_BGD=0))
DCD=OLDDCD DCD=OLDDCD
LSDHIT=0 LSDHIT=0
ENDIF ENDIF
' '
IF ((LSEHIT=1)&(_BGE=0)) IF ((LSEHIT=1)&(_BGE=0))
DCE=OLDDCE DCE=OLDDCE
LSEHIT=0 LSEHIT=0
ENDIF ENDIF
' '
'IF ((LSFHIT=1)&(_BGF=0)) 'IF ((LSFHIT=1)&(_BGF=0))
'DCF=OLDDCF 'DCF=OLDDCF
'LSFHIT=0 'LSFHIT=0
'ENDIF 'ENDIF
' '
'IF ((LSGHIT=1)&(_BGG=0)) 'IF ((LSGHIT=1)&(_BGG=0))
'DCG=OLDDCG 'DCG=OLDDCG
'LSGHIT=0 'LSGHIT=0
'ENDIF 'ENDIF
' '
'IF ((LSHHIT=1)&(_BGH=0)) 'IF ((LSHHIT=1)&(_BGH=0))
'DCH=OLDDCH 'DCH=OLDDCH
'LSHHIT=0 'LSHHIT=0
'ENDIF 'ENDIF
'EN 'EN
' '
' '
'-------------------------------------------------------------------------- '--------------------------------------------------------------------------
#CHKSPD #CHKSPD
'ROUTINE TO CHECK THE SPEED OF THE AXES IS NOT GREATER THAN MAX ALLOWED 'ROUTINE TO CHECK THE SPEED OF THE AXES IS NOT GREATER THAN MAX ALLOWED
' '
IF (_SPA>25000) IF (_SPA>25000)
SPA=25000 SPA=25000
ENDIF ENDIF
' '
IF (_SPB>25000) IF (_SPB>25000)
SPB=25000 SPB=25000
ENDIF ENDIF
' '
IF (_SPC>25000) IF (_SPC>25000)
SPC=25000 SPC=25000
ENDIF ENDIF
' '
IF (_SPD>25000) IF (_SPD>25000)
SPD=25000 SPD=25000
ENDIF ENDIF
' '
IF (_SPE>100000) IF (_SPE>100000)
SPE=100000 SPE=100000
ENDIF ENDIF
' '
'IF (_SPF>100000) 'IF (_SPF>100000)
'SPF=100000 'SPF=100000
'ENDIF 'ENDIF
' '
'IF (_SPG>50000) 'IF (_SPG>50000)
'SPG=50000 'SPG=50000
'ENDIF 'ENDIF
' '
'IF (_SPH>100000) 'IF (_SPH>100000)
'SPH=100000 'SPH=100000
'ENDIF 'ENDIF
'EN 'EN
' '
' '
'-------------------------------------------------------------------------- '--------------------------------------------------------------------------
#TCPERR #TCPERR
'EMPTY TCP ERROR ROUTINE 'EMPTY TCP ERROR ROUTINE
' '
RE RE
' '
' '
'-------------------------------------------------------------------------- '--------------------------------------------------------------------------
#ININT #ININT
'INTERUPT ROUTINE TO STOP ALL AXES 'INTERUPT ROUTINE TO STOP ALL AXES
'WHEN SAFETY & INTERLOCK SYSTEM REQUESTS IT 'WHEN SAFETY & INTERLOCK SYSTEM REQUESTS IT
' '
CN-1;' RECONFIGURES LIMITS. RESULT:ALL LIMITS SEEN AS HIT. WILL RUN #LIMSWI CN-1;' RECONFIGURES LIMITS. RESULT:ALL LIMITS SEEN AS HIT. WILL RUN #LIMSWI
WT250 WT250
CN1;' SETS LIMITS BACK TO NORMAL CN1;' SETS LIMITS BACK TO NORMAL
RI RI
' '
' '
'-------------------------------------------------------------------------- '--------------------------------------------------------------------------
#CMDERR #CMDERR
'ROUTINE TO HANDLE COMMAND ERRORS 'ROUTINE TO HANDLE COMMAND ERRORS
' '
ZS0 ZS0
EN1 EN1
' '
' '
'-------------------------------------------------------------------------- '--------------------------------------------------------------------------
#LIMSWI #LIMSWI
'ROUTINE TO HASTEN THE DECELERATION OF AN AXIS WHEN A LIMIT SWITCH IS HIT 'ROUTINE TO HASTEN THE DECELERATION OF AN AXIS WHEN A LIMIT SWITCH IS HIT
' '
IF ((_LFA=0)|(_LRA=0));'LIMIT HIT IF ((_LFA=0)|(_LRA=0));'LIMIT HIT
IF ((LSAHIT=0)&(_BGA=1));'STILL MOVING, FIRST TIME IF ((LSAHIT=0)&(_BGA=1));'STILL MOVING, FIRST TIME
OLDDCA=_DCA;'REMEMBER OLD DECEL VALUE OLDDCA=_DCA;'REMEMBER OLD DECEL VALUE
DCA=100000;'INCREASE DECEL VALUE FOR RAPID STOP DCA=100000;'INCREASE DECEL VALUE FOR RAPID STOP
LSAHIT=1 LSAHIT=1
ENDIF ENDIF
ENDIF ENDIF
' '
IF ((_LFB=0)|(_LRB=0)) IF ((_LFB=0)|(_LRB=0))
IF ((LSBHIT=0)&(_BGB=1)) IF ((LSBHIT=0)&(_BGB=1))
OLDDCB=_DCB OLDDCB=_DCB
DCB=100000 DCB=100000
LSBHIT=1 LSBHIT=1
ENDIF ENDIF
ENDIF ENDIF
' '
IF ((_LFC=0)|(_LRC=0)) IF ((_LFC=0)|(_LRC=0))
IF ((LSCHIT=0)&(_BGC=1)) IF ((LSCHIT=0)&(_BGC=1))
OLDDCC=_DCC OLDDCC=_DCC
DCC=100000 DCC=100000
LSCHIT=1 LSCHIT=1
ENDIF ENDIF
ENDIF ENDIF
' '
IF ((_LFD=0)|(_LRD=0)) IF ((_LFD=0)|(_LRD=0))
IF ((LSDHIT=0)&(_BGD=1)) IF ((LSDHIT=0)&(_BGD=1))
OLDDCD=_DCD OLDDCD=_DCD
DCD=100000 DCD=100000
LSDHIT=1 LSDHIT=1
ENDIF ENDIF
ENDIF ENDIF
' '
IF ((_LFE=0)|(_LRE=0)) IF ((_LFE=0)|(_LRE=0))
IF ((LSEHIT=0)&(_BGE=1)) IF ((LSEHIT=0)&(_BGE=1))
OLDDCE=_DCE OLDDCE=_DCE
DCE=200000 DCE=200000
LSEHIT=1 LSEHIT=1
ENDIF ENDIF
ENDIF ENDIF
' '
'IF ((_LFF=0)|(_LRF=0)) 'IF ((_LFF=0)|(_LRF=0))
'IF ((LSFHIT=0)&(_BGF=1)) 'IF ((LSFHIT=0)&(_BGF=1))
'OLDDCF=_DCF 'OLDDCF=_DCF
'DCF=200000 'DCF=200000
'LSFHIT=1 'LSFHIT=1
'ENDIF 'ENDIF
'ENDIF 'ENDIF
' '
'IF ((_LFG=0)|(_LRG=0)) 'IF ((_LFG=0)|(_LRG=0))
'IF ((LSGHIT=0)&(_BGG=1)) 'IF ((LSGHIT=0)&(_BGG=1))
'OLDDCG=_DCG 'OLDDCG=_DCG
'DCG=200000 'DCG=200000
'LSGHIT=1 'LSGHIT=1
'ENDIF 'ENDIF
'ENDIF 'ENDIF
' '
'IF ((_LFH=0)|(_LRH=0)) 'IF ((_LFH=0)|(_LRH=0))
'IF ((LSHHIT=0)&(_BGH=1)) 'IF ((LSHHIT=0)&(_BGH=1))
'OLDDCH=_DCH 'OLDDCH=_DCH
'DCH=200000 'DCH=200000
'LSHHIT=1 'LSHHIT=1
'ENDIF 'ENDIF
'ENDIF 'ENDIF
RE RE
' '
' '

View File

@@ -1,285 +1,285 @@
'TAIPAN - CONTROLLER 4 'TAIPAN - CONTROLLER 4
' '
'$Revision:$ '$Revision:$
'$Date:$ '$Date:$
'Author: Daniel Bartlett 'Author: Daniel Bartlett
'Last revision by: $author:$ 'Last revision by: $author:$
' '
'A-ANALYSER TILT 1 'A-ANALYSER TILT 1
'B-ANALYSER TILT 2 'B-ANALYSER TILT 2
'C-ANALYSER TRANSLATE 'C-ANALYSER TRANSLATE
'D-ANALYSER ROTATE LFD@24724763 LRD@25454179 'D-ANALYSER ROTATE LFD@24724763 LRD@25454179
'E-VIRTUAL SOURCE LEFT, +VE OPEN, 6mm/TURN 'E-VIRTUAL SOURCE LEFT, +VE OPEN, 6mm/TURN
'F-VIRTUAL SOURCE RIGHT, -VE OPEN, 6mm/TURN 'F-VIRTUAL SOURCE RIGHT, -VE OPEN, 6mm/TURN
'G-FILTER ROTATE 'G-FILTER ROTATE
'H-PRIMARY COLLIMATOR TRANSLATE 'H-PRIMARY COLLIMATOR TRANSLATE
' '
' '
'-------------------------------------------------------------------------- '--------------------------------------------------------------------------
#AUTO #AUTO
'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.5,-2,-2,-2,-2;'CONFIGURES ALL AXES AS STEPPER MT-2,-2,-2,-2.5,-2,-2,-2,-2;'CONFIGURES ALL AXES AS STEPPER
MO;'ALL MOTORS OFF MO;'ALL MOTORS OFF
CN 1;'CONFIGURES LIMIT SWITCHES TO ACCEPT NC CONTACTS CN 1;'CONFIGURES LIMIT SWITCHES TO ACCEPT NC CONTACTS
II 8,,,0;'CONFIGURES THE 8TH INPUT TO ACTIVATE THE #ININT ROUTINE II 8,,,0;'CONFIGURES THE 8TH INPUT TO ACTIVATE THE #ININT ROUTINE
OP 65280;'SETS OUTPUTS 9-16 ON = RELAYS OFF OP 65280;'SETS OUTPUTS 9-16 ON = RELAYS OFF
IA 137,157,203,134;'CONFIGURES IP ADDRESS IA 137,157,203,134;'CONFIGURES IP ADDRESS
AC 25000,25000,25000,25000,25000,25000,25000,25000;'SET ACELERATION AC 25000,25000,25000,25000,25000,25000,25000,25000;'SET ACELERATION
DC 25000,25000,25000,25000,25000,25000,25000,25000;'SET DECELERATION DC 25000,25000,25000,25000,25000,25000,25000,25000;'SET DECELERATION
SP 25000,25000,25000,25000,12500,12500,25000,12500;'SET SPEED SP 25000,25000,25000,25000,12500,12500,25000,12500;'SET SPEED
SIA=0;'TURN OFF CLOCK PULSES TO ALLOW ENCODER TO INITIALISE SIA=0;'TURN OFF CLOCK PULSES TO ALLOW ENCODER TO INITIALISE
SIB=0 SIB=0
SIC=0 SIC=0
SID=0 SID=0
SIE=0 SIE=0
SIF=0 SIF=0
SIG=0 SIG=0
SIH=0 SIH=0
WT1000;'WAIT FOR ENCODER TO INITIALISE WT1000;'WAIT FOR ENCODER TO INITIALISE
SIA=1,25,13,0<-13>2;'HEIDENHAIN ROQ425 SIA=1,25,13,0<-13>2;'HEIDENHAIN ROQ425
SIB=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 SIC=1,25,13,0<-13>2;'HEIDENHAIN ROQ425
SID=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 SIE=1,24,12,0<-10>1;'RESOLVER VIA VEGA 2790 BOARD
SIF=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 SIG=1,25,13,0<-13>2;'HEIDENHAIN ROQ425
SIH=1,24,12,0<-10>1;'RESOLVER VIA VEGA 2790 BOARD SIH=1,24,12,0<-10>1;'RESOLVER VIA VEGA 2790 BOARD
LSAHIT=0;'INITIALISE THE BIT SET AFTER A LIMIT IS HIT LSAHIT=0;'INITIALISE THE BIT SET AFTER A LIMIT IS HIT
LSBHIT=0 LSBHIT=0
LSCHIT=0 LSCHIT=0
LSDHIT=0 LSDHIT=0
LSEHIT=0 LSEHIT=0
LSFHIT=0 LSFHIT=0
LSGHIT=0 LSGHIT=0
LSHHIT=0 LSHHIT=0
JS #THREAD0 JS #THREAD0
EN EN
' '
' '
'-------------------------------------------------------------------------- '--------------------------------------------------------------------------
#THREAD0 #THREAD0
'THERE MUST BE A THREAD RUNNING FOR #LIMSWI, #TCPERR AND #ININT TO WORK 'THERE MUST BE A THREAD RUNNING FOR #LIMSWI, #TCPERR AND #ININT TO WORK
' '
JS #CHKDCEL JS #CHKDCEL
JS #CHKSPD JS #CHKSPD
JP #THREAD0 JP #THREAD0
EN EN
' '
' '
'-------------------------------------------------------------------------- '--------------------------------------------------------------------------
#VSLMOVE #VSLMOVE
'ROUTINE TO MOVE THE VIRTUAL SOURCE RIGHT USING A CLOSED LOOP SSI POSITION 'ROUTINE TO MOVE THE VIRTUAL SOURCE RIGHT USING A CLOSED LOOP SSI POSITION
' '
'E AXIS 'E AXIS
'TPE AT LIMIT 16752106 'TPE AT LIMIT 16752106
'TPE AT BEAM CL 16773946 'TPE AT BEAM CL 16773946
' '
DBAND1=2 DBAND1=2
PRE=-25000*((VSLPOS-_TPE)/4096);'CALC STEPS TO DESTINATION PRE=-25000*((VSLPOS-_TPE)/4096);'CALC STEPS TO DESTINATION
SHE SHE
BGE BGE
AME AME
JP #VSLMOVE, (@ABS[VSLPOS-_TPE]>DBAND1) JP #VSLMOVE, (@ABS[VSLPOS-_TPE]>DBAND1)
'JUMP BACK FOR MORE TRIES IF OUTSIDE DEADBAND1 'JUMP BACK FOR MORE TRIES IF OUTSIDE DEADBAND1
EN EN
' '
' '
'----------------------------------------------------------------------------- '-----------------------------------------------------------------------------
#VSRMOVE #VSRMOVE
'ROUTINE TO MOVE THE VIRTUAL SOURCE RIGHT USING A CLOSED LOOP SSI POSITION 'ROUTINE TO MOVE THE VIRTUAL SOURCE RIGHT USING A CLOSED LOOP SSI POSITION
' '
'F AXIS 'F AXIS
'TPF AT LIMIT 16775162 'TPF AT LIMIT 16775162
'TPF AT BEAM CL 16756735 'TPF AT BEAM CL 16756735
' '
DBAND2=2 DBAND2=2
PRF=-25000*((VSRPOS-_TPF)/4096);'CALC STEPS TO DESTINATION PRF=-25000*((VSRPOS-_TPF)/4096);'CALC STEPS TO DESTINATION
SHF SHF
BGF BGF
AMF AMF
JP #VSRMOVE, (@ABS[VSRPOS-_TPF]>DBAND2) JP #VSRMOVE, (@ABS[VSRPOS-_TPF]>DBAND2)
'JUMP BACK FOR MORE TRIES IF OUTSIDE DEADBAND2 'JUMP BACK FOR MORE TRIES IF OUTSIDE DEADBAND2
EN EN
' '
' '
'----------------------------------------------------------------------------- '-----------------------------------------------------------------------------
#CHKDCEL #CHKDCEL
'ROUTINE TO RESET DECELERATIONS AFTER A LIMIT HIT 'ROUTINE TO RESET DECELERATIONS AFTER A LIMIT HIT
' '
IF ((LSAHIT=1)&(_BGA=0));'WHEN MOTION STOPS AFTER A LIMIT HIT IF ((LSAHIT=1)&(_BGA=0));'WHEN MOTION STOPS AFTER A LIMIT HIT
DCA=OLDDCA;'RESET DECEL TO OLD VALUE DCA=OLDDCA;'RESET DECEL TO OLD VALUE
LSAHIT=0 LSAHIT=0
ENDIF ENDIF
' '
IF ((LSBHIT=1)&(_BGB=0)) IF ((LSBHIT=1)&(_BGB=0))
DCB=OLDDCB DCB=OLDDCB
LSBHIT=0 LSBHIT=0
ENDIF ENDIF
' '
IF ((LSCHIT=1)&(_BGC=0)) IF ((LSCHIT=1)&(_BGC=0))
DCC=OLDDCC DCC=OLDDCC
LSCHIT=0 LSCHIT=0
ENDIF ENDIF
' '
IF ((LSDHIT=1)&(_BGD=0)) IF ((LSDHIT=1)&(_BGD=0))
DCD=OLDDCD DCD=OLDDCD
LSDHIT=0 LSDHIT=0
ENDIF ENDIF
' '
IF ((LSEHIT=1)&(_BGE=0)) IF ((LSEHIT=1)&(_BGE=0))
DCE=OLDDCE DCE=OLDDCE
LSEHIT=0 LSEHIT=0
ENDIF ENDIF
' '
IF ((LSFHIT=1)&(_BGF=0)) IF ((LSFHIT=1)&(_BGF=0))
DCF=OLDDCF DCF=OLDDCF
LSFHIT=0 LSFHIT=0
ENDIF ENDIF
' '
IF ((LSGHIT=1)&(_BGG=0)) IF ((LSGHIT=1)&(_BGG=0))
DCG=OLDDCG DCG=OLDDCG
LSGHIT=0 LSGHIT=0
ENDIF ENDIF
' '
IF ((LSHHIT=1)&(_BGH=0)) IF ((LSHHIT=1)&(_BGH=0))
DCH=OLDDCH DCH=OLDDCH
LSHHIT=0 LSHHIT=0
ENDIF ENDIF
EN EN
' '
' '
'-------------------------------------------------------------------------- '--------------------------------------------------------------------------
#CHKSPD #CHKSPD
'ROUTINE TO CHECK THE SPEED OF THE AXES IS NOT GREATER THAN MAX ALLOWED 'ROUTINE TO CHECK THE SPEED OF THE AXES IS NOT GREATER THAN MAX ALLOWED
' '
IF (_SPA>50000) IF (_SPA>50000)
SPA=50000 SPA=50000
ENDIF ENDIF
' '
IF (_SPB>50000) IF (_SPB>50000)
SPB=50000 SPB=50000
ENDIF ENDIF
' '
IF (_SPC>50000) IF (_SPC>50000)
SPC=50000 SPC=50000
ENDIF ENDIF
' '
IF (_SPD>100000) IF (_SPD>100000)
SPD=100000 SPD=100000
ENDIF ENDIF
' '
IF (_SPE>12500) IF (_SPE>12500)
SPE=12500 SPE=12500
ENDIF ENDIF
' '
IF (_SPF>12500) IF (_SPF>12500)
SPF=12500 SPF=12500
ENDIF ENDIF
' '
IF (_SPG>50000) IF (_SPG>50000)
SPG=50000 SPG=50000
ENDIF ENDIF
' '
IF (_SPH>12500) IF (_SPH>12500)
SPH=12500 SPH=12500
ENDIF ENDIF
EN EN
' '
' '
'-------------------------------------------------------------------------- '--------------------------------------------------------------------------
#TCPERR #TCPERR
'EMPTY TCP ERROR ROUTINE 'EMPTY TCP ERROR ROUTINE
' '
RE RE
' '
' '
'-------------------------------------------------------------------------- '--------------------------------------------------------------------------
#ININT #ININT
'INTERUPT ROUTINE TO STOP ALL AXES 'INTERUPT ROUTINE TO STOP ALL AXES
'WHEN SAFETY & INTERLOCK SYSTEM REQUESTS IT 'WHEN SAFETY & INTERLOCK SYSTEM REQUESTS IT
' '
CN-1;'RECONFIGURES LIMITS. RESULT:ALL LIMITS SEEN AS HIT. WILL RUN #LIMSWI CN-1;'RECONFIGURES LIMITS. RESULT:ALL LIMITS SEEN AS HIT. WILL RUN #LIMSWI
WT250 WT250
CN1;'SETS LIMITS BACK TO NORMAL CN1;'SETS LIMITS BACK TO NORMAL
RI RI
' '
' '
'-------------------------------------------------------------------------- '--------------------------------------------------------------------------
#CMDERR #CMDERR
'ROUTINE TO HANDLE COMMAND ERRORS 'ROUTINE TO HANDLE COMMAND ERRORS
' '
ZS0 ZS0
EN1 EN1
' '
' '
'-------------------------------------------------------------------------- '--------------------------------------------------------------------------
#LIMSWI #LIMSWI
'ROUTINE TO HASTEN THE DECELERATION OF AN AXIS WHEN A LIMIT SWITCH IS HIT 'ROUTINE TO HASTEN THE DECELERATION OF AN AXIS WHEN A LIMIT SWITCH IS HIT
' '
IF ((_LFA=0)|(_LRA=0));'LIMIT HIT IF ((_LFA=0)|(_LRA=0));'LIMIT HIT
IF ((LSAHIT=0)&(_BGA=1));'STILL MOVING, FIRST TIME IF ((LSAHIT=0)&(_BGA=1));'STILL MOVING, FIRST TIME
OLDDCA=_DCA;'REMEMBER OLD DECEL VALUE OLDDCA=_DCA;'REMEMBER OLD DECEL VALUE
DCA=100000;'INCREASE DECEL VALUE FOR RAPID STOP DCA=100000;'INCREASE DECEL VALUE FOR RAPID STOP
LSAHIT=1 LSAHIT=1
ENDIF ENDIF
ENDIF ENDIF
' '
IF ((_LFB=0)|(_LRB=0)) IF ((_LFB=0)|(_LRB=0))
IF ((LSBHIT=0)&(_BGB=1)) IF ((LSBHIT=0)&(_BGB=1))
OLDDCB=_DCB OLDDCB=_DCB
DCB=100000 DCB=100000
LSBHIT=1 LSBHIT=1
ENDIF ENDIF
ENDIF ENDIF
' '
IF ((_LFC=0)|(_LRC=0)) IF ((_LFC=0)|(_LRC=0))
IF ((LSCHIT=0)&(_BGC=1)) IF ((LSCHIT=0)&(_BGC=1))
OLDDCC=_DCC OLDDCC=_DCC
DCC=100000 DCC=100000
LSCHIT=1 LSCHIT=1
ENDIF ENDIF
ENDIF ENDIF
' '
IF ((_LFD=0)|(_LRD=0)) IF ((_LFD=0)|(_LRD=0))
IF ((LSDHIT=0)&(_BGD=1)) IF ((LSDHIT=0)&(_BGD=1))
OLDDCD=_DCD OLDDCD=_DCD
DCD=100000 DCD=100000
LSDHIT=1 LSDHIT=1
ENDIF ENDIF
ENDIF ENDIF
' '
IF ((_LFE=0)|(_LRE=0)) IF ((_LFE=0)|(_LRE=0))
IF ((LSEHIT=0)&(_BGE=1)) IF ((LSEHIT=0)&(_BGE=1))
OLDDCE=_DCE OLDDCE=_DCE
DCE=50000 DCE=50000
LSEHIT=1 LSEHIT=1
ENDIF ENDIF
ENDIF ENDIF
' '
IF ((_LFF=0)|(_LRF=0)) IF ((_LFF=0)|(_LRF=0))
IF ((LSFHIT=0)&(_BGF=1)) IF ((LSFHIT=0)&(_BGF=1))
OLDDCF=_DCF OLDDCF=_DCF
DCF=50000 DCF=50000
LSFHIT=1 LSFHIT=1
ENDIF ENDIF
ENDIF ENDIF
' '
IF ((_LFG=0)|(_LRG=0)) IF ((_LFG=0)|(_LRG=0))
IF ((LSGHIT=0)&(_BGG=1)) IF ((LSGHIT=0)&(_BGG=1))
OLDDCG=_DCG OLDDCG=_DCG
DCG=100000 DCG=100000
LSGHIT=1 LSGHIT=1
ENDIF ENDIF
ENDIF ENDIF
' '
IF ((_LFH=0)|(_LRH=0)) IF ((_LFH=0)|(_LRH=0))
IF ((LSHHIT=0)&(_BGH=1)) IF ((LSHHIT=0)&(_BGH=1))
OLDDCH=_DCH OLDDCH=_DCH
DCH=100000 DCH=100000
LSHHIT=1 LSHHIT=1
ENDIF ENDIF
ENDIF ENDIF
RE RE
' '
' '

View File

@@ -1,75 +1,75 @@
'TAIPAN - CONTROLLER 5 'TAIPAN - CONTROLLER 5
' '
'$Revision:$ '$Revision:$
'$Date$ '$Date$
'Author: Dan Bartlett 'Author: Dan Bartlett
'Last revision by: $Author:$ 'Last revision by: $Author:$
' '
'A-SECONDARY SHUTTER, +VE OPEN, 6mm/TURN 'A-SECONDARY SHUTTER, +VE OPEN, 6mm/TURN
'ONE AXIS CONTROLLER ONLY 'ONE AXIS CONTROLLER ONLY
' '
' '
'----------------------------------------------------------------------------- '-----------------------------------------------------------------------------
#AUTO #AUTO
NO TE: THIS IS THE PROGRAM THAT RUNS AUTOMATICALLY ON CONTROLLER STARTUP NO TE: THIS IS THE PROGRAM THAT RUNS AUTOMATICALLY ON CONTROLLER STARTUP
' '
MO;'MOTOR OFF MO;'MOTOR OFF
SIA=1,24,12,0<-2>1;'RESOLVER VIA VEGA 2790 BOARD SIA=1,24,12,0<-2>1;'RESOLVER VIA VEGA 2790 BOARD
MTA=-2;'CONFIGURES AXIS AS STEPPER MTA=-2;'CONFIGURES AXIS AS STEPPER
CN 1;' CONFIGURES LIMIT SWITCH TO ACCEPT NC CONTACTS CN 1;' CONFIGURES LIMIT SWITCH TO ACCEPT NC CONTACTS
IA 137,157,203,135;' CONFIGURES IP ADDRESS IA 137,157,203,135;' CONFIGURES IP ADDRESS
ACA=100000;' SET ACELERATION ACA=100000;' SET ACELERATION
DCA=100000;' SET DECELERATION DCA=100000;' SET DECELERATION
SPA=50000;' SET SPEED SPA=50000;' SET SPEED
JS #THREAD0 JS #THREAD0
EN EN
' '
' '
'----------------------------------------------------------------------------- '-----------------------------------------------------------------------------
#THREAD0 #THREAD0
'CONTROLS THE SECONDARY SHUTTER 'CONTROLS THE SECONDARY SHUTTER
' '
'INPUT 5=SECONDARY SHUTTER CLOSE SIGNAL 1 'INPUT 5=SECONDARY SHUTTER CLOSE SIGNAL 1
'INPUT 6=SECONDARY SHUTTER CLOSE SIGNAL 2 'INPUT 6=SECONDARY SHUTTER CLOSE SIGNAL 2
'INPUT 7=SECONDARY SHUTTER OPEN SIGNAL 1 'INPUT 7=SECONDARY SHUTTER OPEN SIGNAL 1
'INPUT 8=SECONDARY SHUTTER OPEN SIGNAL 2 'INPUT 8=SECONDARY SHUTTER OPEN SIGNAL 2
IF ((@IN[5]=1)&(@IN[6]=1)&(@IN[7]=0)&(@IN[8]=0)&(_BGA=0)&(_LFA=1)) 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 'INPUTS 5&6 INACTIVE(1) & INPUT 7&8 ACTIVE(0) & NOT MOVING & NOT ALREADY OPEN
'SECONDARY SHUTTER COMMANDED TO OPEN 'SECONDARY SHUTTER COMMANDED TO OPEN
JGA=50000;' JOG OPEN AT 12mm/s JGA=50000;' JOG OPEN AT 12mm/s
SHA;' TURN ON MOTOR SHA;' TURN ON MOTOR
BGA;' DRIVE SHUTTER OPEN BGA;' DRIVE SHUTTER OPEN
ENDIF ENDIF
IF (((@IN[7]=1)|(@IN[8]=1))&(_LRA=1)) IF (((@IN[7]=1)|(@IN[8]=1))&(_LRA=1))
'EITHER OF INPUTS 7 OR 8 INACTIVE(1) & NOT ALREADY CLOSED 'EITHER OF INPUTS 7 OR 8 INACTIVE(1) & NOT ALREADY CLOSED
'SECONDARY SHUTTER COMMANDED TO CLOSE 'SECONDARY SHUTTER COMMANDED TO CLOSE
STA;' STOP ANY MOTION STA;' STOP ANY MOTION
MCA;' AFTER MOTION IS STOPPED MCA;' AFTER MOTION IS STOPPED
JGA=-50000;' JOG CLOSED AT 12mm/s JGA=-50000;' JOG CLOSED AT 12mm/s
SHA;' TURN ON MOTOR SHA;' TURN ON MOTOR
BGA;' DRIVE SHUTTER CLOSED BGA;' DRIVE SHUTTER CLOSED
MCA MCA
ENDIF ENDIF
IF (((_LFA=0)|(_LRA=0))&(_BGA=0)) IF (((_LFA=0)|(_LRA=0))&(_BGA=0))
'AT EITHER LIMIT AND NOT MOVING 'AT EITHER LIMIT AND NOT MOVING
MOA;' TURN OFF MOTOR MOA;' TURN OFF MOTOR
ENDIF ENDIF
JP #THREAD0 JP #THREAD0
EN EN
' '
' '
'----------------------------------------------------------------------------- '-----------------------------------------------------------------------------
#TCPERR #TCPERR
'EMPTY TCP ERROR ROUTINE 'EMPTY TCP ERROR ROUTINE
' '
RE RE
' '
' '
'----------------------------------------------------------------------------- '-----------------------------------------------------------------------------
#CMDERR #CMDERR
'ROUTINE TO HANDLE COMMAND ERRORS 'ROUTINE TO HANDLE COMMAND ERRORS
' '
ZS0 ZS0
EN1 EN1
' '
' '

View File

@@ -1,426 +1,426 @@
'TAIPAN - CONTROLLER 6 'TAIPAN - CONTROLLER 6
' '
'AUTHOR - DANIEL BARTLETT 'AUTHOR - DANIEL BARTLETT
'DATE - 23.02.2011 'DATE - 23.02.2011
' '
'A-SLIT S1 LEFT BLADE 'A-SLIT S1 LEFT BLADE
'B-SLIT S1 RIGHT BLADE 'B-SLIT S1 RIGHT BLADE
'C-SLIT S1 TOP BLADE 'C-SLIT S1 TOP BLADE
'D-SLIT S1 BOTTOM BLADE 'D-SLIT S1 BOTTOM BLADE
'E-SLIT S2 LEFT BLADE 'E-SLIT S2 LEFT BLADE
'F-SLIT S2 RIGHT BLADE 'F-SLIT S2 RIGHT BLADE
'G-SLIT S2 TOP BLADE 'G-SLIT S2 TOP BLADE
'H-SLIT S2 BOTTOM BLADE 'H-SLIT S2 BOTTOM BLADE
' '
' '
'----------------------------------------------------------------------------- '-----------------------------------------------------------------------------
#AUTO #AUTO
'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 MT-2,-2,-2,-2,-2,-2,-2,-2;'CONFIGURES ALL AXES AS STEPPER
MO;'ALL MOTORS OFF MO;'ALL MOTORS OFF
CN1;'CONFIGURES LIMIT SWITCHES. NC CONTACTS USE CN1. NO CONTACT USE CN-1 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 II 8,,,0;'CONFIGURES THE 8TH INPUT TO ACTIVATE THE #ININT ROUTINE
OP 65281;'SETS OUTPUTS 9-16 ON = RELAYS OFF OP 65281;'SETS OUTPUTS 9-16 ON = RELAYS OFF
IA 137,157,203,136;'CONFIGURES IP ADDRESS IA 137,157,203,136;'CONFIGURES IP ADDRESS
AC 60416,60416,60416,60416,60416,60416,60416,60416;' SET ACELERATION AC 60416,60416,60416,60416,60416,60416,60416,60416;' SET ACELERATION
DC 60416,60416,60416,60416,60416,60416,60416,60416;' SET DECELERATION DC 60416,60416,60416,60416,60416,60416,60416,60416;' SET DECELERATION
SP 30000,30000,30000,30000,30000,30000,30000,30000;' SET SPEED SP 30000,30000,30000,30000,30000,30000,30000,30000;' SET SPEED
SIA=0;'TURN OFF CLOCK PULSES TO ALLOW ENCODER TO INITIALISE SIA=0;'TURN OFF CLOCK PULSES TO ALLOW ENCODER TO INITIALISE
SIB=0 SIB=0
SIC=0 SIC=0
SID=0 SID=0
SIE=0 SIE=0
SIF=0 SIF=0
SIG=0 SIG=0
SIH=0 SIH=0
WT1000;'WAIT FOR ENCODER TO INITIALISE WT1000;'WAIT FOR ENCODER TO INITIALISE
'SIA=1,25,13,0<-26>2;'HEIDENHAIN ROQ425 'SIA=1,25,13,0<-26>2;'HEIDENHAIN ROQ425
'SIA=1,25,25,0<-26>2;'HEIDENHAIN RCN226 'SIA=1,25,25,0<-26>2;'HEIDENHAIN RCN226
'SIA=1,25,12,-1<-26>1;'VEGA RESOLVER TO SSI CONVERTER '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>1;'IVO GXM2H
'SIA=1,25,13,0<-26>2;'KUEBLER 5863 '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,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,24,18,6<-26>2;'IVO PLATYPUS COLLIMATION TILT
'SIA=1,15,15,0<-26>2;'GURLEY 15BIT 'SIA=1,15,15,0<-26>2;'GURLEY 15BIT
LSAHIT=0;'INITIALISE THE BIT SET AFTER A LIMIT IS HIT LSAHIT=0;'INITIALISE THE BIT SET AFTER A LIMIT IS HIT
LSBHIT=0 LSBHIT=0
LSCHIT=0 LSCHIT=0
LSDHIT=0 LSDHIT=0
LSEHIT=0 LSEHIT=0
LSFHIT=0 LSFHIT=0
LSGHIT=0 LSGHIT=0
LSHHIT=0 LSHHIT=0
S1HOMED=0;'SLIT S1 NOT HOMED S1HOMED=0;'SLIT S1 NOT HOMED
S2HOMED=0;'SLIT S2 NOT HOMED S2HOMED=0;'SLIT S2 NOT HOMED
JS #THREAD0 JS #THREAD0
EN EN
' '
' '
'----------------------------------------------------------------------------- '-----------------------------------------------------------------------------
#THREAD0 #THREAD0
'THERE MUST BE A THREAD RUNNING FOR #LIMSWI, #TCPERR AND #ININT TO WORK 'THERE MUST BE A THREAD RUNNING FOR #LIMSWI, #TCPERR AND #ININT TO WORK
' '
JS #CHKDCEL JS #CHKDCEL
JS #CHKSPD JS #CHKSPD
JP #THREAD0 JP #THREAD0
EN EN
' '
' '
'----------------------------------------------------------------------------- '-----------------------------------------------------------------------------
#CHKDCEL #CHKDCEL
'ROUTINE TO RESET DECELERATIONS AFTER A LIMIT HIT 'ROUTINE TO RESET DECELERATIONS AFTER A LIMIT HIT
' '
IF (LSAHIT=1)&(_BGA=0);'WHEN MOTION STOPS AFTER A LIMIT HIT IF (LSAHIT=1)&(_BGA=0);'WHEN MOTION STOPS AFTER A LIMIT HIT
DCA=OLDDCA;'RESET DECEL TO OLD VALUE DCA=OLDDCA;'RESET DECEL TO OLD VALUE
LSAHIT=0 LSAHIT=0
ENDIF ENDIF
' '
IF (LSBHIT=1)&(_BGB=0) IF (LSBHIT=1)&(_BGB=0)
DCB=OLDDCB DCB=OLDDCB
LSBHIT=0 LSBHIT=0
ENDIF ENDIF
' '
IF (LSCHIT=1)&(_BGC=0) IF (LSCHIT=1)&(_BGC=0)
DCC=OLDDCC DCC=OLDDCC
LSCHIT=0 LSCHIT=0
ENDIF ENDIF
' '
IF (LSDHIT=1)&(_BGD=0) IF (LSDHIT=1)&(_BGD=0)
DCD=OLDDCD DCD=OLDDCD
LSDHIT=0 LSDHIT=0
ENDIF ENDIF
' '
IF (LSEHIT=1)&(_BGE=0) IF (LSEHIT=1)&(_BGE=0)
DCE=OLDDCE DCE=OLDDCE
LSEHIT=0 LSEHIT=0
ENDIF ENDIF
' '
IF (LSFHIT=1)&(_BGF=0) IF (LSFHIT=1)&(_BGF=0)
DCF=OLDDCF DCF=OLDDCF
LSFHIT=0 LSFHIT=0
ENDIF ENDIF
' '
IF (LSGHIT=1)&(_BGG=0) IF (LSGHIT=1)&(_BGG=0)
DCG=OLDDCG DCG=OLDDCG
LSGHIT=0 LSGHIT=0
ENDIF ENDIF
' '
IF (LSHHIT=1)&(_BGH=0) IF (LSHHIT=1)&(_BGH=0)
DCH=OLDDCH DCH=OLDDCH
LSHHIT=0 LSHHIT=0
ENDIF ENDIF
EN EN
' '
' '
'----------------------------------------------------------------------------- '-----------------------------------------------------------------------------
#CHKSPD #CHKSPD
'ROUTINE TO CHECK THE SPEED OF THE AXES IS NOT GREATER THAN MAX ALLOWED 'ROUTINE TO CHECK THE SPEED OF THE AXES IS NOT GREATER THAN MAX ALLOWED
' '
IF (_SPA>30000) IF (_SPA>30000)
SPA=30000 SPA=30000
ENDIF ENDIF
' '
IF (_SPB>30000) IF (_SPB>30000)
SPB=30000 SPB=30000
ENDIF ENDIF
' '
IF (_SPC>30000) IF (_SPC>30000)
SPC=30000 SPC=30000
ENDIF ENDIF
' '
IF (_SPD>30000) IF (_SPD>30000)
SPD=30000 SPD=30000
ENDIF ENDIF
' '
IF (_SPE>30000) IF (_SPE>30000)
SPE=30000 SPE=30000
ENDIF ENDIF
' '
IF (_SPF>30000) IF (_SPF>30000)
SPF=30000 SPF=30000
ENDIF ENDIF
' '
IF (_SPG>30000) IF (_SPG>30000)
SPG=30000 SPG=30000
ENDIF ENDIF
' '
IF (_SPH>30000) IF (_SPH>30000)
SPH=30000 SPH=30000
ENDIF ENDIF
EN EN
' '
' '
'----------------------------------------------------------------------------- '-----------------------------------------------------------------------------
#TCPERR #TCPERR
'EMPTY TCP ERROR ROUTINE 'EMPTY TCP ERROR ROUTINE
' '
RE RE
' '
' '
'----------------------------------------------------------------------------- '-----------------------------------------------------------------------------
#ININT #ININT
'INTERUPT ROUTINE TO STOP ALL AXES 'INTERUPT ROUTINE TO STOP ALL AXES
'WHEN SAFETY & INTERLOCK SYSTEM REQUESTS IT 'WHEN SAFETY & INTERLOCK SYSTEM REQUESTS IT
CN-1;'RECONFIGURES LIMITS. RESULT:ALL LIMITS SEEN AS HIT. WILL RUN #LIMSWI CN-1;'RECONFIGURES LIMITS. RESULT:ALL LIMITS SEEN AS HIT. WILL RUN #LIMSWI
WT250 WT250
CN1;'SETS LIMITS BACK TO NORMAL CN1;'SETS LIMITS BACK TO NORMAL
RI RI
' '
' '
'----------------------------------------------------------------------------- '-----------------------------------------------------------------------------
#CMDERR #CMDERR
'ROUTINE TO HANDLE COMMAND ERRORS 'ROUTINE TO HANDLE COMMAND ERRORS
' '
ZS0 ZS0
EN1 EN1
' '
' '
'----------------------------------------------------------------------------- '-----------------------------------------------------------------------------
#LIMSWI #LIMSWI
'ROUTINE TO HASTEN THE DECELERATION OF AN AXIS WHEN A LIMIT SWITCH IS HIT 'ROUTINE TO HASTEN THE DECELERATION OF AN AXIS WHEN A LIMIT SWITCH IS HIT
' '
IF (_LFA=0)|(_LRA=0);'LIMIT HIT IF (_LFA=0)|(_LRA=0);'LIMIT HIT
IF (LSAHIT=0)&(_BGA=1);'STILL MOVING, FIRST TIME IF (LSAHIT=0)&(_BGA=1);'STILL MOVING, FIRST TIME
OLDDCA=_DCA;'REMEMBER OLD DECEL VALUE OLDDCA=_DCA;'REMEMBER OLD DECEL VALUE
DCA=100000;'INCREASE DECEL VALUE FOR RAPID STOP DCA=100000;'INCREASE DECEL VALUE FOR RAPID STOP
LSAHIT=1 LSAHIT=1
ENDIF ENDIF
ENDIF ENDIF
' '
IF (_LFB=0)|(_LRB=0) IF (_LFB=0)|(_LRB=0)
IF (LSBHIT=0)&(_BGB=1) IF (LSBHIT=0)&(_BGB=1)
OLDDCB=_DCB OLDDCB=_DCB
DCB=60000 DCB=60000
LSBHIT=1 LSBHIT=1
ENDIF ENDIF
ENDIF ENDIF
' '
IF (_LFC=0)|(_LRC=0) IF (_LFC=0)|(_LRC=0)
IF (LSCHIT=0)&(_BGC=1) IF (LSCHIT=0)&(_BGC=1)
OLDDCC=_DCC OLDDCC=_DCC
DCC=60000 DCC=60000
LSCHIT=1 LSCHIT=1
ENDIF ENDIF
ENDIF ENDIF
' '
IF (_LFD=0)|(_LRD=0) IF (_LFD=0)|(_LRD=0)
IF (LSDHIT=0)&(_BGD=1) IF (LSDHIT=0)&(_BGD=1)
OLDDCD=_DCD OLDDCD=_DCD
DCD=60000 DCD=60000
LSDHIT=1 LSDHIT=1
ENDIF ENDIF
ENDIF ENDIF
' '
IF (_LFE=0)|(_LRE=0) IF (_LFE=0)|(_LRE=0)
IF (LSEHIT=0)&(_BGE=1) IF (LSEHIT=0)&(_BGE=1)
OLDDCE=_DCE OLDDCE=_DCE
DCE=60000 DCE=60000
LSEHIT=1 LSEHIT=1
ENDIF ENDIF
ENDIF ENDIF
' '
IF (_LFF=0)|(_LRF=0) IF (_LFF=0)|(_LRF=0)
IF (LSFHIT=0)&(_BGF=1) IF (LSFHIT=0)&(_BGF=1)
OLDDCF=_DCF OLDDCF=_DCF
DCF=60000 DCF=60000
LSFHIT=1 LSFHIT=1
ENDIF ENDIF
ENDIF ENDIF
' '
IF (_LFG=0)|(_LRG=0) IF (_LFG=0)|(_LRG=0)
IF (LSGHIT=0)&(_BGG=1) IF (LSGHIT=0)&(_BGG=1)
OLDDCG=_DCG OLDDCG=_DCG
DCG=60000 DCG=60000
LSGHIT=1 LSGHIT=1
ENDIF ENDIF
ENDIF ENDIF
' '
IF (_LFH=0)|(_LRH=0) IF (_LFH=0)|(_LRH=0)
IF (LSHHIT=0)&(_BGH=1) IF (LSHHIT=0)&(_BGH=1)
OLDDCH=_DCH OLDDCH=_DCH
DCH=60000 DCH=60000
LSHHIT=1 LSHHIT=1
ENDIF ENDIF
ENDIF ENDIF
RE RE
' '
' '
'----------------------------------------------------------------------------- '-----------------------------------------------------------------------------
#MOVE #MOVE
'THIS ROUTINE IS USED TO MOVE AN AXIS WITH A SSI ENCODER 'THIS ROUTINE IS USED TO MOVE AN AXIS WITH A SSI ENCODER
'USING A MOVE-CHECK-CORRECT METHOD 'USING A MOVE-CHECK-CORRECT METHOD
'THE FOLLOWING VARIABLES MUST BE INITIALISED FIRST 'THE FOLLOWING VARIABLES MUST BE INITIALISED FIRST
'~a=0 TO 7 SETS THE MOTOR, 0=A AXIS 1=B AXIS ETC '~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 '~b=0 TO 7 SETS THE ENCODER, 0=1ST SSI CHANNEL 1=2ND CHANNEL ETC
'TRIES= MAXIMUM NUMBER OF TRIES 'TRIES= MAXIMUM NUMBER OF TRIES
'POS=DESIRED ENCODER POSITION 'POS=DESIRED ENCODER POSITION
' '
'~a=0:~b=0:TRIES=5:POS=12345678:XQ #MOVE,1 '~a=0:~b=0:TRIES=5:POS=12345678:XQ #MOVE,1
' '
DBAND=3 DBAND=3
SH~a SH~a
WT500;'WAIT TO STABILISE WT500;'WAIT TO STABILISE
IF (_BG~a=1);'MOVING, FORCE STOP. PRA WHEN MOVING CAUSES THREAD CRASH IF (_BG~a=1);'MOVING, FORCE STOP. PRA WHEN MOVING CAUSES THREAD CRASH
ST~a ST~a
MC~a MC~a
ENDIF ENDIF
TEMP=_TP~b;'SET TEMPORARY VARIABLE TEMP=_TP~b;'SET TEMPORARY VARIABLE
PR~a=2500 PR~a=2500
IF (_LF~a=0);'ALREADY ON LIMIT IF (_LF~a=0);'ALREADY ON LIMIT
MG "Forward limit actuated" {EA} MG "Forward limit actuated" {EA}
MG "Ratio not calculated" {EA} MG "Ratio not calculated" {EA}
JP #MOVEEND JP #MOVEEND
ENDIF ENDIF
BG~a;'PERFORM A SMALL MOVE TO DETERMIN MOTOR:ENCODER RATIO BG~a;'PERFORM A SMALL MOVE TO DETERMIN MOTOR:ENCODER RATIO
MC~a MC~a
WT500;'WAIT TO STABILISE WT500;'WAIT TO STABILISE
IF (TEMP=_TP~b);'FAILED TO MOVE IF (TEMP=_TP~b);'FAILED TO MOVE
MG "No movement detected" {EA} MG "No movement detected" {EA}
MG "Ratio not calculated" {EA} MG "Ratio not calculated" {EA}
JP #MOVEEND JP #MOVEEND
ENDIF ENDIF
RATIO=(TEMP-_TP~b)*10;'SETS ENCODER/MOTOR RATIO RATIO=(TEMP-_TP~b)*10;'SETS ENCODER/MOTOR RATIO
' '
#LOOP #LOOP
IF (_BG~a=1);'MOVING, FORCE STOP. PRA WHEN MOVING CAUSES THREAD CRASH IF (_BG~a=1);'MOVING, FORCE STOP. PRA WHEN MOVING CAUSES THREAD CRASH
ST~a ST~a
MC~a MC~a
ENDIF ENDIF
PR~a=25000*((_TP~b-POS)/RATIO);'CALC STEPS TO DESTINATION 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 IF ((_PR~a>0)&(_LF~a=0));'IF POSITIVE MOVE AND ALREADY ON LIMIT
MG "Forward limit actuated" {EA} MG "Forward limit actuated" {EA}
MG "Positive move aborted" {EA} MG "Positive move aborted" {EA}
JP #MOVEEND JP #MOVEEND
ENDIF ENDIF
IF ((_PR~a<0)&(_LR~a=0));'IF NEGATIVE MOVE AND ALREADY ON LIMIT IF ((_PR~a<0)&(_LR~a=0));'IF NEGATIVE MOVE AND ALREADY ON LIMIT
MG "Reverse limit actuated" {EA} MG "Reverse limit actuated" {EA}
MG "Negative move aborted" {EA} MG "Negative move aborted" {EA}
JP #MOVEEND JP #MOVEEND
ENDIF ENDIF
IF (_BG~a=1);'ALREADY MOVING IF (_BG~a=1);'ALREADY MOVING
ST~a ST~a
MC~a MC~a
ENDIF ENDIF
SH~a SH~a
BG~a BG~a
MC~a;'WAIT FOR MOTION TO COMPLETE MC~a;'WAIT FOR MOTION TO COMPLETE
TRIES=TRIES-1;'INCREMENT ATTEMPT COUNTER TRIES=TRIES-1;'INCREMENT ATTEMPT COUNTER
MG "Attempts to go: " {N} {EA} MG "Attempts to go: " {N} {EA}
MG TRIES {F1.0} {EA} MG TRIES {F1.0} {EA}
JP #LOOP, ((@ABS[_TP~b-POS]>DBAND)&(TRIES>0)) JP #LOOP, ((@ABS[_TP~b-POS]>DBAND)&(TRIES>0))
'HAVE ANOTHER GO IF OUTSIDE DEAD BAND AND NOT TOO MANY ATTEMPTS 'HAVE ANOTHER GO IF OUTSIDE DEAD BAND AND NOT TOO MANY ATTEMPTS
#MOVEEND #MOVEEND
MG "TARGET :" {N} {EA} MG "TARGET :" {N} {EA}
MG POS {F8.0} {EA} MG POS {F8.0} {EA}
MG "POSITION :" {N} {EA} MG "POSITION :" {N} {EA}
MG _TP~b {F8.0} {EA} MG _TP~b {F8.0} {EA}
MG "Program ends" {EA} MG "Program ends" {EA}
EN EN
' '
' '
'----------------------------------------------------------------------------- '-----------------------------------------------------------------------------
#HOMES1 #HOMES1
'THIS ROUTINE HOMES THE S1 SLIT PACKAGE 'THIS ROUTINE HOMES THE S1 SLIT PACKAGE
' '
IF (S1HOMED=1);'ALREADY HOMED IF (S1HOMED=1);'ALREADY HOMED
JP #ENDS1 JP #ENDS1
ENDIF ENDIF
' '
IF (_LFA=0)&(_LRA=0) IF (_LFA=0)&(_LRA=0)
'BOTH LIMITS ACTUATED. SLIT PACKAGE PROBABLY NOT PLUGGED IN. 'BOTH LIMITS ACTUATED. SLIT PACKAGE PROBABLY NOT PLUGGED IN.
JP #ENDS1 JP #ENDS1
ENDIF ENDIF
' '
SHABCD;'TURN ON THE MOTORS SHABCD;'TURN ON THE MOTORS
SP 30000,30000,30000,30000,,,,;'SET SPEED SP 30000,30000,30000,30000,,,,;'SET SPEED
IF (_LRA=0);'ON THE REVERSE LIMIT SWITCH IF (_LRA=0);'ON THE REVERSE LIMIT SWITCH
PRA=250*161/2*10;'MOVE AWAY 10mm PRA=250*161/2*10;'MOVE AWAY 10mm
BGA BGA
ENDIF ENDIF
' '
IF (_LRB=0);'ON THE REVERSE LIMIT SWITCH IF (_LRB=0);'ON THE REVERSE LIMIT SWITCH
PRB=250*161/2*10;'MOVE AWAY 10mm PRB=250*161/2*10;'MOVE AWAY 10mm
BGB BGB
ENDIF ENDIF
' '
IF (_LRC=0);'ON THE REVERSE LIMIT SWITCH IF (_LRC=0);'ON THE REVERSE LIMIT SWITCH
PRC=250*161/2*10;'MOVE AWAY 10mm PRC=250*161/2*10;'MOVE AWAY 10mm
BGC BGC
ENDIF ENDIF
' '
IF (_LRD=0);'ON THE REVERSE LIMIT SWITCH IF (_LRD=0);'ON THE REVERSE LIMIT SWITCH
PRD=250*161/2*10;'MOVE AWAY 10mm PRD=250*161/2*10;'MOVE AWAY 10mm
BGD BGD
ENDIF ENDIF
' '
MCABCD;'WAIT FOR MOTION TO BE COMPLETE MCABCD;'WAIT FOR MOTION TO BE COMPLETE
JG -30000,-30000,-30000,-30000,,,,;'JOG INTO REVERSE LIMIT JG -30000,-30000,-30000,-30000,,,,;'JOG INTO REVERSE LIMIT
BGABCD BGABCD
MCABCD MCABCD
PR 80500,80500,80500,80500,,,,;'MOVE AWAY 4MM PR 80500,80500,80500,80500,,,,;'MOVE AWAY 4MM
BGABCD BGABCD
MCABCD MCABCD
JG -5000,-5000,-5000,-5000,,,,;'JOG SLOWLY INTO LIMITS JG -5000,-5000,-5000,-5000,,,,;'JOG SLOWLY INTO LIMITS
BGABCD BGABCD
MCABCD MCABCD
DP 0,0,0,0,,,,;'DEFINE HOME POSITION DP 0,0,0,0,,,,;'DEFINE HOME POSITION
SP 30000,30000,30000,30000,,,,;'SET SPEED BACK TO NORMAL SP 30000,30000,30000,30000,,,,;'SET SPEED BACK TO NORMAL
S1HOMED=1;'HOMING OF SLIT S1 COMPLETE S1HOMED=1;'HOMING OF SLIT S1 COMPLETE
#ENDS1 #ENDS1
EN EN
' '
' '
'----------------------------------------------------------------------------- '-----------------------------------------------------------------------------
#HOMES2 #HOMES2
'THIS ROUTINE HOMES THE S2 SLIT PACKAGE 'THIS ROUTINE HOMES THE S2 SLIT PACKAGE
' '
IF (S2HOMED=1);'ALREADY HOMED IF (S2HOMED=1);'ALREADY HOMED
JP #ENDS2 JP #ENDS2
ENDIF ENDIF
' '
IF (_LFE=0)&(_LRE=0) IF (_LFE=0)&(_LRE=0)
'BOTH LIMITS ACTUATED. SLIT PACKAGE PROBABLY NOT PLUGGED IN. 'BOTH LIMITS ACTUATED. SLIT PACKAGE PROBABLY NOT PLUGGED IN.
JP #ENDS2 JP #ENDS2
ENDIF ENDIF
' '
SHEFGH;'TURN ON THE MOTORS SHEFGH;'TURN ON THE MOTORS
SP ,,,,30000,30000,30000,30000;'SET SPEED SP ,,,,30000,30000,30000,30000;'SET SPEED
IF (_LRE=0);'ON THE REVERSE LIMIT SWITCH IF (_LRE=0);'ON THE REVERSE LIMIT SWITCH
PRE=250*161/2*10;'MOVE AWAY 10mm PRE=250*161/2*10;'MOVE AWAY 10mm
BGE BGE
ENDIF ENDIF
' '
IF (_LRF=0);'ON THE REVERSE LIMIT SWITCH IF (_LRF=0);'ON THE REVERSE LIMIT SWITCH
PRF=250*161/2*10;'MOVE AWAY 10mm PRF=250*161/2*10;'MOVE AWAY 10mm
BGF BGF
ENDIF ENDIF
' '
IF (_LRG=0);'ON THE REVERSE LIMIT SWITCH IF (_LRG=0);'ON THE REVERSE LIMIT SWITCH
PRG=250*161/2*10;'MOVE AWAY 10mm PRG=250*161/2*10;'MOVE AWAY 10mm
BGG BGG
ENDIF ENDIF
' '
IF (_LRH=0);'ON THE REVERSE LIMIT SWITCH IF (_LRH=0);'ON THE REVERSE LIMIT SWITCH
PRH=250*161/2*10;'MOVE AWAY 10mm PRH=250*161/2*10;'MOVE AWAY 10mm
BGH BGH
ENDIF ENDIF
' '
MCEFGH;'WAIT FOR MOTION TO BE COMPLETE MCEFGH;'WAIT FOR MOTION TO BE COMPLETE
JG ,,,,-30000,-30000,-30000,-30000;'JOG INTO REVERSE LIMIT JG ,,,,-30000,-30000,-30000,-30000;'JOG INTO REVERSE LIMIT
BGEFGH BGEFGH
MCEFGH MCEFGH
PR ,,,,80500,80500,80500,80500;'MOVE AWAY 4MM PR ,,,,80500,80500,80500,80500;'MOVE AWAY 4MM
BGEFGH BGEFGH
MCEFGH MCEFGH
JG ,,,,-5000,-5000,-5000,-5000;'JOG SLOWLY INTO LIMITS JG ,,,,-5000,-5000,-5000,-5000;'JOG SLOWLY INTO LIMITS
BGEFGH BGEFGH
MCEFGH MCEFGH
DP ,,,,0,0,0,0;'DEFINE HOME POSITION DP ,,,,0,0,0,0;'DEFINE HOME POSITION
SP ,,,,30000,30000,30000,30000;'SET SPEED BACK TO NORMAL SP ,,,,30000,30000,30000,30000;'SET SPEED BACK TO NORMAL
S2HOMED=1;'HOMING OF SLIT S1 COMPLETE S2HOMED=1;'HOMING OF SLIT S1 COMPLETE
#ENDS2 #ENDS2
EN EN
' '
' '
'----------------------------------------------------------------------------- '-----------------------------------------------------------------------------