- Joined
- Oct 14, 2014
- Messages
- 2,114
Hope the OP don't mind the thread drift I'm doing, sorry.
If you have a nine button JOG panel that you can connect to inputs 1 through 9 use this Jog routine I wrote: it works perfectly
'****************** Jog Buttons Program ***************
'Karl Townsend, Dassel, MN, USA
'Nine button Keypad installed, inputs 1,2 for X; 3,4 for Y
'5,6 for Z; 7,8 for A; 9 for fast jog
'buttons are wired NC, reverse logic if doing NO
'set beginning parameters(CN 1,1 set elsewhere)
#JOG ; SH ; JG 0,0,0,0 ; slow=5000 ; fast=25000
'main program loop jumps to sub on input
#JGMAIN
JS#XJOGF,@IN[1]=0 ; JS#XJOGR,@IN[2]=0
JS#YJOGF,@IN[3]=0 ; JS#YJOGR,@IN[4]=0
JS#ZJOGF,@IN[5]=0 ; JS#ZJOGR,@IN[6]=0
JS#DJOGF,@IN[7]=0 ; JS#DJOGR,@IN[8]=0
WT100 ; JP#JGMAIN ; EN
'eight subroutines below, one for each axis and direction
'line1 checks that input is still made exits if it isn't
'line2 exits if on a limit switch, note this is for NC switches
'line3 sets slew speed based on input9
'line4 restarts an axis if a limit switch was hit;
'line4 waits then loops if button still made or exits
'line5 sets speed back to 0 and exits subroutine
#XJOGF ; WT50 ; JP#END1,@IN[1]=1
#LOOP1 ; JP#END1,_LFX=0
IF(@IN[9]=0) ; JGX=fast ; ELSE ; JGX=slow ; ENDIF
IF(_SCX>1) ; BGX ; ENDIF ; WT100 ; JP#LOOP1,@IN[1]=0
#END1 ; JGX=0 ; WT100 ; EN
#XJOGR ; WT50 ; JP#END2,@IN[2]=1
#LOOP2 ; JP#END2,_LRX=0
IF(@IN[9]=0) ; JGX=-fast ; ELSE ; JGX=-slow ; ENDIF
IF(_SCX>1) ; BGX ; ENDIF ; WT100 ; JP#LOOP2,@IN[2]=0
#END2 ; JGX=0 ; WT100 ; EN
#YJOGF ; WT50 ; JP#END3,@IN[3]=1
#LOOP3 ; JP#END3,_LFY=0
IF(@IN[9]=0) ; JGY=fast ; ELSE ; JGY=slow ; ENDIF
IF(_SCY>1) ; BGY ; ENDIF ; WT100 ; JP#LOOP3,@IN[3]=0
#END3 ; JGY=0 ; WT100 ; EN
#YJOGR ; WT50 ; JP#END4,@IN[4]=1
#LOOP4 ; JP#END4,_LRY=0
IF(@IN[9]=0) ; JGY=-fast ; ELSE ; JGY=-slow ; ENDIF
IF(_SCY>1) ; BGY ; ENDIF ; WT100 ; JP#LOOP4,@IN[4]=0
#END4 ; JGY=0 ; WT100 ; EN
#ZJOGF ; WT50 ; JP#END5,@IN[5]=1
#LOOP5 ; JP#END5,_LFZ=0
IF(@IN[9]=0) ; JGZ=fast ; ELSE ; JGZ=slow ; ENDIF
IF(_SCZ>1) ; BGZ ; ENDIF ; WT100 ; JP#LOOP5,@IN[5]=0
#END5 ; JGZ=0 ; WT100 ; EN
#ZJOGR ; WT50 ; JP#END6,@IN[6]=1
#LOOP6 ; JP#END6,_LRZ=0
IF(@IN[9]=0) ; JGZ=-fast ; ELSE ; JGZ=-slow ; ENDIF
IF(_SCZ>1) ; BGZ ; ENDIF ; WT100 ; JP#LOOP6,@IN[6]=0
#END6 ; JGZ=0 ; WT100 ; EN
#DJOGF ; WT50 ; JP#END7,@IN[7]=1
#LOOP7 ; JP#END7,_LFD=0
IF(@IN[9]=0) ; JGD=(fast/2) ; ELSE ; JGD=slow ; ENDIF
IF(_SCD>1) ; BGD ; ENDIF ; WT100 ; JP#LOOP7,@IN[7]=0
#END7 ; JGD=0 ; WT100 ; EN
#DJOGR ; WT50 ; JP#END8,@IN[8]=1
#LOOP8 ; JP#END8,_LRD=0
IF(@IN[9]=0) ; JGD=-(fast/2) ; ELSE ; JGD=-slow ; ENDIF
IF(_SCD>1) ; BGD ; ENDIF ; WT100 ; JP#LOOP8,@IN[8]=0
#END8 ; JGD=0 ; WT100 ; EN
If you have a nine button JOG panel that you can connect to inputs 1 through 9 use this Jog routine I wrote: it works perfectly
'****************** Jog Buttons Program ***************
'Karl Townsend, Dassel, MN, USA
'Nine button Keypad installed, inputs 1,2 for X; 3,4 for Y
'5,6 for Z; 7,8 for A; 9 for fast jog
'buttons are wired NC, reverse logic if doing NO
'set beginning parameters(CN 1,1 set elsewhere)
#JOG ; SH ; JG 0,0,0,0 ; slow=5000 ; fast=25000
'main program loop jumps to sub on input
#JGMAIN
JS#XJOGF,@IN[1]=0 ; JS#XJOGR,@IN[2]=0
JS#YJOGF,@IN[3]=0 ; JS#YJOGR,@IN[4]=0
JS#ZJOGF,@IN[5]=0 ; JS#ZJOGR,@IN[6]=0
JS#DJOGF,@IN[7]=0 ; JS#DJOGR,@IN[8]=0
WT100 ; JP#JGMAIN ; EN
'eight subroutines below, one for each axis and direction
'line1 checks that input is still made exits if it isn't
'line2 exits if on a limit switch, note this is for NC switches
'line3 sets slew speed based on input9
'line4 restarts an axis if a limit switch was hit;
'line4 waits then loops if button still made or exits
'line5 sets speed back to 0 and exits subroutine
#XJOGF ; WT50 ; JP#END1,@IN[1]=1
#LOOP1 ; JP#END1,_LFX=0
IF(@IN[9]=0) ; JGX=fast ; ELSE ; JGX=slow ; ENDIF
IF(_SCX>1) ; BGX ; ENDIF ; WT100 ; JP#LOOP1,@IN[1]=0
#END1 ; JGX=0 ; WT100 ; EN
#XJOGR ; WT50 ; JP#END2,@IN[2]=1
#LOOP2 ; JP#END2,_LRX=0
IF(@IN[9]=0) ; JGX=-fast ; ELSE ; JGX=-slow ; ENDIF
IF(_SCX>1) ; BGX ; ENDIF ; WT100 ; JP#LOOP2,@IN[2]=0
#END2 ; JGX=0 ; WT100 ; EN
#YJOGF ; WT50 ; JP#END3,@IN[3]=1
#LOOP3 ; JP#END3,_LFY=0
IF(@IN[9]=0) ; JGY=fast ; ELSE ; JGY=slow ; ENDIF
IF(_SCY>1) ; BGY ; ENDIF ; WT100 ; JP#LOOP3,@IN[3]=0
#END3 ; JGY=0 ; WT100 ; EN
#YJOGR ; WT50 ; JP#END4,@IN[4]=1
#LOOP4 ; JP#END4,_LRY=0
IF(@IN[9]=0) ; JGY=-fast ; ELSE ; JGY=-slow ; ENDIF
IF(_SCY>1) ; BGY ; ENDIF ; WT100 ; JP#LOOP4,@IN[4]=0
#END4 ; JGY=0 ; WT100 ; EN
#ZJOGF ; WT50 ; JP#END5,@IN[5]=1
#LOOP5 ; JP#END5,_LFZ=0
IF(@IN[9]=0) ; JGZ=fast ; ELSE ; JGZ=slow ; ENDIF
IF(_SCZ>1) ; BGZ ; ENDIF ; WT100 ; JP#LOOP5,@IN[5]=0
#END5 ; JGZ=0 ; WT100 ; EN
#ZJOGR ; WT50 ; JP#END6,@IN[6]=1
#LOOP6 ; JP#END6,_LRZ=0
IF(@IN[9]=0) ; JGZ=-fast ; ELSE ; JGZ=-slow ; ENDIF
IF(_SCZ>1) ; BGZ ; ENDIF ; WT100 ; JP#LOOP6,@IN[6]=0
#END6 ; JGZ=0 ; WT100 ; EN
#DJOGF ; WT50 ; JP#END7,@IN[7]=1
#LOOP7 ; JP#END7,_LFD=0
IF(@IN[9]=0) ; JGD=(fast/2) ; ELSE ; JGD=slow ; ENDIF
IF(_SCD>1) ; BGD ; ENDIF ; WT100 ; JP#LOOP7,@IN[7]=0
#END7 ; JGD=0 ; WT100 ; EN
#DJOGR ; WT50 ; JP#END8,@IN[8]=1
#LOOP8 ; JP#END8,_LRD=0
IF(@IN[9]=0) ; JGD=-(fast/2) ; ELSE ; JGD=-slow ; ENDIF
IF(_SCD>1) ; BGD ; ENDIF ; WT100 ; JP#LOOP8,@IN[8]=0
#END8 ; JGD=0 ; WT100 ; EN